#include<bits/stdc++.h> using tup = std::tuple<int, int, int>; using vtup = std::vector<tup>;
int m; vtup v;
intmain(){ std::cin >> m;
auto dfs = [&](auto self, int n) -> void { if (n <= 0) return; if (n == 1) { v.push_back({2, 3, 4}); return; } int k = n / 2;
self(self, k); for (auto &[a, b, c] : v) b += n - k, c += n - k; for (int i = k + 2; i <= n + 1; i++) v.push_back({i, i + n + k, i + n * 2}); }; dfs(dfs, (m - 1) / 3);
std::cout << v.size() << "\n"; for (auto [a, b, c] : v) std::cout << a << " " << b << " " << c << "\n"; }
intmain(){ std::cin.tie(0)->sync_with_stdio(0), std::cout.tie(0); std::cin >> a; for (int i = 0; i < a.length();) { int j = i; while (j < a.length() && a[j] == '+') j++; if (i == j) { j++; f.push_back(-i); i = j; continue; }
f.push_back(j - i); i = j; } ind.assign(f.size(), 0); int s = f[0] <= 0 ? 0 : 1;
for (int i = s; i < f.size(); i += 2) { if (f[i] > 0) continue; if (i > 0 && f[i - 1] >= 2) { f[i - 1] -= 2; ind[i] |= 1 << 2; } if (i + 1 < f.size() && f[i + 1] >= 2) { f[i + 1] -= 2; ind[i] |= 1 << 3; } }
for (int i = 1 - s; i < f.size(); i += 2) assert(f[i] <= 1); std::string ans = ""; for (int i = 0; i < f.size(); i++) { if ((i - s) % 2 == 0) { if (ind[i] == 0) ans += a[-f[i]]; elseif (ind[i] == 8) { ans.push_back('('); ans.push_back(a[-f[i]]); ans += "++)"; } elseif (ind[i] == 4) { ans += "(++"; ans.push_back(a[-f[i]]); ans += ")"; } else { ans += "(++"; ans.push_back(a[-f[i]]); ans += "++)"; } } else { for (int j = 0; j < f[i]; j++) ans += "+"; } }
using ll = longlong; using score = std::pair<int, int>; using bet_at = std::pair<ll, ll>; std::map<score, bet_at> mp;
int n, win{0}, lose{0}; ll hold;
voidconstruct(){ ll init = 1ll << (n * 2); for (ll i = n - 1, step = init, t = init; i >= 0; i--, step >>= 1, t += step) { mp[{n - 1, i}] = {t, step}; mp[{i, n - 1}] = {step, step}; } for (int sum = 2 * n - 2; sum >= 0; sum--) { for (int my = n - 1; my >= 0; my--) { if (sum - my < 0 || sum - my >= n - 1 || my >= n - 1) continue; int op = sum - my; auto [hold1, bet1] = mp[{my, op + 1}]; auto [hold2, bet2] = mp[{my + 1, op}];