digiMuseum 🖼️

Overview

DigiMuseum is an interactive 3D visualization that transforms static online museum collections into a 3D gallery environment to create a more engaging online museum visit experience. This project is based on the online collection of the Whitney Museum of American Art.

Overview

3D Navigation

Users can navigate through the environment with WASD keys, the intension for assigning these keys is to create a video game like 3D environment.

Navigation

Flying Overview

The visualization loads 3000 artworks at a time, which users can fly above the environment to glance at the whole loaded collection.

Flying

Artwork Info

The visualization has a simple collision detection system built in, which it measures the distance between the camera and an artwork. The information about an artwork will show up below the artwork when the camera gets close to it.

Info

Code

master.cpp

#include "ofMain.h"
#include "ofApp.h"

//========================================================================
int master( ){
	ofSetupOpenGL(1024,768,OF_WINDOW);			// <-------- setup the GL context

	// this kicks off the running of my app
	// can be OF_WINDOW or OF_FULLSCREEN
	// pass in width and height too:
	ofRunApp(new ofApp());

}

ofApp.cpp

#include "ofApp.h"


//--------------------------------------------------------------
void ofApp::setup(){

    ofSetLogLevel("ofxCsv", OF_LOG_VERBOSE);
    // Load a CSV File.
    if(csv.load("data.csv")) {
        //csv.trim(); // Trim leading/trailing whitespace from non-quoted fields.

        // Like with C++ vectors, the index operator is a quick way to grab row
        // & col data, however this will cause a crash if the row or col doesn't
        // exist, ie. the file didn't load.
        for(int i = 0; i <11669;i++){

            artistArr[i] = csv[i][2];
            titleArr[i] = csv[i][3];
            dateArr[i] = csv[i][4];
            mediumArr[i] = csv[i][5];
            dimensionArr[i] = csv[i][6];
            creditArr[i] = csv[i][7];
            accessionArr[i]= csv[i][8];
            copyrightArr[i]= csv[i][9];

            //debug
            //ofLog() << artistArr[i];
        }

    }
    ofEnableDepthTest();
    ofSetVerticalSync(true);
    imgload.setup();

}

//--------------------------------------------------------------
void ofApp::update(){

    counter = 128 + 127 * cos(0.25 * PI/interval * (interval - ofGetElapsedTimef()*1000));
    //counter = ofGetElapsedTimef()*0.1;
    r = ofMap(counter, 0, 255,234,162);
    g = ofMap(counter, 0, 255,162,254);
    b = ofMap(counter, 0, 255,254,255);
    r2 = ofMap(counter, 0, 255,162,234);
    g2 = ofMap(counter, 0, 255,254,162);
    b2 = ofMap(counter, 0, 255,255,254);

    //debug
    //cout << counter <<endl;

}

//--------------------------------------------------------------
void ofApp::draw(){
    imgload.draw();
    if(trippy == true){
        ofColor colorOne(r, g, b);
        ofColor colorTwo(r2, g2, b2);
        ofBackgroundGradient(colorOne, colorTwo, OF_GRADIENT_BAR);
    }else if(trippy == false){
        ofColor colorOne(255, 255, 255);
        ofColor colorTwo(255, 255, 255);
        ofBackgroundGradient(colorOne, colorTwo, OF_GRADIENT_BAR);
    }

    cam.begin();

    for(int i =0; i <imgload.setNum; i++){

        if(imgload.zArr[i]>= cam.pos.z-limNum
           && imgload.zArr[i] <= cam.pos.z+limNum
           && imgload.xArr[i]>= cam.pos.x-limNum
           && imgload.xArr[i] <= cam.pos.x+limNum){

            if(trippy==true)ofRotateZ(ofGetElapsedTimef()*0.1);
            if(imgload.zArr[i]>= cam.pos.z-50
               && imgload.zArr[i] <= cam.pos.z+50
               && imgload.xArr[i]>= cam.pos.x-50
               && imgload.xArr[i] <= cam.pos.x+50 && trippy==false){
            ofSetColor(0);
            ofDrawBitmapString(artistArr[i], imgload.xArr[i], -2, imgload.zArr[i]);
            ofDrawBitmapString(titleArr[i], imgload.xArr[i], -3, imgload.zArr[i]);
            ofDrawBitmapString(dateArr[i], imgload.xArr[i], -4, imgload.zArr[i]);
            ofDrawBitmapString(mediumArr[i], imgload.xArr[i], -5, imgload.zArr[i]);
            //ofDrawBitmapString(dimensionArr[i], imgload.xArr[i], -6, imgload.zArr[i]);
            //ofDrawBitmapString(creditArr[i], imgload.xArr[i], -7, imgload.zArr[i]);
            //ofDrawBitmapString(accessionArr[i], imgload.xArr[i], -8, imgload.zArr[i]);
            //ofDrawBitmapString(copyrightArr[i], imgload.xArr[i], -9, imgload.zArr[i]);
            ofSetColor(255);
            }
            imgload.img[i].draw(imgload.xArr[i],0,imgload.zArr[i],imgload.size,imgload.size);

        }
    }


    //debug
    //cout << cam.pos <<endl;

    cam.end();

    drawtext.draw();






}

//--------------------------------------------------------------
void ofApp::keyPressed(int key){

    if(key == OF_KEY_SHIFT){
        if(trippy == true)trippy = false;
        else if (trippy == false) trippy = true;
    }

    if(key == OF_KEY_CONTROL){
        if(drawtext.conInfo == true)drawtext.conInfo = false;
        else if (drawtext.conInfo == false) drawtext.conInfo = true;

    }

    if(key == OF_KEY_RETURN)ofToggleFullscreen();

}

//--------------------------------------------------------------
void ofApp::keyReleased(int key){

}

//--------------------------------------------------------------
void ofApp::mouseMoved(int x, int y ){

}

//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mousePressed(ofMouseEventArgs &mouse){

    cam.toggleControl();
}

//--------------------------------------------------------------
void ofApp::mouseReleased(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mouseEntered(int x, int y){

}

//--------------------------------------------------------------
void ofApp::mouseExited(int x, int y){

}

//--------------------------------------------------------------
void ofApp::windowResized(int w, int h){

}

//--------------------------------------------------------------
void ofApp::gotMessage(ofMessage msg){

}

//--------------------------------------------------------------
void ofApp::dragEvent(ofDragInfo dragInfo){

}

ofApp.h

#pragma once

#include "ofMain.h"
#include "ofxFirstPersonCamera.h"
#include "ofxCsv.h"
#include "imgLoader.h"
#include "text.h"

class ofApp : public ofBaseApp{

public:
    void setup();
    void update();
    void draw();

    void drawText();
    void keyPressed(int key);
    void keyReleased(int key);
    void mouseMoved(int x, int y );
    void mouseDragged(int x, int y, int button);
    void mousePressed(ofMouseEventArgs &mouse);
    void mouseReleased(int x, int y, int button);
    void mouseEntered(int x, int y);
    void mouseExited(int x, int y);
    void windowResized(int w, int h);
    void dragEvent(ofDragInfo dragInfo);
    void gotMessage(ofMessage msg);

    //addon
    ofxFirstPersonCamera cam;
     ofxCsv csv;

    //variables
    bool trippy = false;
    bool fullScreen = true;
    float r,g,b,r2,g2,b2,counter;
    int interval = 1;
    int limNum = 700;


    std::array<string,11669>artistArr;
    std::array<string,11669>titleArr;
    std::array<string,11669>dateArr;
    std::array<string,11669>mediumArr;
    std::array<string,11669>dimensionArr;
    std::array<string,11669>creditArr;
    std::array<string,11669>accessionArr;
    std::array<string,11669>copyrightArr;


    //class
    imgLoader imgload;
    text drawtext;

};

imgLoader.cpp

#include "imgLoader.h"

void imgLoader::setup(){



    for(int i =0; i <maxNum; i++){

        //xArr[i]=((i*size)%6000)*ofRandomf();

        xArr[i]=ofRandom(-2200,2200);
        zArr[i]=ofRandom(-4700,4700);


        img[i].load("asset/"+ofToString(indexArr[i]) + ".jpg");
        fbo.allocate(100,100,GL_COLOR_BUFFER_BIT); //or GL_RED if you are using the programmable renderer
        fbo.begin();
        path.draw();
        fbo.end();

        img[i].getTexture().setAlphaMask(fbo.getTexture());
    }

}


void imgLoader::update(){


}

void imgLoader::draw(){



    //debug
    //cout << var << endl;

}

imgLoader.h

#ifndef imgLoader_h
#define imgLoader_h

#include "ofMain.h"

#endif /* imgLoader_h */

class imgLoader{
public:
    void setup();
    void update();
    void draw();

    //variables
    int maxNum = 11669;
    int setNum = 11669;
    int size =20;
    //float xArr[18154];
    //float zArr[18154];
    std::array<float,11669>xArr;
    std::array<float,11669>zArr;
    std::array<int,11669>indexArr= {102386,102387,102388,102389,102390,102391,102392,102394,102395,102396,102397,102398,102399,102401,102402,102403,102404,102405,102407,102408,102409,102410,102412,102413,102414,102416,102417,102424,102425,102426,102427,102428,102429,102430,102431,102432,102433,102434,102435,102436,102437,102438,102439,102440,102441,102442,102443,102444,102445,102446,102447,102449,102450,102452,102454,102455,102456,102461,102492,102493,102494,102495,102496,102497,102498,102499,102500,102501,102502,102503,102504,102505,102506,102507,102508,102509,102510,102511,102512,102513,102514,102515,102516,102517,102518,102519,102520,102521,102522,102523,102524,102525,102526,102527,102528,102557,102559,102560,102561,102562,102563,102564,102565,102566,102567,102568,102569,102570,102572,102574,102576,102578,102580,102582,102584,102586,102588,102590,102592,102594,102596,102597,102598,102599,102600,102601,102602,102603,102607,102614,102615,102616,102617,102618,102619,102620,102621,102622,102623,102624,102625,102626,102628,102630,102631,102632,102633,102634,102635,102636,102637,102638,102639,102640,102641,102642,102643,102644,102645,102646,102647,102648,102649,102650,102652,102653,102654,102656,102657,102658,102659,102660,102661,102667,102668,102669,102670,102671,102672,102673,102674,102675,102676,102677,102678,102679,102680,102681,102682,102683,102684,102685,102686,102687,102688,102689,102690,102691,102692,102693,102694,102695,102697,102698,102699,102700,102702,102704,102720,102721,102722,102723,102724,102725,102726,102727,102728,102729,102730,102731,102732,102733,102734,102738,102740,102741,102743,102744,102745,102746,102747,102748,102749,102750,102751,102752,102753,102758,102759,102760,102761,102762,102763,102765,102766,102767,102768,102769,102770,102771,102772,102773,102774,102775,102788,102789,102790,102791,102792,102793,102794,102798,102799,102803,102811,102812,102813,102814,102815,102816,102817,102818,102820,102821,102822,102823,102824,102825,102826,102827,102828,102829,102830,102831,102833,102834,102835,102836,102837,102838,102839,102841,102842,102843,102844,102845,102847,102849,102851,102852,102853,102854,102855,102856,102857,102858,102859,102872,102873,102874,102875,102884,102886,102887,102888,102889,102892,102894,102895,102896,102897,102898,102899,102900,102901,102902,102903,102904,102905,102906,102908,102909,102910,102911,102912,102913,102916,102918,102921,102922,102925,102926,102930,102931,102967,102968,102969,102970,102971,102973,102974,102975,102976,102977,102978,102981,102982,102983,102984,102985,102986,102987,102988,102989,102990,102991,102992,102993,102994,102995,102996,102997,102998,102999,103000,103001,103002,103003,103004,103005,103006,103007,103015,103016,103017,103018,103019,103023,103024,103027,103030,103033,103036,103039,103042,103048,103049,103050,103054,103055,103057,103059,103121,103122,103123,103124,103125,103126,104699,104702,104705,104707,104710,104715,104718,105196,105198,105199,105201,105202,105203,105204,105205,105206,105207,105208,105209,105211,105212,105213,105214,105215,105216,105217,105218,105219,105220,105221,105222,105223,105232,105233,105236,105237,105238,105240,105241,105242,105244,105245,105246,105247,105248,105249,105250,105251,105252,105253,105254,105255,105271,105302,105303,105304,105305,105306,105308,105310,105311,105313,105314,105315,105316,105317,105318,105319,105320,105321,105322,105323,105324,105325,105326,105327,105328,105329,105330,105331,105335,105337,105338,105339,105340,105341,105342,105343,105345,105346,105347,105348,105349,105350,105351,105353,105354,105355,105358,105359,105360,105361,105362,105364,105367,105368,105369,105370,105371,105393,105394,105395,105396,105397,105399,105400,105401,105402,105403,105404,105407,105408,105409,105410,105411,105412,105414,105416,105417,105418,105419,105420,105421,105422,105424,105429,105431,105442,105445,105463,105464,105465,105466,105467,105470,105471,105472,105473,105474,105475,105476,105477,105478,105479,105480,105481,105482,105483,105484,105485,105486,105487,105488,105489,105490,105491,105492,105493,105494,105495,105496,105497,105498,105499,105500,105501,105502,105503,105504,105506,105507,105508,105509,105510,105522,105523,105525,105531,105533,105535,105537,105539,105541,105543,105545,105547,105549,105551,105552,105554,105557,105560,105561,105584,105585,105586,105587,105588,105589,105590,105591,105593,105594,105595,105596,105597,105598,105612,105644,105666,105667,105668,105873,105874,105875,105876,105877,105878,105879,105880,105881,105882,105883,105885,105886,105887,105888,105889,105890,105891,105894,105898,105899,105902,105903,105904,105907,105908,105909,105910,105911,105912,105926,105927,105928,105929,105930,105931,105932,105933,105934,105935,105936,105937,105938,105939,105940,105941,105942,105943,105944,105945,105946,105947,105948,105949,105950,105951,105953,105954,105955,105956,105957,105958,105960,105961,105962,105963,105964,105965,105966,105967,105968,105969,105970,105971,105972,105973,105974,105975,105976,105977,105978,105979,105980,105981,105982,105983,105984,105985,105986,105987,105989,105990,105991,105992,105993,105994,105995,105996,105997,106000,106001,106002,106003,106004,106005,106006,106007,106008,106015,106016,106017,106018,106019,106020,106021,106022,106023,106024,106025,106026,106027,106028,106029,106030,106031,106032,106033,106034,106035,106036,106037,106038,106039,106040,106041,106042,106043,106044,106046,106048,106066,106067,106068,106069,106070,106071,106072,106073,106074,106075,106077,106078,106079,106081,106137,106138,106139,106140,106141,106142,106143,106144,106145,106146,106147,106148,106149,106150,106151,106152,106153,106154,106155,106156,106157,106158,106159,106160,106161,106163,106165,106166,106167,106168,106169,106170,106171,106172,106173,106174,106175,106176,106177,106178,106179,106180,106181,106182,106183,106184,106185,106186,106187,106190,106191,106192,106193,106195,106196,106197,106198,106199,106200,106201,106202,106203,106204,106205,106207,106208,106209,106211,106212,106213,106214,106216,106217,106218,106220,106221,106223,106224,106225,106226,106227,106230,106231,106232,106233,106234,106235,106243,106244,106245,106246,106247,106248,106249,106250,106252,106253,106254,106256,106257,106258,106259,106260,106261,106303,106317,106318,106320,106336,106337,106338,106339,106340,106341,106342,106343,106344,106345,106347,106349,106351,106353,106355,106359,106361,106363,106365,106367,106369,106371,106373,106375,106377,106378,106379,106380,106381,106383,106384,106385,106387,106389,106390,106391,106392,106393,106394,106395,106396,106397,106398,106399,106400,106401,106402,106403,106404,106405,106406,106407,106432,106433,106434,106435,106436,106437,106438,106440,106441,106442,106455,106456,106457,106458,106459,106461,106462,106463,106464,106465,106467,106468,106472,106473,106475,106476,106477,106481,106482,106483,106484,106485,106486,106487,106488,106489,106490,106491,106492,106493,106494,106495,106496,106497,106498,106499,106500,106501,106502,106503,106504,106505,106506,106507,106508,106509,106510,106511,106512,106513,106515,106516,106517,106518,106519,106520,106521,106522,106523,106526,106528,106529,106530,106531,106532,106533,106534,106535,106536,106537,106538,106539,106540,106541,106542,106543,106544,106545,106546,106547,106549,106550,106551,106552,106553,106554,106555,106556,106557,106558,106559,106560,106561,106562,106563,106564,106565,106566,106567,106568,106569,106570,106571,106607,106608,106626,106628,106629,106632,106634,106636,109093,109097,109147,109438,109439,109440,109441,109463,109464,109465,109466,109467,109468,109501,109503,109504,109505,109506,109507,109508,109509,109510,109511,109512,109513,109514,109515,109516,109517,109518,109519,109520,109521,109522,109523,109525,109526,109527,109528,109529,109531,109532,109533,109534,109535,109536,109537,109538,109539,109540,109541,109542,109550,109551,109552,109553,109554,109555,109556,109557,109558,109559,109560,109561,109618,109621,109622,109623,109624,109636,109637,109638,109639,109640,109641,109642,109643,109644,109645,109646,109647,109648,109649,109650,109651,109652,109653,109654,109655,109656,109657,109658,109659,109660,109661,109662,109663,109664,109665,109666,109667,109668,109670,109671,109672,109673,109674,109675,109712,109713,109714,109715,109716,109717,109719,109721,109723,109724,109737,109738,109758,109759,109760,109761,109762,110003,110004,110005,110153,110154,110155,110156,110157,110158,110159,110189,110190,110191,110192,110193,110194,110195,110196,110197,110198,110199,110200,110201,110202,110203,110204,110205,110206,110207,110208,110209,110210,110211,110212,110213,110214,110215,110216,110217,110218,110219,110220,110221,110222,110224,110225,110226,110227,110228,110229,110233,110234,110235,110236,110237,110238,110239,110240,110242,110243,110244,110245,110246,110247,110248,110249,110250,110252,110253,110254,110255,110256,110257,110258,110259,110260,110261,110262,110263,110264,110265,110266,110267,110268,110269,110270,110271,110272,110273,110325,110326,110327,110328,110329,110330,110331,110332,110333,110335,110358,110359,112772,112773,112774,112775,112776,112777,112778,112779,112780,112781,112782,112783,112784,112785,112786,112787,112788,112789,112790,112791,112792,112793,112794,112795,112796,112797,112798,112799,112800,112801,112802,112803,112804,112805,112806,112807,112808,112809,112810,112811,112812,112813,112814,112815,112816,112817,112818,112819,112820,112821,112822,112823,112824,112825,112826,112827,112828,112851,112873,112874,112875,112876,112877,112878,112879,112880,112881,112882,112883,112884,112885,112886,112954,112955,112985,112986,112987,112989,112990,112992,112993,112994,112995,112997,112998,112999,113000,113001,113002,113003,113004,113005,113006,113007,113008,113009,113010,113011,113012,113013,113014,113015,113016,113017,113018,113019,113020,113024,113025,113026,113027,113028,113029,113031,113032,113033,113034,113035,113036,113037,113038,113039,113041,113042,113043,113045,113046,113047,113048,113049,113050,113051,113052,113053,113054,113055,113056,113057,113058,113060,113061,113062,113063,113064,113065,113066,113067,113068,113069,113070,113071,113072,113073,113074,113075,113076,113090,113092,113094,113097,113098,113099,113100,113102,113103,113105,113106,113107,113108,113109,113110,113111,113112,113113,113114,113115,113116,113117,113118,113119,113120,113121,113122,113123,113124,113125,113126,113127,113128,113129,113130,113131,113132,113133,113134,113136,113137,113138,113139,113140,113141,113143,113144,113145,113147,113148,113149,113150,113163,113164,113165,113168,113169,113170,113172,113174,113176,113178,113180,113189,113190,113192,113193,113194,113195,113196,113198,113199,113200,113201,113202,113203,113204,113205,113206,113207,113208,113209,113210,113211,113212,113213,113214,113215,113216,113217,113218,113219,113220,113221,113222,113223,113224,113225,113226,113227,113228,113229,113230,113231,113232,113233,113234,113235,113236,113237,113238,113239,113241,113242,113246,113247,113248,113249,113250,113251,113252,113253,113254,113255,113256,113257,113258,113259,113260,113261,113262,113263,113264,113265,113266,113267,113268,113269,113270,113271,113272,113273,113274,113275,113298,113299,113300,113301,113302,113303,113304,113305,113306,113307,113308,113309,113310,113311,113312,113313,113314,113343,113344,113353,113354,113355,113356,113358,113359,113360,113361,113362,113368,113373,113374,113375,113376,113377,113378,113428,113429,113430,113431,113432,113433,113434,113435,113436,113437,113438,113441,113472,113473,113474,113475,113476,113477,113478,113479,113480,113481,113482,113483,113484,113485,113486,113487,113488,113489,113490,113491,113492,113493,113494,113495,113496,113497,113498,113499,113500,113501,113502,113503,113504,113505,113506,113507,113508,113509,113510,113511,113512,113513,113514,113515,113516,113517,113518,113519,113520,113521,113522,113523,113524,113525,113526,113527,113529,113535,113536,113537,113538,113539,113541,113542,113543,113545,113546,113549,113550,113551,113552,113553,113554,113555,113556,113557,113558,113559,113560,113561,113562,113563,113564,113565,113566,113567,113571,113572,113573,113574,113576,113577,113580,113581,113582,113583,113584,113585,113586,113587,113588,113589,113590,113591,113592,113593,113594,113595,113596,113597,113598,113600,113601,113602,113614,113615,113616,113617,113618,113619,113620,113621,113622,113623,113624,113625,113626,113627,113628,113629,113630,113631,113632,113633,113634,113635,113636,113637,113638,113639,113643,113647,113649,113651,113653,113655,113657,113659,113671,113773,113774,113775,113776,113777,113778,113779,113780,113781,113782,113783,113784,113785,113786,113788,113792,113795,113800,113801,113802,113803,113804,113805,113806,113807,113808,113809,113810,113811,113812,113813,113814,113815,113816,113817,113818,113821,113822,113835,113836,113838,113840,113842,113843,113844,113845,113846,113858,113859,113860,113861,113862,113863,113864,113865,113866,113872,113873,113875,113876,113877,113879,113880,113883,113903,113905,113906,113907,113908,113909,113911,113913,113914,113916,113917,113919,113920,113922,113923,113924,113926,113927,113928,113939,113942,113943,113944,113945,113946,113947,113948,113949,113950,113951,113952,113954,113956,113957,113958,113959,113960,113961,113964,113965,113966,113967,113970,113972,113973,113974,113975,113976,113977,113978,113979,113980,113981,113982,113983,113984,113985,114004,114006,114007,114009,114010,114012,114035,114036,114037,114038,114039,114041,114045,114046,114047,114048,114049,114050,114051,114052,114070,114071,114072,114073,114075,114076,114077,114079,114080,114081,114082,114086,114087,114089,114090,114091,114092,114094,114095,114096,114097,114098,114099,114100,114101,114102,114103,114104,114105,114106,114107,114108,114109,114110,114111,114112,114113,114114,114115,114116,114121,114122,114123,114124,114125,114126,114128,114129,114130,114134,114135,114136,114144,114146,114153,114154,114155,114156,114157,114158,114159,114160,114161,114162,114163,114164,114165,114166,114167,114168,114169,114170,114171,114172,114173,114175,114176,114177,114178,114179,114180,114181,114182,114183,114184,114185,114186,114187,114188,114189,114191,114211,114212,114214,114215,114216,114217,114218,114227,114228,114229,114230,114231,114233,114235,114236,114237,114238,114239,114240,114242,114243,114244,114245,114246,114247,114248,114249,114250,114251,114252,114253,114254,114255,114256,114257,114258,114259,114260,114261,114263,114264,114265,114266,114267,114271,114284,114286,117297,117314,117324,117834,117835,117836,117837,117838,117839,117841,117843,117845,117847,117848,117849,117850,117851,117852,117853,117854,117855,117856,117857,117858,117859,117860,117861,117862,117863,117864,117865,117866,117867,117868,117869,117870,117871,117872,117873,117874,117875,117876,117877,117878,117879,117880,117881,117882,117883,117884,117885,117886,117888,117896,117897,117898,117899,117901,117902,117903,117904,117905,117907,117908,117909,117910,117911,117912,117913,117914,117915,117916,117917,117918,117919,117922,117923,117924,117925,117926,117927,117928,117929,117930,117931,117932,117933,117934,117935,117936,117937,117938,117939,117940,117941,117942,117943,117944,117945,117946,117947,117948,117949,117950,117951,117952,117953,117955,117957,117959,117960,117961,117962,117963,117964,117965,117966,117968,117969,117973,117975,117976,117977,117979,117981,117983,117985,117987,117989,117991,117992,117993,117995,117997,117998,117999,118000,118001,118002,118003,118004,118005,118006,118007,118008,118009,118010,118012,118013,118014,118015,118038,118039,118040,118041,118042,118043,118044,118045,118046,118047,118048,118049,118050,118051,118052,118053,118054,118055,118056,118057,118058,118059,118061,118062,118063,118064,118065,118066,118067,118068,118069,118070,118071,118072,118074,118075,118076,118077,118078,118079,118080,118081,118082,118083,118084,118085,118086,118087,118088,118089,118090,118091,118092,118093,118094,118095,118096,118097,118098,118099,118100,118101,118103,118104,118105,118106,118107,118109,118110,118111,118112,118113,118114,118115,118118,118119,118121,118122,118123,118125,118126,118127,118128,118129,118130,118131,118132,118133,118143,118144,118145,118482,118486,118487,118488,118489,118490,118491,118492,118494,118495,118496,118497,118501,118502,118503,118504,118505,118508,118509,118510,118512,118514,118517,118518,118519,118520,118521,118522,118525,118526,118530,118531,118532,118533,118534,118535,118536,118537,118538,118539,118540,118541,118544,118545,118546,118547,118548,118549,118550,118551,118556,118557,118558,118559,118566,118576,118577,118579,118581,118583,118584,118589,118591,118592,118593,118596,118597,118599,118606,118607,118609,118611,118618,118619,118620,118621,118622,118623,118624,118625,118634,118636,118638,118640,118641,118642,118671,118672,118673,118674,118687,118688,118689,118690,118707,118708,118709,118710,118711,118712,118713,118714,118715,118716,118717,118718,118726,118742,118748,119916,120276,120297,120300,120306,120309,120312,120315,120318,120321,120324,120334,120335,120336,120337,120338,120339,120340,120341,120342,120343,120344,120352,120353,120354,120355,120356,120357,120358,120359,120360,120361,120362,120363,120364,120365,120366,120367,120382,120383,120384,120385,120387,120390,120391,120392,120393,120394,120395,120396,120397,120398,120399,120400,120401,120402,120403,120404,120405,120406,120407,120413,120414,120415,120417,120418,120419,120426,120427,120428,120429,120430,120431,120432,120434,120437,120438,120439,120441,120454,120455,120456,120457,120459,120460,120461,120463,120465,120466,120467,120468,120469,120470,120471,120472,120473,120474,120475,120476,120478,120479,120481,120483,120485,120486,120487,120488,120489,120490,120491,120493,120494,120495,120496,120497,120499,120500,120501,120502,120503,120504,120505,120506,120507,120508,120514,120516,120517,120518,120519,120520,120521,120522,120523,120524,120525,120526,120527,120528,120529,120530,120531,120532,120533,120534,120575,120578,120579,120580,120581,120583,120584,120585,120586,120587,120588,120590,120593,120594,120596,120597,120598,120601,120603,120604,120605,120606,120607,120608,120609,120610,120611,120612,120613,120614,120615,120616,120617,120618,120619,120620,120621,120622,120625,120626,120627,120628,120629,120631,120632,120633,120634,120635,120638,120639,120640,120641,120642,120643,120645,120646,120647,120648,120649,120651,120652,120654,120656,120657,120658,120659,120660,120661,120662,120664,120668,120669,120670,120671,120672,120673,120674,120675,120676,120677,120678,120679,120680,120681,120690,120691,120692,120693,120694,120695,120696,120699,120710,120711,120715,120716,120717,120718,120719,120720,120722,120723,120724,120725,120726,120727,120728,120729,120730,120733,120734,120735,120736,120737,120738,120739,120740,120741,120742,120743,120744,120745,120746,120747,120766,120767,120768,120770,120772,120774,120776,120777,120778,120779,120780,120782,120783,120784,120785,121723,121724,121725,121726,121732,121733,121734,121736,121737,121738,121740,121742,121743,121744,121745,121746,121747,121748,121749,121750,121751,121752,121753,121754,121755,121756,121757,121759,121764,121766,121767,121768,121769,121770,121771,121772,121775,121776,121777,121779,121781,121782,121787,121795,121796,121798,121799,121800,121801,121802,121804,121805,121806,121807,121808,121809,121810,121811,121812,121813,121814,121815,121816,121817,121818,121819,121820,121821,121822,121824,121825,121826,121827,121828,121829,121830,121831,121832,121833,121834,121835,121836,121837,122273,122276,122297,122300,122304,122307,122310,122325,122328,122332,122333,122334,122338,122339,122343,122344,122345,122346,122347,122348,122349,122350,122351,122353,122354,122355,122356,122358,122359,122362,122367,122368,122371,122372,122373,122375,122376,122383,122385,122387,122388,122390,122391,122392,122393,122394,122395,122396,122398,122402,122403,122404,122405,122406,122407,122408,122409,122410,122411,122412,122414,122415,122416,122417,122418,122419,122421,122422,122423,122424,122426,122427,122428,122430,122431,122432,122433,122434,122435,122438,122447,122448,122449,122450,122451,122453,122456,122457,122459,122460,122462,122463,122465,122471,122472,122485,122486,122487,122488,122489,122490,122491,122492,122493,122495,122496,122497,122502,122503,122504,122505,122508,122509,122510,122511,122512,122513,122716,122717,122718,122719,122720,122721,122723,122724,122725,122728,122729,122732,122733,122734,122735,122737,122738,122739,122741,122742,122743,122746,122747,122748,122749,122756,122757,122760,122761,122763,122765,122767,122769,122816,122817,122818,122819,122824,122882,122980,122981,122982,122983,122984,122985,122986,122987,122988,122989,122990,122991,122995,122996,122997,122998,122999,123000,123005,123008,123009,123010,123011,123314,123315,123316,123317,123319,123320,123321,123322,123323,123324,123325,123326,123327,123329,123331,123333,123335,123337,123339,123341,123342,123343,123344,123345,123346,123347,123348,123352,123353,123354,123355,123356,123357,123358,123359,123360,123361,123362,123369,123370,123371,123372,123373,123374,123375,123376,123377,123378,123379,123380,123381,123382,123383,123384,123385,123386,123387,123388,123389,123390,123391,123392,123393,123394,123423,123424,123426,123428,123430,123432,123433,123434,123435,123436,123437,123438,123444,123446,123448,123454,123455,123456,123457,123458,123459,123460,123461,123462,123463,123464,123466,123473,123474,123475,123476,123477,123482,123483,123484,123485,123486,123487,123490,123494,123495,123497,123499,123501,123503,123517,123532,123533,123541,123542,123544,123546,123548,123550,123552,123554,123556,123558,123560,123562,123567,123568,123574,123575,123576,123577,123578,123579,123580,123581,123582,123583,123584,123585,123586,123587,124818,124820,124843,124844,124845,124846,124853,124854,124855,124856,124859,124860,124861,124862,124863,124864,124872,124873,124874,124875,124876,124877,124880,124881,124882,124883,124884,124885,124887,124888,124889,124890,124891,124895,124897,124899,124901,124903,124905,124910,124911,124912,124913,124944,124945,124946,124947,124948,124949,124951,124953,124955,124957,124959,124961,124963,124965,124967,124969,124971,124973,124975,125173,125174,125175,125178,125180,125181,125183,125184,125185,125186,125189,125190,125191,125193,125194,125195,125196,125197,125198,125199,125201,125202,125203,125204,125205,125206,125207,125208,125209,125210,125219,125220,125221,125222,125224,125225,125226,125227,125228,125235,125236,125241,125242,125243,125244,125245,125246,125247,125248,125249,125250,125255,125256,125257,125258,125259,125260,125261,125262,125263,125264,125265,125266,125276,125601,125602,125603,125604,125605,125606,125613,125614,125615,125616,125617,125618,125619,125620,125621,125622,125623,125624,125625,125626,125641,125642,125643,125644,125651,125652,125653,125654,125655,125656,125657,125658,125677,125678,125679,125685,125688,125689,125703,125704,125705,125706,125712,125713,125714,125715,125716,125717,125718,125719,125729,125731,125732,125733,125734,125735,125736,125749,125750,125751,125752,125753,125754,125755,125756,125758,125759,125760,125761,125762,125763,125765,125773,125787,125788,125793,125794,125795,125808,125809,125820,125821,125822,125823,125825,125826,125828,125830,125841,125842,125843,125844,125845,125846,125847,125848,125849,125852,125853,125855,125863,125864,125865,125868,125869,125882,125885,126777,126864,127058,127059,127060,127061,127062,127063,127064,127065,127066,127067,127069,127071,127072,127073,127074,127075,127076,127105,127106,127286,127287,127288,127292,127293,127294,127295,127296,127297,127298,127299,127300,127301,127302,127303,127304,127305,127306,127307,127308,127309,127310,127311,127312,127313,127314,127315,127316,127317,127318,127320,127333,127334,127335,127339,127340,127341,127342,127343,127344,127345,127346,127348,127351,127352,127353,127354,127355,127356,127357,127361,127362,127363,127370,127371,127372,127373,127374,127375,127382,127383,127385,127387,127389,127390,127391,127392,127393,127394,127395,127396,127397,127398,127399,127400,127403,127412,127413,127414,127415,127416,127417,127418,127419,127420,127935,127938,127942,127945,127947,127948,127949,127950,127951,127952,127953,127954,127955,127956,127957,127958,127959,127960,127961,127962,127963,127964,127965,127966,127967,127968,127969,127970,127971,127972,127975,127976,127981,127982,127983,127984,128030,128031,128032,128035,128041,128051,128052,128055,128081,128082,128083,128084,128085,128091,128092,128094,128095,128096,128100,128104,128106,128107,128111,128112,128113,128114,128116,128117,128118,128119,128120,128121,128122,128123,128124,128125,128127,128129,128130,128131,128132,128133,128134,128135,128137,128138,128139,128140,128142,128143,128144,128593,128594,128598,128600,128602,128604,128606,128608,128620,128622,128624,128630,128631,128632,128642,128643,128645,128647,128651,128653,128655,128657,128659,128661,128663,128665,128667,128668,128670,128672,128674,128676,128678,128680,128682,128684,128685,128687,128689,128691,128693,128695,128712,128713,128715,128717,128718,128719,128721,128722,128724,128725,128726,128727,128728,128729,128730,128731,128732,128733,128734,128735,128736,128737,128738,128739,128740,128741,128742,128743,128744,128745,128779,128783,128785,128787,128789,128791,128793,128794,128796,128797,128798,128802,128804,128806,128808,128810,128812,128813,128814,128815,128816,128817,128818,128819,128820,128821,128823,128825,128827,128829,128831,128833,128835,128837,128839,128840,128842,128844,128845,128852,128854,128856,128858,128860,128862,128866,128868,128870,128872,128874,128876,128882,129620,129628,129629,129631,129636,129639,129641,129642,129779,129793,130123,130124,130125,130126,130127,130139,130140,130142,130143,130144,130145,130149,130150,130151,130152,130153,130154,130155,130237,130238,130240,130241,130243,130245,130247,130249,130250,130252,130254,130256,130258,130260,130262,130264,130266,130268,130270,130272,130274,130278,130280,130281,130283,130285,130287,130289,130290,130293,130295,130297,130299,130301,130303,130305,130307,130309,130311,130313,130315,130317,130319,130320,130321,130323,130329,130334,130336,130338,130340,130342,130344,130345,130347,130348,130349,130350,130351,130353,130354,130363,130365,130366,130367,130369,130370,130371,130372,130374,130376,130377,130379,130381,130382,130383,130385,130387,130389,130390,130391,130393,130395,130396,130398,130399,130400,130421,130423,130425,130426,130427,130428,130429,130431,130432,130434,130436,130438,130440,130442,130444,130446,130448,130450,130452,130454,130456,130458,130460,130461,130463,130464,130465,130467,130469,130471,130473,130475,130477,130479,130480,130481,130482,130484,130485,130486,130487,130741,130742,130743,130744,130746,130748,130753,130755,130759,130761,130762,130763,130765,130766,130768,130770,130772,130773,130775,130777,130779,130781,130783,130785,130787,130789,130791,130793,130795,130797,130799,130801,130802,130809,130810,130812,130814,130815,130817,130819,130821,130822,130823,130824,130826,130828,130830,130832,130834,130836,130838,130840,130842,130844,130846,130848,130850,130852,130854,130855,130857,130859,130861,130864,130865,130866,130868,130870,130872,130874,130875,130877,130879,130881,130884,130885,130887,130889,130891,130893,130895,130897,130899,130901,130903,130905,130907,130908,130910,130912,130914,130915,130916,130917,130919,130920,130922,130924,130925,130926,130928,130930,130931,130932,130933,130935,130937,130939,130941,130943,130946,130948,130950,130951,130953,130954,130955,131173,131175,131177,131179,131181,131183,131185,131187,131189,131191,131193,131195,131197,131199,131201,131203,131205,131207,131209,131211,131213,131215,131219,131221,131223,131225,131227,131229,131231,131233,131235,131237,131239,131241,131243,131245,131247,131249,131251,131253,131255,131257,131259,131261,131263,131265,131267,131269,131271,131275,131276,131277,131278,131280,131281,131298,131300,131302,131304,131306,131308,131310,131312,131314,131316,131318,131320,131322,131324,131326,131328,131330,131332,131334,131336,131338,131340,131342,131344,131346,131348,131350,131358,131360,131362,131364,131366,131368,131370,131372,131374,131376,131378,131380,131382,131384,131386,131388,131389,131391,131393,131397,131399,131403,131405,131407,131409,131411,131413,131415,131417,131419,131421,131423,131425,131427,131429,131431,131433,131435,131437,131439,131441,131443,131445,131447,131449,131451,131453,131455,131457,131459,131461,131463,131465,131467,131469,131471,131473,131475,131477,131479,131481,131483,131486,131488,131490,131492,131494,131496,131498,131500,131502,131504,131506,131508,131510,131512,131514,131516,131518,131520,131522,131524,131525,131527,131529,131531,131533,131535,131537,131539,131541,131543,131545,131547,131549,131551,131553,131555,131557,131559,131561,131563,131565,131567,133206,133208,133209,133210,133212,133214,133216,133218,133220,133222,133224,133226,133228,133230,133232,133262,133264,133266,133268,133270,133272,133274,133276,133278,133280,133282,133284,133286,133288,133290,133292,133293,133357,133359,133361,133363,133365,133367,133369,133371,133373,133375,133377,133379,133381,133383,133385,133387,133389,133391,133393,133395,133397,133399,133401,133403,133405,133407,133409,133411,133413,133415,133417,133419,133421,133423,133425,133427,133429,133431,133433,133435,133437,133439,133441,133443,133445,133447,133449,133451,133453,133455,133457,133459,133461,133463,133465,133467,133469,133471,133473,133475,133477,133479,133481,133483,133485,133487,133489,133491,133493,133495,133497,133499,133501,133503,133505,133516,133517,133542,133544,133546,133548,133550,133552,133555,133557,133559,133561,133593,133596,133598,133599,133600,133602,133604,133606,133608,133610,133612,133614,133615,133618,133620,133622,133623,133625,133629,133631,133633,133635,133637,133639,133641,133643,133645,133649,133651,133653,133666,133668,134047,134048,134056,134058,134060,134062,134064,134066,134068,134070,134072,134074,134076,134078,134083,134124,134126,134128,134222,134223,134225,134227,134228,134234,134236,134238,134240,134242,134244,134246,134308,134309,134312,134314,134316,134318,134320,134322,134324,134326,134328,134358,134360,134362,134364,134406,134409,134411,134412,134415,134417,134419,134421,134422,134430,134432,134865,134867,134868,134869,134874,134875,134876,137204,137205,137210,137211,137212,137213,137214,137215,137216,137218,137219,137220,137221,137222,137223,137224,137225,137226,137227,137229,137231,137233,137235,137237,137239,137241,137243,137245,137247,137248,137264,137266,137267,137268,137270,137272,137274,137275,137277,137279,137280,137297,137298,137302,137304,137306,137308,137310,137311,137312,137313,137314,137315,137316,137317,137319,137321,137323,137324,137325,137327,137329,137331,137332,137334,137336,137337,137339,137341,137342,137344,137346,137348,137349,137350,137352,137353,137355,137357,137359,137361,137363,137365,137367,137369,137371,137373,137375,137377,137379,137381,137383,137385,137387,137389,137391,137405,137407,137409,137411,137413,137415,137417,137418,137420,137421,137422,137423,137424,137425,137426,137427,137428,137429,137459,137477,137478,137479,137482,137917,137982,137984,137985,137987,137988,138680,138681,138682,138683,138684,138685,138686,138687,138688,138690,138691,138692,138693,138694,138695,138696,138697,138698,138709,138710,138711,138712,138713,138715,138751,138759,138760,138844,138845,138846,138847,138848,138849,138850,138851,138852,138853,138854,138855,138856,138857,138858,138859,138860,138861,138862,138863,138864,138865,138866,138867,138868,138869,138870,138871,138872,138873,138895,138897,138899,138900,138901,138902,139576,139577,139578,139579,139580,139581,139582,139583,139624,139626,139627,139628,139629,139630,139631,139632,139633,139634,139635,139636,139637,139638,139639,139640,139641,139664,139911,139913,139915,139917,139919,139921,139923,139925,139926,139927,139928,139929,139930,139932,139939,139940,139942,139944,139946,139979,140020,140023,140025,140026,140027,140029,140031,140032,140033,140034,140035,140039,140041,140042,140044,140045,140046,140047,140048,140049,140050,140102,140103,140104,140115,140118,140144,140145,140146,140152,140153,140155,140157,142074,142104,142107,142109,142111,142112,142113,142115,142121,142122,142128,142132,142140,142142,142146,142148,142155,142157,142158,142160,142162,142164,142166,142168,142170,142172,142174,142176,142178,142180,142182,142184,142186,142188,142190,142204,142208,142210,142212,142214,142216,142220,142222,142224,142551,142552,142554,142556,142558,142560,142563,142576,142595,142596,142598,142600,142601,142602,142603,142604,142605,142607,142609,142611,142613,142615,142616,142618,142620,142622,142624,142626,142628,142630,142644,142645,142646,142648,142650,142651,142653,142654,142656,142657,142658,142660,142662,142668,142674,142700,142704,142705,142706,142707,142709,142710,142712,142728,142730,142732,142734,142736,142738,142740,142742,142746,142748,143573,143583,143876,143878,143880,143882,143884,143886,143888,143890,143892,143894,143896,143897,143898,143900,143902,143904,143906,143908,143910,143948,144007,144009,144011,144013,144015,144017,144019,144021,144023,144027,144029,144049,144051,144053,144055,144056,144063,144072,144073,144074,144075,144076,144077,144079,144080,144082,144084,144086,144088,144090,144092,144094,144096,144098,144099,144101,144103,144105,144107,144109,144111,144112,144113,144114,144115,144116,144117,144118,144119,144120,144121,144122,144123,144124,144125,144126,144127,144128,144129,144130,144436,144438,144439,144440,144441,144451,144452,144454,144455,144456,144457,144459,144460,144461,144462,144463,144464,144465,144512,144513,144514,144515,144516,144519,144521,144523,144525,144527,144528,144529,144530,144531,144532,144533,144534,144535,144536,144537,144538,144539,144540,144541,144542,144543,144586,144587,144588,144589,144590,144591,144592,144593,144594,144595,144596,144612,144689,144690,144691,144692,144693,144694,144697,144699,144716,144727,145696,145782,146910,146912,146922,146923,146924,146931,146934,146936,146945,146950,146953,146954,146956,146978,147025,147256,147257,147258,147259,147260,147261,147262,147263,147264,147265,147266,147267,147268,147269,147270,147271,147273,147274,147276,147278,147280,147282,147283,147284,147285,147286,147288,147315,147317,147318,147319,147320,147321,147322,147323,147324,147325,147326,147327,147328,147329,147330,147331,147332,147333,147334,147335,147337,147339,147383,147384,147385,147386,147387,147388,147389,147390,147391,147392,147393,147394,147395,147397,147399,147401,147403,147405,147407,147409,147411,147413,147414,147415,147416,147418,147420,147422,147424,147425,147598,147600,147602,147604,147606,147661,147663,147665,147667,147669,147670,147672,147673,147675,147677,147679,147681,147683,147685,147687,147689,147691,147693,147694,147695,147701,147726,147728,147730,147732,147734,147736,147738,147740,147742,147744,147746,147748,147750,147752,147753,147754,147755,147756,147757,147764,147765,147766,147767,147768,147769,147770,147771,147772,147773,147776,147777,147778,147779,148088,148089,148090,148140,148141,148147,148159,148160,148161,148167,148168,148169,148177,148178,148179,148180,148181,149350,149352,149354,149364,149365,149378,149380,149385,149836,149837,149838,149842,149844,149845,149848,149850,149865,149866,149867,149870,149874,149879,149881,149882,149910,150026,150028,150031,150032,150038,150039,150040,150042,150047,150048,150050,150051,150052,150053,150054,150055,150059,150060,150071,150092,150217,150247,150249,150251,150253,150255,150257,150259,150261,150263,150264,150265,150267,150269,150271,150273,150275,150277,150278,150292,150294,150565,150566,150568,150570,150572,150574,150575,150577,150579,150581,150583,150585,150587,150589,150591,150615,150617,150621,150627,150629,150630,150639,150649,150651,150656,150659,150661,150663,150665,150677,150679,150683,150684,150685,150687,150689,150690,150692,150710,150712,150714,150715,150725,150726,150727,150729,150753,150755,150758,150766,150770,150771,150773,150776,150777,150778,150780,150782,150786,150787,150788,150792,150794,150796,150797,150799,150801,150803,150805,151911,151929,152464,152466,152467,152468,152469,152473,152474,152483,152538,152539,152543,152545,152547,152549,152551,152553,152555,152557,152559,152561,152562,152563,152565,152567,152569,152571,152572,152574,152576,152578,152579,152580,152582,152584,152585,152587,152589,152590,152591,152593,152594,152595,152597,152599,152600,152601,152602,152603,152604,152605,152606,152607,152608,152609,152610,152611,152612,152613,152614,152615,152616,152618,152620,152683,152684,152700,152702,152867,152869,152871,154091,154119,154122,154507,154508,154509,154514,154516,154517,154520,154523,154524,154525,154533,154534,154540,154541,154544,154545,154551,154552,154553,154559,154561,154562,154563,154565,154572,154573,154574,154576,154647,154650,154652,154654,154655,154656,154659,154661,154662,154669,154672,154678,154679,154680,154681,154689,154690,154694,154695,154696,154698,154701,154702,154703,154704,154705,154706,154707,154708,154709,154710,154711,154712,154780,154781,154782,154783,154784,154786,154788,154791,154801,154802,154804,154811,154815,154816,154819,154820,154822,154831,154832,154833,154838,154840,154902,154903,154904,154905,154906,154907,154914,154917,154926,154927,154928,154930,154931,154935,154936,154937,154938,154939,154940,154941,154947,154948,154952,155004,155005,155006,155007,155008,155009,155012,155016,155018,155019,155020,155021,155029,155030,155033,155034,155035,155036,155037,155038,155039,155040,155042,155048,155049,155050,155054,155055,155057,155058,155059,155060,155061,155062,155063,155064,155065,155066,155067,155574,155575,155576,155577,155578,155579,155580,155581,155582,155583,155584,155585,155587,155588,155590,155595,155597,155599,155600,155684,155685,155686,155687,155688,155689,155691,155692,155693,155695,155696,155697,155746,155747,155749,156494,156495,156496,156509,156511,156512,156513,156521,156522,156523,156558,156559,156560,156561,156563,156568,156569,156570,156572,156573,156578,156580,156581,156582,156583,156584,156585,156860,156861,156880,156895,156902,156904,156906,156908,156910,156912,156914,156915,156944,156945,156958,156959,156960,157210,157247,157372,157401,157402,157403,157404,157405,157418,158540,158627,158710,158934,158938,158959,158976,158977,158978,159874,159876,159877,159878,159880,159881,159882,159883,159884,159885,159886,159889,159891,159892,159897,159898,159899,159900,159901,159902,159903,159904,159905,159906,159907,159908,159910,159911,159912,159913,159914,159915,159916,159917,159918,159919,159921,159922,159923,159926,159927,159928,159929,159930,159931,159932,159933,159935,159937,159940,159942,159944,159946,159950,160144,160145,160146,160147,160148,160150,160151,160152,160153,160155,160156,160157,160158,160159,160160,160161,160162,160163,160164,160165,160166,160167,160168,160169,160170,160171,160172,160173,160174,160175,160176,160177,160179,160180,160181,160182,160183,160185,160186,160187,160188,160189,160190,160191,160192,160193,160194,160195,160196,160197,160198,160199,160200,160201,160202,160203,160204,160206,160207,160208,160506,160507,160509,160510,160511,160512,160513,160514,160515,160516,160517,160518,160519,160520,160521,160522,160523,160524,160525,160526,160527,160528,160529,160530,160531,160532,160533,160534,160535,160536,160537,160538,160539,160540,160541,160542,160543,160544,160545,160548,160549,160550,160551,160552,160553,160554,160555,160556,160557,160558,160559,160561,160562,160563,160564,160567,160568,160569,160570,160571,160572,160573,160574,160885,160886,160888,160889,160890,160891,160892,160893,160894,160895,160896,160897,160898,160900,160901,160902,160903,160904,160905,160906,160907,160908,160909,160910,160912,160913,160914,160915,160916,160917,160918,160919,160920,160921,160922,160924,160926,160927,160928,160929,160930,160932,160933,160934,160935,160936,160937,160938,160939,160940,160941,160942,160943,160944,160947,160948,160949,160953,160954,160955,160960,160963,160968,160970,160971,160972,160973,160974,160975,160976,160977,160978,160981,160982,160983,160986,161078,161080,161081,161082,161083,161084,161085,161086,161087,161088,161089,161090,161093,161094,161095,161096,161097,161098,161099,161100,161102,161104,161107,161108,161125,161270,161271,161272,161273,161274,161275,161276,161277,161278,161279,161280,161282,161283,161284,161286,161287,161288,161289,161290,161291,161292,161293,161294,161295,161296,161297,161298,161299,161300,161301,161302,161303,161304,161305,161306,161308,161309,161310,161311,161312,161313,161314,161315,161316,161317,161318,161319,161320,161321,161322,161324,161325,161326,161327,161328,161329,161330,161331,161332,161333,161334,161335,161338,161348,161396,161531,161532,161533,161534,161535,161536,161537,161538,161539,161540,161541,161542,161543,161544,161545,161546,161547,161548,161549,161550,161551,161552,161553,161555,161556,161557,161559,161560,161561,161562,161563,161564,161565,161566,161567,161568,161569,161570,161571,161572,161574,161577,161578,161579,161580,161581,161582,161583,161584,161585,161586,161587,161588,161589,161590,161591,161592,161593,161594,161595,161598,161599,161600,161601,161602,161606,161607,161608,161609,161610,161611,161618,161619,161621,161622,161623,161624,161625,161626,161627,161630,161631,161632,161633,161634,161635,163382,164047,164049,164050,164051,164052,164053,164054,164055,164056,164058,164059,164060,164061,164062,164063,164064,164065,164066,164067,164068,164069,164070,164071,164072,164074,164075,164076,164077,164078,164079,164080,164081,164082,164083,164084,164085,164090,164091,164092,164093,164094,164095,164096,164097,164098,164099,164104,164116,164175,164176,164177,164178,164179,164180,164181,164182,164183,164184,164185,164186,164187,164188,164189,164190,164191,164192,164193,164194,164195,164196,164197,164198,164203,164587,164588,164589,164590,164591,164592,164593,164594,164595,164596,164597,164598,164599,164600,164601,164602,164603,164604,164605,164606,164608,164609,164610,164611,164612,164613,164614,164615,164616,164617,164618,164619,164620,164621,164622,164623,164624,164625,164626,164627,164628,164629,164630,164631,164632,164633,164634,164635,164636,164637,164638,164639,164640,164641,164642,164643,164644,164645,164646,164647,164648,164649,164650,164651,164652,164653,164654,164655,164656,164657,164658,164659,165151,165205,165206,165207,165208,165209,165210,165211,165212,165213,165214,165215,165216,165218,165219,165220,165221,165222,165223,165224,165225,165227,165228,165229,165230,165231,165232,165233,165234,165235,165236,165237,165238,165239,165240,165241,165242,165243,165244,165245,165246,165247,165248,165249,165250,165251,165252,165253,165254,165255,165256,165257,165258,165259,165260,165261,165523,165552,165600,165601,165602,165603,165604,165605,165606,165607,165608,165609,165610,165611,165612,165613,165614,165615,165616,165617,165619,165620,165621,165622,165623,165624,165625,165626,165627,165628,165629,165630,165631,165632,165633,165634,165635,165637,165638,165639,165640,165641,165642,165644,165645,165647,165648,165649,165651,165652,165653,165654,165656,165951,165952,165953,165954,165955,165956,165957,165958,165959,165960,165961,165962,165963,165964,165965,165966,165967,165968,165969,165970,165972,166003,166020,166021,166022,166023,166025,166026,166027,166028,166029,166030,166031,166032,166033,166034,166035,166036,166037,166038,166039,166295,166296,166297,166298,166299,166300,166301,166302,166303,166304,166305,166306,166307,166308,166309,166310,166311,166312,166313,166314,166315,166316,166317,166318,166319,166320,166321,166322,166323,166324,166325,166326,166327,166328,166329,166330,166331,166332,166333,166334,166335,166336,166337,166338,166339,166340,166341,166342,166343,166344,166345,166346,166347,166350,166351,166352,166353,166354,166355,166356,166357,166358,166359,166360,166361,166362,166363,166364,166365,166366,166369,166370,166371,166372,166373,166374,166375,166376,166377,166378,166379,166380,166381,166382,166383,166384,166386,166387,166388,166848,166849,166850,166851,166852,166853,166854,166855,166856,166858,166859,166860,166861,166862,166863,166864,166866,166867,166868,166869,166870,166871,166872,166873,166874,166875,166876,166877,166878,166879,166880,166881,166882,166883,166884,166885,166886,166887,166888,166889,166890,166891,166892,166893,166894,166895,166896,166899,166900,166901,166904,166905,166906,166907,166908,166909,166910,166911,167053,167099,167100,167101,167102,167103,167104,167105,167106,167107,167108,167109,167110,167111,167112,167113,167114,167115,167116,167117,167118,167119,167120,167121,167122,167123,167124,167125,167126,167127,167128,167129,167130,167131,167132,167133,167134,167135,167136,167137,167138,167139,167239,167240,167241,167242,167243,167244,167245,167246,167247,167249,167250,167302,167303,167304,167305,167306,167307,167308,167309,167310,167311,167312,167313,167314,167315,167316,167317,167318,167319,167320,167321,167322,167323,167324,167326,167327,167328,167329,167330,167331,167332,167333,167334,167335,167336,167337,167338,167339,167494,167495,167496,167497,167498,167499,167500,167501,167502,167503,167504,167505,167506,167507,167508,167509,167510,167511,167512,167513,167515,167516,167517,167518,167519,167520,167521,167522,167523,167524,167525,167526,167527,167528,167529,167530,167531,167532,167707,167708,167709,167711,167712,167713,167714,167716,167717,167718,167719,167720,167721,167722,167723,167724,167725,167726,167727,167728,167729,167730,167731,167733,167734,167735,167736,167737,167738,167739,167740,167741,167742,167743,167744,167745,167746,167747,167748,167749,167750,167751,167752,167753,167756,167757,167758,167759,167760,167761,167762,167763,167768,167769,167770,167771,168346,168391,168393,168394,168396,168397,168398,168399,168400,168401,168402,168403,168404,168405,168406,168407,168408,168409,168410,168411,168412,168413,168414,168415,168417,168418,168419,168420,168422,168423,168424,168425,168426,168427,168428,168429,168430,168431,168432,168433,168434,168435,168436,168437,168438,168439,168440,168441,168442,168443,168444,168445,168446,168447,168564,168565,168566,168567,168568,168569,168570,168571,168572,168573,168574,168575,168576,168577,168578,168580,168581,168582,168583,168584,168585,168586,168587,168588,168589,168590,168591,168592,168593,168594,168595,168596,168598,168599,168600,168601,168602,168603,168604,168605,168606,168607,168652,168653,168654,168655,168675,168681,169093,169094,169095,169096,169097,169098,169099,169101,169102,169103,169104,169105,169106,169107,169108,169110,169111,169112,169113,169114,169115,169116,169117,169118,169119,169120,169121,169123,169124,169125,169126,169565,169566,169567,169578,169579,169580,169581,169582,169585,169586,169587,169588,169589,169590,169591,169593,169594,169595,169596,169597,169598,169599,169600,169601,169602,169698,169720,169888,169889,169891,169893,169900,169901,169902,169903,169904,169915,169946,170157,170158,170159,170160,170161,170162,170163,170164,170165,170166,170167,170168,170169,170170,170171,170172,170173,170174,170175,170177,170178,170179,170180,170353,170354,170359,170360,170361,170362,170363,170364,170365,170366,170368,170369,170371,170372,170373,170374,170375,170376,170377,170378,170379,170380,170381,170382,170383,170384,170385,170386,170387,170388,170389,170390,170391,170470,170474,170475,170476,170477,170478,170479,170480,170481,170482,170483,170484,170485,170486,170488,170489,170490,170491,170492,170493,170494,170495,170496,170497,170498,170499,170500,170501,170502,170503,170504,170505,170506,170507,170508,170509,170510,170511,170512,170513,170514,170515,170516,170611,170612,170613,170614,170615,170616,170617,170618,170619,170620,170621,170622,170623,170624,170625,170626,170627,170628,170629,170630,170631,170632,170633,170634,170639,170640,170641,170642,170643,170644,170645,170648,170649,170651,170652,171558,171560,171563,171566,171570,171571,171572,171573,171574,171575,171576,171579,171580,171590,171596,171597,171598,171599,171600,171601,171602,171603,171604,171606,171607,171608,171609,171610,171611,171612,171613,171614,171615,171616,171617,171618,171619,171634,171636,171637,171638,171639,171640,171641,171643,171644,171645,171646,171647,171648,171649,171650,171651,171655,171656,171657,171663,171664,171665,171666,171667,171668,171669,171670,171671,171672,171673,171675,171676,171677,171678,171680,171681,171682,171683,171684,171685,171686,171687,171688,171689,171690,171691,171692,171693,171694,171695,171697,171698,171699,171706,171707,171708,171709,171710,171711,171712,171713,171714,171715,171716,171717,171718,171719,171720,171721,171722,171723,171724,171725,171726,171727,171728,171729,171730,171731,171732,172093,172094,172095,172096,172097,172098,172099,172100,172101,172102,172103,172110,172111,172140,172141,172142,172143,172144,172145,172146,172147,172148,172149,172150,172151,172152,172153,172154,172155,172156,172158,172159,172160,172161,172162,172163,172165,172167,172168,172169,172170,172171,172172,172173,172174,172175,172177,172178,172179,172180,172181,172182,172183,172184,172185,172186,172187,172188,172189,172191,172192,172193,172194,172195,172202,172203,172204,172205,172206,172207,172208,172209,172210,172211,172212,172213,172214,172215,172216,172217,172218,172219,172224,172225,172226,172228,172229,172556,172558,172561,172563,172564,172606,172607,172608,172609,172613,172614,172616,172621,172622,172623,172625,172626,172627,172628,172629,172630,172631,172632,172633,172636,172637,172640,172641,172642,172643,172644,172645,172646,172647,172649,172650,172651,172652,172653,172654,172655,172656,172657,172658,172659,172660,172661,172662,172667,172668,172669,172670,172671,172672,172673,172674,172675,172676,172677,172678,172679,172680,172681,172682,172684,172685,172686,172687,172688,172689,172690,172692,172694,172695,172697,172698,172699,172700,172701,172702,172703,172705,172706,172707,172708,172709,172710,172712,172713,173148,173151,173152,173153,173154,173155,173160,173161,173162,173163,173164,173165,173182,173183,173184,173185,173186,173187,173188,173189,173190,173191,173200,173201,173207,173208,173214,173215,173216,173217,173218,173219,173221,173222,173224,173225,173226,173227,173231,173232,173233,173234,173235,173239,173247,173248,173249,173254,173255,173256,173257,173258,173259,173260,173261,173262,173266,173272,173273,173274,173631,173767,173775,173776,173779,173780,173781,173783,173784,173788,173790,173815,173900,173913,173921,175532,175533,175534,175535,175556,175557,175618,175623,175624,175632,175633,175634,175635,175636,175637,175638,175639,175640,175641,175642,175643,175644,175645,175647,175648,175649,175650,175651,175720,175721,175723,175724,175725,175726,175727,175728,175729,175730,175731,175732,175738,175748,175807,175810,175813,175816,175821,175825,175831,175834,175837,175840,175843,175846,175851,175854,175966,175969,175972,175975,175979,175981,175984,175987,175990,175993,175996,175999,176002,176005,176008,176011,176014,176017,176020,176029,176032,176035,176182,176185,176186,176187,176189,176192,176193,176196,176197,176204,176346,176349,176353,176355,176358,176370,176374,176379,176381,176384,176490,176493,176496,176499,176502,176508,176511,176514,176520,176523,176526,176529,176532,176535,176538,176541,176562,176566,176731,176734,176738,176751,176754,176760,176976,176979,176983,176986,176989,176992,176995,177000,177012,177018,177024,177027,177029,177168,177171,177174,177180,177183,177186,177190,177193,177199,177202,177205,177208,177211,177217,177220,177226,177229,177232,177235,177238,177241,177244,178714,178717,178720,178726,178728,178731,178734,178737,178746,178749,178755,178874,178879,178887,178890,178893,178901,178904,178909,178911,178914,178920,179039,179042,179044,179047,179051,179053,179055,179068,179075,179080,179186,179189,179192,179195,179198,179201,179204,179210,179211,179214,179217,179220,179226,179229,179244,179247,179414,179415,179418,179424,179429,179431,179437,179443,179448,179450,179453,179455,179460,179463,179467,179472,179473,179479,179485,179487,179489,179493,179497,179683,179692,179696,179697,179700,179702,179703,179705,179709,179712,179713,179716,179721,179722,179820,179823,179825,179826,179827,179828,180124,180127,180130,180134,180137,180139,180142,180143,180146,180150,180156,180159,180415,180418,180421,180424,180427,180430,180433,180436,180441,180444,180449,180452,180455,180457,180459,180462,180467,180470,180471,180474,180506,180512,180515,180518,180521,180524,180527,180530,180533,180536,180539,180542,180545,180553,180560,180563,180566,180569,180572,180575,180578,180581,180584,180587,180590,180593,180596,180599,180607,180610,180613,180616,180619,180622,180625,180628,180631,180634,180637,180640,180643,180646,180649,180652,180655,180657,180660,180663,180666,181288,181294,181297,181299,181303,181304,181307,181316,181322,181325,181328,181440,181483,181492,181502,182101,182246,182249,182252,182255,182258,182261,182264,182267,182270,182276,182279,182282,182288,182291,182297,182299,182302,182305,182308,182315,182321,182324,182327,182331,182335,182338,182344,182350,182354,182360,182364,182366,182367,182370,182373,182377,182380,182382,182388,182391,182392,182395,182398,182401,182406,182414,182417,182421,182424,182427,182431,182433,182435,182440,182443,182446,182449,182452,182457,182463,182466,182469,182472,182474,182477,182480,182483,182486,182488,182491,182493,182498,182500,182505,182511,182516,182519,182541,182560,182563,182569,182572,182574,182577,182584,182593,183528,183531,183534,183615,183620,183636,183642,183652,183661,183670,183679,183688,183701,183708,183717,183726,183805,183808,183939,183942,183946,183949,183952,183956,183958,183962,183971,183975,183978,183981,183984,183990,183995,183998,184004,184006,184009,184012,184014,184016,184019,184022,184025,184032,184035,184041,184047,184051,184057,184059,184062,184069,184072,184075,184078,184081,184084,184087,184090,184093,184096,184100,184102,184110,184112,184114,184118,184120,184124,184126,184129,184135,184138,184141,184199,184200,184202,184204,184245,184247,184248,184250,184251,184252,184253,184262,184267,184271,184273,184274,184275,184276,184288,184301,184303,184306,186762,186765,186768,186771,186774,186777,186780,186784,186786,186789,186792,186795,186798,186801,186804,186809,186812,186815,186818,186852,186886,186901,186909,186912,186915,186918,186921,186924,186936,186939,186942,186945,186948,186954,186960,186962,186964,186967,186970,186973,186975,186978,186984,186987,186991,186996,186998,187001,187004,187007,187010,187011,187012,187039,187043,187045,187048,187051,187054,187072,187081,187084,187087,187090,187094,187096,187099,187102,187105,187111,187114,187117,187120,187123,187126,187951,187953,187954,187955,187956,187966,187973,187979,188800,188807,188814,188823,188826,188833,188840,188846,188852,188929,188934,190062,190064,190067,190080,190082,190153,190406,190412,190415,190418,190419,190422,190423,190433,190436,190439,190442,190445,190448,190451,190454,190457,190460,190463,190466,190472,190475,190478,190481,190484,190486,190489,190522,191746,191753,191769,191828,191831,191834,191837,191840,191843,191852,191855,191858,191864,191867,191870,191872,191875,191878,191882,191915,191918,192599,192609,192611,192612,192624,192625,193249,193250,193256,193287,193294,193295,193312,193377,193378,193387,193389,193435,193436,193437,193438,193439,193440,193441,194133,194136,194139,194142,194145,194152,194157,194161,194162,194165,194168,194170,194172,194174,194176,194178,194180,194182,194184,194186,194188,194190,194192,194194,194196,194198,194200,194202,194204,194206,194208,194210,194212,194214,194216,194218,194220,194222,194224,194226,194228,194230,194232,194235,194236,194238,194240,194242,194245,194248,194251,194254,194257,194263,194267,194274,194280,194284,195466,195467,195486,195487,195488,195496,195497,195498,195499,195500,195501,195502,195503,195504,195546,195563,195568,195574,195684,195685,195688,195697,195698,195699,195701,195702,195704,195707,195709,195710,195714,195715,195716,195717,195718,195719,195720,195721,195729,195731,195732,195734,195735,195736,195737,195739,195740,195741,195742,195743,195745,195746,195748,195749,195750,195751,195765,195772,195779,195782,195783,195784,195786,195789,195791,195792,195793,195794,195795,195796,195798,195802,195803,195805,195806,195807,195808,195809,195810,195811,195812,195814,195815,195816,195817,195818,195819,195821,195823,195825,195826,195827,195837,195859,195860,195864,195871,195875,195905,196585,196587,196708,196719,196752,196754,196755,196757,196759,196761,196765,196766,196777,197547,197550,197553,197555,197558,197562,197565,197573,197583,197586,197589,197592,197595,197719,197723,197804,198099,198103,198659,198661,198685,198686,198867,198868,198869,198870,198872,198873,198874,198875,198876,198877,198878,198879,198880,198881,198882,198883,198884,198885,198888,198889,198890,198891,198892,198893,198894,198895,198896,198897,198898,198899,198900,198901,198902,198917,199075,199078,199080,199085,199087,199090,199093,199096,199099,199139,200209,200957,201278,201320,201428,201445,201450,201472,201490,201558,201559,201598,201599,201749,201847,201848,201849,201850,201851,202133,203119,203120,203121,203122,203123,204458,204528,204945,204950,204952,204955,204958,204961,204965,204971,204972,204981,204984,204987,204990,204993,204996,204999,205002,205013,205019,205025,205028,205031,205034,205040,205043,205662,207252,207253,207254,207257,207258,207259,208102,208180,208181,208184,208187,208309,208492,211166,211167,211169,211170,211173,211177,211504,211976,212085,212087,212088,212568,212583,212587,212590,214188,214505,214649,214666,214969,214970,215622,215623,219449,220427,220459,220462,220465,220467,220603,224145,224252,224254,224255,224256,224257,224260,224986,224993,225016,225110,225990,74082,74083,74084,74085,74086,74087,74088,74089,74090,74091,74092,74093,74094,74095,74096,74097,74098,74099,74100,74101,74102,74103,74104,74105,74107,74108,74109,74111,74370,74371,74375,74376,74377,74378,74379,74380,74381,74384,74386,74387,74388,74389,74390,74391,74392,74393,74395,74396,74397,74398,74399,74400,74401,74402,74403,74404,74405,74407,74409,74411,74413,74415,74417,74419,74421,74423,74425,74428,74429,74431,74433,74435,74437,74438,74440,74441,74443,74444,74445,74446,74454,74456,74458,74460,74462,74489,74492,74494,74496,74498,74499,74500,74501,74502,74507,74509,74510,74511,74512,74513,74514,74515,74516,74517,74518,74519,74520,74521,74523,74525,74526,74527,74531,74532,74533,74534,74535,74536,74537,74538,74539,74540,74541,74542,74551,74553,74555,75108,75110,75111,75112,75114,75115,75116,75118,75120,75121,75122,75123,75124,75125,75126,75127,75128,75129,75130,75131,75132,75134,75135,75136,75138,75139,75141,75142,75144,75145,75146,75147,75148,75149,75150,75151,75152,75153,75154,75155,75156,75157,75159,75160,75161,75164,75165,75166,75167,75168,75169,75171,75172,75173,75174,75175,75177,75178,75179,75182,75183,75185,75186,75188,75190,75191,75192,75196,75197,75198,75199,75222,75224,75226,75228,75234,75236,75238,75240,75243,75244,75245,75246,75247,75248,75249,75251,75252,75253,75254,75257,75258,75259,75260,75261,75262,75264,75265,75266,75267,75268,75269,75270,75271,75273,75274,75275,75276,75277,75278,75280,75282,75283,75284,75285,75286,75287,75288,75289,75290,75293,75302,75303,75304,75306,75307,75308,75313,75316,75319,75320,75321,75322,75323,75324,75325,75327,75328,75330,75331,75332,75333,75334,75564,75565,75566,75567,75568,75569,75570,75571,75572,75574,75575,75577,75578,75580,75582,75585,75586,75588,75589,75590,75591,75592,75593,75594,75595,75596,75598,75600,75602,75603,75604,75605,75607,75608,75609,75610,75611,75613,75614,75615,75616,75617,75619,75624,75625,75626,75627,75629,75630,75632,75634,75636,75638,75641,75644,75646,75647,75648,75649,75665,75667,75668,75669,75671,75672,75674,75675,75676,75677,75678,75680,75682,75683,75684,75685,75686,75689,75690,75691,75692,75693,75696,75698,75699,75701,75702,75705,75706,75707,75708,75709,75711,75712,75713,75715,75716,75717,75718,75719,75722,75723,75724,75725,75727,75730,75734,75735,75738,75739,75740,75741,75742,75743,75744,75745,75747,75748,75749,75750,75751,75752,75753,75754,75755,75756,75757,75758,75759,75760,75761,75762,75763,75764,75765,75766,75767,75768,75769,75771,75772,75774,75775,75776,75779,76242,76445,76446,76447,76448,76449,76450,76451,76453,76454,76456,76457,76458,76459,76460,76461,76462,76463,76464,76465,76466,76467,76468,76469,76471,76472,76473,76474,76475,76476,76477,76479,76480,76481,76482,76484,76486,76487,76489,76491,76498,76499,76501,76502,76503,76504,76506,76508,76509,76510,76518,76520,76521,76522,76523,76524,76525,76526,76527,76529,76530,76531,76532,76534,76536,76537,76539,76540,76541,76542,76543,76556,76557,76558,76559,76563,76565,76566,76567,76568,76569,76570,76571,76572,76573,76574,76576,76577,76578,76579,76581,76582,76584,76585,76586,76587,76588,76589,76590,76591,76592,76593,76594,76595,76596,76597,76598,76600,76602,76604,76605,76606,76607,76608,76609,76610,76611,76612,76613,76614,76615,76617,76618,76619,76620,76621,76622,76623,76624,76626,76627,76628,76629,76630,76631,76632,76633,76634,76636,76637,76648,76649,76650,76651,76652,76653,76654,76655,76656,76657,76658,76662,76663,76667,76669,76670,76671,76673,76675,76676,76677,76678,76680,76681,76684,76686,76703,76704,76705,76706,76707,76708,76709,76710,76711,76712,76714,76715,76716,76717,76718,76720,76721,76722,76723,76725,76726,76727,76729,76730,76731,76732,76733,76734,76736,76737,76738,76739,76749,76750,76751,76752,76754,76755,76757,76758,76759,76760,76761,76762,76764,76766,76768,76769,76770,76771,76778,76779,76780,76781,76782,76783,76785,76786,76787,76788,76790,76791,76792,76793,76794,76795,76796,76797,76798,76799,76801,76802,76803,76807,76809,76811,76813,76815,76817,76819,76821,76822,76823,76824,76825,76838,76839,76841,76842,76845,76847,76848,76849,76850,76851,76852,76853,76854,76855,76856,76858,76859,76861,76862,76864,76868,76869,76871,76872,76873,76874,76875,76877,76878,76879,76880,76881,76882,76883,76884,76886,76893,76894,76895,76896,76897,76898,76899,76900,76901,76903,76905,76906,76911,76913,76936,76937,76938,76940,76941,76942,76943,76945,76946,76947,77569,77570,77571,77572,77573,77574,77575,77576,77577,77578,77579,77581,77582,77583,77584,77585,77586,77587,77588,77589,77591,77592,77593,77594,77595,77596,77597,77598,77599,77600,77601,77602,77603,77605,77610,77611,77612,77614,77615,77616,77617,77618,77619,77620,77621,77622,77623,77625,77626,77628,77629,77630,77631,77632,77633,77634,77635,77637,77639,77640,77641,77642,77643,77644,77670,77671,77675,77677,77678,77679,77680,77681,77682,77683,77684,77685,77686,77687,77688,77689,77690,77691,77692,77693,77696,77697,77698,77719,77721,77723,77725,77727,77729,77730,77731,77732,77733,77734,77737,77738,77740,77754,77756,77767,77769,77771,77772,77773,77774,77775,77777,77778,77779,77783,77785,77832,77834,78916,78917,79075,79077,79078,79080,79081,79089,79102,79103,79159,79161,79162,79164,79165,79167,79177,79178,79179,79180,79181,79182,79184,79186,79187,79188,79189,79230,79231,79232,79234,79235,79237,79241,79243,79245,79247,79249,80708,80710,80737,80739,80740,80742,80743,80745,80751,80753,80757,80760,80776,80913,81033,81134,81162,81164,81165,81167,81168,81170,81171,81174,81180,81189,81204,81210,81216,81221,81225,81231,81233,81235,81379,81381,82193,82194,82195,82198,82199,82204,82206,82208,82209,82229,82230,82231,82232,82233,82234,82235,82236,82237,82238,82239,82240,82241,82242,82243,82244,82245,82246,82248,82249,82250,82251,82252,82253,82254,82255,82256,82257,82258,82259,82260,82261,82262,82263,82264,82265,82266,82267,82269,82270,82271,82272,82273,82274,82275,82276,82277,82278,82279,82284,82285,82288,82289,82290,82292,82293,82294,82295,82296,82297,82298,82299,82301,82302,82303,82304,82305,82306,82307,82308,82309,82310,82312,82314,82315,82316,82317,82318,82319,82320,82321,82322,82323,82325,82326,82327,82328,82329,82330,82331,82332,82333,82334,82335,82336,82337,82338,82339,82347,82348,82349,82350,82351,82352,82353,82354,82355,82356,82357,82358,82359,82360,82361,82362,82363,82364,82365,82366,82367,82368,82369,82370,82371,82372,82373,82375,82376,82377,82378,82379,82381,82382,82383,82385,82386,82387,82388,82390,82391,82392,82393,82394,82395,82396,82397,82398,82399,82400,82401,82402,82404,82722,82724,82728,82730,82731,82733,82735,82736,82737,82739,82740,82741,82742,82756,82757,82760,82761,82762,82765,82766,82767,82768,82769,82770,82771,82774,82775,82776,82777,82778,82779,82780,82781,82782,82783,82784,82785,82786,82789,82790,82791,82792,82795,82796,82797,82798,82799,82802,82803,82804,82807,82808,82811,82812,82813,82814,82817,82822,82827,82869,82872,82877,82878,82879,82880,82881,82883,82884,82886,82888,82889,82890,82891,82892,82894,82896,82900,82901,82902,82903,82934,82935,82987,82988,83331,83332,83333,83334,83337,83338,83339,83340,83341,83342,83343,83344,83345,83346,83347,83348,83349,83351,83352,83353,83354,83356,83358,83359,83360,83361,83362,83363,83365,83368,83369,83372,83373,83374,83376,83377,83378,83379,83380,83381,83383,83384,83385,83387,83388,83389,83391,83392,83393,83394,83395,83396,83398,83399,83408,83409,83410,83411,83413,83414,83415,83417,83419,83420,83423,83424,83425,83426,83427,83428,83430,83431,83432,83433,83434,83435,83436,83437,83438,83439,83440,83441,83442,83443,83445,83447,83448,83450,83460,83464,83466,83468,83472,83474,83475,83476,83477,83478,83479,83480,83481,83482,83483,83484,83485,83486,83487,83488,83489,83490,83491,83492,83493,83494,83495,83497,83498,83500,83501,83503,83504,83506,83508,83509,83510,83511,83512,83513,83514,83515,83517,83518,83519,83520,83521,83523,83524,83526,83527,83528,83529,83530,83531,83532,83533,83534,83535,83536,83537,83538,83539,83540,83541,83543,83544,83545,83546,83547,83548,83550,83551,83553,83554,84034,84140,84141,84144,84147,84148,84149,84152,84154,84155,84156,84157,84158,84159,84160,84161,84162,84163,84164,84165,84166,84167,84168,84169,84170,84171,84172,84173,84174,84175,84176,84177,84178,84179,84180,84181,84182,84183,84184,84185,84186,84187,84189,84190,84191,84192,84193,84198,84200,84369,84370,84371,84372,84373,84374,84375,84376,84377,84378,84379,84380,84381,84382,84383,84384,84385,84386,84387,84388,84389,84390,84391,84392,84393,84394,84395,84396,84397,84398,84399,84400,84401,84402,84403,84404,84405,84406,84408,84409,84410,84412,84413,84417,84418,84419,84420,84422,84423,84424,84426,84427,84428,84429,84430,84431,84432,84434,84435,84436,84437,84438,84439,84440,84441,84442,84443,84444,84445,84446,84447,84449,84450,84451,84452,84453,84454,84455,84456,84457,84459,84460,84462,84463,84464,84465,84467,84469,84470,84471,84473,84474,84475,84476,84478,84479,84480,84482,84484,84486,84489,84490,84492,84493,84494,84495,84497,84499,84500,84501,84502,84504,84505,84506,84507,84508,84509,84510,84511,84512,84514,84515,84516,84517,84518,84519,84520,84521,84523,84524,84526,84527,84528,84529,84531,84533,84535,84536,84537,84539,84540,84541,84542,84543,84544,84545,84546,84547,84548,84549,84550,84551,84552,84554,84555,84556,84557,84558,84559,84560,84561,84563,84564,84565,84567,84568,84569,84570,84571,84572,84573,84574,84575,84576,84577,84578,84579,84580,84582,84597,84598,84601,84602,84603,84604,84605,84606,84607,84608,84609,84610,84611,84612,84614,84615,84616,84618,84619,84621,84622,84623,84643,84644,84645,84646,84647,84648,84649,84651,84652,84653,84654,84656,84657,84659,84660,84661,84662,84663,84664,84665,84666,84667,84668,84669,84671,84672,84673,84674,84676,84677,84680,84681,84682,84683,84684,84685,84686,84687,84688,84689,84690,84692,84694,84695,84697,84698,84699,84700,84701,84702,84703,84704,84705,84706,84707,84708,84709,84711,84713,84714,84715,84716,84717,84718,84719,84720,84721,84722,84723,84724,84725,84730,84731,84733,84734,84735,84736,84738,84740,84743,84744,84745,84746,84747,84748,84749,84750,84751,84752,84753,84754,84756,84757,84758,84760,84761,84762,84763,85546,85547,85548,85549,85550,85551,85552,85553,85554,85555,85556,85557,85558,85559,85561,85562,85564,85565,85566,85567,85569,85570,85571,85572,85573,85574,85575,85576,85577,85578,85579,85580,85582,85587,85588,85589,85590,85592,85593,85594,85595,85596,85599,85600,85601,85602,85603,85604,85605,85606,85607,85609,85611,85612,85613,85614,85615,85617,85618,85619,85620,85621,85622,85623,85624,85625,85626,85629,85630,85631,85634,85638,85639,85640,85641,85642,85643,85644,85645,85647,85648,85650,85652,85654,85656,85657,85658,85661,85663,85664,85665,85666,85667,85668,85669,85670,85672,85674,85675,85676,85677,85678,85679,85680,85681,85682,85685,85686,85687,85691,85694,85695,85696,85697,85698,85699,85701,85705,85706,85707,85708,85709,85711,85712,85713,85715,85716,85719,85729,85773,85840,85841,85842,85843,85844,85845,85846,85847,85848,85849,85850,85852,85853,85855,85856,85857,85858,85859,85871,85880,85881,85882,85884,85887,85889,85890,85891,85892,85894,85895,85898,85899,85900,85902,85904,85905,85906,85907,85908,85909,85910,85911,85912,85914,85915,85916,85917,85918,85919,86162,86165,86169,86171,86175,86845,86847,86848,86849,86853,86855,86856,86857,86858,86860,86862,86863,86864,86866,86867,86869,86871,86874,86876,86877,86878,86880,86882,86884,86886,86887,86889,86890,86891,86892,86893,86894,86897,86899,86900,86901,86902,86903,86904,86908,86909,86910,86911,86914,86915,86916,86917,86918,86920,86922,86923,86924,86925,86926,86927,86928,86934,86935,86967,86976,86991,87002,87003,87004,87005,87006,87007,87008,87010,87011,87012,87013,87014,87015,87016,87020,87022,87023,87396,87397,87399,87400,87401,87402,87403,87404,87406,87407,87408,87409,87410,87411,87412,87414,87415,87417,87418,87419,87420,87421,87428,87429,87430,87431,87432,87433,87434,87435,87436,87438,87439,87440,87441,87442,87443,87445,87447,87448,87449,87451,87454,87455,87458,87459,87460,87461,87463,87466,87467,87468,87470,87471,87476,87479,87480,87481,87483,87486,87487,87488,87490,87491,87492,87494,87495,87496,87497,87498,87500,87502,87503,87504,87523,87524,87525,87526,87527,87528,87529,87538,87541,87543,87545,87548,87549,87560,87561,87563,87564,87568,87569,87571,87617,87618,87619,87621,87624,87626,87627,87628,87629,87630,87632,87633,87634,87635,87637,87638,87639,87640,87641,87642,87643,87666,87667,87668,87669,87671,87672,87673,87674,87676,87678,87679,87680,87681,87682,87684,87686,87688,87689,87691,87693,87694,87695,87696,87697,87698,87700,87703,87704,87706,87708,87709,87710,87711,87714,87715,87717,87718,87719,87720,87721,87722,87723,87724,87726,87727,87728,87729,87732,87734,87735,87737,87738,87739,87740,87741,87742,87743,87744,87746,87747,87748,87749,87750,87751,87752,87753,87754,87755,87756,87757,87758,87760,87761,87762,87764,87765,87766,87768,87769,87770,87772,87776,87777,87778,87779,87780,87781,87783,87784,87785,87786,87788,87789,87790,87791,87793,87796,87797,87799,87800,87801,87802,87803,87808,87810,87811,87812,87813,87814,87815,87816,87817,87818,87819,87820,87821,87822,87823,87824,87825,87826,87828,87829,87830,87831,87832,87834,87836,88374,88375,88376,88377,88378,88379,88380,88381,88382,88383,88385,88387,88389,88390,88392,88393,88394,88395,88397,88398,88399,88401,88402,88403,88407,88408,88409,88411,88413,88414,88417,88418,88419,88420,88421,88422,88423,88425,88426,88427,88429,88430,88431,88432,88433,88435,88436,88437,88439,88440,88441,88442,88443,88445,88446,88448,88449,88450,88454,88456,88458,88459,88461,88462,88463,88464,88465,88466,88467,88468,88469,88470,88471,88472,88474,88475,88476,88481,88482,88483,88484,88485,88487,88488,88489,88490,88493,88494,88496,88498,88499,88500,88501,88503,88504,88505,88507,88509,88511,88512,88533,88534,88535,88537,88538,88539,88540,88541,88542,88586,88587,88662,88663,88665,88666,88667,88668,88669,88670,88671,88697,88699,88700,88701,88702,88703,88705,88706,88708,88709,88710,88711,88712,88714,88715,88716,88718,88720,88722,88724,88725,88727,88729,88730,88731,88732,89097,89100,89102,89104,89105,89106,89109,89110,89111,89112,89113,89115,89116,89117,89118,89120,89121,89123,89124,89130,89139,89140,89142,89143,89144,89145,89146,89147,89148,89150,89152,89154,89155,89156,89157,89158,89159,89160,89161,89162,89163,89165,89167,89168,89171,89172,89174,89176,89177,89178,89180,89181,89182,89183,89184,89185,89186,89187,89188,89189,89191,89192,89193,89197,89198,89204,89206,89207,89208,89209,89210,89211,89212,89222,89223,89224,89225,89226,89227,89228,89229,89230,89231,89233,89234,89235,89471,89473,89475,89476,89478,89480,89481,89482,89483,89484,89485,89486,89487,89488,89489,89490,89491,89492,89493,89494,89495,89496,89497,89498,89500,89501,89502,89503,89505,89506,89507,89509,89511,89513,89514,89515,89519,89520,89522,89523,89524,89525,89526,89527,89528,89529,89530,89531,89532,89533,89535,89536,89537,89538,89539,89540,89542,89543,89544,89545,89546,89547,89548,89549,89550,89551,89552,89553,89554,89555,89557,89558,89559,89560,89561,89562,89563,89564,89565,89566,89567,89568,89569,89570,89571,89572,89573,89574,89575,89579,89580,89581,89582,89583,89584,89585,89586,89587,89588,89589,89590,89591,89592,89593,89594,89595,89596,89598,89599,89600,89601,89602,89603,89604,89605,89606,89607,89608,89609,89610,89611,89612,89613,89614,89615,89617,89620,89621,89623,89625,89626,89627,89629,89630,89631,89632,89637,89638,89639,89640,89641,89642,89643,89644,89645,89646,89647,89648,89649,89650,89651,89652,89653,89654,89655,89656,89657,89659,89660,89661,89662,89663,89664,89665,89670,89680,89682,89683,89685,89687,89693,89695,89699,89701,89705,89707,89709,89711,89713,89715,89717,89718,89721,89725,90214,90218,90219,90238,90239,90242,90244,90245,90246,90247,90248,90250,90251,90252,90254,90255,90256,90257,90259,90260,90262,90270,90271,90272,90273,90274,90275,90276,90277,90278,90279,90282,90283,90284,90285,90286,90287,90288,90289,90290,90291,90294,90295,90309,90310,90311,90312,90313,90314,90315,90316,90317,90318,90319,90320,90332,90333,90334,90336,90338,90340,90342,90344,90346,90348,90350,90352,90354,90366,90367,90368,90369,90370,90371,90372,90373,90385,90386,90387,90388,90389,90390,90391,90392,90393,90394,90395,90396,90397,90398,90399,90400,90401,90402,90403,90405,90415,90416,90417,90418,90419,90420,90421,90422,90423,90424,90425,90426,90430,90431,90432,90433,90434,90439,90441,90442,90443,90445,90482,90483,90504,90505,90507,90508,90511,90517,90518,90519,90520,90521,90522,90523,90524,90525,90527,90528,90530,90531,90532,90533,90534,90535,90536,90537,90538,90539,90540,90553,90554,90555,90556,90557,90558,90559,90560,90561,90562,90563,90565,90566,90567,90568,90569,90570,90571,90572,90573,90574,90575,90577,90578,90579,90580,90581,90582,90583,90592,90593,90595,90597,90599,90601,90603,90605,90607,90609,90611,90613,90615,90616,90617,90618,90619,90620,90621,90622,90623,90624,90625,90626,90627,90628,90629,90630,90631,90632,90633,90634,90635,90636,90637,90639,90644,90645,90646,90647,90648,90649,90650,90651,90652,90653,90654,90658,90669,90670,90671,90672,90673,90674,90675,90676,90685,90686,90687,90688,90690,90691,90692,90693,90694,90695,90696,90698,90700,90717,90718,90719,90721,90722,90752,90753,90754,90755,90756,90757,90758,90759,90760,90761,90762,90763,90764,90765,90766,90771,90772,90773,90774,90776,90779,90780,90783,90789,90790,90791,90792,90793,90795,90796,90797,90798,90799,90800,90801,90802,90803,90804,90832,90833,90834,90835,90836,90837,90838,90839,90840,90841,90843,90853,90854,90855,90858,90859,90860,90861,90862,90863,90864,90865,90866,90867,90868,90869,90874,90875,90876,90877,90878,90879,90880,90882,90883,90884,90886,90891,90892,90893,90894,90895,90896,90897,90898,90899,90900,90901,90902,90903,90904,90905,90906,90907,90924,90925,90926,90927,90928,90929,90931,90932,90933,90934,90935,90936,90951,90954,90955,90956,90960,90961,90962,90963,90964,90965,90966,90967,90968,90969,90970,90971,90972,90997,90998,90999,91002,91003,91004,91005,91006,91007,91008,91010,91011,91012,91013,91014,91015,91016,91017,91018,91019,91020,91021,91022,91023,91024,91025,91026,91027,91028,91029,91030,91031,91032,91033,91034,91035,91036,91037,91038,91039,91040,91041,91042,91043,91044,91045,91048,91049,91055,91056,91057,91058,91059,91060,91061,91062,91063,91064,91065,91066,91067,91068,91069,91070,91071,91072,91075,91105,91106,91107,91108,91109,91110,91111,91112,91113,91114,91115,91126,91127,91131,91132,91133,91134,91135,91136,91137,91138,91139,91140,91141,91142,91143,91145,91146,91147,91150,91151,91152,91153,91156,91456,91457,91491,91492,91493,91494,91496,91497,91498,91506,92489,92490,92492,92493,92496,92497,92499,92500,92502,92522,92532,92550,97465,97466,97467,97468,97469,97470,97471,97472,97473,97474,97475,97476,97477,97478,97481,97485,97488,97489,97490,97491,97492,97493,97494,97495,97496,97497,97498,97511,97512,97513,97514,97515,97517,97529,97530,97531,97532,97533,97534,97535,97536,97537,97538,97539,97540,97541,97542,97543,97544,97545,97546,97547,97548,97549,97550,97551,97552,97553,97557,97558,97559,97560,97561,97562,97563,97564,97565,97566,97567,97568,97569,97570,97571,97574,97575,97576,97577,97578,97579,97580,97581,97582,97583,97584,97585,97586,97587,97588,97589,97590,97591,97611,97612,97613,97614,97615,97616,97618,97619,97620,97622,97623,97624,97625,97626,97627,97631,97632,97642,97643,97659,97660,97661,97662,97663,97664,97670,97671,97672,97673,97674,97675,97685,97686,97707,97708,97709,97710,97711,97712,97713,97728,97762,97763,97780,97782,97783,97784,97785,97786,97788,97789,97792,97793,97794,97795,97796,97797,97799,97800,97801,97802,97803,97804,97805,97806,97808,97810,97811,97826,97827,97828,97829,97830,97832,97833,97834,97835,97836,97837,97838,97839,97840,97841,97843,97844,97845,97846,97847,97848,97849,97850,97851,97852,97853,97854,97855,97856,97857,97858,97859,97860,97861,97862,97863,97864,97865,97866,97868,97869,97873,97874,97875,97876,97878,97879,97880,97885,97886,97887,97888,97889,97890,97891,97892,97893,97896,97897,97899,97900,97901,97902,97904,97906,97907,97908,97909,97910,97911,97912,97913,97914,97915,97916,97917,97918,97919,97921,97922,97923,97924,97925,97926,97927,97928,97929,97930,97931,97932,97933,97936,97938,97939,97940,97941,97942,97943,97945,97946,97947,97948,97961,97962,97963,97964,97965,97966,97967,97968,97969,97970,97971,97972,97973,97974,97975,97976,97977,97978,97979,97980,97981,97982,97984,97985,97986,97987,97988,97989,97990,97991,97992,97993,97994,98008,98029,98030,98031,98047,98048,98049,98050,98051,98053,98054,98055,98056,98057,98058,98059,98060,98061,98062,98063,98064,98065,98066,98067,98068,98069,98070,98071,98072,98073,98074,98075,98076,98077,98078,98079,98080,98081,98082,98703,98705,98708,98713,98714,98716,98718};

    //std::array<ofVec3f,7000>posArr;

    // ofVec3f posArr[7000];
    ofPath path;
    ofImage img[11669];
    //18154
    ofFbo fbo;



};

text.cpp

#include "text.h"


void text::setup(){

}

void text::update(){


}



void text::draw(){
    if(conInfo == false){
        ofSetColor(colorNum);
        ofDrawBitmapString("press Control for keyboard settings", 50, 50);
        ofSetColor(255);
    }else if (conInfo == true){
        ofSetColor(colorNum);
        ofDrawBitmapString("Control", 50, 50);
        ofDrawBitmapString("W - forward", 52, 65);
        ofDrawBitmapString("S - backward", 52, 80);
        ofDrawBitmapString("D - right", 52, 95);
        ofDrawBitmapString("A - left", 52, 110);
        ofDrawBitmapString("Space - fly/lock position", 52, 125);
        ofDrawBitmapString("Shift - toggle trippy mode", 52, 140);
        ofDrawBitmapString("Return - toggle fullscreen", 52, 155);
        ofSetColor(255);
    }

}

text.h

#ifndef text_h
#define text_h

#include "ofMain.h"

#endif /* text_h */


class text{
public:
    void setup();
    void update();
    void draw();

    //variables
    int colorNum = 0;
     bool conInfo = false;
};

Video