from random import randint from collections import defaultdict, deque import heapq
defdijkstra(e, s): vis = set() queue = [(0, s)] dis = defaultdict(lambda: float("+inf")) dis[s] = 0 while queue: _, u = heapq.heappop(queue) if u in vis: continue vis.add(u) for v, w in e[u]: if dis[v] > dis[u] + w: dis[v] = dis[u] + w heapq.heappush(queue, (dis[v], v)) return dis
new_edges = defaultdict(list) for u in e: for v, w in e[u]: new_edges[u].append((v, w + h[u] - h[v]))
result = defaultdict(lambda: defaultdict(lambda: float("+inf"))) for u in nodes: dist = dijkstra(new_edges, u) result[u].update({v: dist[v] - h[u] + h[v] for v in dist if v != virtual_node})
e = defaultdict(list) points = set() n, m = map(int, input().split()) for i inrange(m): a, b, t = input().split() e[a].append((b, int(t))) points.add(a) points.add(b)
dis = johnson(e, points)
for i inrange(int(input())): a, b = input().split() if dis[a][b] < float("+inf"): print(dis[a][b]) else: print("Roger")