#include <bits/stdc++.h>

using namespace std;
using ll = long long;

vector<vector<int>> getVisionPattern2d() {
    return {{1, 1, 2, 1}, {2, 3, 3, 2}, {1, 1, 1, 1}, {1, 1, 1, 1}};
}

pair<int, int> getMove2d(vector<vector<int>> v) {
    int n = (int)v[0].size();
    int p = n / 2;

    if (p == 1) {
        if (v[p - 1][p] >= v[p + 1][p]) return make_pair(p - 1, p);
        return make_pair(p + 1, p);
    } else if (p == 2 || (p == 3 && v[p - 1][p] != 2 && v[p + 1][p] != 2)) {
        if (v[p][p - 1] > p) return make_pair(p, p - 1);
        if (v[p][p + 1] > p) return make_pair(p, p + 1);
        if (v[p - 1][p] > p) return make_pair(p - 1, p);
        if (v[p + 1][p] > p) return make_pair(p + 1, p);
        if (v[p][p - 1] >= p) return make_pair(p, p - 1);
        if (v[p][p + 1] >= p) return make_pair(p, p + 1);
        if (v[p - 1][p] >= p) return make_pair(p - 1, p);
        if (v[p + 1][p] >= p) return make_pair(p + 1, p);
    } else {
        int dx = 1, dy = 1;
        if (v[p + 1][p] == 2) dx = -dx;
        if (v[p][p + 1] == 3) dy = -dy;
        return make_pair(p + dx * 4, p + dy * 4);
    }

    while (true) {}
}

vector<int> getVisionPattern1d() { return (vector < int >){1, 1, 2, 1, 3, 1}; }

int getMove1d(vector<int> v) {
    int n = (int)v.size() / 2;

    if (n == 1) {
        if (v[n - 1] >= v[n + 1]) return n - 1;
        return n + 1;
    } else if (n == 2) {
        for (int i = 0; i < (int)v.size(); i++) if (v[i] == 3) return i;
    } else {
        if (v[n - 2] == 2) return n + 3;
        return n - 3;
    }
}