private Pair<Integer, Integer> getAdjacent(Pair<Integer, Integer> coords,
			Direction dir) {
		int x = coords.getFirst();
		int y = coords.getSecond();
		switch (dir) {
		case N:
			return new Pair<Integer, Integer>(x, --y);
		case NE:
			return new Pair<Integer, Integer>(++x, --y);
		case E:
			return new Pair<Integer, Integer>(++x, y);
		case SE:
			return new Pair<Integer, Integer>(++x, ++y);
		case S:
			return new Pair<Integer, Integer>(x, ++y);
		case SW:
			return new Pair<Integer, Integer>(--x, ++y);
		case W:
			return new Pair<Integer, Integer>(--x, y);
		case NW:
			return new Pair<Integer, Integer>(--x, --y);
		}
		return new Pair<Integer, Integer>(x, y);
	}