#include <iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<cctype>
#include<queue>
#include<deque>
#include<regex>
#include<stack>
#include<stdio.h>
#include<vector>
#include<set>
#include<map>
#include<iomanip>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
typedef int long long ll;

int main(){

ll l;
cin>>l;
ll r=0;
//    for (r=1;r<=19;++r) {
//        if (l < pow(2,r)) {
//            break;
//        }
//    }
for(int i=1;i<20;i++){
    if (l < pow(2,i)) {
    break;
    }else{
        r=i;
    }
}
//r--;
vector<vector<ll>> ans;
for(ll i=1;i<=r;i++){
    ans.push_back({i,i+1,0});
    ans.push_back({i,i+1,static_cast<ll>(pow(2,i-1))});

}

for(ll i=r;i>=1;i--){
    if(l-pow(2,i-1)>=pow(2,r)){
    ans.push_back({i,r+1,l-static_cast<ll>(pow(2,i-1))});
    l-=pow(2,i-1);
}

}
    cout<<r+1<<' '<<ans.size()<<endl;
for(auto ea:ans){
    cout<<ea[0]<<' '<<ea[1]<<' '<<ea[2]<<endl;
}



}