https://www.luogu.com.cn/record/201244245
#include <bits/stdc++.h>
using namespace std;
class BigInt {
public:
int a[50005];
int len = 0;
BigInt(string x = "0") {
memset(a, 0, sizeof(a));
len = x.size();
for (int i = 0; i < len; i++) {
a[i + 1] = x[len - i - 1] - '0';
}
}
void flatten(int newSize) {
len = newSize;
for (int i = 1; i <= len; i++) {
a[i + 1] += a[i] / 10;
a[i] %= 10;
}
while (!a[len]) len--;
}
int& operator[] (int index) {
return a[index];
}
BigInt operator* (BigInt& b) {
int n = len, m = b.len;
BigInt c;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
c[i+j-1] += a[i] * b[j];
}
}
c.flatten(n + m + 2);
return c;
}
};
BigInt qpow(BigInt a, long long p) {
BigInt ans("1");
while (p) {
if (p & 1) {
ans = ans * a;
}
a = a * a;
p >>= 1;
}
return ans;
}
int main() {
long long p;
cin >> p;
BigInt ans = qpow(BigInt("2"), p);
ans[1]--;
cout << ans.len << endl;
for (int i = 500; i >= 1; i--) {
if (i != 500 && i % 50 == 0) cout << endl;
cout << ans[i];
}
return 0;
}