#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const double eps = 1e-11;
template <class T>
inline void Min(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void Max(T &a, T b) {
  if (b > a) a = b;
}
template <class T>
inline T gcd(T a, T b) {
  if (a < 0) return gcd(-a, b);
  if (b < 0) return gcd(a, -b);
  return (b == 0) ? a : gcd(b, a % b);
}
template <class T>
inline T lcm(T a, T b) {
  if (a < 0) return lcm(-a, b);
  if (b < 0) return lcm(a, -b);
  return a * (b / gcd(a, b));
}
template <class T>
inline T euclide(T a, T b, T &x, T &y) {
  if (a < 0) {
    T d = euclide(-a, b, x, y);
    x = -x;
    return d;
  }
  if (b < 0) {
    T d = euclide(a, -b, x, y);
    y = -y;
    return d;
  }
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  } else {
    T d = euclide(b, a % b, x, y);
    T t = x;
    x = y;
    y = t - (a / b) * y;
    return d;
  }
}
const int inf = 100000000;
int n, m, dist[501][501], c[501][501], f[501];
int u, v, l;
vector<pair<int, int> > ve[501];
void floyd() {
  for (int k = 1; k <= n; k++)
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= n; j++)
        dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i != j) dist[i][j] = inf;
  for (int i = 1; i <= m; i++) {
    scanf("%d%d%d", &u, &v, &l);
    dist[v][u] = dist[u][v] = l;
    ve[u].push_back(make_pair(v, l));
    ve[v].push_back(make_pair(u, l));
  }
  floyd();
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) f[j] = 0;
    for (int j = 1; j <= n; j++)
      for (int k = 0; k < ve[j].size(); k++)
        if (ve[j][k].second + dist[i][j] == dist[i][ve[j][k].first])
          f[ve[j][k].first]++;
    for (int j = 1; j <= n; j++)
      for (int k = 1; k <= n; k++)
        if (dist[i][j] == dist[i][k] + dist[k][j]) c[i][j] += f[k];
  }
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) printf("%d ", c[i][j]);
  printf("\n");
  return 0;
}
