cube¶

cube¶

In [ ]:
open System
open System.Threading.Tasks
open System.Text
In [ ]:
let width = 160
let height = 44
let backgroundChar = '.'
let distanceFromCam = 100.0
let k1 = 40.0
let incrementSpeed = 0.6

get_width¶

In [ ]:
inl get_width () =
    160i32

get_height¶

In [ ]:
inl get_height () =
    44i32

get_background_char¶

In [ ]:
inl get_background_char () =
    '.'

get_distance_from_cam¶

In [ ]:
inl get_distance_from_cam () =
    100f64

get_k1¶

In [ ]:
inl get_k1 () =
    40f64

get_increment_speed¶

In [ ]:
inl get_increment_speed () =
    0.6f64

rotation¶

In [ ]:
type Rotation = { a: float; b: float; c: float }
In [ ]:
type rotation =
    {
        a : f64
        b : f64
        c : f64
    }

cube¶

In [ ]:
type Cube = { cubeWidth: float; horizontalOffset: float }
In [ ]:
type cube =
    {
        cube_width : f64
        horizontal_offset : f64
    }

get_cubes¶

In [ ]:
let cubes = [
    { cubeWidth = 20.0; horizontalOffset = -40.0 }
    { cubeWidth = 10.0; horizontalOffset = 10.0 }
    { cubeWidth = 5.0; horizontalOffset = 40.0 }
]
In [ ]:
inl get_cubes () : list cube =
    [
        { cube_width = 20; horizontal_offset = -40 }
        { cube_width = 10; horizontal_offset = 10 }
        { cube_width = 5; horizontal_offset = 40 }
    ]

calculate_x¶

In [ ]:
let calculateX i j k (rot: Rotation) =
    let a, b, c = rot.a, rot.b, rot.c
    j * sin a * sin b * cos c - k * cos a * sin b * cos c +
    j * cos a * sin c + k * sin a * sin c + i * cos b * cos c
In [ ]:
inl calculate_x i j k (rot : rotation) =
    inl a, b, c = rot.a, rot.b, rot.c
    j * sin a * sin b * cos c - k * cos a * sin b * cos c +
    j * cos a * sin c + k * sin a * sin c + i * cos b * cos c

calculate_y¶

In [ ]:
let calculateY i j k (rot: Rotation) =
    let a, b, c = rot.a, rot.b, rot.c
    j * cos a * cos c + k * sin a * cos c -
    j * sin a * sin b * sin c + k * cos a * sin b * sin c -
    i * cos b * sin c
In [ ]:
inl calculate_y i j k (rot : rotation) =
    inl a, b, c = rot.a, rot.b, rot.c
    j * cos a * cos c + k * sin a * cos c -
    j * sin a * sin b * sin c + k * cos a * sin b * sin c -
    i * cos b * sin c

calculate_z¶

In [ ]:
let calculateZ i j k (rot: Rotation) =
    let a, b, c = rot.a, rot.b, rot.c
    k * cos a * cos b - j * sin a * cos b + i * sin b
In [ ]:
inl calculate_z i j k (rot : rotation) =
    inl a, b, c = rot.a, rot.b, rot.c
    k * cos a * cos b - j * sin a * cos b + i * sin b

calculate_for_surface¶

In [ ]:
let calculateForSurface cubeX cubeY cubeZ ch rot horizontalOffset =
    let x = calculateX cubeX cubeY cubeZ rot
    let y = calculateY cubeX cubeY cubeZ rot
    let z = calculateZ cubeX cubeY cubeZ rot + distanceFromCam
    let ooz = 1.0 / z
    let xp = int (float width / 2.0 + horizontalOffset + k1 * ooz * x * 2.0)
    let yp = int (float height / 2.0 + k1 * ooz * y)
    let idx = xp + yp * width
    if idx >= 0 && idx < width * height
    then Some (idx, (ooz, ch))
    else None
In [ ]:
let calculate_for_surface cube_x cube_y cube_z ch rot horizontal_offset =
    inl x = calculate_x cube_x cube_y cube_z rot
    inl y = calculate_y cube_x cube_y cube_z rot
    inl z = calculate_z cube_x cube_y cube_z rot + get_distance_from_cam ()
    inl ooz = 1.0 / z
    inl xp = i32 (f64 (get_width ()) / 2.0 + horizontal_offset + get_k1 () * ooz * x * 2.0)
    inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * ooz * y)
    inl idx = xp + yp * get_width ()
    if idx >= 0 && idx < get_width () * get_height ()
    then Some (idx, (ooz, ch))
    else None

frange¶

In [ ]:
let frange start stop step =
    seq {
        let mutable current = start
        while (step > 0.0 && current < stop) || (step < 0.0 && current > stop) do
            yield current
            current <- current + step
    }
In [ ]:
inl frange start stop step : _ f64 =
    fun () =>
        inl current = mut start
        loopw.while
            fun () => (step > 0f64 && *current < stop) || (step < 0 && *current > stop)
            fun () =>
                *current |> yield
                current <- *current + step
    |> seq.new_seq

get_cube_points¶

In [ ]:
let getCubePoints (cube: Cube) rot =
    let cw = cube.cubeWidth
    let ho = cube.horizontalOffset
    let cubeRange = frange (-cw) cw incrementSpeed
    seq {
        for cubeX in cubeRange do
            for cubeY in cubeRange do
                let x =
                    [
                        calculateForSurface cubeX cubeY (-cw) '@' rot ho
                        calculateForSurface cw cubeY cubeX '$' rot ho
                        calculateForSurface (-cw) cubeY (-cubeX) '~' rot ho
                        calculateForSurface (-cubeX) cubeY cw '#' rot ho
                        calculateForSurface cubeX (-cw) (-cubeY) ';' rot ho
                        calculateForSurface cubeX cw cubeY '+' rot ho
                    ]
                    |> Seq.choose id
                yield! x
    }
In [ ]:
inl get_cube_points (cube : cube) rot =
    inl cw = cube.cube_width
    inl ho = cube.horizontal_offset
    inl cube_range = frange -cw cw (get_increment_speed ())
    inl cube_range = join cube_range
    inl get cube_x cube_y =
        [
            calculate_for_surface cube_x cube_y -cw ';' rot ho
            calculate_for_surface cw cube_y cube_x '\\' rot ho
            calculate_for_surface -cw cube_y -cube_x '/' rot ho
            calculate_for_surface -cube_x cube_y cw '=' rot ho
            calculate_for_surface cube_x -cw -cube_y '>' rot ho
            calculate_for_surface cube_x cw cube_y '<' rot ho
        ]
        |> listm'.box
    inl get = join get
    inl box x : _ (i32 * f64 * char) =
        optionm'.box x
    inl box = join box
    fun () =>
        backend_switch {
            Fsharp = fun () =>
                $'for cube_x in !cube_range do'
                $'for cube_y in !cube_range do'
                $'let x = !get cube_x cube_y |> Seq.choose !box '
                $'yield\! x' : ()
            Python = fun () =>
                $'cube_range = !cube_range '
                $'get = !get '
                $'box = !box '
                $'for cube_x in cube_range:'
                $'    for cube_y in cube_range:'
                $'        x = get(cube_x)(cube_y)'
                $'        for i in x:'
                $'            i_ = box(i)'
                $'            if i_ is not None: yield i' : ()
        }
    |> seq.new_seq

generate_frame¶

In [ ]:
let generateFrame rot =
    let updates =
        cubes
        |> Seq.collect (fun cube -> getCubePoints cube rot)
    let buffer = Array.create (width * height) None
    updates
    |> Seq.iter (fun (idx, (ooz, ch)) ->
        match buffer.[idx] with
        | Some (prevOoz, _) when prevOoz >= ooz -> ()
        | _ -> buffer.[idx] <- Some (ooz, ch)
    )
    let sb = StringBuilder()
    for row in 0 .. (height - 1) do
        for col in 0 .. (width - 1) do
            let idx = col + row * width
            let ch =
                match buffer.[idx] with
                | Some (_, ch) -> ch
                | None -> backgroundChar
            sb.Append(ch) |> ignore
        sb.AppendLine() |> ignore
    sb.ToString()
In [ ]:
//// test

let rot = { a = 0.0; b = 0.0; c = 0.0 }
let frame = generateFrame rot
Console.Write frame
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$.............................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$.............................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$................@@@@@@@@@$...................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$................+++++++++....................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................@@@@@@@@@@@@@@@@@$.............................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$....................+++++++++++++++++$.............................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$...................................................................................................
....................++++++++++++++++++++++++++++++++++++++++....................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
In [ ]:
inl generate_frame rot =
    inl updates : seq.seq' (int * (f64 * char)) =
        inl get_cube_points' cube : seq.seq' (int * (f64 * char)) =
            get_cube_points cube rot
        inl cubes = get_cubes () |> listm'.box
        backend_switch {
            Fsharp = fun () =>
                inl get_cube_points' = join get_cube_points'
                (cubes |> $'Seq.collect !get_cube_points' ') : seq.seq' (int * (f64 * char))
            Python = fun () =>
                $'cubes = !cubes '
                $'get_cube_points = !get_cube_points' '
                $'[x for cube in cubes for x in get_cube_points(*cube)]' : seq.seq' (int * (f64 * char))
        }
    inl none : _ (f64 * char) = None
    inl width = get_width ()
    inl height = get_height ()
    inl buffer =
        backend_switch {
            Fsharp = fun () =>
                $'Array.create (!width * !height) !none ' : a int (option (f64 * char))
            Python = fun () =>
                $'[!none for _ in range(!width * !height)]' : a int (option (f64 * char))
        }

    inl fn idx ((ooz : f64), (ch : char)) =
        match buffer |> am'.index idx with
        | Some (prev_ooz, _) when prev_ooz >= ooz => ()
        | _ =>
            inl x = (ooz, ch) |> Some
            backend_switch {
                Fsharp = fun () =>
                    $'!buffer.[!idx] <- !x ' : ()
                Python = fun () =>
                    $'!buffer[!idx] = !x ' : ()
            }
    backend_switch {
        Fsharp = fun () =>
            updates
            |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> !fn idx (ooz, ch))' : ()
        Python = fun () =>
            $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, ch)' : ()
    }

    inl sb = "" |> sm'.string_builder
    inl fn1 row =
        inl fn2 col =
            inl idx = col + row * width
            inl ch =
                match buffer |> am'.index idx with
                | Some (_, ch) => ch
                | None => get_background_char ()
            sb |> sm'.builder_append (ch |> sm'.obj_to_string) |> ignore

        backend_switch {
            Fsharp = fun () =>
                $'for col in 0 .. (!width - 1) do !fn2 col' : ()
            Python = fun () =>
                $'for col in range(!width): !fn2(col)' : ()
        }
        sb |> sm'.builder_append_line |> ignore

    backend_switch {
        Fsharp = fun () =>
            $'for row in 0 .. (!height - 1) do !fn1 row' : ()
        Python = fun () =>
            $'for row in range(!height): !fn1(row)' : ()
    }
    sb |> sm'.obj_to_string
In [ ]:
//// test
///! fsharp
///! cuda
///! rust
///! typescript
///! python

{ a = 0.0; b = 0.0; c = 0.0 }
|> generate_frame
|> console.write_line
"
.py output (Python):
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................<<<<<<<<<<<<<<<<<\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................



.rs output:
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................<<<<<<<<<<<<<<<<<\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................



.ts output:
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................<<<<<<<<<<<<<<<<<\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................



.py output:
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................<<<<<<<<<<<<<<<<<\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................



"
.fsx output:
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................<<<<<<<<<<<<<<<<<\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

main_loop¶

In [ ]:
let rec mainLoop rot = async {
    let frame = generateFrame rot
    // Console.SetCursorPosition(0, 0)
    Console.Write(frame)
    let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
    do! Async.Sleep 16
    return! mainLoop rot'
}
In [ ]:
let rec main_loop max i rot =
    fun () =>
        inl rot = join rot
        inl frame = rot |> generate_frame
        if max < 0 then
            run_target function
                | Fsharp (Native) => fun () => $'System.Console.SetCursorPosition (0, 0)'
                | Rust _ => fun () =>
                    open rust.rust_operators
                    !\($'$"print\!(\\\"\\\\x1B[1;1H\\\")"')
                | TypeScript _ => fun () =>
                    open typescript_operators
                    !\($'$"process.stdout.write(\'\\\\u001B[1;1H\')"')
                | Python _ => fun () =>
                    open python_operators
                    // global "import sys"
                    !\($'$"sys.stdout.write(\\\"\\\\033[1;1H\\\")"')
                | Cuda _ => fun () =>
                    global "import sys"
                    $'sys.stdout.write("\\033[1;1H")'
                | _ => fun () => ()
        frame |> console.write_line
        async.sleep 1 |> async.do
        if max > 0 && i >= max
        then ()
        else
            { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 }
            |> main_loop max (i + 1)
            |> async.return_await'
    |> async.new_async_unit

main¶

In [ ]:
// [<EntryPoint>]
let main argv =
    // Console.CursorVisible <- false
    Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 0.0 })
    System.Threading.Thread.Sleep(1000)
In [ ]:
// main [||]
In [ ]:
inl main (_args : array_base string) =
    inl console =
        run_target function
        | Fsharp (Wasm) => fun () => false
        | _ => fun () =>
            ((join "VSCODE_PID") |> env.get_environment_variable |> sm'.length |> (=) 0i32)
                && ("AUTOMATION" |> env.get_environment_variable |> sm'.length |> (=) 0i32)
    if console then
        run_target function
            | Fsharp (Native) => fun () => $'System.Console.CursorVisible <- false'
            | Rust _ => fun () =>
                open rust.rust_operators
                !\($'$"print\!(\\\"\\\\x1B[?25l\\\")"')
            | TypeScript _ => fun () =>
                open typescript_operators
                !\($'$"process.stdout.write(\'\\\\u001B[?25l\')"')
            | Python _ => fun () =>
                open python_operators
                python.import_all "sys"
                !\($'$"sys.stdout.write(\\\"\\\\033[?25l\\\")"')
            | _ => fun () => ()
    main_loop (if console then -1i32 else 50) 1i32 { a = 0.0; b = 0.0; c = 0.0 }
    |> fun x =>
        run_target_args' x function
        | Fsharp (Wasm)
        | TypeScript _ => fun x =>
            x
            |> async.start_child
            |> ignore
        | Python _ => fun x =>
            x
            |> async.start_immediate
            threading.sleep' 2000
        | _ => fun x =>
            x
            |> async.run_synchronously

inl main () =
    backend_switch {
        Fsharp = fun () =>
            $'let main_ = !main '
            $'\#if \!FABLE_COMPILER_RUST'
            $'main_ [||]' : ()
            $'\#else'
            $'let main args = main_ [||]; 0' : ()
            $'\#endif' : ()
        Python = fun () =>
            main ;[]
    }
    : ()
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................;;;;;;;;;\...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\................<<<<<<<<<....................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................<<<<<<<<<<<<<<<<<\.............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;\............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;\............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;................;;;;;<<<<...................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;................<<<<<.......................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................<<<<<<<<<<<<<<<<<<<............................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................................................................................................
....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................................................................................................
....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\..................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;;............................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................;;;;;;;;;;;;;;;;;;;............................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<...................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;...............<<<<<<<<<....................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;<<<<<<<<............................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................<<<<<<<<<<....................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................................................................................................
.....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\.................................................................................................
.....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<...............................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
......................;;;;;;;;;;;...............................................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................................;;;;;;............................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................>;;;;;;;;;;;;;;;;;;............................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................../;;;;;;;;;;;;;;;;;;............................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................../;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................../;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................../;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;...................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................../;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................../;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<...................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................../;;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................../<<<<<<<<<<<<<<<<<<<...........................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................../<<<<<<<<<<<<<<<...............................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................................................................................................
......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................................................................................................
......................<<<<<<<<<<................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;;;............................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................>;;;;;;;;;;;;;;;;;;............................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................../;;;;;;;;;;;;;;;;;;............................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................>/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;...................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................../;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;...................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................../;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................../;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\..................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................//;;;;;;;;;;;;;;;;;;............../<<<<<<<<....................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................//<<<<<<<<<<<<<<<<<<...........................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................./<<<<<<<<<<<<<<<<..............................................................
........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............................................................................................
........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............................................................................................
........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<...............................................................................................
........................<<<<<<<<<<<<<<<<<<<<<<..................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................................................................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;;............................................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................>;;;;;;;;;;;;;;;;;;............................................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................>/;;;;;;;;;;;;;;;;;;............................................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................//;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;...................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\..................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;..................................
......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
.......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<....................................
.......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................///<<<<<<<<<<<<<<<<<...........................................................
.......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............../<<<<<<<<<<<<<<<<..............................................................
.......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............................................................................................
.......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<..............................................................................................
.......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<...................................................................................................
.......................//<<<<<<<<<<<<<<<<<<<<<<<<<..............................................................................................................
........................<<<<<<<.................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;.............................................................
.....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................>;;;;;;;;;;;;;;;;;;............................................................
.....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................>//;;;;;;;;;;;;;;;;;............................................................
.....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;...................................
.....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;...................................
......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\..................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;..................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<..................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............////;;;;;;;<<<<<<<<<<<............./<<<<<<<<....................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............///<<<<<<<<<<<<<<<<<...........................................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............//<<<<<<<<<<<<<<<..............................................................
.......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<..............<<<............................................................................
.......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<...............................................................................................
.......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<......................................................................................................
.......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................................................................................................
.......................//<<<<<<<<<<<<<..........................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................................................................................................
......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................................................................................................
......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
.....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
.....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;.............................................................
....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................>/;;;;;;;;;;;;;;;;;............................................................
....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................>//;;;;;;;;;;;;;;;;;............................................................
....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............>///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;...................................
.....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
.....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
.....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<..................................
.....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./////<<<<<<<<<<<<<<<<<<............/<<<<<<<<....................................
......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............///<<<<<<<<<<<<<<<<............................................................
......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.............//<<<<<<<<<<<<<<<..............................................................
......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<..............<<<<<<.........................................................................
......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................................................................................................
.......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................................................................................................
.......................////<<<<<<<<<<<<<<<<<<<<<<<<<<...........................................................................................................
.......................///<<<<<<<<<<<<<<<<......................................................................................................................
......................./<<<<<...................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
........................;;;;;;..................................................................................................................................
.......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................................................................................................
......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................................................................................................
......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................................................................................................
.....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;.............................................................
....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................>/;;;;;;;;;;;;;;;;\............................................................
...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................>//;;;;;;;;;;;;;;;;;............................................................
...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............////;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\..................................
....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;..................................
....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............//////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\.................................
.....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............./////;;;;;;;;;;;;;;<<<<............///<<<<<<<<..................................
.....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............//////<<<<<<<<<<<<<<<<<............//<<<<<<<....................................
...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............/////<<<<<<<<<<<<<<<............................................................
...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<.............//<<<<<<<<<<<<<<<..............................................................
......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................./<<<<<<<<......................................................................
....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................................................................................................
......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<.......................................................................................................
......................./////<<<<<<<<<<<<<<<<<<<<<<<<<...........................................................................................................
.......................///<<<<<<<<<<<<<<<<<<<<..................................................................................................................
.......................//<<<<<<<<<..............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
........................;;;;;;;;;...............................................................................................................................
.......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................................................................................................
......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................................................................................................
......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................................................................................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
.....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................................................................................................
....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................;;;;;;;;;;;;;;;;;.............................................................
...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................>/;;;;;;;;;;;;;;;;\............................................................
.................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................>///;;;;;;;;;;;;;;;;............................................................
..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............>////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>/////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............///////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;..................................
...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............///////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<.................................
....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........////////;;;;;;;<<<<<<<<<<...........///<<<<<<<<..................................
....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........///////<<<<<<<<<<<<<<<.............//<<<<<<<....................................
.....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.........../////<<<<<<<<<<<<<<<............................................................
.....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<...............///<<<<<<<<<<<<<<..............................................................
.....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<..................//<<<<<<<<<....................................................................
......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................................................................................................
....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<.......................................................................................................
......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................................................................................................
......................./////<<<<<<<<<<<<<<<<<<<<................................................................................................................
.......................///<<<<<<<<<<<<..........................................................................................................................
........................<<<<<...................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
........................;;;;;;;;;;..............................................................................................................................
.......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................................................................................................
.......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................................................................................................
......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................................................................................................
.....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................................................................................................
.....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................................................................................................
....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................../;;;;;;;;;;;;;;;..............................................................
...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................>/;;;;;;;;;;;;;;;;.............................................................
..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................>///;;;;;;;;;;;;;;;;............................................................
..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............>////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;...................................
................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>//////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........////////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\.................................
.................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........////////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<.................................
.................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........////////;;<<<<<<<<<<<<<<<...........///<<<<<<<<..................................
..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<...........////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<.............//////<<<<<<<<<<<<<<............................................................
....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................////<<<<<<<<<<<<<..............................................................
...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................<<<<<<<<<<<...................................................................
.....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<.....................................................................................................
....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................................................................................................
......................///////<<<<<<<<<<<<<<<<<<<<<<<<<..........................................................................................................
......................./////<<<<<<<<<<<<<<<<<<<<<<..............................................................................................................
.......................////<<<<<<<<<<<<<<.......................................................................................................................
......................../<<<<<<<<...............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
........................;;;;;;;;;...............................................................................................................................
.......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................................................................................................
......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........................................................................................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................................................................................................
.....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................................................................................................
....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;;..............................................................
...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................>//;;;;;;;;;;;;;;;.............................................................
..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................>///;;;;;;;;;;;;;;;;............................................................
................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>/////;;;;;;;;;;;;;;;;..............>;;;;;;;;\...................................
.................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>///////;;;;;;;;;;;;;;;;............>//;;;;;;;;\..................................
.................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........./////////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;.................................
..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........./////////;;;;;;;;;;;;<<<<<........../////<<<<<<<<.................................
................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<........./////////;<<<<<<<<<<<<<<...........////<<<<<<<<..................................
...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<.........../////////<<<<<<<<<<<<<<.............//<<<<<<<....................................
.................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<..............//////<<<<<<<<<<<<<<............................................................
....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<..................///<<<<<<<<<<<<<<..............................................................
.....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<.....................//<<<<<<<<<<..................................................................
...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<.......................<.............................................................................
......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................................................................................................
....................../////////<<<<<<<<<<<<<<<<<<<<<<<..........................................................................................................
.......................//////<<<<<<<<<<<<<<<<<<<<<<.............................................................................................................
........................////<<<<<<<<<<<<<<<.....................................................................................................................
........................//<<<<<<<<<<............................................................................................................................
.........................<<<....................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................>;;;;;;;;................................................................................................................................
.......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........................................................................................................
......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................................................................................................
......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................................................................................................
.....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................................................................................................
....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.....................................................................................................
..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................;;;;;;;;;;;;;;;\..............................................................
..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................>/;;;;;;;;;;;;;;;;.............................................................
..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................>///;;;;;;;;;;;;;;;;............................................................
.................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............>/////;;;;;;;;;;;;;;;;..............>/;;;;;;;\...................................
................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>///////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\..................................
................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>/////////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;.................................
.................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<.......///////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<.................................
................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........///////////<<<<<<<<<<<<<<...........////<<<<<<<<..................................
..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............/////////<<<<<<<<<<<<<..............//<<<<<<<....................................
...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<...............///////<<<<<<<<<<<<<............................................................
...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<...................////<<<<<<<<<<<<<..............................................................
....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<......................//<<<<<<<<<<<.................................................................
.....................//////////////<<<<<<<<<<<<<<<<<<<<<<<.........................<<...........................................................................
......................////////////<<<<<<<<<<<<<<<<<<<<<<........................................................................................................
......................//////////<<<<<<<<<<<<<<<<<<<<<<..........................................................................................................
.......................///////<<<<<<<<<<<<<<<<<<<<<<............................................................................................................
......................../////<<<<<<<<<<<<<<<<...................................................................................................................
........................////<<<<<<<<<<..........................................................................................................................
........................./<<<<<<................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................;;;;;;;..................................................................................................................................
......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;.............................................................................................................
......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;...........................................................................................................
.....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........................................................................................................
.....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................................................................................................
....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................................................................................................
...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................................................................................................
...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................../;;;;;;;;;;;;;;...............................................................
..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................>/;;;;;;;;;;;;;;;;.............................................................
..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............>///;;;;;;;;;;;;;;;;............................................................
.................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>///////;;;;;;;;;;;;;;..............>/;;;;;;;....................................
................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>/////////;;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>///////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<.................................
...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<........////////////;<<<<<<<<<<<<<<.........//////;<<<<<<<.................................
................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........////////////<<<<<<<<<<<<<.........../////<<<<<<<..................................
.................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.............//////////<<<<<<<<<<<<..............//<<<<<<<....................................
..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................////////<<<<<<<<<<<<............................................................
...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................../////<<<<<<<<<<<<..............................................................
..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<......................///<<<<<<<<<<.................................................................
.....................///////////////<<<<<<<<<<<<<<<<<<<<<<........................./<<<.........................................................................
.....................//////////////<<<<<<<<<<<<<<<<<<<<<........................................................................................................
......................///////////<<<<<<<<<<<<<<<<<<<<<..........................................................................................................
......................./////////<<<<<<<<<<<<<<<<<<<<............................................................................................................
........................///////<<<<<<<<<<<<<<<..................................................................................................................
.........................////<<<<<<<<<<<........................................................................................................................
..........................//<<<<<<<.............................................................................................................................
...........................<<...................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................;;;;.....................................................................................................................................
......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................................................................................................
......................///;;;;;;;;;;;;;;;;;;;;;;;;;;.............................................................................................................
.....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;...........................................................................................................
....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;.........................................................................................................
....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;.......................................................................................................
...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\....................................................................................................
...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................;;;;;;;;;;;;;;\...............................................................
..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................>/;;;;;;;;;;;;;;;..............................................................
.................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..............>///;/;;;;;;;;;;;;;;............................................................
................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>//////;;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>////////;/;;;;;;;;;;;;;;...........>///;;;;;;;;..................................
...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>///////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<.................................
...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<........./////////////;<<<<<<<<<<<<<.........///////<<<<<<<.................................
...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<.........../////////////<<<<<<<<<<<<............/////<<<<<<...................................
................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<...............//////////<<<<<<<<<<<<..............///<<<<<<....................................
.................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<.................///////<<<<<<<<<<<<..................<..........................................
..................//////////////////////<<<<<<<<<<<<<<<<<<<<<....................//////<<<<<<<<<<<..............................................................
...................//////////////////<<<<<<<<<<<<<<<<<<<<<<........................//<<<<<<<<<<.................................................................
....................////////////////<<<<<<<<<<<<<<<<<<<<<<........................../<<<........................................................................
.....................///////////////<<<<<<<<<<<<<<<<<<<<........................................................................................................
....................../////////////<<<<<<<<<<<<<<<<<<<..........................................................................................................
.......................//////////<<<<<<<<<<<<<<<<<<<<...........................................................................................................
........................////////<<<<<<<<<<<<<<<.................................................................................................................
..........................////<<<<<<<<<<<<......................................................................................................................
..........................////<<<<<<<...........................................................................................................................
............................<<<<................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................;;.......................................................................................................................................
......................>;;;;;;;;;;;;;;;;;;;;.....................................................................................................................
......................///;;;;;;;;;;;;;;;;;;;;;;;;;..............................................................................................................
.....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................................................................................................
....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\.........................................................................................................
....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................................................................................................
...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\...................>/;;;;;;;;;;;;;................................................................
..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................>//;;;;;;;;;;;;;;;..............................................................
.................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............>////;;;;;;;;;;;;;;;............................................................
.................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>/////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;..................................
...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>////////////;;;<<<<<<<<<<<.........>/////;;;<<<<<.................................
...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........////////////////<<<<<<<<<<<..........///////<<<<<<<.................................
..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............//////////////<<<<<<<<<<<............/////<<<<<<...................................
...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............////////////<<<<<<<<<<<..............///<<<<<<....................................
................/////////////////////////<<<<<<<<<<<<<<<<<<<<<..................////////<<<<<<<<<<<..................<..........................................
.................///////////////////////<<<<<<<<<<<<<<<<<<<<<....................//////<<<<<<<<<<<..............................................................
...................////////////////////<<<<<<<<<<<<<<<<<<<<........................///<<<<<<<<<<................................................................
....................//////////////////<<<<<<<<<<<<<<<<<<<<........................../<<<<.......................................................................
.....................////////////////<<<<<<<<<<<<<<<<<<<........................................................................................................
......................//////////////<<<<<<<<<<<<<<<<<<..........................................................................................................
........................///////////<<<<<<<<<<<<<<<<<<...........................................................................................................
.........................////////<<<<<<<<<<<<<<<................................................................................................................
..........................//////<<<<<<<<<<<.....................................................................................................................
...........................////<<<<<<<<.........................................................................................................................
............................//<<<<..............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................../;;;;;;;;;;;;;;;;.........................................................................................................................
.....................>///;;;;;;;;;;;;;;;;;;;;;;;................................................................................................................
.....................//////;;;;;;;;;;;;;;;;;;;;;;;;.............................................................................................................
..................../////////;;;;;;;;;;;;;;;;;;;;;;;;...........................................................................................................
...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................................................................................................
...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;...................>;;;;;;;;;;;;;.................................................................
..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................>//;/;;;;;;;;;;;;...............................................................
.................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............//////;;;;;;;;;;;;;;............................................................
................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........>///////;;;;;;;;;;;;;;;.............>/;;;;;;;....................................
................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>////////////;;;;;;;;;;;<<..........>//;;;;;;;;;..................................
...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>/////////////;<<<<<<<<<<<<.........>/////;;<<<<<<.................................
...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............///////////////<<<<<<<<<<<..........///////<<<<<<..................................
..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............///////////////<<<<<<<<<<<............/////<<<<<<...................................
..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............////////////<<<<<<<<<<<...............///<<<<<....................................
...............///////////////////////////<<<<<<<<<<<<<<<<<<<.................../////////<<<<<<<<<<................../..........................................
................//////////////////////////<<<<<<<<<<<<<<<<<<.....................///////<<<<<<<<<<..............................................................
..................//////////////////////<<<<<<<<<<<<<<<<<<<........................////<<<<<<<<<................................................................
....................///////////////////<<<<<<<<<<<<<<<<<<............................/<<<.......................................................................
...................../////////////////<<<<<<<<<<<<<<<<<<........................................................................................................
......................///////////////<<<<<<<<<<<<<<<<<<.........................................................................................................
........................////////////<<<<<<<<<<<<<<<<<...........................................................................................................
.........................//////////<<<<<<<<<<<<<<...............................................................................................................
...........................///////<<<<<<<<<<<...................................................................................................................
............................/////<<<<<<<........................................................................................................................
..............................//<<<<............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.....................>;;;;;;;;;;;;..............................................................................................................................
.....................///;;;;;;;;;;;;;;;;;;;;;;..................................................................................................................
....................>//////;;;;;;;;;;;;;;;;;;;;;;...............................................................................................................
..................../////////;/;;;;;;;;;;;;;;;;;;;;;\...........................................................................................................
...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................................................................................................
...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;.....................................................................................................
..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;...................;;;;;;;;;;;;;..................................................................
.................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\..............>///;;;;;;;;;;;;;...............................................................
.................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............/////;;;;;;;;;;;;;;;............................................................
................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........>////////;/;;;;;;;;;;;;;............>/;;;;;;;....................................
................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>///////////;;;;;;;<<<<<<<..........>//;;;;;;;;;..................................
...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>///////////////<<<<<<<<<<..........>///////<<<<<<.................................
...............///////////////////////////////<<<<<<<<<<<<<<<<<<.............///////////////<<<<<<<<<<...........////////<<<<<..................................
..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>//////////////<<<<<<<<<<............///////<<<<<...................................
..............//////////////////////////////<<<<<<<<<<<<<<<<<<...............//////////////<<<<<<<<<................///<<<<<....................................
..............//////////////////////////////<<<<<<<<<<<<<<<<<..................///////////<<<<<<<<<.................../.........................................
...............////////////////////////////<<<<<<<<<<<<<<<<<......................///////<<<<<<<<<..............................................................
................./////////////////////////<<<<<<<<<<<<<<<<..........................////<<<<<<<<................................................................
...................//////////////////////<<<<<<<<<<<<<<<<............................./<<<......................................................................
.....................//////////////////<<<<<<<<<<<<<<<<<........................................................................................................
....................../////////////////<<<<<<<<<<<<<<<<.........................................................................................................
........................//////////////<<<<<<<<<<<<<<<...........................................................................................................
..........................///////////<<<<<<<<<<<<...............................................................................................................
............................////////<<<<<<<<<<..................................................................................................................
.............................//////<<<<<<<......................................................................................................................
...............................///<<<<..........................................................................................................................
.................................<..............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
...................../;;;;;;;;..................................................................................................................................
....................>//;;;;;;;;;;;;;;;;;;;;;....................................................................................................................
....................//////;;;;;;;;;;;;;;;;;;;;;.................................................................................................................
...................>//////////;/;;;;;;;;;;;;;;;;;;;.............................................................................................................
...................//////////////;/;;;;;;;;;;;;;;;;;;;;.........................................................................................................
..................>////////////////////;;;;;;;;;;;;;;;;;;;;.....................................................................................................
..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;..................;;;;;;;;;;;;\..................................................................
.................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;..............>/;;/;;;;;;;;;;;;...............................................................
.................////////////////////////////////;;;<<<<<<<<<<<<<<<<............/////;;/;;;;;;;;;;;;............................................................
................>/////////////////////////////////<<<<<<<<<<<<<<<<<............>////////;;;;;;;;;;;;;;;............;;;;;;;;;....................................
................/////////////////////////////////<<<<<<<<<<<<<<<<.............>/////////////;;<<<<<<<<<<..........>////;;;;;;;;.................................
...............>////////////////////////////////<<<<<<<<<<<<<<<<..............////////////////<<<<<<<<<...........//////;<<<<<<.................................
...............////////////////////////////////<<<<<<<<<<<<<<<<..............>///////////////<<<<<<<<<...........>///////<<<<<..................................
..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>///////////////<<<<<<<<<............///////<<<<<...................................
..............///////////////////////////////<<<<<<<<<<<<<<<<................//////////////<<<<<<<<<................///<<<<<....................................
.............>///////////////////////////////<<<<<<<<<<<<<<<...................///////////<<<<<<<<<.............................................................
..............//////////////////////////////<<<<<<<<<<<<<<<.......................///////<<<<<<<<<..............................................................
................///////////////////////////<<<<<<<<<<<<<<<........................../////<<<<<<<................................................................
..................////////////////////////<<<<<<<<<<<<<<<............................../<<......................................................................
..................../////////////////////<<<<<<<<<<<<<<<........................................................................................................
......................//////////////////<<<<<<<<<<<<<<<.........................................................................................................
........................///////////////<<<<<<<<<<<<<<...........................................................................................................
...........................///////////<<<<<<<<<<<<..............................................................................................................
............................//////////<<<<<<<<<.................................................................................................................
..............................///////<<<<<<.....................................................................................................................
................................////<<<<........................................................................................................................
...................................<............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.....................;;;;;......................................................................................................................................
....................>/;/;;;;;;;;;;;;;;..........................................................................................................................
....................//////;/;;;;;;;;;;;;;;;;;...................................................................................................................
...................>//////////;;/;;;;;;;;;;;;;;;;;..............................................................................................................
...................////////////////;;;;;;;;;;;;;;;;;;;;.........................................................................................................
..................>///////////////////////;;;;;;;;;;;;;;;;;.....................................................................................................
................../////////////////////////;;;;;;;;;;;;;;;;;;;;;.................;;;;;;;;;;;....................................................................
.................>///////////////////////////////;;;;;<<<<<<<<<<<<<.............>//;/;;;;;;;;;;;................................................................
.................//////////////////////////////////<<<<<<<<<<<<<<<.............>//////;//;;;;;;;;;;;............................................................
................>/////////////////////////////////<<<<<<<<<<<<<<<..............>/////////;/;;;;;;;;;<<<<...........;;;;;;;;.....................................
................//////////////////////////////////<<<<<<<<<<<<<<..............>///////////////<<<<<<<<<...........>///;;;;;;;<<.................................
...............>/////////////////////////////////<<<<<<<<<<<<<<<..............////////////////<<<<<<<<<...........///////;<<<<<.................................
.............../////////////////////////////////<<<<<<<<<<<<<<<..............>///////////////<<<<<<<<<...........>///////<<<<<..................................
..............>////////////////////////////////<<<<<<<<<<<<<<<..............>///////////////<<<<<<<<<............///////<<<<<...................................
..............>///////////////////////////////<<<<<<<<<<<<<<<...............////////////////<<<<<<<<................////<<<<<...................................
..............////////////////////////////////<<<<<<<<<<<<<<...................////////////<<<<<<<<.............................................................
.............>///////////////////////////////<<<<<<<<<<<<<<.......................////////<<<<<<<<..............................................................
.............../////////////////////////////<<<<<<<<<<<<<<...........................////<<<<<<<................................................................
.................//////////////////////////<<<<<<<<<<<<<<..............................//<<.....................................................................
....................///////////////////////<<<<<<<<<<<<<........................................................................................................
......................////////////////////<<<<<<<<<<<<<.........................................................................................................
......................../////////////////<<<<<<<<<<<<...........................................................................................................
.........................../////////////<<<<<<<<<<..............................................................................................................
.............................//////////<<<<<<<<.................................................................................................................
................................///////<<<<<....................................................................................................................
..................................////<<<.......................................................................................................................
.....................................<..........................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
....................;;..........................................................................................................................................
....................//;/;;;;;;;;;...............................................................................................................................
...................>//////;;;/;;;;;;;;;;;;;.....................................................................................................................
...................////////////;;;;;;;;;;;;;;;;;................................................................................................................
..................>/////////////////////;;;;;;;;;;;;;;..........................................................................................................
..................>///////////////////////;;;/;;;;;;;;;;;;;;....................................................................................................
................../////////////////////////////;;/;;;;;;;;;;;;;;;...............;;;;;;;;;;;.....................................................................
.................>//////////////////////////////////<<<<<<<<<<<<<<..............>/;/;;;;;;;;;;;;................................................................
.................//////////////////////////////////<<<<<<<<<<<<<<..............>///////;;/;;;;;;;;;;;...........................................................
................>//////////////////////////////////<<<<<<<<<<<<<...............>//////////;;/;;;<<<<<<<............/;;;;;;;\....................................
................//////////////////////////////////<<<<<<<<<<<<<...............>////////////////<<<<<<<<...........>//;;/;;;;<<<.................................
...............>//////////////////////////////////<<<<<<<<<<<<................////////////////<<<<<<<<............>///////<<<<..................................
...............>/////////////////////////////////<<<<<<<<<<<<<...............>///////////////<<<<<<<<............>///////<<<<<..................................
.............../////////////////////////////////<<<<<<<<<<<<<................>///////////////<<<<<<<<............////////<<<<...................................
..............>////////////////////////////////<<<<<<<<<<<<<.................///////////////<<<<<<<<................////<<<<<...................................
............../////////////////////////////////<<<<<<<<<<<<.................../////////////<<<<<<<<.............................................................
.............>////////////////////////////////<<<<<<<<<<<<<......................./////////<<<<<<<<.............................................................
.............////////////////////////////////<<<<<<<<<<<<<.........................../////<<<<<<................................................................
................/////////////////////////////<<<<<<<<<<<<................................/<.....................................................................
.................../////////////////////////<<<<<<<<<<<<........................................................................................................
....................../////////////////////<<<<<<<<<<<<.........................................................................................................
........................///////////////////<<<<<<<<<<...........................................................................................................
............................//////////////<<<<<<<<<.............................................................................................................
...............................//////////<<<<<<<................................................................................................................
..................................///////<<<<<..................................................................................................................
....................................////<<<.....................................................................................................................
......................................./........................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
...................;/;;;;;;;;...................................................................................................................................
...................//////;///;;;;;;;;;;.........................................................................................................................
..................>/////////////;;;;;;;;;;;;;;;.................................................................................................................
..................>////////////////////;//;;;;;;;;;;;;..........................................................................................................
................../////////////////////////////;/;;;;;;;;;;;;...................................................................................................
.................>///////////////////////////////////<<<<<<<<<<<<...............................................................................................
.................>//////////////////////////////////<<<<<<<<<<<<................/;;/;;;;;;;;;;;.................................................................
.................///////////////////////////////////<<<<<<<<<<<<...............>///////;;;;;;;;;;;;;;...........................................................
................>//////////////////////////////////<<<<<<<<<<<<................>/////////////;;<<<<<<<<............;;;;;;;;.....................................
................>//////////////////////////////////<<<<<<<<<<<................>////////////////<<<<<<<............>//;;/;;<<<<<.................................
................//////////////////////////////////<<<<<<<<<<<<................>////////////////<<<<<<<............>///////<<<<..................................
...............>//////////////////////////////////<<<<<<<<<<<.................////////////////<<<<<<<............>///////<<<<<..................................
...............//////////////////////////////////<<<<<<<<<<<.................>///////////////<<<<<<<.............>///////<<<<...................................
...............//////////////////////////////////<<<<<<<<<<<.................////////////////<<<<<<<................////<<<<<...................................
..............>/////////////////////////////////<<<<<<<<<<<..................///////////////<<<<<<<.............................................................
............../////////////////////////////////<<<<<<<<<<<........................//////////<<<<<<<.............................................................
.............//////////////////////////////////<<<<<<<<<<<............................/////<<<<<................................................................
..............////////////////////////////////<<<<<<<<<<<................................./<....................................................................
................./////////////////////////////<<<<<<<<<<........................................................................................................
.....................////////////////////////<<<<<<<<<<<........................................................................................................
........................////////////////////<<<<<<<<<<..........................................................................................................
............................////////////////<<<<<<<.............................................................................................................
................................///////////<<<<<<...............................................................................................................
...................................////////<<<<.................................................................................................................
.......................................///<<....................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
...................;;;;;........................................................................................................................................
..................>//////;;;;;;;;;;.............................................................................................................................
..................>//////////////;;;;/;;;;;;....................................................................................................................
..................//////////////////////////;;;;;;;;;;..........................................................................................................
..................//////////////////////////////////;/<<<<<<<<<.................................................................................................
.................>///////////////////////////////////<<<<<<<<<<.................................................................................................
.................////////////////////////////////////<<<<<<<<<<.................;/;;;;;;;;;;;;;.................................................................
.................///////////////////////////////////<<<<<<<<<<.................>///////;;;;;;;;;;;;;;<..........................................................
................>///////////////////////////////////<<<<<<<<<<.................///////////////;<<<<<<<.............;;;;;;;;.....................................
................>///////////////////////////////////<<<<<<<<<..................////////////////<<<<<<<............>//;;//;<<<<..................................
................///////////////////////////////////<<<<<<<<<<.................>////////////////<<<<<<.............>///////<<<<..................................
...............>//////////////////////////////////<<<<<<<<<<..................////////////////<<<<<<<.............////////<<<<..................................
...............>//////////////////////////////////<<<<<<<<<<................../////////////////<<<<<.............>///////<<<<...................................
...............///////////////////////////////////<<<<<<<<<..................>///////////////<<<<<<<................/////<<<<...................................
...............//////////////////////////////////<<<<<<<<<<..................////////////////<<<<<<.............................................................
..............>//////////////////////////////////<<<<<<<<<.......................///////////<<<<<<<.............................................................
..............>/////////////////////////////////<<<<<<<<<<............................./////<<<<................................................................
..............//////////////////////////////////<<<<<<<<<.......................................................................................................
...............////////////////////////////////<<<<<<<<<<.......................................................................................................
....................///////////////////////////<<<<<<<<<........................................................................................................
........................//////////////////////<<<<<<<<..........................................................................................................
............................./////////////////<<<<<<............................................................................................................
.................................////////////<<<<<..............................................................................................................
......................................///////<<<................................................................................................................
..........................................//<<..................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
..................;;;...........................................................................................................................................
..................//;;;;;;/;;;;;;;;.............................................................................................................................
..................////////////////;;//;;;;;;;;;;;...............................................................................................................
.................>///////////////////////////////;;;/;<<<<<.....................................................................................................
.................>////////////////////////////////////<<<<<<<<..................................................................................................
................./////////////////////////////////////<<<<<<<<..................................................................................................
.................////////////////////////////////////<<<<<<<<<.................>/;;;;;;;;;;;;;..................................................................
.................////////////////////////////////////<<<<<<<<..................>///////;;;;;;;;/<<<<<<..........................................................
................>///////////////////////////////////<<<<<<<<<................../////////////////<<<<<<.............;;;;;;;;.....................................
................>///////////////////////////////////<<<<<<<<...................////////////////<<<<<<.............>//;;;//<<<<..................................
................////////////////////////////////////<<<<<<<<..................>////////////////<<<<<<.............>///////<<<<..................................
................///////////////////////////////////<<<<<<<<<..................>///////////////<<<<<<..............////////<<<...................................
................///////////////////////////////////<<<<<<<<...................////////////////<<<<<<..............///////<<<<...................................
...............>///////////////////////////////////<<<<<<<<...................////////////////<<<<<<................/////<<<<...................................
...............>//////////////////////////////////<<<<<<<<...................>///////////////<<<<<<.............................................................
...............///////////////////////////////////<<<<<<<<.......................////////////<<<<<<.............................................................
...............///////////////////////////////////<<<<<<<<............................../////<<<................................................................
..............>//////////////////////////////////<<<<<<<<.......................................................................................................
..............>//////////////////////////////////<<<<<<<<.......................................................................................................
..................//////////////////////////////<<<<<<<<........................................................................................................
......................./////////////////////////<<<<<<..........................................................................................................
.............................///////////////////<<<<............................................................................................................
...................................////////////<<<<.............................................................................................................
.........................................//////<<...............................................................................................................
............................................../.................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.................>;;;;;;;;;;;;/;;;;;;;;.........................................................................................................................
.................>////////////////////;;/;;/;;/;;;;;;;;<<.......................................................................................................
.................>////////////////////////////////////<<<<<<....................................................................................................
................./////////////////////////////////////<<<<<<<...................................................................................................
................./////////////////////////////////////<<<<<<<...................................................................................................
................./////////////////////////////////////<<<<<<...................;;;;;;/;;;;;;;...................................................................
.................////////////////////////////////////<<<<<<<...................>////////;;;///;;<<<<<...........................................................
................>////////////////////////////////////<<<<<<<.................../////////////////<<<<<..............;;;;;;;;.....................................
................>////////////////////////////////////<<<<<<....................////////////////<<<<<<.............>//;;;;;<<<<..................................
................>////////////////////////////////////<<<<<<....................////////////////<<<<<..............>///////<<<<..................................
................>///////////////////////////////////<<<<<<<...................>////////////////<<<<<..............>///////<<<...................................
................////////////////////////////////////<<<<<<<...................>////////////////<<<<<..............////////<<<...................................
................////////////////////////////////////<<<<<<....................>////////////////<<<<<...............///////<<=...................................
................////////////////////////////////////<<<<<<....................////////////////<<<<<.............................................................
...............>///////////////////////////////////<<<<<<<.....................///////////////<<<<<.............................................................
...............>///////////////////////////////////<<<<<<................................/////<<................................................................
...............>///////////////////////////////////<<<<<<.......................................................................................................
...............>///////////////////////////////////<<<<<<.......................................................................................................
...............///////////////////////////////////<<<<<<........................................................................................................
......................////////////////////////////<<<<<.........................................................................................................
..............................////////////////////<<<...........................................................................................................
...................................../////////////<<............................................................................................................
.............................................////<<.............................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................................................................................................
.................//////////////////////////////////////<<<......................................................................................................
.................//////////////////////////////////////<<<<.....................................................................................................
................./////////////////////////////////////<<<<<.....................................................................................................
................./////////////////////////////////////<<<<<.....................................................................................................
................./////////////////////////////////////<<<<<....................;;/;;;;;;;;;;....................................................................
................./////////////////////////////////////<<<<<..................../////////////;;;;<<<<............................................................
................./////////////////////////////////////<<<<<..................../////////////////<<<<...............;;;;;;;;.....................................
................>/////////////////////////////////////<<<<<..................../////////////////<<<<..............>//;;;;;<<<<..................................
................>/////////////////////////////////////<<<<...................../////////////////<<<<..............>///////<<<...................................
................>////////////////////////////////////<<<<<.....................////////////////<<<<<..............>///////<<<...................................
................>////////////////////////////////////<<<<<.....................////////////////<<<<<..............>///////<<<...................................
................>////////////////////////////////////<<<<<.....................////////////////<<<<<..............////////<<....................................
................>////////////////////////////////////<<<<<....................>////////////////<<<<.............................................................
................>////////////////////////////////////<<<<<..................../////////////////<<<<.............................................................
................>////////////////////////////////////<<<<...................................///<................................................................
................>////////////////////////////////////<<<<.......................................................................................................
................////////////////////////////////////<<<<<.......................................................................................................
................////////////////////////////////////<<<<........................................................................................................
.................///////////////////////////////////<<<.........................................................................................................
.............................///////////////////////<<..........................................................................................................
.........................................///////////<...........................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................................................................................................
................;//////////////////////////////////////<<.......................................................................................................
................>//////////////////////////////////////<<<......................................................................................................
................>//////////////////////////////////////<<<......................................................................................................
................>//////////////////////////////////////<<<......................................................................................................
................>//////////////////////////////////////<<<.....................;;;;;;;;;;;;;;;;;<<<.............................................................
.................//////////////////////////////////////<<<...................../////////////////<<<<............................................................
.................//////////////////////////////////////<<<...................../////////////////<<<<...............;;;;;;;;;<...................................
.................//////////////////////////////////////<<<...................../////////////////<<<<..............;;;;;;;;;<<...................................
.................//////////////////////////////////////<<<...................../////////////////<<<<..............>////////<<...................................
................./////////////////////////////////////<<<<...................../////////////////<<<<..............>////////<<...................................
................./////////////////////////////////////<<<<...................../////////////////<<<<..............>////////<<...................................
................./////////////////////////////////////<<<<...................../////////////////<<<<..............////////<<....................................
................./////////////////////////////////////<<<<...................../////////////////<<<<............................................................
................./////////////////////////////////////<<<<.....................>////////////////<<..............................................................
................./////////////////////////////////////<<<.......................................................................................................
................./////////////////////////////////////<<<.......................................................................................................
................./////////////////////////////////////<<<.......................................................................................................
................./////////////////////////////////////<<<.......................................................................................................
.................>////////////////////////////////////<<........................................................................................................
..........................////////////////////////////<<........................................................................................................
................................................//////<.........................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
..............................................;;;;;;;;;<........................................................................................................
.........................;;;;;;;;;;;;;;;;;;;;;/////////<........................................................................................................
................;;;;;;;;;//////////////////////////////<........................................................................................................
................///////////////////////////////////////<........................................................................................................
................>//////////////////////////////////////<<.......................................................................................................
................>//////////////////////////////////////<<.......................................................................................................
................>//////////////////////////////////////<<.........................;;;;;;;;;;;;;;<<<.............................................................
................>//////////////////////////////////////<<......................;;;//////////////<<<.............................................................
.................//////////////////////////////////////<<....................../////////////////<<<....................;;;;<<...................................
.................//////////////////////////////////////<<....................../////////////////<<<...............;;;;;////<<...................................
.................//////////////////////////////////////<<......................>////////////////<<<...............>////////<<...................................
.................>//////////////////////////////////////<......................>////////////////<<<................////////<<...................................
.................>//////////////////////////////////////<......................>/////////////////<<<...............////////<<...................................
.................>//////////////////////////////////////<......................>/////////////////<<<.............../////////....................................
.................>//////////////////////////////////////<......................./////////////////<<<............................................................
..................//////////////////////////////////////<......................./////////////////<<.............................................................
..................//////////////////////////////////////<<......................................................................................................
..................//////////////////////////////////////<<......................................................................................................
..................//////////////////////////////////////<<......................................................................................................
..................>/////////////////////////////////////<<......................................................................................................
..................>/////////////////////////////////////<.......................................................................................................
..................//////////////////////////////////////<.......................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
......................................................<.........................................................................................................
.........................................;;;;;;;;;;;;;<.........................................................................................................
...........................;;;;;;;;;;;;;;//////////////<........................................................................................................
...............;;;;;;;;;;;;;///////////////////////////<........................................................................................................
...............>///////////////////////////////////////<........................................................................................................
................///////////////////////////////////////<........................................................................................................
................///////////////////////////////////////<<.......................................................................................................
................>///////////////////////////////////////<...........................;;;;;;;;;;;;<<..............................................................
................>///////////////////////////////////////<......................;;;;;////////////<<..............................................................
.................///////////////////////////////////////<....................../////////////////<<<....................;;;<<....................................
.................///////////////////////////////////////<......................//////////////////<<...............;;;;;////<<...................................
.................>//////////////////////////////////////<<.....................>/////////////////<<...............>////////<<...................................
.................>///////////////////////////////////////<.....................>/////////////////<<................////////<<...................................
..................///////////////////////////////////////<....................../////////////////<<................////////<<...................................
..................///////////////////////////////////////<....................../////////////////<<<...............>////////....................................
..................>//////////////////////////////////////<......................>/////////////////<<............................................................
..................>///////////////////////////////////////<.....................>/////////////////<.............................................................
...................///////////////////////////////////////<.....................................................................................................
...................///////////////////////////////////////<.....................................................................................................
...................>//////////////////////////////////////<.....................................................................................................
...................>//////////////////////////////////////<.....................................................................................................
...................>///////////////////////////////////////<....................................................................................................
....................////////////////////////////................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.................................................;;;;;<.........................................................................................................
.......................................;;;;;;;;;;/////<.........................................................................................................
.............................;;;;;;;;;;///////////////<<........................................................................................................
...................;;;;;;;;;;//////////////////////////<........................................................................................................
...............;;;;////////////////////////////////////<........................................................................................................
...............>///////////////////////////////////////<<.......................................................................................................
...............>////////////////////////////////////////<.......................................<...............................................................
................////////////////////////////////////////<............................;;;;;;;;;;;<...............................................................
................>///////////////////////////////////////<<....................;;;;;;;///////////<<..............................................................
.................////////////////////////////////////////<...................../////////////////<<.....................;;;<<....................................
.................>///////////////////////////////////////<.....................//////////////////<................;;;;;////<....................................
.................>///////////////////////////////////////<<....................>/////////////////<<...............>////////<<...................................
..................////////////////////////////////////////<...................../////////////////<<................////////<<...................................
..................>///////////////////////////////////////<.....................//////////////////<................>////////<...................................
..................>///////////////////////////////////////<<....................>/////////////////<<................//////......................................
...................////////////////////////////////////////<.....................//////////////////<............................................................
...................>///////////////////////////////////////<.....................>///////////////...............................................................
...................>///////////////////////////////////////<<....................///............................................................................
....................////////////////////////////////////////<...................................................................................................
....................>///////////////////////////////////////<...................................................................................................
....................>///////////////////////////////////////<<..................................................................................................
...................../////////////////////////////////////......................................................................................................
.....................>/////////////////////.....................................................................................................................
......................///////...................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.....................................................<..........................................................................................................
..............................................;;;;;;;<<.........................................................................................................
.....................................;;;;;;;;;////////<.........................................................................................................
.............................;;;;;;;;;////////////////<<........................................................................................................
......................;;;;;;;//////////////////////////<........................................................................................................
...............;;;;;;;/////////////////////////////////<........................................................................................................
.............../////////////////////////////////////////<.......................................................................................................
...............>////////////////////////////////////////<....................................;;;<...............................................................
................/////////////////////////////////////////<...........................;;;;;;;;///<...............................................................
................>////////////////////////////////////////<....................;;;;;;;///////////<<..............................................................
................./////////////////////////////////////////<...................>//////////////////<.....................;;;<<....................................
.................>////////////////////////////////////////<....................//////////////////<<...............;;;;;////<....................................
................../////////////////////////////////////////<...................>//////////////////<...............>////////<<...................................
..................>////////////////////////////////////////<....................//////////////////<................/////////<...................................
..................>////////////////////////////////////////<<...................>//////////////////<...............>////////<...................................
...................>////////////////////////////////////////<....................//////////////////<................/////=......................................
...................>////////////////////////////////////////<<...................>/////////////////<<...........................................................
....................>////////////////////////////////////////<..................../////////////.................................................................
....................>////////////////////////////////////////<<...................>///..........................................................................
...................../////////////////////////////////////////<.................................................................................................
.....................>////////////////////////////////////////<.................................................................................................
......................///////////////////////////////////////...................................................................................................
......................>/////////////////////////////............................................................................................................
.......................////////////////////.....................................................................................................................
.......................>//////////..............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
..................................................;;;<..........................................................................................................
............................................;;;;;;///<..........................................................................................................
.....................................;;;;;;;/////////<<.........................................................................................................
..............................;;;;;;;/////////////////<<........................................................................................................
.......................;;;;;;;/////////////////////////<........................................................................................................
.................;;;;;;;///////////////////////////////<<.......................................................................................................
..............;;;///////////////////////////////////////<.......................................................................................................
...............//////////////////////////////////////////<..................................;;;<................................................................
...............>/////////////////////////////////////////<<..........................;;;;;;;////<...............................................................
................>/////////////////////////////////////////<....................;;;;;;///////////<<..............................................................
................./////////////////////////////////////////<<..................;//////////////////<.....................;;;<<....................................
.................>/////////////////////////////////////////<...................//////////////////<<...............;;;;;////<....................................
..................//////////////////////////////////////////<...................//////////////////<<..............>////////<<...................................
..................>/////////////////////////////////////////<<..................>//////////////////<...............>////////<...................................
...................>/////////////////////////////////////////<...................//////////////////<<...............////////<<..................................
..................../////////////////////////////////////////<<..................>//////////////////<...............>////.......................................
....................>/////////////////////////////////////////<...................///////////////////...........................................................
...................../////////////////////////////////////////<<..................>////////////.................................................................
.....................>/////////////////////////////////////////<...................>////........................................................................
......................>/////////////////////////////////////////<...............................................................................................
......................./////////////////////////////////////////................................................................................................
.......................>/////////////////////////////////.......................................................................................................
........................//////////////////////////..............................................................................................................
........................>//////////////////.....................................................................................................................
.........................>//////////............................................................................................................................
..........................////..................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................;;;/;...........................................................................................................
..........................................;;;;/;//////..........................................................................................................
....................................;;;;///////////////.........................................................................................................
...............................;;/;;///////////////////<........................................................................................................
.........................;;;;/;/////////////////////////........................................................................................................
...................;;;;//;///////////////////////////////.......................................................................................................
..............;;/;;//////////////////////////////////////<......................................................................................................
..............>>//////////////////////////////////////////.................................;;;//................................................................
...............>>//////////////////////////////////////////...........................;;/////////...............................................................
................>///////////////////////////////////////////....................;;;///////////////..............................................................
.................>//////////////////////////////////////////<.................;>//////////////////<...................;;///<....................................
.................>>//////////////////////////////////////////..................>///////////////////...............;;;;//////....................................
..................>>//////////////////////////////////////////..................>///////////////////...............>/////////...................................
...................>//////////////////////////////////////////<.................>>///////////////////..............>>////////<..................................
....................>//////////////////////////////////////////..................>>//////////////////...............>>////////..................................
....................>>//////////////////////////////////////////..................>///////////////////...............>///.......................................
.....................>///////////////////////////////////////////..................>////////////////............................................................
......................>//////////////////////////////////////////<.................>>/////////..................................................................
......................>>//////////////////////////////////////////..................>////.......................................................................
.......................>>/////////////////////////////////////////..............................................................................................
........................>>//////////////////////////////////....................................................................................................
.........................>////////////////////////////..........................................................................................................
.........................>>//////////////////////...............................................................................................................
..........................>>////////////////....................................................................................................................
...........................>///////////.........................................................................................................................
............................>////...............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
...................................................;............................................................................................................
..............................................;/;;///...........................................................................................................
.........................................;;;//////////..........................................................................................................
....................................;;;///////////////<.........................................................................................................
...............................;;;/;///////////////////<........................................................................................................
..........................;;;/;/////////////////////////<.......................................................................................................
......................;;/////////////////////////////////.......................................................................................................
.................;;;//////////////////////////////////////......................................................................................................
..............;>///////////////////////////////////////////................................;;;;/................................................................
...............>///////////////////////////////////////////<..........................;;/////////...............................................................
................>///////////////////////////////////////////<....................;;;//////////////..............................................................
.................>///////////////////////////////////////////<................;>///////////////////...................;;///<....................................
.................>>///////////////////////////////////////////.................>>///////////////////..............;;;;//////....................................
..................>>///////////////////////////////////////////.................>///////////////////<.............>>/////////...................................
...................>>///////////////////////////////////////////.................>///////////////////<.............>>/////////..................................
....................>>///////////////////////////////////////////................>>///////////////////..............>>////////..................................
.....................>///////////////////////////////////////////<................>>///////////////////..............>////......................................
......................>///////////////////////////////////////////<................>>//////////////.............................................................
.......................>///////////////////////////////////////////.................>>////////..................................................................
........................>//////////////////////////////////////////..................>////......................................................................
........................>>/////////////////////////////////////.................................................................................................
.........................>>///////////////////////////////......................................................................................................
..........................>>//////////////////////////..........................................................................................................
...........................>>////////////////////...............................................................................................................
............................>>///////////////...................................................................................................................
.............................>>/////////........................................................................................................................
..............................>/////............................................................................................................................
.............................../................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................;;/<............................................................................................................
............................................;;//////<...........................................................................................................
........................................;;;//////////<..........................................................................................................
....................................;/;;//////////////<.........................................................................................................
................................;;/////////////////////<........................................................................................................
...........................;;//;////////////////////////........................................................................................................
.......................;;;///////////////////////////////<......................................................................................................
...................;/;////////////////////////////////////<...................................;.................................................................
..............;;;;/////////////////////////////////////////<..............................;/////................................................................
..............;>////////////////////////////////////////////<.........................;;;;///////...............................................................
................>////////////////////////////////////////////<....................;///////////////..............................................................
.................>////////////////////////////////////////////.................;;//////////////////...................;;;//<....................................
..................>////////////////////////////////////////////................>>///////////////////..............;;;///////<...................................
...................>////////////////////////////////////////////<..............>>>///////////////////.............>>/////////<..................................
....................>////////////////////////////////////////////<..............>>>///////////////////.............>>/////////..................................
.....................>////////////////////////////////////////////<..............>>>///////////////////.............>>////////..................................
......................>////////////////////////////////////////////<..............>>>/////////////////...............>>///......................................
.......................>////////////////////////////////////////////...............>>>////////////..............................................................
........................>///////////////////////////////////////////................>>>///////..................................................................
.........................>>/////////////////////////////////////.....................>>////.....................................................................
..........................>/////////////////////////////////....................................................................................................
...........................>>////////////////////////////.......................................................................................................
............................>>///////////////////////...........................................................................................................
.............................>////////////////////..............................................................................................................
..............................>>//////////////..................................................................................................................
...............................>>/////////......................................................................................................................
................................>>////..........................................................................................................................
.................................>/.............................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
...............................................;;;/.............................................................................................................
...........................................;;;//////............................................................................................................
.......................................;;;///////////...........................................................................................................
....................................;;////////////////..........................................................................................................
................................;;;////////////////////<........................................................................................................
............................;;/;////////////////////////<.......................................................................................................
.........................;;//////////////////////////////<......................................................................................................
.....................;/////////////////////////////////////..................................;;.................................................................
.................;/;////////////////////////////////////////..............................;;////................................................................
...............;/////////////////////////////////////////////.........................;;;////////...............................................................
...............>>/////////////////////////////////////////////.....................;//////////////<.............................................................
................>>/////////////////////////////////////////////................;;///////////////////..................;;;//<....................................
..................>>////////////////////////////////////////////<.............;;>////////////////////..............;/////////...................................
...................>>////////////////////////////////////////////<............\>>>////////////////////............;>//////////..................................
....................>>////////////////////////////////////////////<.............>>>////////////////////...........\>>//////////.................................
.....................>>/////////////////////////////////////////////.............>>>////////////////////............>>>//////...................................
.......................>/////////////////////////////////////////////.............>>>////////////////................>>///......................................
........................>////////////////////////////////////////////..............>>>////////////..............................................................
.........................>>///////////////////////////////////////..................>>>>///////.................................................................
..........................>>///////////////////////////////////......................\>>>///....................................................................
...........................>>//////////////////////////////.....................................................................................................
............................>>//////////////////////////........................................................................................................
.............................>>//////////////////////...........................................................................................................
...............................>//////////////////..............................................................................................................
................................>>/////////////.................................................................................................................
.................................>>/////////....................................................................................................................
..................................>>/////.......................................................................................................................
...................................>//..........................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.............................................;;///..............................................................................................................
..........................................;;;//////<............................................................................................................
.......................................;////////////<...........................................................................................................
....................................;/////////////////..........................................................................................................
................................;;;////////////////////<........................................................................................................
.............................;;;////////////////////////<.......................................................................................................
..........................;///////////////////////////////......................................................................................................
......................;;///////////////////////////////////..................................;/.................................................................
...................;;;//////////////////////////////////////<.............................;;////................................................................
................;;////////////////////////////////////////////........................;;;////////...............................................................
...............;>//////////////////////////////////////////////....................;;//////////////......................<......................................
................>>//////////////////////////////////////////////................;///////////////////..................;;;//<....................................
.................>>>//////////////////////////////////////////////............;;>////////////////////..............;;;///////...................................
..................>>>//////////////////////////////////////////////...........>>>>////////////////////<..........;;;>/////////..................................
...................>>>//////////////////////////////////////////////...........>>>>/////////////////////..........>>>>/////////.................................
.....................>>>/////////////////////////////////////////////<..........>>>>>//////////////////............>>>>//////...................................
......................>>>////////////////////////////////////////////............\>>>>///////////////................>>>//......................................
........................>>>////////////////////////////////////////................>>>>///////////..............................................................
.........................>>>////////////////////////////////////....................>>>>>//////.................................................................
..........................>>>////////////////////////////////.........................>>>>//....................................................................
............................>>>////////////////////////////.....................................................................................................
.............................>>>////////////////////////........................................................................................................
..............................>>>////////////////////...........................................................................................................
................................>>>////////////////.............................................................................................................
.................................>>>////////////................................................................................................................
...................................>>>////////..................................................................................................................
....................................>>>////.....................................................................................................................
......................................>//.......................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
...............................................;<...............................................................................................................
............................................;;;//<..............................................................................................................
..........................................;;///////<............................................................................................................
.......................................;////////////<...........................................................................................................
....................................;/////////////////..........................................................................................................
.................................;/////////////////////<........................................................................................................
..............................;;/////////////////////////.......................................................................................................
...........................;;/////////////////////////////......................................................................................................
........................;;//////////////////////////////////................................;;<.................................................................
.....................;;//////////////////////////////////////............................;//////................................................................
..................;///////////////////////////////////////////<........................;//////////..............................................................
................;///////////////////////////////////////////////....................;;/////////////......................;......................................
................>>>//////////////////////////////////////////////<...............;;/////////////////<.................;;///<....................................
................>>>>///////////////////////////////////////////////............;>/////////////////////.............;;////////...................................
................;>>>>>//////////////////////////////////////////////<........;;>>>/////////////////////<.........;;;>/////////<.................................
..................>>>>>//////////////////////////////////////////////<........>>>>>>////////////////////..........>>>>/////////.................................
...................>>>>>//////////////////////////////////////////////..........>>>>>//////////////////............>>>>>/////...................................
.....................>>>>>//////////////////////////////////////////.............>>>>>>/////////////.................>>>>/......................................
......................>>>>>>/////////////////////////////////////..................>>>>>//////////..............................................................
........................>>>>>//////////////////////////////////.....................>>>>>>/////.................................................................
..........................>>>>>//////////////////////////////.........................>>>>>//...................................................................
...........................>>>>>///////////////////////////.....................................................................................................
.............................>>>>>///////////////////////.......................................................................................................
..............................>>>>>///////////////////..........................................................................................................
................................>>>>>///////////////............................................................................................................
.................................>>>>>>///////////..............................................................................................................
...................................=>>>>///////.................................................................................................................
......................................>>>>///...................................................................................................................
........................................=>/.....................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
..............................................;/................................................................................................................
............................................;////...............................................................................................................
.........................................;;///////<.............................................................................................................
......................................;;////////////............................................................................................................
....................................;;///////////////<..........................................................................................................
.................................;/////////////////////<........................................................................................................
..............................;;;////////////////////////.......................................................................................................
............................;/////////////////////////////<.....................................................................................................
.........................;;/////////////////////////////////...............................;;/..................................................................
.......................;;/////////////////////////////////////...........................;;/////................................................................
....................;;/////////////////////////////////////////........................;//////////..............................................................
..................;;/////////////////////////////////////////////...................;;/////////////......................;......................................
................;;>///////////////////////////////////////////////<...............;;/////////////////.................;;///<....................................
................;>>>////////////////////////////////////////////////...........;;/////////////////////.............\;////////<..................................
................>>>>>>///////////////////////////////////////////////<.......;;;>>>/////////////////////.........;;;>//////////.................................
................>>>>>>>>//////////////////////////////////////////////.......>>>>>>>////////////////////.........>>>>>>////////.................................
..................>>>>>>>>//////////////////////////////////////////...........>>>>>>>////////////////.............>>>>>/////...................................
...................\>>>>>>>///////////////////////////////////////...............>>>>>>>////////////.................>>>>//.....................................
.....................>>>>>>>>///////////////////////////////////..................>>>>>>>/////////..............................................................
.......................>>>>>>>>///////////////////////////////......................>>>>>>>/////................................................................
.........................>>>>>>>/////////////////////////////.........................>>>>>>//..................................................................
..........................>>>>>>>>/////////////////////////.....................................................................................................
............................>>>>>>>>/////////////////////.......................................................................................................
..............................>>>>>>>>/////////////////.........................................................................................................
................................>>>>>>>//////////////...........................................................................................................
.................................>>>>>>>>//////////.............................................................................................................
....................................>>>>>>>//////...............................................................................................................
........................................>>>>///.................................................................................................................
...........................................>>/..................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.............................................;/.................................................................................................................
...........................................;;////...............................................................................................................
........................................;;////////<.............................................................................................................
......................................;/////////////............................................................................................................
....................................;/////////////////..........................................................................................................
.................................;;////////////////////<........................................................................................................
...............................;/////////////////////////.......................................................................................................
.............................;/////////////////////////////.....................................................................................................
..........................;;////////////////////////////////<..............................;;/..................................................................
........................;;////////////////////////////////////..........................;;//////................................................................
......................;/////////////////////////////////////////......................;;//////////..............................................................
...................;;////////////////////////////////////////////<..................;;;////////////<....................;;......................................
.................;;////////////////////////////////////////////////<..............;;/////////////////................;;;////....................................
................;;>>>////////////////////////////////////////////////...........;;/////////////////////............\;;///////<..................................
................;>>>>>>///////////////////////////////////////////////.......;;;;>>/////////////////////.........;;;>//////////.................................
...............;>>>>>>>>/////////////////////////////////////////////........;>>>>>>>///////////////////.........;>>>>>////////.................................
................>>>>>>>>>>/////////////////////////////////////////...........>>>>>>>>>///////////////.............>>>>>>////...................................
..................>>>>>>>>>>>////////////////////////////////////...............>>>>>>>>>///////////................\>>>>>/.....................................
....................>>>>>>>>>>//////////////////////////////////..................>>>>>>>>////////..............................................................
......................>>>>>>>>>>//////////////////////////////......................>>>>>>>>////................................................................
........................>>>>>>>>>>///////////////////////////.........................>>>>>>>//.................................................................
..........................>>>>>>>>>>///////////////////////.....................................................................................................
............................>>>>>>>>>>///////////////////.......................................................................................................
..............................>>>>>>>>>>////////////////........................................................................................................
................................>>>>>>>>>>////////////..........................................................................................................
..................................>>>>>>>>>>////////............................................................................................................
....................................=>>>>>>>>>/////.............................................................................................................
..........................................>>>>>//...............................................................................................................
.............................................../................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
............................................;;..................................................................................................................
..........................................;;////................................................................................................................
........................................;;////////..............................................................................................................
......................................;////////////<............................................................................................................
....................................;////////////////<..........................................................................................................
..................................;////////////////////<........................................................................................................
................................;////////////////////////<......................................................................................................
..............................;////////////////////////////.....................................................................................................
............................;////////////////////////////////.............................;;//..................................................................
..........................;////////////////////////////////////.........................;;//////................................................................
........................;///////////////////////////////////////<....................;;;//////////..............................................................
......................;///////////////////////////////////////////<................\;;//////////////....................;<......................................
....................;;//////////////////////////////////////////////<.............;;;/////////////////...............;;;///<....................................
..................;;>////////////////////////////////////////////////...........;;;/////////////////////...........;;;///////<..................................
................;;>>>>>//////////////////////////////////////////////.........;;;;>/////////////////////..........;;;//////////.................................
...............;;>>>>>>>>//////////////////////////////////////////.........\;;>>>>>>//////////////////..........;;>>>>////////.................................
..............;>>>>>>>>>>>>///////////////////////////////////////...........>>>>>>>>>>///////////////.............>>>>>>////...................................
................>>>>>>>>>>>>>////////////////////////////////////...............>>>>>>>>>>//////////.................>>>>>/.....................................
..................>>>>>>>>>>>>>>///////////////////////////////..................\>>>>>>>>>////////...................=.........................................
....................\>>>>>>>>>>>>>////////////////////////////......................>>>>>>>>>////...............................................................
.......................>>>>>>>>>>>>>/////////////////////////.........................>>>>>>>>>/................................................................
.........................>>>>>>>>>>>>>/////////////////////.....................................................................................................
...........................>>>>>>>>>>>>>//////////////////......................................................................................................
.............................>>>>>>>>>>>>>///////////////.......................................................................................................
...............................>>>>>>>>>>>>>>//////////.........................................................................................................
..................................>>>>>>>>>>>>>///////..........................................................................................................
....................................=>>>>>>>>>>>>////...........................................................................................................
............................................=>>>>>/.............................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
...........................................;/<..................................................................................................................
.........................................;;////<................................................................................................................
.......................................;;////////<..............................................................................................................
.....................................;;////////////<............................................................................................................
...................................;;;///////////////<..........................................................................................................
.................................;;////////////////////<........................................................................................................
................................;;///////////////////////<......................................................................................................
..............................;;///////////////////////////<....................................................................................................
............................;;///////////////////////////////<............................;;//..................................................................
..........................;;;//////////////////////////////////........................;;;//////................................................................
.........................;;//////////////////////////////////////....................;;;//////////..............................................................
.......................;;//////////////////////////////////////////<...............;;;;/////////////....................;/......................................
.....................;;//////////////////////////////////////////////............;;;;/////////////////...............;;;////....................................
...................;;;///////////////////////////////////////////////...........;;;;////////////////////...........;;;////////..................................
..................;;>>>>////////////////////////////////////////////..........;;;;;>////////////////////..........;;;//////////.................................
................;;>>>>>>>>////////////////////////////////////////...........;;;>>>>>>/////////////////..........;;>>>>///////..................................
..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>>>>>>>>>>/////////////.............>>>>>>>>///...................................
..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............>>>>>>>>>>>//////////................\>>>>>>/....................................
................\>>>>>>>>>>>>>>>>//////////////////////////////..................>>>>>>>>>>>///////....................=........................................
...................>>>>>>>>>>>>>>>>///////////////////////////.....................>>>>>>>>>>>>///..............................................................
.....................\>>>>>>>>>>>>>>>>///////////////////////.........................>>>>>>>>>>................................................................
........................>>>>>>>>>>>>>>>>////////////////////....................................................................................................
..........................>>>>>>>>>>>>>>>>/////////////////.....................................................................................................
.............................>>>>>>>>>>>>>>>>/////////////......................................................................................................
...............................>>>>>>>>>>>>>>>>/////////........................................................................................................
..................................>>>>>>>>>>>>>>>>/////.........................................................................................................
....................................=>>>>>>>>>>>>>>>//..........................................................................................................
.................................................>>>>...........................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
..........................................;//...................................................................................................................
........................................;;/////.................................................................................................................
......................................;;/////////...............................................................................................................
....................................;;;////////////.............................................................................................................
..................................;;;////////////////...........................................................................................................
................................;;;;///////////////////<........................................................................................................
..............................;;;;///////////////////////<......................................................................................................
.............................;;;;//////////////////////////<....................................................................................................
...........................;;;;///////////////////////////////...........................;;;//..................................................................
..........................;;;;//////////////////////////////////......................;;;;//////................................................................
........................;;;;//////////////////////////////////////..................;;;;;/////////..............................................................
......................;;;;;/////////////////////////////////////////...............;;;;/////////////<..................<;<......................................
.....................;;;;///////////////////////////////////////////.............;;;;;/////////////////..............;;;////....................................
...................;;;;;////////////////////////////////////////////............;;;;////////////////////...........;;;;///////..................................
..................;;;;;>///////////////////////////////////////////...........;;;;;>////////////////////..........;;;//////////.................................
................;;;;;>>>>>////////////////////////////////////////...........;;;;;>>>>/////////////////..........;;;>>>>//////..................................
...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>>>>>>>>>>>/////////////............>>>>>>>>///...................................
.............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>>>>>>>>>>>>>/////////................>>>>>>>/....................................
..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////..................>>>>>>>>>>>>>/////....................>........................................
.................>>>>>>>>>>>>>>>>>>>>/////////////////////////.....................>>>>>>>>>>>>>//..............................................................
....................>>>>>>>>>>>>>>>>>>>>/////////////////////.........................>>>>>>>>>>>...............................................................
.......................>>>>>>>>>>>>>>>>>>>//////////////////....................................................................................................
..........................>>>>>>>>>>>>>>>>>>>//////////////.....................................................................................................
............................>>>>>>>>>>>>>>>>>>>>///////////.....................................................................................................
...............................>>>>>>>>>>>>>>>>>>>////////......................................................................................................
..................................>>>>>>>>>>>>>>>>>>>////.......................................................................................................
.....................................>>>>>>>>>>>>>>>>>>/........................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.........................................;;/....................................................................................................................
.......................................;;/////<.................................................................................................................
.....................................;;;/////////...............................................................................................................
...................................;;;;////////////.............................................................................................................
.................................;;;;;///////////////...........................................................................................................
...............................;;;;;///////////////////<........................................................................................................
.............................;;;;;;//////////////////////<......................................................................................................
...........................;;;;;;;//////////////////////////....................................................................................................
..........................;;;;;;//////////////////////////////...........................;;//<..................................................................
.........................;;;;;;/////////////////////////////////......................;;;;//////................................................................
.......................;;;;;;;////////////////////////////////////<................;;;;;;/////////<.............................................................
......................;;;;;;;///////////////////////////////////////..............;;;;;//////////////..................;;.......................................
.....................;;;;;;////////////////////////////////////////..............;;;;;;////////////////.............;;;;////....................................
...................;;;;;;;////////////////////////////////////////..............;;;;;;//////////////////...........;;;;///////<.................................
..................;;;;;;;/////////////////////////////////////////............\;;;;;///////////////////...........;;;;/////////.................................
.................;;;;;;;>>>//////////////////////////////////////............;;;;;;>>>>///////////////...........;;;;>>>//////..................................
...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;>>>>>>>>>>////////////............\>>>>>>>>>//...................................
..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>>>>>>>>>>>>>>/////////...............>>>>>>>>....................................
.............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////.................>>>>>>>>>>>>>>>/////...................>........................................
...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////.....................>>>>>>>>>>>>>>>/.............................................................
..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////........................>>>>>>>>>>>/..............................................................
.....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////...................................................................................................
........................>>>>>>>>>>>>>>>>>>>>>>>>////////////....................................................................................................
............................>>>>>>>>>>>>>>>>>>>>>>>/////////....................................................................................................
...............................>>>>>>>>>>>>>>>>>>>>>>>/////.....................................................................................................
..................................>>>>>>>>>>>>>>>>>>>>>>//......................................................................................................
.....................................>>>>>>>>>>>>>>>>>>>>/......................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
........................................;;/<....................................................................................................................
......................................;;;/////..................................................................................................................
....................................;;;;////////................................................................................................................
..................................;;;;;////////////.............................................................................................................
................................;;;;;;///////////////...........................................................................................................
..............................;;;;;;;//////////////////.........................................................................................................
............................;;;;;;;;//////////////////////......................................................................................................
..........................;;;;;;;;//////////////////////////....................................................................................................
.........................;;;;;;;;/////////////////////////////<.........................;;;//...................................................................
........................;;;;;;;;////////////////////////////////<....................;;;;;//////................................................................
.......................;;;;;;;;////////////////////////////////////...............<;;;;;;/////////<.............................................................
.....................\;;;;;;;;/////////////////////////////////////...............;;;;;;/////////////..................;;<......................................
....................;;;;;;;;;/////////////////////////////////////..............\;;;;;;/////////////////............;;;;////....................................
...................;;;;;;;;;//////////////////////////////////////..............;;;;;;/////////////////............;;;;////////.................................
..................;;;;;;;;;//////////////////////////////////////.............\;;;;;;//////////////////...........;;;;/////////.................................
.................;;;;;;;;;;>/////////////////////////////////////............\;;;;;;;>>///////////////...........;;;;;>>>/////..................................
................;;;;;;;;>>>>>>>>////////////////////////////////............\;;;;>>>>>>>>>////////////...........;>>>>>>>>>//...................................
...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>>>>>>>>>>>>>>>////////...............>>>>>>>>/...................................
..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................>>>>>>>>>>>>>>>>>////...................=>.......................................
.............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////...................\>>>>>>>>>>>>>>>>.............................................................
................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////........................>>>>>>>>>=>...............................................................
....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////..................................................................................................
.......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////...................................................................................................
...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////...................................................................................................
..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///....................................................................................................
..................................>>>>>>>>>>>>>>>>>>>>>>>>>/....................................................................................................
......................................>>>>>=>=>>................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................................;;//.....................................................................................................................
.....................................;;;/////<..................................................................................................................
...................................;;;;/////////................................................................................................................
.................................;;;;;;///////////<.............................................................................................................
...............................;;;;;;;///////////////...........................................................................................................
.............................;;;;;;;;//////////////////.........................................................................................................
...........................;;;;;;;;;//////////////////////......................................................................................................
.........................;;;;;;;;;;/////////////////////////....................................................................................................
........................;;;;;;;;;;;///////////////////////////<.........................;;;//...................................................................
.......................;;;;;;;;;;;///////////////////////////////....................;;;;;//////................................................................
......................;;;;;;;;;;;/////////////////////////////////................;;;;;;;/////////<.............................................................
.....................;;;;;;;;;;;//////////////////////////////////...............;;;;;;;/////////////..................;;<......................................
....................;;;;;;;;;;;//////////////////////////////////...............;;;;;;;;///////////////.............;;;;////<...................................
...................;;;;;;;;;;;;//////////////////////////////////..............;;;;;;;;////////////////............;;;;////////.................................
..................;;;;;;;;;;;;///////////////////////////////////..............;;;;;;;/////////////////...........;;;;;////////.................................
.................;;;;;;;;;;;;///////////////////////////////////..............;;;;;;;;>>//////////////...........;;;;;>>>/////..................................
................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;;;;>>>>>>>>>///////////...........;>>>>>>>>>>//..................................
...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;>>>>>>>>>>>>>>>///////...............>>>>>>>>>...................................
..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\>>>>>>>>>>>>>>>>>>>///..................>=.......................................
.............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////...................>>>>>>>>>>>>>>>>>>............................................................
.............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////.......................>>>>>>>>>>=...............................................................
.................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////..................................................................................................
......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////..................................................................................................
..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////..................................................................................................
..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//..................................................................................................
..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>...................................................................................................
......................................>>>==.....................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.......................................;;/<.....................................................................................................................
....................................<;;;/////...................................................................................................................
..................................;;;;;////////<................................................................................................................
................................;;;;;;;///////////..............................................................................................................
..............................;;;;;;;;//////////////<...........................................................................................................
............................;;;;;;;;;;/////////////////.........................................................................................................
..........................;;;;;;;;;;;////////////////////<......................................................................................................
........................;;;;;;;;;;;;////////////////////////....................................................................................................
.......................;;;;;;;;;;;;;///////////////////////////.........................;;///...................................................................
......................;;;;;;;;;;;;;//////////////////////////////....................;;;;;//////................................................................
.....................;;;;;;;;;;;;;;//////////////////////////////.................;;;;;;;//////////.............................................................
....................;;;;;;;;;;;;;;///////////////////////////////...............\;;;;;;;;////////////<.................;;.......................................
...................\;;;;;;;;;;;;;///////////////////////////////................;;;;;;;;///////////////............<;;;;////<...................................
...................;;;;;;;;;;;;;;///////////////////////////////...............;;;;;;;;;///////////////...........\;;;;////////.................................
..................;;;;;;;;;;;;;;////////////////////////////////..............\;;;;;;;;///////////////............;;;;;////////.................................
.................;;;;;;;;;;;;;;;////////////////////////////////..............;;;;;;;;;>//////////////...........\;;;;;>>>////..................................
................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;;;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/..................................
................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;;>>>>>>>>>>>>>>>>/////..............\>>>>>>>>/...................................
...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>>>>>>>>>>>>>>>>>>>>>//..................\=.......................................
..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////.................\>>>>>>>>>>>>>>>>>>/...........................................................
.............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////.......................>>>>>>>>>>................................................................
...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////.................................................................................................
...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////.................................................................................................
........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................................................................................................
.............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/.................................................................................................
..................................>>>>>>>>>>>>>>>>>>>>==........................................................................................................
.......................................>==......................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
......................................;;//......................................................................................................................
....................................;;;;////....................................................................................................................
..................................;;;;;////////.................................................................................................................
...............................<;;;;;;;///////////..............................................................................................................
.............................;;;;;;;;;//////////////............................................................................................................
...........................;;;;;;;;;;;/////////////////.........................................................................................................
.........................;;;;;;;;;;;;;///////////////////<......................................................................................................
.......................;;;;;;;;;;;;;;///////////////////////....................................................................................................
.....................\;;;;;;;;;;;;;;;//////////////////////////........................<;;//<...................................................................
.....................;;;;;;;;;;;;;;;;///////////////////////////....................<;;;;;//////................................................................
....................;;;;;;;;;;;;;;;;////////////////////////////..................;;;;;;;;/////////.............................................................
....................;;;;;;;;;;;;;;;;////////////////////////////................;;;;;;;;;/////////////.................;/.......................................
...................;;;;;;;;;;;;;;;;/////////////////////////////...............;;;;;;;;;;/////////////.............<;;;;////<...................................
..................;;;;;;;;;;;;;;;;;/////////////////////////////...............;;;;;;;;;//////////////............\;;;;;//////..................................
..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\;;;;;;;;;//////////////............;;;;;///////..................................
.................;;;;;;;;;;;;;;;;;//////////////////////////////..............;;;;;;;;;;>/////////////............;;;;;>>>////..................................
.................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;;;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/..................................
................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;;;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=..................................
...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>>>>>>>>>>>>>>>>>>>>>>>/..................>.......................................
...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////.................>>>>>>>>>>>>>>>>>>>/...........................................................
..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////......................>>>>>>>>>>................................................................
..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................................................................................................
.................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................................................................................................
......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................................................................................................
............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..................................................................................................
..................................>>>>>>>>>>>>>>>>>>............................................................................................................
.......................................>=.......................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.....................................<;;/<......................................................................................................................
...................................;;;;;///<....................................................................................................................
.................................;;;;;;///////<.................................................................................................................
...............................;;;;;;;;//////////<..............................................................................................................
............................<;;;;;;;;;;/////////////............................................................................................................
..........................<;;;;;;;;;;;;///////////////<.........................................................................................................
........................;;;;;;;;;;;;;;;//////////////////<......................................................................................................
......................;;;;;;;;;;;;;;;;//////////////////////....................................................................................................
....................;;;;;;;;;;;;;;;;;;////////////////////////.........................;;;//....................................................................
....................;;;;;;;;;;;;;;;;;;/////////////////////////.....................;;;;;;//////................................................................
...................;;;;;;;;;;;;;;;;;;;/////////////////////////..................<;;;;;;;;////////<.............................................................
...................;;;;;;;;;;;;;;;;;;;/////////////////////////................;;;;;;;;;;;////////////.................;/.......................................
..................\;;;;;;;;;;;;;;;;;;//////////////////////////................;;;;;;;;;;/////////////.............<;;;;////<...................................
..................;;;;;;;;;;;;;;;;;;;//////////////////////////................;;;;;;;;;;/////////////............;;;;;;//////..................................
..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;;;;;;;;;;/////////////............;;;;;;//////..................................
.................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;;;;;;;;;;>////////////............;;;;;;>>////..................................
.................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;;;;;;;;;;>>>>/>////////............;;;>>>>>>>>>..................................
................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;;;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=...................................
................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;;>>>>>>>>>>>>>>>>>>>>>>..................=.......................................
...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................>>>>>>>>>>>>>>>>>>>>>...........................................................
...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////....................\>>>>>>>>=.................................................................
..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////...............................................................................................
..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/...............................................................................................
....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...............................................................................................
..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>......................................................................................................
.................................>>>>>>>>>>>>>>>>...............................................................................................................
........................................=.......................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
.....................................;;//.......................................................................................................................
...................................;;;;////<....................................................................................................................
................................<;;;;;;///////..................................................................................................................
..............................<;;;;;;;;/////////<...............................................................................................................
............................;;;;;;;;;;;////////////<............................................................................................................
..........................;;;;;;;;;;;;;///////////////<.........................................................................................................
.......................<;;;;;;;;;;;;;;;//////////////////.......................................................................................................
.....................;;;;;;;;;;;;;;;;;;/////////////////////....................................................................................................
...................;;;;;;;;;;;;;;;;;;;;//////////////////////..........................;;;//....................................................................
...................;;;;;;;;;;;;;;;;;;;;///////////////////////......................;;;;;;//////................................................................
..................\;;;;;;;;;;;;;;;;;;;;///////////////////////...................;;;;;;;;;/////////.............................................................
..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................;;;;;;;;;;;///////////..................;/.......................................
..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................;;;;;;;;;;;////////////.............<;;;;////<...................................
..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\;;;;;;;;;;;////////////............;;;;;;//////..................................
.................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;;;;;;;;;;;;////////////............;;;;;;//////..................................
.................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;;;;;;;;;;;>///////////............;;;;;;>>>///..................................
.................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;;;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>..................................
................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;;;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=...................................
................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;;;;>>>>>>>>>>>>>>>>>>>>..................=.......................................
................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\>>>>>>>>>>>>>>>>>>>>............................................................
...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////....................>>>>>>>>>=.................................................................
...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///..............................................................................................
...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..............................................................................................
................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=..................................................................................................
........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.........................................................................................................
.................................\>>>>>>>>>>>>>=................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................