use std::collections::{HashMap, HashSet}; fn main() { proconio::input! { w: u64, n: usize, j: [u64; n], m: usize, c: [u64; m], } let mut network = vec![vec![0u64; n]; m]; for x in 0..n { for y in 0..m { network[y][x] = std::cmp::min(j[x], c[y]); } } (0..m).for_each(|q| { proconio::input! { n: usize, x: [usize; n], } for &x in x.iter() { network[q][x - 1] = 0; } }); eprintln!("{:?}", network); let mut genga = 0; let mut sakkan = 0; let mut sakkan_cap = c; for w in 0..w { let result = loop { if network[sakkan][genga] > 0 && sakkan_cap[sakkan] > 0 { network[sakkan][genga] -= 1; sakkan_cap[sakkan] -= 1; eprintln!("{w}: {} -> {}", genga + 1, sakkan + 1); break true; } sakkan += 1; if sakkan == m { sakkan = 0; genga += 1; if genga == n { break false; } } }; if !result { println!("BANSAKUTSUKITA"); return; } } println!("SHIROBAKO"); }