MagicaVoxel models->CA->VoxCast

Loading models from MagicaVoxel and feeding them to the Cellular Automata.

Exporting this one to GIF is particularly fun: MagicaVoxel models->CA->VoxCast (variation)
I recommend "Draw different frames", 6 seconds, 30 fps. And a lot of patience.

Log in to post a comment.

// Forked from "CellularAutomata>VoxelCaster#2" by llemarie
// https://turtletoy.net/turtle/cea047339a

// LL 2021

// 3D Cellular Automata
// Rules: https://softologyblog.wordpress.com/2019/12/28/3d-cellular-automata-3/

// Forked from "Cellular Automata > Voxel Caster" by llemarie
// https://turtletoy.net/turtle/3b6550c0d8

// "Ruud" rule from https://twitter.com/ruuddotorg/status/1405975813703409664

// Declare your own custom rule here in the format: survive/birth/states/neighborhood
const custom_rule = "/1-8/2/M";

const grid_size = 130; // min=1 max=150 step=1
const iterations = 0; // min=0 max=100 step=1
const camera_fov = 3; /// min=0.5 max=5 step=0.05
const camera_distance = 2; // min=0.5 max=10 step=0.1
const camera_rotation = 0.125; // min=0 max=1 step=0.01
const camera_height = 0.3; // min=0 max=3 step=0.01
const rule = 4; // min=0 max=4 step=1 (Custom,Lionel 1,Hollow,Clouds 1,Ruud)
const start_cells = 4; // min=0 max=4 step=1 (Full cube, Half cube,Single cell,MagicaVoxel teapot,MagicaVoxel monument)
const random_threshold = 0.5; // min=0 max=0.99 step=0.01
const add_hatching = 1; // min=0 max=1 step=1 (No, Yes)
const draw_cube_edges = 0; // min=0 max=1 step=1 (No, Yes)
const cut_out = 0; // min=0 max=1 step=0.05

// Lower is more precise but slower - Great quality but very slow: 0.1 - Fast preview: 1.0 - Good compromise: 0.3
const resolution = 0.5; /// min=0.2 max=2 step=0.1

var rule_str_list = [ custom_rule, "/1-2,6-10/5/M", "/1-3/2/M", "13-26/13-14,17-19/2/M", "/1-8/2/M" ];
var rule_str = rule_str_list[rule];

const turtle = new Turtle();
const text = new Text();

var grid_current = [];
var grid_previous = [];
var survive_list = [];
var birth_list = [];
var max_state = 1;
var neighborhood_mode = "M";

var iterations_t = iterations;

var voxelRayCaster;

const grid_cache = [];
var need_cache = false;

function walk(i, t) {
    if (i==0) {
        if (t < 1) need_cache = true;
        
        // Animate GIF by rotating camero
        const camera_rotation_t = camera_rotation + t;
        //const const camera_rotation_t = camera_rotation;

        const radius = grid_size * camera_distance;
        const xx = radius * Math.cos(camera_rotation_t * Math.PI * 2);
        const yy = radius * camera_height;
        const zz = radius * -Math.sin(camera_rotation_t * Math.PI * 2);
        const ro = [xx+.5, yy+.5, zz+.5]; 
        const ta = [.5, -10+.5, .5];
        voxelRayCaster = new VoxelRayCaster(ro, ta, 0, camera_fov);

        // Animate GIF by stepping through iterations
        const tt = Math.cos(t * Math.PI * 2) * 0.5 + 0.5;
        iterations_t = Math.floor(iterations * tt);

        reset_random();
        parseRule();
        initGrid();
        applyCutOut();
    }

    const tiles = 5;
    const x = i % tiles, y = (i/tiles)|0;
    
    const lt = [x*200/tiles-100, y*200/tiles-100];           // Left top of tile
    const rb = [(x+1)*200/tiles-100, (y+1)*200/tiles-100];   // Right bottom of tile
    
    // Draw tile
    // turtle.jump(lt[0], lt[1]); turtle.goto(rb[0], lt[1]); turtle.goto(rb[0], rb[1]); turtle.goto(lt[0], rb[1]); turtle.goto(lt[0], lt[1]);
    
    const faces = voxelRayCaster.collectFaces(map, lt, rb, 8 * grid_size, resolution);
    const polys = new Polygons();
    
    // Create a polygon for this tile to clip all faces
    const viewPort = polys.create();    
    viewPort.addPoints(lt, [lt[0], rb[1]], rb, [rb[0], lt[1]]);
    
    faces.forEach(face => {
        const p = polys.create();
        p.addPoints(...face.points);

        if (draw_cube_edges) {
            p.addOutline();
        } else {
            face.edges.forEach((e, i) => e && p.addSegments(p.cp[i], p.cp[(i+1)%4]));
        }
        
        if (add_hatching && Math.abs(face.normal[2]) > .5) {
            p.addHatching(-Math.PI/3, .5);
        }
        
        p.boolean(viewPort, false);
        
        polys.draw(turtle, p);
    });

    return i < tiles*tiles - 1;
}

function initGrid() {
    grid_previous = Array.from({length: grid_size*grid_size*grid_size});

    if (grid_cache.length > (iterations_t|0)) {
        grid_current = [...grid_cache[iterations_t|0]];
        return;
    } else if (grid_cache.length > 0) {
        grid_current = [...grid_cache[grid_cache.length-1]];
    } else {
        grid_current = Array.from({length: grid_size*grid_size*grid_size}, (v, i) => 0);

        if (start_cells == 0) { 
            for (var z=0; z<grid_size; z++) {
                for (var y=0; y<grid_size; y++) {
                    for (var x=0; x<grid_size; x++) {
                        grid_current[index(x,y,z)] = random() > random_threshold ? 1 : 0;
                    }
                }
            }
        } else if (start_cells == 1) { 
            for (var z=0; z<grid_size; z++) {
                for (var y=0; y<grid_size; y++) {
                    for (var x=0; x<grid_size; x++) {
                        if ((Math.abs(x - grid_size / 2) < grid_size / 4) && (Math.abs(y - grid_size / 2) < grid_size / 4) && (Math.abs(z - grid_size / 2) < grid_size / 4)) {
                            grid_current[index(x,y,z)] = random() > random_threshold ? 1 : 0;
                        }
                    }
                }
            }
        } else if (start_cells == 2) { 
            const center = Math.round(grid_size / 2);
            grid_current[index(center,center,center)] = 1;
        } else if (start_cells == 3) {
            loadModel(model_teapot);
        } else if (start_cells == 4) {
            loadModel(model_monument);
        }
        
        if (need_cache) grid_cache.push([...grid_current]);
    }
    
    for (var i=Math.max(0, grid_cache.length-1); i<iterations_t; i++) {
        var grid_tmp = grid_current;
        grid_current = grid_previous;
        grid_previous = grid_tmp;
        evolveGrid();
        if (need_cache) grid_cache.push([...grid_current]);
    }
}

function applyCutOut() {
    if (cut_out > 0) {
        for (var z=0; z<grid_size; z++) {
            for (var y=0; y<grid_size; y++) {
                for (var x=0; x<grid_size; x++) {
                    if ((grid_size-1-x) < grid_size*cut_out && (grid_size-1-y) < grid_size*cut_out && z < grid_size*cut_out) {
                        grid_current[index(x,y,z)] = 0;
                    }
                }
            }
        }
    }
}

function loadModel(model_vox) {
    const x_size = model_vox.size[0], y_size = model_vox.size[1], z_size = model_vox.size[2];
    var count_index = -1, count_target = 0, count = 0, current = 1;
    for (var z=0; z<z_size; z++) {
        for (var y=0; y<y_size; y++) {
            for (var x=0; x<x_size; x++) {
                while (count >= count_target) {
                    count_index++; 
                    if (count_index >= model_vox.voxels.length) {
                        x = x_size; y = y_size; z = z_size;
                        break;
                    }
                    count = 0;
                    count_target = model_vox.voxels[count_index];
                    current = 1 - current;
                }
                count++;
                const xx = x - Math.floor(x_size / 2) + Math.floor(grid_size / 2);
                const yy = y - Math.floor(y_size / 2) + Math.floor(grid_size / 2);
                const zz = z - Math.floor(z_size / 2) + Math.floor(grid_size / 2);
                if (xx > 0 && yy > 0 && zz > 0 && xx < grid_size && yy < grid_size && zz < grid_size) {
                    grid_current[index(yy,zz,xx)] = current;
                }
            }
        }
    }
}

function parseRule() {
    survive_list = [];
    birth_list = [];
    max_state = 1;
    neighborhood_mode = "M";

    const phases = rule_str.split("/");
    if (phases.length != 4) return;

    survive_list = getList(phases[0]);
    birth_list = getList(phases[1]);
    max_state = parseInt(phases[2]) - 1;
    neighborhood_mode = phases[3];

    turtle.jump(-90,93);
    text.print(turtle, `Rule: ${rule_str} - Iterations: ${iterations_t} - Cut out: ${cut_out}`, .1);
    
    //console.log(`Rule: Survive: ${survive_list} - Birth: ${birth_list} - Max state: ${max_state} - Neighborhood: ${neighborhood_mode}`)
}

function getList(str) {
    const list = [];
    const ranges = str.split(",");
    ranges.forEach(r => getRange(r).forEach(n => list.push(n)));
    return list;
}

function getRange(str) {
    if (str.length < 1) return [];
    const sides = str.split("-");
    if (sides.length == 2) {
        const list = [];
        const min = parseInt(sides[0]);
        const max = parseInt(sides[1]);
        for (var i=min; i<=max; i++) list.push(i);
        return list;
    }
    return [ parseInt(sides[0]) ];
}

function evolveGrid() {
    for (var z=0; z<grid_size; z++) {
        for (var y=0; y<grid_size; y++) {
            for (var x=0; x<grid_size; x++) {
                const count = countNeighbors(x, y, z);
                grid_current[index(x, y, z)] = applyRule(grid_previous[index(x, y, z)], count);
            }
        }
    }
}

function countNeighbors(x, y, z) {
    var count = 0;

    if (neighborhood_mode == "M") { // Moore neighborhood
        for (var dz=-1; dz<=1; dz++) {
            for (var dy=-1; dy<=1; dy++) {
                for (var dx=-1; dx<=1; dx++) {
                    if (dx==0 && dy==0 && dz==0) continue;
                    const xx = (x+dx+grid_size)%grid_size;
                    const yy = (y+dy+grid_size)%grid_size;
                    const zz = (z+dz+grid_size)%grid_size;
                    if (grid_previous[index(xx, yy, zz)] > 0) count++;
                }
            }
        }
    } else if (neighborhood_mode == "N") { // von Neumann neighborhood
        if (grid_previous[index((x-1+grid_size)%grid_size, y, z)] > 0) count++;
        if (grid_previous[index((x+1+grid_size)%grid_size, y, z)] > 0) count++;
        if (grid_previous[index(x, (y-1+grid_size)%grid_size, z)] > 0) count++;
        if (grid_previous[index(x, (y+1+grid_size)%grid_size, z)] > 0) count++;
        if (grid_previous[index(x, y, (z-1+grid_size)%grid_size)] > 0) count++;
        if (grid_previous[index(x, y, (z+1+grid_size)%grid_size)] > 0) count++;
    }

    return count;
}

function applyRule(state, count) {
    if (state == 1) {
        for (var i=0; i<survive_list.length; i++) {
            if (count == survive_list[i]) return 1;
        }
    } else if (state == 0) {
        for (var i=0; i<birth_list.length; i++) {
            if (count == birth_list[i]) return 1;
        }
    }

    if (state > 0 && state + 1 <= max_state) return state + 1;
    
    return 0;
}

function index(x, y, z) {
    return x + y * grid_size + z * grid_size * grid_size;
}

// The voxel caster will cast rays into a scene that is defined by a function that 
// returns true for all solid cells ([x,y,z]):
function map(p) {
    const x = Math.floor(p[0] + grid_size / 2);
    const y = Math.floor(p[1] + grid_size / 2);
    const z = Math.floor(p[2] + grid_size / 2);
    
    if (x < 0 || x >= grid_size || y < 0 || y >= grid_size || z < 0 || z >= grid_size) {
        return false;
    }
    
    return grid_current[index(x, y, z)] > 0;
}

////////////////////////////////////////////////////////////////
// Voxel Ray Caster utility code. Created by Reinder Nijhoff 2020
// https://turtletoy.net/turtle/d9ae1fb0bd
////////////////////////////////////////////////////////////////
function VoxelRayCaster(t,s,i=0,e=1.5){const o=(t,s)=>t[0].toFixed(0)+"_"+t[1].toFixed(0)+"_"+t[2].toFixed(0)+s[0].toFixed(0)+"_"+s[1].toFixed(0)+"_"+s[2].toFixed(0),a=t=>[-t[0],-t[1],-t[2]],r=(t,s)=>[t[0]*s,t[1]*s,t[2]*s],c=t=>Math.sqrt(t[0]**2+t[1]**2+t[2]**2),h=t=>r(t,1/c(t)),n=(t,s)=>[t[0]+s[0],t[1]+s[1],t[2]+s[2]],p=(t,s)=>[t[0]-s[0],t[1]-s[1],t[2]-s[2]],l=(t,s)=>[t[1]*s[2]-t[2]*s[1],t[2]*s[0]-t[0]*s[2],t[0]*s[1]-t[1]*s[0]],d=(t,s)=>t.map((i,e)=>s[e]*t[0]+s[e+3]*t[1]+s[e+6]*t[2]),m=(t,s)=>t.map((i,e)=>s[3*e+0]*t[0]+s[3*e+1]*t[1]+s[3*e+2]*t[2]);class u{constructor(t,s,i,e){this.id=o(t,s),this.pos=t,this.normal=s,this.b=[s[1],s[2],s[0]],this.t=l(this.normal,this.b),this.dist=i,this.center=n(this.pos,[.5,.5,.5])}projectVertex(t,s){const i=m(t,s),o=100*e/i[2];return[i[0]*o,i[1]*-o]}projectVertices(t,s){const i=r(this.normal,.5),e=r(this.t,.5),o=r(this.b,.5);this.points=[n(a(e),a(o)),n(e,a(o)),n(e,o),n(a(e),o)].map(e=>this.projectVertex(p(n(n(e,i),this.center),t),s))}calculateEdges(t){const s=this.t,i=this.b,e=this.pos,o=this.normal;this.edges=[a(i),s,i,a(s)].map(s=>!t(n(e,s))||t(n(n(e,s),o)))}}return new class{constructor(t,s,i=0,e=1.5){this.ro=t,this.ta=s,this.w=e,this.ca=this.setupCamera(t,s,i)}setupCamera(t,s,i){const e=h(p(s,t)),o=[Math.sin(i),Math.cos(i),0],a=h(l(e,o)),r=l(a,e);return[...a,...r,...e]}castRay(t,s,i,e){const o=t.map(t=>Math.floor(t)),a=s.map(t=>Math.abs(t)>1e-16?1/t:1e32),r=a.map(t=>Math.sign(t)),c=a.map(t=>Math.abs(t)),h=o.map((s,i)=>(s-t[i]+.5+.5*r[i])*a[i]);for(let t=0;t<e;t++){const t=h[0]<=h[1]&&h[0]<=h[2]?0:h[1]<=h[0]&&h[1]<=h[2]?1:2;if(h[t]+=c[t],o[t]+=r[t],i(o)){const s=[0,0,0];return s[t]=-r[t],[o,s]}}return!1}collectFaces(s,i=[-100,-100],e=[100,100],a=200,r=.25){const n=[];for(let l=i[0];l<=e[0];l+=r)for(let m=i[1];m<=e[1];m+=r){const i=d(h([l/100,-m/100,this.w]),this.ca),e=this.castRay(t,i,s,a);if(e){const t=o(e[0],e[1]);if(!n.find(s=>s.id===t)){const t=new u(e[0],e[1],c(p(e[0],this.ro)));t.projectVertices(this.ro,this.ca),t.calculateEdges(s),n.push(t)}}}return n.sort((t,s)=>t.dist-s.dist)}}(t,s,i,e)}

////////////////////////////////////////////////////////////////
// Polygon Clipping utility code - Created by Reinder Nijhoff 2019
// https://turtletoy.net/turtle/a5befa1f8d
////////////////////////////////////////////////////////////////
function Polygons(){let t=[];const s=class{constructor(){this.cp=[],this.dp=[],this.aabb=[]}addPoints(...t){let s=1e5,e=-1e5,h=1e5,i=-1e5;(this.cp=[...this.cp,...t]).forEach(t=>{s=Math.min(s,t[0]),e=Math.max(e,t[0]),h=Math.min(h,t[1]),i=Math.max(i,t[1])}),this.aabb=[(s+e)/2,(h+i)/2,(e-s)/2,(i-h)/2]}addSegments(...t){t.forEach(t=>this.dp.push(t))}addOutline(){for(let t=0,s=this.cp.length;t<s;t++)this.dp.push(this.cp[t],this.cp[(t+1)%s])}draw(t){for(let s=0,e=this.dp.length;s<e;s+=2)t.jump(this.dp[s]),t.goto(this.dp[s+1])}addHatching(t,e){const h=new s;h.cp.push([-1e5,-1e5],[1e5,-1e5],[1e5,1e5],[-1e5,1e5]);const i=Math.sin(t)*e,n=Math.cos(t)*e,a=200*Math.sin(t),p=200*Math.cos(t);for(let t=.5;t<150/e;t++)h.dp.push([i*t+p,n*t-a],[i*t-p,n*t+a]),h.dp.push([-i*t+p,-n*t-a],[-i*t-p,-n*t+a]);h.boolean(this,!1),this.dp=[...this.dp,...h.dp]}inside(t){let s=0;for(let e=0,h=this.cp.length;e<h;e++)this.segment_intersect(t,[.13,-1e3],this.cp[e],this.cp[(e+1)%h])&&s++;return 1&s}boolean(t,s=!0){if(s&&Math.abs(this.aabb[0]-t.aabb[0])-(t.aabb[2]+this.aabb[2])>=0&&Math.abs(this.aabb[1]-t.aabb[1])-(t.aabb[3]+this.aabb[3])>=0)return this.dp.length>0;const e=[];for(let h=0,i=this.dp.length;h<i;h+=2){const i=this.dp[h],n=this.dp[h+1],a=[];for(let s=0,e=t.cp.length;s<e;s++){const h=this.segment_intersect(i,n,t.cp[s],t.cp[(s+1)%e]);!1!==h&&a.push(h)}if(0===a.length)s===!t.inside(i)&&e.push(i,n);else{a.push(i,n);const h=n[0]-i[0],p=n[1]-i[1];a.sort((t,s)=>(t[0]-i[0])*h+(t[1]-i[1])*p-(s[0]-i[0])*h-(s[1]-i[1])*p);for(let h=0;h<a.length-1;h++)(a[h][0]-a[h+1][0])**2+(a[h][1]-a[h+1][1])**2>=.001&&s===!t.inside([(a[h][0]+a[h+1][0])/2,(a[h][1]+a[h+1][1])/2])&&e.push(a[h],a[h+1])}}return(this.dp=e).length>0}segment_intersect(t,s,e,h){const i=(h[1]-e[1])*(s[0]-t[0])-(h[0]-e[0])*(s[1]-t[1]);if(0===i)return!1;const n=((h[0]-e[0])*(t[1]-e[1])-(h[1]-e[1])*(t[0]-e[0]))/i,a=((s[0]-t[0])*(t[1]-e[1])-(s[1]-t[1])*(t[0]-e[0]))/i;return n>=0&&n<=1&&a>=0&&a<=1&&[t[0]+n*(s[0]-t[0]),t[1]+n*(s[1]-t[1])]}};return{list:()=>t,create:()=>new s,draw:(s,e,h=!0)=>{for(let s=0;s<t.length&&e.boolean(t[s]);s++);e.draw(s),h&&t.push(e)}}}

////////////////////////////////////////////////////////////////
// Text utility code. Created by Reinder Nijhoff 2019
// https://turtletoy.net/turtle/1713ddbe99
////////////////////////////////////////////////////////////////
function Text(){const s="br>eoj^jl<jqirjskrjq>brf^fe<n^ne>`ukZdz<qZjz<dgrg<cmqm>`thZhw<lZlw<qao_l^h^e_caccdeefggmiojpkqmqporlshsercp>^vs^as<f^h`hbgdeeceacaab_d^f^h_k`n`q_s^<olmmlolqnspsrrspsnqlol>]wtgtfsereqfphnmlpjrhsdsbraq`o`makbjifjekckaj_h^f_eaecffhimporqssstrtq>eoj`i_j^k_kajcid>cqnZl\\j_hcghglhqjulxnz>cqfZh\\j_lcmhmllqjuhxfz>brjdjp<egom<ogem>]wjajs<ajsj>fnkojpiojnkokqis>]wajsj>fnjniojpkojn>_usZaz>`ti^f_dbcgcjdofrisksnrpoqjqgpbn_k^i^>`tfbhak^ks>`tdcdbe`f_h^l^n_o`pbpdofmicsqs>`te^p^jfmfogphqkqmppnrkshserdqco>`tm^clrl<m^ms>`to^e^dgefhekenfphqkqmppnrkshserdqco>`tpao_l^j^g_ebdgdlepgrjsksnrppqmqlpingkfjfggeidl>`tq^gs<c^q^>`th^e_dadceegfkgnhpjqlqopqorlshserdqcocldjfhigmfoepcpao_l^h^>`tpeohmjjkikfjdhcecddaf_i^j^m_oapepjoomrjshserdp>fnjgihjikhjg<jniojpkojn>fnjgihjikhjg<kojpiojnkokqis>^vrabjrs>]wagsg<amsm>^vbarjbs>asdcdbe`f_h^l^n_o`pbpdofngjijl<jqirjskrjq>]xofndlcicgdfeehekfmhnknmmnk<icgefhfkgmhn<ocnknmpnrntluiugtdsbq`o_l^i^f_d`bbad`g`jambodqfrislsorqqrp<pcokompn>asj^bs<j^rs<elol>_tc^cs<c^l^o_p`qbqdpfoglh<chlhoipjqlqopqorlscs>`urcqao_m^i^g_eadccfckdnepgrismsorqprn>_tc^cs<c^j^m_oapcqfqkpnopmrjscs>`sd^ds<d^q^<dhlh<dsqs>`rd^ds<d^q^<dhlh>`urcqao_m^i^g_eadccfckdnepgrismsorqprnrk<mkrk>_uc^cs<q^qs<chqh>fnj^js>brn^nnmqlrjshsfreqdndl>_tc^cs<q^cl<hgqs>`qd^ds<dsps>^vb^bs<b^js<r^js<r^rs>_uc^cs<c^qs<q^qs>_uh^f_daccbfbkcndpfrhslsnrppqnrkrfqcpan_l^h^>_tc^cs<c^l^o_p`qbqepgohlici>_uh^f_daccbfbkcndpfrhslsnrppqnrkrfqcpan_l^h^<koqu>_tc^cs<c^l^o_p`qbqdpfoglhch<jhqs>`tqao_l^h^e_caccdeefggmiojpkqmqporlshsercp>brj^js<c^q^>_uc^cmdpfrisksnrppqmq^>asb^js<r^js>^v`^es<j^es<j^os<t^os>`tc^qs<q^cs>asb^jhjs<r^jh>`tq^cs<c^q^<csqs>cqgZgz<hZhz<gZnZ<gznz>cqc^qv>cqlZlz<mZmz<fZmZ<fzmz>brj\\bj<j\\rj>asazsz>fnkcieigjhkgjfig>atpeps<phnfleiegfehdkdmepgrislsnrpp>`sd^ds<dhffhekemfohpkpmopmrkshsfrdp>asphnfleiegfehdkdmepgrislsnrpp>atp^ps<phnfleiegfehdkdmepgrislsnrpp>asdkpkpiognfleiegfehdkdmepgrislsnrpp>eqo^m^k_jbjs<gene>atpepuoxnylzizgy<phnfleiegfehdkdmepgrislsnrpp>ate^es<eihfjemeofpips>fni^j_k^j]i^<jejs>eoj^k_l^k]j^<kekvjyhzfz>are^es<oeeo<ikps>fnj^js>[y_e_s<_ibfdegeifjijs<jimfoeretfuius>ateees<eihfjemeofpips>atiegfehdkdmepgrislsnrppqmqkphnfleie>`sdedz<dhffhekemfohpkpmopmrkshsfrdp>atpepz<phnfleiegfehdkdmepgrislsnrpp>cpgegs<gkhhjfleoe>bsphofleieffehfjhkmlompopporlsisfrep>eqj^jokrmsos<gene>ateeeofrhsksmrpo<peps>brdejs<pejs>_ubefs<jefs<jens<rens>bseeps<pees>brdejs<pejshwfydzcz>bspees<eepe<esps>cqlZj[i\\h^h`ibjckekgii<j[i]i_jakbldlfkhgjkllnlpkrjsiuiwjy<ikkmkojqirhthvixjylz>fnjZjz>cqhZj[k\\l^l`kbjcieigki<j[k]k_jaibhdhfihmjilhnhpirjskukwjy<kkimiojqkrltlvkxjyhz>^vamakbhdgfghhlknlplrksi<akbidhfhhillnmpmrlsisg>brb^bscsc^d^dsese^f^fsgsg^h^hsisi^j^jsksk^l^lsmsm^n^nsoso^p^psqsq^r^rs".split(">").map(s=>[s.charCodeAt(0)-106,s.charCodeAt(1)-106,s.substr(2).split("<").map(s=>{const e=[];for(let p=0;p<s.length;p+=2)e.push(s.substr(p,2).split("").map(s=>s.charCodeAt(0)-106));return e})]);return new class{print(e,p,j=1,h=0,r=1){e.radians();let f=[e.x(),e.y()],o=e.h(),i=f;p.split("").map(p=>{const c=p.charCodeAt(0)-32;if(c<0)f=i=this.rotAdd([0,48*j],i,o);else if(c>96)f=this.rotAdd([16*j,0],i,o);else{const p=s[c],i=p[0]*j,d=p[1]*j;p[2].map(s=>{e.up(),s.map(s=>{e.goto(this.rotAdd([(s[0]-s[1]*h)*j-i,s[1]*j],f,o)),e.down()})}),f=this.rotAdd([(d-i)*r,0],f,o)}})}rotAdd(s,e,p){return[Math.cos(p)*s[0]-Math.sin(p)*s[1]+e[0],Math.cos(p)*s[1]+Math.sin(p)*s[0]+e[1]]}}}

// Cached random for animations
function random() { while (rand_index >= rand_cache.length) rand_cache.push(Math.random()); return rand_cache[rand_index++]; }
function reset_random() { rand_index = 0; }
const rand_cache = [];
var rand_index = 0;

// Format of voxels: counts of consecutive cell states, starting with off state
const model_teapot={size:[126,80,61],voxels:[1700,11,111,18,106,23,101,27,97,30,95,33,92,35,90,37,88,39,86,41,84,43,82,44,82,45,80,46,80,47,78,48,78,49,76,50,76,50,76,51,75,51,74,52,74,52,74,52,74,52,74,52,74,52,74,52,74,52,74,52,74,52,75,51,75,51,75,50,76,50,77,49,77,48,78,48,79,47,79,46,81,44,83,43,83,42,85,40,87,38,89,36,91,34,94,31,96,28,100,25,103,20,109,14,3262,14,109,21,102,26,98,30,95,12,9,12,91,10,16,10,89,9,21,8,87,8,25,8,84,7,28,8,82,7,31,6,81,7,33,6,79,7,35,6,78,6,37,6,76,6,39,5,75,6,41,5,74,5,42,6,72,6,43,5,72,5,44,5,72,5,45,5,70,5,46,5,70,5,47,4,70,4,48,5,68,5,48,5,68,5,49,4,68,5,49,4,68,4,50,4,68,4,50,5,67,4,50,5,67,4,50,5,67,4,50,5,67,4,50,5,67,4,50,5,67,4,50,5,67,5,49,4,68,5,49,4,68,5,48,5,69,4,48,5,69,5,47,5,69,5,46,5,71,4,46,5,71,5,45,5,71,5,44,5,73,5,42,6,73,6,41,5,75,5,40,6,75,6,38,6,77,6,36,6,79,6,34,7,80,6,32,7,82,7,29,7,84,7,26,8,86,8,23,8,88,9,18,10,90,11,12,11,94,31,97,27,101,23,106,17,115,4,2640,8,113,18,105,6,12,6,100,5,19,4,96,4,24,4,93,3,28,4,90,3,31,3,87,3,34,3,85,3,36,3,83,3,39,2,81,3,41,2,80,2,42,3,78,2,44,3,76,2,46,2,75,3,47,2,74,2,48,3,72,2,50,2,72,2,51,2,70,2,52,2,70,2,52,2,70,2,53,2,68,2,54,2,68,2,54,2,68,2,55,2,67,1,56,2,67,1,56,2,67,1,56,2,66,2,56,2,66,2,57,1,66,2,57,1,66,2,57,1,66,2,57,1,66,2,57,1,66,2,56,2,67,1,56,2,67,1,56,2,67,2,55,2,67,2,55,1,68,2,54,2,69,2,53,2,69,2,53,1,70,2,52,2,71,2,51,2,71,2,50,2,73,2,49,2,73,2,48,2,75,2,46,3,76,2,45,2,77,3,43,2,79,3,41,2,81,3,39,3,82,3,37,3,84,3,35,3,86,3,32,3,89,4,29,3,92,4,25,4,95,4,21,4,99,5,15,5,103,9,2,9,110,13,2512,2,117,17,106,8,6,9,100,6,16,6,97,4,22,5,93,4,26,5,90,3,30,4,87,4,33,3,85,4,35,3,83,3,38,3,81,3,40,3,79,3,42,3,78,2,44,3,76,3,45,3,74,3,47,2,74,2,48,3,72,2,50,2,72,2,51,2,70,2,52,2,70,2,53,2,68,2,54,2,68,2,54,3,67,2,55,2,66,2,56,2,66,2,56,2,66,2,57,1,66,2,57,2,65,2,57,2,65,2,57,2,65,1,58,2,65,1,58,2,65,1,58,2,65,1,58,2,65,1,58,2,65,2,57,2,65,2,57,2,65,2,57,2,65,2,56,2,66,2,56,2,67,2,55,2,67,2,54,3,67,2,54,2,69,2,53,2,69,2,52,3,69,3,51,2,71,2,50,3,71,3,49,2,73,3,47,3,74,2,46,3,75,3,44,3,77,3,43,2,79,3,41,3,80,3,39,3,82,3,36,4,84,3,34,4,86,4,31,3,89,5,27,4,92,5,23,5,95,5,18,6,99,7,11,7,104,19,111,10,2259,8,113,18,105,24,100,7,15,7,95,6,21,6,91,5,26,5,89,5,29,5,86,4,33,4,83,5,35,4,81,4,38,4,79,4,40,4,78,3,42,4,76,3,44,4,74,3,46,3,73,4,47,3,72,3,49,3,70,3,50,3,70,3,51,3,68,3,52,3,68,3,53,3,66,3,54,3,66,3,55,2,66,2,56,3,64,3,57,2,64,3,57,2,64,2,58,3,63,2,58,3,63,2,58,3,63,2,59,2,62,3,59,2,62,3,59,2,62,3,59,2,62,3,59,2,62,3,59,2,62,3,59,2,63,2,59,2,63,2,59,2,63,2,58,3,63,2,58,3,63,3,57,2,64,3,57,2,65,2,56,3,65,3,55,3,65,3,55,2,67,2,54,3,67,3,53,2,69,2,52,3,69,3,51,2,71,3,49,3,71,3,48,3,73,3,46,4,74,3,45,3,75,4,43,3,77,4,41,3,79,4,39,3,81,4,36,4,83,4,34,4,85,5,31,4,88,5,27,5,90,6,23,5,94,7,17,6,98,9,8,9,103,21,109,13,2004,11,110,20,103,10,6,10,98,7,16,7,94,6,22,6,91,5,27,5,87,5,31,4,85,4,34,5,82,4,37,4,80,4,39,4,78,3,42,4,76,3,44,4,74,3,46,3,73,4,47,3,72,3,49,3,70,3,50,4,68,3,52,3,68,3,53,3,66,3,54,3,66,3,55,3,64,3,56,3,64,3,57,2,64,2,58,3,62,3,58,3,62,3,59,2,62,2,60,3,61,2,60,3,61,2,61,2,60,3,61,2,60,3,61,2,60,3,61,2,60,2,62,2,60,2,62,2,60,2,62,2,60,2,62,2,60,3,61,2,60,3,61,2,60,3,61,2,61,2,61,2,61,2,60,3,61,2,60,3,61,3,59,2,62,3,59,2,63,2,58,3,63,3,57,3,63,3,56,3,65,3,55,3,65,3,54,3,67,3,53,3,67,3,52,3,69,3,51,3,69,4,49,3,71,3,48,3,73,3,46,4,74,3,44,4,75,4,42,4,77,4,40,4,79,4,38,4,81,5,35,4,84,4,32,5,86,5,28,5,90,5,24,6,92,7,19,6,96,9,11,8,101,22,108,15,1750,13,108,22,102,9,9,9,97,6,18,7,93,5,24,6,89,5,28,5,87,4,32,5,83,5,35,4,81,4,38,4,79,4,41,3,77,4,43,3,75,4,45,3,73,4,47,3,72,3,49,3,70,3,50,4,68,3,52,3,68,3,53,3,66,3,55,2,66,2,56,3,64,3,57,2,64,2,58,3,62,3,59,2,62,2,60,3,61,2,60,3,60,3,61,2,60,2,62,2,60,2,62,3,59,2,63,2,58,3,63,2,58,3,63,2,58,2,64,2,58,2,64,2,58,2,64,2,58,2,64,2,58,2,64,2,58,2,64,2,58,2,64,2,58,2,64,2,58,3,63,2,58,3,63,2,59,2,63,2,59,2,62,3,59,2,62,3,59,3,61,2,60,3,61,2,61,2,60,3,61,3,59,2,63,2,58,3,63,3,57,3,63,3,56,3,65,3,55,3,65,3,54,3,67,3,52,3,69,3,51,3,69,4,49,3,71,3,48,3,73,3,46,4,74,3,44,4,76,3,42,4,78,4,39,4,80,4,36,5,82,5,33,4,86,4,30,5,88,5,26,5,92,6,20,7,95,8,13,8,100,23,106,16,1498,13,108,22,101,9,11,8,96,6,20,6,92,6,25,5,89,5,29,5,85,5,33,4,83,4,36,5,80,4,39,4,78,3,42,4,76,3,44,4,74,3,46,4,72,3,48,4,70,3,50,3,69,3,52,3,68,3,53,3,66,3,55,2,65,3,56,3,64,3,57,3,62,3,58,3,62,3,59,3,61,2,60,3,60,3,61,2,60,2,62,3,58,3,63,2,58,3,63,2,58,2,64,3,57,2,64,3,57,2,65,2,56,3,65,2,56,2,66,2,56,2,66,2,56,2,66,2,56,2,66,2,56,2,66,2,56,2,66,2,56,2,66,2,56,2,66,2,56,2,66,2,56,2,66,2,56,3,65,2,57,2,65,2,57,2,65,2,57,2,64,3,57,2,64,2,58,3,63,2,59,2,62,3,59,3,61,2,60,3,61,2,61,2,60,3,61,3,59,2,63,2,58,3,63,3,56,3,65,3,55,3,65,3,54,3,67,3,52,3,69,3,51,3,70,3,49,3,71,4,47,3,73,4,45,3,75,4,43,3,77,4,40,4,79,5,37,4,82,4,34,5,84,5,31,4,88,5,27,5,91,6,21,6,95,7,14,8,99,24,106,17,1245,12,109,22,102,8,11,8,96,6,20,6,92,5,26,5,89,4,30,5,85,4,34,4,83,4,37,4,79,4,40,4,77,4,43,3,75,4,45,3,73,4,47,3,71,4,49,3,70,3,51,3,68,3,53,3,66,3,54,3,66,2,56,3,64,3,57,3,62,3,58,3,62,2,60,3,60,3,61,2,60,2,62,3,59,2,63,2,58,3,63,2,58,2,64,3,57,2,65,2,56,2,66,2,56,2,66,2,56,2,67,2,55,2,67,2,54,3,67,2,54,2,68,2,54,2,68,2,54,2,68,2,54,2,68,2,54,2,68,2,54,2,68,2,54,2,68,2,54,2,68,2,54,2,68,2,54,2,68,2,54,3,67,2,55,2,67,2,55,2,67,2,55,2,66,3,55,2,66,2,56,3,65,2,57,2,64,3,57,2,64,2,58,3,63,2,59,2,62,3,59,3,61,2,61,2,60,3,61,3,59,2,63,2,58,3,63,3,56,3,65,3,55,3,66,3,53,3,67,3,52,3,69,3,50,3,71,3,48,3,73,3,46,3,75,3,44,3,77,4,41,3,79,4,38,4,82,4,35,4,84,5,31,4,88,5,27,5,91,5,22,6,95,7,15,7,99,24,106,16,995,10,111,20,103,8,10,9,96,6,20,6,92,6,25,5,89,4,30,5,85,4,34,4,83,4,37,4,79,4,40,4,77,4,43,3,75,3,46,3,73,3,48,3,71,3,50,3,69,3,52,3,68,2,54,3,66,3,55,3,64,3,57,2,64,2,58,3,62,3,59,2,61,3,61,2,60,2,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,3,65,2,56,2,66,2,56,2,67,2,54,3,67,2,54,2,68,2,54,2,68,3,53,2,69,2,53,2,69,2,53,1,70,2,52,2,70,2,52,2,70,2,52,2,70,2,52,2,70,2,52,2,70,2,52,2,70,2,52,2,70,2,52,2,70,2,52,2,70,2,53,2,69,2,53,2,69,2,53,2,69,2,53,2,68,2,54,2,68,2,55,2,67,2,55,2,66,3,55,2,66,2,57,2,65,2,57,2,64,3,57,3,63,2,59,2,62,3,59,3,61,2,61,2,60,3,61,3,59,2,63,3,57,2,65,2,56,3,65,3,54,3,67,3,52,3,69,3,50,3,71,3,48,4,72,3,46,4,74,3,44,4,76,4,41,3,79,4,38,4,82,4,35,4,84,5,31,4,88,5,27,5,91,5,22,6,95,7,14,7,101,23,107,14,866,18,105,8,8,9,98,6,18,7,93,5,25,5,89,4,30,4,86,4,34,4,83,4,37,4,80,3,40,4,77,4,43,3,75,3,46,3,73,3,48,3,71,3,50,3,69,3,52,3,68,2,54,3,66,2,56,3,64,3,57,2,63,3,59,2,62,2,60,3,60,3,61,2,60,2,62,3,58,2,64,2,58,2,64,3,56,3,65,2,56,2,66,3,55,2,67,2,54,2,68,2,54,2,68,2,54,2,69,2,53,1,70,2,52,2,70,2,52,2,71,1,52,2,71,1,52,2,71,2,51,2,71,2,51,1,72,2,51,1,72,2,51,1,72,2,51,1,72,2,51,1,72,2,51,1,72,2,51,1,72,2,51,2,71,2,51,2,71,2,51,2,71,1,52,2,70,2,52,2,70,2,53,2,69,2,53,2,69,2,53,2,68,2,54,3,67,2,55,2,67,2,55,2,66,2,57,2,65,2,57,2,64,2,59,2,63,2,59,2,62,2,61,2,60,3,61,3,59,2,63,2,58,3,64,2,56,3,65,3,54,3,67,3,53,2,69,3,51,3,70,3,49,3,72,3,46,4,74,3,44,4,76,4,41,3,79,4,38,4,82,4,35,4,84,5,31,4,88,5,26,5,92,6,21,5,97,7,12,8,102,21,110,10,618,14,108,23,100,6,16,7,95,5,23,5,91,4,29,4,87,4,33,4,83,4,36,4,81,3,40,4,78,3,43,3,75,4,45,3,73,3,48,3,71,3,50,3,69,3,52,3,68,2,54,3,66,2,56,3,64,3,57,2,63,3,59,2,62,2,60,3,60,2,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,2,54,2,68,2,54,2,69,1,54,2,69,2,52,2,70,2,52,2,70,2,52,2,71,2,51,2,71,2,51,1,72,2,50,2,72,2,50,2,72,2,50,2,73,1,50,2,2,1,70,1,50,2,2,1,70,1,50,2,1,2,70,1,50,2,1,2,70,1,50,2,2,1,70,1,50,2,2,1,70,1,50,2,73,1,50,2,73,1,50,2,72,2,50,2,72,2,51,1,72,2,51,2,71,2,51,2,71,1,52,2,70,2,53,1,70,2,53,2,69,2,53,2,68,2,55,2,67,2,55,2,66,3,55,3,65,2,57,2,64,3,57,3,63,2,59,2,62,3,60,2,61,2,61,3,59,2,63,2,58,3,64,2,56,3,65,3,55,2,67,3,53,2,69,3,51,2,71,3,49,2,73,3,46,3,75,3,44,3,77,4,41,3,80,3,38,4,82,4,34,4,86,4,30,5,89,5,25,5,93,6,19,5,99,8,8,9,104,18,494,2,116,19,103,7,12,7,98,5,21,5,92,5,27,4,89,4,31,4,85,4,35,4,81,4,39,3,79,3,42,3,77,3,45,3,74,3,47,3,72,2,50,3,70,2,52,3,68,2,54,3,66,2,56,3,64,3,57,2,63,3,59,2,62,2,60,3,60,2,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,2,54,2,68,2,54,2,69,2,52,2,70,2,52,2,70,2,52,2,71,2,51,1,72,2,50,2,72,2,50,2,73,1,50,2,73,1,50,2,2,1,70,2,49,1,1,3,70,2,49,5,70,2,49,5,70,3,47,6,70,3,47,6,70,4,46,6,70,4,46,6,70,4,47,5,70,3,48,5,70,2,49,5,70,2,49,1,2,2,70,2,49,2,73,1,50,2,73,1,50,2,72,2,51,1,72,2,51,2,71,2,51,2,71,1,52,2,70,2,53,2,69,2,53,2,69,1,54,2,68,2,55,2,67,2,55,2,66,2,57,2,65,2,57,3,63,2,59,2,62,3,60,2,61,2,61,3,59,2,63,2,58,3,64,2,56,3,66,2,54,3,67,3,52,3,69,3,50,3,71,3,48,3,73,3,46,3,76,3,43,3,78,3,40,3,81,4,37,3,84,4,33,3,88,4,28,5,91,5,23,5,95,6,16,6,102,21,110,11,366,12,109,22,101,6,17,5,96,4,24,5,91,4,29,4,87,3,34,4,83,4,37,3,81,3,41,3,78,2,44,3,75,3,46,3,73,3,49,2,71,3,51,2,69,3,53,2,67,3,55,2,66,2,57,2,64,2,59,2,62,2,60,2,61,2,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,2,54,2,68,2,54,2,69,2,52,2,70,2,52,2,71,1,52,1,72,2,51,1,72,2,50,2,73,1,50,2,73,1,50,1,74,2,49,1,1,3,70,2,49,5,70,2,47,7,71,1,47,5,72,4,44,5,74,4,43,4,75,4,43,4,75,5,42,4,75,1,1,3,42,4,75,4,43,4,75,4,43,5,73,4,45,6,71,3,47,6,70,2,49,5,70,2,49,1,3,1,70,2,49,2,73,2,49,2,73,1,50,2,72,2,51,1,72,2,51,2,71,2,51,2,70,2,53,1,70,2,53,2,69,1,54,2,68,2,55,2,67,2,55,2,66,2,57,2,65,2,58,2,63,2,59,2,62,2,61,2,61,2,62,2,59,2,63,3,57,2,65,2,56,2,67,2,54,3,68,2,52,3,70,2,50,3,72,3,47,3,74,3,44,3,77,3,42,3,80,3,38,4,82,4,35,3,86,4,31,3,90,4,26,4,94,6,19,5,99,8,9,7,106,16,362,16,106,7,10,7,99,5,20,5,94,4,26,4,90,4,31,3,86,4,35,3,83,3,39,3,79,3,42,3,77,3,45,2,75,3,47,3,72,2,50,3,70,2,52,3,68,2,54,3,66,2,56,3,64,2,58,2,63,3,59,2,62,2,61,2,60,2,62,2,59,2,64,2,58,2,65,2,56,2,66,2,56,2,67,2,54,2,68,2,54,2,69,2,53,1,70,2,52,2,71,1,52,1,72,2,50,2,72,2,50,2,73,1,50,2,73,1,50,1,74,2,49,5,70,2,47,7,71,1,46,6,73,1,45,5,75,3,42,5,76,5,40,5,76,1,1,4,39,3,1,1,76,2,1,3,39,3,1,1,76,2,1,3,39,3,1,1,76,2,1,3,39,3,1,1,76,2,1,3,39,3,1,1,76,6,39,5,76,5,41,4,76,4,43,5,74,1,47,7,71,1,49,5,71,1,49,1,3,1,70,2,49,1,74,2,49,2,73,1,50,2,73,1,51,1,72,2,51,2,71,1,52,2,70,2,53,1,70,2,53,2,69,1,55,1,68,2,55,2,67,1,57,2,65,2,57,2,64,2,59,2,63,2,59,3,61,2,61,2,60,2,63,2,58,3,64,2,57,2,66,2,55,2,67,3,53,2,69,3,51,2,72,2,48,3,74,2,46,3,76,3,43,3,78,3,40,3,82,3,36,4,84,4,32,4,88,4,28,4,92,5,22,5,97,6,14,6,104,19,115,2,242,18,105,5,14,6,98,4,22,5,93,3,28,4,89,3,32,4,85,3,36,4,81,3,40,3,79,3,43,2,77,2,46,3,74,2,48,3,72,2,51,2,70,2,53,2,68,2,55,2,66,2,57,2,64,2,59,2,62,2,60,2,61,2,62,2,60,2,63,2,58,2,64,2,58,1,66,2,56,2,67,1,56,1,68,2,54,2,69,1,54,1,70,2,52,2,71,1,52,2,71,2,51,1,72,2,50,2,73,1,50,1,74,1,50,1,74,2,49,5,70,2,47,7,71,1,45,6,74,1,44,5,76,1,43,4,1,1,76,5,39,3,2,1,76,7,36,3,3,1,76,2,2,4,35,3,3,1,76,2,3,3,35,3,3,1,77,1,3,3,35,3,3,1,77,1,3,3,35,3,3,1,77,1,3,3,35,3,3,1,76,2,2,4,36,3,2,1,76,2,1,4,37,4,1,1,76,6,39,5,76,1,45,5,75,1,46,8,71,1,48,6,71,1,49,1,74,2,49,1,74,2,49,2,73,1,50,2,72,2,51,1,72,2,51,2,71,1,53,1,70,2,53,2,69,2,53,2,68,2,55,2,67,2,55,2,66,2,57,2,65,1,59,1,64,2,59,2,62,2,61,2,61,2,62,2,59,2,63,3,57,2,65,2,56,2,67,2,54,2,69,3,51,2,71,3,49,2,73,3,47,2,76,2,44,3,78,3,41,3,80,3,38,3,84,3,34,3,88,3,30,4,91,4,24,4,97,5,17,5,102,20,112,9,238,18,104,5,16,5,98,4,23,4,92,4,29,3,88,4,33,3,85,3,37,3,81,3,41,2,79,2,44,3,76,2,46,3,73,3,49,2,71,3,51,2,69,3,53,2,68,2,55,2,66,2,57,2,64,2,59,2,62,2,61,1,61,2,62,2,60,1,64,2,58,2,65,1,58,1,66,2,56,2,67,2,55,1,68,2,54,2,69,1,54,1,70,2,52,2,71,1,52,1,72,2,51,1,73,1,50,2,73,1,50,1,74,2,49,1,74,2,47,7,71,1,45,6,74,1,43,6,76,1,42,4,2,1,76,2,41,3,3,1,76,7,35,3,4,1,76,8,34,3,4,1,77,1,4,3,33,2,5,1,77,1,5,2,33,2,5,1,77,1,5,3,32,2,5,1,77,1,5,3,32,2,5,1,77,1,5,2,33,3,4,1,77,1,4,3,33,3,4,1,76,3,2,4,34,3,3,1,76,8,35,4,2,1,76,2,42,4,1,1,76,1,44,6,75,1,46,8,71,1,49,1,1,3,71,1,49,1,74,2,49,1,74,1,50,2,73,1,51,1,72,2,51,2,71,1,52,2,71,1,53,1,70,2,53,2,69,1,55,1,68,2,55,2,66,2,57,2,65,2,58,1,64,2,59,2,63,1,61,2,61,2,62,1,60,2,63,2,58,2,65,2,56,2,67,2,54,2,69,2,52,2,71,2,50,2,73,3,47,2,75,3,45,2,78,2,42,3,80,3,38,3,84,3,35,3,87,3,30,4,91,4,25,4,95,5,18,5,102,7,7,7,110,10,238,19,103,5,16,5,97,4,24,4,92,4,29,3,88,3,34,3,85,2,38,3,81,3,41,2,79,2,44,3,76,2,47,2,73,3,49,2,71,2,52,2,69,2,54,2,67,2,56,2,66,2,57,2,64,2,59,2,62,2,61,1,61,2,62,2,60,1,64,2,58,2,65,1,57,2,66,2,56,2,67,2,54,2,69,1,54,2,69,2,53,1,70,2,52,2,71,1,52,1,72,2,50,2,73,1,50,2,73,1,50,1,74,2,49,5,71,1,45,9,71,1,43,6,76,1,42,4,2,1,76,1,41,3,4,1,76,2,40,2,5,1,77,1,1,5,33,3,5,1,77,9,31,2,6,1,77,3,3,3,31,2,6,1,77,2,5,3,30,2,6,1,77,2,5,3,30,2,6,1,77,2,5,3,30,2,6,1,77,2,5,3,30,2,6,1,77,3,4,3,30,3,5,1,77,4,2,3,31,3,5,1,77,8,33,3,4,1,76,2,41,3,3,1,76,1,43,4,1,1,76,1,44,8,73,1,48,6,71,1,49,1,74,2,49,1,74,1,50,2,73,1,51,1,72,2,51,1,72,1,52,2,71,1,53,1,70,2,53,2,69,1,55,1,68,2,55,2,67,1,57,2,65,2,57,2,64,2,59,2,63,1,61,2,61,2,62,1,60,2,63,2,58,2,65,2,56,2,67,2,54,2,69,2,52,3,70,2,50,2,73,2,48,2,75,3,45,2,78,2,42,3,80,3,39,2,84,3,35,3,87,3,31,3,91,3,26,4,95,5,19,4,102,6,8,7,110,11,237,19,103,5,16,5,98,3,24,4,92,4,29,3,88,3,34,3,85,2,38,3,81,3,41,2,79,2,44,3,76,2,47,2,73,3,49,2,71,3,51,2,69,2,54,2,67,2,56,2,66,2,57,2,64,2,59,2,62,2,61,1,61,2,62,2,60,1,64,2,58,2,65,1,57,2,66,2,56,2,67,2,54,2,68,2,54,2,69,1,54,1,70,2,52,2,71,1,52,1,72,2,50,2,73,1,50,2,73,1,50,1,74,2,47,7,71,1,44,7,74,1,42,4,2,1,76,1,41,3,4,1,76,1,40,3,5,1,76,2,39,2,6,1,77,1,3,5,30,3,6,1,77,1,1,8,29,2,7,1,77,5,3,3,28,2,7,1,77,4,4,3,28,2,7,1,77,4,5,2,28,2,7,1,77,4,5,2,28,2,7,1,77,4,5,2,28,2,7,1,77,4,4,3,28,2,7,1,77,1,1,3,2,3,29,3,6,1,77,1,2,6,31,3,5,1,76,2,40,3,4,1,76,1,42,3,3,1,76,1,43,7,75,1,46,8,71,1,49,1,74,2,49,1,74,1,50,2,73,1,51,1,72,2,51,1,72,1,52,2,71,1,53,1,70,2,53,2,69,1,55,1,68,2,55,2,67,1,57,2,65,2,57,2,64,2,59,2,63,1,61,2,61,2,62,1,60,2,63,2,58,2,65,2,56,2,67,2,54,2,69,2,52,3,70,2,50,2,73,2,48,2,75,3,45,2,78,2,42,3,80,3,39,2,84,3,35,3,87,3,31,3,91,3,26,4,95,5,19,4,102,6,8,7,110,11,237,18,104,5,16,5,98,4,23,4,92,4,29,3,88,4,33,3,85,3,37,3,81,3,41,2,79,2,44,3,76,2,46,3,74,2,49,2,71,3,51,2,69,3,53,2,68,2,55,2,66,2,57,2,64,2,59,2,62,2,61,1,61,2,62,2,60,1,64,2,58,2,65,1,58,1,66,2,56,2,67,1,56,1,68,2,54,2,69,1,54,1,70,2,52,2,71,1,52,1,72,2,51,1,73,1,50,2,73,1,50,1,74,2,46,8,70,2,43,7,75,1,41,4,3,2,75,1,40,3,5,1,76,1,39,3,6,1,76,2,38,2,7,1,76,2,4,5,28,3,7,1,77,1,3,7,27,2,8,1,77,1,2,3,3,3,26,2,8,1,77,1,2,3,4,2,26,2,8,1,77,1,2,2,5,2,26,2,8,1,77,1,2,2,5,2,26,2,8,1,77,1,2,2,5,2,26,2,8,1,77,1,2,3,3,3,26,2,8,1,77,1,2,4,1,4,27,2,7,1,76,2,3,7,28,3,6,1,76,2,39,3,5,1,76,1,40,4,4,1,76,1,42,5,1,2,75,1,44,10,71,1,49,1,74,2,49,1,74,1,50,2,73,1,51,1,72,2,51,2,71,1,52,2,71,1,53,1,70,2,53,2,69,1,55,1,68,2,55,2,66,2,57,2,65,2,58,1,64,2,59,2,63,1,61,2,61,2,62,1,60,2,63,2,58,2,65,2,56,2,67,2,54,2,69,2,52,2,71,2,50,2,73,3,47,2,75,3,45,2,78,2,42,3,80,3,38,3,84,3,35,3,87,3,30,4,91,4,25,4,95,5,18,5,102,7,7,7,110,10,238,18,105,5,15,5,98,4,23,4,93,3,28,4,89,3,33,3,85,3,37,3,81,3,40,3,79,3,43,2,77,2,46,3,74,2,49,2,72,2,51,2,70,2,53,2,68,2,55,2,66,2,57,2,64,2,59,2,62,2,60,2,61,2,62,2,60,2,63,2,58,2,65,1,58,1,66,2,56,2,67,1,56,1,68,2,54,2,69,1,54,1,70,2,52,2,71,1,52,1,72,2,51,1,72,2,50,2,73,1,50,1,74,1,46,9,70,2,42,5,2,1,75,1,40,4,4,2,75,1,39,3,6,1,76,1,38,3,7,1,76,1,38,2,8,1,76,2,6,4,27,2,8,1,76,2,4,8,24,2,9,1,77,1,4,2,3,3,24,2,9,1,77,1,3,3,4,2,24,2,9,1,77,1,3,3,4,3,23,2,9,1,77,1,3,2,5,3,23,2,9,1,77,1,3,3,4,3,23,2,9,1,77,1,3,3,4,2,25,2,8,1,77,1,4,3,2,3,25,2,8,1,76,2,5,6,26,3,7,1,76,1,39,2,7,1,76,1,40,3,5,2,75,1,41,4,3,2,75,1,43,11,70,2,49,1,74,2,49,2,73,1,50,2,73,1,51,1,72,2,51,2,71,1,53,1,70,2,53,2,69,2,53,2,68,2,55,2,67,2,55,2,66,2,57,2,65,1,59,1,64,2,59,2,62,2,61,2,61,2,62,2,59,2,63,2,58,2,65,2,56,2,67,2,54,2,69,2,52,2,71,2,50,2,73,3,47,2,76,2,44,3,78,3,41,3,80,3,38,3,84,3,34,3,88,3,30,4,91,4,25,3,97,4,18,5,102,8,4,8,112,9,239,17,105,6,13,6,98,4,22,4,94,4,27,4,89,3,32,4,85,3,36,3,83,2,40,3,79,3,43,2,77,2,46,3,74,2,48,3,72,2,51,2,70,2,53,2,68,2,55,2,66,2,57,2,64,2,58,2,63,2,60,2,62,1,62,2,60,2,63,2,58,2,64,2,58,1,66,2,56,2,67,1,56,1,68,2,54,2,69,1,54,1,70,2,52,2,71,1,52,2,71,1,52,1,72,2,50,2,73,1,50,2,73,1,45,10,70,2,41,5,3,1,74,2,39,4,5,2,75,1,38,3,7,2,75,1,38,2,8,1,76,1,37,2,9,1,76,1,8,4,25,2,9,1,76,2,5,8,23,2,9,1,76,2,5,3,3,2,23,1,10,1,76,2,5,2,4,2,23,1,10,1,76,2,4,3,4,3,22,1,10,1,77,1,4,3,5,2,22,1,10,1,76,2,4,3,4,3,22,2,9,1,76,2,5,2,4,2,23,2,9,1,76,2,5,3,2,3,23,2,9,1,76,2,6,6,25,2,8,1,76,1,38,3,7,2,75,1,39,3,6,2,75,1,40,4,5,1,75,1,43,11,70,2,49,1,74,1,50,2,73,1,51,1,72,2,51,1,72,2,51,2,71,1,53,1,70,2,53,2,69,1,55,1,68,2,55,2,67,1,57,1,66,2,57,2,65,1,59,2,63,2,59,2,62,2,61,2,61,1,63,2,59,2,64,2,57,2,65,3,55,2,67,3,53,2,69,3,51,2,71,3,49,2,73,3,46,3,76,2,44,3,78,3,41,2,82,3,37,3,84,3,34,3,88,4,29,3,92,4,24,4,97,5,16,6,102,20,113,6,242,15,106,7,11,6,100,4,20,5,94,4,26,4,90,4,31,3,86,3,36,3,83,3,39,3,79,3,42,3,77,3,45,2,75,2,48,3,72,2,50,3,70,2,52,3,68,2,54,3,66,2,56,2,65,2,58,2,63,2,60,2,62,2,61,2,60,2,63,1,59,2,64,2,58,2,65,2,56,2,66,2,56,2,67,2,54,2,68,2,54,2,69,2,53,1,70,2,52,2,71,1,52,1,72,2,51,1,72,2,50,2,73,1,45,10,70,1,41,6,1,7,70,2,39,3,7,1,75,1,38,2,8,2,75,1,37,2,9,2,75,1,37,2,9,1,76,1,9,4,23,2,10,1,76,1,8,6,22,2,10,1,76,1,7,3,3,2,21,2,10,1,76,1,7,2,4,2,21,2,10,1,76,2,6,2,4,2,21,2,10,1,76,2,6,2,5,2,20,2,10,1,76,2,6,2,4,2,21,2,10,1,76,1,7,2,4,2,21,2,10,1,76,1,7,3,2,3,22,2,9,1,76,1,8,6,23,2,9,2,75,1,38,2,8,2,75,1,38,3,8,1,75,1,40,4,5,1,74,2,42,12,70,2,49,2,73,1,50,2,73,1,51,1,72,2,51,2,71,1,52,2,71,1,53,1,70,2,53,2,69,1,55,1,68,2,55,2,67,1,57,1,66,2,57,2,64,2,59,2,63,2,60,1,62,2,61,2,60,2,63,2,59,2,64,2,57,2,66,2,55,2,68,2,53,2,70,2,51,2,72,2,49,2,74,2,46,3,76,3,43,2,79,3,40,3,82,3,37,3,85,3,33,3,88,4,28,4,93,4,23,4,97,6,15,5,104,18,363,13,108,7,8,7,101,5,19,4,96,4,25,4,90,4,30,4,87,3,35,3,83,3,38,3,81,3,41,3,77,3,44,3,75,3,47,2,73,3,49,2,71,2,52,2,69,2,54,2,67,2,56,2,65,3,57,2,64,2,59,2,62,2,61,2,60,2,62,2,60,2,63,2,58,2,65,1,58,1,66,2,56,2,67,1,56,1,68,2,54,2,69,1,54,1,70,2,52,2,71,1,52,2,71,1,52,1,72,2,50,2,73,1,46,3,1,2,73,1,41,14,70,2,38,3,8,1,74,2,37,3,9,1,75,1,37,2,9,2,75,1,36,2,10,2,75,1,10,4,22,2,10,2,75,1,9,6,21,1,11,1,76,1,8,2,3,3,20,1,11,1,76,1,8,2,4,2,20,1,11,1,76,1,8,2,4,2,20,1,11,1,76,1,8,2,4,2,20,1,11,1,76,1,8,2,4,2,20,1,11,1,76,1,8,2,4,2,20,2,10,2,75,1,8,3,2,3,20,2,10,2,75,1,9,6,22,2,9,2,75,1,37,2,10,1,75,1,38,3,8,1,74,2,39,5,3,7,70,2,42,12,70,1,50,2,73,1,51,1,72,2,51,1,72,2,51,2,71,1,53,1,70,2,53,2,69,2,53,2,68,2,55,2,67,2,55,2,66,2,57,2,65,2,57,2,64,2,59,2,63,1,61,2,61,2,61,2,60,2,63,2,58,2,65,2,56,3,66,2,54,3,68,2,52,3,70,2,50,3,72,2,48,3,74,3,45,3,76,3,43,2,80,3,39,3,82,3,36,3,86,3,32,4,89,4,27,4,93,5,21,4,99,6,12,7,105,17,364,10,111,21,102,5,17,5,96,4,24,4,92,4,29,4,87,3,34,3,85,3,37,3,81,3,41,2,79,2,44,3,76,2,46,3,73,3,49,2,71,3,51,2,69,3,53,2,68,2,55,2,66,2,57,2,64,2,59,2,62,2,60,2,62,1,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,2,54,2,68,2,54,2,69,2,53,1,70,2,52,2,71,1,52,1,72,2,51,1,72,2,50,2,73,1,41,14,70,1,39,3,7,6,70,2,37,2,10,1,74,2,36,2,11,1,74,2,36,2,11,1,75,1,11,4,21,1,11,2,75,1,9,7,19,2,11,2,75,1,9,2,3,3,18,2,11,2,75,1,9,2,4,2,18,2,11,2,75,1,9,1,5,2,18,2,11,2,75,1,9,1,5,2,18,2,11,2,75,1,9,2,4,2,18,2,11,2,75,1,9,2,4,2,19,1,11,2,75,1,9,3,2,2,20,2,11,1,75,1,10,5,21,2,11,1,74,2,37,2,10,1,74,2,38,2,9,5,70,2,39,15,70,1,44,5,1,2,73,1,51,1,72,2,51,1,72,2,51,2,71,1,52,2,70,2,53,1,70,2,53,2,69,1,55,1,68,2,55,2,67,1,57,1,66,2,57,2,64,2,59,2,63,2,59,2,62,2,61,2,61,2,62,2,59,2,63,3,57,2,65,2,56,2,67,2,54,2,69,2,52,2,71,3,49,2,73,3,47,2,75,3,44,3,78,2,42,3,80,3,38,4,83,3,35,3,86,4,31,3,90,4,26,4,95,5,19,5,100,7,9,7,107,14,370,2,116,19,103,6,15,5,98,4,22,5,92,4,28,4,89,3,32,4,85,3,36,4,81,3,40,3,79,3,43,2,77,3,45,3,74,2,48,3,72,2,50,3,70,2,52,3,68,2,54,3,66,2,56,3,64,2,58,2,63,3,59,2,62,2,61,2,60,2,62,2,60,1,64,2,58,2,65,1,58,1,66,2,56,2,67,1,56,1,68,2,54,2,69,1,54,1,70,2,52,2,70,2,52,2,71,1,52,1,72,2,51,1,72,2,41,11,73,1,39,3,3,10,70,1,38,2,9,6,70,1,37,2,11,1,74,2,36,1,12,1,74,2,12,3,20,2,12,1,74,2,10,3,1,3,18,2,12,1,75,1,10,2,3,2,18,1,13,1,75,1,9,3,4,2,17,1,13,1,75,1,9,2,5,2,17,1,13,1,75,1,9,2,5,2,17,1,13,1,75,1,9,2,5,2,17,2,12,1,75,1,10,2,3,2,18,2,12,1,75,1,10,3,1,3,18,2,12,1,74,2,11,5,20,2,11,1,74,2,36,3,10,5,70,1,38,3,5,9,70,1,40,12,73,1,51,1,72,2,51,1,72,2,51,2,71,1,52,2,71,1,53,1,70,2,53,2,69,1,54,2,68,2,55,2,67,2,55,2,66,2,57,2,65,2,57,2,64,2,59,2,63,1,61,2,61,2,61,2,60,2,63,2,58,3,64,2,57,2,66,2,55,2,67,3,53,2,69,3,51,2,71,3,49,2,74,2,46,3,76,2,44,3,78,3,41,2,81,4,37,3,84,3,34,3,88,3,30,4,91,4,24,5,95,6,17,5,102,8,4,9,110,11,490,17,105,7,11,6,99,5,20,5,94,4,26,4,90,4,31,3,86,4,35,3,83,3,39,3,80,2,42,3,77,3,44,3,75,3,47,2,73,3,49,2,71,2,52,2,69,2,54,2,67,3,55,2,66,2,57,2,64,2,59,2,62,2,60,2,61,2,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,2,54,2,68,2,54,2,69,1,54,1,70,2,52,2,70,2,52,2,71,1,52,1,72,2,41,5,5,1,72,2,39,13,73,1,37,3,6,9,70,1,37,2,9,7,70,1,36,2,12,5,70,1,13,4,19,2,12,1,74,2,11,6,18,1,13,1,74,2,11,2,3,2,17,1,13,1,74,2,10,2,4,2,17,1,13,1,74,2,10,2,5,1,17,1,13,1,74,2,10,2,5,1,17,1,13,1,74,2,10,2,4,2,17,1,13,1,74,2,10,2,4,2,17,1,13,1,74,2,11,2,2,3,17,2,12,1,2,2,70,2,12,5,19,1,11,6,70,1,37,2,8,8,70,1,38,3,2,9,73,1,40,7,4,1,72,2,51,1,72,2,51,2,71,1,52,2,71,1,53,1,70,2,53,2,69,2,53,2,68,2,55,1,68,2,55,2,67,1,57,1,66,2,57,2,64,2,59,2,63,2,59,2,62,2,61,2,61,2,62,2,59,2,63,2,58,2,65,2,56,2,67,2,54,3,68,2,52,3,70,2,50,3,72,2,48,3,74,3,45,3,76,3,43,2,79,3,40,3,82,3,36,4,85,3,32,4,88,4,28,4,92,5,23,4,97,6,15,5,104,19,113,6,495,13,108,8,7,7,101,5,18,5,96,4,25,4,91,3,30,4,87,3,34,4,83,4,37,3,81,3,41,2,79,2,44,3,76,2,46,3,73,3,48,3,71,3,51,2,70,2,53,2,68,2,55,2,66,2,56,3,64,2,58,2,63,3,59,2,62,2,61,2,60,2,62,2,60,2,63,2,58,2,65,1,58,1,66,2,56,2,67,1,56,1,68,2,54,2,68,2,54,2,69,1,54,1,70,2,52,2,70,2,52,2,71,1,52,1,72,2,38,9,4,1,72,2,37,3,3,6,2,1,72,2,36,2,7,7,73,1,36,2,9,8,70,1,14,4,18,1,11,7,70,1,13,6,16,2,12,6,70,1,12,2,3,2,16,2,13,5,70,1,12,2,4,2,15,2,13,5,70,1,12,1,5,2,15,2,13,5,70,1,12,1,5,2,15,2,13,5,70,1,12,2,4,2,15,2,13,5,70,1,12,2,4,2,16,1,12,6,70,1,12,3,2,2,17,2,9,8,70,1,13,5,18,2,8,8,71,1,37,2,5,6,1,1,73,1,38,10,3,1,72,2,40,4,7,1,72,2,51,2,71,1,52,2,71,1,53,1,70,2,53,2,69,2,53,2,69,1,55,1,68,2,55,2,67,1,56,2,66,2,57,2,65,2,57,2,64,2,59,2,63,1,61,2,61,2,61,2,60,2,63,2,58,3,64,2,57,2,65,3,55,2,67,3,53,2,69,3,51,2,71,3,49,2,73,3,47,2,75,3,44,3,78,2,42,3,80,3,39,3,82,4,35,3,86,4,31,3,90,4,26,4,94,5,21,4,99,6,12,7,105,17,617,9,111,20,103,6,15,6,96,5,23,4,92,4,28,4,89,3,32,4,85,3,36,4,81,3,40,3,79,3,42,3,77,3,45,2,75,2,48,3,72,2,50,3,70,2,52,3,68,2,54,2,67,2,56,2,66,2,57,2,64,2,59,2,62,2,60,2,62,2,61,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,1,56,1,68,2,54,2,68,2,54,2,69,1,54,1,70,2,52,2,70,2,52,2,71,1,39,6,7,2,71,1,38,2,3,4,5,1,72,2,36,2,6,4,3,1,72,2,36,1,8,4,2,1,72,2,15,3,17,2,9,4,1,1,73,1,13,3,1,2,16,2,9,6,73,1,13,2,3,2,15,1,11,5,73,1,12,2,4,2,15,1,11,6,72,1,12,2,5,1,15,1,11,7,71,1,12,2,5,1,15,1,11,5,73,1,12,2,5,1,15,2,9,6,73,1,13,2,3,2,15,2,9,6,73,1,13,2,2,3,16,1,8,5,1,1,72,2,14,5,17,2,6,4,3,1,72,2,37,2,4,4,4,1,72,2,38,7,6,1,72,2,51,2,71,1,52,2,70,2,53,1,70,2,53,2,69,2,53,2,69,1,55,1,68,2,55,2,67,2,55,2,66,2,57,2,65,2,57,2,64,2,59,2,63,2,59,2,62,2,61,2,61,2,62,2,59,2,63,2,58,2,65,2,56,2,67,2,54,3,68,2,53,2,70,2,50,3,72,2,48,3,74,2,46,3,76,3,43,3,78,3,41,2,81,4,37,3,84,3,34,4,87,3,30,4,91,4,25,4,95,5,18,5,101,8,7,8,107,14,741,17,105,6,12,7,98,5,21,4,94,4,26,4,90,4,31,3,86,4,35,3,83,3,38,3,81,3,41,3,77,3,44,3,75,3,47,2,73,3,49,2,71,3,51,2,69,3,53,2,68,2,55,2,66,2,56,3,64,2,58,2,64,2,59,2,62,2,61,2,60,2,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,1,56,1,68,2,54,2,68,2,54,2,69,1,54,1,70,2,53,1,70,2,39,5,8,2,71,1,38,8,6,2,71,1,37,2,4,4,5,2,71,1,36,2,6,4,4,1,72,2,15,4,16,2,7,3,4,1,72,2,14,2,1,3,15,1,9,3,3,1,72,2,13,2,3,2,15,1,9,3,3,1,72,2,13,2,4,2,14,1,9,3,3,1,72,2,13,1,5,2,14,1,9,3,3,1,72,2,13,1,5,2,14,1,9,3,3,1,72,2,13,2,4,2,14,1,9,3,3,1,72,2,13,2,4,1,15,2,7,3,4,1,72,2,14,2,2,2,15,2,7,3,4,1,72,2,14,5,17,2,5,3,5,1,72,1,38,2,2,4,6,2,71,1,39,6,7,2,71,1,52,2,70,2,53,1,70,2,53,2,69,1,54,2,69,1,55,1,68,2,55,2,67,2,55,2,66,2,57,2,65,2,57,2,64,2,59,2,63,2,59,2,62,2,61,2,61,2,61,2,60,2,63,2,58,3,64,2,57,2,65,3,55,2,67,3,53,2,69,2,52,2,71,2,50,3,72,3,47,2,75,3,45,2,77,3,42,3,80,3,39,3,82,3,36,4,85,3,32,4,88,4,28,4,92,5,23,4,97,6,15,6,102,20,112,9,744,14,108,8,7,8,100,5,18,5,96,4,24,5,91,4,29,4,87,4,33,3,85,3,37,3,81,3,40,3,79,3,43,3,76,2,46,3,74,2,48,3,72,2,50,3,70,2,52,3,68,2,54,2,67,3,55,2,66,2,57,2,64,2,58,3,62,2,60,2,62,2,61,2,60,2,62,2,60,2,63,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,1,56,1,68,2,54,2,68,2,54,2,69,1,54,2,69,2,40,2,11,1,70,2,38,6,9,1,70,2,37,2,3,3,7,2,71,1,36,2,5,3,6,2,71,1,16,4,16,1,7,3,5,2,71,1,15,3,1,2,15,1,7,3,5,2,71,1,15,2,3,2,13,2,8,2,5,1,72,1,14,2,4,2,13,2,8,2,5,1,72,1,14,2,5,1,13,2,8,2,5,1,72,1,14,2,5,1,13,2,8,2,5,1,72,1,14,2,4,2,13,2,7,3,5,2,71,1,15,1,4,2,14,1,7,3,5,2,71,1,15,2,2,2,15,2,6,2,6,2,71,1,16,4,17,2,4,3,6,2,71,1,37,3,1,4,7,2,70,2,39,4,10,1,70,2,53,1,70,2,53,2,69,1,54,2,69,1,55,1,68,2,55,2,67,2,55,2,66,2,57,1,66,2,57,2,65,1,59,1,64,2,59,2,63,1,61,2,61,2,61,2,60,2,63,2,59,2,63,3,57,2,65,2,56,2,67,2,54,3,68,2,52,3,70,2,51,2,71,3,48,3,73,3,46,3,76,2,44,3,78,3,41,3,80,3,38,3,84,3,35,3,86,4,31,3,90,4,26,4,94,5,20,5,99,7,11,7,105,17,869,9,111,20,103,6,15,5,98,4,22,5,93,3,28,4,89,3,32,4,85,4,35,3,83,3,39,3,79,3,42,3,77,3,44,3,75,3,47,2,73,3,49,2,71,3,51,2,70,2,53,2,68,2,54,3,66,2,56,2,65,2,58,2,64,2,59,2,62,2,60,2,62,2,61,2,60,2,63,1,60,1,64,2,58,2,64,2,58,2,65,2,56,2,66,2,56,2,67,1,56,1,68,2,55,1,68,2,54,2,69,1,54,2,69,1,39,5,10,1,70,2,37,2,2,3,9,1,70,2,36,2,4,3,8,1,70,2,17,3,16,1,6,2,8,1,71,1,16,2,1,2,14,2,6,3,6,2,71,1,15,2,3,2,13,2,7,2,6,2,71,1,15,1,5,1,13,1,8,2,6,2,71,1,15,1,5,1,13,1,8,2,6,2,71,1,15,1,5,1,13,1,8,2,6,2,71,1,15,1,5,1,13,2,6,3,6,2,71,1,15,2,3,2,13,2,6,2,8,1,71,1,15,3,1,3,14,2,5,2,8,1,70,2,16,5,15,2,4,3,8,1,70,2,37,7,9,1,70,2,39,3,11,2,69,1,54,2,69,1,54,2,68,2,55,1,68,2,55,2,67,2,55,2,66,2,57,1,66,2,57,2,65,1,58,2,64,2,59,2,63,2,59,2,62,2,61,2,61,2,62,2,59,2,63,2,58,2,65,2,57,2,66,2,55,2,67,3,53,2,69,2,52,2,71,2,50,2,73,3,47,3,74,3,45,2,77,3,43,2,79,3,40,3,82,3,37,3,84,4,33,3,88,4,29,4,91,4,24,5,95,6,17,5,101,8,7,7,109,13,993,17,105,7,10,7,99,5,20,5,94,5,25,4,91,3,30,4,87,3,34,4,83,4,37,3,81,3,40,3,79,3,43,3,76,3,45,3,74,2,48,3,72,2,50,3,70,2,52,2,69,3,53,2,67,3,55,2,66,2,57,2,64,2,58,2,64,2,59,2,62,2,60,3,60,2,62,2,60,2,63,1,60,1,64,2,58,2,65,1,58,2,65,2,56,2,66,2,56,2,67,1,56,2,67,2,55,1,68,2,54,2,68,2,39,4,11,2,69,1,38,2,1,3,10,2,69,1,37,2,4,2,9,2,69,2,17,3,15,2,5,2,9,1,70,2,16,2,1,2,14,2,6,2,8,1,70,2,15,2,3,2,13,1,7,2,8,1,70,2,15,2,4,1,13,1,7,2,8,1,70,2,15,1,5,1,13,1,7,2,8,1,70,2,15,1,5,1,13,1,7,2,8,1,70,2,15,2,4,1,13,1,7,2,8,1,70,2,15,2,4,1,13,2,5,2,9,1,70,2,16,2,2,2,14,1,5,2,9,1,70,2,17,4,15,2,3,3,9,2,69,1,38,6,10,2,69,1,54,2,69,1,55,1,68,2,55,1,68,2,55,2,67,1,56,2,66,2,57,1,66,2,57,2,65,1,58,2,64,2,59,2,63,2,59,2,62,2,61,2,61,2,61,2,60,2,63,2,58,3,64,2,57,2,65,2,56,2,67,2,54,3,68,2,52,3,70,2,50,3,71,3,48,3,73,3,46,3,76,2,44,3,78,3,41,3,80,3,38,4,82,4,35,3,86,4,31,4,89,4,27,4,93,4,22,5,97,6,14,6,104,19,112,9,997,12,109,10,2,10,102,5,16,6,96,5,23,4,92,4,28,4,89,3,32,4,85,3,36,3,83,3,39,3,80,2,42,3,77,3,44,3,75,3,47,2,73,3,49,2,72,2,51,2,70,2,52,3,68,2,54,3,66,2,56,2,66,2,57,2,64,2,58,2,63,2,60,2,62,2,61,2,60,2,62,2,60,2,63,2,59,1,64,2,58,2,64,2,58,2,65,2,57,1,66,2,56,2,67,1,56,2,67,1,56,1,68,2,39,3,13,1,68,2,38,6,11,1,68,2,37,2,3,2,10,2,69,1,18,3,15,2,5,2,9,2,69,1,17,6,13,1,6,2,9,2,69,1,17,1,3,2,13,1,6,2,9,2,69,1,16,2,4,1,12,2,7,1,9,2,69,1,16,2,4,1,12,2,7,1,9,2,69,1,16,2,4,1,13,1,6,2,9,2,69,1,16,2,4,1,13,1,6,2,9,2,69,1,17,1,4,1,13,2,5,2,9,2,69,1,17,2,2,2,13,2,4,2,10,2,69,1,18,4,15,3,1,3,10,2,68,2,38,5,12,1,68,2,55,1,68,2,55,2,67,2,55,2,67,1,56,2,66,2,57,2,65,2,57,2,65,1,58,2,64,2,59,2,63,2,59,2,62,2,61,2,61,2,61,2,60,2,63,2,59,2,63,2,58,2,65,2,56,2,67,2,55,2,67,3,53,2,69,3,51,2,71,3,49,2,73,3,47,2,75,3,45,2,77,3,43,2,79,3,40,3,82,3,37,3,84,3,34,3,88,3,30,4,91,4,25,4,95,5,19,5,99,8,9,7,106,16,1124,4,115,18,105,6,13,6,98,5,21,4,94,4,26,4,90,4,30,4,87,3,34,4,83,4,37,3,81,3,40,3,79,3,43,3,76,3,45,3,74,2,48,3,72,2,50,2,71,3,51,2,69,3,53,2,68,2,55,2,66,2,56,2,65,3,57,2,64,2,59,2,62,2,60,2,62,2,61,2,60,2,62,2,60,2,63,1,60,1,64,2,58,2,64,2,58,2,65,2,57,1,66,2,56,2,66,2,56,2,67,1,56,2,67,1,38,6,12,1,68,2,36,3,2,3,11,1,68,2,19,3,14,2,4,2,11,1,68,2,17,6,12,2,6,1,11,1,68,2,17,1,4,1,12,2,6,2,10,1,68,2,17,1,4,1,12,2,6,2,10,1,69,1,17,1,4,1,12,2,6,2,10,1,69,1,17,1,4,1,12,2,6,2,10,1,68,2,17,1,4,1,12,2,6,1,11,1,68,2,17,1,4,1,13,1,5,2,11,1,68,2,17,2,2,2,13,2,4,2,11,1,68,2,18,4,15,6,12,1,68,2,39,3,13,2,67,1,56,2,67,1,56,2,66,2,57,1,66,2,57,2,65,2,57,2,65,1,59,1,64,2,59,2,63,2,59,2,62,2,61,2,61,2,61,2,60,2,63,2,59,2,63,2,58,2,65,2,57,2,65,3,55,2,67,2,54,2,69,2,52,3,70,2,50,3,72,2,48,3,74,2,46,3,76,2,44,3,78,3,41,3,80,3,39,3,82,4,35,3,86,3,32,4,88,4,28,4,92,5,22,5,97,5,16,6,102,21,110,11,1247,15,107,8,7,8,100,6,17,5,96,4,24,4,92,4,28,4,89,3,33,3,85,3,36,3,83,3,39,3,80,2,42,3,77,3,44,3,75,3,46,3,74,2,48,3,72,2,50,3,70,2,52,3,68,2,54,2,68,2,55,2,66,2,56,3,64,2,58,2,64,2,59,2,62,2,60,2,62,2,61,2,60,2,62,2,60,2,63,1,60,2,63,2,58,2,64,2,58,2,65,1,58,2,65,2,57,1,66,2,56,2,66,2,38,5,13,2,67,1,37,3,2,2,12,2,67,1,20,3,14,1,5,2,11,2,67,1,18,6,12,2,5,2,11,1,68,1,18,1,4,1,12,1,6,2,11,1,68,2,17,1,4,1,12,1,7,1,11,1,68,2,17,1,4,1,12,1,7,1,11,1,68,2,17,1,4,1,12,1,7,1,11,1,68,2,17,1,4,1,12,2,5,2,11,1,68,1,18,1,4,1,12,2,5,2,11,2,67,1,18,2,2,2,13,2,3,2,12,2,67,1,19,4,15,6,12,2,67,1,40,2,14,2,67,1,57,1,66,2,57,1,66,2,57,2,65,1,58,2,64,2,59,1,64,2,59,2,63,2,59,2,62,2,61,2,61,2,61,2,60,2,63,2,59,2,63,2,58,2,65,2,57,2,65,2,56,2,67,2,54,3,68,2,53,2,69,3,51,2,71,3,49,2,73,3,47,2,75,3,45,2,77,3,43,2,79,3,40,3,82,3,37,3,84,3,34,4,87,3,30,4,90,4,26,4,94,5,20,5,99,6,12,6,105,18,117,1,1255,9,112,19,103,6,14,6,98,5,21,4,94,4,26,5,89,4,31,3,87,3,34,4,83,4,37,3,81,3,40,3,79,3,43,2,77,3,45,2,75,3,47,2,73,3,49,2,71,3,51,2,70,2,52,3,68,2,54,2,67,3,55,2,66,2,57,2,64,2,58,2,64,2,59,2,62,2,60,2,62,2,61,2,61,1,62,2,60,2,63,1,60,2,63,2,59,1,64,2,58,2,64,2,58,2,65,1,58,1,66,2,39,4,14,1,66,2,37,3,1,3,13,1,66,2,19,3,14,2,4,2,12,2,66,2,18,6,12,2,5,1,12,2,67,1,17,2,3,2,12,1,6,2,11,2,67,1,17,2,4,1,11,2,6,2,11,2,67,1,17,2,4,1,11,2,6,2,11,2,67,1,17,2,4,1,12,1,6,2,11,2,67,1,17,2,4,1,12,1,6,2,11,2,67,1,17,2,4,1,12,2,4,2,12,2,67,1,18,2,2,2,13,2,3,2,13,1,66,2,19,4,15,5,14,1,66,2,57,1,66,2,57,2,65,2,57,2,65,1,58,2,64,2,59,1,64,2,59,2,63,1,60,2,62,2,61,2,61,2,61,2,60,2,63,2,59,2,63,2,58,2,65,2,57,2,65,2,56,2,67,2,54,3,67,3,53,2,69,3,51,2,71,2,50,3,72,2,48,3,74,2,46,3,76,2,44,3,78,3,41,3,80,3,38,4,82,4,35,3,86,3,32,4,88,4,28,4,92,5,23,4,96,6,17,5,101,8,6,8,108,14,1497,16,107,7,9,7,100,5,18,5,96,4,24,5,91,4,29,3,89,3,33,3,85,3,36,3,83,3,39,3,80,3,41,3,78,2,44,3,76,2,46,3,74,2,48,3,72,2,50,2,71,3,51,2,70,2,53,2,68,2,54,3,66,2,56,2,66,2,57,2,64,2,58,2,64,2,59,2,62,2,60,2,62,2,61,2,61,1,62,2,60,2,62,2,60,2,63,1,60,1,64,2,58,2,64,2,58,2,65,1,40,3,15,2,65,1,38,6,14,2,65,1,20,3,14,2,4,2,13,1,66,2,17,3,1,2,12,2,5,2,13,1,66,2,16,3,3,2,11,2,6,1,13,1,66,2,16,2,5,1,11,2,6,1,13,1,66,2,16,2,5,1,11,2,6,1,13,1,66,2,16,2,5,1,11,2,6,1,13,1,66,2,16,2,5,1,11,2,5,2,13,1,66,2,16,3,3,2,12,2,4,2,13,1,66,2,17,3,2,2,12,3,2,2,14,2,65,2,18,5,15,5,14,2,65,1,58,2,65,1,58,2,64,2,59,1,64,2,59,2,63,2,59,2,63,1,60,2,62,2,61,2,61,2,61,2,60,2,63,2,59,2,63,2,58,2,65,2,57,2,65,2,56,2,67,2,55,2,67,3,53,2,69,2,52,2,71,2,50,3,72,2,48,3,73,3,47,2,75,3,44,3,77,3,42,3,79,3,40,3,82,3,37,3,84,3,34,3,88,3,30,4,90,4,26,4,94,5,20,5,99,6,13,6,104,19,112,8,1503,11,110,20,103,6,15,5,98,4,22,5,93,4,27,4,89,4,31,3,87,3,34,4,84,3,37,3,81,3,40,3,79,3,42,3,77,3,45,2,75,3,47,2,74,2,48,3,72,2,50,3,70,2,52,2,69,3,53,2,68,2,55,2,66,2,56,2,66,2,57,2,64,2,58,2,64,2,59,2,62,2,60,2,62,2,61,1,62,2,61,2,60,2,62,2,60,2,63,1,60,2,63,2,59,1,64,2,59,1,64,2,38,6,14,2,64,2,18,5,14,2,3,2,14,2,65,1,16,8,12,2,5,2,13,2,65,1,15,4,4,2,11,1,6,2,13,2,65,1,14,4,5,2,11,1,7,1,13,2,65,1,14,4,6,1,11,1,7,1,13,2,65,1,14,4,6,1,11,1,6,2,13,2,65,1,14,4,5,2,11,2,5,2,13,2,65,1,15,4,4,2,11,2,4,2,14,2,65,1,16,4,2,2,13,3,1,3,14,2,64,2,18,6,15,4,16,1,64,2,59,1,64,2,59,2,63,2,59,2,63,1,60,2,62,2,61,1,62,2,61,2,61,2,61,2,60,2,63,2,59,2,63,2,58,2,65,2,57,2,65,2,56,2,67,2,55,2,67,2,54,2,69,2,52,3,70,2,51,2,71,3,49,2,73,3,47,2,75,3,45,2,77,3,43,3,78,3,41,2,81,3,38,3,83,4,35,3,86,3,32,4,88,4,28,4,92,5,23,4,96,6,17,5,101,8,7,7,108,15,1748,17,105,7,10,7,100,5,19,5,95,4,24,5,91,4,29,3,89,3,32,4,85,3,36,3,83,3,38,3,81,3,41,3,78,3,43,3,76,3,45,2,75,3,47,2,73,3,49,2,72,2,51,2,70,2,52,3,68,2,54,2,68,2,55,2,66,2,56,2,66,2,57,2,64,2,58,2,64,2,59,2,63,1,60,2,62,2,60,2,62,2,61,2,61,1,62,2,60,2,62,2,60,2,63,1,60,2,63,1,39,5,16,2,63,2,16,6,14,3,2,3,15,1,64,2,11,8,1,4,12,2,4,2,15,1,63,20,5,2,11,2,6,2,14,1,63,19,7,2,10,2,6,2,14,1,63,18,8,2,10,2,6,2,14,1,63,18,8,2,10,2,6,2,14,1,63,19,7,2,10,2,6,1,15,1,63,20,5,2,12,2,4,2,15,1,64,2,8,11,2,3,13,6,16,1,64,2,14,9,16,3,17,2,63,1,60,2,63,1,60,2,62,2,61,1,62,2,61,2,61,2,61,2,61,1,62,2,60,2,63,2,59,2,63,2,58,2,65,2,57,2,65,2,56,2,67,2,55,2,67,2,54,2,69,2,53,2,69,3,51,2,71,2,50,2,73,2,48,3,74,2,46,3,76,2,44,3,78,2,42,3,80,3,39,3,82,3,37,3,84,4,33,3,88,3,30,4,90,4,26,4,94,5,21,4,99,5,14,6,104,19,112,9,1753,12,110,21,102,6,15,5,98,4,22,5,93,4,27,3,90,4,31,3,87,3,34,3,85,3,37,3,82,2,40,3,80,2,42,3,78,2,44,3,76,2,46,3,74,2,48,3,72,3,49,2,71,3,51,2,70,2,52,3,68,2,54,2,68,2,55,2,66,2,56,2,66,2,57,2,64,2,58,2,64,2,59,1,64,2,59,2,62,2,60,2,62,2,61,1,62,2,61,2,61,1,62,2,61,1,62,2,38,5,17,2,63,1,9,13,15,3,2,2,16,2,61,21,1,5,12,2,5,2,15,2,62,15,8,4,11,2,6,1,15,2,63,1,22,3,10,2,7,1,15,2,63,1,23,2,10,2,7,1,15,2,63,1,23,2,11,1,7,1,15,2,63,1,23,2,11,2,5,2,15,2,62,12,12,3,11,3,3,3,15,2,62,18,4,4,14,6,16,2,61,26,37,2,62,2,61,1,62,2,61,2,61,2,61,2,61,1,62,2,60,2,63,1,60,2,63,2,59,2,63,2,58,2,65,2,57,2,65,2,56,2,67,2,55,2,67,2,54,2,69,2,53,2,69,3,51,2,71,2,50,3,72,2,48,3,73,3,47,2,75,3,45,2,77,3,43,2,79,3,40,3,81,3,38,3,84,3,35,3,86,3,32,4,89,3,28,4,92,4,24,4,96,5,18,5,101,7,8,8,106,16,1881,2,117,17,105,7,11,6,100,5,19,5,95,4,24,5,91,4,29,3,89,3,32,4,85,4,35,3,83,3,38,3,81,3,40,3,79,3,43,2,77,3,45,2,76,2,47,2,74,2,48,3,72,2,50,2,71,3,51,2,70,2,53,2,68,2,54,2,68,2,55,2,66,2,56,2,66,2,57,2,65,1,58,2,64,2,58,2,64,2,59,2,63,1,60,2,62,2,60,2,62,2,61,1,62,2,61,2,38,5,18,1,61,23,16,3,1,4,17,1,61,13,5,7,13,3,4,3,16,1,62,2,19,4,12,2,6,2,16,1,62,2,20,4,11,2,6,2,16,1,62,2,21,3,11,2,6,2,16,1,62,2,21,3,11,2,6,2,16,1,62,2,21,3,11,2,6,2,16,1,62,2,20,4,12,3,2,3,17,1,62,2,17,6,14,6,18,1,61,24,40,2,61,2,61,2,61,1,62,2,61,1,63,1,60,2,63,2,59,2,63,2,59,1,64,2,58,2,65,2,57,2,65,2,56,2,67,2,55,2,67,2,54,2,69,2,53,2,69,2,52,2,71,2,50,3,72,2,49,2,73,3,47,2,75,3,45,2,77,3,43,3,78,3,41,3,80,3,39,3,82,3,36,3,85,4,33,3,88,3,30,4,90,4,26,4,94,5,21,4,98,6,14,6,103,20,111,10,2005,13,109,9,3,9,102,5,16,5,98,4,22,5,93,4,26,4,91,3,30,4,87,3,34,3,85,3,36,3,83,3,39,3,80,3,41,3,78,3,43,3,76,3,45,2,75,3,47,2,74,2,49,2,72,2,50,3,70,2,52,2,70,2,53,2,68,2,54,2,68,2,55,2,66,2,56,2,66,2,57,1,66,1,58,2,64,2,58,2,64,2,59,1,64,2,59,2,63,1,60,2,62,2,60,2,39,3,20,2,60,19,20,7,18,2,60,23,15,2,5,2,17,2,61,1,15,7,13,2,7,1,17,2,61,1,17,6,12,2,7,2,16,2,61,1,19,4,12,2,7,2,16,2,61,1,19,4,12,2,7,1,17,2,61,1,18,5,12,3,5,2,17,2,61,1,16,7,13,3,2,4,17,2,60,24,16,5,19,2,60,21,43,2,60,2,63,1,60,2,63,1,60,2,63,2,59,2,63,2,58,2,65,1,58,2,65,2,57,2,65,2,56,2,67,2,55,2,67,2,54,2,69,2,53,2,69,2,52,2,71,2,51,2,71,3,49,2,73,2,48,2,75,2,46,3,76,2,44,3,78,2,42,3,80,2,40,3,82,3,37,3,84,3,35,3,86,4,31,3,90,3,28,4,92,4,24,4,96,5,18,5,101,7,9,7,106,16,2132,5,114,18,105,6,12,6,100,5,19,4,96,4,24,4,92,4,28,4,89,3,32,3,87,3,35,3,84,2,38,3,82,2,40,3,80,2,42,3,78,2,44,3,76,2,46,3,74,3,47,2,73,3,49,2,72,2,50,3,70,2,52,2,70,2,53,2,68,2,54,2,68,2,55,2,66,2,56,2,66,2,56,2,66,2,57,2,65,1,58,2,64,2,58,2,64,2,59,1,64,2,59,2,63,1,60,2,36,8,19,1,59,19,19,3,4,3,18,1,59,21,16,3,6,2,18,1,59,23,14,2,7,2,17,2,59,23,14,2,7,2,17,2,61,1,5,15,14,2,7,2,18,1,59,23,14,3,5,3,18,1,59,22,16,4,1,4,19,1,59,20,21,4,21,1,60,2,63,1,60,2,63,2,59,1,64,2,59,1,64,2,58,2,65,2,57,2,65,2,57,1,66,2,56,2,67,2,55,2,67,2,54,2,69,2,53,2,69,2,52,2,71,2,51,2,71,3,49,2,73,2,48,3,74,2,46,3,75,3,45,2,77,3,43,2,79,3,41,2,81,3,38,3,83,3,36,3,86,3,33,3,88,3,30,4,91,3,26,4,94,5,21,4,98,6,14,6,103,20,111,11,2255,14,109,8,5,8,102,5,16,5,98,4,22,4,94,4,26,4,91,3,30,4,87,4,33,3,85,3,36,3,83,3,38,3,81,3,41,2,79,3,43,2,78,2,45,2,76,2,46,3,74,2,48,2,73,3,49,2,72,2,50,3,70,2,52,2,70,2,53,2,68,2,54,2,68,2,55,1,68,2,55,2,66,2,56,2,66,2,57,1,66,2,57,2,65,1,58,2,64,2,58,2,64,2,59,1,36,8,20,2,59,1,34,4,4,3,19,2,59,1,34,3,6,2,19,2,59,1,34,2,8,2,18,1,59,11,25,2,8,2,18,1,59,11,25,2,7,2,19,2,58,9,27,3,5,3,19,2,59,1,35,9,20,2,59,1,39,3,22,2,59,1,64,2,59,1,64,2,58,2,65,1,58,2,65,2,57,2,65,2,56,2,67,1,56,2,67,2,55,2,67,2,54,2,69,2,53,2,69,2,52,2,71,2,51,2,71,2,50,2,73,2,48,3,74,2,47,2,75,3,45,2,77,3,43,2,79,3,41,3,80,3,39,3,82,3,37,3,84,3,34,3,87,4,31,3,90,3,28,4,92,5,23,4,96,5,18,5,101,6,10,7,106,16,2383,7,113,18,105,6,12,6,100,5,19,4,96,4,24,4,93,3,28,4,89,4,31,3,87,3,34,3,85,3,37,3,82,3,39,3,80,3,41,3,78,3,43,2,77,3,45,2,76,2,47,2,74,2,48,2,73,3,49,2,72,2,51,2,70,2,52,2,70,2,53,2,69,1,54,2,68,2,54,2,68,2,55,2,67,1,56,2,66,2,56,2,66,2,57,1,66,2,57,2,65,1,58,2,35,8,22,1,58,2,33,4,4,3,21,1,58,2,32,3,7,3,19,2,58,2,32,3,8,2,19,2,59,1,32,3,8,2,19,2,59,1,32,3,7,3,19,2,59,1,33,3,5,3,21,1,58,2,34,9,22,1,58,2,65,1,58,2,65,1,58,2,65,2,57,2,65,2,57,1,66,2,56,2,67,2,55,2,67,2,55,1,68,2,54,2,69,2,53,2,69,2,52,2,71,2,51,2,71,2,50,2,73,2,49,2,73,3,47,2,75,2,46,2,77,2,44,3,78,2,42,3,80,2,40,3,82,2,38,3,84,3,35,3,86,3,33,3,88,4,29,3,92,4,25,4,94,5,21,4,99,5,15,5,103,20,110,12,2507,14,109,7,6,8,102,5,16,5,98,4,22,4,95,3,26,4,91,3,30,3,89,3,33,3,86,3,35,3,84,2,38,3,82,2,40,3,80,2,42,3,78,2,44,3,76,3,45,2,76,2,47,2,74,2,48,3,72,3,49,2,72,2,51,2,70,2,52,2,70,2,53,1,70,2,53,2,68,2,54,2,68,2,55,1,68,2,55,2,67,1,56,2,66,2,56,2,66,2,57,1,34,9,23,2,57,1,32,5,3,4,22,2,57,1,31,4,7,3,21,1,58,2,30,3,9,2,21,1,58,2,30,3,9,2,21,1,58,2,30,4,7,3,21,1,58,2,31,4,5,3,22,2,57,2,32,10,23,2,57,1,66,2,57,1,66,2,57,1,66,2,56,2,67,1,56,2,67,2,55,2,67,2,54,2,69,1,54,2,69,2,53,2,69,2,52,2,71,2,51,2,71,2,50,2,73,2,49,2,73,3,47,2,75,2,46,3,76,2,44,3,77,3,43,2,79,3,41,2,81,3,39,2,83,3,36,3,85,3,34,3,88,3,31,3,90,4,27,4,93,4,23,4,97,4,18,5,101,6,10,7,106,17,116,2,2515,8,113,18,105,7,1,8,2,6,100,28,96,10,2,8,3,9,93,8,1,17,1,8,90,6,1,7,9,6,1,7,87,12,16,5,1,6,85,11,21,10,83,10,24,4,1,5,81,9,28,9,80,4,1,3,30,9,78,8,33,8,76,8,35,7,76,7,36,3,1,4,74,7,38,8,72,7,40,7,72,7,41,7,71,6,42,7,70,7,43,6,70,6,44,7,69,1,1,1,1,2,45,6,68,6,46,2,1,3,68,6,46,2,1,1,1,1,68,3,1,2,47,6,67,1,1,1,1,2,47,6,33,8,26,1,1,3,48,6,30,13,23,6,48,2,1,3,29,15,22,6,48,2,1,3,29,6,5,4,22,6,48,2,1,3,29,5,6,4,22,6,48,2,1,3,29,7,2,6,22,6,48,2,1,3,30,13,23,6,48,2,1,3,31,11,25,5,48,2,1,3,67,1,1,1,1,2,47,6,67,3,1,2,47,6,67,6,46,7,67,6,46,2,1,3,68,7,45,6,69,3,1,2,44,7,69,7,43,2,1,3,70,4,1,2,42,7,71,7,41,2,1,4,71,4,1,2,40,7,73,7,39,2,1,4,73,8,37,7,75,4,1,3,35,8,76,4,1,3,33,3,1,4,77,9,31,3,1,4,79,9,28,4,1,4,81,5,1,3,26,4,1,5,82,10,22,11,84,6,1,4,18,5,1,6,86,13,12,6,1,6,89,8,1,19,1,7,92,8,2,12,2,9,95,11,6,12,99,5,1,19,103,20,110,12,2760,13,109,20,104,25,99,8,13,8,95,7,4,11,4,7,92,6,2,18,3,6,89,6,2,23,2,5,87,5,2,26,2,5,85,5,1,12,7,11,2,4,83,5,1,9,14,9,2,4,81,5,1,8,19,8,1,4,80,4,1,7,22,8,1,4,78,4,1,7,25,6,2,4,76,4,1,6,28,6,2,3,76,3,1,6,30,6,1,4,74,4,1,5,32,6,1,3,74,3,1,6,33,5,1,4,72,4,1,5,35,5,1,3,72,3,1,5,36,5,1,4,70,4,1,5,37,5,1,3,70,3,1,5,38,5,1,3,70,3,1,5,39,4,2,3,69,3,1,4,40,5,1,3,68,3,2,4,40,5,1,3,68,3,1,5,41,4,1,3,34,5,29,3,1,5,41,4,1,3,31,11,26,3,1,4,42,4,2,2,30,5,4,4,25,3,1,4,42,4,2,2,30,3,8,2,25,3,1,4,42,4,2,3,29,3,8,2,25,3,1,4,42,4,2,3,29,4,6,3,25,3,1,4,42,4,2,2,31,11,26,3,1,4,42,4,2,2,32,8,28,3,1,5,41,4,2,2,68,3,1,5,41,4,1,3,68,3,2,4,41,4,1,3,69,3,1,4,40,5,1,3,69,3,1,5,39,4,2,3,69,3,1,5,38,5,1,3,70,4,1,4,38,5,1,3,71,3,1,5,36,5,2,3,71,3,2,5,35,5,1,3,72,4,1,5,34,5,2,3,73,3,2,5,32,6,1,4,73,4,1,6,31,5,2,3,75,4,1,6,29,6,1,3,77,3,2,6,26,7,1,4,77,4,2,6,24,7,1,4,79,4,2,7,20,8,2,3,81,4,2,8,16,9,2,4,82,4,2,10,10,10,2,5,84,5,1,28,2,5,86,5,2,24,3,5,88,6,2,20,3,5,91,7,3,14,4,6,94,8,15,7,98,10,6,11,101,22,107,16,3768,9,113,16,108,21,103,24,101,27,97,30,95,32,93,13,8,13,92,11,13,11,90,10,17,10,88,10,19,9,88,9,21,9,86,9,23,8,86,8,25,8,84,8,26,8,84,8,27,7,84,7,28,8,83,7,29,7,82,8,29,7,82,7,30,7,82,7,30,7,82,7,30,7,82,7,30,7,82,7,30,7,82,7,30,7,82,7,30,7,83,7,29,7,83,7,28,8,83,8,27,8,83,8,26,8,85,8,25,8,85,8,24,8,86,9,22,9,87,9,20,9,89,10,17,10,89,11,14,11,91,12,10,12,93,33,94,31,96,28,99,26,102,22,106,18,111,12,5407,10,114,15,109,19,106,21,104,23,102,25,100,27,98,12,5,11,98,10,9,10,96,9,12,9,96,8,14,9,95,8,15,8,94,8,16,8,94,8,17,7,94,7,18,7,94,7,18,8,93,7,18,8,93,7,18,7,94,8,17,7,94,8,17,7,94,8,16,8,95,8,14,9,95,9,13,8,97,9,10,10,97,11,7,10,99,27,99,26,101,24,103,22,106,19,108,16,112,12,6921,7,117,11,113,14,111,16,110,17,108,7,4,7,108,6,7,6,106,6,9,5,106,5,10,5,106,5,10,5,106,5,10,5,106,5,10,5,106,6,9,5,107,5,8,6,107,7,5,7,107,18,109,16,111,15,112,12,116,9,8182,6,119,9,116,11,114,5,3,4,114,4,5,3,114,3,6,3,114,3,6,3,114,3,6,3,114,4,4,4,115,11,115,10,118,7,8940,5,120,3,1,3,118,2,4,2,118,2,5,2,117,2,5,2,117,2,4,2,118,3,2,3,119,6,9193,4,121,3,1,3,118,2,4,2,118,2,5,1,118,2,5,1,118,2,4,2,119,2,2,3,120,5,9068,3,121,7,118,3,2,3,118,2,5,2,117,1,6,2,116,2,6,2,117,2,5,2,117,3,3,3,118,7,120,5,8940,7,118,4,1,4,116,3,5,2,116,2,6,3,115,2,7,2,115,2,7,2,115,2,7,2,115,3,5,3,115,4,3,3,117,8,120,4,8689,7,117,10,116,3,5,3,114,3,7,2,114,2,8,3,113,2,9,2,113,2,9,2,113,2,9,2,113,2,8,3,113,3,6,3,115,4,2,4,117,8,120,4,8437,7,117,10,115,4,5,3,114,2,8,3,112,3,9,2,112,2,10,2,112,2,11,2,111,2,11,2,111,2,11,1,112,2,10,2,113,2,8,3,113,3,6,3,115,4,2,5,116,8,8434,8,117,3,5,3,114,2,8,3,112,2,10,2,112,2,11,2,111,1,12,2,111,1,12,2,111,1,12,2,111,1,12,2,111,2,11,2,111,2,10,2,113,2,9,2,114,2,6,3,116,9,119,5,8309,8,117,11,114,3,6,3,113,3,8,3,112,2,10,2,112,2,10,3,111,2,11,2,111,2,11,2,111,2,11,2,111,2,10,3,111,3,9,2,113,3,7,3,114,4,3,4,116,9,119,5,4214]};
const model_monument={size:[72,72,126],voxels:[0,10370,4,60,4,74,1,70,2,70,2,70,2,70,1,4320,1,70,2,70,2,70,2,70,1,74,4,60,4,4,4,60,4,74,1,70,2,70,2,70,2,70,1,4320,1,70,2,70,2,70,2,70,1,74,4,60,4,4,4,60,4,74,1,70,2,70,2,70,2,70,1,4320,1,70,2,70,2,70,2,70,1,74,4,60,4,4,4,60,4,74,1,70,2,70,2,70,2,70,1,4320,1,70,2,70,2,70,2,70,1,74,4,60,4,10372,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,70,1,359,1,71,65,7,65,7,65,8,64,8,64,8,64,8,64,7,65,7,1,8,56,7,1,8,56,7,1,8,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,2,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,2,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,2,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,2,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,8,1,7,56,8,1,7,56,8,1,7,65,7,64,8,64,8,64,8,64,8,65,7,65,7,65,71,1,137,4,68,4,68,4,68,4,2,1,70,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,1,503,1,1,63,7,1,1,63,9,63,9,63,9,63,9,63,9,63,9,63,7,1,8,56,7,1,8,56,16,56,16,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,16,56,16,56,8,1,7,56,7,2,7,56,7,1,8,56,16,56,16,56,16,56,16,56,16,56,8,1,7,56,8,1,7,63,9,63,9,63,9,63,9,63,9,63,9,63,1,1,7,63,1,1,503,1,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,1,578,62,10,62,10,62,10,62,10,62,10,62,10,62,10,62,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,62,10,62,10,62,10,62,10,62,10,62,10,62,10,62,1157,61,11,61,11,61,11,61,11,61,11,61,11,61,11,61,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,61,11,61,11,61,11,61,11,61,11,61,11,61,11,61,1159,60,12,60,12,60,12,60,12,60,12,60,12,60,12,60,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,60,12,60,12,60,12,60,12,60,12,60,12,60,12,60,1161,59,13,59,13,59,13,59,13,59,13,59,13,59,13,59,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,59,13,59,13,59,13,59,13,59,13,59,13,59,13,59,1163,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,1093,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,1095,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,1,38,9,63,9,63,9,63,9,63,9,24,1,38,9,24,1,38,9,7,1,16,1,38,9,7,1,16,1,38,9,63,9,63,9,63,9,63,9,24,1,38,9,24,1,38,9,7,1,16,1,38,9,7,1,16,1,38,9,63,9,63,9,63,9,63,9,24,1,38,9,24,1,38,9,7,1,16,1,38,9,7,1,16,1,38,9,63,9,63,9,63,9,63,9,24,1,38,9,24,1,38,9,7,1,16,1,38,17,16,1,38,17,55,17,55,17,55,17,55,17,16,1,38,17,16,2,4,4,4,4,4,4,4,4,4,18,1168,9,6,2,6,2,6,2,6,2,6,4,2,3,16,8,47,1,16,8,47,1,16,8,64,8,64,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,24,1,38,9,7,1,16,1,38,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,24,1,38,9,7,1,16,1,38,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,24,1,38,9,7,1,16,1,38,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,24,1,38,9,7,1,16,1,38,17,55,17,55,17,55,17,55,17,55,17,55,17,16,1,6,2,6,2,6,2,6,2,6,17,1168,9,6,2,6,2,6,2,6,2,6,4,2,3,16,8,47,1,16,8,47,1,16,8,64,8,64,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,4,2,3,16,8,47,1,16,8,47,1,16,8,64,8,64,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,4,2,3,16,8,47,1,16,8,47,1,16,8,64,8,64,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,4,2,3,16,8,47,1,16,8,47,1,16,8,64,8,64,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,4,2,3,16,8,47,1,16,8,47,1,16,8,64,8,64,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,4,2,11,55,4,2,11,55,4,2,11,55,4,2,11,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,15,9,47,1,15,9,47,1,15,9,47,1,15,9,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,4,2,11,55,4,2,11,55,4,2,11,55,4,2,11,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,15,9,47,1,16,8,47,1,16,8,47,1,15,9,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,4,2,11,55,4,2,11,55,4,2,11,55,4,2,11,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,15,9,47,1,16,8,47,1,16,8,47,1,15,9,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,4,2,11,55,4,2,11,55,4,2,11,55,4,2,11,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,15,9,47,1,15,9,47,1,15,9,47,1,15,9,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,4,2,11,55,4,2,11,55,4,2,11,55,4,2,11,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,17,55,17,55,17,55,17,55,4,2,11,55,4,2,11,55,4,2,11,55,4,2,11,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,7,1,16,8,31,9,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,7,1,16,8,31,9,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,7,1,16,16,23,9,7,1,16,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,2,4,2,31,9,7,1,16,1,6,1,31,9,7,1,16,1,6,1,31,9,63,9,63,9,63,9,63,9,24,1,6,1,31,9,24,1,6,1,31,9,7,1,16,1,6,1,31,9,7,1,16,1,6,1,31,9,63,9,63,9,63,9,63,9,24,1,6,1,31,9,24,1,6,1,31,9,7,1,16,1,7,1,6,1,23,9,7,1,16,1,38,9,63,9,63,9,63,9,63,9,24,1,38,9,24,2,6,1,6,1,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,7,1,16,1,6,1,31,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,24,1,6,1,31,9,7,1,16,1,6,1,31,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,24,1,6,1,31,9,7,1,16,1,7,1,6,1,23,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,24,1,7,1,6,1,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,2,4,2,31,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,24,1,6,1,23,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,32,1,6,1,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,24,1,6,1,23,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,32,1,6,1,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,9,6,2,6,2,6,2,6,2,6,9,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,2,4,2,31,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,24,1,6,1,23,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,32,1,6,1,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,10,4,4,4,4,4,4,4,4,4,10,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,7,1,16,48,24,48,24,48,24,48,24,48,7,1,16,48,7,1,16,48,7,1,16,8,31,9,7,1,16,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,24,8,31,9,7,1,16,8,31,9,7,1,55,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,24,1,6,1,23,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,7,1,24,1,6,1,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,11,2,6,2,6,2,6,2,6,2,11,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,8,47,1,16,48,7,1,16,48,7,1,16,48,7,1,16,48,24,48,24,48,7,1,16,48,7,1,16,48,7,1,16,48,7,1,16,8,31,9,7,1,16,8,31,9,7,1,16,8,31,9,24,8,31,9,24,8,31,9,7,1,16,8,31,9,7,1,16,2,4,2,31,9,7,1,55,9,7,1,55,9,7,1,55,9,7,1,55,9,63,9,63,9,7,1,55,9,7,1,55,9,7,1,55,9,7,1,55,9,7,1,55,9,7,1,55,9,63,9,63,9,7,1,55,9,7,1,55,9,7,1,24,1,6,1,23,9,7,1,55,9,7,1,55,9,7,1,55,9,63,9,63,9,7,1,55,9,7,1,24,1,6,1,23,9,7,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,8,31,17,16,8,31,17,16,8,31,17,16,8,31,17,16,8,31,17,16,8,31,17,16,8,31,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,24,1,6,1,23,17,55,17,55,17,55,17,55,17,55,17,55,17,24,1,6,1,23,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,34,4,4,4,4,4,2,16,32,23,1,16,32,40,32,40,32,40,32,40,32,23,1,16,32,23,1,8,48,8,2,4,2,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,2,4,2,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,15,1,55,1,15,1,55,1,71,1,71,1,71,1,71,1,15,1,55,1,15,1,24,1,6,1,23,1,15,1,55,1,15,1,55,1,71,1,71,1,71,1,71,1,15,1,24,1,6,1,23,1,15,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,48,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,608,33,6,2,6,2,6,1,16,32,40,32,40,32,40,32,40,32,40,32,40,32,23,1,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,15,1,55,1,71,1,71,1,71,1,71,1,71,1,71,1,15,1,24,1,6,1,23,1,15,1,55,1,71,1,71,1,71,1,71,1,71,1,40,1,6,1,23,1,15,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,48,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,546,4,4,4,4,4,42,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,48,8,2,4,2,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,2,4,2,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,1,6,1,23,1,71,1,71,1,71,1,71,1,71,1,71,1,40,1,6,1,23,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,48,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,546,1,2,1,4,1,2,1,4,1,2,1,42,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,1,6,1,23,1,71,1,71,1,71,1,71,1,71,1,71,1,40,1,6,1,23,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,48,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,546,1,2,1,4,1,2,1,4,1,2,1,42,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,48,8,2,4,2,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,2,4,2,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,1,6,1,23,1,71,1,71,1,71,1,71,1,71,1,71,1,40,1,6,1,23,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,48,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,546,4,4,4,4,4,42,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,2,4,2,23,1,47,1,23,1,71,1,71,1,71,1,71,1,47,1,23,1,40,1,6,1,23,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,48,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,608,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,48,8,2,4,2,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,2,4,2,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,3,2,3,23,1,47,1,23,1,47,1,23,1,71,1,71,1,47,1,23,1,47,1,23,1,40,1,6,1,23,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,48,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,608,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,8,48,8,8,16,40,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,16,8,31,1,8,8,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,71,1,71,1,71,1,71,1,71,1,71,1,39,10,22,1,39,10,22,1,39,10,22,1,39,10,22,1,39,10,22,1,39,10,22,1,39,10,22,1,39,10,22,1,39,10,22,1,39,10,22,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,40,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,32,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,2,4,42,8,2,4,2,8,1,7,40,8,1,6,1,16,40,32,40,32,40,32,40,24,1,7,40,15,1,8,2,4,42,8,1,6,1,16,40,8,1,6,1,16,24,15,1,8,1,6,1,16,24,15,1,8,1,23,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,8,1,6,1,16,2,4,18,15,1,8,1,6,1,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,41,6,24,1,41,6,24,1,41,6,24,1,41,6,24,1,41,6,24,1,41,6,24,1,71,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,48,24,40,2,4,2,7,1,71,1,344,1,14,1,56,2,4,4,4,2,32,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,1,6,41,8,1,6,1,16,40,32,40,32,40,32,40,32,40,32,40,24,1,6,41,15,1,16,40,8,1,6,1,16,24,15,1,8,1,23,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,8,1,6,1,55,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,71,17,55,17,55,17,55,17,55,17,55,17,48,24,55,17,40,1,6,1,7,1,495,2,6,1,32,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,41,31,41,31,41,31,41,31,40,32,40,32,32,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,2,4,18,15,1,71,15,57,15,57,15,57,15,57,15,57,15,57,15,57,15,57,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,71,17,55,17,55,17,55,17,55,17,48,24,55,17,55,11,4,2,592,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,41,31,41,31,41,31,41,31,40,32,40,32,32,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,71,14,58,14,58,14,58,14,58,14,58,14,58,14,58,14,58,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,71,17,55,17,55,17,55,17,48,24,55,17,55,17,55,11,4,2,592,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,41,31,41,31,41,31,41,31,40,32,40,32,32,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,2,4,18,15,1,71,13,59,13,59,13,59,13,59,13,59,13,59,13,59,13,59,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,71,17,55,17,55,17,48,24,55,17,55,17,55,17,55,11,4,2,592,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,41,31,41,31,41,31,41,31,40,32,40,32,32,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,71,12,60,12,60,12,60,12,60,12,60,12,60,12,60,12,60,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,71,17,55,17,48,24,55,17,55,17,55,17,55,17,55,11,4,2,592,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,2,4,18,15,1,71,11,61,11,61,11,61,11,61,11,61,11,61,11,61,11,61,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,71,17,48,24,55,17,55,17,55,17,55,17,55,17,55,17,592,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,32,40,32,40,32,40,32,40,32,40,32,40,32,40,32,32,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,32,24,15,1,71,10,62,10,62,10,62,10,62,10,62,10,62,10,62,10,62,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,40,8,23,1,64,24,55,17,55,17,55,17,55,17,55,17,55,17,55,17,592,2,4,2,64,1,6,1,352,1,6,1,64,1,6,1,64,31,41,31,41,31,41,31,41,31,41,31,41,31,41,31,33,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,10,62,11,32,4,25,12,31,4,25,13,30,4,25,14,29,4,25,15,57,16,49,24,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,592,1,6,1,496,1,6,1,64,19,2,9,42,19,2,9,42,19,2,9,42,19,2,9,42,30,42,30,42,30,42,30,34,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,71,4,2,3,63,4,2,3,63,4,2,3,63,4,2,3,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,10,62,11,32,4,25,12,31,4,25,13,30,4,25,14,29,4,25,15,50,23,56,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,19,2,8,43,19,2,8,43,19,2,8,43,19,2,8,43,29,43,29,43,29,43,29,35,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,71,4,2,3,63,4,2,3,63,4,2,3,63,4,2,3,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,10,62,11,61,12,60,13,59,14,51,22,57,16,56,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,19,2,7,44,19,2,7,44,19,2,7,44,19,2,7,44,28,44,28,44,28,44,28,36,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,71,4,2,3,63,4,2,3,63,4,2,3,63,4,2,3,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,10,62,11,61,12,60,13,52,21,58,15,57,16,56,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,19,2,6,45,19,2,6,45,19,2,6,45,19,2,6,45,27,45,27,45,27,45,27,37,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,71,4,2,3,63,4,2,3,63,4,2,3,63,4,2,3,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,10,62,11,61,12,53,20,59,14,58,15,57,16,56,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,19,2,5,46,19,2,5,46,19,2,5,46,19,2,5,46,26,46,26,46,26,46,26,38,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,71,4,2,3,63,4,2,3,63,4,2,3,63,4,2,3,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,10,62,11,54,19,60,13,59,14,58,15,57,16,56,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,19,2,4,47,19,2,4,47,19,2,4,47,19,2,4,47,25,47,25,47,25,47,25,39,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,48,3,2,3,15,1,71,4,2,3,63,4,2,3,63,4,2,3,63,4,2,3,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,10,55,18,61,12,60,13,59,14,58,15,57,16,56,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,40,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,56,17,62,11,61,12,60,13,59,14,58,15,57,16,56,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,1168,23,49,23,49,23,49,23,49,23,49,23,49,23,49,23,41,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,1160,22,50,22,50,22,50,22,50,22,50,22,50,22,50,22,42,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,1160,21,51,21,51,21,51,21,51,21,51,21,51,21,51,21,43,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,1160,20,52,20,52,20,52,20,52,20,52,20,52,20,52,20,44,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,1160,19,53,19,53,19,53,19,53,19,53,19,53,19,53,19,45,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,1160,18,54,18,54,18,54,18,54,18,54,18,54,18,54,18,46,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,1160,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,47,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,1160,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,56,1,7,40,32,40,32,40,32,40,32,40,32,40,32,40,24,1,7,40,32,40,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,48,8,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,25,47,25,47,25,47,25,47,25,47,25,47,25,47,25,616,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,19,4,2,47,17,7,1,47,17,55,17,55,17,55,17,55,17,7,1,47,19,4,2,616,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,71,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,18,6,1,47,17,55,17,55,17,55,17,55,17,55,17,55,18,6,1,616,8,64,8,64,9,63,9,63,9,63,9,63,8,64,8,24,10,4,2,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,71,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,624,8,64,8,64,9,63,9,63,9,63,9,63,8,64,8,24,10,4,2,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,71,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,624,8,64,8,64,9,63,9,63,9,63,9,63,8,64,8,24,10,4,2,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,71,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,624,8,64,8,64,9,63,9,63,9,63,9,63,8,64,8,24,10,4,2,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,71,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,624,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,16,24,8,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,24,32,15,1,71,1,64,8,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,624,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,16,23,9,24,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,32,1,6,1,24,8,32,8,24,8,32,8,24,8,32,8,24,8,32,8,24,8,32,8,24,8,32,8,24,8,32,8,24,48,24,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,55,17,624,2,4,2,64,1,6,1,352,1,6,1,64,1,6,1,24,2,4,4,4,27,6,1,24,1,15,25,6,1,40,23,49,23,49,23,49,23,33,1,15,25,6,1,24,1,15,25,6,1,24,1,7,50,4,2,8,1,7,48,7,1,16,48,24,48,24,48,24,48,16,1,7,48,7,1,8,1,7,48,7,1,8,1,62,1,8,1,62,1,296,1,30,1,31,1,8,2,4,4,4,4,4,4,4,2,31,1,56,8,7,1,56,8,7,1,56,8,64,8,64,8,64,8,64,8,7,1,56,8,7,1,56,8,7,1,56,8,7,1,56,7,65,7,65,7,65,7,65,8,7,1,56,8,7,1,55,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,7,1,55,11,4,2,624,1,6,1,496,1,6,1,24,1,6,2,6,26,6,1,40,24,48,24,48,24,48,24,48,24,48,24,32,1,15,25,6,1,24,1,7,49,6,1,16,48,24,48,24,48,24,48,24,48,24,48,16,1,7,48,7,1,8,1,62,1,440,1,6,2,6,2,6,2,6,1,31,1,56,8,7,1,56,8,64,8,64,8,64,8,64,8,64,8,64,8,7,1,56,8,7,1,56,8,64,8,64,8,64,8,64,8,64,8,64,8,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,9,7,1,55,9,7,1,55,9,63,9,63,9,63,9,63,9,63,9,63,10,6,1,1176,24,48,24,48,23,49,23,49,23,49,23,49,24,48,24,40,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,640,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,7,65,7,65,7,65,7,65,8,64,8,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,1184,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,40,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,640,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,1184,24,48,24,48,23,49,23,49,23,49,23,49,24,48,24,40,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,640,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,7,65,7,65,7,65,7,65,8,64,8,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,1184,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,40,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,640,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,1184,24,48,24,48,23,49,23,49,23,49,23,49,24,48,24,40,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,640,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,7,65,7,65,7,65,7,65,8,64,8,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,1184,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,40,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,640,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,63,9,1184,2,4,4,4,4,4,2,48,1,22,1,336,1,22,1,48,1,22,1,40,10,4,34,24,48,24,48,24,48,24,48,24,48,24,48,24,48,568,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,7,65,7,65,7,65,7,65,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,1184,1,6,2,6,2,6,1,480,1,22,1,40,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,64,8,64,8,352,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,1752,10,4,5,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,7,65,7,65,7,65,7,65,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,1752,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,1752,10,4,5,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,7,65,7,65,7,65,7,65,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,1752,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,1752,10,4,5,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,24,19,2,14,2,11,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,7,65,7,65,7,65,7,65,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,56,11,2,3,1176,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,1176,2,4,2,64,1,6,1,352,1,6,1,64,1,6,1,64,1,6,3,4,4,4,4,4,4,4,4,4,2,71,1,26,4,68,4,68,4,68,4,113,1,31,3,4,4,4,4,4,4,4,2,7,1,64,1,6,1,64,1,6,1,352,1,6,1,64,1,6,1,64,1,6,1,64,1,6,1,352,1,6,1,64,1,6,1,64,1,6,1,64,1,6,1,352,1,6,1,64,1,6,1,56,2,4,2,7,1,56,1,14,1,344,1,14,1,56,1,7,2,4,2,56,1,6,9,56,1,6,9,64,8,64,8,64,8,64,8,56,1,6,9,56,1,6,9,1176,1,6,1,496,1,6,1,64,1,6,2,6,2,6,2,6,2,6,2,6,1,463,2,6,2,6,2,6,2,6,1,7,1,63,2,6,1,496,1,6,1,64,1,6,1,496,1,6,1,64,1,6,1,496,1,6,1,56,1,6,1,7,1,488,1,7,1,6,1,56,1,6,9,64,8,64,8,64,8,64,8,64,8,64,8,56,1,6,9,1752,1,6,1,503,1,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,208,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,208,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,208,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,208,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,208,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,208,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,1,6,1,503,1,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,2,4,2,71,1,359,1,71,1,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,3,2,3,71,1,71,1,215,1,71,1,71,1,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1679,10,62,10,62,10,62,10,62,10,62,10,62,10,62,10,62,10,2334,10,62,10,62,10,62,10,62,10,62,10,62,10,62,10,62,10,62,10,1752,6,66,6,66,6,66,6,66,6,66,6,2554,6,66,6,66,6,66,6,66,6,66,6,1825,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1752,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,2408,8,64,8,64,8,64,8,64,8,64,8,64,8,64,8,1898,4,68,4,68,4,68,4,2700,4,68,4,68,4,68,4,2044,4,68,4,68,4,68,4,2700,4,68,4,68,4,68,4,21474]};