#include <iostream>
#include <vector>
#include <array>
#include <algorithm>
using namespace std;
const int N = 1<<20;
int st[N], in[N];
vector<pair<int, int>> vec;
vector<int> lim[N];
vector<array<int, 3>> sub;
int main(){
long long Ans = 0;
int T, n;
cin>>T>>n;
for (int i=1;i<=n;i++){
cin>>st[i]>>in[i];
vec.push_back({st[i], i});
}
sort(rbegin(vec), rend(vec));
lim[0] = {0, 0, 0, 0, 0, 0};
for (int t=0, i = 0;t<T;t++){
for (int j : lim[t]){
sub.push_back({t, j, vec[i].second});
lim[in[vec[i].second] + t].push_back(vec[i].second);
Ans += 1LL * min(T - t, in[vec[i].second]) * vec[i].first;
i++;
}
}
cout<<Ans<<'\n';
for (int i=0;i<6;i++)
cout<<sub[i][2]<<' ';
cout<<'\n';
cout<<sub.size() - 6<<'\n';
for (int i=6;i<sub.size();i++)
cout<<sub[i][0]<<' '<<sub[i][1]<<' '<<sub[i][2]<<'\n';
}