/**/ public static void main(string[] strarr)
    {
        In  @in      = new In(strarr[0]);
        int num      = @in.readInt();
        int arg_23_0 = num;
        int arg_1E_0 = num;

        int[] array = new int[2];
        int   num2  = arg_1E_0;

        array[1] = num2;
        num2     = arg_23_0;
        array[0] = num2;
        double[][] array2 = (double[][])ByteCodeHelper.multianewarray(typeof(double[][]).TypeHandle, array);
        for (int i = 0; i < num; i++)
        {
            for (int j = 0; j < num; j++)
            {
                array2[i][j] = @in.readDouble();
            }
        }
        AssignmentProblem assignmentProblem = new AssignmentProblem(array2);

        StdOut.println(new StringBuilder().append("weight = ").append(assignmentProblem.weight()).toString());
        for (int j = 0; j < num; j++)
        {
            StdOut.println(new StringBuilder().append(j).append("-").append(assignmentProblem.sol(j)).append("' ").append(array2[j][assignmentProblem.sol(j)]).toString());
        }
        for (int j = 0; j < num; j++)
        {
            StdOut.println(new StringBuilder().append("px[").append(j).append("] = ").append(assignmentProblem.dualRow(j)).toString());
        }
        for (int j = 0; j < num; j++)
        {
            StdOut.println(new StringBuilder().append("py[").append(j).append("] = ").append(assignmentProblem.dualCol(j)).toString());
        }
        for (int j = 0; j < num; j++)
        {
            for (int k = 0; k < num; k++)
            {
                StdOut.println(new StringBuilder().append("reduced[").append(j).append("-").append(k).append("] = ").append(assignmentProblem.reduced(j, k)).toString());
            }
        }
    }