#include <iostream>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
const int N=1e6+10;
typedef long long ll;
int l[N],p[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int m,n;
cin>>m>>n;
set<pair<int,int>> cp;
for(int i=0;i<n;i++)
{
cin>>p[i]>>l[i];
l[i]=min(l[i],m);
cp.insert({p[i],i});
}
m*=6;
ll fnl=0;
vector<pair<int,int>> us;
while(m>0)
{
auto it=*cp.rbegin();
cp.erase(--end(cp));
int i=it.second;
l[i]=min(l[i],m);
us.push_back({l[i],i});
m-=l[i];
fnl+=(1ll*p[i]*l[i]);
}
sort(begin(us),end(us));
cout<<fnl<<endl;
for(auto&lpt:us)swap(lpt.first,lpt.second);
set<pair<int,int>> tp;
for(int i=0;i<6;i++)
{
cout<<us[i].first+1<<' ';
tp.insert({us[i].second,us[i].first});
}
cout<<endl;
vector<vector<int>> apo;
for(int i=us.size()-1;i>=6;i--)
{
auto it=*begin(tp);
tp.erase(begin(tp));
apo.push_back({it.first,it.second+1,us[i].first+1});
tp.insert({it.first+us[i].second,us[i].first});
}
cout<<apo.size()<<endl;
for(auto tl:apo)
{
for(auto x:tl)cout<<x<<' ';
cout<<endl;
}
}