#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define co_tat_ca_nhung_thieu_em using namespace std;
#define ngay_xua_em_che_toi_code_ga ios_base::sync_with_stdio(0);
#define bay_gio_toi_da_ga_hon cin.tie(0);
#define em_da_thay_hoi_han_chua cout.tie(0);
#define __QuocSensei__ int main()
#define ii pair<int, int>
#define fi first
#define se second
co_tat_ca_nhung_thieu_em;
const int maxn = 1e5;
const int maxw = 1e6;
struct edge
{
int x, y, id;
};
int n, m, leader[maxn + 10], sz[maxn + 10], ans[maxn + 10];
int id[maxn + 10], low[maxn + 10], cnt = 0;
vector<edge> v[maxw + 10];
vector<ii> adj[maxn + 10];
int find_leader(int x)
{
if (x == leader[x]) return x;
return leader[x] = find_leader(leader[x]);
}
void connect(int x, int y)
{
x = find_leader(x);
y = find_leader(y);
if (x == y) return ;
if (sz[x] < sz[y]) swap(x, y);
sz[x] += sz[y];
leader[y] = x;
}
void dfs(int top, int par = -1)
{
id[top] = low[top] = ++cnt;
for (ii p : adj[top])
{
int next_top = p.fi;
int idx = p.se;
if (idx == par) continue;
if (id[next_top]) low[top] = min(low[top], id[next_top]);
else
{
dfs(next_top, idx);
low[top] = min(low[top], low[next_top]);
}
if (low[next_top] > id[top]) ans[idx] = 1;
}
}
__QuocSensei__
{
ngay_xua_em_che_toi_code_ga
bay_gio_toi_da_ga_hon
em_da_thay_hoi_han_chua
if (fopen("EDGES_IN_MST.INP", "r"))
{
freopen("EDGES_IN_MST.INP", "r", stdin);
freopen("EDGES_IN_MST.OUT", "w", stdout);
}
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
leader[i] = i;
sz[i] = 1;
}
for (int i = 1; i <= m; i++)
{
int x, y;
ll w;
cin >> x >> y >> w;
v[w].push_back({x, y, i});
}
for (int i = 1; i <= 1e6; i++)
{
for (edge e : v[i])
{
int x = e.x;
int y = e.y;
int id = e.id;
if (find_leader(x) == find_leader(y)) ans[id] = 2;
else
{
adj[find_leader(x)].push_back({find_leader(y), id});
adj[find_leader(y)].push_back({find_leader(x), id});
}
}
for (edge e : v[i]) connect(e.x, e.y);
}
for (int i = 1; i <= n; i++)
if (!id[i]) dfs(i);
for (int i = 1; i <= m; i++)
if (ans[i] == 2) cout << "none", el;
else if (ans[i] == 1) cout << "any", el;
else cout << "at least one", el;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGNvdXQgPDwgJ1xuJwojZGVmaW5lIGNvX3RhdF9jYV9uaHVuZ190aGlldV9lbSB1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIG5nYXlfeHVhX2VtX2NoZV90b2lfY29kZV9nYSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwojZGVmaW5lIGJheV9naW9fdG9pX2RhX2dhX2hvbiBjaW4udGllKDApOwojZGVmaW5lIGVtX2RhX3RoYXlfaG9pX2hhbl9jaHVhIGNvdXQudGllKDApOwojZGVmaW5lIF9fUXVvY1NlbnNlaV9fIGludCBtYWluKCkKI2RlZmluZSBpaSBwYWlyPGludCwgaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCgpjb190YXRfY2Ffbmh1bmdfdGhpZXVfZW07Cgpjb25zdCBpbnQgbWF4biA9IDFlNTsKY29uc3QgaW50IG1heHcgPSAxZTY7CgpzdHJ1Y3QgZWRnZQp7CiAgICBpbnQgeCwgeSwgaWQ7Cn07CgppbnQgbiwgbSwgbGVhZGVyW21heG4gKyAxMF0sIHN6W21heG4gKyAxMF0sIGFuc1ttYXhuICsgMTBdOwppbnQgaWRbbWF4biArIDEwXSwgbG93W21heG4gKyAxMF0sIGNudCA9IDA7CnZlY3RvcjxlZGdlPiB2W21heHcgKyAxMF07CnZlY3RvcjxpaT4gYWRqW21heG4gKyAxMF07CgppbnQgZmluZF9sZWFkZXIoaW50IHgpCnsKICAgIGlmICh4ID09IGxlYWRlclt4XSkgcmV0dXJuIHg7CiAgICByZXR1cm4gbGVhZGVyW3hdID0gZmluZF9sZWFkZXIobGVhZGVyW3hdKTsKfQp2b2lkIGNvbm5lY3QoaW50IHgsIGludCB5KQp7CiAgICB4ID0gZmluZF9sZWFkZXIoeCk7CiAgICB5ID0gZmluZF9sZWFkZXIoeSk7CgogICAgaWYgKHggPT0geSkgcmV0dXJuIDsKICAgIGlmIChzelt4XSA8IHN6W3ldKSBzd2FwKHgsIHkpOwogICAgc3pbeF0gKz0gc3pbeV07CiAgICBsZWFkZXJbeV0gPSB4Owp9CnZvaWQgZGZzKGludCB0b3AsIGludCBwYXIgPSAtMSkKewogICAgaWRbdG9wXSA9IGxvd1t0b3BdID0gKytjbnQ7CgogICAgZm9yIChpaSBwIDogYWRqW3RvcF0pCiAgICB7CiAgICAgICAgaW50IG5leHRfdG9wID0gcC5maTsKICAgICAgICBpbnQgaWR4ID0gcC5zZTsKICAgICAgICBpZiAoaWR4ID09IHBhcikgY29udGludWU7CiAgICAgICAgaWYgKGlkW25leHRfdG9wXSkgbG93W3RvcF0gPSBtaW4obG93W3RvcF0sIGlkW25leHRfdG9wXSk7CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgZGZzKG5leHRfdG9wLCBpZHgpOwogICAgICAgICAgICBsb3dbdG9wXSA9IG1pbihsb3dbdG9wXSwgbG93W25leHRfdG9wXSk7CiAgICAgICAgfQogICAgICAgIGlmIChsb3dbbmV4dF90b3BdID4gaWRbdG9wXSkgYW5zW2lkeF0gPSAxOwogICAgfQp9CgpfX1F1b2NTZW5zZWlfXwp7CiAgICBuZ2F5X3h1YV9lbV9jaGVfdG9pX2NvZGVfZ2EKICAgIGJheV9naW9fdG9pX2RhX2dhX2hvbgogICAgZW1fZGFfdGhheV9ob2lfaGFuX2NodWEKCiAgICBpZiAoZm9wZW4oIkVER0VTX0lOX01TVC5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oIkVER0VTX0lOX01TVC5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJFREdFU19JTl9NU1QuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgbGVhZGVyW2ldID0gaTsKICAgICAgICBzeltpXSA9IDE7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspCiAgICB7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgbGwgdzsKICAgICAgICBjaW4gPj4geCA+PiB5ID4+IHc7CiAgICAgICAgdlt3XS5wdXNoX2JhY2soe3gsIHksIGl9KTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDFlNjsgaSsrKQogICAgewogICAgICAgIGZvciAoZWRnZSBlIDogdltpXSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB4ID0gZS54OwogICAgICAgICAgICBpbnQgeSA9IGUueTsKICAgICAgICAgICAgaW50IGlkID0gZS5pZDsKCiAgICAgICAgICAgIGlmIChmaW5kX2xlYWRlcih4KSA9PSBmaW5kX2xlYWRlcih5KSkgYW5zW2lkXSA9IDI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYWRqW2ZpbmRfbGVhZGVyKHgpXS5wdXNoX2JhY2soe2ZpbmRfbGVhZGVyKHkpLCBpZH0pOwogICAgICAgICAgICAgICAgYWRqW2ZpbmRfbGVhZGVyKHkpXS5wdXNoX2JhY2soe2ZpbmRfbGVhZGVyKHgpLCBpZH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAoZWRnZSBlIDogdltpXSkgY29ubmVjdChlLngsIGUueSk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgaWYgKCFpZFtpXSkgZGZzKGkpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgICAgICBpZiAoYW5zW2ldID09IDIpIGNvdXQgPDwgIm5vbmUiLCBlbDsKICAgICAgICBlbHNlIGlmIChhbnNbaV0gPT0gMSkgY291dCA8PCAiYW55IiwgZWw7CiAgICAgICAgZWxzZSBjb3V0IDw8ICJhdCBsZWFzdCBvbmUiLCBlbDsKfQ==