#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define WTHI(v) {long _z=v,_n=0,_d=0;while(++_n,_d=_d<<8|0x30|_z%10,_z/=10);*(long*)wp=_d;wp+=_n;} #define WTLO(v) {long _z=v,_n=8,_d=0;while(_d=_d<<8|0x30|_z%10,_z/=10,--_n);*(long*)wp=_d;wp+=8;} #define wt(v) if(v>=100000000){WTHI(v/100000000);WTLO(v);}else{WTHI(v);} main(){ long n=0,a=0,b=0; char*rp=mmap(0l,1l<<28,1,2,0,0ll); while(*rp++>=48); do{ int c=*rp++; if(*rp<48){ c=='1' ? ++a : c=='2' ? ++b : 0; } while(*rp++>=48); ++n; }while(*rp); long z=a*b*2+a*(n-b-a)+a*(a-1)/2+n*(n-1)/2; char wbuf[32],*wp=wbuf; wt(z); write(1,wbuf,wp-wbuf); _exit(0); }