QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#853437 | #9738. Make It Divisible | ucup-team296# | AC ✓ | 142ms | 5188kb | Rust | 63.5kb | 2025-01-11 17:01:17 | 2025-01-11 17:01:19 |
Judging History
answer
// https://contest.ucup.ac/contest/1893/problem/9738
use crate::algo_lib::collections::btree_ext::BTreeExt;
use crate::algo_lib::collections::iter_ext::iter_copied::ItersCopied;
use crate::algo_lib::collections::order::Order;
use crate::algo_lib::io::input::Input;
use crate::algo_lib::io::output::Output;
use crate::algo_lib::misc::test_type::TaskType;
use crate::algo_lib::misc::test_type::TestType;
use crate::algo_lib::numbers::primes::factorize::Factorize;
use std::collections::BTreeSet;
type PreCalc = ();
fn solve(input: &mut Input, out: &mut Output, _test_case: usize, _data: &mut PreCalc) {
let n = input.read_size();
let k = input.read_u64();
let b = input.read_u64_vec(n);
let order = b.order();
let mut present = BTreeSet::new();
let mut pairs = Vec::new();
for i in order {
if let Some(&j) = present.prev(&i) {
if b[i] != b[j] {
pairs.push((b[i] - b[j], b[j]));
}
}
if let Some(&j) = present.next(&i) {
if b[i] != b[j] {
pairs.push((b[i] - b[j], b[j]));
}
}
present.insert(i);
}
if pairs.is_empty() {
out.print_line((k, k * (k + 1) / 2));
return;
}
let d = pairs[0].0.divisors();
let mut qty = 0;
let mut sum = 0;
for d in d {
if d <= pairs[0].1 {
continue;
}
let cand = d - pairs[0].1;
if cand > k {
continue;
}
let mut ok = true;
for (diff, start) in pairs.copy_iter() {
if diff % (start + cand) != 0 {
ok = false;
break;
}
}
if ok {
qty += 1;
sum += cand;
}
}
out.print_line((qty, sum));
}
pub static TEST_TYPE: TestType = TestType::MultiNumber;
pub static TASK_TYPE: TaskType = TaskType::Classic;
pub(crate) fn run(mut input: Input, mut output: Output) -> bool {
let mut pre_calc = ();
match TEST_TYPE {
TestType::Single => solve(&mut input, &mut output, 1, &mut pre_calc),
TestType::MultiNumber => {
let t = input.read();
for i in 1..=t {
solve(&mut input, &mut output, i, &mut pre_calc);
}
}
TestType::MultiEof => {
let mut i = 1;
while input.peek().is_some() {
solve(&mut input, &mut output, i, &mut pre_calc);
i += 1;
}
}
}
output.flush();
match TASK_TYPE {
TaskType::Classic => input.is_empty(),
TaskType::Interactive => true,
}
}
fn main() {
let mut sin = std::io::stdin();
let input = crate::algo_lib::io::input::Input::new(&mut sin);
let mut stdout = std::io::stdout();
let output = crate::algo_lib::io::output::Output::new(&mut stdout);
run(input, output);
}
pub mod algo_lib {
pub mod collections {
pub mod bit_set {
use crate::algo_lib::collections::iter_ext::iter_copied::ItersCopied;
use crate::algo_lib::numbers::num_traits::bit_ops::BitOps;
use std::ops::{BitAndAssign, BitOrAssign, BitXorAssign, Index, ShlAssign, ShrAssign};
const TRUE: bool = true;
const FALSE: bool = false;
#[derive(Clone, Eq, PartialEq, Hash)]
pub struct BitSet {
data: Vec<u64>,
len: usize,
}
impl BitSet {
pub fn new(len: usize) -> Self {
let data_len = if len == 0 { 0 } else { Self::index(len - 1) + 1 };
Self {
data: vec![0; data_len],
len,
}
}
pub fn from_slice(len: usize, set: &[usize]) -> Self {
let mut res = Self::new(len);
for &i in set {
res.set(i);
}
res
}
pub fn set(&mut self, at: usize) {
assert!(at < self.len);
self.data[Self::index(at)].set_bit(at & 63);
}
pub fn unset(&mut self, at: usize) {
assert!(at < self.len);
self.data[Self::index(at)].unset_bit(at & 63);
}
pub fn change(&mut self, at: usize, value: bool) {
if value {
self.set(at);
} else {
self.unset(at);
}
}
pub fn flip(&mut self, at: usize) {
self.change(at, !self[at]);
}
#[allow(clippy::len_without_is_empty)]
pub fn len(&self) -> usize {
self.len
}
pub fn fill(&mut self, value: bool) {
self.data.fill(if value { std::u64::MAX } else { 0 });
if value {
self.fix_last();
}
}
pub fn is_superset(&self, other: &Self) -> bool {
assert_eq!(self.len, other.len);
for (we, them) in self.data.copy_zip(&other.data) {
if (we & them) != them {
return false;
}
}
true
}
pub fn is_subset(&self, other: &Self) -> bool {
other.is_superset(self)
}
pub fn iter(&self) -> BitSetIter<'_> {
self.into_iter()
}
fn index(at: usize) -> usize {
at >> 6
}
pub fn count_ones(&self) -> usize {
self.data.iter().map(|x| x.count_ones() as usize).sum()
}
pub fn shift_or(&mut self, rhs: usize) {
if rhs == 0 || rhs >= self.len {
return;
}
let small_shift = rhs & 63;
let big_shift = rhs >> 6;
for i in (0..self.data.len() - big_shift).rev() {
if small_shift != 0 && i + 1 + big_shift < self.data.len() {
let big = self.data[i] >> (64 - small_shift);
self.data[i + 1 + big_shift] |= big;
}
let small = self.data[i] << small_shift;
self.data[i + big_shift] |= small;
}
self.fix_last();
}
fn fix_last(&mut self) {
if self.len & 63 != 0 {
let mask = (1 << (self.len & 63)) - 1;
*self.data.last_mut().unwrap() &= mask;
}
}
}
pub struct BitSetIter<'s> {
at: usize,
inside: usize,
set: &'s BitSet,
}
impl<'s> Iterator for BitSetIter<'s> {
type Item = usize;
fn next(&mut self) -> Option<Self::Item> {
while self.at < self.set.data.len()
&& (self.inside == 64 || (self.set.data[self.at] >> self.inside) == 0)
{
self.at += 1;
self.inside = 0;
}
if self.at == self.set.data.len() {
None
} else {
self.inside
+= (self.set.data[self.at] >> self.inside).trailing_zeros() as usize;
let res = self.at * 64 + self.inside;
self.inside += 1;
Some(res)
}
}
}
impl<'a> IntoIterator for &'a BitSet {
type Item = usize;
type IntoIter = BitSetIter<'a>;
fn into_iter(self) -> Self::IntoIter {
BitSetIter {
at: 0,
inside: 0,
set: self,
}
}
}
impl BitOrAssign<&BitSet> for BitSet {
fn bitor_assign(&mut self, rhs: &BitSet) {
assert_eq!(self.len, rhs.len);
for (i, &j) in self.data.iter_mut().zip(rhs.data.iter()) {
*i |= j;
}
}
}
impl BitAndAssign<&BitSet> for BitSet {
fn bitand_assign(&mut self, rhs: &BitSet) {
assert_eq!(self.len, rhs.len);
for (i, &j) in self.data.iter_mut().zip(rhs.data.iter()) {
*i &= j;
}
}
}
impl BitXorAssign<&BitSet> for BitSet {
fn bitxor_assign(&mut self, rhs: &BitSet) {
assert_eq!(self.len, rhs.len);
for (i, &j) in self.data.iter_mut().zip(rhs.data.iter()) {
*i ^= j;
}
}
}
impl ShlAssign<usize> for BitSet {
fn shl_assign(&mut self, rhs: usize) {
if rhs == 0 {
return;
}
if rhs >= self.len {
self.fill(false);
return;
}
let small_shift = rhs & 63;
if small_shift != 0 {
let mut carry = 0;
for data in self.data.iter_mut() {
let new_carry = (*data) >> (64 - small_shift);
*data <<= small_shift;
*data |= carry;
carry = new_carry;
}
}
let big_shift = rhs >> 6;
if big_shift != 0 {
self.data.rotate_right(big_shift);
self.data[..big_shift].fill(0);
}
self.fix_last();
}
}
impl ShrAssign<usize> for BitSet {
fn shr_assign(&mut self, rhs: usize) {
if rhs == 0 {
return;
}
if rhs >= self.len {
self.fill(false);
return;
}
let small_shift = rhs & 63;
if small_shift != 0 {
let mut carry = 0;
for data in self.data.iter_mut().rev() {
let new_carry = (*data) << (64 - small_shift);
*data >>= small_shift;
*data |= carry;
carry = new_carry;
}
}
let big_shift = rhs >> 6;
if big_shift != 0 {
self.data.rotate_left(big_shift);
let from = self.data.len() - big_shift;
self.data[from..].fill(0);
}
}
}
impl Index<usize> for BitSet {
type Output = bool;
fn index(&self, at: usize) -> &Self::Output {
assert!(at < self.len);
if self.data[Self::index(at)].is_set(at & 63) { &TRUE } else { &FALSE }
}
}
impl From<Vec<bool>> for BitSet {
fn from(data: Vec<bool>) -> Self {
let mut res = Self::new(data.len());
for (i, &value) in data.iter().enumerate() {
res.change(i, value);
}
res
}
}
}
pub mod btree_ext {
use std::collections::{BTreeMap, BTreeSet};
use std::ops::Bound;
pub trait BTreeExt<'a, T> {
type Output;
fn next(&'a self, x: &'a T) -> Option<Self::Output>;
fn prev(&'a self, x: &'a T) -> Option<Self::Output>;
fn ceil(&'a self, x: &'a T) -> Option<Self::Output>;
fn floor(&'a self, x: &'a T) -> Option<Self::Output>;
}
impl<'a, T: Ord + 'a> BTreeExt<'a, T> for BTreeSet<T> {
type Output = &'a T;
fn next(&'a self, x: &'a T) -> Option<Self::Output> {
self.range((Bound::Excluded(x), Bound::Unbounded)).next()
}
fn ceil(&'a self, x: &'a T) -> Option<Self::Output> {
self.range(x..).next()
}
fn prev(&'a self, x: &'a T) -> Option<Self::Output> {
self.range(..x).next_back()
}
fn floor(&'a self, x: &'a T) -> Option<Self::Output> {
self.range(..=x).next_back()
}
}
impl<'a, K: Ord + 'a, V: 'a> BTreeExt<'a, K> for BTreeMap<K, V> {
type Output = (&'a K, &'a V);
fn next(&'a self, x: &'a K) -> Option<Self::Output> {
self.range((Bound::Excluded(x), Bound::Unbounded)).next()
}
fn ceil(&'a self, x: &'a K) -> Option<Self::Output> {
self.range(x..).next()
}
fn prev(&'a self, x: &'a K) -> Option<Self::Output> {
self.range(..x).next_back()
}
fn floor(&'a self, x: &'a K) -> Option<Self::Output> {
self.range(..=x).next_back()
}
}
}
pub mod fx_hash_map {
use crate::algo_lib::misc::lazy_lock::LazyLock;
use std::convert::TryInto;
use std::time::SystemTime;
use std::{
collections::{HashMap, HashSet},
hash::{BuildHasherDefault, Hasher},
ops::BitXor,
};
pub type FxHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FxHasher>>;
pub type FxHashSet<V> = HashSet<V, BuildHasherDefault<FxHasher>>;
#[derive(Default)]
pub struct FxHasher {
hash: usize,
}
static K: LazyLock<usize> = LazyLock::new(|| {
((SystemTime::UNIX_EPOCH.elapsed().unwrap().as_nanos().wrapping_mul(2) + 1)
& 0xFFFFFFFFFFFFFFFF) as usize
});
impl FxHasher {
#[inline]
fn add_to_hash(&mut self, i: usize) {
self.hash = self.hash.rotate_left(5).bitxor(i).wrapping_mul(*K);
}
}
impl Hasher for FxHasher {
#[inline]
fn write(&mut self, mut bytes: &[u8]) {
let read_usize = |bytes: &[u8]| u64::from_ne_bytes(
bytes[..8].try_into().unwrap(),
);
let mut hash = FxHasher { hash: self.hash };
while bytes.len() >= 8 {
hash.add_to_hash(read_usize(bytes) as usize);
bytes = &bytes[8..];
}
if bytes.len() >= 4 {
hash.add_to_hash(
u32::from_ne_bytes(bytes[..4].try_into().unwrap()) as usize,
);
bytes = &bytes[4..];
}
if bytes.len() >= 2 {
hash.add_to_hash(
u16::from_ne_bytes(bytes[..2].try_into().unwrap()) as usize,
);
bytes = &bytes[2..];
}
if !bytes.is_empty() {
hash.add_to_hash(bytes[0] as usize);
}
self.hash = hash.hash;
}
#[inline]
fn write_u8(&mut self, i: u8) {
self.add_to_hash(i as usize);
}
#[inline]
fn write_u16(&mut self, i: u16) {
self.add_to_hash(i as usize);
}
#[inline]
fn write_u32(&mut self, i: u32) {
self.add_to_hash(i as usize);
}
#[inline]
fn write_u64(&mut self, i: u64) {
self.add_to_hash(i as usize);
}
#[inline]
fn write_usize(&mut self, i: usize) {
self.add_to_hash(i);
}
#[inline]
fn finish(&self) -> u64 {
self.hash as u64
}
}
}
pub mod iter_ext {
pub mod iter_copied {
use std::iter::{
Chain, Copied, Enumerate, Filter, Map, Rev, Skip, StepBy, Sum, Take, Zip,
};
pub trait ItersCopied<'a, T: 'a + Copy>: Sized + 'a
where
&'a Self: IntoIterator<Item = &'a T>,
{
fn copy_iter(&'a self) -> Copied<<&'a Self as IntoIterator>::IntoIter> {
self.into_iter().copied()
}
fn copy_enumerate(
&'a self,
) -> Enumerate<Copied<<&'a Self as IntoIterator>::IntoIter>> {
self.copy_iter().enumerate()
}
fn copy_rev(&'a self) -> Rev<Copied<<&'a Self as IntoIterator>::IntoIter>>
where
Copied<<&'a Self as IntoIterator>::IntoIter>: DoubleEndedIterator,
{
self.copy_iter().rev()
}
fn copy_skip(
&'a self,
n: usize,
) -> Skip<Copied<<&'a Self as IntoIterator>::IntoIter>> {
self.copy_iter().skip(n)
}
fn copy_take(
&'a self,
n: usize,
) -> Take<Copied<<&'a Self as IntoIterator>::IntoIter>> {
self.copy_iter().take(n)
}
fn copy_chain<V>(
&'a self,
chained: &'a V,
) -> Chain<
Copied<<&'a Self as IntoIterator>::IntoIter>,
Copied<<&'a V as IntoIterator>::IntoIter>,
>
where
&'a V: IntoIterator<Item = &'a T>,
{
self.copy_iter().chain(chained.into_iter().copied())
}
fn copy_zip<V>(
&'a self,
other: &'a V,
) -> Zip<
Copied<<&'a Self as IntoIterator>::IntoIter>,
Copied<<&'a V as IntoIterator>::IntoIter>,
>
where
&'a V: IntoIterator<Item = &'a T>,
{
self.copy_iter().zip(other.into_iter().copied())
}
fn copy_max(&'a self) -> T
where
T: Ord,
{
self.copy_iter().max().unwrap()
}
fn copy_max_by_key<B, F>(&'a self, f: F) -> T
where
F: FnMut(&T) -> B,
B: Ord,
{
self.copy_iter().max_by_key(f).unwrap()
}
fn copy_min(&'a self) -> T
where
T: Ord,
{
self.copy_iter().min().unwrap()
}
fn copy_min_by_key<B, F>(&'a self, f: F) -> T
where
F: FnMut(&T) -> B,
B: Ord,
{
self.copy_iter().min_by_key(f).unwrap()
}
fn copy_sum(&'a self) -> T
where
T: Sum<T>,
{
self.copy_iter().sum()
}
fn copy_map<F, U>(
&'a self,
f: F,
) -> Map<Copied<<&'a Self as IntoIterator>::IntoIter>, F>
where
F: FnMut(T) -> U,
{
self.copy_iter().map(f)
}
fn copy_all(&'a self, f: impl FnMut(T) -> bool) -> bool {
self.copy_iter().all(f)
}
fn copy_any(&'a self, f: impl FnMut(T) -> bool) -> bool {
self.copy_iter().any(f)
}
fn copy_step_by(
&'a self,
step: usize,
) -> StepBy<Copied<<&'a Self as IntoIterator>::IntoIter>> {
self.copy_iter().step_by(step)
}
fn copy_filter<F: FnMut(&T) -> bool>(
&'a self,
f: F,
) -> Filter<Copied<<&'a Self as IntoIterator>::IntoIter>, F> {
self.copy_iter().filter(f)
}
fn copy_fold<Acc, F>(&'a self, init: Acc, f: F) -> Acc
where
F: FnMut(Acc, T) -> Acc,
{
self.copy_iter().fold(init, f)
}
fn copy_reduce<F>(&'a self, f: F) -> Option<T>
where
F: FnMut(T, T) -> T,
{
self.copy_iter().reduce(f)
}
fn copy_position<P>(&'a self, predicate: P) -> Option<usize>
where
P: FnMut(T) -> bool,
{
self.copy_iter().position(predicate)
}
fn copy_find(&'a self, val: T) -> Option<usize>
where
T: PartialEq,
{
self.copy_iter().position(|x| x == val)
}
fn copy_count(&'a self, val: T) -> usize
where
T: PartialEq,
{
self.copy_iter().filter(|&x| x == val).count()
}
}
impl<'a, U: 'a, T: 'a + Copy> ItersCopied<'a, T> for U
where
&'a U: IntoIterator<Item = &'a T>,
{}
}
}
pub mod order {
pub trait Order {
fn order(&self) -> Vec<usize>;
}
impl<T: Ord> Order for [T] {
fn order(&self) -> Vec<usize> {
let mut order = (0..self.len()).collect::<Vec<usize>>();
order.sort_by_key(|&i| &self[i]);
order
}
}
}
pub mod slice_ext {
pub mod indices {
use std::ops::Range;
pub trait Indices {
fn indices(&self) -> Range<usize>;
}
impl<T> Indices for [T] {
fn indices(&self) -> Range<usize> {
0..self.len()
}
}
}
}
pub mod vec_ext {
pub mod default {
pub fn default_vec<T: Default>(len: usize) -> Vec<T> {
let mut v = Vec::with_capacity(len);
for _ in 0..len {
v.push(T::default());
}
v
}
}
pub mod sorted {
pub trait Sorted {
fn sorted(self) -> Self;
}
impl<T: Ord> Sorted for Vec<T> {
fn sorted(mut self) -> Self {
self.sort();
self
}
}
}
}
}
pub mod io {
pub mod input {
use crate::algo_lib::collections::vec_ext::default::default_vec;
use std::io::Read;
use std::mem::MaybeUninit;
pub struct Input<'s> {
input: &'s mut (dyn Read + Send),
buf: Vec<u8>,
at: usize,
buf_read: usize,
eol: bool,
}
macro_rules! read_impl {
($t:ty, $read_name:ident, $read_vec_name:ident) => {
pub fn $read_name (& mut self) -> $t { self.read() } pub fn $read_vec_name (& mut
self, len : usize) -> Vec <$t > { self.read_vec(len) }
};
($t:ty, $read_name:ident, $read_vec_name:ident, $read_pair_vec_name:ident) => {
read_impl!($t, $read_name, $read_vec_name); pub fn $read_pair_vec_name (& mut
self, len : usize) -> Vec < ($t, $t) > { self.read_vec(len) }
};
}
impl<'s> Input<'s> {
const DEFAULT_BUF_SIZE: usize = 4096;
pub fn new(input: &'s mut (dyn Read + Send)) -> Self {
Self {
input,
buf: default_vec(Self::DEFAULT_BUF_SIZE),
at: 0,
buf_read: 0,
eol: true,
}
}
pub fn new_with_size(input: &'s mut (dyn Read + Send), buf_size: usize) -> Self {
Self {
input,
buf: default_vec(buf_size),
at: 0,
buf_read: 0,
eol: true,
}
}
pub fn get(&mut self) -> Option<u8> {
if self.refill_buffer() {
let res = self.buf[self.at];
self.at += 1;
if res == b'\r' {
self.eol = true;
if self.refill_buffer() && self.buf[self.at] == b'\n' {
self.at += 1;
}
return Some(b'\n');
}
self.eol = res == b'\n';
Some(res)
} else {
None
}
}
pub fn peek(&mut self) -> Option<u8> {
if self.refill_buffer() {
let res = self.buf[self.at];
Some(if res == b'\r' { b'\n' } else { res })
} else {
None
}
}
pub fn skip_whitespace(&mut self) {
while let Some(b) = self.peek() {
if !b.is_ascii_whitespace() {
return;
}
self.get();
}
}
pub fn next_token(&mut self) -> Option<Vec<u8>> {
self.skip_whitespace();
let mut res = Vec::new();
while let Some(c) = self.get() {
if c.is_ascii_whitespace() {
break;
}
res.push(c);
}
if res.is_empty() { None } else { Some(res) }
}
pub fn is_exhausted(&mut self) -> bool {
self.peek().is_none()
}
pub fn is_empty(&mut self) -> bool {
self.skip_whitespace();
self.is_exhausted()
}
pub fn read<T: Readable>(&mut self) -> T {
T::read(self)
}
pub fn read_vec<T: Readable>(&mut self, size: usize) -> Vec<T> {
let mut res = Vec::with_capacity(size);
for _ in 0..size {
res.push(self.read());
}
res
}
pub fn read_char(&mut self) -> u8 {
self.skip_whitespace();
self.get().unwrap()
}
read_impl!(u32, read_unsigned, read_unsigned_vec);
read_impl!(u64, read_u64, read_u64_vec);
read_impl!(usize, read_size, read_size_vec, read_size_pair_vec);
read_impl!(i32, read_int, read_int_vec, read_int_pair_vec);
read_impl!(i64, read_long, read_long_vec, read_long_pair_vec);
read_impl!(i128, read_i128, read_i128_vec);
fn refill_buffer(&mut self) -> bool {
if self.at == self.buf_read {
self.at = 0;
self.buf_read = self.input.read(&mut self.buf).unwrap();
self.buf_read != 0
} else {
true
}
}
pub fn is_eol(&self) -> bool {
self.eol
}
}
pub trait Readable {
fn read(input: &mut Input) -> Self;
}
impl Readable for u8 {
fn read(input: &mut Input) -> Self {
input.read_char()
}
}
impl<T: Readable> Readable for Vec<T> {
fn read(input: &mut Input) -> Self {
let size = input.read();
input.read_vec(size)
}
}
impl<T: Readable, const SIZE: usize> Readable for [T; SIZE] {
fn read(input: &mut Input) -> Self {
unsafe {
let mut res = MaybeUninit::<[T; SIZE]>::uninit();
for i in 0..SIZE {
let ptr: *mut T = (*res.as_mut_ptr()).as_mut_ptr();
ptr.add(i).write(input.read::<T>());
}
res.assume_init()
}
}
}
macro_rules! read_integer {
($($t:ident)+) => {
$(impl Readable for $t { fn read(input : & mut Input) -> Self { input
.skip_whitespace(); let mut c = input.get().unwrap(); let sgn = match c { b'-' =>
{ c = input.get().unwrap(); true } b'+' => { c = input.get().unwrap(); false } _
=> false, }; let mut res = 0; loop { assert!(c.is_ascii_digit()); res *= 10; let
d = (c - b'0') as $t; if sgn { res -= d; } else { res += d; } match input.get() {
None => break, Some(ch) => { if ch.is_ascii_whitespace() { break; } else { c =
ch; } } } } res } })+
};
}
read_integer!(i8 i16 i32 i64 i128 isize u16 u32 u64 u128 usize);
macro_rules! tuple_readable {
($($name:ident)+) => {
impl <$($name : Readable),+> Readable for ($($name,)+) { fn read(input : & mut
Input) -> Self { ($($name ::read(input),)+) } }
};
}
tuple_readable! {
T
}
tuple_readable! {
T U
}
tuple_readable! {
T U V
}
tuple_readable! {
T U V X
}
tuple_readable! {
T U V X Y
}
tuple_readable! {
T U V X Y Z
}
tuple_readable! {
T U V X Y Z A
}
tuple_readable! {
T U V X Y Z A B
}
tuple_readable! {
T U V X Y Z A B C
}
tuple_readable! {
T U V X Y Z A B C D
}
tuple_readable! {
T U V X Y Z A B C D E
}
tuple_readable! {
T U V X Y Z A B C D E F
}
}
pub mod output {
use crate::algo_lib::collections::vec_ext::default::default_vec;
use std::cmp::Reverse;
use std::io::{stderr, Stderr, Write};
#[derive(Copy, Clone)]
pub enum BoolOutput {
YesNo,
YesNoCaps,
PossibleImpossible,
Custom(&'static str, &'static str),
}
impl BoolOutput {
pub fn output(&self, output: &mut Output, val: bool) {
(if val { self.yes() } else { self.no() }).write(output);
}
fn yes(&self) -> &str {
match self {
BoolOutput::YesNo => "Yes",
BoolOutput::YesNoCaps => "YES",
BoolOutput::PossibleImpossible => "Possible",
BoolOutput::Custom(yes, _) => yes,
}
}
fn no(&self) -> &str {
match self {
BoolOutput::YesNo => "No",
BoolOutput::YesNoCaps => "NO",
BoolOutput::PossibleImpossible => "Impossible",
BoolOutput::Custom(_, no) => no,
}
}
}
pub struct Output<'s> {
output: &'s mut dyn Write,
buf: Vec<u8>,
at: usize,
auto_flush: bool,
bool_output: BoolOutput,
precision: Option<usize>,
separator: u8,
}
impl<'s> Output<'s> {
const DEFAULT_BUF_SIZE: usize = 4096;
pub fn new(output: &'s mut dyn Write) -> Self {
Self {
output,
buf: default_vec(Self::DEFAULT_BUF_SIZE),
at: 0,
auto_flush: false,
bool_output: BoolOutput::YesNoCaps,
precision: None,
separator: b' ',
}
}
pub fn new_with_auto_flush(output: &'s mut dyn Write) -> Self {
Self {
output,
buf: default_vec(Self::DEFAULT_BUF_SIZE),
at: 0,
auto_flush: true,
bool_output: BoolOutput::YesNoCaps,
precision: None,
separator: b' ',
}
}
pub fn flush(&mut self) {
if self.at != 0 {
self.output.write_all(&self.buf[..self.at]).unwrap();
self.output.flush().unwrap();
self.at = 0;
}
}
pub fn print<T: Writable>(&mut self, s: T) {
s.write(self);
self.maybe_flush();
}
pub fn print_line<T: Writable>(&mut self, s: T) {
self.print(s);
self.put(b'\n');
self.maybe_flush();
}
pub fn put(&mut self, b: u8) {
self.buf[self.at] = b;
self.at += 1;
if self.at == self.buf.len() {
self.flush();
}
}
pub fn maybe_flush(&mut self) {
if self.auto_flush {
self.flush();
}
}
pub fn print_per_line<T: Writable>(&mut self, arg: &[T]) {
self.print_per_line_iter(arg.iter());
}
pub fn print_iter<T: Writable, I: Iterator<Item = T>>(&mut self, iter: I) {
let mut first = true;
for e in iter {
if first {
first = false;
} else {
self.put(self.separator);
}
e.write(self);
}
}
pub fn print_line_iter<T: Writable, I: Iterator<Item = T>>(&mut self, iter: I) {
self.print_iter(iter);
self.put(b'\n');
}
pub fn print_per_line_iter<T: Writable, I: Iterator<Item = T>>(&mut self, iter: I) {
for e in iter {
e.write(self);
self.put(b'\n');
}
}
pub fn set_bool_output(&mut self, bool_output: BoolOutput) {
self.bool_output = bool_output;
}
pub fn set_precision(&mut self, precision: usize) {
self.precision = Some(precision);
}
pub fn reset_precision(&mut self) {
self.precision = None;
}
pub fn get_precision(&self) -> Option<usize> {
self.precision
}
pub fn separator(&self) -> u8 {
self.separator
}
pub fn set_separator(&mut self, separator: u8) {
self.separator = separator;
}
}
impl Write for Output<'_> {
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
let mut start = 0usize;
let mut rem = buf.len();
while rem > 0 {
let len = (self.buf.len() - self.at).min(rem);
self.buf[self.at..self.at + len].copy_from_slice(&buf[start..start + len]);
self.at += len;
if self.at == self.buf.len() {
self.flush();
}
start += len;
rem -= len;
}
self.maybe_flush();
Ok(buf.len())
}
fn flush(&mut self) -> std::io::Result<()> {
self.flush();
Ok(())
}
}
pub trait Writable {
fn write(&self, output: &mut Output);
}
impl Writable for &str {
fn write(&self, output: &mut Output) {
output.write_all(self.as_bytes()).unwrap();
}
}
impl Writable for String {
fn write(&self, output: &mut Output) {
output.write_all(self.as_bytes()).unwrap();
}
}
impl Writable for char {
fn write(&self, output: &mut Output) {
output.put(*self as u8);
}
}
impl Writable for u8 {
fn write(&self, output: &mut Output) {
output.put(*self);
}
}
impl<T: Writable> Writable for [T] {
fn write(&self, output: &mut Output) {
output.print_iter(self.iter());
}
}
impl<T: Writable, const N: usize> Writable for [T; N] {
fn write(&self, output: &mut Output) {
output.print_iter(self.iter());
}
}
impl<T: Writable + ?Sized> Writable for &T {
fn write(&self, output: &mut Output) {
T::write(self, output)
}
}
impl<T: Writable> Writable for Vec<T> {
fn write(&self, output: &mut Output) {
self.as_slice().write(output);
}
}
impl Writable for () {
fn write(&self, _output: &mut Output) {}
}
macro_rules! write_to_string {
($($t:ident)+) => {
$(impl Writable for $t { fn write(& self, output : & mut Output) { self
.to_string().write(output); } })+
};
}
write_to_string!(u16 u32 u64 u128 usize i8 i16 i32 i64 i128 isize);
macro_rules! tuple_writable {
($name0:ident $($name:ident : $id:tt)*) => {
impl <$name0 : Writable, $($name : Writable,)*> Writable for ($name0, $($name,)*)
{ fn write(& self, out : & mut Output) { self.0.write(out); $(out.put(out
.separator); self.$id .write(out);)* } }
};
}
tuple_writable! {
T
}
tuple_writable! {
T U : 1
}
tuple_writable! {
T U : 1 V : 2
}
tuple_writable! {
T U : 1 V : 2 X : 3
}
tuple_writable! {
T U : 1 V : 2 X : 3 Y : 4
}
tuple_writable! {
T U : 1 V : 2 X : 3 Y : 4 Z : 5
}
tuple_writable! {
T U : 1 V : 2 X : 3 Y : 4 Z : 5 A : 6
}
tuple_writable! {
T U : 1 V : 2 X : 3 Y : 4 Z : 5 A : 6 B : 7
}
tuple_writable! {
T U : 1 V : 2 X : 3 Y : 4 Z : 5 A : 6 B : 7 C : 8
}
impl<T: Writable> Writable for Option<T> {
fn write(&self, output: &mut Output) {
match self {
None => (-1).write(output),
Some(t) => t.write(output),
}
}
}
impl Writable for bool {
fn write(&self, output: &mut Output) {
let bool_output = output.bool_output;
bool_output.output(output, *self)
}
}
impl<T: Writable> Writable for Reverse<T> {
fn write(&self, output: &mut Output) {
self.0.write(output);
}
}
static mut ERR: Option<Stderr> = None;
pub fn err() -> Output<'static> {
unsafe {
if ERR.is_none() {
ERR = Some(stderr());
}
Output::new_with_auto_flush(ERR.as_mut().unwrap())
}
}
}
}
pub mod misc {
pub mod lazy_lock {
use std::cell::UnsafeCell;
use std::mem::ManuallyDrop;
use std::ops::Deref;
use std::sync::Once;
union Data<T, F> {
value: ManuallyDrop<T>,
f: ManuallyDrop<F>,
}
pub struct LazyLock<T, F = fn() -> T> {
once: Once,
data: UnsafeCell<Data<T, F>>,
}
impl<T, F: FnOnce() -> T> LazyLock<T, F> {
#[inline]
pub const fn new(f: F) -> LazyLock<T, F> {
LazyLock {
once: Once::new(),
data: UnsafeCell::new(Data { f: ManuallyDrop::new(f) }),
}
}
#[inline]
pub fn force(this: &LazyLock<T, F>) -> &T {
this.once
.call_once(|| {
let data = unsafe { &mut *this.data.get() };
let f = unsafe { ManuallyDrop::take(&mut data.f) };
let value = f();
data.value = ManuallyDrop::new(value);
});
unsafe { &(*this.data.get()).value }
}
}
impl<T, F: FnOnce() -> T> Deref for LazyLock<T, F> {
type Target = T;
#[inline]
fn deref(&self) -> &T {
LazyLock::force(self)
}
}
unsafe impl<T: Sync + Send, F: Send> Sync for LazyLock<T, F> {}
}
pub mod random {
use crate::algo_lib::collections::slice_ext::indices::Indices;
use crate::algo_lib::numbers::num_traits::algebra::IntegerSemiRingWithSub;
use crate::algo_lib::numbers::num_traits::ord::MinMax;
use crate::algo_lib::numbers::num_traits::primitive::Primitive;
use std::cell::RefCell;
use std::ops::{RangeBounds, Rem};
use std::time::SystemTime;
pub trait RandomTrait {
fn gen_impl(&mut self) -> u64;
fn gen<T>(&mut self) -> T
where
u64: Primitive<T>,
{
self.gen_impl().to()
}
fn gen_u128(&mut self) -> u128 {
(self.gen_impl() as u128) << 64 | self.gen_impl() as u128
}
fn gen_i128(&mut self) -> i128 {
self.gen_u128() as i128
}
fn gen_bool(&mut self) -> bool {
(self.gen_impl() & 1) == 1
}
fn gen_bound<T: Rem<Output = T> + Primitive<u64>>(&mut self, n: T) -> T
where
u64: Primitive<T>,
{
(self.gen_impl() % n.to()).to()
}
fn gen_range<T: IntegerSemiRingWithSub + Primitive<u64> + MinMax>(
&mut self,
range: impl RangeBounds<T>,
) -> T
where
u64: Primitive<T>,
{
let f = match range.start_bound() {
std::ops::Bound::Included(&s) => s,
std::ops::Bound::Excluded(&s) => s + T::one(),
std::ops::Bound::Unbounded => T::min_val(),
};
let t = match range.end_bound() {
std::ops::Bound::Included(&e) => e,
std::ops::Bound::Excluded(&e) => e - T::one(),
std::ops::Bound::Unbounded => T::max_val(),
};
if f == T::min_val() && t == T::max_val() {
self.gen()
} else {
f + self.gen_bound(t - f + T::one())
}
}
}
const NN: usize = 312;
const MM: usize = 156;
const MATRIX_A: u64 = 0xB5026F5AA96619E9;
const UM: u64 = 0xFFFFFFFF80000000;
const LM: u64 = 0x7FFFFFFF;
const F: u64 = 6364136223846793005;
const MAG01: [u64; 2] = [0, MATRIX_A];
pub struct Random {
mt: [u64; NN],
index: usize,
}
impl Random {
pub fn new() -> Self {
Self::new_with_seed(
(SystemTime::UNIX_EPOCH.elapsed().unwrap().as_nanos() & 0xFFFFFFFFFFFFFFFF)
as u64,
)
}
pub fn new_with_seed(seed: u64) -> Self {
let mut res = Self { mt: [0u64; NN], index: NN };
res.mt[0] = seed;
for i in 1..NN {
res.mt[i] = F
.wrapping_mul(res.mt[i - 1] ^ (res.mt[i - 1] >> 62))
.wrapping_add(i as u64);
}
res
}
}
impl Default for Random {
fn default() -> Self {
Self::new()
}
}
impl RandomTrait for Random {
fn gen_impl(&mut self) -> u64 {
if self.index == NN {
for i in 0..(NN - MM) {
let x = (self.mt[i] & UM) | (self.mt[i + 1] & LM);
self.mt[i] = self.mt[i + MM] ^ (x >> 1) ^ MAG01[(x & 1) as usize];
}
for i in (NN - MM)..(NN - 1) {
let x = (self.mt[i] & UM) | (self.mt[i + 1] & LM);
self.mt[i] = self.mt[i + MM - NN] ^ (x >> 1) ^ MAG01[(x & 1) as usize];
}
let x = (self.mt[NN - 1] & UM) | (self.mt[0] & LM);
self.mt[NN - 1] = self.mt[MM - 1] ^ (x >> 1) ^ MAG01[(x & 1) as usize];
self.index = 0;
}
let mut x = self.mt[self.index];
self.index += 1;
x ^= (x >> 29) & 0x5555555555555555;
x ^= (x << 17) & 0x71D67FFFEDA60000;
x ^= (x << 37) & 0xFFF7EEE000000000;
x ^= x >> 43;
x
}
}
thread_local! {
static RANDOM : RefCell < Random > = RefCell::new(Random::new());
}
pub struct StaticRandom;
impl RandomTrait for StaticRandom {
fn gen_impl(&mut self) -> u64 {
RANDOM.with(|r| r.borrow_mut().gen_impl())
}
}
pub trait Shuffle {
fn shuffle(&mut self);
}
impl<T> Shuffle for [T] {
fn shuffle(&mut self) {
for i in self.indices() {
let at = StaticRandom.gen_bound(i + 1);
self.swap(i, at);
}
}
}
}
pub mod recursive_function {
use std::marker::PhantomData;
macro_rules! recursive_function {
($name:ident, $trait:ident, ($($type:ident $arg:ident,)*)) => {
pub trait $trait <$($type,)* Output > { fn call(& mut self, $($arg : $type,)*) ->
Output; } pub struct $name < F, $($type,)* Output > where F : FnMut(& mut dyn
$trait <$($type,)* Output >, $($type,)*) -> Output, { f : std::cell::UnsafeCell <
F >, $($arg : PhantomData <$type >,)* phantom_output : PhantomData < Output >, }
impl < F, $($type,)* Output > $name < F, $($type,)* Output > where F : FnMut(&
mut dyn $trait <$($type,)* Output >, $($type,)*) -> Output, { pub fn new(f : F)
-> Self { Self { f : std::cell::UnsafeCell::new(f), $($arg :
Default::default(),)* phantom_output : Default::default(), } } } impl < F,
$($type,)* Output > $trait <$($type,)* Output > for $name < F, $($type,)* Output
> where F : FnMut(& mut dyn $trait <$($type,)* Output >, $($type,)*) -> Output, {
fn call(& mut self, $($arg : $type,)*) -> Output { unsafe { (* self.f.get())
(self, $($arg,)*) } } }
};
}
recursive_function!(RecursiveFunction0, Callable0, ());
recursive_function!(RecursiveFunction, Callable, (Arg arg,));
recursive_function!(RecursiveFunction2, Callable2, (Arg1 arg1, Arg2 arg2,));
recursive_function!(RecursiveFunction3, Callable3, (Arg1 arg1, Arg2 arg2, Arg3 arg3,));
recursive_function!(
RecursiveFunction4, Callable4, (Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4,)
);
recursive_function!(
RecursiveFunction5, Callable5, (Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5
arg5,)
);
recursive_function!(
RecursiveFunction6, Callable6, (Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5
arg5, Arg6 arg6,)
);
recursive_function!(
RecursiveFunction7, Callable7, (Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5
arg5, Arg6 arg6, Arg7 arg7,)
);
recursive_function!(
RecursiveFunction8, Callable8, (Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5
arg5, Arg6 arg6, Arg7 arg7, Arg8 arg8,)
);
recursive_function!(
RecursiveFunction9, Callable9, (Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5
arg5, Arg6 arg6, Arg7 arg7, Arg8 arg8, Arg9 arg9,)
);
}
pub mod test_type {
pub enum TestType {
Single,
MultiNumber,
MultiEof,
}
pub enum TaskType {
Classic,
Interactive,
}
}
pub mod value {
use std::hash::Hash;
pub trait Value<T>: Copy + Eq + Hash {
fn val() -> T;
}
pub trait ConstValue<T>: Value<T> {
const VAL: T;
}
impl<T, V: ConstValue<T>> Value<T> for V {
fn val() -> T {
Self::VAL
}
}
#[macro_export]
macro_rules! value {
($name:ident : $t:ty = $val:expr) => {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Ord, PartialOrd, Default)] pub struct
$name {} impl $crate ::algo_lib::misc::value::ConstValue <$t > for $name { const
VAL : $t = $val; }
};
}
pub trait DynamicValue<T>: Value<T> {
fn set_val(t: T);
}
#[macro_export]
macro_rules! dynamic_value {
($name:ident : $t:ty) => {
#[allow(non_upper_case_globals)] static mut $name : Option <$t > = None;
#[derive(Copy, Clone, Eq, PartialEq, Hash, Default)] struct $name {} impl $crate
::algo_lib::misc::value::DynamicValue <$t > for $name { fn set_val(t : $t) {
unsafe { $name = Some(t); } } } impl $crate ::algo_lib::misc::value::Value <$t >
for $name { fn val() -> $t { unsafe { $name .unwrap() } } }
};
($name:ident : $t:ty = $val:expr) => {
dynamic_value!($name : $t); <$name as $crate
::algo_lib::misc::value::DynamicValue <$t >>::set_val($val);
};
}
}
pub mod when {
#[macro_export]
macro_rules! when {
{$($cond:expr => $then:expr,)*} => {
match () { $(_ if $cond => $then,)* _ => unreachable!(), }
};
{$($cond:expr => $then:expr,)* else $(=>)? $else:expr $(,)?} => {
match () { $(_ if $cond => $then,)* _ => $else, }
};
}
}
}
pub mod numbers {
pub mod gcd {
use crate::algo_lib::numbers::num_traits::algebra::{
IntegerMultiplicationMonoid, IntegerSemiRingWithSub, Zero,
};
use std::mem::swap;
pub fn extended_gcd<T: IntegerSemiRingWithSub + Copy>(a: T, b: T) -> (T, T, T) {
if a == T::zero() {
(b, T::zero(), T::one())
} else {
let (d, y, mut x) = extended_gcd(b % a, a);
x -= b / a * y;
(d, x, y)
}
}
pub fn gcd<T: Copy + Zero + IntegerMultiplicationMonoid>(mut a: T, mut b: T) -> T {
while b != T::zero() {
a %= b;
swap(&mut a, &mut b);
}
a
}
pub fn lcm<T: Copy + Zero + IntegerMultiplicationMonoid>(a: T, b: T) -> T {
(a / gcd(a, b)) * b
}
pub fn remainder<T: IntegerSemiRingWithSub + Copy>(
a1: T,
n1: T,
a2: T,
n2: T,
) -> Option<T> {
let (d, m1, m2) = extended_gcd(n1, n2);
if (a2 - a1) % d != T::zero() {
return None;
}
let m = lcm(n1, n2);
Some(((a1 * m2) % n1 * n2 + (a2 * m1) % n2 * n1) % m)
}
}
pub mod mod_int {
use crate::algo_lib::collections::fx_hash_map::FxHashMap;
use crate::algo_lib::io::input::{Input, Readable};
use crate::algo_lib::io::output::{Output, Writable};
use crate::algo_lib::misc::value::Value;
use crate::algo_lib::numbers::gcd::extended_gcd;
use crate::algo_lib::numbers::num_traits::algebra::{Field, One, Zero};
use crate::algo_lib::numbers::num_traits::as_index::AsIndex;
use crate::algo_lib::numbers::num_traits::invertible::Invertible;
use crate::{value, when};
use std::fmt::{Display, Formatter};
use std::hash::Hash;
use std::marker::PhantomData;
use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign};
pub trait BaseModInt<T>: Field + Copy {
fn from(v: T) -> Self;
fn module() -> T;
fn value(&self) -> T;
}
macro_rules! mod_int {
($name:ident, $t:ty, $s:ty, $w:ty) => {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Default)] pub struct $name < V : Value
<$t >> { n : $t, phantom : PhantomData < V >, } impl < V : Value <$t >> $name < V
> { unsafe fn unchecked_new(n : $t) -> Self { debug_assert!(n < V::val()); Self {
n, phantom : Default::default(), } } unsafe fn maybe_subtract_mod(mut n : $t) ->
$t { debug_assert!(n < 2 * V::val()); if n >= V::val() { n -= V::val(); } n } }
impl < V : Value <$t >> $name < V > { pub fn new(n : $t) -> Self { unsafe {
Self::unchecked_new(n % (V::val())) } } pub fn new_signed(n : $s) -> Self {
unsafe { Self::unchecked_new(Self::maybe_subtract_mod((n % (V::val() as $s) +
V::val() as $s) as $t,)) } } pub fn val(& self) -> $t { self.n } } impl < V :
Value <$t >> $name < V > { pub fn log(& self, alpha : Self) -> $t { let mut base
= FxHashMap::default(); let mut exp = 0; let mut pow = Self::one(); let mut inv =
* self; let alpha_inv = alpha.inv().unwrap(); while exp * exp < Self::module() {
if inv == Self::one() { return exp; } base.insert(inv, exp); exp += 1; pow *=
alpha; inv *= alpha_inv; } let step = pow; let mut i = 1; loop { if let Some(b) =
base.get(& pow) { break exp * i + * b; } pow *= step; i += 1; } } } impl < V :
Value <$t >> $name < V > { pub fn new_from_wide(n : $w) -> Self { unsafe {
Self::unchecked_new(Self::maybe_subtract_mod((n % V::val() as $w + V::val() as
$w) as $t,)) } } } impl < V : Value <$t >> Invertible for $name < V > { type
Output = Self; fn inv(& self) -> Option < Self > { let (g, x, _) =
extended_gcd(self.n as $w, V::val() as $w); if g != 1 { None } else {
Some(Self::new_from_wide(x)) } } } impl < V : Value <$t >> BaseModInt <$t > for
$name < V > { fn from(v : $t) -> Self { Self::new(v) } fn module() -> $t {
V::val() } fn value(& self) -> $t { self.n } } impl < V : Value <$t >> From <$t >
for $name < V > { fn from(n : $t) -> Self { Self::new(n) } } impl < V : Value <$t
>> AddAssign for $name < V > { fn add_assign(& mut self, rhs : Self) { self.n =
unsafe { Self::maybe_subtract_mod(self.n + rhs.n) }; } } impl < V : Value <$t >>
Add for $name < V > { type Output = Self; fn add(mut self, rhs : Self) ->
Self::Output { self += rhs; self } } impl < V : Value <$t >> SubAssign for $name
< V > { fn sub_assign(& mut self, rhs : Self) { self.n = unsafe {
Self::maybe_subtract_mod(self.n + V::val() - rhs.n) }; } } impl < V : Value <$t
>> Sub for $name < V > { type Output = Self; fn sub(mut self, rhs : Self) ->
Self::Output { self -= rhs; self } } impl < V : Value <$t >> MulAssign for $name
< V > { fn mul_assign(& mut self, rhs : Self) { self.n = ((self.n as $w) * (rhs.n
as $w) % (V::val() as $w)) as $t; } } impl < V : Value <$t >> Mul for $name < V >
{ type Output = Self; fn mul(mut self, rhs : Self) -> Self::Output { self *= rhs;
self } } impl < V : Value <$t >> DivAssign for $name < V > {
#[allow(clippy::suspicious_op_assign_impl)] fn div_assign(& mut self, rhs : Self)
{ * self *= rhs.inv().unwrap(); } } impl < V : Value <$t >> Div for $name < V > {
type Output = Self; fn div(mut self, rhs : Self) -> Self::Output { self /= rhs;
self } } impl < V : Value <$t >> Neg for $name < V > { type Output = Self; fn
neg(mut self) -> Self::Output { if self.n != 0 { self.n = V::val() - self.n; }
self } } impl < V : Value <$t >> Display for $name < V > { fn fmt(& self, f : &
mut Formatter <'_ >) -> std::fmt::Result { <$t as Display >::fmt(& self.n, f) } }
impl < V : Value <$t >> Readable for $name < V > { fn read(input : & mut Input)
-> Self { Self::new(input.read()) } } impl < V : Value <$t >> Writable for $name
< V > { fn write(& self, output : & mut Output) { self.n.write(output); } } impl
< V : Value <$t >> Zero for $name < V > { fn zero() -> Self { unsafe {
Self::unchecked_new(0) } } } impl < V : Value <$t >> One for $name < V > { fn
one() -> Self { Self::new(1) } } impl < V : Value <$t >> std::fmt::Debug for
$name < V > { fn fmt(& self, f : & mut Formatter) -> std::fmt::Result { let max =
100; when! { self.n <= max => write!(f, "{}", self.n), self.n >= V::val() - max
=> write!(f, "-{}", V::val() - self.n), else => { for denominator in 1..max { for
num in 1..max { if Self::new(num) / Self::new(denominator) == * self { return
write!(f, "{}/{}", num, denominator); } if - Self::new(num) /
Self::new(denominator) == * self { return write!(f, "-{}/{}", num, denominator);
} } } write!(f, "(?? {} ??)", self.n) }, } } } impl < V : Value <$t >> AsIndex
for $name < V > { fn from_index(idx : usize) -> Self { let v = idx as $w; if v >=
V::val() as $w { Self::new_from_wide(v) } else { unsafe { Self::unchecked_new(v
as $t) } } } fn to_index(self) -> usize { self.n.to_index() } }
};
}
mod_int!(ModInt, u32, i32, i64);
mod_int!(ModInt64, u64, i64, i128);
value!(Val7 : u32 = 1_000_000_007);
pub type ModInt7 = ModInt<Val7>;
value!(Val9 : u32 = 1_000_000_009);
pub type ModInt9 = ModInt<Val9>;
value!(ValF : u32 = 998_244_353);
pub type ModIntF = ModInt<ValF>;
}
pub mod num_traits {
pub mod algebra {
use crate::algo_lib::numbers::num_traits::invertible::Invertible;
use std::ops::{
Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Rem, RemAssign, Sub, SubAssign,
};
pub trait Zero {
fn zero() -> Self;
}
pub trait One {
fn one() -> Self;
}
pub trait AdditionMonoid: Add<Output = Self> + AddAssign + Zero + Eq + Sized {}
impl<T: Add<Output = Self> + AddAssign + Zero + Eq> AdditionMonoid for T {}
pub trait AdditionMonoidWithSub: AdditionMonoid + Sub<Output = Self> + SubAssign {}
impl<T: AdditionMonoid + Sub<Output = Self> + SubAssign> AdditionMonoidWithSub for T {}
pub trait AdditionGroup: AdditionMonoidWithSub + Neg<Output = Self> {}
impl<T: AdditionMonoidWithSub + Neg<Output = Self>> AdditionGroup for T {}
pub trait MultiplicationMonoid: Mul<Output = Self> + MulAssign + One + Eq + Sized {}
impl<T: Mul<Output = Self> + MulAssign + One + Eq> MultiplicationMonoid for T {}
pub trait IntegerMultiplicationMonoid: MultiplicationMonoid + Div<
Output = Self,
> + Rem<Output = Self> + DivAssign + RemAssign {}
impl<
T: MultiplicationMonoid + Div<Output = Self> + Rem<Output = Self> + DivAssign
+ RemAssign,
> IntegerMultiplicationMonoid for T {}
pub trait MultiplicationGroup: MultiplicationMonoid + Div<
Output = Self,
> + DivAssign + Invertible<Output = Self> {}
impl<
T: MultiplicationMonoid + Div<Output = Self> + DivAssign + Invertible<Output = Self>,
> MultiplicationGroup for T {}
pub trait SemiRing: AdditionMonoid + MultiplicationMonoid {}
impl<T: AdditionMonoid + MultiplicationMonoid> SemiRing for T {}
pub trait SemiRingWithSub: AdditionMonoidWithSub + SemiRing {}
impl<T: AdditionMonoidWithSub + SemiRing> SemiRingWithSub for T {}
pub trait Ring: SemiRing + AdditionGroup {}
impl<T: SemiRing + AdditionGroup> Ring for T {}
pub trait IntegerSemiRing: SemiRing + IntegerMultiplicationMonoid {}
impl<T: SemiRing + IntegerMultiplicationMonoid> IntegerSemiRing for T {}
pub trait IntegerSemiRingWithSub: SemiRingWithSub + IntegerSemiRing {}
impl<T: SemiRingWithSub + IntegerSemiRing> IntegerSemiRingWithSub for T {}
pub trait IntegerRing: IntegerSemiRing + Ring {}
impl<T: IntegerSemiRing + Ring> IntegerRing for T {}
pub trait Field: Ring + MultiplicationGroup {}
impl<T: Ring + MultiplicationGroup> Field for T {}
macro_rules! zero_one_integer_impl {
($($t:ident)+) => {
$(impl Zero for $t { fn zero() -> Self { 0 } } impl One for $t { fn one() -> Self
{ 1 } })+
};
}
zero_one_integer_impl!(i128 i64 i32 i16 i8 isize u128 u64 u32 u16 u8 usize);
}
pub mod as_index {
pub trait AsIndex {
fn from_index(idx: usize) -> Self;
fn to_index(self) -> usize;
}
macro_rules! from_index_impl {
($($t:ident)+) => {
$(impl AsIndex for $t { fn from_index(idx : usize) -> Self { idx as $t } fn
to_index(self) -> usize { self as usize } })+
};
}
from_index_impl!(i128 i64 i32 i16 i8 isize u128 u64 u32 u16 u8 usize);
}
pub mod bit_ops {
use crate::algo_lib::numbers::num_traits::algebra::{One, Zero};
use std::ops::{
BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Not, RangeInclusive,
Shl, Sub,
};
use std::ops::{ShlAssign, Shr, ShrAssign};
pub trait BitOps: Copy + BitAnd<
Output = Self,
> + BitAndAssign + BitOr<
Output = Self,
> + BitOrAssign + BitXor<
Output = Self,
> + BitXorAssign + Not<
Output = Self,
> + Shl<
usize,
Output = Self,
> + ShlAssign<
usize,
> + Shr<usize, Output = Self> + ShrAssign<usize> + Zero + One + PartialEq {
#[inline]
fn bit(at: usize) -> Self {
Self::one() << at
}
#[inline]
fn is_set(&self, at: usize) -> bool {
(*self >> at & Self::one()) == Self::one()
}
#[inline]
fn set_bit(&mut self, at: usize) {
*self |= Self::bit(at);
}
#[inline]
fn unset_bit(&mut self, at: usize) {
*self &= !Self::bit(at);
}
#[must_use]
#[inline]
fn with_bit(mut self, at: usize) -> Self {
self.set_bit(at);
self
}
#[must_use]
#[inline]
fn without_bit(mut self, at: usize) -> Self {
self.unset_bit(at);
self
}
#[inline]
fn flip_bit(&mut self, at: usize) {
*self ^= Self::bit(at);
}
#[must_use]
#[inline]
fn flipped_bit(mut self, at: usize) -> Self {
self.flip_bit(at);
self
}
fn all_bits(n: usize) -> Self {
let mut res = Self::zero();
for i in 0..n {
res.set_bit(i);
}
res
}
fn iter_all(n: usize) -> RangeInclusive<Self> {
Self::zero()..=Self::all_bits(n)
}
}
pub struct BitIter<T> {
cur: T,
all: T,
ended: bool,
}
impl<T: Copy> BitIter<T> {
pub fn new(all: T) -> Self {
Self {
cur: all,
all,
ended: false,
}
}
}
impl<T: BitOps + Sub<Output = T>> Iterator for BitIter<T> {
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
if self.ended {
return None;
}
let res = self.cur;
if self.cur == T::zero() {
self.ended = true;
} else {
self.cur = (self.cur - T::one()) & self.all;
}
Some(res)
}
}
impl<
T: Copy + BitAnd<Output = Self> + BitAndAssign + BitOr<Output = Self> + BitOrAssign
+ BitXor<Output = Self> + BitXorAssign + Not<Output = Self>
+ Shl<usize, Output = Self> + ShlAssign<usize> + Shr<usize, Output = Self>
+ ShrAssign<usize> + One + Zero + PartialEq,
> BitOps for T {}
pub trait Bits: BitOps {
fn bits() -> u32;
}
macro_rules! bits_integer_impl {
($($t:ident $bits:expr),+) => {
$(impl Bits for $t { fn bits() -> u32 { $bits } })+
};
}
bits_integer_impl!(
i128 128, i64 64, i32 32, i16 16, i8 8, isize 64, u128 128, u64 64, u32 32, u16 16,
u8 8, usize 64
);
}
pub mod invertible {
pub trait Invertible {
type Output;
fn inv(&self) -> Option<Self::Output>;
}
}
pub mod ord {
pub trait MinMax: PartialOrd {
fn min_val() -> Self;
fn max_val() -> Self;
}
macro_rules! min_max_integer_impl {
($($t:ident)+) => {
$(impl MinMax for $t { fn min_val() -> Self { $t ::MIN } fn max_val() -> Self {
$t ::MAX } })+
};
}
min_max_integer_impl!(i128 i64 i32 i16 i8 isize u128 u64 u32 u16 u8 usize);
}
pub mod primitive {
pub trait Primitive<T>: Copy {
fn to(self) -> T;
fn from(t: T) -> Self;
}
macro_rules! primitive_one {
($t:ident, $($u:ident)+) => {
$(impl Primitive <$u > for $t { fn to(self) -> $u { self as $u } fn from(t : $u)
-> Self { t as $t } })+
};
}
macro_rules! primitive {
($($t:ident)+) => {
$(primitive_one!($t, u8 u16 u32 u64 u128 usize i8 i16 i32 i64 i128 isize);)+
};
}
primitive!(u8 u16 u32 u64 u128 usize i8 i16 i32 i64 i128 isize);
}
}
pub mod number_ext {
use crate::algo_lib::numbers::num_traits::algebra::{
IntegerSemiRing, MultiplicationMonoid,
};
use crate::algo_lib::numbers::num_traits::as_index::AsIndex;
use std::ops::Mul;
pub trait Power {
#[must_use]
fn power<T: IntegerSemiRing + Copy>(&self, exp: T) -> Self;
}
impl<S: MultiplicationMonoid + Copy> Power for S {
fn power<T: IntegerSemiRing + Copy>(&self, exp: T) -> Self {
if exp == T::zero() {
S::one()
} else {
let mut res = self.power(exp / (T::one() + T::one()));
res *= res;
if exp % (T::one() + T::one()) == T::one() {
res *= *self;
}
res
}
}
}
pub fn num_digs<S: IntegerSemiRing + AsIndex + Copy>(mut copy: S) -> usize {
let ten = S::from_index(10);
let mut res = 0;
while copy != S::zero() {
copy /= ten;
res += 1;
}
res
}
pub fn sum_digs<S: IntegerSemiRing + AsIndex + Copy>(mut copy: S) -> S {
let ten = S::from_index(10);
let mut res = S::zero();
while copy != S::zero() {
res += copy % ten;
copy /= ten;
}
res
}
pub fn digits<S: IntegerSemiRing + AsIndex + Copy>(
mut copy: S,
) -> impl Iterator<Item = S> {
let ten = S::from_index(10);
std::iter::from_fn(move || {
if copy == S::zero() {
None
} else {
let res = copy % ten;
copy /= ten;
Some(res)
}
})
}
pub trait Square {
fn square(self) -> Self;
}
impl<T: Mul<Output = T> + Copy> Square for T {
fn square(self) -> Self {
self * self
}
}
}
pub mod primes {
pub mod factorize {
use crate::algo_lib::collections::vec_ext::sorted::Sorted;
use crate::algo_lib::misc::recursive_function::{Callable2, RecursiveFunction2};
use crate::algo_lib::numbers::num_traits::as_index::AsIndex;
use crate::algo_lib::numbers::num_traits::primitive::Primitive;
use crate::algo_lib::numbers::primes::prime::find_divisor;
use crate::algo_lib::numbers::primes::sieve::divisor_table;
use std::cmp::Ordering;
pub trait Factorize {
fn prime_divisors(self) -> Vec<(u64, usize)>;
fn divisors(self) -> Vec<u64>;
fn max_power(self, p: Self) -> usize;
}
impl<T: Primitive<u64>> Factorize for T {
fn prime_divisors(self) -> Vec<(u64, usize)> {
let n = self.to();
assert!(n >= 1);
if n == 1 {
return Vec::new();
}
let d = if n > 100 {
find_divisor(n)
} else {
let mut res = n;
let mut i = 2;
while i * i <= n {
if n % i == 0 {
res = i;
break;
}
i += 1;
}
res
};
if d == n {
return vec![(d, 1)];
}
let left = d.prime_divisors();
let right = (n / d).prime_divisors();
let mut res = Vec::new();
let mut i = 0;
let mut j = 0;
while i < left.len() && j < right.len() {
match left[i].0.cmp(&right[j].0) {
Ordering::Less => {
res.push(left[i]);
i += 1;
}
Ordering::Equal => {
res.push((left[i].0, left[i].1 + right[j].1));
i += 1;
j += 1;
}
Ordering::Greater => {
res.push(right[j]);
j += 1;
}
}
}
res.extend_from_slice(&left[i..]);
res.extend_from_slice(&right[j..]);
res
}
fn divisors(self) -> Vec<u64> {
let pd = self.prime_divisors();
let mut res = Vec::new();
let mut rec = RecursiveFunction2::new(|f, mut d: u64, step: usize| {
if step == pd.len() {
res.push(d);
} else {
let (p, e) = pd[step];
for i in 0..=e {
f.call(d, step + 1);
if i < e {
d *= p;
}
}
}
});
rec.call(1, 0);
res.sorted()
}
fn max_power(self, p: Self) -> usize {
let mut res = 0;
let mut cur = self.to();
assert!(cur >= 1);
let p = p.to();
assert!(p >= 2);
while cur % p == 0 {
cur /= p;
res += 1;
}
res
}
}
pub fn all_divisors(n: usize, sorted: bool) -> Vec<Vec<usize>> {
let d: Vec<usize> = divisor_table(n);
let mut res = Vec::with_capacity(n);
if n > 0 {
res.push(Vec::new());
}
if n > 1 {
res.push(vec![1]);
}
for (i, p) in d.into_iter().enumerate().skip(2) {
let mut q = 0;
let mut c = i;
while c % p.to_index() == 0 {
c /= p.to_index();
q += 1;
}
let mut cur = Vec::with_capacity(res[c].len() * (q + 1));
let mut by = 1;
for j in 0..=q {
cur.extend(res[c].iter().map(|&x| x * by));
if j != q {
by *= p;
}
}
if sorted {
cur.sort();
}
res.push(cur);
}
res
}
}
pub mod prime {
use crate::algo_lib::misc::random::{RandomTrait, StaticRandom};
use crate::algo_lib::numbers::gcd::gcd;
use crate::algo_lib::numbers::mod_int::ModInt64;
use crate::algo_lib::numbers::num_traits::algebra::{One, Zero};
use crate::algo_lib::numbers::num_traits::primitive::Primitive;
use crate::algo_lib::numbers::number_ext::Power;
use crate::{dynamic_value, when};
pub fn is_prime(n: impl Primitive<u64>) -> bool {
let n = n.to();
if n <= 1 {
return false;
}
let mut s = 0;
let mut d = n - 1;
while d % 2 == 0 {
s += 1;
d >>= 1;
}
if s == 0 {
return n == 2;
}
dynamic_value!(IsPrimeModule : u64 = n);
type Mod = ModInt64<IsPrimeModule>;
for _ in 0..20 {
let a = Mod::new(StaticRandom.gen_bound(n));
if a == Mod::zero() {
continue;
}
if a.power(d) == Mod::one() {
continue;
}
let mut dd = d;
let mut good = true;
for _ in 0..s {
if a.power(dd) == -Mod::one() {
good = false;
break;
}
dd *= 2;
}
if good {
return false;
}
}
true
}
pub fn next_prime(mut n: u64) -> u64 {
if n <= 2 {
return 2;
}
n += 1 - (n & 1);
while !is_prime(n) {
n += 2;
}
n
}
fn brent(n: u64, x0: u64, c: u64) -> u64 {
dynamic_value!(ModVal : u64 = n);
type Mod = ModInt64<ModVal>;
let mut x = Mod::new(x0);
let c = Mod::new(c);
let mut g = 1;
let mut q = Mod::one();
let mut xs = Mod::zero();
let mut y = Mod::zero();
let m = 128i64;
let mut l = 1;
while g == 1 {
y = x;
for _ in 1..l {
x = x * x + c;
}
let mut k = 0;
while k < l && g == 1 {
xs = x;
for _ in 0..m.min(l - k) {
x = x * x + c;
q *= y - x;
}
g = gcd(q.val(), n);
k += m;
}
l *= 2;
}
if g == n {
loop {
xs = xs * xs + c;
g = gcd((xs - y).val(), n);
if g != 1 {
break;
}
}
}
g
}
pub fn find_divisor(n: u64) -> u64 {
when! {
n == 1 => 1, n % 2 == 0 => 2, is_prime(n) => n, else => { loop { let res =
brent(n, StaticRandom.gen_range(2..n), StaticRandom.gen_range(1..n),); if res !=
n { return res; } } },
}
}
}
pub mod sieve {
use crate::algo_lib::collections::bit_set::BitSet;
pub fn primality_table(n: usize) -> BitSet {
let mut res = BitSet::new(n);
res.fill(true);
if n > 0 {
res.unset(0);
}
if n > 1 {
res.unset(1);
}
let mut i = 2;
while i * i < n {
if res[i] {
for j in ((i * i)..n).step_by(i) {
res.unset(j);
}
}
i += 1;
}
res
}
pub fn primes(n: usize) -> Vec<usize> {
primality_table(n).into_iter().collect()
}
pub fn divisor_table(n: usize) -> Vec<usize> {
let mut res: Vec<_> = (0..n).collect();
let mut i = 2;
while i * i < n {
if res[i] == i {
for j in ((i * i)..n).step_by(i) {
res[j] = i;
}
}
i += 1;
}
res
}
}
}
}
}
这程序好像有点Bug,我给组数据试试?
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 2296kb
input:
3 5 10 7 79 1 7 1 2 1000000000 1 2 1 100 1000000000
output:
3 8 0 0 100 5050
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 2188kb
input:
4 201 1000000000 1 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5...
output:
0 0 0 0 0 0 0 0
result:
ok 4 lines
Test #3:
score: 0
Accepted
time: 0ms
memory: 2188kb
input:
500 4 1000000000 8 14 24 18 4 1000000000 17 10 18 14 4 1000000000 6 17 19 19 4 1000000000 15 14 15 25 4 1000000000 16 16 5 25 4 1000000000 4 30 20 5 4 1000000000 11 4 23 9 4 1000000000 14 25 13 2 4 1000000000 18 18 1 15 4 1000000000 22 22 22 28 4 1000000000 15 17 17 10 4 1000000000 22 14 13 25 4 100...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #4:
score: 0
Accepted
time: 12ms
memory: 4532kb
input:
1 50000 1000000000 230 286458 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 41263680 ...
output:
0 0
result:
ok single line: '0 0'
Test #5:
score: 0
Accepted
time: 12ms
memory: 4600kb
input:
1 50000 1000000000 12087 1196491 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 55314643 553146...
output:
0 0
result:
ok single line: '0 0'
Test #6:
score: 0
Accepted
time: 12ms
memory: 4632kb
input:
1 50000 1000000000 2138984 42249920 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 358123541 3581...
output:
0 0
result:
ok single line: '0 0'
Test #7:
score: 0
Accepted
time: 6ms
memory: 2260kb
input:
500 39 1000000000 75 7 7 381 41 1197 177 177 41 109 109 16 1197 177 41 381 1605 381 381 7 177 177 177 177 177 177 177 177 7 7 143 143 143 143 143 653 143 823 7 61 1000000000 327 327 327 327 405153474 327 405153474 327 810306621 810306621 810306621 810306621 810306621 810306621 810306621 810306621 81...
output:
0 0 25 631568356 13 18925862 1 1 2 6878 1 2 1 1 2 10 1 1 1 110 0 0 1 36 11 4796 1 29 1 4 6 2209209 0 0 3 8 1 2 9 30770061 1000000000 500000000500000000 1 3 1000000000 500000000500000000 0 0 1 5 1 1 6 6615501 3 8233825 2 1035 2 4 7 1288 0 0 1 3 16 1617883221 2 10 0 0 1 5739 15 102584 3 1100 100000000...
result:
ok 500 lines
Test #8:
score: 0
Accepted
time: 8ms
memory: 2316kb
input:
50 794 1000000000 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 32994 ...
output:
4 13399 1 488 0 0 1 1 2 764 1 3762 2 3 1 4 3 704189325 1 1 7 226705168 7 2992 1 10 2 14 0 0 2 4136 1 1 5 1503264540 1 6 1 9 2 178 12 1965492 3 8622003 1 1 1 10 0 0 0 0 1 316605749 1 4 2 8 1 22 2 1452 0 0 1 47 1 1 3 11 7 709953544 20 10709552 3 8 1 3 19 84763135 2 1256 3 1268 29 1652299260 1 1 3 1124...
result:
ok 50 lines
Test #9:
score: 0
Accepted
time: 5ms
memory: 2632kb
input:
5 8181 1000000000 846711550 846711550 846711550 846711550 31870 169367806 169367806 169367806 169367806 169367806 169367806 169367806 169367806 169367806 169367806 169367806 31870 338703742 338703742 190 14224510 14224510 6526 6526 190 190 190 10 190 10 21214 21214 154 154 8578 10 190 10 10 82 3862 ...
output:
2 10 1 8 26 3610753 1 3 2 4
result:
ok 5 lines
Test #10:
score: 0
Accepted
time: 15ms
memory: 4516kb
input:
1 50000 1000000000 8376 1656 5016 20136 5016 1656 1656 1656 1656 1656 1656 1656 1656 1656 1656 16776 8376 50376 251976 1656 1656 10056 1656 1656 1656 1656 1656 1656 1656 1656 1656 1656 1656 5016 1656 3336 3336 3336 3336 3336 83976 16776 16776 16776 1656 536 1096 2216 1096 1096 67176 33576 5576 1096 ...
output:
1 24
result:
ok single line: '1 24'
Test #11:
score: 0
Accepted
time: 50ms
memory: 4324kb
input:
1 50000 1000000000 91892194 394 137838094 394 137838094 137838094 394 183783994 394 183783994 183783994 183783994 183783994 394 45946294 45946294 45946294 45946294 45946294 45946294 45946294 45946294 45946294 45946294 45946294 45946294 45946294 45946294 394 137838094 137838094 137838094 394 91892194...
output:
468 209787236
result:
ok single line: '468 209787236'
Test #12:
score: 0
Accepted
time: 28ms
memory: 2364kb
input:
500 100 1000000000 776155459 776155459 776155459 776155459 41021059 776155459 41021059 776155459 776155459 41021059 41021059 776155459 776155459 41021059 776155459 41021059 776155459 776155459 41021059 41021059 776155459 776155459 776155459 41021059 41021059 41021059 41021059 41021059 776155459 7761...
output:
17 1831175377 2 609757842 3 743304987 25 2121624176 3 790868079 5 1008821895 7 1202438586 151 3383012928 9 1359636987 84 3044672451 3 640906041 2 612154014 7 1176943151 4 813243996 3 707197023 3 683983701 2 602690182 21 1974972192 12 1549491756 35 2391432666 3 794002920 3 764129706 3 748141920 14 16...
result:
ok 500 lines
Test #13:
score: 0
Accepted
time: 15ms
memory: 4068kb
input:
1 50000 1000000000 955233187 955233187 955233187 955233187 955233187 955233187 220098787 955233187 220098787 220098787 955233187 955233187 955233187 955233187 220098787 220098787 220098787 955233187 955233187 955233187 955233187 220098787 220098787 955233187 955233187 955233187 955233187 220098787 2...
output:
3 687450039
result:
ok single line: '3 687450039'
Test #14:
score: 0
Accepted
time: 8ms
memory: 3652kb
input:
1 50000 1000000000 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 134310915 1...
output:
5 1007002305
result:
ok single line: '5 1007002305'
Test #15:
score: 0
Accepted
time: 2ms
memory: 2356kb
input:
500 97 1000000000 25042703 12459791 12459791 25042703 1449743 270095 50208527 3022607 6168335 50208527 663311 25042703 12459791 6168335 270095 12459791 6168335 25042703 663311 25042703 663311 50208527 1449743 663311 3022607 25042703 663311 3022607 3022607 25042703 3022607 6168335 50208527 12459791 5...
output:
1 123121 1 887 1 58 1 250 1 11942 1 14 1 3847396 1 5 1 205464 1 3614 1 24 1 1 1 1502 1 192 1 82260 1 123682 1 8870816 1 98 1 8282 3 14951299 1 390417 1000000000 500000000500000000 1 47039 1000000000 500000000500000000 1000000000 500000000500000000 1 430 1 1291110 1 3198662 1 266092 1 634777 1 514615...
result:
ok 500 lines
Test #16:
score: 0
Accepted
time: 17ms
memory: 5188kb
input:
1 50000 1000000000 180207 22511 360431 5 11247 23068655 5 2799 159 335 90095 5615 1391 360431 1391 5767151 90095 180207 5 46137327 687 360431 180207 720879 159 720879 1441775 90095 687 5 2799 5767151 5767151 687 687 687 159 90095 45039 335 46137327 1441775 5767151 71 180207 11534319 1441775 11247 14...
output:
1 17
result:
ok single line: '1 17'
Test #17:
score: 0
Accepted
time: 11ms
memory: 3716kb
input:
1 50000 1000000000 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13...
output:
1 9
result:
ok single line: '1 9'
Test #18:
score: 0
Accepted
time: 6ms
memory: 2268kb
input:
500 74 1000000000 505612400 46447376 46447376 46447376 46447376 505612400 161238632 161238632 161238632 46447376 46447376 161238632 161238632 46447376 161238632 46447376 46447376 46447376 46447376 161238632 46447376 161238632 161238632 46447376 505612400 505612400 161238632 161238632 46447376 464473...
output:
1 10948252 2 290995083 1 12227 1 62646 1 456148 1 1606838 1 69009237 1 76066538 1 3945 1 10354 1 20996041 1 12594 1000000000 500000000500000000 1 1774442 1 230803 1 52 1 4 1 400 1 20840838 1 3155890 56 48210675 1 293 1 485 1 148108 1 947844 1 22565 1 15551 1 2058649 1 17 1 6744213 1 1961476 1 16914 ...
result:
ok 500 lines
Test #19:
score: 0
Accepted
time: 12ms
memory: 4808kb
input:
1 50000 1000000000 28697812 9565936 4372 52 86093440 86093440 16 774840976 13120 39364 3188644 118096 39364 774840976 1062880 13120 484 86093440 258280324 1062880 484 774840976 118096 52 484 1062880 28697812 16 258280324 39364 774840976 258280324 28697812 4372 484 774840976 9565936 4372 1062880 16 2...
output:
1 2
result:
ok single line: '1 2'
Test #20:
score: 0
Accepted
time: 11ms
memory: 3820kb
input:
1 50000 1000000000 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12...
output:
1 6
result:
ok single line: '1 6'
Test #21:
score: 0
Accepted
time: 6ms
memory: 4544kb
input:
1 50000 1000000000 278 20278 40278 60278 80278 100278 120278 140278 160278 180278 200278 220278 240278 260278 280278 300278 320278 340278 360278 380278 400278 420278 440278 460278 480278 500278 520278 540278 560278 580278 600278 620278 640278 660278 680278 700278 720278 740278 760278 780278 800278 8...
output:
0 0
result:
ok single line: '0 0'
Test #22:
score: 0
Accepted
time: 5ms
memory: 4628kb
input:
1 50000 1000000000 999994293 999974293 999954293 999934293 999914293 999894293 999874293 999854293 999834293 999814293 999794293 999774293 999754293 999734293 999714293 999694293 999674293 999654293 999634293 999614293 999594293 999574293 999554293 999534293 999514293 999494293 999474293 999454293 9...
output:
0 0
result:
ok single line: '0 0'
Test #23:
score: 0
Accepted
time: 97ms
memory: 4144kb
input:
1 50000 1000000000 2 735134402 2 735134402 2 735134402 2 2 735134402 2 2 735134402 2 735134402 2 735134402 735134402 2 735134402 735134402 735134402 735134402 735134402 2 735134402 735134402 2 735134402 735134402 735134402 735134402 2 2 2 735134402 2 735134402 735134402 735134402 735134402 2 2 73513...
output:
1342 3809753473
result:
ok single line: '1342 3809753473'
Test #24:
score: 0
Accepted
time: 11ms
memory: 3608kb
input:
1 50000 1000000000 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4...
output:
1340 3809750790
result:
ok single line: '1340 3809750790'
Test #25:
score: 0
Accepted
time: 115ms
memory: 2208kb
input:
500 100 1000000000 735134405 735134405 735134405 5 5 5 5 735134405 735134405 735134405 735134405 5 735134405 735134405 5 5 5 5 5 5 5 5 5 5 735134405 735134405 5 735134405 735134405 735134405 5 5 735134405 5 735134405 735134405 735134405 5 735134405 735134405 735134405 5 5 5 5 735134405 5 735134405 5...
output:
1339 3809749450 1343 3809754816 1340 3809750790 1341 3809752131 1340 3809750790 1341 3809752131 1343 3809754816 1342 3809753473 1343 3809754816 1342 3809753473 1341 3809752131 1341 3809752131 1343 3809754816 1339 3809749450 1340 3809750790 1339 3809749450 1340 3809750790 1343 3809754816 1340 3809750...
result:
ok 500 lines
Test #26:
score: 0
Accepted
time: 28ms
memory: 2288kb
input:
500 100 1000000000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735134401 735...
output:
1343 3809754816 1339 3809749450 1343 3809754816 1343 3809754816 1343 3809754816 1342 3809753473 1342 3809753473 1339 3809749450 1340 3809750790 1341 3809752131 1343 3809754816 1340 3809750790 1341 3809752131 1343 3809754816 1343 3809754816 1342 3809753473 1341 3809752131 1343 3809754816 1340 3809750...
result:
ok 500 lines
Test #27:
score: 0
Accepted
time: 142ms
memory: 2244kb
input:
500 100 1000000000 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735134402 2 735...
output:
1342 3809753473 1341 3809752131 1342 3809753473 1342 3809753473 1341 3809752131 1339 3809749450 1341 3809752131 1341 3809752131 1341 3809752131 1340 3809750790 1339 3809749450 1343 3809754816 1343 3809754816 1339 3809749450 1340 3809750790 1343 3809754816 1339 3809749450 1341 3809752131 1342 3809753...
result:
ok 500 lines
Test #28:
score: 0
Accepted
time: 2ms
memory: 2224kb
input:
500 89 733686393 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546879484 546...
output:
733686393 269147862003518421 974814317 475131476801495403 314673126 49509588270642501 261604100 34218352699207050 250972352 31493560859692128 58642240 1719456185429920 26403492 348572208098778 789669437 311788910260783203 795057458 316058181158239611 765142258 292721337871240411 292428558 4275723091...
result:
ok 500 lines
Test #29:
score: 0
Accepted
time: 0ms
memory: 2148kb
input:
500 2 1000000000 3 2 2 1000000000 3 2 2 1000000000 1 3 2 1000000000 3 1 2 1000000000 3 1 2 1000000000 2 3 2 1000000000 1 1 2 1000000000 3 1 2 1000000000 2 2 2 1000000000 3 3 2 1000000000 1 3 2 1000000000 3 2 2 1000000000 2 3 2 1000000000 3 3 2 1000000000 2 1 2 1000000000 3 3 2 1000000000 3 3 2 10000...
output:
0 0 0 0 1 1 1 1 1 1 0 0 1000000000 500000000500000000 1 1 1000000000 500000000500000000 1000000000 500000000500000000 1 1 0 0 0 0 1000000000 500000000500000000 0 0 1000000000 500000000500000000 1000000000 500000000500000000 1000000000 500000000500000000 1 1 1000000000 500000000500000000 1 1 0 0 1000...
result:
ok 500 lines
Test #30:
score: 0
Accepted
time: 0ms
memory: 2356kb
input:
500 2 1000000000 3 3 2 1000000000 4 5 2 1000000000 1 3 2 1000000000 3 1 2 1000000000 2 4 2 1000000000 4 5 2 1000000000 4 3 2 1000000000 2 5 2 1000000000 2 5 2 1000000000 5 4 2 1000000000 4 1 2 1000000000 4 2 2 1000000000 4 4 2 1000000000 3 1 2 1000000000 1 4 2 1000000000 1 4 2 1000000000 4 5 2 10000...
output:
1000000000 500000000500000000 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 2 0 0 1000000000 500000000500000000 1 1 1 2 1 2 0 0 0 0 0 0 1000000000 500000000500000000 0 0 1 2 0 0 2 4 1 1 1000000000 500000000500000000 1000000000 500000000500000000 1000000000 500000000500000000 0 0 2 4 2 4 0 0 0 0 0 0 10000000...
result:
ok 500 lines
Test #31:
score: 0
Accepted
time: 0ms
memory: 2160kb
input:
500 2 1000000000 4 1 2 1000000000 10 9 2 1000000000 10 7 2 1000000000 4 10 2 1000000000 2 7 2 1000000000 2 5 2 1000000000 4 5 2 1000000000 4 6 2 1000000000 1 8 2 1000000000 8 5 2 1000000000 4 7 2 1000000000 7 5 2 1000000000 6 3 2 1000000000 6 5 2 1000000000 10 7 2 1000000000 8 9 2 1000000000 2 2 2 1...
output:
1 2 0 0 0 0 1 2 1 3 1 1 0 0 0 0 1 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000000000 500000000500000000 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 1 3 0 0 0 0 1 6 1000000000 500000000500000000 1000000000 500000000500000000 0 0 0 0 0 0 1 1 0 0 0 0 1000000000 500000000500000000 0 0 0 0 1 3 0 0 1000000000 50000000050000000...
result:
ok 500 lines
Test #32:
score: 0
Accepted
time: 0ms
memory: 2152kb
input:
500 2 1000000000 19 13 2 1000000000 8 14 2 1000000000 3 15 2 1000000000 16 13 2 1000000000 3 6 2 1000000000 15 15 2 1000000000 17 6 2 1000000000 16 12 2 1000000000 3 12 2 1000000000 11 5 2 1000000000 6 1 2 1000000000 3 2 2 1000000000 7 9 2 1000000000 4 13 2 1000000000 13 9 2 1000000000 18 17 2 10000...
output:
0 0 0 0 3 13 0 0 0 0 1000000000 500000000500000000 1 5 0 0 1 6 1 1 1 4 0 0 0 0 1 5 0 0 0 0 2 4 0 0 1 10 0 0 0 0 5 33 2 10 0 0 1 14 1 10 1 10 1 1 0 0 1 10 1000000000 500000000500000000 0 0 1000000000 500000000500000000 0 0 2 8 0 0 2 9 0 0 0 0 1 1 1 1 1 8 0 0 0 0 0 0 1 1 1 4 0 0 0 0 1 1 0 0 0 0 1 15 1...
result:
ok 500 lines
Test #33:
score: 0
Accepted
time: 0ms
memory: 2252kb
input:
500 3 1000000000 1 1 2 3 1000000000 2 3 1 3 1000000000 2 1 2 3 1000000000 1 2 2 3 1000000000 1 3 2 3 1000000000 1 1 3 3 1000000000 3 2 1 3 1000000000 3 2 2 3 1000000000 3 2 3 3 1000000000 2 1 1 3 1000000000 3 2 2 3 1000000000 1 1 2 3 1000000000 2 3 3 3 1000000000 2 3 1 3 1000000000 3 1 1 3 100000000...
output:
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1000000000 500000000500000000 1000000000 500000000500000000 0 0 0 0 0 0 1000000000 500000000500000000 0 0 0 0 1000000000 500000000500000000 1000000000 500000000500000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #34:
score: 0
Accepted
time: 0ms
memory: 2136kb
input:
500 3 1000000000 4 5 4 3 1000000000 2 1 3 3 1000000000 1 2 1 3 1000000000 1 2 3 3 1000000000 2 1 1 3 1000000000 3 5 4 3 1000000000 2 5 1 3 1000000000 1 1 2 3 1000000000 2 1 3 3 1000000000 4 5 4 3 1000000000 3 3 2 3 1000000000 1 3 5 3 1000000000 5 2 3 3 1000000000 3 3 1 3 1000000000 2 5 2 3 100000000...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 1 1 0 0 0 0 2 4 1 1 1 1 0 0 0 0 1 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1000000000 500000000500000000 2 4 0 0 1 1 0 0 0 0 1 2 0 0 0 0 0 0 1000000000 500000000500000000 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 2 2 4 ...
result:
ok 500 lines
Test #35:
score: 0
Accepted
time: 0ms
memory: 2096kb
input:
500 3 1000000000 1 6 1 3 1000000000 10 3 7 3 1000000000 9 9 8 3 1000000000 3 10 8 3 1000000000 10 5 10 3 1000000000 7 3 2 3 1000000000 3 5 3 3 1000000000 6 2 1 3 1000000000 9 1 5 3 1000000000 4 4 3 3 1000000000 4 6 8 3 1000000000 1 9 9 3 1000000000 10 1 1 3 1000000000 6 4 8 3 1000000000 5 4 9 3 1000...
output:
1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 0 0 0 0 3 11 2 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 2 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 0 0 0 0 2 5 0 0 0 0 0 0 1 1 3 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ...
result:
ok 500 lines
Test #36:
score: 0
Accepted
time: 0ms
memory: 2080kb
input:
500 3 1000000000 5 16 9 3 1000000000 4 2 20 3 1000000000 15 2 9 3 1000000000 11 11 19 3 1000000000 3 16 4 3 1000000000 16 19 4 3 1000000000 18 11 2 3 1000000000 7 17 9 3 1000000000 1 2 11 3 1000000000 5 10 16 3 1000000000 14 4 15 3 1000000000 20 7 4 3 1000000000 7 13 5 3 1000000000 7 15 14 3 1000000...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 17 1 2 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 2 4 1 1 1 4 0 0 1 1 0 0 1 15 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 13 0 0 1 2 0 0 0 0 0 0 0 0 1...
result:
ok 500 lines
Test #37:
score: 0
Accepted
time: 0ms
memory: 2268kb
input:
500 4 1000000000 1 2 2 1 4 1000000000 3 3 2 2 4 1000000000 3 2 3 3 4 1000000000 3 2 2 2 4 1000000000 2 2 2 3 4 1000000000 3 1 1 1 4 1000000000 2 2 3 1 4 1000000000 2 3 1 2 4 1000000000 2 3 2 1 4 1000000000 2 2 2 2 4 1000000000 1 3 3 1 4 1000000000 2 3 3 3 4 1000000000 1 2 1 1 4 1000000000 3 3 3 2 4 ...
output:
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1000000000 500000000500000000 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1000000000 500000000500000000 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1000000000 500000000500000000 0 0 0 0 1000000000 50000000050...
result:
ok 500 lines
Test #38:
score: 0
Accepted
time: 0ms
memory: 2264kb
input:
500 4 1000000000 1 3 4 3 4 1000000000 4 1 1 1 4 1000000000 5 5 5 2 4 1000000000 4 1 1 5 4 1000000000 4 2 3 3 4 1000000000 2 2 3 2 4 1000000000 3 1 5 5 4 1000000000 3 2 3 5 4 1000000000 3 2 1 4 4 1000000000 3 2 5 2 4 1000000000 5 1 5 1 4 1000000000 1 1 3 5 4 1000000000 4 3 2 5 4 1000000000 4 4 5 4 4 ...
output:
0 0 1 2 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #39:
score: 0
Accepted
time: 0ms
memory: 2224kb
input:
500 4 1000000000 3 10 3 8 4 1000000000 4 1 6 10 4 1000000000 9 7 3 10 4 1000000000 3 1 6 1 4 1000000000 5 8 5 1 4 1000000000 9 4 8 3 4 1000000000 9 4 2 3 4 1000000000 7 8 6 6 4 1000000000 4 3 4 1 4 1000000000 7 5 2 7 4 1000000000 5 9 4 7 4 1000000000 6 6 1 10 4 1000000000 1 3 4 6 4 1000000000 7 4 9 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 3 2 8 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #40:
score: 0
Accepted
time: 0ms
memory: 2300kb
input:
500 4 1000000000 8 16 7 14 4 1000000000 13 8 2 3 4 1000000000 7 5 4 10 4 1000000000 20 10 3 1 4 1000000000 3 7 10 17 4 1000000000 19 8 20 11 4 1000000000 10 20 14 10 4 1000000000 7 11 5 3 4 1000000000 1 12 18 20 4 1000000000 15 7 12 18 4 1000000000 6 15 13 11 4 1000000000 13 17 10 9 4 1000000000 20 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #41:
score: 0
Accepted
time: 0ms
memory: 2196kb
input:
500 5 1000000000 1 3 1 3 1 5 1000000000 3 3 1 3 2 5 1000000000 3 2 2 1 2 5 1000000000 3 2 2 1 1 5 1000000000 3 1 1 3 2 5 1000000000 3 2 3 1 2 5 1000000000 1 2 2 3 2 5 1000000000 3 2 3 3 1 5 1000000000 3 1 3 2 2 5 1000000000 1 3 3 1 2 5 1000000000 2 1 2 3 3 5 1000000000 1 2 2 2 1 5 1000000000 3 1 1 3...
output:
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000000000 500000000500000000 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ...
result:
ok 500 lines
Test #42:
score: 0
Accepted
time: 0ms
memory: 2224kb
input:
500 5 1000000000 5 2 5 5 4 5 1000000000 1 2 3 4 3 5 1000000000 3 1 2 2 5 5 1000000000 2 4 3 2 1 5 1000000000 3 5 3 3 1 5 1000000000 4 1 2 3 2 5 1000000000 3 1 1 2 4 5 1000000000 2 4 2 4 4 5 1000000000 1 5 5 5 2 5 1000000000 4 3 5 1 5 5 1000000000 5 1 5 3 4 5 1000000000 2 2 5 5 5 5 1000000000 1 5 4 2...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #43:
score: 0
Accepted
time: 0ms
memory: 2160kb
input:
500 5 1000000000 10 5 8 4 5 5 1000000000 5 9 1 7 2 5 1000000000 5 4 8 5 7 5 1000000000 4 5 1 2 2 5 1000000000 6 3 2 6 2 5 1000000000 6 5 3 10 5 5 1000000000 3 3 1 8 9 5 1000000000 8 8 3 3 8 5 1000000000 7 8 9 9 5 5 1000000000 5 4 4 3 1 5 1000000000 7 1 2 1 2 5 1000000000 1 6 10 2 7 5 1000000000 3 9 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #44:
score: 0
Accepted
time: 0ms
memory: 2148kb
input:
500 5 1000000000 15 11 8 13 4 5 1000000000 8 1 16 8 11 5 1000000000 16 18 1 16 3 5 1000000000 9 19 3 5 2 5 1000000000 11 10 6 14 4 5 1000000000 2 1 19 5 1 5 1000000000 17 11 12 7 8 5 1000000000 13 14 20 15 9 5 1000000000 4 4 8 8 12 5 1000000000 16 15 15 18 18 5 1000000000 18 7 7 13 16 5 1000000000 3...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #45:
score: 0
Accepted
time: 0ms
memory: 2132kb
input:
500 6 1000000000 3 1 1 3 2 3 6 1000000000 1 2 2 1 1 3 6 1000000000 2 2 2 3 2 3 6 1000000000 3 3 2 3 3 3 6 1000000000 2 2 3 2 2 3 6 1000000000 1 3 2 1 1 2 6 1000000000 3 2 3 3 2 3 6 1000000000 1 2 3 1 3 1 6 1000000000 3 1 2 3 3 1 6 1000000000 2 1 3 1 1 1 6 1000000000 2 1 3 2 1 1 6 1000000000 1 3 3 3 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #46:
score: 0
Accepted
time: 0ms
memory: 2132kb
input:
500 6 1000000000 5 4 4 4 2 4 6 1000000000 1 1 3 5 2 1 6 1000000000 5 5 2 4 3 1 6 1000000000 4 2 5 1 1 4 6 1000000000 4 5 1 4 1 5 6 1000000000 2 1 4 4 5 2 6 1000000000 5 1 1 5 3 5 6 1000000000 1 2 1 2 1 4 6 1000000000 2 5 1 1 5 2 6 1000000000 4 1 1 2 1 1 6 1000000000 1 2 2 1 5 5 6 1000000000 3 2 4 3 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #47:
score: 0
Accepted
time: 0ms
memory: 2264kb
input:
500 6 1000000000 9 8 9 4 4 2 6 1000000000 8 10 9 6 7 1 6 1000000000 9 5 3 8 8 3 6 1000000000 2 8 4 1 9 2 6 1000000000 6 3 2 2 2 10 6 1000000000 9 4 1 9 6 4 6 1000000000 4 1 4 1 8 8 6 1000000000 8 8 3 8 9 5 6 1000000000 7 3 2 3 2 9 6 1000000000 9 8 5 3 4 2 6 1000000000 6 10 1 5 10 5 6 1000000000 3 5 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #48:
score: 0
Accepted
time: 0ms
memory: 2292kb
input:
500 6 1000000000 14 14 10 3 11 4 6 1000000000 5 6 6 20 20 10 6 1000000000 18 6 18 18 11 7 6 1000000000 17 8 4 15 1 16 6 1000000000 9 19 4 8 14 16 6 1000000000 12 6 14 18 11 9 6 1000000000 1 18 10 16 3 1 6 1000000000 7 2 14 19 12 16 6 1000000000 12 4 1 6 3 14 6 1000000000 9 2 3 2 2 19 6 1000000000 19...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #49:
score: 0
Accepted
time: 0ms
memory: 2200kb
input:
500 7 1000000000 2 2 1 2 3 3 2 7 1000000000 2 1 1 1 1 1 2 7 1000000000 1 3 1 2 2 3 1 7 1000000000 1 2 2 3 2 1 3 7 1000000000 1 1 3 3 1 3 1 7 1000000000 1 3 3 3 1 2 3 7 1000000000 1 2 3 3 3 3 3 7 1000000000 2 3 2 3 2 2 3 7 1000000000 2 3 3 2 1 3 3 7 1000000000 3 1 1 3 1 2 3 7 1000000000 1 3 3 1 1 2 2...
output:
0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 ...
result:
ok 500 lines
Test #50:
score: 0
Accepted
time: 0ms
memory: 2200kb
input:
500 7 1000000000 3 3 5 5 1 1 2 7 1000000000 2 5 2 4 4 2 5 7 1000000000 3 2 5 5 4 5 1 7 1000000000 2 3 4 5 3 2 1 7 1000000000 5 1 2 2 1 3 2 7 1000000000 5 5 4 3 2 5 5 7 1000000000 5 2 5 4 1 3 3 7 1000000000 4 3 2 2 4 2 4 7 1000000000 1 1 1 3 3 2 3 7 1000000000 4 4 4 5 4 3 3 7 1000000000 2 5 1 2 3 5 3...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #51:
score: 0
Accepted
time: 0ms
memory: 2256kb
input:
500 7 1000000000 10 4 3 9 9 10 5 7 1000000000 1 6 2 4 5 6 1 7 1000000000 2 8 4 1 9 4 5 7 1000000000 2 5 5 5 1 3 7 7 1000000000 5 6 7 10 2 9 9 7 1000000000 7 9 1 1 2 6 9 7 1000000000 3 5 10 7 2 1 9 7 1000000000 5 2 8 5 6 6 3 7 1000000000 8 8 1 9 3 8 5 7 1000000000 2 3 7 2 3 6 9 7 1000000000 9 8 2 10 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #52:
score: 0
Accepted
time: 0ms
memory: 2176kb
input:
500 7 1000000000 4 10 11 13 18 9 4 7 1000000000 7 8 10 13 13 19 12 7 1000000000 14 2 3 15 4 14 20 7 1000000000 16 7 18 3 17 11 20 7 1000000000 11 3 20 13 9 2 18 7 1000000000 2 17 12 18 7 17 2 7 1000000000 2 3 5 18 13 10 14 7 1000000000 15 1 5 2 12 10 5 7 1000000000 12 17 18 20 16 20 16 7 1000000000 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #53:
score: 0
Accepted
time: 0ms
memory: 2104kb
input:
500 8 1000000000 3 3 3 1 2 2 2 2 8 1000000000 2 1 2 3 3 1 1 3 8 1000000000 2 3 1 1 1 2 1 1 8 1000000000 3 2 3 3 3 2 3 2 8 1000000000 3 2 1 2 2 3 1 1 8 1000000000 1 1 1 3 1 2 2 1 8 1000000000 1 3 1 3 3 2 2 3 8 1000000000 2 1 1 3 2 3 3 3 8 1000000000 2 2 1 3 3 1 1 2 8 1000000000 1 1 2 1 1 1 1 3 8 1000...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #54:
score: 0
Accepted
time: 1ms
memory: 2136kb
input:
500 8 1000000000 3 5 5 2 1 5 2 1 8 1000000000 1 3 1 3 5 5 1 2 8 1000000000 1 3 1 3 2 5 4 5 8 1000000000 1 4 4 2 1 4 1 2 8 1000000000 4 4 2 5 4 3 2 2 8 1000000000 4 4 3 2 3 1 4 2 8 1000000000 2 3 1 3 1 3 3 2 8 1000000000 5 3 2 3 3 1 2 3 8 1000000000 2 1 5 3 1 3 2 2 8 1000000000 4 5 5 2 3 3 2 5 8 1000...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #55:
score: 0
Accepted
time: 1ms
memory: 2120kb
input:
500 8 1000000000 8 7 4 9 2 4 4 2 8 1000000000 2 5 8 7 1 3 8 3 8 1000000000 6 5 1 2 7 1 6 1 8 1000000000 9 3 2 6 8 5 2 1 8 1000000000 8 6 6 10 6 9 2 3 8 1000000000 5 4 2 8 3 3 7 4 8 1000000000 9 10 5 6 5 8 9 10 8 1000000000 5 8 3 7 7 10 2 9 8 1000000000 4 1 2 6 6 5 9 6 8 1000000000 3 1 8 10 8 2 2 4 8...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #56:
score: 0
Accepted
time: 1ms
memory: 2100kb
input:
500 8 1000000000 11 13 16 19 1 13 7 16 8 1000000000 17 19 9 13 20 18 6 6 8 1000000000 3 6 4 12 13 2 2 13 8 1000000000 4 14 2 17 5 17 16 5 8 1000000000 15 5 13 14 12 10 9 2 8 1000000000 16 11 1 12 4 4 10 11 8 1000000000 8 17 12 3 17 13 3 8 8 1000000000 4 12 10 5 10 2 7 14 8 1000000000 10 6 1 6 18 12 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #57:
score: 0
Accepted
time: 0ms
memory: 2200kb
input:
500 9 1000000000 1 3 1 1 1 2 1 3 3 9 1000000000 2 2 1 1 2 1 3 2 2 9 1000000000 3 2 3 3 2 3 3 3 2 9 1000000000 1 2 3 3 2 1 2 1 3 9 1000000000 1 2 1 1 2 3 1 3 2 9 1000000000 3 3 1 1 2 3 3 1 2 9 1000000000 3 3 3 2 1 3 2 2 3 9 1000000000 2 1 1 2 3 1 1 1 1 9 1000000000 2 3 1 2 2 1 1 2 2 9 1000000000 2 2 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #58:
score: 0
Accepted
time: 1ms
memory: 2156kb
input:
500 9 1000000000 2 3 1 5 4 5 1 3 5 9 1000000000 2 5 1 2 3 5 5 5 2 9 1000000000 3 5 4 1 1 5 5 2 4 9 1000000000 1 3 3 2 1 1 1 1 5 9 1000000000 4 3 4 1 1 3 2 2 1 9 1000000000 4 4 2 4 2 2 3 2 2 9 1000000000 2 4 5 3 3 4 2 4 1 9 1000000000 2 5 3 5 4 1 2 2 5 9 1000000000 4 3 5 3 4 2 2 3 1 9 1000000000 2 4 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #59:
score: 0
Accepted
time: 1ms
memory: 2260kb
input:
500 9 1000000000 9 1 9 9 3 5 3 4 10 9 1000000000 1 4 10 2 3 4 7 8 10 9 1000000000 10 8 4 9 8 10 8 6 3 9 1000000000 9 1 2 4 10 10 5 1 6 9 1000000000 6 7 7 4 10 5 7 5 1 9 1000000000 8 10 10 1 8 3 5 10 5 9 1000000000 8 3 8 1 9 6 6 6 8 9 1000000000 2 1 1 7 4 1 6 1 8 9 1000000000 1 6 1 6 6 1 4 6 5 9 1000...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #60:
score: 0
Accepted
time: 1ms
memory: 2184kb
input:
500 9 1000000000 10 8 18 18 12 17 14 17 11 9 1000000000 9 1 4 17 8 5 7 15 10 9 1000000000 11 18 6 3 8 15 18 12 1 9 1000000000 6 6 4 3 20 17 8 8 11 9 1000000000 3 4 20 1 7 11 16 13 2 9 1000000000 19 11 5 10 19 12 18 5 11 9 1000000000 1 7 9 20 7 10 3 5 15 9 1000000000 17 17 10 10 14 19 9 18 4 9 100000...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #61:
score: 0
Accepted
time: 1ms
memory: 2156kb
input:
500 10 1000000000 2 1 3 2 3 1 2 2 1 2 10 1000000000 2 1 1 3 1 2 3 3 3 3 10 1000000000 1 1 3 3 1 1 3 1 3 1 10 1000000000 1 1 1 2 3 2 1 1 2 1 10 1000000000 3 2 2 3 3 2 3 1 2 3 10 1000000000 1 2 1 2 2 3 3 1 1 2 10 1000000000 2 2 1 2 3 1 2 3 3 3 10 1000000000 1 1 2 3 3 1 3 3 2 3 10 1000000000 1 3 3 2 1 ...
output:
0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #62:
score: 0
Accepted
time: 1ms
memory: 2084kb
input:
500 10 1000000000 2 4 5 3 5 2 1 1 3 5 10 1000000000 5 3 3 3 5 5 4 1 5 5 10 1000000000 1 3 3 3 3 1 1 3 4 3 10 1000000000 1 5 3 1 5 4 4 1 5 5 10 1000000000 5 1 4 1 2 3 3 1 3 3 10 1000000000 2 4 4 3 2 3 1 3 2 5 10 1000000000 1 5 5 3 3 4 2 4 1 2 10 1000000000 4 5 4 5 5 3 3 1 4 2 10 1000000000 4 2 5 4 1 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #63:
score: 0
Accepted
time: 1ms
memory: 2132kb
input:
500 10 1000000000 9 2 6 5 5 2 7 3 4 7 10 1000000000 5 4 2 10 7 9 5 4 8 1 10 1000000000 6 5 4 6 1 1 7 8 1 9 10 1000000000 7 4 6 7 2 1 8 10 8 9 10 1000000000 7 6 6 3 10 2 6 9 5 9 10 1000000000 7 5 8 3 10 8 9 7 7 8 10 1000000000 7 1 6 9 10 2 5 9 10 3 10 1000000000 1 7 4 7 7 1 4 10 8 8 10 1000000000 6 2...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Test #64:
score: 0
Accepted
time: 1ms
memory: 2100kb
input:
500 10 1000000000 4 8 4 14 18 8 4 6 16 17 10 1000000000 6 2 7 2 3 15 7 18 11 7 10 1000000000 11 5 16 7 5 7 13 6 11 15 10 1000000000 16 4 13 6 13 15 16 10 4 10 10 1000000000 12 19 15 1 7 13 14 10 20 8 10 1000000000 9 19 1 15 14 10 9 6 8 20 10 1000000000 15 8 9 14 12 17 9 11 1 20 10 1000000000 12 3 4 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 500 lines
Extra Test:
score: 0
Extra Test Passed