#include <bits/stdc++.h>

#include "vision.h"
#define ll long long
std::vector<int> getVisionPattern1d() { return {1, 1, 1, 2, 1, 3}; }
int getMove1d(std::vector<int> v) {
  int s = v.size() / 2;
  if (s == 1) {
    if (v[0] == 2 || v[0] == 3) {
      return 0;
    } else {
      return 2;
    }
  }

  if (s == 2) {
    if (v[0] == 3) {
      return 0;
    } else {
      return 4;
    }
  }

  if (v[1] == 2) {
    return 6;
  } else {
    return 0;
  }
}
std::vector<std::vector<int>> getVisionPattern2d() {
  return {{1, 2, 1}, {1, 1, 2}, {1, 3, 1}};
}

std::pair<int, int> getMove2d(std::vector<std::vector<int>> v) {
  int s = v.size() / 2;

  if (s == 1) {
    for (int i = 0; i < 3; ++i) {
      for (int j = 0; j < 3; ++j) {
        if (v[i][j] == 3) {
          return {i, j};
        }
      }
    }
    return {0, 0};
  }

  if (s == 2) {
    if (v[4][2] == 3) {
      return {4, 2};
    } else if (v[0][2] == 3) {
      return {0, 2};

    } else if (v[3][1] == 3) {
      return {3, 1};
    } else if (v[3][3] == 3) {
      return {3, 3};
    } else if (v[1][1] == 3) {
      return {1, 1};
    } else if (v[1][3] == 3) {
      return {1, 3};
    }
    return {0, 0};
  }

  if (v[4][3] == 2) {
    if (v[2][4] == 2) {
      return {6, 6};
    } else {
      return {6, 0};
    }
  } else {
    if (v[4][4] == 2) {
      return {0, 6};
    } else {
      return {0, 0};
    }
  }

  return {0, 0};
}