#include <iostream>
#include<cstdio>
const int N=515;
int mat[N][N];
int slin[N];
int scol[N];
int perm[10];
int v[10];
using namespace std;
int n;
int lin1,col1,lin2,col2;
int cb(int s[],int val){
int pas=0,p2=1<<10;
while(p2){
if(pas+p2<=n && s[pas+p2]<=val)
pas+=p2;
p2/=2;
}
return pas;
}
void solve(){
int sc1=v[perm[1]]+v[perm[2]]+v[perm[3]],sc2=v[perm[4]]+v[perm[5]]+v[perm[6]];
int sl1=v[perm[1]]+v[perm[4]]+v[perm[7]],sl2=v[perm[2]]+v[perm[5]]+v[perm[8]];
int l1=cb(slin,sl1),l2=cb(slin,sl1+sl2),c1=cb(scol,sc1),c2=cb(scol,sc1+sc2);
if(slin[l1]==sl1 && slin[l2]==sl1+sl2 && scol[c1]==sc1 && scol[c2]==sc1+sc2){
if(lin1==0)
lin1=l1,lin2=l2,col1=c1,col2=c2;
else if(l1<lin1)
lin1=l1,lin2=l2,col1=c1,col2=c2;
else if(l1==lin1 && c1<col1)
lin1=l1,lin2=l2,col1=c1,col2=c2;
else if(l1==lin1 && c1==col1 && l2<lin2)
lin1=l1,lin2=l2,col1=c1,col2=c2;
else if(l1==lin1 && c1==col1 && l2==lin2 &&c2<col2)
lin1=l1,lin2=l2,col1=c1,col2=c2;
}
}
bool valid(int k){
for(int i=1;i<k;i++){
if(perm[i]==perm[k])
return false;
}
return true;
}
void bkt(int k){
if(k==10){
solve();
return;
}
for(int i=1;i<=9;i++){
perm[k]=i;
if(valid(k))
bkt(k+1);
}
}
int main()
{
FILE*fin,*fout;
fin=fopen("zone.in","r");
fout=fopen("zone.out","w");
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
fscanf(fin,"%d",&mat[i][j]);
slin[i]+=mat[i][j];
slin[j]+=mat[i][j];
}
}
for(int i=1;i<=n;i++){
slin[i]+=slin[i-1];
scol[i]+=scol[i-1];
}
bkt(1);
fprintf(fout,"%d %d %d %d",lin1,lin2,col1,col2);
return 0;
}