#include "prison.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
std::vector<std::vector<int>> devise_strategy(int N) {
int n = N;
int b = 3;
int c = 8; // b ^ (c+1) must be greater than n
int x = b * (c + 1) - 1;
vector<vector<int>> s(x+1, vector<int>(n+1));
for (int i=0; i<=x; i++) {
int read = i ? i : b * (c + 1);
int A = read % (b + 1);
if (A) {
int bit = read / (b + 1);
A--; // 0, 1 ... b-1
s[i][0] = 1; // check B
for (int j=1; j<=n; j++) {
int B = j; for (int k=0; k<bit; k++) B /= b; B %= b;
if (A == B) {
s[i][j] = bit * (b + 1);
}else{
s[i][j] = A < B ? -1 : -2;
}
}
}else{
int bit = read / (b + 1) - 1;
s[i][0] = 0; // check A
for (int j=1; j<=n; j++) {
int A = j; for (int k=0; k<bit; k++) A /= b; A %= b;
s[i][j] = bit * (b + 1) + A + 1;
}
}
}
return s;
}