- #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;
- }