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

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;
import java.util.ArrayList;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author Mayur Kulkarni
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        BladeReader in = new BladeReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public List<Integer> assign(int serverReqd, int[] servers, int currTime, int reqdTime) {
            int assigned = 0;
            List<Integer> serversAssnd = new ArrayList<>();
            for (int i = 0; i < servers.length; i++) {
                if (servers[i] == -1) {
                    assigned++;
                    servers[i] = reqdTime + currTime - 1;
                    serversAssnd.add(i);
                }
                if (assigned == serverReqd) {
                    break;
                }
            }
            if (assigned == serverReqd) {
                return serversAssnd;
            } else {
                for (int i : serversAssnd) {
                    servers[i] = -1;
                }
                return null;
            }
        }

        public void solve(int testNumber, BladeReader in, PrintWriter out) {
            int totalServers = in.nextInt();
            int tasks = in.nextInt();
            int[] time = new int[tasks];
            int[] sneeded = new int[tasks];
            int[] timen = new int[tasks];
            int[] servers = new int[totalServers];
            Arrays.fill(servers, -1);
            int currTime = 0;
            for (int i = 0; i < tasks; i++) {
                time[i] = in.nextInt();
                sneeded[i] = in.nextInt();
                timen[i] = in.nextInt();
            }
            for (int i = 0; i < tasks; i++) {
                currTime = time[i];
                deallocate(currTime, servers);
                List<Integer> list = assign(sneeded[i], servers, currTime, timen[i]);
                if (list == null) {
                    out.println(-1);
                } else {
                    long sum = 0;
                    for (int xx : list) {
                        sum += xx + 1;
                    }
                    out.println(sum);
                }
            }
        }

        private void deallocate(int currTime, int[] servers) {
            for (int i = 0; i < servers.length; i++) {
                if (servers[i] < currTime) {
                    servers[i] = -1;
                }
            }
        }
    }

    static class BladeReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public BladeReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }
    }
}

