#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
inline long long read() {
  bool f = false;
  char ch = getchar();
  long long res = 0;
  while (ch < '0' || '9' < ch) f |= (ch == '-'), ch = getchar();
  while ('0' <= ch && ch <= '9') res = 10 * res + ch - '0', ch = getchar();
  return f ? -res : res;
}
const int N = 1e5 + 10;
int n, m;
int find_prime(int x) {
  bool flag = false;
  int ans = x;
  if (x == 1) return 2;
  while (!flag) {
    flag = true;
    for (int i = 2; i * i <= ans; i++) {
      if (ans % i == 0) {
        flag = false;
        break;
      }
    }
    if (!flag) ans++;
  }
  return ans;
}
int main() {
  n = read(), m = read();
  int minlen = find_prime(n - 1);
  int avglen = minlen / (n - 1);
  int rlen = minlen % (n - 1);
  long long sum = 0;
  printf("%d %d\n", minlen, minlen);
  for (int i = 1; i <= n - 1; i++) {
    int temp = avglen;
    if (rlen) temp++, rlen--;
    printf("%d %d %d\n", i, i + 1, temp);
  }
  m -= n - 1;
  for (int i = 1; i <= n - 1 && m; i++) {
    for (int j = i + 2; j <= n; j++) {
      if (m) {
        printf("%d %d %d\n", i, j, minlen);
        m--;
      } else
        break;
    }
  }
  return 0;
}
