python3 -c 'import random,time,math;CL=[];[[CL.append([(r,c+1),(r,c+2),(r+1,c),(r+1,c+1),(r+1,c+2),(r+1,c+3)]) for c in range(5)] for r in range(7)];CV=[[[] for j in range(8)] for i in range(8)];[[CV[p[0]][p[1]].append(k) for p in cl] for k,cl in enumerate(CL)];SS=lambda g:[sum(g[a][b] for a,b in cl) for cl in CL];G=[int(x) for x in "59 54 28 58 64 40 42 61 50 4 8 23 5 3 18 52 53 39 9 45 43 10 37 46 62 32 1 15 31 6 26 57 60 17 21 20 41 14 24 56 51 35 12 27 13 22 34 44 63 2 29 25 38 11 7 49 55 36 30 16 19 33 47 48".split()];g=[G[8*i:8*i+8] for i in range(8)];ss=SS(g);BV=max(ss);t0=time.time();cur=max(ss)+0.08*sum(sorted(ss)[-6:])+0.002*sum(ss);T=4.0;exec("for it in range(500000):\n a=random.randrange(8);b=random.randrange(8);c=random.randrange(8);d=random.randrange(8)\n if a==c and b==d: continue\n inds=list(set(CV[a][b]+CV[c][d]))\n old={k:ss[k] for k in inds}\n g[a][b],g[c][d]=g[c][d],g[a][b]\n for k in inds: ss[k]=sum(g[x][y] for x,y in CL[k])\n ne=max(ss)+0.08*sum(sorted(ss)[-6:])+0.002*sum(ss)\n if cur >= ne: cur=ne\n elif math.exp((cur-ne)/T) >= random.random(): cur=ne\n else:\n g[a][b],g[c][d]=g[c][d],g[a][b]\n for k in inds: ss[k]=old[k]\n T*=0.99999\n if BV > max(ss):\n BV=max(ss);g=[row[:] for row in g]\n print("NEW",BV,g,flush=True)\n if time.time()-t0 > 7: break\n");print("FINAL",BV,g)'