#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int n, m;
struct Edge {
  int x, y, val, id, ans;
  bool operator<(const Edge& a) const { return val < a.val; }
} e[MAXN];
struct E {
  int v, next, id;
} edge[MAXN * 2];
int fa[MAXN];
int low[MAXN], dep[MAXN];
int head[MAXN], len;
int mark[MAXN];
int com[MAXN];
char res[][20] = {"none", "any", "at least one"};
void add_edge(int u, int v, int id) {
  edge[len].v = v;
  edge[len].id = id;
  edge[len].next = head[u];
  head[u] = len++;
}
int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]); }
bool cmp(Edge a, Edge b) { return a.id < b.id; }
void dfs(int u, int father, int depth) {
  int i;
  mark[u] = 1;
  low[u] = dep[u] = depth;
  for (i = head[u]; i != -1; i = edge[i].next) {
    int v = edge[i].v;
    if (mark[v] == 1 && edge[i].id != father && dep[v] < low[u])
      low[u] = dep[v];
    else if (mark[v] == 0) {
      dfs(v, edge[i].id, depth + 1);
      if (low[v] < low[u]) low[u] = low[v];
      if (low[v] > dep[u]) e[edge[i].id].ans = 1;
    }
  }
  mark[u] = 2;
}
int main() {
  int i, j, x, y;
  scanf("%d%d", &n, &m);
  for (i = 0; i <= n; i++) fa[i] = i;
  for (i = 0; i < m; i++) {
    scanf("%d%d%d", &e[i].x, &e[i].y, &e[i].val);
    e[i].id = i;
    e[i].ans = 0;
  }
  sort(e, e + m);
  memset(head, -1, sizeof(head));
  len = 0;
  for (i = 0; i < m;) {
    int s = i;
    while (i < m && e[i].val == e[s].val) i++;
    for (j = s; j < i; j++) {
      x = find(e[j].x);
      y = find(e[j].y);
      if (x == y) continue;
      e[j].ans = 2;
      add_edge(x, y, j);
      add_edge(y, x, j);
      com[j] = x;
    }
    for (j = s; j < i; j++) {
      if (com[j] && !mark[com[j]]) dfs(com[j], 0, 1);
    }
    for (j = s; j < i; j++) {
      x = find(e[j].x);
      y = find(e[j].y);
      head[x] = -1;
      head[y] = -1;
      mark[x] = 0;
      mark[y] = 0;
      if (x == y) continue;
      fa[x] = y;
    }
    len = 0;
  }
  sort(e, e + m, cmp);
  for (i = 0; i < m; i++) printf("%s\n", res[e[i].ans]);
  return 0;
}
