#include<bits/stdc++.h>
using namespace std;

bool keta(int num, int n){
  for(int i=0; i<n-1; i++){
    num = num/10;
  }
  return num%10;
}
 
int main(void){
  
  int N;
  cin >> N;
  
  int max=0;
  for(int i=0; i<N; i++){
    max += pow(10,i)*(N-i);
  }
  
  bool pat[100][N*N];
  int thennum[100];
  int patlen=0;
  cout << "max : " << max << "\n";
  
  for(int i=0; i<max; i++){
    //cout << "i : " << i << "\n";
    
    bool ptn[N*N];
    for(int j=0; j<N; j++){
      for(int k=j; k<N; k++){
        if(keta(i,k)==keta(i,j)){
          ptn[j*k]=true;
        }else{
          ptn[j*k]=false;
        }
      }
    }
    bool original =true;
    int fnum =0;
    for(int j=0; j<patlen; j++){

      bool same=true;
      for(int k=0; k<N*N; k++){
        //if(ptn[k]!=nullptr && pat[j][k]!=nullptr){
          if(ptn[k]!=pat[j][k]){
            same = false;
            //cout << "f";
          }
        //}
      }
      if(!same) fnum++; 
    }
    if(patlen==fnum){
      for(int l=0; l<N*N; l++){
        pat[patlen][l] = ptn[l];
      }
      //pat[patlen]=ptn;
      thennum[patlen] = i;
      patlen++;
      
    }
  }
  
  cout << patlen;
  for(int i=0; i<patlen; i++){
    for(int j=0; j<N; j++){
      cout << (char)("0"+keta(thennum[i],N-j);
    }
    cout << "\n";
  }
  
  return 0;
}