# include using namespace std; mt19937 rand_Gen(15645865); const int MOD = 256; const clock_t begin_time = clock(); const float Final_Time = 4.6; const float Time_Per_Test = 0.5; const int clrs = 16; int mindist=1000; const int maxitr = 25000; int MD[12] = {100000,100,7000,20000,1000,400,3000,50000,40000,50,2000,800000}; //int MI[20] = {} struct colors { int r,g,b; }; colors s[505][505]; colors p[16]; int id[505][505]; int ansid[505][505]; colors ansp[16]; long long ANS=1e18; int n,m; int num[16]; struct pixels { int x,y; colors p; }; pixels w[250005]; int br = 0; int calc(colors a, colors b) { int ans = (a.r-b.r)*(a.r-b.r)+(a.g-b.g)*(a.g-b.g)+(a.b-b.b)*(a.b-b.b); return ans; } void makerandomcolors() { int i,j; bool fl ; int br; colors x; for(i=0;icalc(a,b)) { mins = calc(a,b); t = i; } } if(t==3) // cout<<"SPECIAL: "<=dg&&dr>=db)sort(w+from,w+to+1,cmpr); else if(dg>=dr&&dg>=db)sort(w+from,w+to+1,cmpg); else sort(w+from,w+to+1,cmpb); } colors calcav(int from, int to, int id1) { sortw(from,to); colors t; t = w[(from+to)/2].p; /* t.r=0; t.g=0; t.b=0;*/ int i; for(i=from;i<=to;i++) { id[w[i].x][w[i].y]=id1; /* t.r+=w[i].p.r; t.g+=w[i].p.g; t.b+=w[i].p.b;*/ } int br = to-from+1; /* t.r = t.r/br; t.g = t.g/br; t.b = t.b/br; num[id1] = to-from+1;*/ num[id1] = 1; return t; } void solvefirstcase() { //cout<<"OK"<>w1>>h; int i,j; pixels r; for(i=1;i<=h;i++) { for(j=1;j<=w1;j++) { br++; cin>>s[i][j].r>>s[i][j].g>>s[i][j].b; r.p=s[i][j]; r.x=i; r.y=j; w[br]=r; } } sortw(1,br); int mid1 = br/2; sortw(1,mid1); sortw(mid1+1,br); int mid2 = mid1/2; sortw(1,mid2); sortw(mid2+1,mid1); int mid3 = (mid1+br)/2; sortw(mid1+1,mid3); sortw(mid3+1,br); int mid4 = mid2/2; sortw(1,mid4); sortw(mid4+1,mid2); int mid5 = (mid2+mid1)/2; sortw(mid2+1,mid5); sortw(mid5+1,mid1); int mid6 = (mid1+mid3)/2; sortw(mid1+1,mid6); sortw(mid6+1,mid3); int mid7 = (mid3+br)/2; sortw(mid3+1,mid7); sortw(mid7+1,br); ///////////////// int mid8 = mid4/2; p[1] = calcav(1,mid8,1); p[2] = calcav(mid8+1,mid4,2); int mid9 = (mid4+mid2)/2; p[3] = calcav(mid4+1,mid9,3); p[4] = calcav(mid9+1,mid2,4); int mid10 = (mid2+mid5)/2; p[5] = calcav(mid2+1,mid10,5); p[6] = calcav(mid10+1,mid5,6); int mid11 = (mid5+mid1)/2; p[7] = calcav(mid5+1,mid11,7); p[8] = calcav(mid11+1,mid1,8); int mid12 = (mid1+mid6)/2; p[9] = calcav(mid1+1,mid12,9); p[10] = calcav(mid12+1,mid6,10); int mid13 = (mid6+mid3)/2; p[11] = calcav(mid6+1,mid13,11); p[12] = calcav(mid13+1,mid3,12); int mid14 = (mid3+mid7)/2; p[13] = calcav(mid3+1,mid14,13); p[14] = calcav(mid14+1,mid7,14); int mid15 = (mid7+br)/2; p[15] = calcav(mid7+1,mid15,15); p[0] = calcav(mid15+1,br,0); n = h; m = w1; /// read_data int k = -1; checkforbest(); while(float( clock () - begin_time ) / CLOCKS_PER_SEC=2)br++; } } ///print_data for(i=0;i<16;i++) cout<1) { k.r+=p[id[x-1][y]].r; k.g+=p[id[x-1][y]].g; k.b+=p[id[x-1][y]].b; br++; } if(x1) { k.r+=p[id[x][y-1]].r; k.g+=p[id[x][y-1]].g; k.b+=p[id[x][y-1]].b; br++; } if(y>p[i].r>>p[i].g>>p[i].b; } int w,h; cin>>w>>h; for(i=1;i<=h;i++) { for(j=1;j<=w;j++) { cin>>id[i][j]; } } n = h; m = w; /// read_data /*for(i=2;i>fl; //cout<