1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <bits/stdc++.h>

#define ll long long
#define ve vector
#define fi first
#define se second
#define ld double
#define all(x) x.begin(), x.end()
#define int long long

using namespace std;

typedef pair<int, int> pii;

const int MAXN = 4e5 + 10;
const int K = 1000;

ve<ve<int>> frommsk(int msk, int n)
{
    ve<ve<int>> v(n, ve<int>(n));
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            v[i][j] = (msk >> (i * n + j)) & 1;
    return v;
}

int tomsk(const ve<ve<int>> &v, int n)
{
    int msk = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            msk |= v[i][j] << (i * n + j);
    return msk;
}

int nxt(int msk, int n)
{
    ve<ve<int>> v = frommsk(msk, n);
    ve<ve<int>> res = v;
       for(auto i : v){
           for(auto j : i)
               cout << j << " ";
           cout << endl;
       }
       cout << endl;

    for (int i = 1; i < n; i++)
        for (int j = 1; j < n; j++)
        {
            if (v[i][j] && !v[i - 1][j] && !v[i][j - 1] && v[i - 1][j - 1])
            {
                res[i][j] = res[i - 1][j - 1] = 0;
                res[i][j - 1] = res[i - 1][j] = 1;
            }
            if (!v[i][j] && v[i - 1][j] && v[i][j - 1] && !v[i - 1][j - 1])
            {
                res[i][j] = res[i - 1][j - 1] = 1;
                res[i][j - 1] = res[i - 1][j] = 0;
            }
        }
    return tomsk(res, n);
}

const int N = 7;
const int MX = 1 << (N * N);

map<int, int> vis;

int dfs(int v)
{
    int res = 0;
    ve<int> al;
    while (!vis[v])
    {
        vis[v] = 1;
        al.push_back(v);
        res++;
        v = nxt(v, N);
    }
    vis.clear();
    return res;
}

void solve()
{
    //    ve<ve<int> > cur = {
    //        {1, 0, 0, 0, 0, 0, 0},
    //        {0, 1, 1, 1, 1, 1, 1},
    //        {0, 0, 0, 0, 0, 0, 1},
    //        {0, 1, 1, 1, 1, 1, 1},
    //        {0, 0, 0, 0, 0, 0, 1},
    //        {0, 1, 1, 1, 1, 1, 1},
    //        {0, 0, 0, 0, 0, 0, 1}
    //    };
    //    cout << dfs(tomsk(cur, N));
    ve<ve<int> > res(100, ve<int>(100, 0));
    for(int i = 0; i < 100; i += 2){
        for(int j = 1; j < 100; j++)
            res[i+1][j] = 1;
        res[i].back() = 1;
    }
    swap(res[0].front(), res[0].back());
    for(auto& i : res){
        for(auto& j : i){
            cout << j;
        }
        cout << "\n";
    }
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int T = 1;
    //    cin >> T;
    while (T--)
        solve();
}