- uses math; 
- const maxn = 100; 
-       oo = 200; 
- var n,low,high,maxa: byte; 
-     a: array[0..maxn+1,0..maxn+1] of byte; 
-     visit: array[0..maxn+1,0..maxn+1] of boolean; 
-     cuoi,giua: byte; 
- procedure enter; 
- var i,j,mina:byte; 
- begin 
-   readln(n); 
-   maxa:=0; 
-   mina:=oo; 
-   for i:=1 to n do 
-   begin 
-     for j:=1 to n do 
-     begin 
-       read(a[i,j]); 
-       if a[i,j]<mina then mina:=a[i,j]; 
-       if a[i,j]>maxa then maxa:=a[i,j]; 
-     end; 
-     readln; 
-   end; 
-   cuoi:=maxa-mina; 
- end; 
- {$M 400000000} 
- function dfs(x,y:byte):boolean; 
- var p:boolean; 
- begin 
-   visit[x,y]:=true; 
-   if (a[x,y]>high) or (a[x,y]<low) then dfs:=false 
-   else 
-   if (x=n) and (y=n) then dfs:=true 
-   else 
-   begin 
-     p:=false; 
-     if (x>1) and (not visit[x-1,y]) then p:=dfs(x-1,y); 
-     if (not p) and (x<n) and (not visit[x+1,y]) then p:=dfs(x+1,y); 
-     if (not p) and (y>1) and (not visit[x,y-1]) then p:=dfs(x,y-1); 
-     if (not p) and (y<n) and (not visit[x,y+1]) then p:=dfs(x,y+1); 
-     dfs:=p; 
-   end; 
- end; 
- function check:boolean; 
- var p:boolean; 
-     i,j:byte; 
- begin 
-   p:=false; 
-   for low:=0 to maxa-giua do 
-     begin 
-       high:=low+giua; 
-       for i:=1 to n do 
-       for j:=1 to n do 
-       visit[i,j]:=false; 
-       if dfs(1,1) then  
-       begin 
-         p:=true; 
-         break; 
-       end; 
-     end; 
-   check:=p; 
- end; 
- procedure tknp; 
- var i,j,dau: byte; 
- begin 
-   dau:=0; 
-   for giua:=dau to cuoi do 
-   begin  
-     if check then break; 
-   end; 
-   writeln(giua); 
- end; 
- begin 
-   enter; 
-   tknp; 
- end. 
-   
				dXNlcyBtYXRoOwpjb25zdCBtYXhuID0gMTAwOwogICAgICBvbyA9IDIwMDsKdmFyIG4sbG93LGhpZ2gsbWF4YTogYnl0ZTsKICAgIGE6IGFycmF5WzAuLm1heG4rMSwwLi5tYXhuKzFdIG9mIGJ5dGU7CiAgICB2aXNpdDogYXJyYXlbMC4ubWF4bisxLDAuLm1heG4rMV0gb2YgYm9vbGVhbjsKICAgIGN1b2ksZ2l1YTogYnl0ZTsKcHJvY2VkdXJlIGVudGVyOwp2YXIgaSxqLG1pbmE6Ynl0ZTsKYmVnaW4KICByZWFkbG4obik7CiAgbWF4YTo9MDsKICBtaW5hOj1vbzsKICBmb3IgaTo9MSB0byBuIGRvCiAgYmVnaW4KICAgIGZvciBqOj0xIHRvIG4gZG8KICAgIGJlZ2luCiAgICAgIHJlYWQoYVtpLGpdKTsKICAgICAgaWYgYVtpLGpdPG1pbmEgdGhlbiBtaW5hOj1hW2ksal07CiAgICAgIGlmIGFbaSxqXT5tYXhhIHRoZW4gbWF4YTo9YVtpLGpdOwogICAgZW5kOwogICAgcmVhZGxuOwogIGVuZDsKICBjdW9pOj1tYXhhLW1pbmE7CmVuZDsKeyRNIDQwMDAwMDAwMH0KZnVuY3Rpb24gZGZzKHgseTpieXRlKTpib29sZWFuOwp2YXIgcDpib29sZWFuOwpiZWdpbgogIHZpc2l0W3gseV06PXRydWU7CiAgaWYgKGFbeCx5XT5oaWdoKSBvciAoYVt4LHldPGxvdykgdGhlbiBkZnM6PWZhbHNlCiAgZWxzZQogIGlmICh4PW4pIGFuZCAoeT1uKSB0aGVuIGRmczo9dHJ1ZQogIGVsc2UKICBiZWdpbgogICAgcDo9ZmFsc2U7CiAgICBpZiAoeD4xKSBhbmQgKG5vdCB2aXNpdFt4LTEseV0pIHRoZW4gcDo9ZGZzKHgtMSx5KTsKICAgIGlmIChub3QgcCkgYW5kICh4PG4pIGFuZCAobm90IHZpc2l0W3grMSx5XSkgdGhlbiBwOj1kZnMoeCsxLHkpOwogICAgaWYgKG5vdCBwKSBhbmQgKHk+MSkgYW5kIChub3QgdmlzaXRbeCx5LTFdKSB0aGVuIHA6PWRmcyh4LHktMSk7CiAgICBpZiAobm90IHApIGFuZCAoeTxuKSBhbmQgKG5vdCB2aXNpdFt4LHkrMV0pIHRoZW4gcDo9ZGZzKHgseSsxKTsKICAgIGRmczo9cDsKICBlbmQ7CmVuZDsKZnVuY3Rpb24gY2hlY2s6Ym9vbGVhbjsKdmFyIHA6Ym9vbGVhbjsKICAgIGksajpieXRlOwpiZWdpbgogIHA6PWZhbHNlOwogIGZvciBsb3c6PTAgdG8gbWF4YS1naXVhIGRvCiAgICBiZWdpbgogICAgICBoaWdoOj1sb3crZ2l1YTsKICAgICAgZm9yIGk6PTEgdG8gbiBkbwogICAgICBmb3Igajo9MSB0byBuIGRvCiAgICAgIHZpc2l0W2ksal06PWZhbHNlOwogICAgICBpZiBkZnMoMSwxKSB0aGVuIAogICAgICBiZWdpbgogICAgICAgIHA6PXRydWU7CiAgICAgICAgYnJlYWs7CiAgICAgIGVuZDsKICAgIGVuZDsKICBjaGVjazo9cDsKZW5kOwpwcm9jZWR1cmUgdGtucDsKdmFyIGksaixkYXU6IGJ5dGU7CmJlZ2luCiAgZGF1Oj0wOwogIGZvciBnaXVhOj1kYXUgdG8gY3VvaSBkbwogIGJlZ2luIAogICAgaWYgY2hlY2sgdGhlbiBicmVhazsKICBlbmQ7CiAgd3JpdGVsbihnaXVhKTsKZW5kOwpiZWdpbgogIGVudGVyOwogIHRrbnA7CmVuZC4KICA=