#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using P = pair; constexpr int INF = 1001001001; constexpr int mod = 1000000007; // constexpr int mod = 998244353; template inline bool chmax(T& x, T y){ if(x < y){ x = y; return true; } return false; } template inline bool chmin(T& x, T y){ if(x > y){ x = y; return true; } return false; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int K; cin >> K; if(K == 0){ cout << 1 << '\n' << 0 << '\n'; return 0; } constexpr int MAX = 30; vector> comb(MAX + 1, vector(MAX + 1)); for(int i = 0; i <= MAX; ++i) comb[i][0] = comb[i][i] = 1; for(int i = 2; i <= MAX; ++i){ for(int j = 1; j < i; ++j){ comb[i][j] = comb[i - 1][j] + comb[i - 1][j - 1]; } } vector pow2(MAX + 1, 1); for(int i = 1; i <= MAX; ++i) pow2[i] = pow2[i - 1] * 2; vector ans; for(int i = 2; i <= MAX; ++i){ for(int k = 0; k <= MAX - i; ++k){ if((ll)comb[i][2] * pow2[k] == K){ for(int j = 0; j < k; ++j) ans.emplace_back(0); for(int j = 0; j < i; ++j) ans.emplace_back(1); break; } } if(ans.size() > 0) break; } int N = ans.size(); cout << N << '\n'; for(int i = 0; i < N; ++i){ cout << ans[i] << ((i == N - 1) ? '\n' : ' '); } return 0; }