#include <bits/stdc++.h>
using namespace std;

vector<int> getVisionPattern1d() {
    vector<int> ans = {2, 1, 2, 2, 1, 1};
    return ans;
}
int getMove1d(vector<int> v) {
    if (v.size()==3) {
        if (v[0]==2) return 0;
        else return 2;
    }else {
        vector<int> f={1, 1, 2, 1, 2};
        vector<int> ff={2, 1, 2, 1, 1};
        vector<int> s={2, 1, 2, 2, 1};
        vector<int> sf={1, 2, 2, 1, 2};
        vector<int> t={1, 2, 2, 1, 1};
        vector<int> tf={1, 1, 2, 2, 1};
        if (v==f||v==s||v==t) {
            return 4;
        }else {
            return 0;
        }
    }
}
vector<vector<int>> getVisionPattern2d() {
    vector<vector<int>> ans;
    vector<int> vc1={1, 2, 1};
    vector<int> vc2={2, 2, 1};
    vector<int> vc3={1, 1, 1};
    ans.push_back(vc1);
    ans.push_back(vc2);
    ans.push_back(vc3);
    return ans;
}
pair<int, int> getMove2d(vector<vector<int>> v) {
    pair<int, int> ans;
    int n=v.size();
    if (n==3) {
        for (int i=0;i<3;i++) {
            for (int j=0;j<3;j++) {
                if (v[i][j]==2) {
                    ans={i, j};
                    return ans;
                }
            }
        }
    }
    int q=0;
    if (v[1][2]==2) {
        ans={1, 2};
        q++;
    }
    if (v[2][1]==2) {
        ans={2, 1};
        q++;
    }
    if (v[3][2]==2) {
        ans={3, 2};
        q++;
    }
    if (v[2][3]==2) {
        q++;
        ans={2, 3};
    }
    if (q==1) {
        return ans;
    }

    ans={2, 2};
    if (v[1][2]==2) {
        ans.first=3;
    }
    if (v[2][1]==2) {
        ans.second=3;
        
    }
    if (v[3][2]==2) {
        ans.first=1;
        
    }
    if (v[2][3]==2) {
        ans.second=1;
        
    }
    return ans;
}
