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.*;
import java.util.*;

import static java.lang.Math.*;

public class C {

  public static void main(String[] args) throws Exception {
    Scanner sc = new Scanner();
    int n = sc.nextInt();
    int q = sc.nextInt();
    
    PriorityQueue<Server> idle = new PriorityQueue<>(new Comparator<Server>() {
      @Override
      public int compare(Server a, Server b) {
        return Integer.compare(a.id, b.id);
      }
    });
    PriorityQueue<Server> running = new PriorityQueue<>(new Comparator<Server>() {
      @Override
      public int compare(Server a, Server b) {
        return Integer.compare(a.task.done, b.task.done);
      }
    });

    for (int i = 0; i < n; i++) {
      idle.offer(new Server(i+1));
    }
    
    Task[] tasks = new Task[1_000_001];
    for (int i = 0; i < q; i++) {
      Task t = new Task(sc.nextInt(), sc.nextInt(), sc.nextInt());
      tasks[t.t] = t;
    }

    for (int t = 0; t < 1_000_001; t++) {
      // process stuff
      while (!running.isEmpty()) {
        Server server = running.peek();
        if (t >= server.task.done) {
          server = running.poll();
          server.task = null;
          idle.offer(server);
        } else {
          break;
        }
      }

      if (tasks[t] != null) {
        if (idle.size() >= tasks[t].k) {
          int sum = 0;
          for (int i = 0; i < tasks[t].k; i++) {
            Server server = idle.poll();
            server.task = tasks[t];
            running.offer(server);
            sum += server.id;
          }
          System.out.println(sum);
        } else {
          System.out.println(-1);
        }
      }
    }
  }

  static class Server {
    int id;
    Task task;

    Server(int id) {
      this.id = id;
      task = null;
    }
  }

  static class Task {
    int t, k, d;
    int done;

    Task(int a, int b, int c) {
      t = a;
      k = b;
      d = c;
      done = t + d;
    }
  }

  static class Scanner {
    BufferedReader b;
    StringTokenizer s;

    Scanner() {
      b = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() throws Exception {
      while (s == null || !s.hasMoreTokens()) {
        s = new StringTokenizer(b.readLine());
      }
      return s.nextToken();
    }

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