100 1
1000000 100 1000
 5 3
1 4 10
2 2 5
3 1 6
 10 4
1 5 20
2 5 200
100 6 20
101 1 100
 5 3
1 3 4
4 3 4
6 4 1
 4 1
6 1 1
 8 6
1 3 20
4 2 1
6 6 5
9 1 1
15 3 6
21 8 8
 4 5
1 2 3
2 1 3
3 1 2
4 3 3
5 4 1
 8 4
1 3 2
2 3 100
10 6 20
11 5 20
 4 10
1 1 1
3 1 2
4 1 2
6 1 2
8 1 2
13 1 2
16 1 1
17 1 2
19 3 1
20 1 1
 5 3
1 4 4
4 2 2
5 5 2
 4 3
1 3 10
2 2 15
12 4 1
 5 4
1 1 4
2 4 4
5 2 20
11 5 2
 1 10
4 1 1
9 1 1
10 1 1
12 1 1
13 1 1
15 1 1
16 1 1
18 1 1
19 1 1
20 1 1

5050
 10
-1
5
 15
40
-1
1
 6
-1
10
 1
 6
9
-1
4
15
36
 3
3
4
-1
10
 6
15
-1
21
 1
1
2
1
1
1
1
1
6
1
 10
-1
15
 6
-1
10
 1
14
-1
15
 1
1
1
1
1
1
1
1
1
1

#include<iostream>
using namespace std;
#include<algorithm>
#include<map>
#include<vector>
#include <iomanip>
#include <set>
#define F first
#define S second
#define pii pair<int,int>
#define pb push_back
#define int long long
#define mp make_pair
//setprecision
int inf=1000*1000*1000+10;
int const MAX=1000*1000+10000;
int const MAX2=1000*1000+10;
int const MAX3=5000+10;
int tim[MAX];
int k[MAX];
int dline[MAX];
pii mark[MAX];
int ans[MAX];
int ne[MAX];
int yes[MAX];
int wh[MAX];
main(){
	ios::sync_with_stdio(0) , cin.tie(0) , cout.tie(0);
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=q;i++)
    {
        cin>>tim[i]>>k[i]>>dline[i];
        mark[tim[i]]=mp(k[i],dline[i]);
    }
    int on=n;
    for(int i=1;i<=1000*1000;i++)
    {
        on+=ne[i];
        if(mark[i].F!=0)
        {
            if(on>=mark[i].F)
            {
                on-=mark[i].F;
                int t=0;
                for(int j=1;j<=100;j++)
                {
                    if(wh[j]==i)
                        yes[j]=0;
                    if(!yes[j] && t!=mark[i].F)
                        yes[j]=1,ans[i]+=j,t++,wh[j]=mark[i].S+i;
                }
                ne[i]+=mark[i].S+i;
            }
            else
                ans[i]=-1;
        }
    }
    for(int i=1;i<=q;i++)
    {
        cout<<ans[tim[i]]<<endl;
    }
}