import sys
sys.setrecursionlimit(6005) # żeby nie było błędu rekursji

rd = lambda: map(int, input().strip().split())  # wczytywanie danych
# liczba skrzyżowań/dróg
n, m = rd()
G = [[] for i in range(n + 1)]
# wczytywanie grafu/planu miasta - para wierzchołek/waga
for i in range(m):
    u, v, w = rd()
    # ignorujemy drogi wychodzące ze szkoły (n) i wchodzące do domu (1)
    if (u != n) and (v != 1):
        G[u].append((v, w))

def DFS(u):
    # przechodzenie w głąb, ze zliczaniem kolejności (porządek topologiczny)
    for (v, w) in G[u]:
        if value[v] == 0:
            value[0] += 1 # tyle odwiedzonych wierzchołków
            value[v] = value[0] # v odwiedzony jako kolejny
            DFS(v)
    value[u] = n * value[0] - value[u]  #wartość kontrolna porządku
    order.insert(0, u) # u na początek w porządku

def CalculateDist():
    # wyznaczanie dystansów i zwracanie wyniku
    if value[n] == 0:
        return("BRAK")  # nie ma drogi dom-szkoła (z 1 do n)
    dist = [0] * (n + 1)
    # najdłuższe drogi
    for u in order:
        for (v, w) in G[u]:
            if value[v] < value[u]:  # jedziemy zgodnie z porządkiem topologicnym
                if dist[v] < dist[u] + w:
                    dist[v] = dist[u] + w  # można wydłużyć drogę
            else:
                # jest droga niezgodna z porządkiem, czyli cykl - koniec
                return("WAGARY")
    return(dist[n])

value = [0] * (n + 1)  # porządek topologiczny - docelowo - malejąco
value[0] = value[1] = 1
order = []     # skrzyżowania (osiągalne z domu (z 1)) w porządku topologicznym
DFS(1)
print(CalculateDist())

