#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <map>
#include <queue>

#define maxn 8000100
#define inf (1<<30)
#define mod 666013
using namespace std;

ifstream fin("A.in");
ofstream fout("A.out");

int cnt[10];
int a[16][16],viz[16][16],viz2[16][16];
vector<int> seli,selj;
int dir1[4] = {0,0,-1,1};
int dir2[4] = {-1,1,0,0};

void fill (int i, int j)
{
    viz[i][j] = 1;
    seli.push_back(i);
    selj.push_back(j);

    for (int k = 0; k < 4; ++k)
    {
        int ii = i + dir1[k];
        int jj = j + dir2[k];

        if (!viz[ii][jj] && a[ii][jj] == a[1][1])
        {
            fill(ii,jj);
        }
        else if (!viz[ii][jj] && !viz2[ii][jj])
        {
            viz2[ii][jj] = 1;
            cnt[a[ii][jj]]++;
        }
    }
}

int main ()
{
    for (int i = 1; i <= 14; ++i)
    {
        for (int j=1; j <= 14; ++j)
        {
            cin >> a[i][j];
        }
    }

    for (int k = 1; k <= 25; ++k)
    {
        memset(cnt,0,sizeof(cnt));
        memset(viz,0,sizeof(viz));
        memset(viz2,0,sizeof(viz2));
        seli.clear();
        selj.clear();
        for (int i = 1; i <= 14; ++i)
        {
        viz[i][15] = 1;
        viz[i][0] = 1;
        viz[0][i] = 1;
        viz[15][i] = 1;
        }
        fill(1,1);

        int maxi = 0;

        for (int i = 0; i < 6; ++i)
        {
            if (cnt[i] > cnt[maxi])
                maxi = i;
        }

        for (int i=0; i < seli.size(); ++i)
        {
            a[seli[i]][selj[i]] = maxi;
        }
    }

    /*for (int i = 1; i <= 14; ++i)
    {
        for (int j = 1; j <= 14; ++j)
            cout << a[i][j] << " ";
        cout << "\n";
    }*/
}