#include<iostream>
#include<climits>
#include<vector>
#include<list>
#include<functional>
#include<algorithm>
#include<string>
#include<cmath>
#include<complex>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<deque>
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,n) for(int i=0;i<(n);i++)
#define INF (int)1e9
#define INFL (ll)1e11
using namespace std;
typedef long long ll;
typedef pair<int, int> P;



int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);

	int L;
	cin >> L;
	vector<int> pow2;
	int tmp = 1;
	while (tmp <= L) {
		pow2.push_back(tmp);
		tmp *= 2;
	}
	int N = pow2.size();
	int M = 2 * (N - 1);
	int i = N - 2;
	vector<pair<int, int>> sd;
	while (L > pow2[N - 1]) {
		if (L - pow2[i] >= pow2[N - 1]) {
			L -= pow2[i];
			sd.push_back(P(i + 1, L));
			M++;
		}
		i--;
	}
	cout << N << " " << M << "\n";
	for (int i = 1;i < N;i++) {
		cout << i << " " << i + 1 << " " << 0 << "\n";
		cout << i << " " << i + 1 << " " << pow2[i - 1] << "\n";
	}
	REP(i, sd.size()) {
		cout << sd[i].first << " " << N << " " << sd[i].second << "\n";
	}

	return 0;
}