#3901
Hard Algorithms Good subsequence queries
19.5% acceptance
May 14, 2026
42
1
You are given an integer array nums of length n and an integer p.
A non-empty subsequence of nums is called good if:
Its length is strictly less than n.
The greatest common divisor (GCD) of its elements is exactly p.
You are also given a 2D integer array queries of length q, where each queries[i] = [indi, vali] indicates that you should update nums[indi] to vali.
After each query, determine whether there exists any good subsequence in the current array.
Return the number of queries for which a good subsequence exists.
The term gcd(a, b) denotes the greatest common divisor of a and b.
- 1. Reduce the problem to only elements divisible by p. Scale them down by /p and reason about primes on the reduced array.
- 2. A subsequence has GCD = p exactly when, after division, the chosen elements do not all share any common prime factor.
- 3. Track, for each prime factor, how many active indices contain it. If any prime covers all active elements, the answer is false.
- 4. Check that there is an index whose prime factors do not cover all active elements (so a subsequence of length n can have GCD = p).
No examples available
This problem has no examples listed
8 Test Cases
1348.4 µs total
8 passed
Function
all_multiples_blocked
Runtime
45.50 µs
#[test]
fn all_multiples_blocked() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![6, 10, 15], 1, vec![vec![0, 6]]);
let expected = 0;
log_result!(val == expected, "all_multiples_blocked", start, &expected, &val);
assert_eq!(val, expected);
}
Function
all_multiples_ok
Runtime
4.40 µs
#[test]
fn all_multiples_ok() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![2, 3, 6], 1, vec![vec![0, 2]]);
let expected = 1;
log_result!(val == expected, "all_multiples_ok", start, &expected, &val);
assert_eq!(val, expected);
}
Function
example1
Runtime
3.30 µs
#[test]
fn example1() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![4, 8, 12, 16], 2, vec![vec![0, 3], vec![2, 6]]);
let expected = 1;
log_result!(val == expected, "example1", start, &expected, &val);
assert_eq!(val, expected);
}
Function
example2
Runtime
2.70 µs
#[test]
fn example2() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![4, 5, 7, 8], 3, vec![vec![0, 6], vec![1, 9], vec![2, 3]]);
let expected = 2;
log_result!(val == expected, "example2", start, &expected, &val);
assert_eq!(val, expected);
}
Function
example3
Runtime
2.50 µs
#[test]
fn example3() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![5, 7, 9], 2, vec![vec![1, 4], vec![2, 8]]);
let expected = 0;
log_result!(val == expected, "example3", start, &expected, &val);
assert_eq!(val, expected);
}
Function
p_in_nums
Runtime
2.50 µs
#[test]
fn p_in_nums() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![1, 1], 1, vec![vec![0, 1]]);
let expected = 1;
log_result!(val == expected, "p_in_nums", start, &expected, &val);
assert_eq!(val, expected);
}
Function
single_query_gcd_p
Runtime
1.20 µs
#[test]
fn single_query_gcd_p() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![2, 4], 2, vec![vec![0, 2]]);
let expected = 1;
log_result!(val == expected, "single_query_gcd_p", start, &expected, &val);
assert_eq!(val, expected);
}
Function
stress_test_limit
Runtime
1286.30 µs
#[test]
fn stress_test_limit() {
let start = std::time::Instant::now();
let val = Solution::count_good_subseq(vec![1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 1, vec![vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1], vec![0, 1]]);
let expected = 2000;
log_result!(val == expected, "stress_test_limit", start, &expected, &val);
assert_eq!(val, expected);
} Runtime Distribution
45.5 µs
4.4 µs
3.3 µs
2.7 µs
2.5 µs
2.5 µs
1.2 µs
1286.3 µs
#1
#2
#3
#4
#5
#6
#7
#8
2 ≤ n = nums.length ≤ 5 × 104
1 ≤ nums[i] ≤ 5 × 104
1 ≤ queries.length ≤ 5 × 104
queries[i] = [indi, vali]
1 ≤ vali, p ≤ 5 × 104
0 ≤ indi ≤ n - 1
No similar questions
No related problems found
Solution
Rust
Time O(n²)
Space O(n)
impl Solution {
pub fn count_good_subseq(nums: Vec<i32>, p: i32, queries: Vec<Vec<i32>>) -> i32 {
fn gcd(a: i32, b: i32) -> i32 {
let (mut a, mut b) = (a, b);
while b != 0 { let t = a % b; a = b; b = t; }
a
}
let n = nums.len();
let size = n.next_power_of_two().max(1);
let mut tree = vec![0i32; 2 * size];
let mut current = nums.clone();
let mut cnt_p = 0i32;
let mut cnt_eq_p = 0i32;
let set_leaf = |tree: &mut Vec<i32>, size: usize, pos: usize, val: i32| {
let mut i = pos + size;
tree[i] = val;
i /= 2;
while i > 0 {
tree[i] = gcd(tree[2 * i], tree[2 * i + 1]);
i /= 2;
}
};
let query = |tree: &Vec<i32>, size: usize, ql: usize, qr_inclusive: usize| -> i32 {
if ql > qr_inclusive { return 0; }
let mut l = ql + size;
let mut r = qr_inclusive + size + 1;
let mut res = 0i32;
while l < r {
if l & 1 == 1 { res = gcd(res, tree[l]); l += 1; }
if r & 1 == 1 { r -= 1; res = gcd(res, tree[r]); }
l /= 2;
r /= 2;
}
res
};
for i in 0..n {
let v = current[i];
if v % p == 0 {
cnt_p += 1;
if v == p { cnt_eq_p += 1; }
set_leaf(&mut tree, size, i, v / p);
}
}
let mut ans = 0i32;
for q in &queries {
let idx = q[0] as usize;
let val = q[1];
let old = current[idx];
if old % p == 0 {
cnt_p -= 1;
if old == p { cnt_eq_p -= 1; }
}
if val % p == 0 {
cnt_p += 1;
if val == p { cnt_eq_p += 1; }
set_leaf(&mut tree, size, idx, val / p);
} else {
set_leaf(&mut tree, size, idx, 0);
}
current[idx] = val;
if cnt_p == 0 { continue; }
let g = query(&tree, size, 0, n - 1);
if g != 1 { continue; }
if (cnt_p as usize) < n {
ans += 1;
continue;
}
if cnt_eq_p >= 1 {
ans += 1;
continue;
}
if n >= 8 {
ans += 1;
continue;
}
let mut found = false;
for x in 0..n {
let left = if x == 0 { 0 } else { query(&tree, size, 0, x - 1) };
let right = if x + 1 >= n { 0 } else { query(&tree, size, x + 1, n - 1) };
if gcd(left, right) == 1 {
found = true;
break;
}
}
if found { ans += 1; }
}
ans
}
}