voidsolve(){ int n, k; cin >> n >> k; vector<int> a(n), b(n); int sumA = 0, sumB = 0; FOR(i, 0, n){ cin >> a[i]; sumA += a[i]; } FOR(i, 0, n){ cin >> b[i]; sumB += b[i]; }
auto can = [&](int x){ int need = 0; FOR(i, 0, n){ int req = x * a[i]; if(req > b[i]){ need += req - b[i]; } if(need > k){ returnfalse; } } return need <= k; };
int L = 0, R = (sumB + k) / sumA, ans = 0; while(L <= R){ int mid = (L+R) / 2; if(can(mid)){ ans = mid; L = mid + 1; }else{ R = mid - 1; } }
voidsolve(){ int n,q; cin >> n >> q; vector<int> as(n),bs(q); FOR(i,0,n) cin >> as[i]; sort(ALL(as)); FOR(i,0,q) cin >> bs[i];
for(auto num : bs){ int ans = 0; for(int i=1;i*i<=num;i++){ if(num % i == 0){ auto it1 = binary_search(ALL(as), i); ans += (1-it1); if(i*i == num) break; auto it2 = binary_search(ALL(as), num/i); ans += (1-it2); } } cout << ans << endl; } }
voidadd(int x, const T &v){ for (int i = x + 1; i <= n; i += i & -i) { a[i - 1] += v; } }
T sum(int x){ T ans{}; for (int i = x; i > 0; i -= i & -i) { ans += a[i - 1]; } return ans; }
T rangeSum(int l, int r){ // [l, r) returnsum(r) - sum(l); }
intselect(const T &k){ // 前綴區間和 >= k 的位置 int x = 0; T cur{}; for (int i = 1 << __lg(n); i; i /= 2) { if (x + i <= n and cur + a[x + i - 1] <= k) { x += i; cur = cur + a[x - 1]; } } return x; } };
voidsolve(){ int n, q; cin >> n >> q;
vector < int > c(n); map < int, int > mp; int t = q + 5; BIT < int > bt(q+n+10);
t = int(input()) while(t): t -= 1 n = int(input()) sma = [" "for i inrange(n)] for i inrange(n): sma[i] = str(input()) big = str(input())
ok = True ans = 1 while(len(big) > 0and ok): ok = False for i in sma: if(big.count(i) != 0): ok = True ans += big.count(i) big = big.replace(i,"") if(not ok): print("No") else: print("Yes") print(ans)