#include <iostream>
#include <cassert>

const long long N = 500;

int main()
{
    assert(N % 2 == 0);
    // 頂点数 n = 4*N+2, 辺数 m = 3*N*N + 6*N - 2
    // 答えは 2*N*N*N*N - 2*N*N*N + N*N
    // 0 から n-1 に流す
    std::cout << 4*N+2 << " " << 3*N*N + 6*N - 2 << "\n";
    for(int i = 0; i < N; ++i){
        std::cout << "0 " << i+1 << " " << N*N/2 + N << "\n";
    }
    for(int i = 0; i < N-1; ++i){
        if(i % 2 == 1){
            std::cout << "0 " << N+i+1 << " " << 2*N*N*N + N*N << "\n";
        }
    }
    for(int i = 0; i < N-2; ++i){
        if(i % 2 == 0){
            std::cout << "0 " << N+i+3 << " " << 2*N*N*N << "\n";
        }
    }
    std::cout << "0 " << 2*N << " " << N*N << "\n";
    std::cout << "0 " << N+1 << " " << 2*N*N*N << "\n";
    for(int i = 0; i < N; ++i){
        std::cout << 2*N+i+1 << " " << 4*N+1 << " " << N*N/2 + N << "\n";
    }
    for(int i = 0; i < N-1; ++i){
        if(i % 2 == 1){
            std::cout << 3*N+i+1 << " " << 4*N+1 << " " << 2*N*N*N + N*N << "\n";
        }
    }
    for(int i = 0; i < N-2; ++i){
        if(i % 2 == 0){
            std::cout << 3*N+i+3 << " " << 4*N+1 << " " << 2*N*N*N << "\n";
        }
    }
    std::cout << 4*N << " " << 4*N+1 << " " << N*N << "\n";
    std::cout << 3*N+1 << " " << 4*N+1 << " " << 2*N*N*N << "\n";
    // 2 部グラフパート
    for(int i = 0; i < N; ++i){
        for(int j = 0; j < N; ++j){
            std::cout << i+1 << " " << 2*N+j+1 << " 1\n";
        }
    }
    for(int i = 0; i < N-2; ++i){
        if(i % 2 == 1){
            std::cout << N+i+1 << " " << 3*N+i+2 << " " << 2*N*N*N << "\n";
        }else{
            std::cout << N+i+3 << " " << 3*N+i+2 << " " << 2*N*N*N << "\n";
        }
    }
    for(int i = 0; i < N; ++i){
        if(i % 2 == 1){
            for(int j = 0; j < N; ++j){
                std::cout << N+i+1 << " " << 2*N+j+1 << " " << N << "\n";
            }
        }
    }
    for(int i = 0; i < N; ++i){
        if(i % 2 == 0){
            for(int j = 0; j < N; ++j){
                std::cout << N+i+1 << " " << 2*N+j+1 << " " << N << "\n";
            }
        }
    }
    for(int i = 0; i < N; ++i){
        for(int j = 0; j < N; ++j){
            if(j % 2 == 1){
                std::cout << i+1 << " " << 3*N+j+1 << " " << N << "\n";
            }
        }
        for(int j = 0; j < N; ++j){
            if(j % 2 == 0){
                std::cout << i+1 << " " << 3*N+j+1 << " " << N << "\n";
            }
        }
    }
    for(int i = 0; i < N; ++i){
        if(i % 2 == 1){
            std::cout << N+i+1 << " " << 3*N+i << " " << 2*N*N*N << "\n";
        }else{
            std::cout << N+i+1 << " " << 3*N+i+2 << " " << 2*N*N*N << "\n";
        }
    }
    return 0;
}
