#include <bits/stdc++.h>
#define int long long
using namespace std;
const int INF = 1LL<<55;
int Max(int &a,int b){return a=max(a,b);}
int Min(int &a,int b){return a=min(a,b);}
int M[5][5];
int X[20],Y[20];
int cnt;
void ume(int y,int x){
  X[cnt] = x+2;
  Y[cnt++] = y+2;
}

int fil[128];
int dy[7] = {-1 ,-1 ,0  ,0 ,0 ,1  ,1};
int dx[7] = {0  ,1  ,-1 ,0 ,1 ,-1 ,0};

int filter(int y,int x,int M[5][5]){
  
  int bit = 0;
  for(int i=0;i<7;i++){
    int ny = y + dy[i];
    int nx = x + dx[i];
    if(ny<0||nx<0||ny>=5||nx>=5) return 0;
    if(M[ny][nx] == -1) return 0;
    bit += (M[ny][nx]<<i);
  }
  return fil[bit];
}

void sim(){
  int tmp[5][5];
  for(int i=0;i<5;i++)for(int j=0;j<5;j++) tmp[i][j] = M[i][j];
  for(int i=0;i<19;i++) M[Y[i]][X[i]] = filter(Y[i],X[i],tmp);
}

signed main(){
  memset(M,-1,sizeof(M));
  ume(-1,0);
  ume(-1,1);
  ume(0,-1);
  ume(0,0);
  ume(0,1);
  ume(1,0);
  ume(1,-1);

  ume(2,0);
  ume(1,1);
  ume(0,2);
  ume(-1,2);
  ume(-2,2);
  ume(-2,1);
  ume(-2,0);
  ume(-1,-1);
  ume(0,-2);
  ume(1,-2);
  ume(2,-2);
  ume(2,-1);

  while(1){
    int ans = true;
    for(int i=0;i<128;i++){
      char ch;
      cin>>ch;
      if(ch == '#')return 0;
      fil[i] = ch == '1'; 
    }
    for(int i=0;i<(1LL<<19) && ans;i++){
      for(int j=0,t=i;j<19;j++,t/=2) M[Y[j]][X[j]]  = t%2;
      int a,b;
      sim();
      a = M[2][2];
      sim();
      b = M[2][2];
      ans &= (a == b);
    }
    cout<<(ans? "yes":"no")<<endl;
  }
  return 0;
}