package work;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ASolveProblem {
static int data[][];
static int N, maxpro;
static boolean used[];
public static void main(String[] args) throws FileNotFoundException {
/* Scanner sc=new Scanner(System.in); */
Scanner sc = new Scanner(new File("src/solveproblem"));
while(true){
N = sc.nextInt();
data = new int[N][N];
used=new boolean[N];
maxpro = 0;
if(N==0){break;}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
data[i][j]=sc.nextInt();
}
}
used[0]=true;
dfs(0,0,1);
System.out.println(maxpro);
/*for (int i = 1; i < 25; i++) {
System.out.print(data[i] + " ");
}
System.out.println();*/
}
}
private static void dfs(int last,int lasttime, int sum) {
if(maxpro<sum){maxpro=sum;}
if(sum==N){return;}
for (int i = 1; i < N; i++) {
if(used[i]==false&&data[last][i]>=lasttime){
used[i]=true;
dfs(i,data[last][i],sum+1);
used[i]=false;
}
}
}
}
、、input
3
0 0 0
1 0 1
1 0 0
3
0 2 2
1 0 1
1 1 0
5
0 1 2 3 1
0 0 2 3 1
0 0 0 3 1
0 0 0 0 2
0 0 0 0 0
0
、、output
3
2
4