#include long long int pow(long long int a, long long int n) { long long int res = 1; for (; n > 0; n /= 2, a *= a) if (n % 2 > 0) res *= a; return res; } long long int sum[1000006]; long long int ans[1000006][3], c; int main() { long long int n; scanf("%lld", &n); long long int e, l, r, w, i; for (w = 0; w * w <= 2 * n; w++); for (w--; w > 0; w--) { if (2 * n % w > 0) continue; i = 2 * n / w; if ((i + 1 - w) % 2 == 0) { l = (i + 1 - w) / 2; r = l + w - 1; ans[c][0] = 1; ans[c][1] = l; ans[c][2] = r; c++; } } for (e = 2; e < 60; e++) { sum[0] = 0; l = 0; for (r = 1; pow(r, e) <= n; r++) { sum[r] = sum[r - 1] + pow(r, e); while (sum[r] - sum[l] > n) l++; if (sum[r] - sum[l] == n) { ans[c][0] = e; ans[c][1] = l + 1; ans[c][2] = r; c++; } } } printf("%lld\n", c); for (i = 0; i < c; i++) printf("%lld %lld %lld\n", ans[i][0], ans[i][1], ans[i][2]); return 0; }