#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define mems(a, x) memset((a), (x), sizeof(a))
using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<int, int> pii;
void solve() {
int k = 17;
int n = (1 << k);
vector<pii> S;
for (int i = 1; i + 1 < n / 2; i += 2) {
S.pb(i, i + 1);
}
for (int i = n - 1; i >= n / 2; i -= 2) {
S.pb(i, i - 1);
}
printf("%d %d 0\n", k, (int)S.size());
for (int i = 1; i < k; ++i) {
printf("1000000000 ");
}
puts("0");
for (pii p : S) {
printf("%d %d 0\n", p.fst, p.scd);
}
}
int main() {
int T = 1;
while (T--) {
solve();
}
return 0;
}