#include <bits/stdc++.h>
using namespace std;
#define int long long
inline void solve()
{
int n,m;
cin>>m>>n;
vector<vector<int>>a;
for (int i=0;i<n;i++)
{
int qu,in;
cin>>qu>>in;
in=min(in,m);
a.push_back({qu,in,i+1});
}
sort(begin(a),end(a));
reverse(begin(a),end(a));
int ans=0;
int req=m*6;
vector<pair<int,int>>pls;
for (auto vec:a)
{
int qu=vec[0],in=vec[1],ind=vec[2];
int f=min(req,in);
ans+=(f*qu);
pls.push_back({f,ind});
req-=f;
if (req==0)
break;
}
int mx[6]={};
int pr[6]={};
for (int i=0;i<6;i++)
pr[i]=-1;
vector<int>pre;
vector<vector<int>>subs;
sort(begin(pls),end(pls));
reverse(begin(pls),end(pls));
vector<pair<int,int>>plc[6]={};
int cur=0,ind=0;
for (auto& [i,j]:pls)
{
if (cur+i>m)
{
plc[ind].push_back({j,m-cur});
i-=(m-cur);
cur=0;
ind++;
}
plc[ind].push_back({j,i});
cur+=i;
// cout<<j<<' '<<i<<' '<<ind<<endl;
if (cur==m)
{
cur=0;
ind++;
}
}
for (int i=0;i<6;i++)
{
pre.push_back(plc[i][0].first);
int sm=plc[i][0].second;
for (int j=1;j<plc[i].size();j++)
{
subs.push_back({sm,plc[i][j-1].first,plc[i][j].first});
sm+=plc[i][j].second;
}
}
cout<<ans<<endl;
for (auto i:pre)
cout<<i<<' ';
cout<<endl;
sort(begin(subs),end(subs));
cout<<subs.size()<<endl;
for (auto vec:subs)
{
for (auto j:vec)
cout<<j<<' ';
cout<<endl;
}
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}