public static void main(String[] args) {
		In in = new In(args[0]);
		int N = in.readInt();
		double[][] weight = new double[N][N];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				weight[i][j] = in.readDouble();
			}
		}

		AssignmentProblem assignment = new AssignmentProblem(weight);
		StdOut.println("weight = " + assignment.weight());
		for (int i = 0; i < N; i++)
			StdOut.println(i + "-" + assignment.sol(i) + "' " + weight[i][assignment.sol(i)]);

		for (int i = 0; i < N; i++)
			StdOut.println("px[" + i + "] = " + assignment.dualRow(i));
		for (int j = 0; j < N; j++)
			StdOut.println("py[" + j + "] = " + assignment.dualCol(j));
		for (int i = 0; i < N; i++)
			for (int j = 0; j < N; j++)
				StdOut.println("reduced[" + i + "-" + j + "] = " + assignment.reduced(i, j));

	}