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

"use strict";

var serversReturnedAt = [];
var serversRequiredAt = [];
var isEmpty = [];

var MAX_TIME = 1000 * 1000 + 10;


function init (servers) {
    for (var t = 0; t < 2 * MAX_TIME; t++) {
        serversReturnedAt.push([]);
        serversRequiredAt.push([]);
    }
    for (var i = 0; i < servers; i++) {
        isEmpty.push(true);
    }
}

function obtainFirstServers (servers) {
    var chosen = [];
    for (var i = 0; i < isEmpty.length; i++) {
        if (isEmpty[i] && chosen.length < servers) {
            chosen.push(i);
        }    
    }
    if (chosen.length < servers) {
        return undefined;
    }
    return chosen;
}

function Query (id, servers, duration) {
    this.id = id;
    this.servers = servers;
    this.duration = duration;
}

function add (a, b) {
    return a + b;
}

function solve () {
    var result = {};
    for (var time = 0; time < MAX_TIME; time++) {
        for (var i = 0; i < serversReturnedAt[time].length; i++) {
            isEmpty[serversReturnedAt[time][i]] = true;
        }    
        for (i = 0; i < serversRequiredAt[time].length; i++) {
            var query = serversRequiredAt[time][i];
            var chosen = obtainFirstServers (query.servers);
            if (!chosen) {
                result[query.id] = -1;
            } else {
                result[query.id] = chosen.length + chosen.reduce(add, 0);
                for (var j = 0; j < chosen.length; j++) {
                    isEmpty[chosen[j]] = false;
                    serversReturnedAt[time + query.duration].push(chosen[j]);                
                }
            }
        }
    }
    return result;
}


var line = readline().split(' ');
var servers = parseInt(line[0]);
var queries = parseInt(line[1]);
init(servers);
for (var i = 0; i < queries; i++) {
    line = readline().split(' ');
    var t = parseInt(line[0]);
    var servers = parseInt(line[1]);
    var duration = parseInt(line[2]);
    serversRequiredAt[t].push(new Query(i, servers, duration));    
} 
var result = solve();
for (i = 0; i < queries; i++) {
    print(result[i]);
}