#include #include #include #include #include #include #include using namespace std; bool is_square(long long x) { if (x < 0) return false; long long r = round(sqrt(x)); return r * r == x; } struct Edge { int to; int weight; int id; }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; if (!(cin >> N)) return 0; if (N == 2) { cout << 1 << "\n1 2 1\n0\n"; return 0; } vector> edges; vector used_weights; set available_evens; for (int i = 2; i <= 200; i += 2) available_evens.insert(i); int edge_id = 1; for (int i = 1; i < N; ++i) { int w = 2 * i - 1; edges.push_back({i, i + 1, w}); used_weights.push_back(w); edge_id++; } int additional_edges = N - 2; auto it = available_evens.begin(); for (int i = 3; i <= N && additional_edges > 0; ++i) { edges.push_back({1, i, *it}); it++; additional_edges--; } cout << edges.size() << "\n"; for (int i = 0; i < edges.size(); ++i) { cout << get<0>(edges[i]) << " " << get<1>(edges[i]) << " " << get<2>(edges[i]) << "\n"; } return 0; }