public static int[] getPath(int[][] board, int column, int[] path, int[] maxPath, int iteration) {
		if (board.length == 1) {
			int[] nextC;

			if (column == 0) {nextC = new int[] {column, column + 1};}
			else if (column == board[0].length - 1) {nextC = new int[] {column - 1, column};}
			else {nextC = new int[] {column - 1, column, column + 1};}

			for (int c : nextC) {
				path[iteration] = board[0][c];
				maxPath = arraySum(path) > arraySum(maxPath) ? path : maxPath;
			}

			return maxPath;
		}
		
		int[][] smallBoard = new int[board.length - 1][board[0].length]; // smallBoard is the board (as passed to the function) minus the top row
		
		for (int i = 1; i < board.length; i ++) {
			smallBoard[i - 1] = board[i].clone();
		}
		
		path[iteration] = board[0][column];

		int[] nextC;

		if (column == 0) {nextC = new int[] {column, column + 1};}
		else if (column == board[0].length - 1) {nextC = new int[] {column - 1, column};}
		else {nextC = new int[] {column - 1, column, column + 1};}
		
		for (int c : nextC) {
			maxPath = getPath(smallBoard, c, path, maxPath, 0);
		}

		return maxPath;
	}