QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#871093#8615. Equal Stringsucup-team296#AC ✓26ms2560kbRust23.6kb2025-01-25 19:27:332025-01-25 19:27:33

Judging History

This is the latest submission verdict.

  • [2025-01-25 19:27:33]
  • Judged
  • Verdict: AC
  • Time: 26ms
  • Memory: 2560kb
  • [2025-01-25 19:27:33]
  • Submitted

answer

// https://contest.ucup.ac/contest/1901/problem/8615
use crate::algo_lib::collections::default_map::by_index;
use crate::algo_lib::collections::slice_ext::indices::Indices;
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;
type PreCalc = ();
fn solve(input: &mut Input, out: &mut Output, _test_case: usize, _data: &mut PreCalc) {
    let n = input.read_size();
    let q = n.min(20);
    let mut res = vec![Vec::new(); n];
    for i in 0..q {
        for j in 0..n {
            if i != j {
                out.print_line((i + 1, j + 1));
                out.flush();
                let d = input.read_int();
                if d == 0 {
                    return;
                }
                res[j].push(d);
            } else {
                res[j].push(0);
            }
        }
    }
    let by_id = by_index(&res);
    for v in by_id.into_values() {
        if v.len() > 1 {
            for i in v.indices() {
                for j in 0..i {
                    out.print_line((v[i] + 1, v[j] + 1));
                    out.flush();
                    if input.read_int() == 0 {
                        return;
                    }
                }
            }
        }
    }
}
pub static TEST_TYPE: TestType = TestType::Single;
pub static TASK_TYPE: TaskType = TaskType::Interactive;
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 input = crate::algo_lib::io::input::Input::stdin();
    let output = crate::algo_lib::io::output::Output::stdout();
    run(input, output);
}
pub mod algo_lib {
pub mod collections {
pub mod default_map {
use crate::algo_lib::collections::fx_hash_map::FxHashMap;
use std::collections::BTreeMap;
use std::fmt::Debug;
use std::hash::Hash;
use std::ops::{Deref, DerefMut, Index, IndexMut};
macro_rules! default_map {
    (
        $name:ident, $inner:ident, $key_trait:path, $into_values:ident, $into_iter:ident
    ) => {
        #[derive(Clone, Eq, PartialEq, Debug, Default)] pub struct $name < K : Eq +
        $key_trait, V > { inner : $inner < K, V >, default : V, } impl < K : Eq +
        $key_trait, V > Deref for $name < K, V > { type Target = $inner < K, V >; fn
        deref(& self) -> & Self::Target { & self.inner } } impl < K : Eq + $key_trait, V
        > DerefMut for $name < K, V > { fn deref_mut(& mut self) -> & mut Self::Target {
        & mut self.inner } } impl < K : Eq + $key_trait, V : Clone > $name < K, V > { pub
        fn new(default : V) -> Self { Self { inner : $inner ::default(), default, } } pub
        fn get(& self, key : & K) -> & V { self.inner.get(key).unwrap_or(& self.default)
        } pub fn get_mut(& mut self, key : K) -> & mut V { self.inner.entry(key)
        .or_insert_with(|| self.default.clone()) } pub fn into_values(self) ->
        $into_values < K, V > { self.inner.into_values() } } impl < K : Eq + $key_trait,
        V : Clone > Index < K > for $name < K, V > { type Output = V; fn index(& self,
        index : K) -> & Self::Output { self.get(& index) } } impl < K : Eq + $key_trait,
        V : Clone > IndexMut < K > for $name < K, V > { fn index_mut(& mut self, index :
        K) -> & mut Self::Output { self.get_mut(index) } } impl < K : Eq + $key_trait, V
        > IntoIterator for $name < K, V > { type Item = (K, V); type IntoIter =
        $into_iter < K, V >; fn into_iter(self) -> Self::IntoIter { self.inner
        .into_iter() } } impl < K : Eq + $key_trait, V : Default > FromIterator < (K, V)
        > for $name < K, V > { fn from_iter < T : IntoIterator < Item = (K, V) >> (iter :
        T) -> Self { Self { inner : $inner ::from_iter(iter), default : V::default(), } }
        }
    };
}
type HashMapIntoValues<K, V> = std::collections::hash_map::IntoValues<K, V>;
type HashMapIntoIter<K, V> = std::collections::hash_map::IntoIter<K, V>;
default_map!(DefaultHashMap, FxHashMap, Hash, HashMapIntoValues, HashMapIntoIter);
type TreeMapIntoValues<K, V> = std::collections::btree_map::IntoValues<K, V>;
type TreeMapIntoIter<K, V> = std::collections::btree_map::IntoIter<K, V>;
default_map!(DefaultTreeMap, BTreeMap, Ord, TreeMapIntoValues, TreeMapIntoIter);
pub fn qty<T: Eq + Hash + Clone>(arr: &[T]) -> DefaultHashMap<T, usize> {
    let mut map = DefaultHashMap::new(0);
    for item in arr {
        map[item.clone()] += 1;
    }
    map
}
pub fn by_index<T: Eq + Hash + Clone>(arr: &[T]) -> DefaultHashMap<T, Vec<usize>> {
    let mut map = DefaultHashMap::new(Vec::new());
    for (i, item) in arr.iter().enumerate() {
        map[item.clone()].push(i);
    }
    map
}
}
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 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 io {
pub mod input {
use std::fs::File;
use std::io::{Read, Stdin};
use std::mem::MaybeUninit;
enum InputSource {
    Stdin(Stdin),
    File(File),
    Slice,
    Delegate(Box<dyn Read + Send>),
}
pub struct Input {
    input: InputSource,
    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 Input {
    const DEFAULT_BUF_SIZE: usize = 4096;
    pub fn slice(input: &[u8]) -> Self {
        Self {
            input: InputSource::Slice,
            buf: input.to_vec(),
            at: 0,
            buf_read: input.len(),
            eol: true,
        }
    }
    pub fn stdin() -> Self {
        Self {
            input: InputSource::Stdin(std::io::stdin()),
            buf: vec![0; Self::DEFAULT_BUF_SIZE],
            at: 0,
            buf_read: 0,
            eol: true,
        }
    }
    pub fn file(file: File) -> Self {
        Self {
            input: InputSource::File(file),
            buf: vec![0; Self::DEFAULT_BUF_SIZE],
            at: 0,
            buf_read: 0,
            eol: true,
        }
    }
    pub fn delegate(reader: impl Read + Send + 'static) -> Self {
        Self {
            input: InputSource::Delegate(Box::new(reader)),
            buf: vec![0; Self::DEFAULT_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 = match &mut self.input {
                InputSource::Stdin(stdin) => stdin.read(&mut self.buf).unwrap(),
                InputSource::File(file) => file.read(&mut self.buf).unwrap(),
                InputSource::Delegate(reader) => reader.read(&mut self.buf).unwrap(),
                InputSource::Slice => 0,
            };
            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 std::cmp::Reverse;
use std::fs::File;
use std::io::{Stdout, 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,
        }
    }
}
enum OutputDest<'s> {
    Stdout(Stdout),
    File(File),
    Buf(&'s mut Vec<u8>),
    Delegate(Box<dyn Write + 's>),
}
pub struct Output<'s> {
    output: OutputDest<'s>,
    buf: Vec<u8>,
    at: usize,
    bool_output: BoolOutput,
    precision: Option<usize>,
    separator: u8,
}
impl<'s> Output<'s> {
    pub fn buf(buf: &'s mut Vec<u8>) -> Self {
        Self::new(OutputDest::Buf(buf))
    }
    pub fn delegate(delegate: impl Write + 'static) -> Self {
        Self::new(OutputDest::Delegate(Box::new(delegate)))
    }
    fn new(output: OutputDest<'s>) -> Self {
        Self {
            output,
            buf: vec![0; Self::DEFAULT_BUF_SIZE],
            at: 0,
            bool_output: BoolOutput::YesNoCaps,
            precision: None,
            separator: b' ',
        }
    }
}
impl Output<'static> {
    pub fn stdout() -> Self {
        Self::new(OutputDest::Stdout(std::io::stdout()))
    }
    pub fn file(file: File) -> Self {
        Self::new(OutputDest::File(file))
    }
}
impl Output<'_> {
    const DEFAULT_BUF_SIZE: usize = 4096;
    pub fn flush(&mut self) {
        if self.at != 0 {
            match &mut self.output {
                OutputDest::Stdout(stdout) => {
                    stdout.write_all(&self.buf[..self.at]).unwrap();
                    stdout.flush().unwrap();
                }
                OutputDest::File(file) => {
                    file.write_all(&self.buf[..self.at]).unwrap();
                    file.flush().unwrap();
                }
                OutputDest::Buf(buf) => buf.extend_from_slice(&self.buf[..self.at]),
                OutputDest::Delegate(delegate) => {
                    delegate.write_all(&self.buf[..self.at]).unwrap();
                    delegate.flush().unwrap();
                }
            }
            self.at = 0;
        }
    }
    pub fn print<T: Writable>(&mut self, s: T) {
        s.write(self);
    }
    pub fn print_line<T: Writable>(&mut self, s: T) {
        self.print(s);
        self.put(b'\n');
    }
    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 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;
        }
        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);
    }
}
}
}
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 test_type {
pub enum TestType {
    Single,
    MultiNumber,
    MultiEof,
}
pub enum TaskType {
    Classic,
    Interactive,
}
}
}
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 2048kb

input:

4
21
24
21
21
23
0

output:

1 2
1 3
1 4
2 1
2 3
2 4

result:

ok Found equal strings: 2, 4

Test #2:

score: 0
Accepted
time: 0ms
memory: 2176kb

input:

4
28
0

output:

1 2
1 3

result:

ok Found equal strings: 1, 3

Test #3:

score: 0
Accepted
time: 0ms
memory: 2048kb

input:

10
23
24
24
21
25
29
25
24
28
23
29
19
26
26
18
30
29
21
24
29
26
25
29
27
27
0

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
2 1
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
3 1
3 2
3 4
3 5
3 6
3 7
3 8
3 9

result:

ok Found equal strings: 3, 9

Test #4:

score: 0
Accepted
time: 1ms
memory: 2048kb

input:

100
23
33
22
31
21
20
29
18
21
34
31
24
20
25
26
19
29
31
28
20
25
29
26
28
26
21
20
21
31
24
22
27
29
23
29
23
21
23
32
31
23
31
28
24
27
25
19
30
26
25
24
22
33
25
28
25
21
23
30
30
23
20
25
24
23
29
28
27
32
31
26
24
29
18
21
21
32
30
24
28
24
30
27
29
22
24
26
22
22
25
22
17
27
23
22
17
24
23
23...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 100, 62

Test #5:

score: 0
Accepted
time: 11ms
memory: 2176kb

input:

500
27
26
25
25
26
30
21
26
29
24
22
25
26
25
26
22
25
19
23
23
26
23
26
27
28
24
27
25
28
25
24
30
21
21
23
31
26
32
29
24
26
20
17
23
24
30
18
29
24
27
23
32
24
25
25
27
25
31
31
25
29
28
22
28
24
24
22
29
26
25
21
26
23
25
29
24
25
29
24
28
24
20
26
24
19
23
26
27
28
21
19
26
19
26
24
23
26
25
20...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 334, 100

Test #6:

score: 0
Accepted
time: 11ms
memory: 2176kb

input:

750
25
27
27
23
28
23
18
30
25
23
28
27
23
24
26
24
24
22
23
27
22
23
26
21
27
28
20
27
18
30
26
24
27
28
20
25
31
24
27
20
20
23
30
26
24
16
22
32
20
24
25
30
24
26
17
28
19
30
25
25
23
21
22
26
24
26
23
20
22
20
23
20
26
19
21
28
23
34
22
24
25
30
23
25
28
25
30
29
19
23
27
26
24
24
24
24
26
28
28...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 698, 130

Test #7:

score: 0
Accepted
time: 22ms
memory: 2432kb

input:

999
25
26
22
24
27
23
26
33
23
26
26
31
24
27
24
27
25
26
26
24
32
23
26
28
22
22
29
24
25
25
22
26
24
26
26
30
24
26
23
31
25
28
21
29
26
24
29
22
21
23
23
26
34
28
15
27
28
26
23
28
26
25
21
26
25
26
30
22
18
20
24
22
28
25
23
24
29
26
23
24
20
31
29
24
19
22
24
20
25
26
23
25
22
28
22
28
29
23
20...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 281, 205

Test #8:

score: 0
Accepted
time: 17ms
memory: 2432kb

input:

1000
21
18
24
18
28
19
30
28
26
27
30
21
31
18
29
23
26
24
29
28
31
24
24
23
25
28
27
27
24
22
33
28
29
28
24
26
28
27
19
25
24
26
21
24
27
24
21
27
19
24
29
25
21
28
31
22
21
21
26
21
27
24
21
25
24
20
25
24
18
31
20
24
27
25
23
22
22
19
23
28
27
24
27
21
23
24
25
33
33
31
26
25
22
29
23
26
24
24
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 327, 211

Test #9:

score: 0
Accepted
time: 18ms
memory: 2560kb

input:

1000
26
31
25
28
25
28
27
23
19
28
23
17
31
26
23
23
17
20
27
25
25
20
24
23
32
24
28
28
23
30
25
24
26
26
23
24
18
26
23
22
25
28
24
26
27
24
26
30
29
27
26
22
22
34
26
21
20
25
26
34
24
26
27
23
25
24
23
28
25
26
24
25
24
28
26
23
28
19
24
22
20
26
25
25
32
28
32
28
29
23
25
28
24
28
21
26
25
26
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 448, 220

Test #10:

score: 0
Accepted
time: 17ms
memory: 2560kb

input:

1000
25
23
22
30
24
33
26
28
27
24
27
23
35
24
24
29
23
29
28
22
30
25
26
26
26
28
25
24
19
29
23
26
21
21
27
25
25
27
24
14
22
20
25
27
24
28
25
23
23
28
21
26
23
25
19
29
21
25
22
29
26
25
20
25
33
31
23
27
29
27
22
30
25
22
29
22
27
22
25
21
23
28
25
27
23
28
26
21
28
23
31
28
20
22
26
30
24
29
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 970, 279

Test #11:

score: 0
Accepted
time: 21ms
memory: 2560kb

input:

1000
24
28
22
30
21
22
27
26
25
24
21
27
27
23
26
29
26
22
32
26
24
31
26
19
23
28
26
25
21
24
22
29
26
22
23
20
26
28
28
24
28
22
24
26
25
21
25
30
28
25
27
30
22
25
30
26
23
27
27
18
24
25
23
29
22
22
33
21
23
22
27
30
25
22
20
22
25
23
17
21
25
28
22
32
12
25
24
21
21
25
26
24
17
19
31
27
20
25
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 843, 619

Test #12:

score: 0
Accepted
time: 20ms
memory: 2560kb

input:

1000
25
25
25
25
33
24
26
27
27
25
23
31
24
22
24
23
22
25
26
24
15
31
14
31
26
20
27
24
23
25
29
28
23
23
17
24
24
29
19
27
27
27
29
24
28
26
26
28
28
28
22
25
20
24
20
27
28
23
30
26
24
27
32
32
22
26
27
28
27
25
20
28
23
23
20
23
28
29
24
21
27
27
23
25
29
20
23
21
24
28
26
27
20
28
23
26
24
32
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 717, 678

Test #13:

score: 0
Accepted
time: 18ms
memory: 2432kb

input:

1000
27
25
26
23
18
23
23
29
24
21
24
31
30
27
29
25
33
23
21
29
25
24
26
27
27
31
23
21
27
25
21
28
27
25
25
24
27
26
19
24
28
20
19
29
26
30
22
22
26
23
25
24
25
18
23
31
22
25
29
30
23
21
28
27
28
17
27
24
28
17
26
27
26
24
29
26
23
30
26
21
23
20
30
26
28
26
25
23
32
29
26
26
27
27
28
29
28
25
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 737, 239

Test #14:

score: 0
Accepted
time: 18ms
memory: 2432kb

input:

1000
24
24
31
23
23
28
29
26
26
23
26
22
28
33
26
23
25
18
29
20
19
25
28
31
24
22
22
28
26
21
31
24
24
25
29
21
22
21
25
23
29
22
21
23
27
26
29
27
31
27
26
25
23
28
25
23
26
21
29
25
24
25
18
24
28
23
22
23
23
28
22
27
27
20
22
27
26
24
28
26
26
23
22
21
21
26
26
28
26
27
24
27
23
23
20
20
22
23
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 796, 112

Test #15:

score: 0
Accepted
time: 15ms
memory: 2304kb

input:

1000
24
31
28
25
27
26
25
23
28
23
30
29
26
24
28
28
24
23
20
27
28
26
32
23
23
26
27
30
30
24
26
22
22
28
33
30
28
27
30
29
18
29
28
29
35
26
20
29
28
26
22
25
25
24
23
25
33
32
22
22
20
21
24
24
25
24
20
23
19
21
28
26
23
26
31
22
29
26
17
19
23
27
25
26
30
25
26
19
26
20
29
27
25
29
25
30
25
26
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 855, 634

Test #16:

score: 0
Accepted
time: 13ms
memory: 2432kb

input:

1000
25
25
26
24
27
22
25
27
24
24
25
28
20
30
24
25
30
27
21
29
24
26
21
29
25
28
26
31
29
25
27
28
25
26
27
24
16
23
26
22
32
24
22
28
26
29
19
20
21
20
25
24
23
22
28
24
22
31
28
27
30
24
23
27
25
29
24
27
24
23
21
31
24
26
26
25
24
29
20
27
24
22
24
31
31
20
21
19
24
28
25
24
26
27
25
28
21
29
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 508, 196

Test #17:

score: 0
Accepted
time: 23ms
memory: 2432kb

input:

1000
26
23
24
19
31
25
29
24
29
26
30
23
23
28
27
24
30
21
27
27
25
18
26
24
25
27
22
20
29
27
29
28
25
24
27
24
24
22
29
30
25
30
22
18
26
24
18
27
29
26
31
25
26
21
27
19
24
17
24
32
25
24
33
24
29
23
26
26
28
29
21
24
24
24
22
26
22
28
29
25
31
23
21
30
28
26
24
24
25
26
24
20
17
26
19
27
28
29
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 255, 30

Test #18:

score: 0
Accepted
time: 16ms
memory: 2304kb

input:

1000
20
29
27
30
22
26
28
30
25
22
24
24
22
24
25
30
24
25
23
22
22
24
25
25
28
26
27
24
21
22
26
23
18
25
23
26
27
24
27
25
26
27
24
23
20
33
24
24
29
26
23
21
30
25
22
25
25
25
25
26
27
21
23
24
24
25
25
28
33
31
26
27
28
25
28
32
26
29
19
24
25
20
25
26
30
16
23
26
23
23
24
27
23
28
28
28
25
26
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 957, 284

Test #19:

score: 0
Accepted
time: 15ms
memory: 2560kb

input:

1000
26
27
24
21
28
26
25
26
28
34
24
22
25
27
29
30
23
21
27
23
26
28
26
27
21
24
20
28
25
21
26
26
28
25
26
22
35
23
31
24
28
23
29
26
23
26
19
26
20
23
23
26
26
28
18
27
23
29
32
19
19
26
22
21
24
18
22
32
17
21
25
26
22
25
27
22
23
25
24
29
26
23
28
22
28
24
26
28
23
27
26
24
26
32
22
22
27
25
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 478, 343

Test #20:

score: 0
Accepted
time: 16ms
memory: 2304kb

input:

1000
19
26
17
23
28
33
29
28
26
30
29
30
33
24
19
28
30
25
28
24
25
27
30
25
26
26
28
28
16
28
26
22
26
24
21
23
23
25
18
26
27
23
24
25
30
25
29
25
20
29
21
32
24
26
29
24
30
22
23
31
27
17
25
23
24
25
20
25
21
27
26
24
22
29
22
27
19
26
17
26
27
30
24
29
29
32
21
25
23
26
24
21
24
27
26
19
27
27
3...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 402, 352

Test #21:

score: 0
Accepted
time: 23ms
memory: 2560kb

input:

1000
23
28
26
24
24
29
21
26
27
29
27
29
28
23
28
17
25
25
31
24
22
26
25
20
25
30
23
22
26
35
17
24
23
20
28
24
22
25
30
18
27
18
20
26
27
23
29
26
20
20
30
25
21
24
25
26
23
19
29
21
25
28
19
26
29
28
28
20
31
20
27
27
28
29
21
20
28
21
28
25
22
25
24
25
32
28
26
20
24
27
26
26
22
28
24
22
28
28
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 874, 462

Test #22:

score: 0
Accepted
time: 12ms
memory: 2560kb

input:

1000
27
20
28
27
32
26
27
26
26
32
29
25
27
27
19
23
27
22
25
26
27
24
26
21
21
23
28
26
21
29
28
32
24
35
28
27
29
28
26
29
26
18
25
24
28
27
30
28
28
25
27
28
30
27
21
31
26
23
24
23
29
26
29
23
24
28
23
28
23
29
30
27
23
31
21
30
28
24
26
25
22
30
23
18
22
22
28
24
29
26
27
27
20
22
24
28
28
26
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 747, 521

Test #23:

score: 0
Accepted
time: 24ms
memory: 2560kb

input:

1000
32
30
27
29
27
20
25
29
28
22
20
29
26
29
30
22
28
23
26
19
28
22
25
25
25
26
26
20
21
27
21
25
19
30
32
21
26
23
25
25
23
20
27
27
29
26
25
21
31
23
22
25
32
28
22
21
27
28
28
27
23
24
28
25
26
31
26
29
29
29
23
19
29
29
27
20
27
25
25
20
30
25
29
17
25
26
24
22
22
22
22
22
23
29
23
28
27
23
3...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 861, 621

Test #24:

score: 0
Accepted
time: 19ms
memory: 2560kb

input:

1000
21
25
24
21
21
25
20
21
27
29
29
30
24
23
28
27
29
20
29
32
22
24
23
19
27
31
28
30
26
26
28
24
28
26
26
21
29
17
31
9
24
29
26
26
27
20
31
29
33
25
23
21
25
22
24
26
25
23
23
24
35
24
27
26
29
32
33
27
25
24
17
19
24
27
24
22
27
24
23
19
26
17
25
27
23
27
22
29
21
21
26
29
23
21
26
25
22
33
28...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 920, 143

Test #25:

score: 0
Accepted
time: 18ms
memory: 2304kb

input:

1000
24
26
31
29
29
26
25
21
20
25
24
22
24
27
26
28
35
26
26
28
22
27
19
27
24
18
24
24
24
23
27
26
28
30
22
27
22
24
23
24
24
33
23
24
27
27
24
22
23
26
22
23
30
25
25
26
22
26
26
24
27
24
20
31
27
27
22
23
26
25
20
25
23
18
26
30
26
24
25
26
26
17
24
26
25
31
22
26
27
26
22
30
22
26
22
17
26
30
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 17, 979

Test #26:

score: 0
Accepted
time: 17ms
memory: 2304kb

input:

1000
23
21
26
24
25
26
24
29
25
21
31
27
26
32
28
20
27
25
32
20
31
24
25
24
23
26
28
21
21
24
20
29
26
22
24
25
25
19
20
23
25
24
32
31
17
32
16
29
27
28
23
26
23
23
25
25
24
22
31
23
27
27
24
31
28
24
23
23
23
23
30
24
20
24
26
28
24
20
28
25
26
13
24
25
24
21
22
22
25
23
19
20
28
27
21
29
21
27
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 538, 39

Test #27:

score: 0
Accepted
time: 15ms
memory: 2304kb

input:

1000
26
21
33
27
24
24
25
24
21
27
23
23
23
28
23
25
26
28
27
18
27
27
22
26
26
27
24
23
25
30
29
30
19
23
23
26
25
27
23
23
24
28
28
24
24
31
17
29
27
30
30
26
21
27
24
23
26
22
21
23
28
23
26
24
29
21
26
27
25
28
30
25
19
21
21
21
25
29
24
33
26
30
28
22
21
29
25
31
25
30
23
25
22
28
24
25
22
23
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 412, 98

Test #28:

score: 0
Accepted
time: 26ms
memory: 2432kb

input:

1000
26
24
24
20
28
25
25
24
29
26
24
25
21
23
23
28
24
26
22
30
25
18
28
29
19
26
26
30
26
23
23
24
23
26
26
24
27
25
21
29
23
26
21
25
24
30
26
27
27
24
29
21
23
20
26
23
27
23
30
27
18
24
20
27
24
25
30
27
20
25
23
24
30
30
29
24
17
20
27
21
26
29
25
22
24
21
27
19
26
31
23
24
23
33
26
23
30
18
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 970, 598

Test #29:

score: 0
Accepted
time: 18ms
memory: 2432kb

input:

1000
22
23
29
28
18
28
23
26
21
24
25
28
25
30
23
20
29
20
33
24
26
27
24
24
25
27
28
21
19
27
20
24
24
21
23
27
27
26
26
25
30
26
25
27
27
18
28
27
27
23
29
23
22
28
21
27
22
25
24
19
29
26
24
27
19
23
23
22
21
27
19
27
22
25
21
25
26
24
23
26
26
29
28
25
23
27
25
23
26
23
24
24
25
25
25
30
20
31
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 844, 657

Test #30:

score: 0
Accepted
time: 14ms
memory: 2304kb

input:

1000
26
19
25
23
23
23
28
25
28
29
26
26
26
31
22
24
23
23
24
24
21
25
20
27
21
28
19
23
18
28
24
24
24
19
30
24
26
31
28
24
21
20
22
27
23
26
24
22
20
19
24
24
29
19
14
19
24
22
17
22
25
24
27
20
24
25
28
31
20
27
19
23
22
26
28
21
26
21
28
33
16
22
24
22
28
25
26
21
27
28
23
22
25
31
30
31
24
31
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 718, 716

Test #31:

score: 0
Accepted
time: 21ms
memory: 2432kb

input:

1000
18
23
17
22
22
31
22
20
19
29
28
23
19
28
23
19
23
20
25
29
27
30
21
23
24
26
25
27
24
25
34
32
23
27
26
29
22
24
31
25
25
24
24
21
27
26
22
24
23
21
20
29
32
28
26
23
28
24
21
23
14
28
24
26
23
26
25
31
27
24
25
20
25
26
24
31
31
28
28
30
20
19
25
23
23
27
29
24
28
26
23
26
22
23
22
22
27
28
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 240, 57

Test #32:

score: 0
Accepted
time: 21ms
memory: 2432kb

input:

1000
21
16
29
23
24
25
28
20
16
27
28
23
27
20
26
17
20
33
19
32
27
31
28
28
19
22
25
26
28
23
20
20
20
27
28
21
23
22
18
24
26
26
26
26
23
27
31
26
22
30
24
25
20
22
28
20
23
28
25
24
27
24
22
32
29
22
23
24
23
23
22
24
21
27
26
22
27
24
24
24
24
32
27
25
27
26
27
17
20
29
24
29
24
27
19
31
16
26
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 116, 113

Test #33:

score: 0
Accepted
time: 14ms
memory: 2432kb

input:

1000
30
30
28
21
27
28
30
27
22
27
21
28
25
21
28
25
21
25
20
29
28
23
22
25
26
24
27
24
21
26
24
24
28
17
24
27
26
27
23
20
26
24
24
26
25
29
27
23
24
28
29
22
20
30
24
18
27
26
29
29
28
29
23
23
21
27
19
23
25
17
23
26
29
21
26
23
25
19
24
25
24
27
24
30
25
21
29
20
22
20
25
26
30
21
20
23
27
26
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 635, 175

Test #34:

score: 0
Accepted
time: 14ms
memory: 2560kb

input:

1000
25
23
20
27
25
25
32
31
26
16
30
29
22
35
21
24
24
27
32
27
22
32
28
23
23
24
20
24
22
28
23
26
20
30
18
16
28
26
25
25
32
32
26
19
28
19
21
30
21
26
27
26
28
25
24
23
22
29
21
26
22
25
27
26
26
24
21
26
24
25
29
20
21
24
31
23
27
24
23
28
26
27
30
20
35
30
32
24
18
17
32
24
30
25
27
28
23
24
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 509, 235

Test #35:

score: 0
Accepted
time: 18ms
memory: 2432kb

input:

1000
23
25
25
23
26
23
26
19
24
28
26
21
25
27
22
22
31
23
20
27
27
26
19
24
15
26
31
19
23
24
23
22
23
23
20
21
32
26
22
32
18
21
31
23
21
29
28
27
29
23
23
19
24
26
23
27
31
27
19
24
25
23
22
28
24
24
20
24
27
23
27
33
22
22
24
25
27
29
25
28
23
28
23
23
30
22
25
23
22
26
20
24
26
23
25
18
20
27
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 294, 30

Test #36:

score: 0
Accepted
time: 19ms
memory: 2432kb

input:

1000
24
27
21
15
25
24
25
22
31
28
25
22
25
31
28
28
25
32
23
33
23
30
23
29
24
27
27
28
32
24
20
32
31
22
29
28
23
29
29
22
27
21
24
22
26
24
22
26
27
20
29
28
23
23
22
27
19
23
28
24
30
27
24
28
23
24
25
24
28
26
27
23
28
22
20
25
25
25
27
15
21
26
22
28
25
29
31
30
27
29
23
24
23
28
22
26
27
20
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 904, 634

Test #37:

score: 0
Accepted
time: 20ms
memory: 2432kb

input:

1000
23
21
26
20
21
23
18
30
22
18
24
21
31
23
19
22
27
23
27
31
20
24
25
21
29
20
25
27
24
25
26
20
26
32
15
23
22
19
23
29
26
29
26
26
33
26
22
22
29
28
22
26
24
25
22
30
26
30
25
26
24
18
22
22
29
21
24
26
23
23
21
22
27
26
18
20
24
25
23
20
19
29
28
25
25
23
20
27
24
24
25
26
31
25
25
23
27
26
1...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 778, 693

Test #38:

score: 0
Accepted
time: 19ms
memory: 2432kb

input:

1000
29
32
29
19
24
33
22
27
22
18
26
25
32
21
23
22
17
23
23
30
19
21
21
28
22
25
24
28
25
24
25
25
21
29
20
29
25
24
25
30
31
21
25
22
25
26
26
25
25
26
32
28
29
27
28
25
23
31
30
26
26
27
34
21
23
24
26
22
21
24
22
24
23
28
26
24
24
27
24
28
24
27
21
22
23
28
23
30
23
22
23
24
23
27
21
16
27
26
2...

output:

1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61
1 62
1 6...

result:

ok Found equal strings: 912, 336

Test #39:

score: 0
Accepted
time: 0ms
memory: 2176kb

input:

2
0

output:

1 2

result:

ok Found equal strings: 1, 2

Extra Test:

score: 0
Extra Test Passed