1pub use crate::tools::{
2 Bytes, Chars, FastInput, FastIterPrint, FastOutput, FastPrint, IterPrint, Scan, ScanSource,
3 Scanner, Usize1, read_all_unchecked,
4};
5pub use crate::{iter_print, prepare_io, scan};
6pub use std::io::{Read, Write};
7
8#[macro_export]
12macro_rules! prepare_io {
13 (@inner ($dol:tt) $scanner:expr, $writer:expr) => {
14 #[allow(unused_imports)]
15 use $crate::tools::{FastIterPrint, FastOutput, FastPrint, IterPrint, ScanSource as _};
16 #[allow(unused_mut, unused_variables)]
17 let mut __scanner = $scanner;
18 #[allow(unused_mut, unused_variables)]
19 let mut __out = FastOutput::new($writer);
20 #[allow(unused_macros)]
21 macro_rules! sc { ($dol($dol t:tt)*) => { $crate::scan!(__scanner, $dol($dol t)*) } }
22 #[allow(unused_macros)]
23 macro_rules! sv { ($dol($dol t:tt)*) => { $crate::scan_value!(__scanner, $dol($dol t)*) } }
24 #[allow(unused_macros)]
25 macro_rules! pp { ($dol($dol t:tt)*) => { $crate::iter_print!(fast; __out, $dol($dol t)*) } }
26 $crate::prepare!(@debug ($));
27 };
28 (buffered; $reader:expr, $writer:expr $(,)?) => {
29 $crate::prepare_io!(@inner ($) unsafe { $crate::tools::BufferedInput::new($reader) }, $writer);
30 };
31 ($reader:expr, $writer:expr $(,)?) => {
32 let mut __in_buf = $crate::tools::read_all_unchecked($reader);
33 __in_buf.push_str(" ");
34 $crate::prepare_io!(@inner ($) unsafe { $crate::tools::FastInput::from_slice(__in_buf.as_bytes()) }, $writer);
35 };
36}