import java.util.*; class MaxFlow { //辺を表す構造体 class Edge { int to; int cap; int rev; public Edge(int to, int cap, int rev) { this.to = to; this.cap = cap; this.rev = rev; } } final int MAX_V = 1000; //グラフの隣接リスト表現 ArrayList> G = new ArrayList<>(); //sからの距離 int[] level = new int[MAX_V]; //どこまで調べ終わったか int[] iter = new int[MAX_V]; public MaxFlow() { for (int i = 0; i < MAX_V; i++) { G.add(new ArrayList()); } } //fromからtoへ向かう容量capの辺をグラフに追加する。 void addEdge(int from, int to, int cap) { G.get(from).add(new Edge(to, cap, G.get(to).size())); G.get(to).add(new Edge(from, 0, G.get(from).size() - 1)); } //sからの最短距離をBFSで計算する void bfs(int s) { Arrays.fill(this.level, -1); Queue queue = new LinkedList<>(); queue.add(s); this.level[s] = 0; while (queue.size() > 0) { int v = queue.poll(); for (Edge e : G.get(v)) { if (e.cap > 0 && level[e.to] < 0) { level[e.to] = level[v] + 1; queue.add(e.to); } } } } //増加パスをDFSで探す int dfs(int v, int t, int f) { if (v == t) return f; for (; iter[v] < G.get(v).size(); iter[v]++) { Edge e = G.get(v).get(iter[v]); if (e.cap > 0 && level[v] < level[e.to]) { int d = dfs(e.to, t, Math.min(f, e.cap)); if (d > 0) { e.cap -= d; G.get(e.to).get(e.rev).cap += d; return d; } } } return 0; } //sからtへの最大流を求める。 int max_flow(int s, int t) { int flow = 0; while (true) { bfs(s); if (level[t] < 0) return flow; Arrays.fill(iter, 0); int f; while ((f = dfs(s, t, 1 << 30)) > 0) { flow += f; } } } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int W = scanner.nextInt(); int N = scanner.nextInt(); MaxFlow flow = new MaxFlow(); for (int i = 0; i < N; i++) { int J = scanner.nextInt(); flow.addEdge(0, i + 1, J); } int M = scanner.nextInt(); for (int i = 0; i < M; i++) { int C = scanner.nextInt(); flow.addEdge(100 + i, 200, C); } for (int i = 0; i < M; i++) { int Q = scanner.nextInt(); boolean[] check = new boolean[N + 1]; for (int j = 0; j < Q; j++) { int X = scanner.nextInt(); check[X] = true; } for (int j = 1; j < N + 1; j++) { if (!check[j]) { flow.addEdge(j, 100 + i, 1 << 30); } } } int ans = flow.max_flow(0, 200); System.err.println(ans); if (ans >= W) { System.out.println("SHIROBAKO"); } else { System.out.println("BANSAKUTSUKITA"); } } }