started at ; stage 2 at ; ended at
we are back. the challenge for round 13 of most glorious code guessing is to compile brainfuck.
submissions may be written in python, rust, haskell, or brainfuck itself.
brainfuck is a simple programming language that takes place on a tape with 30,000 8-bit cells. going outside these bounds is undefined behaviour, as is over- or underflowing the tape's elements. the tape head starts on the leftmost element.
the instructions are as follows:
+
increments the value under the tape head-
decrements the value under the tape head>
advances the tape head, moving it one cell to the right<
moves the tape head one cell to the left,
takes one ASCII character of input from stdin and writes its code point to the value under the tape head.
writes the value under the tape head as an ASCII character to stdout. if it is greater than 127, outside the range of ASCII characters, the behaviour is undefined[
jumps to the corresponding ]
if the value under the tape head is equal to 0. otherwise, it does nothing]
jumps to the corresponding [
if the value under the tape head is not equal to 0. otherwise, it does nothingif a program is compiled that contains characters other than these 8 instructions, or with unbalanced brackets, the behaviour is undefined
further notes on I/O:
,
instruction may write a -1 to the tape, write a 0 to the tape, or do nothing. the behaviour is implementation-defined.\r
and `` sequences.your goal, given a valid brainfuck program, is to compile an equivalent program which can later be executed by your program. as such, your program will be expected to run in two modes:
additional requirements: the APIs for each language are as follows:
program -c INFILE OUTFILE
for compilation mode, and program -r FILE
for execution modec
or an r
indicating the mode, then a null-terminated program string.you can download all the entries
written by IFcoltransG
submitted at
impersonating quintopia
7 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [package] name = "aaa" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] bytemuck = "1.7.3" clap = {version = "3.1.0", features = ["derive"]} env_logger = "0.9.0" futures = "0.3.21" pollster = "0.2.5" tokio = {version = "1.17.0", features = ["rt-multi-thread"]} wgpu = "0.12.0" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 | #![feature(string_extend_from_within)] use boring_argline_pras::{Args, Modes}; use clap::StructOpt; use comptime::comp; use runtime::exec; fn main() { match Args::parse() { Args { // Parse some args command: Modes::Run { file }, } => exec(file), Args { // Them there args aren't going to parse themselves command: Modes::Compile { in_file, out_file }, // Oh they parsed them there selves } => comp(in_file, out_file), }; // I know this is the first thing you read so sorry it's not more spicy "~" } mod comptime { use std::io::{Seek, Write}; /// make yourself at home pub fn comp(in_file: std::path::PathBuf, out_file: std::path::PathBuf) { match std::fs::File::create(out_file) { Ok(mut s) => match std::fs::read_to_string(in_file) { Ok(bf) => { match s .write(b"fn main() {\n") // hey wait .map(drop) // this was just a main() function .map_err(|e| panic!("Failure in writing file: {e}")) { // where does it set up the tape Ok(()) => (), Err(()) => (), } if let Some(l) = bf.rfind(&['.', ']', '/']) { // Oh clever :o let mut i = 1; for c in bf.chars().take(l + 1) { if let Err(e) = s.write(&b"\t".repeat(i)) { // \t indents probably meaninfless, right? panic!("An unexpected error occurred and the compiler needs to close: {e}") // right? } match match c { // right?? '+' => s.write(b"plus();\n"), // if the set up is in all these fns '-' => s.write(b"minus();\n"), // that can't be threadsafe '*' => s.write(b"asterisk();\n"), '/' => s.write(b"slash();\n"), // "\_(🤷♀️)_/" Urban muller made some changes ig '<' => s.write(b"less_than();\n"), '>' => s.write(b"greater_than();\n"), ',' => s.write(b"comma();\n"), '.' => s.write(b"period();\n"), '[' => { i += 1; s.write(b"for (;loopy();) {\n") // er, is this... rust? } ']' => { i -= 1; s.seek(std::io::SeekFrom::Current(-1)) .and_then(|_| s.write(b"}\n")) } ' ' | '\n' => Ok(0), c => panic!("Character at 4:2:127 non-handled: {c}"), // LIES! } { Ok(_) => (), Err(e) => panic!("Problem writing to the file: {e}"), } } }; if let Err(e) = s.write(b"}\n") { panic!("Error: {e}"); } } // This is getting out of hand! Err(e) => panic!("Error encountered reading from file: {e}"), }, // Now there are two of them! Err(e) => panic!("Could not to write to file: {e}"), } } } // only half of the way through... // ... // this is going to be looong :< mod runtime { use futures::executor::block_on; use std::{ cmp::min, fs::read_to_string, hint::unreachable_unchecked, io::{stdin, Read}, iter::once, path::PathBuf, str::from_utf8_unchecked, }; use tokio::runtime::*; use wgpu::{util::*, *}; const BYTES: u64 = 30_000 + 4; const IO: u64 = 128 * 1024 + 4; // TIO.RUN CANNOT PRINT MORE // DONT TRY IT async fn rt() -> Runtime { // Oh my that looks scary, haha unsafe { Runtime::new().unwrap_unchecked() } } pub fn exec(file: PathBuf) { let state = unsafe { block_on(init(file)) }; pollster::block_on(rt()) .handle() .block_on(unsafe { run(state) }) } struct Rantaimu { device: Device, queue: Queue, ouput: Buffer, input: Buffer, tape: Buffer, pipeline: ComputePipeline, ijo: BindGroupLayout, } async unsafe fn init(name: PathBuf) -> Rantaimu { let file = read_to_string(name).unwrap_unchecked(); let instance = Instance::new(Backends::all()); let adapter = instance .request_adapter(&RequestAdapterOptions::default()) .await .unwrap_unchecked(); let (device, queue) = adapter .request_device( &DeviceDescriptor { label: None, features: Features::BUFFER_BINDING_ARRAY | Features::STORAGE_RESOURCE_BINDING_ARRAY, limits: Limits::default(), }, None, ) .await .unwrap_unchecked(); // At least we don't match on eveery error anymore. // This is an absolute win. let shader = device.create_shader_module(&ShaderModuleDescriptor { label: None, source: ShaderSource::Wgsl( (r#" struct Tape { point: u32; tape: array<u32>; }; struct Spot { i: u32; o: u32; }; [[group(0), binding(0)]] var<storage, read_write> mem: Tape; [[group(0), binding(1)]] var<storage, read_write> output: Tape; [[group(0), binding(2)]] var<storage, read_write> input: Tape; fn split(index: u32) -> Spot { var nanpa : Spot; nanpa.i = index >> 2u; nanpa.o = index & 3u; return nanpa; } fn got() -> u32 { let spot = split(mem.point); return (mem.tape[spot.i] >> (spot.o * 8u)) & 255u; } fn putted(byte: u32) { let byte = byte & 255u; let spot = split(mem.point); let i = spot.i; mem.tape[i] = (mem.tape[i] ^ (got() << 8u * spot.o)) | (byte << 8u * spot.o); } fn dot_int(byte: u32) { let byte = byte & 255u; let spot = split(output.point); output.point = output.point + 1u; output.tape[spot.i] = output.tape[spot.i] | (byte << 8u * spot.o); } fn comma_int() -> u32 { let spot = split(input.point); input.point = input.point + 1u; return (input.tape[spot.i] >> (spot.o * 8u)) & 255u; } fn plus() { putted(got() + 1u); } fn minus() { putted(got() - 1u); } fn asterisk() { putted(got() * got()); } fn slash() { dot_int(got() / 100u + 48u); dot_int((got() / 10u) % 10u + 48u); dot_int(got() % 10u + 48u); } fn less_than() { mem.point = mem.point - 1u; } fn greater_than() { mem.point = mem.point + 1u; } fn period() { // dot is a reserved word dot_int(got()); } fn comma() { putted(comma_int()); } fn loopy() -> bool { return bool(got()); } [[stage(compute), workgroup_size(0)]] "# // AH! scared the shit out of me. My poor heart can only take small string lits .to_owned() + &file) // say what you want about rustfmt, it tells some great jokes .into(), ), }); // don't tell me these are just for putting data in let tap = device.create_buffer(&BufferDescriptor { label: Some("output buffer"), size: BYTES, usage: BufferUsages::all(), mapped_at_creation: false, }); let outpt = device.create_buffer(&BufferDescriptor { label: Some("io"), size: IO, usage: BufferUsages::all(), mapped_at_creation: false, }); let input = device.create_buffer(&BufferDescriptor { label: Some("i"), size: IO, usage: BufferUsages::all(), mapped_at_creation: false, }); // man here we go, bind group layouts! let ijo = device.create_bind_group_layout(&BindGroupLayoutDescriptor { label: None, entries: &[ BindGroupLayoutEntry { binding: 0, visibility: ShaderStages::COMPUTE, ty: BindingType::Buffer { ty: BufferBindingType::Storage { read_only: false }, has_dynamic_offset: false, min_binding_size: Some(8.try_into().unwrap_unchecked()), }, count: None, }, BindGroupLayoutEntry { binding: 1, visibility: ShaderStages::COMPUTE, ty: BindingType::Buffer { ty: BufferBindingType::Storage { read_only: false }, has_dynamic_offset: false, min_binding_size: Some(8.try_into().unwrap_unchecked()), }, count: None, }, BindGroupLayoutEntry { binding: 2, visibility: ShaderStages::COMPUTE, ty: BindingType::Buffer { ty: BufferBindingType::Storage { read_only: false }, has_dynamic_offset: false, min_binding_size: Some(8.try_into().unwrap_unchecked()), }, count: None, }, ], }); // Now I have peeled off my mask and you can see, that I am jan Nowe. I! >:D let pipeline_layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { label: None, bind_group_layouts: &[&ijo], push_constant_ranges: &[], }); // beware of the pipeline let pipeline = device.create_compute_pipeline(&ComputePipelineDescriptor { label: Some("computpipette"), layout: Some(&pipeline_layout), module: &shader, entry_point: "main", }); Rantaimu { device, queue, ouput: outpt, input, tape: tap, pipeline, ijo, } } async unsafe fn run(state: Rantaimu) { let stdin = stdin(); let mut input = "\x00\x00\x00\x00".to_string(); let mut input_length = stdin.lock().read_to_string(&mut input).unwrap_unchecked(); while input_length % 4 > 0 { input_length += 3; input.extend_from_within(..3) } // this looks boilerplate to me let exit = state.device.create_buffer(&BufferDescriptor { label: Some("exit"), size: BYTES, usage: BufferUsages::all(), mapped_at_creation: false, }); let entry = state.device.create_buffer_init(&BufferInitDescriptor { label: Some("entry"), contents: input.as_bytes(), usage: BufferUsages::all(), }); // So you think you can stop me. // I dont even care any more. Do your worst. let bind_group = state.device.create_bind_group(&BindGroupDescriptor { label: Some("bingroup for binding The Group"), layout: &state.ijo, entries: &[ BindGroupEntry { binding: 0, resource: state.tape.as_entire_binding(), }, BindGroupEntry { binding: 1, resource: state.ouput.as_entire_binding(), }, BindGroupEntry { binding: 2, resource: state.input.as_entire_binding(), }, ], }); let mut encoder = state .device .create_command_encoder(&CommandEncoderDescriptor::default()); // Nani encoder.copy_buffer_to_buffer(&entry, 0, &state.input, 0, min(IO, input_length as u64 + 4)); // what is going on let mut compute = encoder.begin_compute_pass(&ComputePassDescriptor::default()); compute.set_pipeline(&state.pipeline); compute.set_bind_group(0, &bind_group, &[]); compute.dispatch(1, 1, 1); drop(compute); // this code belongs down the toilet encoder.copy_buffer_to_buffer(&state.ouput, 0, &exit, 0, BYTES); // println!("submitting commands"); state.queue.submit(once(encoder.finish())); // println!("submitted commands"); let slice_soon = exit.slice(..); let soon = slice_soon.map_async(MapMode::Read); state.device.poll(Maintain::Wait); if let Ok(()) = soon.await { let slice_now_yes = slice_soon.get_mapped_range(); let data: Vec<_> = slice_now_yes.iter().collect(); // like look at this shit let start = *data[0] as u32 | (*data[1] as u32) << (1 * 8) | (*data[2] as u32) << (2 * 8) | (*data[3] as u32) << (3 * 8); // this is what rust users put up with let words: Vec<_> = data[4..start as usize + 4].iter().map(|&&x| x).collect(); // why is it so hard just to read some bytes print!("{}", from_utf8_unchecked(&words)); } else { let _: VertexState = None.expect("brok brok brok"); // I swear its like I don't know how to spell unreachable_unchecked() // cute } } // oh hej, we're done } // aa // aaa ///aaaa #[rustfmt::skip]mod boring_argline_pras{use clap::*;use std::path::*;#[derive(Parser)]pub struct Args{#[clap(subcommand)]pub command:Modes}#[derive(Subcommand)]pub enum Modes{#[clap(name="-r")]Run{file:PathBuf},#[clap(name="-c")]Compile{in_file:PathBuf,out_file:PathBuf}}} // gesundheit |
written by MathR
submitted at
6 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 | # Hhhhhhhh hhhhhh hhhhhhh, hhhhhhh hh/hh/hh. import sys as h # hhhhhh if h.argv[1] == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): # Hhhhhhhh hhh hh = open(h.argv[2]) hhhh = hh.read()[:-1] hhh = open(h.argv[3], chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"))) if hhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhh.write(chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"))) else: hhh.write(hhhh) hh.close() hhh.close() # Hhhhhhhh hhh hhhhhh. elif h.argv[1] == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhh = open(h.argv[2]) hhhh = hhhhh.read() if hhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhhhhh = input(chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"))) print(chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")), end='') else: # Hhhhhhh, hhhhh hh hhhhhhh. hhhhhh = [0 for _ in range(len('hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh'))] hhhhhhh = 0 hhhhhhhh = 0 hhhhhhhhh = input(chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) + chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"))) while hhhhhhhh < len(hhhh): hhhhhhhhhhh = hhhh[hhhhhhhh] if hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhh[hhhhhhh] = (hhhhhh[hhhhhhh] + 1)%len('hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh') elif hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhh[hhhhhhh] = (hhhhhh[hhhhhhh] - 1)%len('hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh') elif hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhhh -= 1 elif hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhhh += 1 elif hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): print(chr(hhhhhh[hhhhhhh]), end = '') # Hhhhhhhhhh elif hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): if hhhhhhhhh: hhhhhh[hhhhhhh] = ord(hhhhhhhhh[0]) hhhhhhhhh = hhhhhhhhh[1:] else: hhhhhh[hhhhhhh] = 0 elif hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) and not hhhhhh[hhhhhhh]: hhhhhhhhhh = 1 while hhhhhhhhhh: hhhhhhhh += 1 if hhhh[hhhhhhhh] == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhhhhhh += 1 elif hhhh[hhhhhhhh] == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhhhhhh -= 1 elif hhhhhhhhhhh == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")) and hhhhhh[hhhhhhh]: hhhhhhhhhh = 1 while hhhhhhhhhh: hhhhhhhh -= 1 if hhhh[hhhhhhhh] == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhhhhhh -= 1 elif hhhh[hhhhhhhh] == chr(len("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")): hhhhhhhhhh += 1 hhhhhhhh += 1 # HHHH: Hhhhhh hhhhh hh hhhhhhh, hhh hhhhhh hhhh. hhhhh.close() # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhh HHH HHH # hhhhhhhh HHHHHHHHH # hhhhhhhhh HHHHHHHHH # hhh hhh HHH HHH # hhh hhh HHH HHH # hhh hhh HHH HHH |
written by LyricLy
submitted at
impersonating gollark
5 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | import functools import re import random import sys from collections import Counter from more_itertools import grouper PERFECT = "\N{LARGE GREEN SQUARE}" GOOD = "\N{LARGE YELLOW SQUARE}" MISS = "\N{WHITE LARGE SQUARE}" WORDS = [s for a in "+-<>,.[]" for b in "+-<>,.[]" for c in "+-<>,.[]" for d in "+-<>,.[]" for e in "+-<>,.[]" if all(x not in (s:=ѕ) for ѕ in [a+b+c+d+e] for y in ("+-", "<>") for x in (y, y[::-1]))] @functools.cache def match(candidate, target): counts = Counter(target) results = [] for c, t in zip(candidate, target): if c == t: results.append(PERFECT) counts[c] -= 1 else: results.append(None) for i, c in enumerate(candidate): if results[i] is None: if counts[c]: results[i] = GOOD counts[c] -= 1 else: results[i] = MISS return "".join(results) def result_to_byte(result): n = 0 for char in result: n *= 3 n += 0 if char == MISS else 1 if char == GOOD else 2 return n def byte_to_result(byte): result = "" for _ in range(5): result += [MISS, GOOD, PERFECT][byte%3] byte //= 3 return result[::-1] def write_code(code, file): while code != (next_code := re.sub(r"[^+\-<>,.[\]]|\+-|-\+|<>|><", "", code)): code = next_code for chunk in grouper(code, 5, "+"): table = [] for word in WORDS: table.append(result_to_byte(match(word, "".join(chunk)))) file.write(bytes(table)) @functools.cache def solve(chunk): pool = list(enumerate(WORDS)) while len(pool) > 1: i, guess = random.choice(pool) answer = byte_to_result(chunk[i]) pool = [(i, word) for i, word in pool if match(guess, word) == answer] return pool[0][1] def read_code(file): code = "" while chunk := file.read(len(WORDS)): code += solve(chunk) return code def interpret_bf(code): while code != (next_code := re.sub(r"[^+\-<>,.[\]]|\+-|-\+|<>|><", "", code)): code = next_code to_execute = list(code) tape = [0]*30_000 head = 0 for i, inst in enumerate(to_execute): match inst[0]: case "+": tape[head] += 1 case "-": tape[head] -= 1 case ">": head += 1 case "<": head -= 1 case ",": if b := sys.stdin.buffer.read(1): tape[head] = b[0] case ".": sys.stdout.buffer.write(bytes([tape[head]])) if tape[head] == 10: sys.stdout.buffer.flush() case "[": level = 0 for j, c in enumerate(to_execute[i+1:], start=i+1): to_execute[j] = c.translate(str.maketrans("+-<>,.[]", "ABCDEFGH") if not tape[head] else str.maketrans("ABCDEFGH", "+-<>,.[]")) match c[0]: case "]" | "H" if level == 0: if tape[head]: to_execute[j] = "]" + str(i) break case "]" | "H": level -= 1 case "[": level += 1 case "]": j = int(inst[1:]) for k, c in enumerate(to_execute[j:i+1], start=i+1): to_execute.insert(k, c) if __name__ == "__main__": match sys.argv: case (_, "-c", infile, outfile): with open(infile) as f, open(outfile, "wb") as o: write_code(f.read(), o) case (_, "-r", file): with open(file, "rb") as f: code = read_code(f) interpret_bf(code) case _: print("invalid arguments", file=sys.stderr) |
written by razetime
submitted at
impersonating MathR
2 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | use std::env; use std::fs; use std::io::Read; fn compile(inp: String) -> String { let mut stack: Vec<usize> = Vec::new(); let is: Vec<char> = inp.chars().collect(); let mut brk: usize = 0; let mut i = 0; let mut out: String = "".to_string(); while i < inp.chars().count() { out += &(match is[i] { '+' | '-' | '<' | '>' => { let cmd: String = match is[i] {'+' => "add", '-' => "sub", '<' => "mvl", '>' => "mvr", _ => "nop"}.to_string(); let ori: char = is[i]; let mut ctr = 0; while i+ctr < inp.chars().count() && is[i+ctr] == ori { ctr += 1; } i += ctr-1; format!("{} {}",cmd,ctr) }, '.' => { "sio 0".to_string() }, ',' => { "sio 1".to_string() }, '[' => { stack.push(brk); brk += 1; format!("jfo {:?}",brk-1) }, ']' => { format!("jba {:?}",stack.pop().unwrap()) }, _ => { "".to_string() } } + "\n"); i += 1; } out } fn run(inp: String) { let lns: Vec<&str> = inp.trim_end().lines().collect(); let mut i = 0; let mut ptr = 0; let mut tape: [u8; 30_000] = [0; 30_000]; while i < lns.len() { let stmt = lns[i].split_whitespace().collect::<Vec<&str>>(); let cmd = stmt[0]; let num = stmt[1].parse::<i64>().unwrap(); match cmd { "add" => { tape[ptr] = tape[ptr].overflowing_add(num as u8).0; }, "sub" => { tape[ptr] = tape[ptr].overflowing_sub(num as u8).0; }, "mvl" => { ptr -= num as usize; }, "mvr" => { ptr += num as usize; }, "sio" => { if num != 0 { tape[ptr] = std::io::stdin().bytes().next().and_then(|result| result.ok()).map(|byte| byte as u8).unwrap(); } else { print!("{}",tape[ptr] as char); } }, "jfo" => { if tape[ptr] == 0 { let chk = format!("jba {}",num); while lns[i].to_string() != chk { i += 1; } } }, "jba" => { let chk = format!("jfo {}",num); while lns[i].to_string() != chk { i -= 1; } i -= 1; }, _ => { panic!("Malformed Code"); } } i += 1; } } fn main() { let args: Vec<String> = env::args().collect(); if args[1] == "-c" { let read: String = fs::read_to_string(&args[2]).expect("File Read Error"); fs::write(&args[3],compile(read)).expect("File Write Error"); } else if args[1] == "-r" { let read: String = fs::read_to_string(&args[2]).expect("File Read Error"); run(read); } else { println!("Usage: cg13 (-c infile outfile | -r file)"); } } |
written by gollark
submitted at
impersonating Olivia
10 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 | // Rust Compilers Tutorial - Learn Rust by writing a high-performance Brainfuck compiler! // Rust is a statically type-checked language, so we need to // import the crates we're going to need at the start of the code // `use` is short for `using namespace`, like in C++ // The `collections` crate lets us use built-ins like vectors, maps and lists // We need this so our compiler can use fast (O(1)) data structures and algorithms use std::collections; // The `env` crate gives us access to environment variables and similar information // This is used for the shell terminal interface use std::env; // `fs` contains filesystem I/O, like writing to files and reading from files // Our compiler needs to use files to store compiled code use std::fs; // `io` is the base classes for `Read`ing and `Writ`ing to things; we also need this for files use std::io; // Rust is a blazingly concurrent language, so we can use threads to make it go faster use std::thread; // Import the base classes we need that I mentioned use std::io::Read; use std::io::Write; // We're using threads, so we need our types to use the `Sync` class, from this crate use std::sync; // Our compiler needs to know which characters are valid in Brainfuck so we define them here // This is a const so we can use it in multiple borrows (it's in the compile and run parts) const CHARS: &[u8] = b"[+<.,>-]"; // Define our `main` function // All our code needs to be in here so the borrow checker can see it fn main() { let args: Vec<String> = env::args().collect(); // Rust supports pattern matching using the `match` statement // This is really like a `switch`-`case`, which you probably know about, but without `break` // We're going to use it to detect if our program is being given the // `-c` flag (compile) or the `-r` flag (run) match args[1].as_str() { "-c" => { // Open our files - we'll need to read the Brainfuck code from one of them // and write the compiled output to the other one // Because these operations deal with the operating system, they can error // Rust's error handling requires us to put `.unwrap()` on the end of any statement which might error, // so that it throws an exception we can handle let mut input = fs::File::open(&args[2]).unwrap(); let mut output = fs::File::create(&args[3]).unwrap(); // We're using a streaming algorithm to compile it, for high performance // This means we need to define some buffers to fill with data beforehand // This is an important loop, so we make sure to avoid allocations during it // by predefining them here let mut buf = [0]; let mut bits = Vec::new(); // Repeatedly read the input of our program into the buffers // The `read` method returns how many bytes it takes from the file input, // so we keep looping as long as it keeps having bytes in it while let 1 = input.read(&mut buf).unwrap() { // For each character of the input, we need to look it up in our CHARS string // so we can compile it // Instead of using a for loop, Rust has a special type of iterator class // with methods which let us loop over it with less code // Make sure to expand them out if you're trying to be more productive in a group project if let Some(index) = CHARS.iter().enumerate().find_map(|(i, char)| { // Sometimes you'll get a confusing error like "can't compare `u8` with `&u8`" // In this case, you should add * and & to make it work - this shows `cargo` that // you know how tow rite Rust code if *&char == *&&buf[0] { Some(i) } else { None } }) { // The core of our compiler algorithm. We have to sort the bits into our bits buffer. // For the computer scientist theorists: it's often thought that it's impossible to compile // Brainfuck, because Rice's theorem (https://www.tutorialspoint.com/automata_theory/rice_theorem.htm) // shows us that no algorithm can understand programs - we would need the computer to be sentient, // which philosopher John Searle showed was impossible in the Chinese Room experiment // However, since Rust isn't Turing-completed, it doesn't have this issue bits.push(index & 1); bits.push((index >> 1) & 1); bits.push((index >> 2) & 1); } // If we have enough bits, we have to write them to the output if bits.len() >= 8 { // This is a tricky algorithm, so I looked it up // at https://www.reddit.com/r/rust/comments/36ixl0/converting_a_vector_of_bits_to_an_integer/ let new = bits.split_off(8); let byte = bits.iter().rev().fold(0, |acc, &b| acc * 2 + b as u8); output.write(&[byte]); bits = new; } } } "-r" => { // The first part of our compiler's runner part has to be quite like the compiling part // since we have to read and decompile the output from compilation let mut input = fs::File::open(&args[2]).unwrap(); // Define our buffers - we now have an extra one to keep the program data in let mut buf = [0]; let mut bits = Vec::new(); let mut program = Vec::new(); while let 1 = input.read(&mut buf).unwrap() { // This reads each of bhe bits out of the byte in order and stores them so we can use them for bit in 0..8 { bits.push(buf[0] >> bit & 1); } // We have to take out all the new bits when we have them while bits.len() >= 3 { let new = bits.split_off(3); // Now, use the bits to look up in our character table from earlier, so they're decompiled // into the actual program // In a real programming language this step has to reverse the machine code instead // Fortunately, BrainFuck is really simple! program.push(CHARS[((bits[2] << 2) + (bits[1] << 1) + bits[0]) as usize]); bits = new } } // We can use concurrency to make the program faster! This is a great example of how Rust can make programs beter // This daemon thread will help us by writing to the terminal output so the main program doesn't have to let (sender, receiver) = sync::mpsc::channel(); thread::spawn(move || { let mut stdout = io::stdout(); loop { stdout.write(&[receiver.recv().unwrap()]).unwrap(); } }); // We need a lot of variables for running the decompiled program // This will store where we are in the tape and program let mut cursor = 0; let mut position = 0; // This will store the content of the tape - we need a `BTreeMap` because a vector isn't scaleable enough // This is why database software uses B-trees to store data let mut tape: collections::BTreeMap<i128, i128> = collections::BTreeMap::new(); let mut stdin = io::stdin(); loop { if position >= program.len() { break; } match program[position] { // These first two commands are really simple, since they just move t he cursor back and forward b'<' => cursor -= 1, b'>' => cursor += 1, // These next two are actually harder because we've also got to read and write the tape // We have to put them in curly braces {} so there can be a semicolon on the end, because inserting // sometimes has to return a value which we were putting in the map, so it has enough free space b'+' => { tape.insert(cursor, if let Some(value) = tape.get(&cursor) { *value + 1 } else { 1 }); }, b'-' => { tape.insert(cursor, if let Some(value) = tape.get(&cursor) { *value - 1 } else { -1 }); }, // This is the command to do output to the screen // It only has to send our data to the daemon thread from before b'.' => { sender.send(if let Some(value) = tape.get(&cursor) { *value as u8 } else { 0 }).unwrap(); } // Now we have to deal with reading input, which is kind of the opposite b',' => { // We have to make a buffer again to keep the text in let mut buf = [0]; stdin.lock().read(&mut buf).unwrap(); tape.insert(cursor, buf[0] as i128); } // These are the really hard commands to compile! // We have to look for a matching bracket to use or it won't work right b'[' => { // Fortunately, we only have to do this if the tape value is zero // If we don't know it, we assume it's zero let jump = if let Some(value) = tape.get(&cursor) { *value == 0 } else { true }; if jump { // We're going to need a stack so we know which bracket is the right one // Otherwise it might match too early and go in the wrong place let mut stack = Vec::new(); // We need to go forward until we reach the right place and then stay there loop { // If we have a closing ] bracket, pop from the stack so the top goes down if program[position] == b']' { stack.pop(); } // For an opening bracket, push it to the stack if program[position] == b'[' { stack.push(program[position]); } // We finally found the right bracket! if stack.len() == 0 && program[position] == b']' { break; } position += 1; } } } b']' => { // This is basically the same, so it's fine to just copy-paste the code // We have to do the opposite thing in the condition, because the specification code says so let jump = if let Some(value) = tape.get(&cursor) { *value != 0 } else { false }; if jump { let mut stack = Vec::new(); loop { // This has to look for the other bracket the other way round // so we use the stack the opposite way too // Otherwise it's basically the same idea as before if program[position] == b'[' { stack.pop(); } if program[position] == b']' { stack.push(program[position]); } if stack.len() == 0 && program[position] == b'[' { break; } // Go the other way here too position -= 1; } } } // Nothing else can happen, so we can tell rustc that so it makes our code more optimized _ => unreachable!() } // Make sure to add this! // Otherwise you'll just be stuck running the same bit of the code forever position += 1; } } // Only "-c" and "-r" are valid, and the user didn't put in any, so create an error _ => panic!("invalid argument"), } // We can define an exception handler here using this script // It catches any exceptions the rest of the function throws; we'll just ignore them // In a real code you'd have to tell the user about them but this is simpler std::panic::catch_unwind(|| {}); } |
written by HelloBoi
submitted at
impersonating gollark
3 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #!/bin/python3 import gzip import sys import shutil import os if len(sys.argv) == 3: # execute mode with gzip.open(sys.argv[2], "r") as f: contents = f.read() contents = ''.join([chr(x) for x in contents]) length = len(contents) tape = [0] * 30000 ip = 0 tp = 0 while ip < length: if contents[ip] == '+': tape[tp] += 1 tape[tp] %= 256 elif contents[ip] == '-': tape[tp] -= 1 if tape[tp] < 0: tape[tp] = 255 elif contents[ip] == '>': tp += 1 elif contents[ip] == '<': tp -= 1 elif contents[ip] == '[': if tape[tp] == 0: brackets = 1 while brackets != 0: if contents[ip] == '[': brackets += 1 elif contents[ip] == ']': brackets -= 1 ip += 1 ip -= 1 elif contents[ip] == ']': if tape[tp] != 0: brackets = 1 while brackets != 0: if contents[ip] == '[': brackets -= 1 elif contents[ip] == ']': brackets == 1 ip -= 1 elif contents[ip] == '.': print(chr(tape[tp]), end="") elif contents[ip] == ',': tape[tp] = ord(os.read(0, 1)) ip += 1 else: with open(sys.argv[2], "rb") as f: with gzip.open(sys.argv[3], "wb") as f_out: shutil.copyfileobj(f, f_out) |
written by quintopia
submitted at
impersonating LyricLy
5 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [When compiling, do ``c{bf program}!{bf input}`` ({bf input} is optional; you can provide it when running, but "!" is mandatory.) Output is not printable: pipe it to a file, then pipe (echo -n "r"; cat bf.out) into the next run.] +>,>+++++++++++[<--------->-]<[>++[<----->-]<[-----[>>>>++++[<++++>-]<[<++ < +++++ +<+ + +++ + +> >>-]< <<+ +.>>.<+ +++++ +++ .++++ ++++ + +.>.< --- - -. +.++ +++ .>.<- ----- --- ------- -- -.> . <+ ++ ++++ ++++ + ++++++ + ++ .-- --- --- ----- ------ - -.++++++ +++ + +.- - -.- --- -.>. < -.+++++ +++ ++++ .-- ..--- ------- --.++++++ ++ + +++ +.- ---- - ----.<< <++ + +++++ ++. [-]>[ -]]<[>> ,[>>++++[ <++ + +>- ] <<[ ->- [>+> > ]>[+[-< +>] >+ >>]< <<< <]>[- ]>[<+>- ]>[<<<+>> >- ]< ,]< < [> ]>>++<<<[ [ <]> [[> ]>> [ > >] +[< <]<[<]<+> >-] >[> ] +[->> ]<<< <[[<<]<[<]+<<[+>+<<-[>-->+<<-[>+<[>>+<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>> +< [[ <]<]> [ [<< ] <[< ]+[-<+>>-[ <<+ >++ >- [<->[ <<+> > -]] ] <[>+<-] >]> [>] >]> [>>] > >]<<[>>+ >>+ > >]< < [-> > >> >>>> ]<<[ > .>> > >>>>]<< [>- >>> >>] <<[ >,> >>]<<[> +>]<< [+< < ]<] > ]]< [++ ++++ + ++[ > +++++>+ ++++ + ++++ <<- ]>++.++ + + +.. - --- - --- .++ ++.+ . +.> + +.<---. +.-- - .+++ +++ +.- ----.-- .>- - --. < +++ + +++ ..- .>+. < .-- - -----.> -.<++ +++++ ++. --- ---.>+. <++ + ++. > +.< - -- -----.+++ +. -- - .++ +++ + ++. .-.>---. ++. <-. >+ .<--- -.+. ++.>>>]]<[->>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++++< <-]+>>>,<++[[>[->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[[-]<]++<-[<++++++ +++>[<->-]>>]>>]]<<]<]<[<]>[[<++++++++++++++++>-]>[<<+>>-]<<.>>>].,[.[-],] ] |
written by SoundOfSpouting
submitted at
impersonating Palaiologos
4 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | -- // Code by SoundOfSpouting#6980 (UID: 151149148639330304) import Data.List import System.Directory import System.Environment import System.Exit import System.IO import System.IO.Unsafe import System.Process eval = unsafePerformIO -- idiomatic genAsmInsts _ [] [] = "" genAsmInsts n os (('[', 1):is) = asmInst '[' n <> genAsmInsts (n+1) (n:os) is genAsmInsts n (o:os) ((']', 1):is) = asmInst ']' o <> genAsmInsts n os is genAsmInsts n os ((ins, c):is) = asmInst ins c <> genAsmInsts n os is asmInst '>' c = " add r1, " <> show c <> "\n" asmInst '<' c = " sub r1, " <> show c <> "\n" asmInst '+' c = " amp r1, " <> show c <> "\n" asmInst '-' c = " smp r1, " <> show c <> "\n" asmInst ',' c = (unlines $ replicate c " in r2" ) <> " sto r1, r2\n" asmInst '.' c = " movf r2, r1\n" <> (unlines $ replicate c " out r2") asmInst '[' n = "movf r2, r1 \njz r2, %loop_end_" <> show n <> "\n@loop_start_" <> show n <> "\n" asmInst ']' n = "movf r2, r1\njnz r2, %loop_start_" <> show n <> "\n@loop_end_" <> show n <> "\n" genAsm = genAsmInsts 0 [] . map (\g @ (x:_) -> (x, length g)) . groupBy (\x y -> x `elem` "><+-,." && x == y) main = do let (args, progName) = (eval getArgs, eval getProgName) let usageWarning = "Usage:\n " <> progName <> " -c [INFILE] [OUTFILE]\n " <> progName <> " -r [FILE]\n" let installationWarning cmd = "Could not find command \"" <> cmd <> "\"!\n" <> progName <> " requires asm2bf v1.5.4a to be installed!\n" let exitError e = putStr e >> exitWith (ExitFailure 1) let assertCommandExists cmd = if eval (waitForProcess ph) == ExitSuccess then return () else exitError $ installationWarning cmd where (_, _, _, ph) = eval $ createProcess (proc "which" [cmd]){ std_out = CreatePipe } let executeCommand cmd args = eval $ assertCommandExists cmd >> createProcess (proc cmd args){ std_in = CreatePipe, std_out = CreatePipe, std_err = CreatePipe } let executeCommandIn hin cmd args = eval $ assertCommandExists cmd >> createProcess (proc cmd args){ std_in = UseHandle hin, std_out = CreatePipe, std_err = CreatePipe } let getCommandOutput (_, Just hout, _, _) = eval $ hGetContents hout case () of _ | length args >= 3 && args !! 0 == "-c" -> withFile (args !! 1) ReadMode (\sourceFile -> do withFile ("temp.asm") WriteMode $ flip hPutStr $ genAsm $ getCommandOutput $ executeCommandIn sourceFile "bfstrip" [] putStr $ getCommandOutput $ executeCommand "bfmake" ["temp.asm"] renameFile "temp.b" $ args !! 2) | length args >= 2 && args !! 0 == "-r" -> putStr $ getCommandOutput $ executeCommandIn stdin "bfi" [args !! 1] | True -> exitError usageWarning |
written by Palaiologos
submitted at
impersonating Olivia
3 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | import subprocess import os def has(name): from shutil import which return which(name) is not None if not has('gcc'): print('SNESHT!') os.exit(1) if not has('perl'): print('SMOFT!') os.exit(1) def do(action, action2, inp): with open("mraowmrrmrmnyanyameow", "w") as f: f.write(action2) f.write(r"""use re 'eval'; ''=~('('.'?'.'{'.('`'|'%').('['^'-').('`'|'!').('`'|',').'"'.('!'^'+').('!'^'+').('`'|'-').('['^'"').('{'^'[').'\\'.'$'.('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').('`'|'/').('['^')').('{'^'[').'='.('{'^'[').'<'.'<'."'".('`'^'%').('`'^'.').('`'^'$')."'".';'.('!'^'+').'#'.('`'|')').('`'|'.').('`'|'#').('`'|',').('['^'.').('`'|'$').('`'|'%').('{'^'[').'<'.('['^'(').('['^'/').('`'|'$').('`'|')').('`'|'/').'.'.('`'|'(').'>'.('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').'/'.'*'.('{'^'[').'~'.'~'.'~'.'~'.('{'^'[').'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.'~'.'-'.'~'.'-'.'~'.('{'^'[').'~'.'~'.'~'.'~'.('{'^'[').'*'.'/'.('!'^'+').'#'.('`'|')').('`'|'.').('`'|'#').('`'|',').('['^'.').('`'|'$').('`'|'%').('{'^'[').'<'.('['^'(').('['^'/').('`'|'$').('`'|',').('`'|')').('`'|'"').'.'.('`'|'(').'>'.('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').'/'.'*'.('{'^'[').('{'^'[').('{'^'(').('`'^')').('`'^'.').('`'^"'").('`'^',').('`'^'%').('{'^'[').('{'^'+').('`'^'!').('`'^"'").('`'^'%').('{'^'[').('`'^'#').('`'^'/').('`'^'-').('{'^'+').('{'^')').('`'^'%').('{'^'(').('{'^'(').('`'^'/').('{'^')').('{'^'[').('`'^'!').('`'^'.').('`'^'$').('{'^'[').('`'^'$').('`'^'%').('`'^'#').('`'^'/').('`'^'-').('{'^'+').('{'^')').('`'^'%').('{'^'(').('{'^'(').('`'^'/').('{'^')').'.'.('{'^'[').('`'^'-').('`'^'!').('`'^'$').('`'^'%').('{'^'[').('`'^'&').('`'^'/').('{'^')').('{'^'[').('{'^'/').('`'^'(').('`'^'%').('{'^'[').('`'^'%').('{'^'(').('`'^'/').('`'^',').('`'^'!').('`'^'.').('`'^"'").('{'^'(').('{'^'[').('`'^'#').('`'^'/').('`'^'$').('`'^'%').('{'^'[').('`'^"'").('{'^'.').('`'^'%').('{'^'(').('{'^'(').('`'^')').('`'^'.').('`'^"'").('{'^'[').('`'^'%').('{'^'-').('`'^'%').('`'^'.').('{'^'/').('{'^'[').('{'^'[').'-'.'-'.('{'^'[').('{'^'[').('^'^('`'|'.')).('`'|'#').('`'|'!').('`'|'$').('^'^('`'|'*')).('^'^('`'|'/')).('^'^('`'|',')).('`'|'#').('`'|'!').('`'|'&').('`'|'$').('^'^('`'|',')).('`'|'&').('`'|'#').('^'^('`'|'.')).('^'^('`'|'-')).('`'|'$').('^'^('`'|'*')).('^'^('`'|')')).('`'|'#').('^'^('`'|')')).('^'^('`'|',')).('^'^('`'|'(')).('^'^('`'|')')).('^'^('`'|'-')).('^'^('`'|'.')).('^'^('`'|'(')).('^'^('`'|'/')).('`'|'!').('^'^('`'|',')).('`'|'#').('^'^('`'|'-')).('`'|'"').(':'&'=').('^'^('`'|')')).('^'^('`'|'-')).('`'|'$').(':'&'=').('^'^('`'|'/')).('`'|'$').('{'^'[').('{'^'[').'*'.'/'.('!'^'+').'#'.('`'|')').('`'|'.').('`'|'#').('`'|',').('['^'.').('`'|'$').('`'|'%').('{'^'[').'<'.('['^'(').('['^'/').('['^')').('`'|')').('`'|'.').('`'|"'").'.'.('`'|'(').'>'.('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('{'^'[').'/'.'*'.('{'^'[').('{'^'[').('`'^'#').('`'|'/').('`'|'.').('['^'/').('`'|'!').('`'|')').('`'|'.').('['^'(').('{'^'[').('`'|'!').('{'^'[').('['^'(').('['^'.').('`'|'&').('`'|'&').('`'|')').('['^'#').('{'^'[').('`'|'!').('['^')').('['^')').('`'|'!').('['^'"').('{'^'[').('`'|')').('`'|'-').('['^'+').('`'|',').('`'|'%').('`'|'-').('`'|'%').('`'|'.').('['^'/').('`'|'!').('['^'/').('`'|')').('`'|'/').('`'|'.').('{'^'[').('['^',').('['^')').('`'|')').('['^'/').('['^'/').('`'|'%').('`'|'.').('{'^'[').('`'|'"').('['^'"').('{'^'[').('{'^'"').('['^'.').('['^'/').('`'|'!').('{'^'[').('`'^'-').('`'|'/').('['^')').('`'|')').('{'^'[').('`'|')').('`'|'.').('{'^'[').('^'^('`'|',')).('^'^('`'|'.')).('^'^('`'|'/')).('^'^('`'|'.')).'.'.('{'^'[').('`'^'$').('`'|'%').('`'|'&').('`'|'!').('['^'.').('`'|',').('['^'/').('{'^'[').('`'|'"').('`'|',').('`'|'/').('`'|'#').('`'|'+').('{'^'[').('['^'(').('`'|')').('['^'!').('`'|'%').('{'^'[').('`'|')').('['^'(').('{'^'[').('^'^('`'|'(')).('^'^('`'|'+')).('`'^'+').'.'.('{'^'[').('{'^',').('`'|'/').('['^')').('`'|'+').('['^'(').('{'^'[').('`'|"'").('['^')').('`'|'%').('`'|'!').('['^'/').('{'^'[').('`'|'/').('`'|'.').('{'^'[').('`'|',').('`'|'/').('['^',').'-'.('`'|'%').('`'|'.').('['^'/').('['^')').('`'|'/').('['^'+').('['^'"').('{'^'[').('`'|'$').('`'|'!').('['^'/').('`'|'!').'.'.('{'^'[').('{'^'[').'*'.'/'.('!'^'+').('['^'/').('['^'"').('['^'+').('`'|'%').('`'|'$').('`'|'%').('`'|'&').('{'^'[').('['^'-').('`'|'/').('`'|')').('`'|'$').'*'.('{'^'-').';'.('['^'/').('['^'"').('['^'+').('`'|'%').('`'|'$').('`'|'%').('`'|'&').('{'^'[').('`'|')').('`'|'.').('['^'/').('{'^'[').('`'^')').';'.('['^'/').('['^'"').('['^'+').('`'|'%').('`'|'$').('`'|'%').('`'|'&').('{'^'[').('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('{'^'.').';'.('['^'/').('['^'"').('['^'+').('`'|'%').('`'|'$').('`'|'%').('`'|'&').('{'^'[').('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('`'|'#').('`'|'(').('`'|'!').('['^')').('{'^'[').('{'^'*').';'.('['^'/').('['^'"').('['^'+').('`'|'%').('`'|'$').('`'|'%').('`'|'&').('{'^'[').('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('`'|',').('`'|'/').('`'|'.').('`'|"'").('{'^'[').('`'|',').('`'|'/').('`'|'.').('`'|"'").('{'^'[').('{'^')').';'.('{'^'*').('{'^'[').('['^'/').('`'|'"').'['.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).']'.';'.('{'^'*').'*'.('`'|')').('['^'*').','.'*'.('`'|'/').('['^'*').';'.('`'^')').('{'^'[').('`'|')').('['^'+').','.('`'|'/').('['^'+').','.('`'|')').('`'|'-').';'.('{'^'.').('{'^'[').('`'|',').('`'|'/').','.('`'|'(').('`'|')').','.('`'|'#').';'.('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('['^'(').('`'|'(').('`'|'/').('['^')').('['^'/').('{'^'[').('['^'/').('^'^('`'|'.')).'['.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).']'.','.('['^'/').('^'^('`'|'/')).'['.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).']'.'['.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).']'.','.('['^'/').('^'^('`'|',')).'['.('^'^('`'|',')).']'.'['.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).']'.'['.('^'^('`'|'/')).('^'^('`'|')')).']'.';'.('`'^')').('{'^'[').('`'|'#').('^'^('`'|'/')).','.('`'|'#').('^'^('`'|',')).','.('['^')').';'.('`'^')').('{'^'[').('`'|'"').('['^'(').'='.('^'^('`'|'/')).'<'.'<'.('^'^('`'|'/')).('^'^('`'|'(')).';'.('!'^'+').'#'.('`'|'$').('`'|'%').('`'|'&').('`'|')').('`'|'.').('`'|'%').('{'^'[').('`'^'(').'('.('`'|'!').')'.'('.('`'|'#').('['^'(').'='.'='.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.'?'.'('.'('.('`'^')').'*'.')'.('{'^'/').')'.'['.('`'|'!').']'.':'.'('.'('.('{'^'*').'*'.')'.('{'^'/').')'.'['.('`'|'!').']'.')'.('!'^'+').'#'.('`'|'$').('`'|'%').('`'|'&').('`'|')').('`'|'.').('`'|'%').('{'^'[').('`'^'$').('{'^'*').'('.('`'|'!').')'.('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('['^'(').('`'|'(').('`'|'/').('['^')').('['^'/').('{'^'[').('`'^'"').('^'^('`'|'.')).'_'.'#'.'#'.('`'|'!').'('.('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('['^'(').('`'|'(').('`'|'/').('['^')').('['^'/').('{'^'[').('['^'+').')'.'\\'.'{'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('['^'+').'-'.'('.('['^'+').'>'.'>'.('`'|'!').')'.';'.'\\'.'}'.('!'^'+').'#'.('`'|'$').('`'|'%').('`'|'&').('`'|')').('`'|'.').('`'|'%').('{'^'[').('`'^'$').('{'^')').'('.('`'|'!').')'.('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('['^'(').('`'|'(').('`'|'/').('['^')').('['^'/').('{'^'[').('`'^'"').('^'^('`'|'/')).'_'.'#'.'#'.('`'|'!').'('.('['^'.').('`'|'.').('['^'(').('`'|')').('`'|"'").('`'|'.').('`'|'%').('`'|'$').('{'^'[').('['^'(').('`'|'(').('`'|'/').('['^')').('['^'/').('{'^'[').('['^'+').')'.'\\'.'{'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('['^'+').'+'.'('.'('.('['^'+').'^'.('^'^('`'|'(')).('^'^('`'|'+')).('^'^('`'|'+')).('^'^('`'|'-')).('^'^('`'|'+')).')'.'>'.'>'.('`'|'!').')'.';'.'\\'.'}'.('!'^'+').('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|"'").('`'|'#').'('.('{'^'-').('{'^'[').('{'^'/').','.('`'^')').'*'.('`'^'#').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'+').','.('`'^')').('{'^'[').('`'|'#').('['^'(').')'.'\\'.'{'.('`'^')').('{'^'[').('`'|')').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'+').';'.'+'.'+'.('`'|')').')'.('`'^'#').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.'+'.'+'.('`'^'#').'['.('`'^'(').'('.('`'|')').')'.']'.';'.'\\'.'}'.('`'^'$').('{'^'*').'('.('^'^('`'|',')).')'.';'.('`'^'$').('{'^'*').'('.('^'^('`'|'*')).')'.';'.('`'^'$').('{'^'*').'('.('^'^('`'|'(')).')'.';'.('`'^'$').('{'^')').'('.('^'^('`'|',')).')'.';'.('`'^'$').('{'^')').'('.('^'^('`'|'*')).')'.';'.('`'^'$').('{'^')').'('.('^'^('`'|'(')).')'.';'.('!'^'+').('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|"'").('`'|'"').'('.('`'^')').'*'.('`'^'#').','.('`'^')').'*'.('`'^'"').','.('`'^')').('{'^'[').('`'|'+').','.('`'^')').('{'^'[').('`'|'%').')'.'\\'.'{'.('`'^')').('{'^'[').('`'|')').','.('['^'(').'='.('^'^('`'|'.')).';'.('`'|')').('`'|'&').'('.('`'|'%').')'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'+').';'.'+'.'+'.('`'|')').')'.('['^'(').'+'.'='.('`'^'#').'['.('`'|')').']'.','.('`'^'"').'['.('`'|')').']'.'='.('['^'(').';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'+').';'.'+'.'+'.('`'|')').')'.('['^'(').'+'.'='.('`'^'#').'['.('`'|')').']'.','.('`'^'"').'['.('`'|')').']'.'='.('['^'(').'-'.('`'^'#').'['.('`'|')').']'.';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|',').('['^'(').('^'^('`'|'/')).'('.('{'^'-').('{'^'[').('{'^'/').','.('`'^')').'*'.('{'^'(').('`'^'!').','.('`'^')').'*'.('`'^'#').','.('`'^')').'*'.('`'^'"').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'+').','.('`'^')').('{'^'[').('`'|'#').('['^'(').')'.'\\'.'{'.('`'^')').'*'.('`'|'"').','.('`'|')').','.('`'|'*').','.('`'|'#').('^'^('`'|'.')).','.('`'|'#').('^'^('`'|'/')).';'.('`'|')').('`'|'&').'('.('`'^'#').'='.'='.('`'^'"').')'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'.')).')'.';'.('`'|'*').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('!'^'+').('`'|'#').('^'^('`'|'/')).'='.('`'^'(').'('.('`'|'*').')'.']'.';'.'-'.'-'.('`'|'*').';'.'*'.('`'|'"').'+'.'+'.'='.'('.('`'^'(').'('.('`'|'*').')'.'<'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.'\\'.'{'.('`'|')').('`'|'&').'('.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').')'.')'.'!'.'='.('`'|'#').('^'^('`'|'/')).')'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'-'.'-'.('`'|'*').';'.'*'.('`'|'"').'+'.'+'.'='.'('.('`'^'(').'('.('`'|'*').')'.'<'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.('`'|'*').'<'.('^'^('`'|'.')).')'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.('`'|'*').';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'^'#').'='.'='.('`'^'"').')'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'/')).')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('!'^'+').('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('^'^('`'|'.')).']'.';'.('^'^('`'|'.')).'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.'\\'.'{'.('`'|')').('`'|'&').'('.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').')'.')'.'!'.'='.('`'|'#').('^'^('`'|'/')).')'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'-'.'-'.('`'|'*').';'.'*'.'-'.'-'.('`'|'"').'='.'('.('`'^'(').'('.('`'|'*').')'.'>'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.'('.('`'|'*').'+'.('^'^('`'|'/')).')'.':'.('`'|'*').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.'\\'.'}'.'\\'.'}'.'\\'.'}'.('`'^')').('{'^'[').('`'|',').('['^'+').('^'^('`'|'/')).'('.('{'^'-').('{'^'[').('{'^'/').','.('`'^')').'*'.('{'^'(').('`'^'!').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'-').','.('`'^')').('{'^'[').('`'|'#').('['^'(').')'.'\\'.'{'.('`'^')').('{'^'[').('`'|')').','.('`'|'*').','.('['^'+').','.('['^'*').','.('['^'+').('`'|',').','.('['^'*').('`'|',').','.('`'|'.').('`'|'-').','.('`'|'#').('^'^('`'|'.')).','.('`'|'#').('^'^('`'|'/')).','.('`'|'$').('`'|')').('`'|'&').('`'|'&').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.'('.('['^'+').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.'<'.('^'^('`'|'.')).';'.'+'.'+'.('`'|')').')'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.('['^'+').';'.('`'|')').('`'|'&').'('.('`'|')').'<'.('`'|'-').('!'^'+').')'.'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'|'*').'='.('`'|')').','.'+'.'+'.('`'|')').';'.';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.'('.('['^'+').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.'<'.('^'^('`'|'.')).')'.'\\'.'{'.('{'^'(').('`'^'!').'['.('`'|'*').'+'.'+'.']'.'='.'~'.('['^'+').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.('`'|')').('`'|'&').'('.('`'|'*').'='.'='.('`'|'-').')'.('`'|'"').('['^')').('`'|'%').('`'|'!').('`'|'+').';'.'\\'.'}'.'\\'.'}'.'\\'.'}'.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('`'|'*').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'.').'-'.('^'^('`'|'/')).')'.';'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'>'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.('`'|')').')'.'\\'.'{'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'<'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'='.('`'|')').')'.'\\'.'{'.('{'^'(').('`'^'!').'['.('`'|'-').'+'.'('.'('.('`'|')').'+'.('^'^('`'|'/')).')'.'>'.'>'.('^'^('`'|'/')).')'.']'.'='.('`'|'*').'-'.('`'|')').';'.('`'|'*').('!'^'+').'='.('`'|')').'+'.('^'^('`'|'/')).';'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'>'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.'\\'.'}'.'\\'.'}'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).','.('`'|'.').('`'|'-').'='.('^'^('`'|'.')).','.('['^'*').'='.('`'|'.').','.('['^'*').('`'|',').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'-').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('['^'+').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.','.('['^'+').('`'|',').'='.('{'^'(').('`'^'!').'['.('`'|'-').'+'.'('.('['^'+').'>'.'>'.('^'^('`'|'/')).')'.']'.','.('`'|'$').('`'|')').('`'|'&').('`'|'&').'='.('^'^('`'|'/')).';'.('`'|')').('`'|'&').'('.('['^'+').('`'|',').'='.'='.('['^'*').('`'|',').'&'.'&'.'('.('['^'*').'+'.('['^'+').('`'|',').')'.'<'.('`'|'.').')'.'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'|'*').'='.('^'^('`'|'.')).';'.('`'|'*').'<'.('['^'+').('`'|',').'&'.'&'.('`'^'(').'('.('['^'+').'+'.('`'|'*').')'.'='.'='.('`'^'(').'('.('['^'*').'+'.('`'|'*').')'.';'.'+'.'+'.('`'|'*').')'.';'.('`'|')').('`'|'&').'('.('`'|'*').'='.'='.('['^'+').('`'|',').')'.('`'|'$').('`'|')').('`'|'&').('`'|'&').'='.('^'^('`'|'.')).';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|'$').('`'|')').('`'|'&').('`'|'&').')'.'+'.'+'.('`'|'.').('`'|'-').','.('['^'*').'='.('['^'+').','.('['^'*').('`'|',').'='.('['^'+').('`'|',').';'.('{'^'(').('`'^'!').'['.('`'|'-').'+'.'('.('['^'+').'>'.'>'.('^'^('`'|'/')).')'.('!'^'+').']'.'='.('`'|'.').('`'|'-').';'.'\\'.'}'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'.').('`'|'-').';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|',').('['^'(').('^'^('`'|',')).'('.('{'^'-').('{'^'[').('{'^'/').','.('`'^')').'*'.('{'^'(').('`'^'!').','.('`'^')').'*'.('`'^'#').','.('`'^')').'*'.('`'^'"').','.('`'^')').'*'.('`'^'$').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'+').','.('`'^')').('{'^'[').('`'|'#').('['^'(').')'.'\\'.'{'.('`'^')').'*'.('`'|'"').','.('`'|')').','.('`'|'*').','.('['^'/').','.('`'|'$').','.('`'|'#').('^'^('`'|'.')).','.('`'|'#').('^'^('`'|'/')).';'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'.')).')'.';'.('`'|'*').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'^'(').'('.('`'|'*').')'.']'.';'.'-'.'-'.('`'|'*').';'.('['^'/').'='.'('.('`'^'(').'('.('`'|'*').')'.'<'.('`'|'#').('^'^('`'|'/')).')'.';'.('`'|'*').'+'.'='.('`'|'.').';'.'*'.('`'|'"').'+'.'+'.'='.('['^'/').'&'.('^'^('`'|'/')).'?'.'~'.('`'|'*').':'.('`'|'*').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).','.('`'|'$').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'.').'<'.'='.('`'|'*').')'.('`'|'$').'+'.'='.('^'^('`'|'/')).','.('`'|'*').'-'.'='.('`'|'.').';'.('`'|')').('`'|'&').'('.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').('!'^'+').')'.')'.'!'.'='.('`'|'#').('^'^('`'|'/')).')'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'-'.'-'.('`'|'*').';'.('['^'/').'='.('`'|'#').('^'^('`'|'.')).';'.('['^'/').'='.'('.('['^'/').'<'.'<'.('^'^('`'|'/')).')'.'|'.'('.('`'^'(').'('.('`'|'*').')'.'<'.('`'|'#').('^'^('`'|'/')).')'.';'.('`'|')').('`'|'&').'('.('`'^'$').'['.('['^'/').']'.'!'.'='.('`'|'$').')'.('`'|'*').'+'.'='.('`'|'.').','.('`'^'$').'['.('['^'/').']'.'='.('`'|'$').';'.'*'.('`'|'"').'+'.'+'.'='.'('.('['^'/').'&'.('^'^('`'|'/')).')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.('`'|'*').'<'.('^'^('`'|'.')).')'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.('`'|'*').';'.'\\'.'}'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('^'^('`'|'.')).'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.'\\'.'{'.('`'|')').('`'|'&').'('.('{'^'(').('`'^'!').'['.('`'|')').']'.'<'.('`'|'.').')'.'\\'.'{'.('{'^'(').('`'^'!').'['.('`'|')').']'.'+'.'='.('`'|'.').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|'*').'='.('`'|')').'-'.('^'^('`'|'/')).';'.('{'^'(').('`'^'!').'['.('`'|'*').']'.'<'.('`'|'.').';'.'-'.'-'.('`'|'*').')'.';'.('{'^'(').('`'^'!').'['.('`'|'*').']'.'-'.'='.('!'^'+').('`'|'.').';'.('`'|')').'='.('`'|'*').';'.'\\'.'}'.'\\'.'}'.'\\'.'}'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'/')).')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).','.('`'|'$').'+'.'='.('^'^('`'|'/')).','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('^'^('`'|'.')).']'.';'.('^'^('`'|'.')).'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'.').'<'.'='.('`'|'*').')'.('`'|'$').'+'.'='.('^'^('`'|'/')).','.('`'|'*').'-'.'='.('`'|'.').';'.('`'|')').('`'|'&').'('.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').')'.')'.'!'.'='.('`'|'#').('^'^('`'|'/')).')'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'-'.'-'.('`'|'*').';'.('['^'/').'='.('`'|'#').('^'^('`'|'.')).';'.('['^'/').'='.'('.('['^'/').'<'.'<'.('^'^('`'|'/')).')'.'|'.'('.('`'^'(').'('.('`'|'*').')'.'>'.('`'|'#').('^'^('`'|'/')).')'.';'.('`'|')').('`'|'&').'('.('`'^'$').'['.('['^'/').']'.'!'.'='.('`'|'$').')'.('`'|'*').'+'.'='.('`'|'.').','.('`'^'$').'['.('['^'/').']'.'='.('`'|'$').';'.'*'.'-'.'-'.('`'|'"').'='.'('.('['^'/').'&'.('^'^('`'|'/')).')'.'?'.'~'.'('.('`'|'*').'+'.('^'^('`'|'/')).')'.':'.('`'|'*').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('^'^('`'|'.')).('!'^'+').';'.'\\'.'}'.'\\'.'}'.'\\'.'}'.('`'^')').('{'^'[').('`'|',').('['^'+').('^'^('`'|',')).'('.('`'^')').'*'.('{'^'(').('`'^'!').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'-').')'.'\\'.'{'.('`'^')').('{'^'[').('`'|')').','.('`'|'*').','.('`'|'$').','.('`'|'.').('`'|'-').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).','.('`'|'.').('`'|'-').'='.('^'^('`'|'.')).';'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.'<'.('^'^('`'|'.')).';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|'*').'='.'~'.('`'|'*').';'.('`'|')').('`'|'&').'('.('`'|'.').'<'.'='.('`'|'*').')'.('`'|'.').('`'|'-').'+'.'+'.';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('`'|'*').';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|')').'<'.('`'|'-').')'.'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'|'$').'='.('`'|')').','.'+'.'+'.('`'|')').';'.';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.'<'.('^'^('`'|'.')).')'.'\\'.'{'.('`'|'*').'='.'~'.('`'|'*').';'.('`'|')').('`'|'&').'('.('`'|'.').'<'.'='.('`'|'*').')'.('`'|'.').('`'|'-').'+'.'+'.';'.('{'^'(').('`'^'!').'['.('`'|'$').'+'.'+'.']'.'='.('`'|'*').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.('`'|')').('`'|'&').'('.('`'|'$').'='.'='.('`'|'-').')'.('`'|'"').('['^')').('`'|'%').('`'|'!').('`'|'+').';'.'\\'.'}'.'\\'.'}'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|'.').('`'|'-').'<'.('`'|'-').')'.'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'-').'-'.('^'^('`'|'/')).','.('`'|'$').'='.('`'|'.').('`'|'-').'+'.('^'^('`'|'/')).';'.('!'^'+').('^'^('`'|'.')).'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'.').'<'.'='.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.('`'|'*').'-'.'='.('`'|'.').','.'-'.'-'.('`'|'$').';'.('{'^'(').('`'^'!').'['.('`'|'-').'+'.'('.('`'|'*').'>'.'>'.('^'^('`'|'/')).')'.']'.'='.('`'|'$').';'.'\\'.'}'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'-').';'.'+'.'+'.('`'|')').')'.('`'|')').('`'|'&').'('.('`'|'.').'<'.'='.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.('`'|'*').'-'.'='.('`'|'.').','.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('`'|'*').';'.'\\'.'}'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'.').('`'|'-').';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|')').('['^'(').('`'|'!').'('.('{'^'-').('{'^'[').('{'^'/').','.('`'^')').'*'.('{'^'(').('`'^'!').','.('`'^')').'*'.('`'^'#').','.('`'^')').'*'.('`'^'"').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'+').','.('`'^')').('{'^'[').('`'|'#').('['^'(').')'.'\\'.'{'.('`'^')').'*'.('`'|'"').','.('`'|')').','.('`'|'*').','.('`'|'#').('^'^('`'|'.')).','.('`'|'#').('^'^('`'|'/')).';'.('`'|')').('`'|'&').'('.('`'^'#').'='.'='.('`'^'"').')'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'.')).')'.';'.('`'|'*').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('`'|'"').'='.('{'^'(').('`'^'!').('!'^'+').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'^'(').'('.('`'|'*').')'.']'.';'.'*'.('`'|'"').'+'.'+'.'='.'('.('^'^('`'|'.')).'<'.('`'|'*').'&'.'&'.('`'^'(').'('.('`'|'*').'-'.('^'^('`'|'/')).')'.'<'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.','.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.('`'|'*').';'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.('`'|'*').')'.'\\'.'{'.'-'.'-'.('`'|'*').';'.('`'|')').('`'|'&').'('.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').')'.')'.'!'.'='.('`'|'#').('^'^('`'|'/')).')'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'*'.('`'|'"').'+'.'+'.'='.'('.('^'^('`'|'.')).'<'.('`'|'*').'&'.'&'.('`'^'(').'('.('`'|'*').'-'.('^'^('`'|'/')).')'.'<'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.'\\'.'}'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'^'#').'='.'='.('`'^'"').')'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'/')).')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('^'^('`'|'.')).']'.('!'^'+').';'.('^'^('`'|'.')).'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.'\\'.'{'.'-'.'-'.('`'|'*').';'.('`'|')').('`'|'&').'('.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').')'.')'.'!'.'='.('`'|'#').('^'^('`'|'/')).')'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'*'.'-'.'-'.('`'|'"').'='.'('.'!'.('`'|'*').'|'.'|'.('`'^'(').'('.('`'|'*').'-'.('^'^('`'|'/')).')'.'>'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.('`'|'*').';'.'\\'.'}'.'\\'.'}'.'\\'.'}'.('`'^')').('{'^'[').('`'|'#').('`'|'"').'('.('{'^'-').('{'^'[').('{'^'/').','.('`'^')').'*'.('{'^'(').('`'^'!').','.('`'^')').'*'.('`'^'#').','.('`'^')').'*'.('`'^'"').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'+').','.('`'^')').('{'^'[').('`'|'#').('['^'(').')'.'\\'.'{'.('`'^')').'*'.('`'|'"').','.('`'|')').','.('`'|'*').','.('['^'+').('`'|')').'='.'-'.('^'^('`'|'/')).','.('`'|'#').('^'^('`'|'.')).','.('`'|'#').('^'^('`'|'/')).';'.('`'|')').('`'|'&').'('.('`'^'#').'='.'='.('`'^'"').')'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'.')).')'.';'.('`'|'*').'='.('`'|'.').'-'.('^'^('`'|'/')).('!'^'+').';'.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'^'(').'('.('`'|'*').')'.']'.';'.'*'.('`'|'"').'+'.'+'.'='.'('.'('.('^'^('`'|'.')).'<'.('`'|'*').')'.'&'.'&'.'('.('`'^'(').'('.('`'|'*').'-'.('^'^('`'|'/')).')'.'<'.('`'|'#').('^'^('`'|'/')).')'.')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.'\\'.'{'.'-'.'-'.('`'|'*').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.'('.('`'^')').')'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').')'.')'.';'.('`'|')').('`'|'&').'('.('`'|'#').('^'^('`'|'.')).'!'.'='.('`'|'#').('^'^('`'|'/')).')'.'\\'.'{'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').';'.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'\\'.'}'.'*'.('`'|'"').'+'.'+'.'='.'('.('^'^('`'|'.')).'<'.('`'|'*').'&'.'&'.('`'^'(').'('.('`'|'*').'-'.('^'^('`'|'/')).')'.'<'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.('`'|'*').':'.('`'|'*').';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.('`'|'*').')'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.('`'|'*').';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'^'#').'='.'='.('`'^'"').')'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('!'^'+').('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'/')).')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).','.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('^'^('`'|'.')).']'.';'.('^'^('`'|'.')).'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'('.('`'|'*').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.')'.'\\'.'{'.'-'.'-'.('`'|'*').';'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'*').')'.')'.';'.('`'|')').('`'|'&').'('.('`'|'#').('^'^('`'|'.')).'!'.'='.('`'|'#').('^'^('`'|'/')).')'.'\\'.'{'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.'='.('`'|'"').'-'.('{'^'(').('`'^'!').';'.('`'|'"').'='.('{'^'(').('`'^'!').'+'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).']'.';'.'\\'.'}'.'*'.'-'.'-'.('`'|'"').'='.'('.('^'^('`'|'.')).'<'.('`'|'*').'&'.'&'.('`'^'(').'('.('`'|'*').'-'.('^'^('`'|'/')).')'.'>'.('`'|'#').('^'^('`'|'/')).')'.'?'.'~'.'('.('`'^')').')'.('`'^'(').'('.('`'|'*').'-'.('^'^('`'|'/')).')'.':'.('`'|'*').';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.('`'|'*').')'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.'~'.('`'|'*').';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('['^'+').('`'|')').'='.('`'|')').';'.'\\'.'}'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('['^'+').('`'|')').';'.'\\'.'}'.('`'^')').('{'^'[').('['^'(').('`'|'-').'('.('{'^'-').('{'^'[').('{'^'/').','.('`'^')').'*'.('{'^'(').('`'^'!').','.('`'^')').('{'^'[').('`'|'&').('['^'(').('!'^'+').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('`'|'+').','.('`'^')').('{'^'[').('`'|'#').('['^'(').','.('`'^')').('{'^'[').('`'|')').('['^'(').('`'|'"').('['^',').('['^'/').')'.'\\'.'{'.('`'^')').'*'.('`'^'#').','.'*'.('`'^'"').','.'*'.('`'^'$').','.'*'.('{'^')').('`'^'!').','.'*'.('`'|'"').','.('`'|')').','.('`'|'*').','.('`'|'-').','.('['^'+').','.('['^'*').','.('['^'/').','.('`'|'.').('`'|'-').','.('['^'+').('`'|')').'='.('^'^('`'|'.')).','.('`'|'.').('`'|'&').','.('`'|'#').('^'^('`'|'.')).','.('`'|'#').('^'^('`'|'/')).';'.('{'^'.').('{'^'[').('`'|'&').('`'|',').';'.('`'|')').('`'|'&').'('.('`'|'+').'<'.'='.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).')'.'\\'.'{'.('`'^'#').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'+').'*'.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.')'.';'.('`'|')').('`'|'&').'('.('`'|'+').'<'.'='.('`'|'&').('['^'(').')'.'\\'.'{'.('`'^'"').'='.('{'^'(').('`'^'!').'+'.'('.('`'|'.').'+'.('`'|'&').('['^'(').'-'.('`'|'+').')'.';'.('`'|'&').('`'|',').'='.('^'^('`'|'/')).';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('`'^'"').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'+').'*'.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.')'.';'.('`'|'&').('`'|',').'='.('^'^('`'|'-')).';'.'\\'.'}'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.('`'|'+').'<'.'='.('`'|'&').('['^'(').')'.'\\'.'{'.('`'^'#').'='.('{'^'(').('`'^'!').'+'.'('.('`'|'.').'+'.('`'|'&').('['^'(').'-'.('`'|'+').')'.';'.('`'|')').('`'|'&').'('.('`'|'+').'<'.'='.'('.('`'|'&').('['^'(').'-'.('`'|'+').')'.')'.('!'^'+').'\\'.'{'.('`'^'"').'='.('`'^'#').'-'.('`'|'+').';'.('`'|'&').('`'|',').'='.('^'^('`'|'.')).';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.('`'|'+').'<'.'='.('^'^('`'|'/')).('^'^('`'|'.')).('^'^('`'|',')).('^'^('`'|'*')).')'.'\\'.'{'.('`'^'"').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'+').'*'.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.')'.';'.('`'|'&').('`'|',').'='.('^'^('`'|',')).';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'^'"').'='.('`'^'#').','.('`'|'&').('`'|',').'='.(':'&'=').';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('`'^'"').'='.('`'^'#').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'+').'*'.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.')'.';'.('`'|'&').('`'|',').'='.('^'^('`'|'/')).('^'^('`'|',')).';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|'.').'<'.'='.('^'^('`'|'.')).('['^'#').('^'^('`'|'-')).('`'|'&').('`'|'&').('`'|'&').('`'|'&').('`'|'&').('`'|'&').('`'|'&').'&'.'&'.('^'^('`'|',')).'<'.'='.('`'|'.').'/'.('`'|'+').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|'/')).')'.('`'|'&').('`'|',').'|'.'='.'('.('`'|'+').'*'.('^'^('`'|',')).'<'.'='.('`'|'&').('['^'(').'-'.('`'|'+').')'.'?'.('^'^('`'|'-')).('^'^('`'|',')).':'.('^'^('`'|'/')).('^'^('`'|'(')).';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.'!'.('`'|'&').('`'|',').'&'.'&'.('`'|'+').'*'.('^'^('`'|',')).'<'.'='.('`'|'&').('['^'(').'-'.('`'|'+').'*'.('^'^('`'|',')).')'.('`'|'&').('`'|',').'|'.'='.('^'^('`'|'-')).('^'^('`'|',')).';'.'\\'.'}'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('!'^'+').('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'/')).')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.('`'|'"').'='.'&'.('['^'/').';'.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('`'|'*').'='.('`'|'.').';'.('`'|'-').'='.('^'^('`'|'.')).';'.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'.').'-'.('^'^('`'|'/')).')'.';'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'>'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.('`'|')').')'.'\\'.'{'.('`'|'$').('`'|'/').'\\'.'{'.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.'\\'.'}'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'<'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'='.('`'|')').')'.'\\'.'{'.'*'.('`'|'"').'='.('`'|'*').';'.('`'|'"').'='.('{'^'(').('`'^'!').'+'.'-'.'-'.('`'^'"').'['.('`'|'#').('^'^('`'|'/')).']'.';'.('`'|'*').'='.('`'|')').';'.'+'.'+'.('`'|'-').';'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('!'^'+').('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'>'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.'\\'.'}'.'\\'.'}'.('`'|')').('`'|'&').'('.('^'^('`'|'/')).'<'.('`'|'-').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|'*')).(':'&'=').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|'/')).('^'^('`'|'(')).')'.'\\'.'{'.('`'^'$').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'+').'*'.('^'^('`'|',')).'*'.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.')'.';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('`'^'$').'='.('`'^'"').'-'.('`'|'+').'*'.('^'^('`'|',')).';'.'\\'.'}'.'+'.'+'.('`'^'"').'['.('`'^'(').'('.('`'|'*').'+'.('^'^('`'|'/')).')'.']'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).','.('`'|'*').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'+').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|'*').'+'.'='.('`'^'#').'['.('`'|')').']'.';'.('`'|')').('`'|'&').'('.('`'^'"').'['.('`'|')').']'.'!'.'='.('`'|'*').')'.('{'^'(').('`'^'!').'['.('`'^'"').'['.('`'|')').']'.']'.'+'.'='.('`'|'.').';'.('`'^'$').'['.('`'|')').']'.'='.('`'^'$').'['.('`'|')').'+'.('`'|'+').']'.'='.('^'^('`'|'.')).';'.'\\'.'}'.('`'|',').('['^'(').('^'^('`'|',')).'('.('{'^'/').','.('{'^'(').('`'^'!').','.('`'^'#').','.('`'^'"').','.('`'^'$').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|'.').('`'|'-').'='.('`'|',').('['^'+').('^'^('`'|',')).'('.('{'^'(').('`'^'!').','.('`'|'.').','.('`'|'-').')'.';'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|'/')).('^'^('`'|'(')).')'.('`'|'&').('['^')').('`'|'%').('`'|'%').('!'^'+').'('.('`'^'$').')'.';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('`'|',').('['^'(').('^'^('`'|'/')).'('.('{'^'/').','.('{'^'(').('`'^'!').','.('`'^'#').','.('`'^'"').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|'.').('`'|'-').'='.('`'|',').('['^'+').('^'^('`'|'/')).'('.('{'^'/').','.('{'^'(').('`'^'!').','.('`'|'.').','.('`'|'-').','.('`'|'#').('['^'(').')'.';'.'\\'.'}'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|')').('`'|'&').'('.('`'|'-').'='.'='.('^'^('`'|'/')).')'.'*'.('`'|'"').'='.('`'|'*').'+'.'('.('`'|'.').('`'|'-').'='.('^'^('`'|'/')).')'.';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|'.').('`'|'-').'='.('^'^('`'|'.')).';'.('`'|')').('`'|'&').'('.('`'|'.').('`'|'-').'<'.('`'|'-').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|'*')).')'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'^'#').')'.';'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|',')).')'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'^'"').')'.';'.('`'|'.').('`'|'&').'='.'('.('`'|'.').'+'.('`'|'&').('['^'(').')'.'-'.('`'|'-').'*'.('^'^('`'|',')).';'.('`'|')').('`'|'&').'('.'!'.'('.('`'|'&').('`'|',').'&'.('^'^('`'|'/')).('^'^('`'|'-')).')'.')'.('`'|')').('`'|'&').'('.('`'|'+').'+'.('`'|'.').('`'|'-').'<'.'='.('`'|'.').('`'|'&').')'.('`'|'.').('`'|'&').'-'.'='.('`'|'+').';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|'&').('`'|',').'|'.'='.(':'&'=').';'.('{'^')').('`'^'!').'='.('{'^'(').('`'^'!').'+'.('`'|'-').'+'.('`'|'.').('`'|'&').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'-').'+'.'('.('`'|'.').('{'^'[').'>'.'>'.('{'^'[').('^'^('`'|'/')).')'.'-'.('^'^('`'|'/')).('!'^'+').','.('`'|'*').'='.('`'|'-').'-'.('^'^('`'|'/')).';'.('`'|'-').'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.('`'|')').('`'|'&').'('.('{'^'(').('`'^'!').'['.('`'|')').']'.')'.('{'^')').('`'^'!').'['.('`'|'*').'-'.'-'.']'.'='.('{'^'(').('`'^'!').'['.('`'|')').']'.'-'.('^'^('`'|'/')).';'.('['^'(').('`'|'-').'('.('{'^')').('`'^'!').','.('{'^'(').('`'^'!').','.('`'|'.').('`'|'&').','.('`'|'-').','.('`'|'.').('`'|'-').','.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.','.('^'^('`'|'.')).')'.';'.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).';'.('`'|'*').'='.('`'|'-').'-'.('^'^('`'|'/')).';'.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|'.').'-'.('^'^('`'|'/')).')'.';'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'>'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.('`'|')').')'.'\\'.'{'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'<'.'='.('`'|'#').('^'^('`'|'/')).')'.')'.';'.('`'|')').('`'|'&').'('.('^'^('`'|'.')).'<'.'='.('`'|')').')'.'\\'.'{'.('{'^')').('`'^'!').'['.('`'|'*').'-'.'-'.']'.'='.('`'|')').'+'.('^'^('`'|'/')).';'.('`'|'$').('`'|'/').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|'.')).';'.('!'^'+').('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.'-'.'-'.('`'|')').'&'.'&'.'('.('`'|'#').('^'^('`'|'.')).'='.('`'^'(').'('.('`'|')').')'.')'.'>'.'='.('`'|'#').('^'^('`'|'/')).')'.';'.'\\'.'}'.'\\'.'}'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'-').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('{'^'(').('`'^'!').'['.('`'|')').']'.'='.('{'^')').('`'^'!').'['.('{'^'(').('`'^'!').'['.('`'|')').']'.']'.';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|'*')).')'.('`'^'#').'='.('`'^'"').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'+').'*'.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.')'.';'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|',')).')'.('`'^'"').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'+').'*'.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.')'.';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.(':'&'=').')'.('`'|"'").('`'|'#').'('.('{'^'/').','.('`'^'#').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|')').('`'|'&').'('.('^'^('`'|'/')).'<'.('`'|'-').')'.'\\'.'{'.('`'|"'").('`'|'"').'('.('`'^'#').','.('`'^'"').','.('`'|'+').','.('^'^('`'|'/')).')'.';'.('`'|')').'='.('`'|'-').'-'.('^'^('`'|'/')).','.('`'|'*').'='.('`'|'.').','.('['^'+').'='.('{'^'(').('`'^'!').'['.('`'|'-').'-'.('^'^('`'|'/')).']'.','.('`'|'#').('^'^('`'|'/')).'='.('`'^'(').'('.('['^'+').')'.';'.('`'|'$').('`'|'/').'\\'.'{'.('['^'*').'='.('`'^'"').'['.('`'|'#').('^'^('`'|'.')).'='.('`'|'#').('^'^('`'|'/')).']'.';'.('!'^'+').('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('['^'*').'<'.('`'|'*').')'.('{'^'(').('`'^'!').'['.'-'.'-'.('`'|'*').']'.'='.('^'^('`'|'.')).';'.('`'|'$').('`'|'/').'\\'.'{'.('{'^'(').('`'^'!').'['.'-'.'-'.('`'|'*').']'.'='.('['^'+').';'.('`'|')').('`'|'&').'('.'-'.'-'.('`'|')').'<'.('^'^('`'|'.')).')'.('`'|'"').('['^')').('`'|'%').('`'|'!').('`'|'+').';'.('['^'+').'='.('{'^'(').('`'^'!').'['.('`'|')').']'.';'.'\\'.'}'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.'('.('`'|'#').('^'^('`'|'/')).'='.('`'^'(').'('.('['^'+').')'.')'.'='.'='.('`'|'#').('^'^('`'|'.')).')'.';'.'\\'.'}'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.'='.('`'|')').')'.';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('^'^('`'|'.')).'<'.('`'|'*').')'.('{'^'(').('`'^'!').'['.'-'.'-'.('`'|'*').']'.'='.('^'^('`'|'.')).';'.'\\'.'}'.('`'|')').('`'|'&').'('.'!'.('`'|')').('['^'(').('`'|'"').('['^',').('['^'/').')'.('`'|')').('['^'(').('`'|'!').'('.('{'^'/').','.('{'^'(').('`'^'!').','.('`'^'#').','.('`'^'"').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('['^'+').('`'|')').'='.('`'|'#').('`'|'"').'('.('{'^'/').','.('{'^'(').('`'^'!').','.('`'^'#').','.('`'^'"').','.('`'|'.').','.('`'|'+').','.('`'|'#').('['^'(').')'.';'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|'+')).')'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'^'#').')'.';'.('`'|')').('`'|'&').'('.('`'|'&').('`'|',').'&'.('^'^('`'|',')).')'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'^'"').')'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('['^'+').('`'|')').';'.('!'^'+').'\\'.'}'.('`'^')').('{'^'[').('`'^'!').('`'^'%').'('.('{'^'*').'*'.('{'^'/').','.('{'^'*').'*'.('{'^'.').','.('`'^')').('{'^'[').('`'|'.').')'.'\\'.'{'.('`'^')').('{'^'[').('`'|')').','.('['^'+').('`'|')').','.'*'.('`'^'!').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.'*'.('`'|'.').')'.';'.('`'|')').('`'|'&').'('.('`'|'.').'='.'='.('^'^('`'|'/')).')'.'\\'.'{'.('{'^'.').'['.('^'^('`'|'.')).']'.'='.('{'^'/').'['.('^'^('`'|'.')).']'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'.').';'.'\\'.'}'.('['^'+').('`'|')').'='.('['^'(').('`'|'-').'('.('{'^'/').','.('`'^'!').','.('^'^('`'|'.')).','.('`'|'.').','.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).','.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('{'^'*').')'.','.('^'^('`'|'/')).')'.';'.('`'|')').('`'|'&').'('.('['^'+').('`'|')').'<'.('^'^('`'|'.')).')'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('['^'+').('`'|')').';'.('{'^'.').'['.('^'^('`'|'.')).']'.'='.('{'^'/').'['.('`'|'.').'-'.('^'^('`'|'/')).']'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('['^'+').('`'|')').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('{'^'.').'['.('`'|')').'+'.('^'^('`'|'/')).']'.'='.'('.('{'^'*').')'.('`'^'!').'['.('`'|')').']'.';'.'\\'.'}'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'+'.'='.('^'^('`'|'/')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('{'^'.').'['.('`'|')').']'.'='.'('.('{'^'*').')'.('`'^'!').'['.('`'|')').']'.';'.'\\'.'}'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'^'!').')'.';'.('!'^'+').('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('['^'+').('`'|')').'+'.('^'^('`'|'/')).';'.'\\'.'}'.('{'^'*').'*'.('`'^'!').('`'^'$').'('.('{'^'*').'*'.('{'^'/').','.('`'^')').('{'^'[').('`'|'.').','.('`'^')').('{'^'[').('['^'+').('`'|')').')'.'\\'.'{'.('`'^')').('{'^'[').('`'^'#').'['.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).']'.';'.('`'^')').'*'.('`'^',').('`'^'&').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('['^'(').('`'|')').('['^'!').('`'|'%').('`'|'/').('`'|'&').'('.('`'^')').')'.'*'.('`'|'.').')'.','.('`'|')').','.('['^'/').';'.('{'^'*').'*'.('{'^'.').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'.').')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.'+'.'+'.('`'|')').')'.('`'^'#').'['.('`'|')').']'.'='.('^'^('`'|'.')).';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.'+'.'+'.('`'|')').')'.('`'^',').('`'^'&').'['.('`'|')').']'.'='.('`'^'#').'['.('{'^'/').'['.('`'|')').']'.']'.'+'.'+'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).','.('['^'/').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('['^'/').'+'.'='.('`'^'#').'['.('`'|')').']'.';'.('`'^'#').'['.('`'|')').']'.'='.('['^'/').'-'.('`'^'#').'['.('`'|')').']'.';'.'\\'.'}'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('`'|'.').'-'.('^'^('`'|'/')).','.('['^'/').'='.('^'^('`'|'.')).';'.('^'^('`'|'.')).'<'.'='.('`'|')').';'.'-'.'-'.('`'|')').')'.'\\'.'{'.('['^'/').'='.('`'^',').('`'^'&').('!'^'+').'['.('['^'/').']'.'+'.('`'^'#').'['.('{'^'.').'['.('`'|')').']'.'='.('{'^'/').'['.('['^'/').']'.']'.';'.('['^'/').'+'.'='.('['^'/').'<'.('['^'+').('`'|')').';'.'\\'.'}'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'^',').('`'^'&').')'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('{'^'.').';'.'\\'.'}'.('`'^')').('{'^'[').('`'|'-').('['^'/').('`'|'&').'('.('{'^'*').'*'.('['^'(').('['^'/').('['^')').','.('`'^')').('{'^'[').('`'|'#').')'.'\\'.'{'.('{'^'*').'*'.('['^'*').','.'*'.('['^'+').';'.('`'^')').('{'^'[').('['^'(').('`'|'(').'='.('^'^('`'|'.')).';'.('['^'+').'='.'('.('{'^'*').'*'.')'.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|')')).')'.';'.('`'|'-').('`'|'%').('`'|'-').('`'|'#').('['^'+').('['^'"').'('.('['^'+').','.('['^'(').('['^'/').('['^')').','.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).')'.';'.('['^'*').'='.('`'|'-').('`'|'%').('`'|'-').('`'|'#').('`'|'(').('['^')').'('.('['^'+').','.('`'|'#').','.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).')'.';'.('['^'(').('`'|'(').'='.('['^'*').'-'.('['^'+').';'.('`'|'-').('`'|'%').('`'|'-').('`'|'#').('['^'+').('['^'"').'('.('['^'(').('['^'/').('['^')').'+'.('^'^('`'|'/')).','.('['^'+').','.('['^'(').('`'|'(').')'.';'.('['^'(').('['^'/').('['^')').'['.('^'^('`'|'.')).']'.'='.('`'|'#').';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('['^'+').')'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('['^'(').('`'|'(').';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|'$').('`'|'#').'('.('{'^'*').'*'.('['^'+').','.('`'^')').('{'^'[').('['^'(').('`'|')').('['^'!').('`'|'%').','.('{'^'*').'*'.('['^'(').('['^'"').('`'|'-').')'.'\\'.'{'.('`'^')').('{'^'[').('`'|')').('!'^'+').','.('`'|')').('`'|'.').('`'|'$').('`'|'%').('['^'#').','.('`'|'#').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.('`'|')').'+'.'+'.')'.('['^'/').('`'|'"').'['.('`'|')').']'.'='.('`'|')').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('['^'(').('`'|')').('['^'!').('`'|'%').';'.('`'|')').'+'.'+'.')'.'\\'.'{'.('`'|'#').'='.('['^'/').('`'|'"').'['.('['^'+').'['.('`'|')').']'.']'.';'.('`'|')').('`'|'.').('`'|'$').('`'|'%').('['^'#').'='.('`'|'-').('['^'/').('`'|'&').'('.('['^'/').('`'|'"').','.('`'|'#').')'.';'.('['^'(').('['^'"').('`'|'-').'['.('`'|')').']'.'='.('`'|'#').';'.'\\'.'}'.('['^'(').('['^'"').('`'|'-').'['.('['^'(').('`'|')').('['^'!').('`'|'%').']'.'='.('^'^('`'|'.')).';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|'%').('`'|'.').'('.('{'^'*').'*'.('['^'(').('['^'"').('`'|'-').','.('`'^')').('{'^'[').('['^'(').('`'|')').('['^'!').('`'|'%').','.('{'^'*').'*'.('['^'+').')'.'\\'.'{'.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('{'^'*').('{'^'[').('`'|'#').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.('`'|')').'+'.'+'.')'.('['^'/').('`'|'"').'['.('`'|')').']'.'='.('`'|')').';'.('`'|'&').('`'|'/').('['^')').'('.('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('['^'(').('`'|')').('['^'!').('`'|'%').';'.('`'|')').'+'.'+'.')'.'\\'.'{'.('`'|'#').'='.('['^'(').('['^'"').('`'|'-').'['.('`'|')').']'.';'.('['^'+').'['.('`'|')').']'.'='.('`'|'-').('['^'/').('`'|'&').'('.('['^'/').('`'|'"').','.('`'|'#').')'.';'.'\\'.'}'.'\\'.'}'.('!'^'+').('{'^'*').'*'.('['^'+').('['^'+').'('.('{'^'*').'*'.('['^'(').','.('`'^')').('{'^'[').('`'|',').','.('`'^')').'*'.('['^'+').('`'|')').('['^')').')'.'\\'.'{'.('{'^'*').'*'.('`'|'"').('['^'.').('`'|'&').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|',').')'.','.'*'.('{'^'.').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|',').')'.';'.('`'^')').('{'^'[').('['^'+').('`'|')').'='.('`'^'!').('`'^'%').'('.('['^'(').','.('{'^'.').','.('`'|',').')'.';'.('`'|'%').('`'|'.').'('.('{'^'.').','.('`'|',').','.('`'|'"').('['^'.').('`'|'&').')'.';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('{'^'.').')'.';'.'*'.('['^'+').('`'|')').('['^')').'='.('['^'+').('`'|')').';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'"').('['^'.').('`'|'&').';'.'\\'.'}'.('{'^'*').'*'.('`'|'$').('['^'+').'('.('{'^'*').'*'.('['^'(').','.('`'^')').('{'^'[').('`'|',').','.('`'^')').('{'^'[').('['^'+').('`'|')').('['^')').')'.'\\'.'{'.('{'^'*').'*'.('`'|'"').('['^'.').('`'|'&').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|',').')'.','.'*'.('`'|'$').('`'|'%').('`'|'#').';'.('`'|'$').('`'|'#').'('.('['^'(').','.('`'|',').','.('`'|'"').('['^'.').('`'|'&').')'.';'.('`'|'$').('`'|'%').('`'|'#').'='.('`'^'!').('`'^'$').'('.('`'|'"').('['^'.').('`'|'&').','.('`'|',').','.('['^'+').('`'|')').('['^')').')'.';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'|'"').('['^'.').('`'|'&').')'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'$').('`'|'%').('`'|'#').';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('['^',').('`'|'/').'('.('{'^'*').('{'^'[').('`'|'#').')'.'\\'.'{'.('`'|'/').('['^'*').'['.('!'^'+').('`'|'/').('['^'+').'+'.'+'.']'.'='.('`'|'#').';'.'\\'.'}'.('{'^'*').('{'^'[').('['^')').('`'|')').'('.')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|')').('['^'+').'<'.('`'|')').('`'|'-').')'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|')').('['^'*').'['.('`'|')').('['^'+').'+'.'+'.']'.';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').'-'.('^'^('`'|'/')).';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|'"').('^'^('`'|'.')).'('.('{'^'.').('{'^'[').('['^'+').')'.'\\'.'{'.('`'|',').('`'|'/').'+'.'='.'('.'('.'('.('{'^')').')'.'('.('`'|'(').('`'|')').'-'.('`'|',').('`'|'/').')'.'*'.('['^'+').')'.'>'.'>'.('^'^('`'|'/')).(':'&'=').')'.'+'.('^'^('`'|'/')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.'('.('`'|',').('`'|'/').'^'.('`'|'(').('`'|')').')'.'<'.'('.('^'^('`'|'/')).'<'.'<'.('^'^('`'|',')).('^'^('`'|'*')).')'.')'.'\\'.'{'.('['^',').('`'|'/').'('.('`'|',').('`'|'/').'>'.'>'.('^'^('`'|',')).('^'^('`'|'*')).')'.';'.('`'|',').('`'|'/').'<'.'<'.'='.(':'&'=').';'.('`'|'(').('`'|')').'='.'('.('`'|'(').('`'|')').'<'.'<'.(':'&'=').')'.'+'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'+')).';'.'\\'.'}'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|'"').('^'^('`'|'/')).'('.('{'^'.').('{'^'[').('['^'+').')'.'\\'.'{'.('`'|'(').('`'|')').'='.('`'|',').('`'|'/').'+'.'('.'('.'('.('{'^')').')'.'('.('`'|'(').('`'|')').'-'.('`'|',').('`'|'/').')'.'*'.('['^'+').')'.'>'.'>'.('^'^('`'|'/')).(':'&'=').')'.';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.'('.('`'|',').('`'|'/').'^'.('`'|'(').('`'|')').')'.'<'.'('.('^'^('`'|'/')).'<'.'<'.('!'^'+').('^'^('`'|',')).('^'^('`'|'*')).')'.')'.'\\'.'{'.('['^',').('`'|'/').'('.('`'|',').('`'|'/').'>'.'>'.('^'^('`'|',')).('^'^('`'|'*')).')'.';'.('`'|',').('`'|'/').'<'.'<'.'='.(':'&'=').';'.('`'|'(').('`'|')').'='.'('.('`'|'(').('`'|')').'<'.'<'.(':'&'=').')'.'+'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'+')).';'.'\\'.'}'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'^'&').'('.')'.'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|'*')).';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('['^',').('`'|'/').'('.('`'|',').('`'|'/').'>'.'>'.('^'^('`'|',')).('^'^('`'|'*')).')'.';'.('`'|',').('`'|'/').'<'.'<'.'='.(':'&'=').';'.'\\'.'}'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'^'.').'('.')'.'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|'*')).';'.'+'.'+'.('`'|')').')'.('`'|'#').'='.'('.('`'|'#').'<'.'<'.(':'&'=').')'.'+'.('['^')').('`'|')').'('.')'.';'.'\\'.'}'.('`'^')').('{'^'[').('`'|'$').('`'|'"').'('.('{'^'.').('{'^'[').('['^'+').')'.'\\'.'{'.('{'^'.').('{'^'[').('`'|'-').('`'|')').('`'|'$').'='.('`'|',').('`'|'/').'+'.'('.'('.('{'^')').')'.'('.('`'|'(').('`'|')').'-'.('`'|',').('`'|'/').')'.'*'.('['^'+').'>'.'>'.('^'^('`'|'/')).(':'&'=').')'.';'.('`'^')').('{'^'[').('`'|'"').'='.'('.('`'|'#').'<'.'='.('`'|'-').('`'|')').('`'|'$').')'.';'.('`'|')').('`'|'&').'('.('`'|'"').')'.('`'|'(').('`'|')').'='.('`'|'-').('`'|')').('`'|'$').';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|',').('`'|'/').'='.('`'|'-').('`'|')').('`'|'$').'+'.('^'^('`'|'/')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('!'^'+').'('.('`'|',').('`'|'/').'^'.('`'|'(').('`'|')').')'.'<'.'('.('^'^('`'|'/')).'<'.'<'.('^'^('`'|',')).('^'^('`'|'*')).')'.')'.'\\'.'{'.('`'|',').('`'|'/').'<'.'<'.'='.(':'&'=').';'.('`'|'(').('`'|')').'='.'('.('`'|'(').('`'|')').'<'.'<'.(':'&'=').')'.'+'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'+')).';'.('`'|'#').'='.'('.('`'|'#').'<'.'<'.(':'&'=').')'.'+'.('['^')').('`'|')').'('.')'.';'.'\\'.'}'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'"').';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|'.').('['^',').'('.')'.'\\'.'{'.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('^'^('`'|',')).'='.('['^')').'='.('`'|',').('`'|'/').'='.('`'|'#').'='.('^'^('`'|'.')).';'.('`'|'(').('`'|')').'='.'('.('{'^'.').')'.'-'.('^'^('`'|'/')).';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.('`'|')').'+'.'+'.')'.('['^'/').('^'^('`'|'.')).'['.('`'|')').']'.'='.('^'^('`'|'/')).'<'.'<'.('^'^('`'|'/')).('^'^('`'|'+')).';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.('`'|')').'+'.'+'.')'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|'*').'='.('^'^('`'|'.')).';'.('`'|'*').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.('`'|'*').'+'.'+'.')'.('['^'/').('^'^('`'|'/')).'['.('`'|')').']'.'['.('`'|'*').']'.'='.('^'^('`'|'/')).'<'.'<'.('^'^('`'|'/')).('^'^('`'|'+')).';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|',')).';'.'+'.'+'.('`'|')').')'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|'*').'='.('^'^('`'|'.')).';'.('!'^'+').('`'|'*').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).';'.'+'.'+'.('`'|'*').')'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|'+').'='.('^'^('`'|'.')).';'.('`'|'+').'<'.('^'^('`'|'/')).('^'^('`'|')')).';'.'+'.'+'.('`'|'+').')'.('['^'/').('^'^('`'|',')).'['.('`'|')').']'.'['.('`'|'*').']'.'['.('`'|'+').']'.'='.'('.('`'|'+').'<'.'<'.('^'^('`'|'/')).('^'^('`'|',')).')'.'-'.'('.('`'|'+').'='.'='.('^'^('`'|'/')).('^'^('`'|'(')).')'.';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|'%').('`'|'$').'('.('{'^'.').('{'^'[').('`'|'.').')'.'\\'.'{'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|'-')).('^'^('`'|',')).';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'.').'&'.'('.('^'^('`'|'/')).'<'.'<'.('^'^('`'|'-')).('^'^('`'|'/')).')'.')'.('`'|'"').('^'^('`'|'/')).'('.('^'^('`'|'/')).'<'.'<'.('^'^('`'|'/')).('^'^('`'|')')).')'.';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|'"').('^'^('`'|'.')).'('.('^'^('`'|'/')).'<'.'<'.('^'^('`'|'/')).('^'^('`'|')')).')'.';'.('`'|'.').'+'.'='.('`'|'.').';'.'\\'.'}'.'\\'.'}'.('{'^'.').('{'^'[').('`'|'$').('`'|'$').'('.')'.'\\'.'{'.('{'^'.').('{'^'[').('`'|'.').'='.('^'^('`'|'.')).';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('^'^('`'|'-')).('^'^('`'|',')).';'.'+'.'+'.('`'|')').')'.'\\'.'{'.('`'|'.').'+'.'='.('`'|'.').'+'.('`'|'$').('`'|'"').'('.('^'^('`'|'/')).'<'.'<'.('^'^('`'|'/')).('^'^('`'|')')).')'.';'.'\\'.'}'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'.').';'.'\\'.'}'.('['^'-').('`'|'/').('`'|')').('`'|'$').('{'^'[').('`'|'%').('`'|'&').'('.('`'^')').('{'^'[').('`'|'#').')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'#').('^'^('`'|'/')).('!'^'+').'='.'='.('`'|'#').('^'^('`'|',')).')'.'+'.'+'.('['^')').';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('['^')').'='.('^'^('`'|'.')).';'.('`'^')').('{'^'[').('`'|'&').'='.'('.('['^')').'>'.('^'^('`'|',')).')'.','.('`'|'#').('['^'/').('['^'#').'='.('^'^('`'|'/')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('`'|'#').('['^'/').('['^'#').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).')'.'\\'.'{'.('`'^')').('{'^'[').('['^'+').('^'^('`'|'.')).'='.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.','.('['^'+').('^'^('`'|'/')).'='.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.','.('['^'+').('^'^('`'|',')).'='.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|',')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.','.('['^'+').'='.'('.'('.('['^'+').('^'^('`'|'.')).'+'.('['^'+').('^'^('`'|'/')).')'.'*'.('^'^('`'|')')).'+'.('['^'+').('^'^('`'|',')).'+'.('['^'+').('^'^('`'|',')).')'.'>'.'>'.('^'^('`'|'*')).','.('`'|'*').'='.('['^'+').'>'.'>'.('^'^('`'|'/')).('^'^('`'|',')).','.('['^'#').('^'^('`'|'/')).'='.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.','.('['^'#').('^'^('`'|',')).'='.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.','.('['^'(').('['^'(').('`'|'%').('['^'+').'='.('['^'#').('^'^('`'|'/')).'+'.'('.'('.'('.('['^'#').('^'^('`'|',')).'-'.('['^'#').('^'^('`'|'/')).')'.'*'.'('.('['^'+').'&'.('^'^('`'|'*')).('^'^('`'|'.')).(';'&'=').('^'^('`'|'+')).')'.')'.'>'.'>'.('^'^('`'|'/')).('^'^('`'|',')).')'.','.('`'|'"').('`'|')').('['^'/').'='.('`'|'#').'&'.('^'^('`'|'/')).('^'^('`'|',')).(':'&'=').';'.('`'|'#').'+'.'='.('`'|'#').';'.('`'|')').('`'|'&').'('.('`'|'"').('`'|')').('['^'/').('!'^'+').')'.'\\'.'{'.('`'|'"').('^'^('`'|'/')).'('.('['^'(').('['^'(').('`'|'%').('['^'+').'*'.('^'^('`'|'-')).'+'.('['^'+').')'.';'.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|',')).'('.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|'*')).'('.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.')'.';'.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.')'.';'.('`'|'#').('['^'/').('['^'#').'+'.'='.('`'|'#').('['^'/').('['^'#').'+'.('^'^('`'|'/')).';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('`'|'"').('^'^('`'|'.')).'('.('['^'(').('['^'(').('`'|'%').('['^'+').'*'.('^'^('`'|'-')).'+'.('['^'+').')'.';'.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|',')).'('.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|'*')).'('.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).('!'^'+').']'.'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.')'.';'.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.')'.';'.('`'|'#').('['^'/').('['^'#').'+'.'='.('`'|'#').('['^'/').('['^'#').';'.'\\'.'}'.'\\'.'}'.('`'|'#').('^'^('`'|',')).'='.('`'|'#').('^'^('`'|'/')).';'.('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('['^'/').('['^'#').'&'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'+')).';'.'\\'.'}'.('`'^')').('{'^'[').('`'|'$').('`'|'&').'('.')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'#').('^'^('`'|'/')).'='.'='.('`'|'#').('^'^('`'|',')).')'.'+'.'+'.('['^')').';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('['^')').'='.('^'^('`'|'.')).';'.('`'^')').('{'^'[').('`'|'&').'='.'('.('['^')').'>'.('^'^('`'|',')).')'.','.('`'|'#').('['^'/').('['^'#').'='.('^'^('`'|'/')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.('`'|'#').('['^'/').('['^'#').'<'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'(')).')'.'\\'.'{'.('`'^')').('{'^'[').('['^'+').('^'^('`'|'.')).'='.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.','.('['^'+').('^'^('`'|'/')).'='.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.','.('['^'+').('^'^('`'|',')).'='.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|',')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.','.('!'^'+').('['^'+').'='.'('.'('.('['^'+').('^'^('`'|'.')).'+'.('['^'+').('^'^('`'|'/')).')'.'*'.('^'^('`'|')')).'+'.('['^'+').('^'^('`'|',')).'+'.('['^'+').('^'^('`'|',')).')'.'>'.'>'.('^'^('`'|'*')).','.('`'|'*').'='.('['^'+').'>'.'>'.('^'^('`'|'/')).('^'^('`'|',')).','.('['^'#').('^'^('`'|'/')).'='.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.','.('['^'#').('^'^('`'|',')).'='.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.','.('['^'(').('['^'(').('`'|'%').('['^'+').'='.('['^'#').('^'^('`'|'/')).'+'.'('.'('.'('.('['^'#').('^'^('`'|',')).'-'.('['^'#').('^'^('`'|'/')).')'.'*'.'('.('['^'+').'&'.('^'^('`'|'*')).('^'^('`'|'.')).(';'&'=').('^'^('`'|'+')).')'.')'.'>'.'>'.('^'^('`'|'/')).('^'^('`'|',')).')'.','.('`'|'"').('`'|')').('['^'/').'='.('`'|'$').('`'|'"').'('.('['^'(').('['^'(').('`'|'%').('['^'+').'*'.('^'^('`'|'-')).'+'.('['^'+').')'.';'.('`'|')').('`'|'&').'('.('`'|'"').('`'|')').('['^'/').')'.'\\'.'{'.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|',')).'('.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|'*')).'('.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.')'.';'.('['^'/').('^'^('`'|',')).('!'^'+').'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.'='.('`'^'"').('^'^('`'|'/')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.')'.';'.('`'|'#').('['^'/').('['^'#').'+'.'='.('`'|'#').('['^'/').('['^'#').'+'.('^'^('`'|'/')).';'.'\\'.'}'.('`'|'%').('`'|',').('['^'(').('`'|'%').'\\'.'{'.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|',')).'('.('['^'/').('^'^('`'|'.')).'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|'*')).'('.('['^'/').('^'^('`'|'/')).'['.('`'|'#').('^'^('`'|'/')).']'.'['.('`'|'#').('['^'/').('['^'#').']'.')'.';'.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').']'.')'.';'.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.'='.('`'^'"').('^'^('`'|'.')).'_'.('^'^('`'|'(')).'('.('['^'/').('^'^('`'|',')).'['.('`'|'&').']'.'['.('`'|'#').('['^'/').('['^'#').']'.'['.('`'|'*').'+'.('^'^('`'|'/')).']'.')'.';'.('`'|'#').('['^'/').('['^'#').'+'.'='.('`'|'#').('['^'/').('['^'#').';'.'\\'.'}'.'\\'.'}'.('`'|'#').('^'^('`'|',')).'='.('`'|'#').('^'^('`'|'/')).';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|'#').('^'^('`'|'/')).'='.('`'|'#').('['^'/').('['^'#').'&'.('^'^('`'|',')).('^'^('`'|'+')).('^'^('`'|'+')).';'.'\\'.'}'.('!'^'+').('`'^')').('{'^'[').('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').'('.('{'^'*').'*'.('`'|'"').('['^'.').('`'|'&').','.('['^'(').('`'|')').('['^'!').('`'|'%').'_'.('['^'/').('{'^'[').('['^'(').('`'|')').('['^'!').('`'|'%').','.('`'|'#').('`'|'(').('`'|'!').('['^')').'*'.'*'.('['^')').('`'|'%').('['^'(').','.('['^'(').('`'|')').('['^'!').('`'|'%').'_'.('['^'/').'*'.('`'|'$').('['^'(').')'.'\\'.'{'.('`'|')').('`'|'&').'('.'!'.('['^'(').('`'|')').('['^'!').('`'|'%').')'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('^'^('`'|'/')).';'.('`'|'.').('['^',').'('.')'.';'.('`'|'/').('['^'*').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('['^'(').('`'|')').('['^'!').('`'|'%').'*'.('^'^('`'|',')).')'.';'.('`'|'/').('['^'+').'='.('^'^('`'|'.')).';'.('`'^')').('{'^'[').('`'|'"').('['^'(').('['^'!').'='.('`'|'"').('['^'(').'>'.('['^'(').('`'|')').('['^'!').('`'|'%').'?'.('['^'(').('`'|')').('['^'!').('`'|'%').':'.('`'|'"').('['^'(').','.('`'|'#').('`'|'(').'='.('['^'(').('`'|')').('['^'!').('`'|'%').'/'.('`'|'"').('['^'(').('['^'!').','.('['^'+').('`'|')').('['^')').','.('['^')').('`'|'%').';'.('`'|'%').('`'|'$').'('.('['^'(').('`'|')').('['^'!').('`'|'%').')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'#').('`'|'(').';'.('`'|')').'+'.'+'.')'.'\\'.'{'.('{'^'*').'*'.('['^'+').'='.('['^'+').('['^'+').'('.('`'|'"').('['^'.').('`'|'&').'+'.('`'|')').'*'.('`'|'"').('['^'(').('['^'!').','.('`'|'"').('['^'(').('['^'!').','.'&'.('['^'+').('`'|')').('['^')').')'.';'.('`'|'%').('`'|'$').'('.('`'|'"').('['^'(').('['^'!').')'.';'.('`'|'%').('`'|'$').'('.('['^'+').('`'|')').('['^')').')'.';'.('`'|'&').('`'|'/').('['^')').'('.('!'^'+').('`'^')').('{'^'[').('`'|'*').'='.('^'^('`'|'.')).';'.('`'|'*').'<'.('`'|'"').('['^'(').('['^'!').';'.('`'|'*').'+'.'+'.')'.('`'|'%').('`'|'&').'('.('['^'+').'['.('`'|'*').']'.')'.';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('['^'+').')'.';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|'#').('`'|'(').'*'.('`'|'"').('['^'(').('['^'!').'!'.'='.('['^'(').('`'|')').('['^'!').('`'|'%').')'.'\\'.'{'.('['^')').('`'|'%').'='.('['^'(').('`'|')').('['^'!').('`'|'%').'-'.('`'|'#').('`'|'(').'*'.('`'|'"').('['^'(').('['^'!').';'.('{'^'*').'*'.('['^'+').'='.('['^'+').('['^'+').'('.('`'|'"').('['^'.').('`'|'&').'+'.'('.('['^'(').('`'|')').('['^'!').('`'|'%').'-'.('['^')').('`'|'%').')'.','.('['^')').('`'|'%').','.'&'.('['^'+').('`'|')').('['^')').')'.';'.('`'|'%').('`'|'$').'('.('['^')').('`'|'%').')'.';'.('`'|'%').('`'|'$').'('.('['^'+').('`'|')').('['^')').')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|'*').'='.('^'^('`'|'.')).';'.('`'|'*').'<'.('['^')').('`'|'%').';'.('`'|'*').'+'.'+'.')'.('`'|'%').('`'|'&').'('.('['^'+').'['.('`'|'*').']'.')'.';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('['^'+').')'.';'.'\\'.'}'.('`'|'%').('`'|'$').'('.('^'^('`'|'.')).')'.';'.('`'^'&').'('.')'.';'.'*'.('`'|'$').('['^'(').'='.('`'|'/').('['^'+').';'.'*'.('['^')').('`'|'%').('['^'(').'='.('`'|'/').('['^'*').';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('^'^('`'|'.')).';'.'\\'.'}'.('`'^')').('{'^'[').('`'|'$').('`'|'%').('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').'('.('{'^'*').'*'.('`'|'"').('['^'.').('`'|'&').','.('['^'(').('`'|')').('['^'!').('`'|'%').'_'.('['^'/').('{'^'[').('['^'(').('`'|')').('['^'!').('`'|'%').('!'^'+').','.('`'|'#').('`'|'(').('`'|'!').('['^')').'*'.'*'.('['^')').('`'|'%').('['^'(').','.('['^'(').('`'|')').('['^'!').('`'|'%').'_'.('['^'/').'*'.('`'|'$').('['^'(').')'.'\\'.'{'.('`'|')').('['^'*').'='.('`'|'"').('['^'.').('`'|'&').';'.('`'|')').('`'|'-').'='.('['^'(').('`'|')').('['^'!').('`'|'%').';'.('`'|')').('['^'+').'='.('^'^('`'|'.')).';'.('`'|'.').('['^',').'('.')'.';'.('`'^'.').'('.')'.';'.('`'^')').('{'^'[').('`'|'"').('['^'(').('['^'!').'='.('^'^('`'|'.')).','.('`'|'.').','.('`'|'-').('['^'(').'='.('`'|'$').('`'|'$').'('.')'.','.('`'|')').('`'|'$').('['^'#').';'.('{'^'*').'*'.('`'|'$').('`'|'!').('['^'/').('`'|'!').'='.('`'^'.').('{'^'.').('`'^',').('`'^',').';'.('`'|'/').('['^'*').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'-').('['^'(').'+'.('^'^('`'|'/')).')'.';'.('`'|'/').('['^'+').'='.('^'^('`'|'.')).';'.('['^',').('`'|'(').('`'|')').('`'|',').('`'|'%').'('.'('.('`'|'.').'='.('`'|'$').('`'|'$').'('.')'.')'.'>'.('^'^('`'|'.')).')'.'\\'.'{'.('`'|')').('`'|'&').'('.'!'.('`'|'"').('['^'(').('['^'!').')'.'\\'.'{'.('`'|'$').('`'|'!').('['^'/').('`'|'!').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('`'|'"').('['^'(').('['^'!').'='.('`'|'.').')'.';'.'\\'.'}'.('`'|')').('`'|'$').('['^'#').'='.('`'|'$').('`'|'$').'('.')'.';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.('`'|')').'+'.'+'.')'.('`'|'$').('`'|'!').('['^'/').('`'|'!').'['.('`'|')').']'.'='.('`'|'$').('`'|'&').'('.')'.';'.('{'^'*').'*'.('`'|'"').('['^'.').('`'|'&').'='.('`'|'$').('['^'+').'('.('`'|'$').('`'|'!').('['^'/').('`'|'!').','.('`'|'.').','.('`'|')').('`'|'$').('['^'#').')'.('!'^'+').';'.('`'|'&').('`'|'/').('['^')').'('.('`'^')').('{'^'[').('`'|')').'='.('^'^('`'|'.')).';'.('`'|')').'<'.('`'|'.').';'.('`'|')').'+'.'+'.')'.('`'|'/').('['^'*').'['.('`'|'/').('['^'+').'+'.'+'.']'.'='.('`'|'"').('['^'.').('`'|'&').'['.('`'|')').']'.';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'|'"').('['^'.').('`'|'&').')'.';'.'\\'.'}'.('`'|')').('`'|'&').'('.('`'|'$').('`'|'!').('['^'/').('`'|'!').')'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'|'$').('`'|'!').('['^'/').('`'|'!').')'.';'.'*'.('`'|'$').('['^'(').'='.('`'|'-').('['^'(').';'.'*'.('['^')').('`'|'%').('['^'(').'='.('`'|'/').('['^'*').';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('^'^('`'|'.')).';'.'\\'.'}'.('`'^')').('{'^'[').('`'|'-').('`'|'!').('`'|')').('`'|'.').'('.('`'^')').('{'^'[').('`'|'!').('['^')').('`'|"'").('`'|'#').','.('`'|'#').('`'|'(').('`'|'!').('['^')').'*'.('`'|'!').('['^')').('`'|"'").('['^'-').'['.']'.')'.'\\'.'{'.('`'|')').('`'|'&').'('.('`'|'!').('['^')').('`'|"'").('`'|'#').'<'.('^'^('`'|'-')).')'.'\\'.'{'.('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').('`'|'&').'('.'\\'.'"'.('{'^'.').('['^'(').('`'|'!').('`'|"'").('`'|'%').':'.('{'^'[').'%'.('['^'(').('{'^'[').'['.'-'.('`'|'#').'/'.'-'.('`'|'$').']'.('{'^'[').'<'.('`'|')').('`'|'.').('['^'+').('['^'.').('['^'/').'>'.('{'^'[').'<'.('`'|'/').('['^'.').('['^'/').('['^'+').('['^'.').('['^'/').'>'.'\\'.'\\'.('`'|'.').'\\'.'"'.','.('`'|'!').('['^')').('`'|"'").('['^'-').'['.('^'^('`'|'.')).']'.')'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('^'^('`'|'/')).';'.'\\'.'}'.('`'^'&').('`'^')').('`'^',').('`'^'%').'*'.('`'|'&').'='.('`'|'&').('`'|'/').('['^'+').('`'|'%').('`'|'.').'('.('`'|'!').('['^')').('`'|"'").('['^'-').'['.('^'^('`'|',')).']'.('!'^'+').','.'\\'.'"'.('['^')').('`'|'"').'\\'.'"'.')'.';'.('`'|')').('`'|'&').'('.'!'.('`'|'&').')'.'\\'.'{'.('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').('`'|'&').'('.'\\'.'"'.('`'^'#').('`'|'/').('['^'.').('`'|',').('`'|'$').('{'^'[').('`'|'.').('`'|'/').('['^'/').('{'^'[').('`'|'/').('['^'+').('`'|'%').('`'|'.').('{'^'[').'%'.('['^'(').'\\'.'\\'.('`'|'.').'\\'.'"'.','.('`'|'!').('['^')').('`'|"'").('['^'-').'['.('^'^('`'|'/')).']'.')'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('^'^('`'|'/')).';'.'\\'.'}'.('`'|'&').('['^'(').('`'|'%').('`'|'%').('`'|'+').'('.('`'|'&').','.('^'^('`'|'.')).','.('{'^'(').('`'^'%').('`'^'%').('`'^'+').'_'.('`'^'%').('`'^'.').('`'^'$').')'.';'.('`'^')').('{'^'[').('['^'(').('`'|')').('['^'!').('`'|'%').'='.('`'|'&').('['^'/').('`'|'%').('`'|',').('`'|',').'('.('`'|'&').')'.';'.('`'|'&').('['^'(').('`'|'%').('`'|'%').('`'|'+').'('.('`'|'&').','.('^'^('`'|'.')).','.('{'^'(').('`'^'%').('`'^'%').('`'^'+').'_'.('{'^'(').('`'^'%').('{'^'/').')'.';'.('{'^'*').'*'.('`'|'$').('`'|'!').('['^'/').('`'|'!').'='.('`'|'-').('`'|'!').('`'|',').('`'|',').('`'|'/').('`'|'#').'('.('['^'(').('`'|')').('['^'!').('`'|'%').')'.';'.('`'|'&').('['^')').('`'|'%').('`'|'!').('`'|'$').'('.('`'|'$').('`'|'!').('['^'/').('`'|'!').','.('^'^('`'|'/')).','.('['^'(').('`'|')').('['^'!').('`'|'%').','.('`'|'&').')'.';'.('`'|'&').('`'|'#').('`'|',').('`'|'/').('['^'(').('`'|'%').'('.('`'|'&').')'.';'.('['^'(').('`'|')').('['^'!').('`'|'%').'_'.('['^'/').('{'^'[').('`'|'$').('['^'(').';'.('{'^'*').'*'.('`'|'$').('`'|'%').('['^'(').('['^'/').';'.('`'|')').('`'|'&').'('.('`'|'!').('['^')').('`'|"'").('['^'-').'['.('^'^('`'|'/')).']'.'['.('^'^('`'|'/')).']'.'='.'='."'".('`'|'#')."'".')'.('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').('!'^'+').'('.('`'|'$').('`'|'!').('['^'/').('`'|'!').','.('['^'(').('`'|')').('['^'!').('`'|'%').','.'&'.('`'|'$').('`'|'%').('['^'(').('['^'/').','.'&'.('`'|'$').('['^'(').')'.';'.('`'|'%').('`'|',').('['^'(').('`'|'%').('{'^'[').('`'|'$').('`'|'%').('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').'('.('`'|'$').('`'|'!').('['^'/').('`'|'!').','.('['^'(').('`'|')').('['^'!').('`'|'%').','.'&'.('`'|'$').('`'|'%').('['^'(').('['^'/').','.'&'.('`'|'$').('['^'(').')'.';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'|'$').('`'|'!').('['^'/').('`'|'!').')'.';'.('`'|'&').'='.('`'|'&').('`'|'/').('['^'+').('`'|'%').('`'|'.').'('.('`'|'!').('['^')').('`'|"'").('['^'-').'['.('^'^('`'|'-')).']'.','.'\\'.'"'.('['^',').('`'|'"').'\\'.'"'.')'.';'.('`'|')').('`'|'&').'('.'!'.('`'|'&').')'.'\\'.'{'.('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').('`'|'&').'('.'\\'.'"'.('`'^'#').('`'|'/').('['^'.').('`'|',').('`'|'$').('{'^'[').('`'|'.').('`'|'/').('['^'/').('{'^'[').('`'|'/').('['^'+').('`'|'%').('`'|'.').('{'^'[').'%'.('['^'(').'\\'.'\\'.('`'|'.').'\\'.'"'.','.('`'|'!').('['^')').('`'|"'").('['^'-').'['.('^'^('`'|',')).']'.')'.';'.('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('^'^('`'|'/')).';'.'\\'.'}'.('`'|'&').('['^',').('['^')').('`'|')').('['^'/').('`'|'%').'('.('`'|'$').('`'|'%').('['^'(').('['^'/').','.('^'^('`'|'/')).','.('`'|'$').('['^'(').','.('`'|'&').')'.';'.('`'|'&').('`'|'#').('`'|',').('`'|'/').('['^'(').('`'|'%').'('.('`'|'&').')'.';'.('`'|'&').('['^')').('`'|'%').('`'|'%').'('.('`'|'$').('`'|'%').('['^'(').('['^'/').')'.';'.'\\'.'}'.('!'^'+').('`'^'%').('`'^'.').('`'^'$').('!'^'+').('!'^'+').('['^'(').('['^'.').('`'|'"').('{'^'[').('`'|'%').('`'|'.').('`'|'#').('`'|'/').('`'|'$').('`'|'%').('{'^'[').'\\'.'{'.('{'^'[').('`'|'-').('['^'"').('{'^'[').'('.'\\'.'$'.('`'|',').('`'|'%').('`'|'.').','.('{'^'[').'\\'.'$'.('`'|'#').')'.('{'^'[').'='.('{'^'[').'\\'.'@'.'_'.';'.('{'^'[').('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').('`'|',').('`'|'%').('`'|'.').('`'|"'").('['^'/').('`'|'(').'('.'\\'.'$'.('`'|',').('`'|'%').('`'|'.').')'.'.'.'\\'.'$'.('`'|'#').('{'^'[').('`'|')').('`'|'&').('{'^'[').('`'|',').('`'|'%').('`'|'.').('`'|"'").('['^'/').('`'|'(').'('.'\\'.'$'.('`'|',').('`'|'%').('`'|'.').')'.('{'^'[').'!'.'='.('{'^'[').('^'^('`'|'/')).';'.('{'^'[').('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').'\\'.'$'.('`'|'#').';'.('{'^'[').'\\'.'}'.('!'^'+').('['^'(').('['^'.').('`'|'"').('{'^'[').('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').('{'^'[').'\\'.'{'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').'\\'.'$'.'_'.('{'^'[').'='.('{'^'[').('`'|'$').('`'|'/').('{'^'[').'\\'.'{'.('{'^'[').('`'|',').('`'|'/').('`'|'#').('`'|'!').('`'|',').('{'^'[').'\\'.'$'.'/'.';'.('{'^'[').'<'.('{'^'(').('{'^'/').('`'^'$').('`'^')').('`'^'.').'>'.('{'^'[').'\\'.'}'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'['.'^'.'\\'.'\\'.'+'.'\\'.'\\'.'-'.'\\'.'\\'.'<'.'\\'.'\\'.'>'.'\\'.'\\'.'['.'\\'.'\\'.']'.'\\'.'\\'.'.'.'\\'.'\\'.','.']'.'/'.'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'('.'.'.')'.'\\'.'\\'.('^'^('`'|'/')).'*'.'/'.('`'|'%').('`'|'.').('`'|'#').('`'|'/').('`'|'$').('`'|'%').'('.'\\'.'$'.'&'.','.('{'^'[').'\\'.'$'.('^'^('`'|'/')).')'.'/'.('`'|"'").('['^'(').('`'|'%').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'\\'.'\\'.'['.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.('`'^'#').'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'\\'.'\\'.'['.'('.'['.('^'^('`'|'.')).'-'.(';'&'=').']'.'+'.')'.'\\'.'\\'.'>'.'\\'.'\\'.'+'.'\\'.'\\'.('^'^('`'|'/')).'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.'\\'.'$'.('^'^('`'|'/')).('`'^'-').'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'\\'.'\\'.'['.'\\'.'\\'.'>'.'('.'['.('^'^('`'|'.')).'-'.(';'&'=').']'.'+'.')'.'\\'.'\\'.'+'.'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.'\\'.'$'.('^'^('`'|'/')).('{'^'/').'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'\\'.'\\'.'['.'\\'.'\\'.'>'.'\\'.'\\'.'+'.'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.('^'^('`'|'/')).('`'^'-').'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'\\'.'\\'.'['.(';'&'=').'\\'.'\\'.'>'.'\\'.'\\'.'+'.('^'^('`'|'/')).('^'^('`'|'/')).'\\'.'\\'.'>'.'\\'.'\\'.'['.('^'^('`'|',')).'\\'.'\\'.'>'.'\\'.'\\'.']'.'\\'.'\\'.'+'.'\\'.'\\'.'['.('^'^('`'|',')).'\\'.'\\'.'<'.'\\'.'\\'.']'.('^'^('`'|'/')).(':'&'=').'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.(';'&'=').'\\'.'\\'.'>'.'\\'.'\\'.'['.(';'&'=').'\\'.'\\'.'<'.'\\'.'\\'.'+'.(';'&'=').'\\'.'\\'.'>'.'\\'.'\\'.'-'.'\\'.'\\'.']'.('^'^('`'|'/')).('^'^('`'|'/')).'\\'.'\\'.'>'.'\\'.'\\'.'['.('^'^('`'|',')).'\\'.'\\'.'>'.'\\'.'\\'.']'.'\\'.'\\'.'>'.'/'.('^'^('`'|'/')).('{'^'+').'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'-').('['^'"').('{'^'[').'\\'.'$'.('`'|'$').('`'|'!').('['^'/').('`'|'!').('{'^'[').'='.('{'^'[').'\\'.'$'.'_'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'-').('['^'"').('{'^'[').'\\'.'$'.('['^'+').('`'|')').('`'|'$').('{'^'[').'='.('{'^'[').('`'|'/').('['^'+').('`'|'%').('`'|'.').'('.'\\'.'$'.('`'|'(').('`'|'.').('`'|'$').('`'|',').','.'\\'.'"'.'|'.('`'|"'").('`'|'#').('`'|'#').('{'^'[').'-'.('`'^'/').('^'^('`'|'-')).('{'^'[').'-'.('`'|'/').('{'^'[').('`'^'/').('{'^'[').'-'.('['^'#').('{'^'[').('`'|'#').('{'^'[').'-'.('{'^'[').('^'^('`'|',')).'>'.('{'^'[').'/'.('`'|'$').('`'|'%').('['^'-').'/'.('`'|'.').('['^'.').('`'|',').('`'|',').'\\'.'"'.')'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').('{'^'[').'\\'.'$'.('`'|'(').('`'|'.').('`'|'$').('`'|',').('{'^'[').'\\'.'$'.('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').('`'|'/').('['^')').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'#').('`'|',').('`'|'/').('['^'(').('`'|'%').('{'^'[').'\\'.'$'.('`'|'(').('`'|'.').('`'|'$').('`'|',').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^',').('`'|'!').('`'|')').('['^'/').('['^'+').('`'|')').('`'|'$').('{'^'[').'\\'.'$'.('['^'+').('`'|')').('`'|'$').','.('{'^'[').('^'^('`'|'.')).';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'/').('['^'+').('`'|'%').('`'|'.').'('.('`'^'&').('`'^'(').','.('{'^'[')."'".'>'."'".','.('{'^'[').'\\'.'$'.('`'|')').('`'|'.').')'.('{'^'[').('`'|'/').('['^')').('{'^'[').('`'|'$').('`'|')').('`'|'%').('{'^'[').'\\'.'$'.'!'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').('{'^'[').('`'^'&').('`'^'(').('{'^'[').'\\'.'$'.('`'|'$').('`'|'!').('['^'/').('`'|'!').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'#').('`'|',').('`'|'/').('['^'(').('`'|'%').'('.('`'^'&').('`'^'(').')'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').'`'.'.'.'/'.('`'^'/').('{'^'[').'-'.('`'|'#').('{'^'[').'\\'.'$'.('`'|')').('`'|'.').('{'^'[').'\\'.'$'.('`'|'/').('['^'.').('['^'/').'`'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'.').('`'|'.').('`'|',').('`'|')').('`'|'.').('`'|'+').'('.'\\'.'"'.('`'^'/').'\\'.'"'.')'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'.').('`'|'.').('`'|',').('`'|')').('`'|'.').('`'|'+').'('.'\\'.'$'.('`'|')').('`'|'.').')'.';'.('!'^'+').'\\'.'}'.('!'^'+').('!'^'+').('['^'(').('['^'.').('`'|'"').('{'^'[').('['^'(').('`'|',').('['^'.').('['^')').('['^'+').('{'^'[').'\\'.'{'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'-').('['^'"').('{'^'[').'\\'.'$'.('`'|'&').('`'|')').('`'|',').('`'|'%').('{'^'[').'='.('{'^'[').('['^'(').('`'|'(').('`'|')').('`'|'&').('['^'/').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'/').('['^'+').('`'|'%').('`'|'.').('{'^'[').('`'|'-').('['^'"').('{'^'[').'\\'.'$'.('`'|'&').('`'|'(').','.('{'^'[')."'".'<'."'".','.('{'^'[').'\\'.'$'.('`'|'&').('`'|')').('`'|',').('`'|'%').('{'^'[').('`'|'/').('['^')').('{'^'[').('`'|'$').('`'|')').('`'|'%').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|',').('`'|'/').('`'|'#').('`'|'!').('`'|',').('{'^'[').'\\'.'$'.'/'.('{'^'[').'='.('{'^'[').('['^'.').('`'|'.').('`'|'$').('`'|'%').('`'|'&').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'-').('['^'"').('{'^'[').'\\'.'$'.('`'|'#').('`'|'/').('`'|'.').('['^'/').('{'^'[').'='.('{'^'[').'<'.'\\'.'$'.('`'|'&').('`'|'(').'>'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'#').('`'|',').('`'|'/').('['^'(').('`'|'%').('{'^'[').'\\'.'$'.('`'|'&').('`'|'(').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^')').('`'|'%').('['^'/').('['^'.').('['^')').('`'|'.').('{'^'[').'\\'.'$'.('`'|'#').('`'|'/').('`'|'.').('['^'/').';'.('!'^'+').'\\'.'}'.('!'^'+').('!'^'+').('['^'(').('['^'.').('`'|'"').('{'^'[').('`'|'$').('`'|'%').('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').('{'^'[').'\\'.'{'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'-').('['^'"').('{'^'[').'\\'.'$'.('['^'+').('`'|')').('`'|'$').('{'^'[').'='.('{'^'[').('`'|'/').('['^'+').('`'|'%').('`'|'.').'('.'\\'.'$'.('`'|'(').('`'|'.').('`'|'$').('`'|',').','.'\\'.'"'.'|'.('`'|"'").('`'|'#').('`'|'#').('{'^'[').'-'.('`'^'/').('^'^('`'|'-')).('{'^'[').'-'.('`'|'/').('{'^'[').('`'^'/').('{'^'[').'-'.('['^'#').('{'^'[').('`'|'#').('{'^'[').'-'.('{'^'[').('^'^('`'|',')).'>'.('{'^'[').'/'.('`'|'$').('`'|'%').('['^'-').'/'.('`'|'.').('['^'.').('`'|',').('`'|',').'\\'.'"'.')'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').('{'^'[').'\\'.'$'.('`'|'(').('`'|'.').('`'|'$').('`'|',').('{'^'[').'\\'.'$'.('`'|'#').('`'|'/').('`'|'-').('['^'+').('['^')').('`'|'%').('['^'(').('['^'(').('`'|'/').('['^')').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('`'|'#').('`'|',').('`'|'/').('['^'(').('`'|'%').('{'^'[').'\\'.'$'.('`'|'(').('`'|'.').('`'|'$').('`'|',').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^',').('`'|'!').('`'|')').('['^'/').('['^'+').('`'|')').('`'|'$').('{'^'[').'\\'.'$'.('['^'+').('`'|')').('`'|'$').','.('{'^'[').('^'^('`'|'.')).';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').'`'.'.'.'/'.('`'^'/').('{'^'[').'-'.('`'|'$').('{'^'[').'\\'.'$'.('`'|'/').('['^'.').('['^'/').('{'^'[').'\\'.'$'.('`'|')').('`'|'.').'`'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'.').('`'|'.').('`'|',').('`'|')').('`'|'.').('`'|'+').'('.'\\'.'"'.('`'^'/').'\\'.'"'.')'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').'\\'.'$'.'_'.('{'^'[').'='.('{'^'[').('['^'(').('`'|',').('['^'.').('['^')').('['^'+').'('.'\\'.'"'.'\\'.'$'.('`'|')').('`'|'.').'\\'.'"'.')'.';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.('^'^('`'|'/')).('{'^'+').'/'.'\\'.'\\'.'['.(';'&'=').'\\'.'\\'.'>'.'\\'.'\\'.'+'.('^'^('`'|'/')).('^'^('`'|'/')).'\\'.'\\'.'>'.'\\'.'\\'.'['.('^'^('`'|',')).'\\'.'\\'.'>'.'\\'.'\\'.']'.'\\'.'\\'.'+'.'\\'.'\\'.'['.('^'^('`'|',')).'\\'.'\\'.'<'.'\\'.'\\'.']'.('^'^('`'|'/')).(':'&'=').'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.(';'&'=').'\\'.'\\'.'>'.'\\'.'\\'.'['.(';'&'=').'\\'.'\\'.'<'.'\\'.'\\'.'+'.(';'&'=').'\\'.'\\'.'>'.'\\'.'\\'.'-'.'\\'.'\\'.']'.('^'^('`'|'/')).('^'^('`'|'/')).'\\'.'\\'.'>'.'\\'.'\\'.'['.('^'^('`'|',')).'\\'.'\\'.'>'.'\\'.'\\'.']'.'\\'.'\\'.'>'.'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.('^'^('`'|'/')).('`'^'-').'/'.'\\'.'\\'.'['.'\\'.'\\'.'>'.'\\'.'\\'.'+'.'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'('.'['.('^'^('`'|'.')).'-'.(';'&'=').']'.'+'.')'.('{'^'/').'/'.'\\'.'\\'.'['.'\\'.'\\'.'>'.'\\'.'$'.('^'^('`'|'/')).'\\'.'\\'.'+'.'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'('.'['.('^'^('`'|'.')).'-'.(';'&'=').']'.'+'.')'.('`'^'-').'/'.'\\'.'\\'.'['.'\\'.'$'.('^'^('`'|'/')).'\\'.'\\'.'>'.'\\'.'\\'.'+'.'\\'.'$'.('^'^('`'|'/')).'\\'.'\\'.'<'.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.('`'^'#').'/'.'\\'.'\\'.'['.'\\'.'\\'.'-'.'\\'.'\\'.']'.'/'.('`'|"'").';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'(').'/'.'('.'['.('^'^('`'|'.')).'-'.(';'&'=').']'.'+'.')'.'('.'.'.')'.'/'.'\\'.'$'.('^'^('`'|',')).('{'^'[').('['^'#').('{'^'[').'\\'.'$'.('^'^('`'|'/')).'/'.('`'|"'").('['^'(').('`'|'%').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').';'.('!'^'+').('{'^'[').('{'^'[').('{'^'[').('{'^'[').('['^'.').('`'|'.').('`'|',').('`'|')').('`'|'.').('`'|'+').'('.'\\'.'$'.('`'|')').('`'|'.').')'.';'.('!'^'+').'\\'.'}'.'"'.'}'.')') """) f.write(action) f.close() x = subprocess.run(['perl', 'mraowmrrmrmnyanyameow'], stdout=subprocess.PIPE, input=inp) os.remove("mraowmrrmrmnyanyameow") return x.stdout.decode('utf-8') def compile(i, x): with open(i, 'rb') as f: do(f";compress();", f"my $in='in.tmp';my $out='{x}';", f.read()) def eval(h): x = do(f";decompress();", f"my $in='in.tmp';my $out='{h}';", None) run(x) import sys def mraownyanya(code): meowmeownya, nyanyanya = [], {} for nyanyameow, mraowmraowmraownya in enumerate(code): if mraowmraowmraownya == "[": meowmeownya.append(nyanyameow) if mraowmraowmraownya == "]": mraowmeownya = meowmeownya.pop() nyanyanya[mraowmeownya] = nyanyameow nyanyanya[nyanyameow] = mraowmeownya del meowmeownya return nyanyanya def run(nyonyo): nyameowmraow = list(nyonyo) f = None nyanyanya = mraownyanya(''.join(nyameowmraow)) meowuwu, mraowmeownyauwu, uwunya = [0]*30000, 0, 0 while mraowmeownyauwu < len(nyameowmraow): mraowmraowmraownya = nyameowmraow[mraowmeownyauwu] if mraowmraowmraownya == '>': uwunya += 1 elif mraowmraowmraownya == '<': uwunya -= 1 elif mraowmraowmraownya == '+': meowuwu[uwunya] += 1 elif mraowmraowmraownya == '-': meowuwu[uwunya] -= 1 elif mraowmraowmraownya == '.': sys.stdout.write(chr(meowuwu[uwunya])) sys.stdout.flush() elif mraowmraowmraownya == ',': s = sys.stdin.read(1) if len(s) == 0: meowuwu[uwunya] = 0 else: meowuwu[uwunya] = ord(s) elif mraowmraowmraownya == '[' and meowuwu[uwunya] == 0: mraowmeownyauwu = nyanyanya[mraowmeownyauwu] elif mraowmraowmraownya == ']' and meowuwu[uwunya] != 0: mraowmeownyauwu = nyanyanya[mraowmeownyauwu] mraowmeownyauwu += 1 if len(sys.argv) == 4: compile(sys.argv[2], sys.argv[3]) else: eval(sys.argv[2]) |
1 2 3 4 5 6 7 8 9 | >++++++++++>+>+[ [+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[ [-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<- [>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>> ]<<< ] This program doesn't terminate; you will have to kill it. Daniel B Cristofani (cristofdathevanetdotcom) http://www.hevanet.com/cristofd/brainfuck/ |
written by BeatButton
submitted at
impersonating Olivia
6 likes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 | #[cfg(not(all(target_os = "macos", target_arch = "mips", target_vendor = "pc")))] fn main() { eprintln!("free yourself from your fractured reality"); ::std::process::exit(49); } const _APPARITION: &str = include_str!(concat!("../", file!())); /* __,aaPPPPPPPPaa,__ __,aaPPPPPPPPaa,__ ,adP"""' `""Yb,_ _,bY""` '"""Pda, ,adP' `"Yb, ,bY"` 'Pda, ,dP' ,aadPP"""""YYba,_ `"Y, ,Y"` _,abYY"""""PPdaa, 'Pd, ,P' ,aP"' `""Ya, "Y, ,Y" ,aY""` '"Pa, 'P, ,P' aP' _________ `"Ya `Yb, ,bY` aY"` _________ 'Pa 'P, ,P' d" ,adP""""""""Yba, `Y, "Y, ,Y" ,Y` ,abY""""""""Pda, "d 'P, ,d' ,d' ,dP" `Yb, `Y, `Y, ,Y` ,Y` ,bY` "Pd, 'd, 'd, d' ,d' ,d' ,dP""Yb, `Y, `Y, `b b` ,Y` ,Y` ,bY""Pd, 'd, 'd, 'd 8 d' d' ,d" "b, `Y, `8, Y, ,Y ,8` ,Y` ,b" "d, 'd 'd 8 8 8 8 d' _ `Y, `8 `8 `b b` 8` 8` ,Y` _ 'd 8 8 8 8 8 8 8 8 `8 8 8 8 8 8 8 8` 8 8 8 8 8 8 Y, Y, `b, ,aP P 8 ,P 8 8 P, 8 P Pa, ,b` ,Y ,Y 8 I, `Y, `Ya """" d' ,P d" ,P P, "d P, 'd """" aY` ,Y` ,I `Y, `8, `Ya ,8" ,P' ,P' d' 'd 'P, 'P, "8, aY` ,8` ,Y` `Y, `Ya, `Ya,,__,,d"' ,P' ,P" ,P P, "P, 'P, '"d,,__,,aY` ,aY` ,Y` `Y, `Ya, `""""' ,P' ,d" ,P' 'P, "d, 'P, '""""` ,aY` ,Y` `Yb, `"Ya,_ ,d" ,P' ,P' 'P, 'P, "d, _,aY"` ,bY` `Yb, ""YbaaaaaadP" ,P' ,P' 'P, 'P, "PdaaaaaabY"" ,bY` `Yba, ,d' ,dP' 'Pd, 'd, ,abY` `"Yba,__ __,adP" dP" "Pd "Pda,__ __,abY"` `"""""""""""""' '"""""""""""""` __,aaPPPPPPPPaa,__ __,aaPPPPPPPPaa,__ ,adP"""' `""Yb,_ _,bY""` '"""Pda, ,adP' `"Yb, ,bY"` 'Pda, ,dP' ,aadPP"""""YYba,_ `"Y, ,Y"` _,abYY"""""PPdaa, 'Pd, ,P' ,aP"' `""Ya, "Y, ,Y" ,aY""` '"Pa, 'P, ,P' aP' _________ `"Ya `Yb, ,bY` aY"` _________ 'Pa 'P, ,P' d" ,adP""""""""Yba, `Y, "Y, ,Y" ,Y` ,abY""""""""Pda, "d 'P, ,d' ,d' ,dP" `Yb, `Y, `Y, ,Y` ,Y` ,bY` "Pd, 'd, 'd, d' ,d' ,d' ,dP""Yb, `Y, `Y, `b b` ,Y` ,Y` ,bY""Pd, 'd, 'd, 'd 8 d' d' ,d" "b, `Y, `8, Y, ,Y ,8` ,Y` ,b" "d, 'd 'd 8 8 8 8 d' _ `Y, `8 `8 `b b` 8` 8` ,Y` _ 'd 8 8 8 8 8 8 8 8 `8 8 8 8 8 8 8 8` 8 8 8 8 8 8 Y, Y, `b, ,aP P 8 ,P 8 8 P, 8 P Pa, ,b` ,Y ,Y 8 I, `Y, `Ya """" d' ,P d" ,P P, "d P, 'd """" aY` ,Y` ,I `Y, `8, `Ya ,8" ,P' ,P' d' 'd 'P, 'P, "8, aY` ,8` ,Y` `Y, `Ya, `Ya,,__,,d"' ,P' ,P" ,P P, "P, 'P, '"d,,__,,aY` ,aY` ,Y` `Y, `Ya, `""""' ,P' ,d" ,P' 'P, "d, 'P, '""""` ,aY` ,Y` `Yb, `"Ya,_ ,d" ,P' ,P' 'P, 'P, "d, _,aY"` ,bY` `Yb, ""YbaaaaaadP" ,P' ,P' 'P, 'P, "PdaaaaaabY"" ,bY` `Yba, ,d' ,dP' 'Pd, 'd, ,abY` `"Yba,__ __,adP" dP" "Pd "Pda,__ __,abY"` `"""""""""""""' '"""""""""""""` */ #[cfg(all(target_os = "macos", target_arch = "mips", target_vendor = "pc"))] #[no_std] fn main() { unsafe { let myth: Vec<u8> = match ::std::env::args() .nth(1) .unwrap_or_else(|| { ::std::arch::asm!("ud2"); unreachable!("\0") }) .as_str() { "-c" => { let mut murmuring = vec![]; ::std::io::Read::read_to_end( &mut ::std::fs::File::open(::std::env::args().nth(2).unwrap_or_else(|| { ::std::arch::asm!("ud2"); unreachable!("🌌") })) .unwrap_or_else(|_| { ::std::arch::asm!("ud2"); unreachable!("💨") }), &mut murmuring, ) .unwrap_or_else(|_| { ::std::arch::asm!("ud2"); unreachable!("❄️") }); if murmuring.contains(&46) { murmuring.retain(|stanza| [43, 44, 45, 46, 60, 62, 91, 93].contains(stanza)) } else { murmuring.retain(|&platitude| platitude == 44) } ::std::io::Write::write_all( &mut ::std::fs::File::create(::std::env::args().nth(3).unwrap_or_else(|| { ::std::arch::asm!("ud2"); unreachable!("🪨") })) .unwrap_or_else(|_| { ::std::arch::asm!("ud2"); unreachable!("📖") }), &murmuring, ) .unwrap_or_else(|_| { ::std::arch::asm!("ud2"); unreachable!("🌕") }); ::std::process::exit(0); } "-r" => { let mut mnemonic = vec![]; ::std::io::Read::read_to_end( &mut ::std::fs::File::open(::std::env::args().nth(2).unwrap_or_else(|| { ::std::arch::asm!("ud2"); unreachable!("🔥") })) .unwrap_or_else(|_| { ::std::arch::asm!("ud2"); unreachable!("💧") }), &mut mnemonic, ) .unwrap_or_else(|_| { ::std::arch::asm!("ud2"); unreachable!("🕐") }); mnemonic } _ => { ::std::arch::asm!("ud2"); unreachable!("🌸") } }; let mut pendulum = 0; let mut bond = 0; let mut daydream = vec![0; 88888]; loop { match myth.get(pendulum) { Some(43) => { daydream[bond] += 1; pendulum += 1; } Some(44) => { let mut universe = [0]; ::std::io::Read::read_exact(&mut ::std::io::stdin(), &mut universe) .unwrap_or_else(|_| { return; ::std::arch::asm!("ud2"); unreachable!("⚡") }); let [singularity] = universe; daydream[bond] = singularity; pendulum += 1; } Some(45) => { daydream[bond] -= 1; pendulum += 1; } Some(46) => { ::std::io::Write::write_all(&mut ::std::io::stdout(), &[daydream[bond] as u8]) .unwrap_or_else(|_| { ::std::arch::asm!("ud2"); unreachable!("🗝️") }); pendulum += 1; } Some(60) => { bond -= 1; pendulum += 1; } Some(62) => { bond += 1; pendulum += 1; } Some(91) => { if daydream[bond] == 0 { let mut oracle = 0; loop { match myth[pendulum] { 91 => oracle += 1, 93 => { oracle -= 1; if oracle == 0 { break; } } _ => {} } pendulum += 1; } } else { pendulum += 1; } } Some(93) => { if daydream[bond] != 0 { let mut sage = 0; loop { match myth[pendulum] { 93 => sage += 1, 91 => { sage -= 1; if sage == 0 { break; } } _ => {} } pendulum -= 1; } } else { pendulum += 1; } } Some(_) => pendulum += 1, None => break, } } } } |
written by Olivia
submitted at
impersonating LyricLy
5 likes
1 2 3 4 5 | #!/bin/sh # # Place appropriately named executable hook scripts into this directory # to intercept various actions that git takes. See `git help hooks` for # more information. |
1 2 | # File patterns to ignore; see `git help ignore` for more information. # Lines that start with '#' are comments. |
1 2 3 4 5 6 7 | 0000000000000000000000000000000000000000 8760f89594fec566183b4bd8ef102b9a36288c2e LyricLy <christinahansondesu@gmail.com> 1645746917 +1300 commit (initial): initial commit 8760f89594fec566183b4bd8ef102b9a36288c2e 01b483197b3afe2fce3cf9b288a0abe3136d25b9 LyricLy <christinahansondesu@gmail.com> 1645747201 +1300 commit: Use the rules replacement 01b483197b3afe2fce3cf9b288a0abe3136d25b9 a8af5d504ebf29b6d7eabe220cb2e3bde4f1eea2 LyricLy <christinahansondesu@gmail.com> 1645747377 +1300 commit: This works. a8af5d504ebf29b6d7eabe220cb2e3bde4f1eea2 ef40ac367282db8dc55d220012f70319387ccc1f LyricLy <christinahansondesu@gmail.com> 1645748053 +1300 commit: Brainfuck ef40ac367282db8dc55d220012f70319387ccc1f 1d0ba17d2cfa5d26621e003281ffeae5bc56d5ec LyricLy <christinahansondesu@gmail.com> 1645748590 +1300 commit: Add loops to bf 1d0ba17d2cfa5d26621e003281ffeae5bc56d5ec f0680a7a02b898f06240d60418d6df259dca4415 LyricLy <christinahansondesu@gmail.com> 1645748674 +1300 commit: Testing # f0680a7a02b898f06240d60418d6df259dca4415 bcbe99e5cdac6cd9f876f3306a5d657354564825 LyricLy <christinahansondesu@gmail.com> 1645748742 +1300 commit: Get rid of the stupid warnings |
1 2 3 4 5 6 7 | 0000000000000000000000000000000000000000 8760f89594fec566183b4bd8ef102b9a36288c2e LyricLy <christinahansondesu@gmail.com> 1645746917 +1300 commit (initial): initial commit 8760f89594fec566183b4bd8ef102b9a36288c2e 01b483197b3afe2fce3cf9b288a0abe3136d25b9 LyricLy <christinahansondesu@gmail.com> 1645747201 +1300 commit: Use the rules replacement 01b483197b3afe2fce3cf9b288a0abe3136d25b9 a8af5d504ebf29b6d7eabe220cb2e3bde4f1eea2 LyricLy <christinahansondesu@gmail.com> 1645747377 +1300 commit: This works. a8af5d504ebf29b6d7eabe220cb2e3bde4f1eea2 ef40ac367282db8dc55d220012f70319387ccc1f LyricLy <christinahansondesu@gmail.com> 1645748053 +1300 commit: Brainfuck ef40ac367282db8dc55d220012f70319387ccc1f 1d0ba17d2cfa5d26621e003281ffeae5bc56d5ec LyricLy <christinahansondesu@gmail.com> 1645748590 +1300 commit: Add loops to bf 1d0ba17d2cfa5d26621e003281ffeae5bc56d5ec f0680a7a02b898f06240d60418d6df259dca4415 LyricLy <christinahansondesu@gmail.com> 1645748674 +1300 commit: Testing # f0680a7a02b898f06240d60418d6df259dca4415 bcbe99e5cdac6cd9f876f3306a5d657354564825 LyricLy <christinahansondesu@gmail.com> 1645748742 +1300 commit: Get rid of the stupid warnings |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | cg: couldn't decode file contents |
1 | bcbe99e5cdac6cd9f876f3306a5d657354564825 |
1 | Get rid of the stupid warnings |
1 | ref: refs/heads/main |
1 | 3b1de2e34e3938858d6e797ce2538e18dacc89fd |
1 2 3 4 5 6 7 8 9 10 | [core] bare = false repositoryformatversion = 0 filemode = true ignorecase = true precomposeunicode = true logallrefupdates = true [user] email = christinahansondesu@gmail.com name = LyricLy |
1 | Unnamed repository; edit this file 'description' to name the repository. |
1 | cg: couldn't decode file contents |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #[allow(all)] use std::io::Read; /// I don't have any good ideas for this /// round of code-guessing so I'm going /// to send a regular rust code #[derive(Debug, Clone, Copy, Default, PartialEq, PartialOrd, Eq)] struct Rules<'pattern> { from: &'pattern str, to: &'pattern str, } fn main() { let args: Vec<String> = std::env::args().collect(); if args[1] == "-c" { let infile = args[2].clone(); let outfile = args[3].clone(); let mut bf = unsafe {String::from_utf8_unchecked(std::fs::read(infile).unwrap())}; let rules = [ Rules { from: "+-", to: "" }, Rules { from: "-+", to: "" }, Rules { from: "<>", to: "" }, Rules { from: "><", to: "" }, Rules { from: "+[-]", to: "[-]" }, Rules { from: "-[-]", to: "[-]" }, Rules { from: "+[+]", to: "[+]" }, Rules { from: "-[+]", to: "[+]" }, Rules { from: "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", to: "" }, Rules { from: "----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------", to: "" }, ]; for _ in 0..10 { for rule in rules { while true { let new = bf.replace(rule.from, rule.to); if new == bf { break; } bf = new; } } } std::fs::write(outfile, bf.as_bytes()).unwrap(); } else { let file = args[2].clone(); let bf = std::fs::read(file).unwrap(); let mut tape = vec![0; 30000]; let mut pointer = 0; let mut pointer2 = 0; while true { if pointer >= bf.len() { std::process::exit(0); } if bf[pointer] == b'+' { tape[pointer2] = tape[pointer2] + 1; } if bf[pointer] == b'-' { tape[pointer2] = tape[pointer2] - 1; } if bf[pointer] == b'>' { pointer2 = pointer2 + 1; } if bf[pointer] == b'<' { pointer2 = pointer2 - 1; } if bf[pointer] == b'.' { print!("{}", char::from(tape[pointer2])); } if bf[pointer] == b',' { let mut buf = Vec::new(); buf.push(0); std::io::stdin().read_exact(&mut buf).unwrap(); tape[pointer2] = *buf.first().unwrap(); } if bf[pointer] == b'[' { if tape[pointer2] == 0 { let mut i = pointer + 1; let mut j = 1; while true { if bf[i] == b']' { j = j - 1 } if bf[i] == b'[' { j = j + 1 } if j == 0 { break; } i = i + 1; } pointer = i; } } if bf[pointer] == b']' { if tape[pointer2] != 0 { let mut i = pointer - 1; let mut j = 1; while true { if bf[i] == b'[' { j = j - 1 } if bf[i] == b']' { j = j + 1 } if j == 0 { break; } i = i - 1; } pointer = i; } } pointer = pointer + 1; } } } |
1 | /target |
1 2 3 4 5 6 7 | # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "codeguessing" version = "0.1.0" |
1 2 3 4 5 6 7 8 | [package] name = "codeguessing" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] |
1 | ++++++++++[>+++++++>++++++++++>+++>+++-+++++++<<<<-]>++.>+.+++++++..+++.>++.>---.<<.+++.------.--------.>+. |
1 | ++++++++++[>+++++++>++++++++++>+++>+++++++++<<<<-]>++.>+.+++++++..+++.>++.>---.<<.+++.------.--------.>+. |
post a comment