#include<bits/stdc++.h> using namespace std; #define ll long long #define db double #define el "\n" #define ld long double #define rep(i,n) for(int i=0;i<n;i++) #define rev(i,n) for(int i=n;i>=0;i--) #define rep_a(i,a,n) for(int i=a;i<n;i++) #define all(ds) ds.begin(), ds.end() #define ff first #define ss second #define pb push_back #define mp make_pair typedef vector< long long > vi; typedef pair<long long, long long> ii; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #ifndef ONLINE_JUDGE freopen("input.txt", "r" , stdin); freopen("output.txt", "w" , stdout); #endif int T=1; cin >> T; while(T--){ ll n,m,k; cin>>n>>m>>k; string s[n]; rep(i,n) cin>>s[i]; vector<vector<vector<int> > > dp(n, vector<vector<int> >(m, vector<int>(2,0))); dp[0][0][1] = dp[0][0][0] = k/2; if(k&1){ dp[0][0][(int)(s[0][0]-'0')]++; } rep(i,n){ rep(j,m){ if(!(i+j)) continue; int tot = 0; if(i>0) tot+=dp[i-1][j][1]; if(j>0) tot+=dp[i][j-1][0]; if(j==m-1){ dp[i][j][0]=tot; if(s[i][j]=='1' && tot>0){ dp[i][j][1]++; dp[i][j][0]--; } } else if(i==n-1){ dp[i][j][1]=tot; if(s[i][j]=='0' && tot>0){ dp[i][j][0]++; dp[i][j][1]--; } } else{ dp[i][j][0] = dp[i][j][1] = tot/2; if(tot&1){ if(s[i][j]=='1') dp[i][j][1]++; else dp[i][j][0]++; } } } } int x=0, y=0; while(1){ int tot = dp[x][y][0]+dp[x][y][1]; if(s[x][y]=='1'){ if(tot&1) x++; else y++; } else{ if(tot&1) y++; else x++; } tot = dp[x][y][0]+dp[x][y][1]; if(x==n-1 && y==m-1) break; if(x==n-1 && (tot>1 || s[x][y]=='1')) break; if(y==m-1 && (tot>1 || s[x][y]=='0')) break; } cout<<x+1<<" "<<y+1<<'\n'; } cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n"; return 0; }