public static void main(String[] args) {
        // create initial board from file
        // String arg = "inputfile\\puzzle04.txt";
        // In in = new In(arg);
        In in = new In(args[0]);
        int N = in.readInt();
        int[][] blocks = new int[N][N];
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
                blocks[i][j] = in.readInt();
        Board initial = new Board(blocks);

        Stopwatch sw = new Stopwatch();
        // solve the puzzle
        Solver solver = new Solver(initial);
        double elapsedTime = sw.elapsedTime();

        // print solution to standard output
        if (!solver.isSolvable())
            StdOut.println("No solution possible");
        else {
            StdOut.println("Minimum number of moves = "
                    + solver.moves());
            for (Board board : solver.solution())
                StdOut.println(board);
        }
        StdOut.println("Elapsed time: " + elapsedTime + " sec\n");
    }