#include<bits/stdc++.h>
//#define int long long
//#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC target("avx2")
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
using ll = long long;
const int maxN = 2e5 + 5;
const pii mod = {998244353,1e9+7};
const int base = 31;
int n;
string s;
vector<string> vc;
void BackTrack(int idx)
{
if(idx == n) /// 0->n-1; den n là neo
{
/// kiểm tra xâu s
int cnt = 0;
for(int i = 1; i < n; i++)
{
if(s[i] == '1' && s[i-1] == '0')
{
cnt++;
if(cnt > 1) break;
}
}
if(cnt <= 1)
vc.push_back(s);
return;
}
s[idx] = '0';
BackTrack(idx+1);
s[idx] = '1';
BackTrack(idx+1);
}
void Solve()
{
cin >> n;
s.resize(n);
BackTrack(0);
cout << vc.size() <<'\n';
for(string x : vc)
{
cout << x <<'\n';
}
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
//freopen("pump.in","r",stdin);
//freopen("pump.out","w",stdout);
int tt;
tt = 1;
//cin >> tt;
for (int i = 1; i <= tt; i++)
Solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KLy8jZGVmaW5lIGludCBsb25nIGxvbmcKLy8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMiKQovLyNwcmFnbWEgR0NDIG9wdGltaXplKCJ1bnJvbGwtbG9vcHMiKQovLyNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4MiIpCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKY29uc3QgaW50IG1heE4gPSAyZTUgKyA1Owpjb25zdCBwaWkgbW9kID0gezk5ODI0NDM1MywxZTkrN307CmNvbnN0IGludCBiYXNlID0gMzE7CgppbnQgbjsKc3RyaW5nIHM7CnZlY3RvcjxzdHJpbmc+IHZjOwoKdm9pZCBCYWNrVHJhY2soaW50IGlkeCkKewogICAgaWYoaWR4ID09IG4pIC8vLyAwLT5uLTE7IGRlbiBuIGzDoCBuZW8KICAgIHsKICAgICAgICAvLy8ga2nhu4NtIHRyYSB4w6J1IHMKICAgICAgICBpbnQgY250ID0gMDsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoc1tpXSA9PSAnMScgJiYgc1tpLTFdID09ICcwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgICAgICBpZihjbnQgPiAxKSBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihjbnQgPD0gMSkKICAgICAgICAgICAgdmMucHVzaF9iYWNrKHMpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHNbaWR4XSA9ICcwJzsKICAgIEJhY2tUcmFjayhpZHgrMSk7CiAgICBzW2lkeF0gPSAnMSc7CiAgICBCYWNrVHJhY2soaWR4KzEpOwp9Cgp2b2lkIFNvbHZlKCkKewogICAgY2luID4+IG47CiAgICBzLnJlc2l6ZShuKTsKICAgIEJhY2tUcmFjaygwKTsKICAgIGNvdXQgPDwgdmMuc2l6ZSgpIDw8J1xuJzsKICAgIGZvcihzdHJpbmcgeCA6IHZjKQogICAgewogICAgICAgIGNvdXQgPDwgeCA8PCdcbic7CiAgICB9Cn0KCmludDMyX3QgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIC8vZnJlb3BlbigicHVtcC5pbiIsInIiLHN0ZGluKTsKICAgIC8vZnJlb3BlbigicHVtcC5vdXQiLCJ3IixzdGRvdXQpOwogICAgaW50IHR0OwogICAgdHQgPSAxOwogICAgLy9jaW4gPj4gdHQ7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSB0dDsgaSsrKQogICAgICAgIFNvbHZlKCk7CgogICAgcmV0dXJuIDA7Cn0K