#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using std::unordered_map;
using std::vector;
using std::sort;
using std::pair;
using std::cin;
using std::cout;
using std::endl;
typedef struct commodity_{
int v,p,q;
}commodity;
typedef pair<int,commodity*> pic;
int main() {
int N,M,v,p,q;
auto comp = [&](const pic &a, const pic &b) {
if(a.second->v*a.second->p > b.second->v*b.second->p) return true;
else return false;
};
unordered_map<int,commodity*> mp;
vector<pic> vec;
cin>>N>>M;
for(int i=0;i<M;i++) {
cin>>v>>p>>q;
commodity* co = new commodity;
co->p = p;
co->q = q;
co->v = v;
mp[i+1] = co;
vec.push_back(pic(i+1,co));
}
sort(vec.begin(),vec.end(),comp);
cout<<"map:"<<endl;
for(auto&& w:mp) {
cout<<w.first<<" "<<w.second->v<<" "<<w.second->p<<" "<<w.second->q<<endl;
}
cout<<"vector:"<<endl;
for(auto&& w:vec) {
cout<<w.first<<" "<<w.second->v<<" "<<w.second->p<<" "<<w.second->q<<endl;
}
return 0;
}
/*
1000 5
800 2 0
400 5 1
300 5 1
400 3 0
500 2 0
*/