#include <iostream>

using namespace std;

typedef struct{
    int maxi;
    int mini;
}Matrica;

int main()
{
    int n, m, br=0, brm=0, rmini, rmaxi;
    cin >> n >> m;
    cin >> rmini >> rmaxi;

    Matrica k[100];
    int mat[100][100];

    for(int j=0; j<m; j++){
        cin >> k[j].mini >> k[j].maxi;
        mat[0][j]=k[j].mini;
        rmaxi-=k[j].mini;
        k[j].maxi-=k[j].mini;
        k[j].mini=0;
        br+=mat[0][j];
    }

    for(int j=0; j<m; j++){
        if(rmaxi>0 && k[j].maxi>0){
            if(k[j].maxi>=rmaxi){
                mat[0][j]+=rmaxi;
                k[j].maxi-=rmaxi;
                br+=rmaxi;
                rmaxi=0;
            }
            else{
                mat[0][j]+=k[j].maxi;
                rmaxi-=k[j].maxi;
                br+=k[j].maxi;
                k[j].maxi=0;
            }
        }
        if(mat[0][j]==0){
            brm++;
        }
    }
    cout << br << endl;
    cout << m-brm << endl;
    for(int j=0; j<m; j++){
        if(mat[0][j]!=0){
            cout << 1 << " " << j+1 << " " << mat[0][j] << endl;
        }
    }
    return 0;
}