previndexinfonext

code guessing, round #13 (completed)

started at ; stage 2 at ; ended at

specification

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:

if 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:

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:

results

  1. 👑 Olivia +2 ~5 -1 = 6
    1. gollark (was IFcoltransG)
    2. BeatButton (was MathR)
    3. LyricLy
    4. IFcoltransG (was razetime)
    5. razetime (was gollark)
    6. MathR (was HelloBoi)
    7. Palaiologos (was quintopia)
    8. SoundOfSpouting
    9. HelloBoi (was Palaiologos)
    10. quintopia (was BeatButton)
  2. Palaiologos +4 ~1 -0 = 5
    1. Olivia (was IFcoltransG)
    2. razetime (was MathR)
    3. BeatButton (was LyricLy)
    4. MathR (was razetime)
    5. gollark
    6. HelloBoi
    7. quintopia
    8. SoundOfSpouting
    9. LyricLy (was BeatButton)
    10. IFcoltransG (was Olivia)
  3. razetime +0 ~3 -0 = 3
    1. gollark (was IFcoltransG)
    2. SoundOfSpouting (was MathR)
    3. IFcoltransG (was LyricLy)
    4. HelloBoi (was gollark)
    5. MathR (was HelloBoi)
    6. Palaiologos (was quintopia)
    7. LyricLy (was SoundOfSpouting)
    8. quintopia (was Palaiologos)
    9. Olivia (was BeatButton)
    10. BeatButton (was Olivia)
  4. IFcoltransG +2 ~0 -0 = 2
    1. gollark (was MathR)
    2. BeatButton (was LyricLy)
    3. MathR (was razetime)
    4. razetime (was gollark)
    5. HelloBoi
    6. Palaiologos (was quintopia)
    7. SoundOfSpouting
    8. Olivia (was Palaiologos)
    9. quintopia (was BeatButton)
    10. LyricLy (was Olivia)
  5. gollark +2 ~2 -2 = 2
    1. Olivia (was IFcoltransG)
    2. quintopia (was MathR)
    3. razetime (was LyricLy)
    4. MathR (was razetime)
    5. HelloBoi
    6. Palaiologos (was quintopia)
    7. SoundOfSpouting
    8. BeatButton (was Palaiologos)
    9. IFcoltransG (was BeatButton)
    10. LyricLy (was Olivia)
  6. BeatButton +0 ~2 -0 = 2
    1. Olivia (was IFcoltransG)
    2. HelloBoi (was MathR)
    3. IFcoltransG (was LyricLy)
    4. gollark (was razetime)
    5. LyricLy (was gollark)
    6. quintopia (was HelloBoi)
    7. MathR (was quintopia)
    8. Palaiologos (was SoundOfSpouting)
    9. SoundOfSpouting (was Palaiologos)
    10. razetime (was Olivia)
  7. quintopia +3 ~0 -2 = 1
    1. Olivia (was IFcoltransG)
    2. MathR
    3. IFcoltransG (was LyricLy)
    4. Palaiologos (was razetime)
    5. gollark
    6. HelloBoi
    7. razetime (was SoundOfSpouting)
    8. BeatButton (was Palaiologos)
    9. SoundOfSpouting (was BeatButton)
    10. LyricLy (was Olivia)
  8. LyricLy +2 ~0 -1 = 1
    1. SoundOfSpouting (was IFcoltransG)
    2. MathR
    3. BeatButton (was razetime)
    4. Olivia (was gollark)
    5. HelloBoi
    6. razetime (was quintopia)
    7. Palaiologos (was SoundOfSpouting)
    8. quintopia (was Palaiologos)
    9. gollark (was BeatButton)
    10. IFcoltransG (was Olivia)
  9. MathR +1 ~0 -2 = -1
    1. BeatButton (was IFcoltransG)
    2. Palaiologos (was LyricLy)
    3. IFcoltransG (was razetime)
    4. SoundOfSpouting (was gollark)
    5. LyricLy (was HelloBoi)
    6. razetime (was quintopia)
    7. quintopia (was SoundOfSpouting)
    8. HelloBoi (was Palaiologos)
    9. gollark (was BeatButton)
    10. Olivia
  10. SoundOfSpouting +1 ~2 -5 = -2
    1. Palaiologos (was IFcoltransG)
    2. BeatButton (was MathR)
    3. HelloBoi (was LyricLy)
    4. IFcoltransG (was razetime)
    5. Olivia (was gollark)
    6. razetime (was HelloBoi)
    7. quintopia
    8. MathR (was Palaiologos)
    9. gollark (was BeatButton)
    10. LyricLy (was Olivia)
  11. HelloBoi +1 ~0 -5 = -4
    1. BeatButton (was IFcoltransG)
    2. gollark (was MathR)
    3. IFcoltransG (was LyricLy)
    4. quintopia (was razetime)
    5. MathR (was gollark)
    6. Palaiologos (was quintopia)
    7. SoundOfSpouting
    8. razetime (was Palaiologos)
    9. Olivia (was BeatButton)
    10. LyricLy (was Olivia)

entries

you can download all the entries

entry #1

written by IFcoltransG
submitted at
impersonating quintopia
7 likes

guesses
comments 0

post a comment


Cargo.toml ASCII text
 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"
main.rs Unicode text, UTF-8 text
  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

entry #2

written by MathR
submitted at
6 likes

guesses
comments 0

post a comment


hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.py ASCII text, with very long lines (30038)
  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

entry #3

written by LyricLy
submitted at
impersonating gollark
5 likes

guesses
comments 0

post a comment


le.py Unicode text, UTF-8 text
  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)    

entry #4

written by razetime
submitted at
impersonating MathR
2 likes

guesses
comments 0

post a comment


cg13.rs ASCII text
 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)");
    }
}

entry #5

written by gollark
submitted at
impersonating Olivia
10 likes

guesses
comments 0

post a comment


Rust_Compilers_Tutorial.rs ASCII text
  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(|| {});
}

entry #6

written by HelloBoi
submitted at
impersonating gollark
3 likes

guesses
comments 0

post a comment


cg.py ASCII text
 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)

entry #7

written by quintopia
submitted at
impersonating LyricLy
5 likes

guesses
comments 0

post a comment


bbbbbbbbb.b ASCII text, with CRLF line terminators
 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.]
+>,>+++++++++++[<--------->-]<[>++[<----->-]<[-----[>>>>++++[<++++>-]<[<++
< +++++ +<+ +   +++     +    +> >>-]< <<+ +.>>.<+   +++++ +++   .++++ ++++
+ +.>.< --- - -. +.++ +++ .>.<- ----- --- ------- -- -.> . <+ ++ ++++ ++++
+ ++++++ + ++ .-- --- --- ----- ------ - -.++++++ +++ + +.- - -.- --- -.>.
< -.+++++ +++    ++++ .-- ..--- ------- --.++++++    ++     + +++ +.- ----
- ----.<< <++ + +++++ ++. [-]>[ -]]<[>> ,[>>++++[ <++ + +>- ] <<[ ->- [>+>
> ]>[+[-< +>] >+ >>]< <<< <]>[- ]>[<+>- ]>[<<<+>> >- ]< ,]< < [> ]>>++<<<[
[     <]> [[> ]>> [     >    >]     +[< <]<[<]<+>   >-] >[> ]   +[->> ]<<<
<[[<<]<[<]+<<[+>+<<-[>-->+<<-[>+<[>>+<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>
+<   [[ <]<]>     [ [<< ]     <[< ]+[-<+>>-[   <<+   >++   >-   [<->[ <<+>
> -]] ] <[>+<-] >]> [>] >]> [>>] > >]<<[>>+ >>+ > >]< < [-> > >> >>>> ]<<[
> .>> > >>>>]<< [>- >>> >>] <<[ >,> >>]<<[> +>]<< [+< < ]<] > ]]< [++ ++++
+ ++[ > +++++>+ ++++ + ++++ <<-     ]>++.++ +   + +.. - --- - --- .++ ++.+
. +.> + +.<---. +.-- - .+++ +++ +.- ----.-- .>- - --. < +++ + +++ ..- .>+.
< .-- - -----.> -.<++ +++++ ++. --- ---.>+. <++ + ++. > +.< - -- -----.+++
+.   --     -     .++ +++     + ++. .-.>---.   ++.   <-.   >+   .<--- -.+.
++.>>>]]<[->>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++++<
<-]+>>>,<++[[>[->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[[-]<]++<-[<++++++
+++>[<->-]>>]>>]]<<]<]<[<]>[[<++++++++++++++++>-]>[<<+>>-]<<.>>>].,[.[-],]
]

entry #8

written by SoundOfSpouting
submitted at
impersonating Palaiologos
4 likes

guesses
comments 0

post a comment


bf2asm2bf.hs ASCII text
 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

entry #9

written by Palaiologos
submitted at
impersonating Olivia
3 likes

guesses
comments 0

post a comment


cat.py ASCII text, with very long lines (65174)
 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])
fib.b ASCII text
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/

entry #10

written by BeatButton
submitted at
impersonating Olivia
6 likes

guesses
comments 0

post a comment


frainbuck.rs Unicode text, UTF-8 text
  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,
            }
        }
    }
}

entry #11

written by Olivia
submitted at
impersonating LyricLy
5 likes

guesses
comments 0

post a comment


codeguessing.zip Zip archive data, at least v2.0 to extract, compression method=store
dir codeguessing 2
dir .git
dir hooks
README.sample ASCII text
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.
dir info
exclude ASCII text
1
2
# File patterns to ignore; see `git help ignore` for more information.
# Lines that start with '#' are comments.
dir logs
dir refs
dir heads
main ASCII text
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
HEAD ASCII text
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
dir objects
dir 01
b483197b3afe2fce3cf9b288a0abe3136d25b9 zlib compressed data
1
cg: couldn't decode file contents
dir 0f
17ed68ec6e80af2faa4c43a958bdbe55920609 zlib compressed data
1
cg: couldn't decode file contents
dir 16
6ca789900837069cb314e602e467047ff23487 zlib compressed data
1
cg: couldn't decode file contents
dir 1d
0ba17d2cfa5d26621e003281ffeae5bc56d5ec zlib compressed data
1
cg: couldn't decode file contents
dir 25
504b5d612e6bde64ca15b79c7c9cb0b30c3d6a zlib compressed data
1
cg: couldn't decode file contents
c852062bb9944b392dcb65edd1bae3f8dfb930 zlib compressed data
1
cg: couldn't decode file contents
dir 28
cb96dd95371d2dd3b95633798323117f73fe3f zlib compressed data
1
cg: couldn't decode file contents
dir 30
fb5c1fea585850379412c7c5719c0cf8301ff0 zlib compressed data
1
cg: couldn't decode file contents
dir 3b
1de2e34e3938858d6e797ce2538e18dacc89fd zlib compressed data
1
cg: couldn't decode file contents
dir 44
a3694b604990ab85765eddd51cc45287660fa4 zlib compressed data
1
cg: couldn't decode file contents
dir 53
7327cb3b25d3f17a7670b3f28d04465bb30096 zlib compressed data
1
cg: couldn't decode file contents
dir 59
f5eda019a0c7ae752635f81ecd929f1373b6d8 zlib compressed data
1
cg: couldn't decode file contents
dir 6c
055506d960eed53043f4dae657385931cc0acb zlib compressed data
1
cg: couldn't decode file contents
dir 76
6ed1ec19b02ec3ddda1743e3b7d757b164efd2 zlib compressed data
1
cg: couldn't decode file contents
dir 80
3818fa74a86d3102b267877410429a121e7de4 zlib compressed data
1
cg: couldn't decode file contents
dir 87
60f89594fec566183b4bd8ef102b9a36288c2e zlib compressed data
1
cg: couldn't decode file contents
dir 88
f84ec3f91db04706bab372dcc51377b1b90ced zlib compressed data
1
cg: couldn't decode file contents
dir 89
3d2a89d37c0588eecd5f656fc25a0b70dbcab5 zlib compressed data
1
cg: couldn't decode file contents
dir 98
ed3e93d5aa9e9e1bb002e7fc2778ec6a653357 zlib compressed data
1
cg: couldn't decode file contents
dir a1
3b5156e564d8f94181cc0326719e5dce769110 zlib compressed data
1
cg: couldn't decode file contents
dir a6
0828ac19598453a827796b3b3b9a37ff9db70d zlib compressed data
1
cg: couldn't decode file contents
dir a8
af5d504ebf29b6d7eabe220cb2e3bde4f1eea2 zlib compressed data
1
cg: couldn't decode file contents
dir ac
aef290b3fe41a803a9d33bcc4f3656b500d223 zlib compressed data
1
cg: couldn't decode file contents
dir af
24e2aafc268ce12427e9ee2fe031c1e1f6366a zlib compressed data
1
cg: couldn't decode file contents
dir b0
081c98da3bb2b4ddd104827d89e02745dff92a zlib compressed data
1
cg: couldn't decode file contents
dir bc
be99e5cdac6cd9f876f3306a5d657354564825 zlib compressed data
1
cg: couldn't decode file contents
dir ca
05cd72bed8aa43b1ea5ef086b840f7f1c4d6de zlib compressed data
1
cg: couldn't decode file contents
dir d1
4538991560943e5dee1a3e7d8ce5a989a5acad zlib compressed data
1
cg: couldn't decode file contents
dir d8
8464d54d7d1d02c3c75b55432e0e5114351c54 zlib compressed data
1
cg: couldn't decode file contents
dir e0
6e640ed4c5d273741dee0ccd2b51c534c5c89b zlib compressed data
1
cg: couldn't decode file contents
dir e8
e6cd470e156e399be4776e80f8ff01958a2014 zlib compressed data
1
cg: couldn't decode file contents
dir ea
8c4bf7f35f6f77f75d92ad8ce8349f6e81ddba zlib compressed data
1
cg: couldn't decode file contents
dir ef
40ac367282db8dc55d220012f70319387ccc1f zlib compressed data
1
cg: couldn't decode file contents
dir f0
680a7a02b898f06240d60418d6df259dca4415 zlib compressed data
1
cg: couldn't decode file contents
dir f3
73ad96c274e5305b4b51a74b2097f603b4b429 zlib compressed data
1
cg: couldn't decode file contents
dir f4
1d352e39c2cc0daa41592316974aafb0220b4f zlib compressed data
1
cg: couldn't decode file contents
dir f7
a5f661b31624c75bd4c327ce7686e94557c2f5 zlib compressed data
1
cg: couldn't decode file contents
dir fd
d6695bdbd0c4d89102c57288b1fbdcaed2958e zlib compressed data
1
cg: couldn't decode file contents
dir refs
dir heads
main ASCII text
1
bcbe99e5cdac6cd9f876f3306a5d657354564825
COMMIT_EDITMSG ASCII text
1
Get rid of the stupid warnings
HEAD ASCII text
1
ref: refs/heads/main
ORIG_HEAD ASCII text
1
3b1de2e34e3938858d6e797ce2538e18dacc89fd
config ASCII text
 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
description ASCII text
1
Unnamed repository; edit this file 'description' to name the repository.
index Git index, version 2, 6 entries
1
cg: couldn't decode file contents
dir src
main.rs ASCII text
  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;
        }

    }
}
.gitignore ASCII text
1
/target
Cargo.lock ASCII text
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"
Cargo.toml ASCII text
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]
test ASCII text, with no line terminators
1
++++++++++[>+++++++>++++++++++>+++>+++-+++++++<<<<-]>++.>+.+++++++..+++.>++.>---.<<.+++.------.--------.>+.
test2 ASCII text, with no line terminators
1
++++++++++[>+++++++>++++++++++>+++>+++++++++<<<<-]>++.>+.+++++++..+++.>++.>---.<<.+++.------.--------.>+.