diff --git a/README.md b/README.md index 72925ff5..c81c95eb 100644 --- a/README.md +++ b/README.md @@ -192,14 +192,35 @@ $ echo $? ⚠️ **NOTE** when you run your application with `probe-run`, the `HardFault` handler (default or user-defined) will *NOT* be executed. -### Forcing backtraces +### Backtrace options +#### --backtrace -If you'd like to see a backtrace at the end of successful program runs as well, you can enable this by setting the `--force-backtrace` flag: +The `--backtrace` flag is optional and can get passed the following values: + +* `--backtrace=always` - forced backtrace (if you'd like to see a backtrace at the end of successful program run) +* `--backtrace=never` - suppresed backtrace +* `--backtrace=auto` - default, shows a backtrace if the program panics or the stack overflows + +Run it like this (example for a forced backtrace): + +``` console +$ cargo run --bin hello --backtrace=always +``` + +#### --backtrace-limit + +The `--backtrace-limit` flag is optional and defaults to 50. It is possible to set any number. + +`--backtrace-limit=0` is accepted and means "no limit". + +To show a shortened backtrace showing 5 frames, run: ``` console -$ cargo run --bin hello --force-backtrace +$ cargo run --bin panic --backtrace-limit=5 ``` +Note: if `--backtrace=never` is set, setting `--backtrace-limit` has no effect. + ## Troubleshooting ### `probe-run --list-probes` says "No devices were found." @@ -273,7 +294,7 @@ For easier copy-paste-ability, here's an example how to try out your local `prob ```console $ cd probe-run/ -$ PROBE_RUN_IGNORE_VERSION=1 cargo run -- --chip nRF52840_xxAA --max-backtrace-len=10 hello +$ PROBE_RUN_IGNORE_VERSION=1 cargo run -- --chip nRF52840_xxAA --backtrace-limit=10 hello ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ ˆˆˆˆˆ environment variables extra flags binary to be (optional) (optional) flashed & run diff --git a/src/backtrace/mod.rs b/src/backtrace/mod.rs index 3423c116..a78cc4bf 100644 --- a/src/backtrace/mod.rs +++ b/src/backtrace/mod.rs @@ -8,10 +8,29 @@ mod pp; mod symbolicate; mod unwind; +#[derive(PartialEq, Eq)] +pub(crate) enum BacktraceOptions { + Auto, + Never, + Always, +} + +impl From<&String> for BacktraceOptions { + fn from(item: &String) -> Self { + match item.as_str() { + "auto" | "Auto" => BacktraceOptions::Auto, + "never" | "Never" => BacktraceOptions::Never, + "always" | "Always" => BacktraceOptions::Always, + _ => panic!("options for `--backtrace` are `auto`, `never`, `always`."), + } + } +} + pub(crate) struct Settings<'p> { pub(crate) current_dir: &'p Path, - pub(crate) max_backtrace_len: u32, - pub(crate) force_backtrace: bool, + pub(crate) backtrace: BacktraceOptions, + pub(crate) panic_present: bool, + pub(crate) backtrace_limit: u32, pub(crate) shorten_paths: bool, } @@ -20,7 +39,7 @@ pub(crate) fn print( core: &mut Core, elf: &Elf, active_ram_region: &Option, - settings: &Settings, + settings: &mut Settings<'_>, ) -> anyhow::Result { let unwind = unwind::target(core, elf, active_ram_region); @@ -31,12 +50,24 @@ pub(crate) fn print( .iter() .any(|raw_frame| raw_frame.is_exception()); - let print_backtrace = settings.force_backtrace - || unwind.outcome == Outcome::StackOverflow - || unwind.corrupted - || contains_exception; + let print_backtrace = match settings.backtrace { + BacktraceOptions::Never => false, + BacktraceOptions::Always => true, + BacktraceOptions::Auto => { + settings.panic_present + || unwind.outcome == Outcome::StackOverflow + || unwind.corrupted + || contains_exception + } + }; + + // `0` disables the limit and we want to show _all_ frames + if settings.backtrace_limit == 0 { + let frames_number = &frames.len(); + settings.backtrace_limit = *frames_number as u32; + } - if print_backtrace && settings.max_backtrace_len > 0 { + if print_backtrace && settings.backtrace_limit > 0 { pp::backtrace(&frames, settings); if unwind.corrupted { diff --git a/src/backtrace/pp.rs b/src/backtrace/pp.rs index 367e5960..dcf3974a 100644 --- a/src/backtrace/pp.rs +++ b/src/backtrace/pp.rs @@ -8,7 +8,7 @@ use crate::dep; use super::{symbolicate::Frame, Settings}; -/// Pretty prints processed backtrace frames up to `max_backtrace_len` +/// Pretty prints processed backtrace frames up to `backtrace_limit` pub(crate) fn backtrace(frames: &[Frame], settings: &Settings) { println!("{}", "stack backtrace:".dimmed()); @@ -59,10 +59,10 @@ pub(crate) fn backtrace(frames: &[Frame], settings: &Settings) { frame_index += 1; - if frame_index >= settings.max_backtrace_len { + if frame_index >= settings.backtrace_limit { log::warn!( "maximum backtrace length of {} reached; cutting off the rest.const ", - settings.max_backtrace_len + settings.backtrace_limit ); log::warn!("note: re-run with `--max-backtrace-len=` to extend this limit"); diff --git a/src/cli.rs b/src/cli.rs index 77a89629..2af54839 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -55,13 +55,13 @@ pub(crate) struct Opts { #[structopt(short = "V", long)] version: bool, - /// Print a backtrace even if the program ran successfully - #[structopt(long)] - pub(crate) force_backtrace: bool, + /// Disable or enable backtrace (auto in case of panic or stack overflow). + #[structopt(long, default_value = "auto")] + pub(crate) backtrace: String, /// Configure the number of lines to print before a backtrace gets cut off #[structopt(long, default_value = "50")] - pub(crate) max_backtrace_len: u32, + pub(crate) backtrace_limit: u32, /// Whether to shorten paths (e.g. to crates.io dependencies) in backtraces and defmt logs #[structopt(long)] diff --git a/src/main.rs b/src/main.rs index 003d8658..47d2bf02 100644 --- a/src/main.rs +++ b/src/main.rs @@ -88,10 +88,14 @@ fn run_target_program(elf_path: &Path, chip_name: &str, opts: &cli::Opts) -> any .map(|canary| canary.touched(&mut core, elf)) .transpose()? .unwrap_or(false); - let backtrace_settings = backtrace::Settings { + + let panic_present = canary_touched || halted_due_to_signal; + + let mut backtrace_settings = backtrace::Settings { current_dir, - max_backtrace_len: opts.max_backtrace_len, - force_backtrace: opts.force_backtrace || canary_touched || halted_due_to_signal, + backtrace_limit: opts.backtrace_limit, + backtrace: (&opts.backtrace).into(), + panic_present, shorten_paths: opts.shorten_paths, }; @@ -99,7 +103,7 @@ fn run_target_program(elf_path: &Path, chip_name: &str, opts: &cli::Opts) -> any &mut core, elf, &target_info.active_ram_region, - &backtrace_settings, + &mut backtrace_settings, )?; core.reset_and_halt(TIMEOUT)?; diff --git a/tests/README.md b/tests/README.md index 844e3fca..71859224 100644 --- a/tests/README.md +++ b/tests/README.md @@ -46,12 +46,12 @@ rustflags = [ Write your test that captures `probe-run`s output for your test ELF and check the result with `insta::assert_snapshot!(run_output);` ### 3. cargo insta review -When you run `cargo test -- -ignored` for the first time after you've added your new test, it will fail. +When you run `cargo test -- --ignored` for the first time after you've added your new test, it will fail. This first run creates a snapshot which you can then store as a "known good" run ```console -$ cargo install insta +$ cargo install cargo-insta $ cargo insta review ``` diff --git a/tests/snapshots/test__stack_overflow_can_suppress_backtrace.snap b/tests/snapshots/test__stack_overflow_can_suppress_backtrace.snap new file mode 100644 index 00000000..4bf56d6c --- /dev/null +++ b/tests/snapshots/test__stack_overflow_can_suppress_backtrace.snap @@ -0,0 +1,4326 @@ +--- +source: tests/test.rs +expression: run_result.output + +--- +(HOST) INFO flashing program (6.25 KiB) +(HOST) INFO success! +──────────────────────────────────────────────────────────────────────────────── + INFO ack(m=10, n=10) + INFO ack(m=10, n=9) + INFO ack(m=10, n=8) + INFO ack(m=10, n=7) + INFO ack(m=10, n=6) + INFO ack(m=10, n=5) + INFO ack(m=10, n=4) + INFO ack(m=10, n=3) + INFO ack(m=10, n=2) + INFO ack(m=10, n=1) + INFO ack(m=10, n=0) + INFO ack(m=9, n=1) + INFO ack(m=9, n=0) + INFO ack(m=8, n=1) + INFO ack(m=8, n=0) + INFO ack(m=7, n=1) + INFO ack(m=7, n=0) + INFO ack(m=6, n=1) + INFO ack(m=6, n=0) + INFO ack(m=5, n=1) + INFO ack(m=5, n=0) + INFO ack(m=4, n=1) + INFO ack(m=4, n=0) + INFO ack(m=3, n=1) + INFO ack(m=3, n=0) + INFO ack(m=2, n=1) + INFO ack(m=2, n=0) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=2, n=5) + INFO ack(m=2, n=4) + INFO ack(m=2, n=3) + INFO ack(m=2, n=2) + INFO ack(m=2, n=1) + INFO ack(m=2, n=0) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=3, n=13) + INFO ack(m=3, n=12) + INFO ack(m=3, n=11) + INFO ack(m=3, n=10) + INFO ack(m=3, n=9) + INFO ack(m=3, n=8) + INFO ack(m=3, n=7) + INFO ack(m=3, n=6) + INFO ack(m=3, n=5) + INFO ack(m=3, n=4) + INFO ack(m=3, n=3) + INFO ack(m=3, n=2) + INFO ack(m=3, n=1) + INFO ack(m=3, n=0) + INFO ack(m=2, n=1) + INFO ack(m=2, n=0) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=2, n=5) + INFO ack(m=2, n=4) + INFO ack(m=2, n=3) + INFO ack(m=2, n=2) + INFO ack(m=2, n=1) + INFO ack(m=2, n=0) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=2, n=13) + INFO ack(m=2, n=12) + INFO ack(m=2, n=11) + INFO ack(m=2, n=10) + INFO ack(m=2, n=9) + INFO ack(m=2, n=8) + INFO ack(m=2, n=7) + INFO ack(m=2, n=6) + INFO ack(m=2, n=5) + INFO ack(m=2, n=4) + INFO ack(m=2, n=3) + INFO ack(m=2, n=2) + INFO ack(m=2, n=1) + INFO ack(m=2, n=0) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=2, n=29) + INFO ack(m=2, n=28) + INFO ack(m=2, n=27) + INFO ack(m=2, n=26) + INFO ack(m=2, n=25) + INFO ack(m=2, n=24) + INFO ack(m=2, n=23) + INFO ack(m=2, n=22) + INFO ack(m=2, n=21) + INFO ack(m=2, n=20) + INFO ack(m=2, n=19) + INFO ack(m=2, n=18) + INFO ack(m=2, n=17) + INFO ack(m=2, n=16) + INFO ack(m=2, n=15) + INFO ack(m=2, n=14) + INFO ack(m=2, n=13) + INFO ack(m=2, n=12) + INFO ack(m=2, n=11) + INFO ack(m=2, n=10) + INFO ack(m=2, n=9) + INFO ack(m=2, n=8) + INFO ack(m=2, n=7) + INFO ack(m=2, n=6) + INFO ack(m=2, n=5) + INFO ack(m=2, n=4) + INFO ack(m=2, n=3) + INFO ack(m=2, n=2) + INFO ack(m=2, n=1) + INFO ack(m=2, n=0) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=1, n=53) + INFO ack(m=1, n=52) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=0, n=53) + INFO ack(m=0, n=54) + INFO ack(m=1, n=55) + INFO ack(m=1, n=54) + INFO ack(m=1, n=53) + INFO ack(m=1, n=52) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=0, n=53) + INFO ack(m=0, n=54) + INFO ack(m=0, n=55) + INFO ack(m=0, n=56) + INFO ack(m=1, n=57) + INFO ack(m=1, n=56) + INFO ack(m=1, n=55) + INFO ack(m=1, n=54) + INFO ack(m=1, n=53) + INFO ack(m=1, n=52) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=0, n=53) + INFO ack(m=0, n=54) + INFO ack(m=0, n=55) + INFO ack(m=0, n=56) + INFO ack(m=0, n=57) + INFO ack(m=0, n=58) + INFO ack(m=1, n=59) + INFO ack(m=1, n=58) + INFO ack(m=1, n=57) + INFO ack(m=1, n=56) + INFO ack(m=1, n=55) + INFO ack(m=1, n=54) + INFO ack(m=1, n=53) + INFO ack(m=1, n=52) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=0, n=53) + INFO ack(m=0, n=54) + INFO ack(m=0, n=55) + INFO ack(m=0, n=56) + INFO ack(m=0, n=57) + INFO ack(m=0, n=58) + INFO ack(m=0, n=59) + INFO ack(m=0, n=60) + INFO ack(m=2, n=61) + INFO ack(m=2, n=60) + INFO ack(m=2, n=59) + INFO ack(m=2, n=58) + INFO ack(m=2, n=57) + INFO ack(m=2, n=56) + INFO ack(m=2, n=55) + INFO ack(m=2, n=54) + INFO ack(m=2, n=53) + INFO ack(m=2, n=52) + INFO ack(m=2, n=51) + INFO ack(m=2, n=50) + INFO ack(m=2, n=49) + INFO ack(m=2, n=48) + INFO ack(m=2, n=47) + INFO ack(m=2, n=46) + INFO ack(m=2, n=45) + INFO ack(m=2, n=44) + INFO ack(m=2, n=43) + INFO ack(m=2, n=42) + INFO ack(m=2, n=41) + INFO ack(m=2, n=40) + INFO ack(m=2, n=39) + INFO ack(m=2, n=38) + INFO ack(m=2, n=37) + INFO ack(m=2, n=36) + INFO ack(m=2, n=35) + INFO ack(m=2, n=34) + INFO ack(m=2, n=33) + INFO ack(m=2, n=32) + INFO ack(m=2, n=31) + INFO ack(m=2, n=30) + INFO ack(m=2, n=29) + INFO ack(m=2, n=28) + INFO ack(m=2, n=27) + INFO ack(m=2, n=26) + INFO ack(m=2, n=25) + INFO ack(m=2, n=24) + INFO ack(m=2, n=23) + INFO ack(m=2, n=22) + INFO ack(m=2, n=21) + INFO ack(m=2, n=20) + INFO ack(m=2, n=19) + INFO ack(m=2, n=18) + INFO ack(m=2, n=17) + INFO ack(m=2, n=16) + INFO ack(m=2, n=15) + INFO ack(m=2, n=14) + INFO ack(m=2, n=13) + INFO ack(m=2, n=12) + INFO ack(m=2, n=11) + INFO ack(m=2, n=10) + INFO ack(m=2, n=9) + INFO ack(m=2, n=8) + INFO ack(m=2, n=7) + INFO ack(m=2, n=6) + INFO ack(m=2, n=5) + INFO ack(m=2, n=4) + INFO ack(m=2, n=3) + INFO ack(m=2, n=2) + INFO ack(m=2, n=1) + INFO ack(m=2, n=0) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=1, n=53) + INFO ack(m=1, n=52) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=0, n=53) + INFO ack(m=0, n=54) + INFO ack(m=1, n=55) + INFO ack(m=1, n=54) + INFO ack(m=1, n=53) + INFO ack(m=1, n=52) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) + INFO ack(m=0, n=1) + INFO ack(m=0, n=2) + INFO ack(m=0, n=3) + INFO ack(m=0, n=4) + INFO ack(m=0, n=5) + INFO ack(m=0, n=6) + INFO ack(m=0, n=7) + INFO ack(m=0, n=8) + INFO ack(m=0, n=9) + INFO ack(m=0, n=10) + INFO ack(m=0, n=11) + INFO ack(m=0, n=12) + INFO ack(m=0, n=13) + INFO ack(m=0, n=14) + INFO ack(m=0, n=15) + INFO ack(m=0, n=16) + INFO ack(m=0, n=17) + INFO ack(m=0, n=18) + INFO ack(m=0, n=19) + INFO ack(m=0, n=20) + INFO ack(m=0, n=21) + INFO ack(m=0, n=22) + INFO ack(m=0, n=23) + INFO ack(m=0, n=24) + INFO ack(m=0, n=25) + INFO ack(m=0, n=26) + INFO ack(m=0, n=27) + INFO ack(m=0, n=28) + INFO ack(m=0, n=29) + INFO ack(m=0, n=30) + INFO ack(m=0, n=31) + INFO ack(m=0, n=32) + INFO ack(m=0, n=33) + INFO ack(m=0, n=34) + INFO ack(m=0, n=35) + INFO ack(m=0, n=36) + INFO ack(m=0, n=37) + INFO ack(m=0, n=38) + INFO ack(m=0, n=39) + INFO ack(m=0, n=40) + INFO ack(m=0, n=41) + INFO ack(m=0, n=42) + INFO ack(m=0, n=43) + INFO ack(m=0, n=44) + INFO ack(m=0, n=45) + INFO ack(m=0, n=46) + INFO ack(m=0, n=47) + INFO ack(m=0, n=48) + INFO ack(m=0, n=49) + INFO ack(m=0, n=50) + INFO ack(m=0, n=51) + INFO ack(m=0, n=52) + INFO ack(m=0, n=53) + INFO ack(m=0, n=54) + INFO ack(m=0, n=55) + INFO ack(m=0, n=56) + INFO ack(m=1, n=57) + INFO ack(m=1, n=56) + INFO ack(m=1, n=55) + INFO ack(m=1, n=54) + INFO ack(m=1, n=53) + INFO ack(m=1, n=52) + INFO ack(m=1, n=51) + INFO ack(m=1, n=50) + INFO ack(m=1, n=49) + INFO ack(m=1, n=48) + INFO ack(m=1, n=47) + INFO ack(m=1, n=46) + INFO ack(m=1, n=45) + INFO ack(m=1, n=44) + INFO ack(m=1, n=43) + INFO ack(m=1, n=42) + INFO ack(m=1, n=41) + INFO ack(m=1, n=40) + INFO ack(m=1, n=39) + INFO ack(m=1, n=38) + INFO ack(m=1, n=37) + INFO ack(m=1, n=36) + INFO ack(m=1, n=35) + INFO ack(m=1, n=34) + INFO ack(m=1, n=33) + INFO ack(m=1, n=32) + INFO ack(m=1, n=31) + INFO ack(m=1, n=30) + INFO ack(m=1, n=29) + INFO ack(m=1, n=28) + INFO ack(m=1, n=27) + INFO ack(m=1, n=26) + INFO ack(m=1, n=25) + INFO ack(m=1, n=24) + INFO ack(m=1, n=23) + INFO ack(m=1, n=22) + INFO ack(m=1, n=21) + INFO ack(m=1, n=20) + INFO ack(m=1, n=19) + INFO ack(m=1, n=18) + INFO ack(m=1, n=17) + INFO ack(m=1, n=16) + INFO ack(m=1, n=15) + INFO ack(m=1, n=14) + INFO ack(m=1, n=13) + INFO ack(m=1, n=12) + INFO ack(m=1, n=11) + INFO ack(m=1, n=10) + INFO ack(m=1, n=9) + INFO ack(m=1, n=8) + INFO ack(m=1, n=7) + INFO ack(m=1, n=6) + INFO ack(m=1, n=5) + INFO ack(m=1, n=4) + INFO ack(m=1, n=3) + INFO ack(m=1, n=2) + INFO ack(m=1, n=1) + INFO ack(m=1, n=0) +──────────────────────────────────────────────────────────────────────────────── +(HOST) ERROR the program has overflowed its stack + diff --git a/tests/snapshots/test__unsuccessful_run_can_suppress_backtrace.snap b/tests/snapshots/test__unsuccessful_run_can_suppress_backtrace.snap new file mode 100644 index 00000000..2d5608f3 --- /dev/null +++ b/tests/snapshots/test__unsuccessful_run_can_suppress_backtrace.snap @@ -0,0 +1,13 @@ +--- +source: tests/test.rs +expression: run_result.output + +--- +(HOST) INFO flashing program (5.82 KiB) +(HOST) INFO success! +──────────────────────────────────────────────────────────────────────────────── + INFO main + ERROR panicked at 'explicit panic' +──────────────────────────────────────────────────────────────────────────────── +(HOST) ERROR the program panicked + diff --git a/tests/test.rs b/tests/test.rs index da0932b0..24f84521 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -80,7 +80,7 @@ fn successful_run_has_no_backtrace() { #[ignore] fn successful_run_can_enforce_backtrace() { let run_result = - run_and_truncate("--chip nRF52840_xxAA tests/test_elfs/hello --force-backtrace"); + run_and_truncate("--chip nRF52840_xxAA tests/test_elfs/hello --backtrace=always"); assert_eq!(true, run_result.exit_status.success()); insta::assert_snapshot!(run_result.output); @@ -116,3 +116,25 @@ fn panic_verbose() { assert_eq!(false, run_result.exit_status.success()); insta::assert_snapshot!(run_result.output); } + +#[test] +// this test should not be run by default, as it requires the target hardware to be present +#[ignore] +fn unsuccessful_run_can_suppress_backtrace() { + let run_result = + run_and_truncate("--chip nRF52840_xxAA tests/test_elfs/panic --backtrace=never"); + + assert_eq!(false, run_result.exit_status.success()); + insta::assert_snapshot!(run_result.output); +} + +#[test] +// this test should not be run by default, as it requires the target hardware to be present +#[ignore] +fn stack_overflow_can_suppress_backtrace() { + let run_result = + run_and_truncate("--chip nRF52840_xxAA tests/test_elfs/overflow --backtrace=never"); + + assert_eq!(false, run_result.exit_status.success()); + insta::assert_snapshot!(run_result.output); +}