#include<bits/stdc++.h>
#define loop(i,a,b) for(int i=a;i<b;i++)
#define loopb(i,a,b) for(int i=a;i>=b;i--)
#define loopm(i,a,b,step) for(int i=a;i<b;i+=step)
#define loopbm(i,a,b,step) for(int i=a;i>=b;i-=step)
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define init(arr,val) memset(arr,val,sizeof(arr))
#define INF 1000000007
#define MOD 1000000007
#define BINF 1000000000000000001
#define int long long int
#define double long double
using namespace std;
int grid[1005][55];
int w,x,y,z;
int dp[1005][105][2];
int go(int n,int curr,int flag)
{
if(n<0)
{
if(flag==0)
{
//white
if(curr<y) return INT_MAX;
else return 0;
}
else
{
//black
if(curr<w) return INT_MAX;
else return 0;
}
}
else if(dp[n][curr][flag]>0) return dp[n][curr][flag];
else
{
int ans=0;
if(flag==0)
{
//white
if(curr<y)
{
int cost=0;
loop(i,0,50)
{
if(grid[n][i]==1) cost++;
}
ans=go(n-1,curr+1,0)+cost;
}
else if(curr==z)
{
int cost=0;
loop(i,0,50)
{
if(grid[n][i]==0) cost++;
}
ans=go(n-1,1,1)+cost;
}
else
{
int cost=0;
loop(i,0,50)
{
if(grid[n][i]==1) cost++;
}
ans=go(n-1,curr+1,0)+cost;
cost=0;
loop(i,0,50)
{
if(grid[n][i]==0) cost++;
}
ans=min(ans,go(n-1,1,1)+cost);
}
}
else
{
if(curr<w)
{
int cost=0;
loop(i,0,50)
{
if(grid[n][i]==0) cost++;
}
ans=go(n-1,curr+1,1)+cost;
}
else if(curr==x)
{
int cost=0;
loop(i,0,50)
{
if(grid[n][i]==1) cost++;
}
ans=go(n-1,1,0)+cost;
}
else
{
int cost=0;
loop(i,0,50)
{
if(grid[n][i]==0) cost++;
}
ans=go(n-1,curr+1,1)+cost;
cost=0;
loop(i,0,50)
{
if(grid[n][i]==1) cost++;
}
ans=min(ans,go(n-1,1,0)+cost);
}
}
dp[n][curr][flag]=ans;
return ans;
}
}
#undef int
int main()
{
#define int long long int
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen("input.txt","r",stdin);
int t;
cin>>t;
while(t--)
{
loop(i,0,1005)
{
loop(j,0,55) grid[i][j]=0;
loop(j,0,105) loop(k,0,2) dp[i][j][k]=0;
}
int n;
cin>>n;
loop(i,0,50)
{
loop(j,0,n) cin>>grid[j][i];
}
cin>>w>>x;
cin>>y>>z;
int ans=0;
int cost=0;
loop(i,0,50) if(grid[n-1][i]==0) cost++;
ans=go(n-2,1,1)+cost;
cost=0;
loop(i,0,50) if(grid[n-1][i]==1) cost++;
ans=min(ans,go(n-2,1,0)+cost);
if(ans>=INT_MAX) cout<<-1<<endl;
else cout<<ans<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsb29wKGksYSxiKSBmb3IoaW50IGk9YTtpPGI7aSsrKQojZGVmaW5lIGxvb3BiKGksYSxiKSBmb3IoaW50IGk9YTtpPj1iO2ktLSkKI2RlZmluZSBsb29wbShpLGEsYixzdGVwKSBmb3IoaW50IGk9YTtpPGI7aSs9c3RlcCkKI2RlZmluZSBsb29wYm0oaSxhLGIsc3RlcCkgZm9yKGludCBpPWE7aT49YjtpLT1zdGVwKQojZGVmaW5lIHBiKGEpIHB1c2hfYmFjayhhKQojZGVmaW5lIG1wKGEsYikgbWFrZV9wYWlyKGEsYikKI2RlZmluZSBpbml0KGFycix2YWwpIG1lbXNldChhcnIsdmFsLHNpemVvZihhcnIpKQojZGVmaW5lIElORiAxMDAwMDAwMDA3CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBCSU5GIDEwMDAwMDAwMDAwMDAwMDAwMDEKI2RlZmluZSBpbnQgbG9uZyBsb25nIGludAojZGVmaW5lIGRvdWJsZSBsb25nIGRvdWJsZQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBncmlkWzEwMDVdWzU1XTsKaW50IHcseCx5LHo7CmludCBkcFsxMDA1XVsxMDVdWzJdOwoKCmludCBnbyhpbnQgbixpbnQgY3VycixpbnQgZmxhZykKewoJaWYobjwwKQoJewoJCWlmKGZsYWc9PTApCgkJewoJCQkvL3doaXRlCgkJCWlmKGN1cnI8eSkgcmV0dXJuIElOVF9NQVg7CgkJCWVsc2UgcmV0dXJuIDA7CgkJfQoJCWVsc2UKCQl7CgkJCS8vYmxhY2sKCQkJaWYoY3Vycjx3KSByZXR1cm4gSU5UX01BWDsKCQkJZWxzZSByZXR1cm4gMDsKCQl9Cgl9CgllbHNlIGlmKGRwW25dW2N1cnJdW2ZsYWddPjApIHJldHVybiBkcFtuXVtjdXJyXVtmbGFnXTsKCQoJZWxzZQoJewoJCWludCBhbnM9MDsKCQlpZihmbGFnPT0wKQoJCXsKCQkJLy93aGl0ZQoJCQlpZihjdXJyPHkpCgkJCXsKCQkJCWludCBjb3N0PTA7CgkJCQlsb29wKGksMCw1MCkKCQkJCXsKCQkJCQlpZihncmlkW25dW2ldPT0xKSBjb3N0Kys7CgkJCQl9CgkJCQlhbnM9Z28obi0xLGN1cnIrMSwwKStjb3N0OwoJCQl9CgkJCWVsc2UgaWYoY3Vycj09eikKCQkJewoJCQkJaW50IGNvc3Q9MDsKCQkJCWxvb3AoaSwwLDUwKSAKCQkJCXsKCQkJCQlpZihncmlkW25dW2ldPT0wKSBjb3N0Kys7CgkJCQl9CgkJCQkKCQkJCWFucz1nbyhuLTEsMSwxKStjb3N0OwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJaW50IGNvc3Q9MDsKCQkJCWxvb3AoaSwwLDUwKQoJCQkJewoJCQkJCWlmKGdyaWRbbl1baV09PTEpIGNvc3QrKzsKCQkJCX0KCQkJCWFucz1nbyhuLTEsY3VycisxLDApK2Nvc3Q7CgkJCQkKCQkJCWNvc3Q9MDsKCQkJCWxvb3AoaSwwLDUwKQoJCQkJewoJCQkJCWlmKGdyaWRbbl1baV09PTApIGNvc3QrKzsKCQkJCX0KCQkJCWFucz1taW4oYW5zLGdvKG4tMSwxLDEpK2Nvc3QpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCWlmKGN1cnI8dykKCQkJewoJCQkJaW50IGNvc3Q9MDsKCQkJCWxvb3AoaSwwLDUwKQoJCQkJewoJCQkJCWlmKGdyaWRbbl1baV09PTApIGNvc3QrKzsKCQkJCX0KCQkJCWFucz1nbyhuLTEsY3VycisxLDEpK2Nvc3Q7CgkJCX0KCQkJZWxzZSBpZihjdXJyPT14KQoJCQl7CgkJCQlpbnQgY29zdD0wOwoJCQkJbG9vcChpLDAsNTApIAoJCQkJewoJCQkJCWlmKGdyaWRbbl1baV09PTEpIGNvc3QrKzsKCQkJCX0KCQkJCQoJCQkJYW5zPWdvKG4tMSwxLDApK2Nvc3Q7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpbnQgY29zdD0wOwoJCQkJbG9vcChpLDAsNTApCgkJCQl7CgkJCQkJaWYoZ3JpZFtuXVtpXT09MCkgY29zdCsrOwoJCQkJfQoJCQkJYW5zPWdvKG4tMSxjdXJyKzEsMSkrY29zdDsKCQkJCQoJCQkJY29zdD0wOwoJCQkJbG9vcChpLDAsNTApCgkJCQl7CgkJCQkJaWYoZ3JpZFtuXVtpXT09MSkgY29zdCsrOwoJCQkJfQoJCQkJYW5zPW1pbihhbnMsZ28obi0xLDEsMCkrY29zdCk7CgkJCX0KCQl9CgkJCgkJZHBbbl1bY3Vycl1bZmxhZ109YW5zOwoJCXJldHVybiBhbnM7Cgl9Cn0KCiN1bmRlZiBpbnQKaW50IG1haW4oKQp7CiNkZWZpbmUgaW50IGxvbmcgbG9uZyBpbnQKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIGNvdXQudGllKE5VTEwpOwogICAgLy9mcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgIAlsb29wKGksMCwxMDA1KQogICAgCXsKICAgIAkJbG9vcChqLDAsNTUpIGdyaWRbaV1bal09MDsKICAgIAkJbG9vcChqLDAsMTA1KSBsb29wKGssMCwyKSBkcFtpXVtqXVtrXT0wOwogICAgCX0KICAgIAkKICAgIAlpbnQgbjsKICAgIAljaW4+Pm47CiAgICAJbG9vcChpLDAsNTApCiAgICAJewogICAgCQlsb29wKGosMCxuKSBjaW4+PmdyaWRbal1baV07CiAgICAJfQogICAgCQogICAgCWNpbj4+dz4+eDsKICAgIAljaW4+Pnk+Pno7CiAgICAJCiAgICAJaW50IGFucz0wOwogICAgCWludCBjb3N0PTA7CiAgICAJbG9vcChpLDAsNTApIGlmKGdyaWRbbi0xXVtpXT09MCkgY29zdCsrOwogICAgCWFucz1nbyhuLTIsMSwxKStjb3N0OwogICAgCWNvc3Q9MDsKICAgIAlsb29wKGksMCw1MCkgaWYoZ3JpZFtuLTFdW2ldPT0xKSBjb3N0Kys7CiAgICAJYW5zPW1pbihhbnMsZ28obi0yLDEsMCkrY29zdCk7CiAgICAJCiAgICAJaWYoYW5zPj1JTlRfTUFYKSBjb3V0PDwtMTw8ZW5kbDsKICAgIAllbHNlIGNvdXQ8PGFuczw8ZW5kbDsKICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0=