//DMA Labs screen installation Sept 2001, Josh Nimoy //congrats on the special occasion, the walls look beautiful! #ifndef GLSCENE_H #define GLSCENE_H #include #include "iostream.h" #define PCOUNT 4284 class GLScene{ public: void frame(); void init(); void draw(); void key(int k,int x,int y); void specialKey(int k,int x,int y); void windowResized(int w,int h); bool fullscreenmode; int restoreX; int restoreY; int restoreW; int restoreH; void draw1(); void draw2(); void draw3(); void draw4(); void draw5(); void draw6(); int cheat; float randList[PCOUNT]; }; #endif #include #include void GLScene::frame(){ draw(); } void GLScene::draw1(){ glRotatef(clock()/100.0,0,1,0); //glRotatef(clock()/90.0,0.1,0,0); glRotatef(clock()/50.0,0.0,0,1); glTranslatef(-0.5,0.5,0); glColor4f(1,1,1,0.5); glBegin(GL_LINES); for(int i=0;idraw(); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix // Calculate The Aspect Ratio Of The Window gluPerspective(45,(float)w/(float)h,0.1f,100.0f); gluLookAt(0,0,1,0,0,0,0,1,0); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix this->draw(); } void GLScene::draw(){ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glPushMatrix(); switch((clock()/120000+cheat)%6){ case 1: draw1(); break; case 2: draw2(); break; case 3: draw3(); break; case 4: draw4(); break; case 5: draw5(); break; case 0: draw6(); break; }; glPopMatrix(); glutSwapBuffers(); } void GLScene::init(){ cout<<"DMALAB screen installation - Josh Nimoy September 2001\n"; cout<<"jtn\ imoy@uc\ la.edu * n\ imoy@media.mit.\ edu\n"; cout<<"Space Bar to iterate through the modes\n"; cout<<"Should cycle through very slowly\n\n"; cout<<"Inspired by \"Mystify Your Mind,\" the world's most redundant screen saver.\nFor John Ruppel\n\n"; fullscreenmode = 0; glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH|GLUT_RGBA); int wW = 640; int wH = 480; for(int i=0;i=6)cheat=0; // if(k=='s')forwardMovement-=0.1f; // if(k=='a')sideMovement+=0.1f; // if(k=='d')sideMovement-=0.1f; } void GLScene::specialKey(int k,int x,int y){ if(k==11){//F11 fullscreenmode = !fullscreenmode; if(fullscreenmode){//go there restoreX = glutGet(GLUT_WINDOW_X); restoreY = glutGet(GLUT_WINDOW_Y); restoreW = glutGet(GLUT_WINDOW_WIDTH); restoreH = glutGet(GLUT_WINDOW_HEIGHT); glutFullScreen(); }else{//come back glutReshapeWindow(restoreW,restoreH); glutPositionWindow(restoreX,restoreY); } } } //here are the points which define the logo. int points[] = { 257, 339, 257, 339, 257, 339, 257, 339, 257, 339, 257, 338, 257, 338, 257, 332, 257, 332, 257, 325, 257, 325, 257, 320, 257, 320, 257, 314, 257, 314, 257, 311, 257, 311, 257, 305, 257, 305, 256, 301, 256, 301, 256, 295, 256, 295, 256, 290, 256, 290, 256, 284, 256, 284, 256, 275, 256, 275, 256, 271, 256, 271, 257, 266, 257, 266, 257, 260, 257, 260, 257, 256, 257, 256, 257, 248, 257, 248, 257, 242, 257, 242, 257, 236, 257, 236, 257, 233, 257, 233, 257, 227, 257, 227, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 257, 224, 259, 224, 259, 224, 263, 224, 263, 224, 266, 224, 266, 224, 275, 224, 275, 224, 278, 224, 278, 224, 284, 224, 284, 224, 289, 224, 289, 224, 292, 224, 292, 224, 295, 224, 295, 224, 301, 224, 301, 224, 305, 224, 305, 224, 308, 224, 308, 224, 311, 225, 311, 225, 314, 225, 314, 225, 320, 225, 320, 225, 323, 227, 323, 227, 329, 227, 329, 227, 332, 228, 332, 228, 334, 228, 334, 228, 337, 230, 337, 230, 338, 233, 338, 233, 341, 236, 341, 236, 344, 239, 344, 239, 346, 240, 346, 240, 347, 242, 347, 242, 350, 246, 350, 246, 353, 248, 353, 248, 356, 255, 356, 255, 359, 258, 359, 258, 359, 263, 359, 263, 361, 266, 361, 266, 362, 269, 362, 269, 362, 273, 362, 273, 364, 281, 364, 281, 364, 291, 364, 291, 364, 299, 364, 299, 364, 306, 364, 306, 363, 311, 363, 311, 361, 317, 361, 317, 360, 321, 360, 321, 357, 326, 357, 326, 354, 330, 354, 330, 345, 335, 345, 335, 340, 338, 340, 338, 333, 341, 333, 341, 325, 344, 325, 344, 316, 347, 316, 347, 312, 347, 312, 347, 304, 348, 304, 348, 298, 348, 298, 348, 288, 348, 288, 348, 282, 348, 282, 348, 273, 347, 273, 347, 268, 347, 268, 347, 262, 346, 262, 346, 261, 346, 261, 346, 259, 346, 259, 346, 256, 346, 256, 346, 255, 346, 255, 346, 255, 346, 255, 346, 255, 346, 255, 346, 255, 346, 255, 346, 255, 346, 255, 346, 255, 346, 293, 316, 293, 314, 293, 314, 293, 313, 293, 313, 293, 307, 293, 307, 293, 302, 293, 302, 293, 295, 293, 295, 293, 293, 293, 293, 293, 281, 293, 281, 295, 275, 295, 275, 295, 271, 295, 271, 295, 266, 295, 266, 295, 262, 295, 262, 295, 259, 295, 259, 295, 257, 295, 257, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 295, 254, 298, 254, 298, 254, 302, 254, 302, 254, 305, 254, 305, 254, 308, 254, 308, 254, 311, 254, 311, 254, 313, 254, 313, 254, 314, 254, 314, 254, 316, 255, 316, 255, 317, 258, 317, 258, 320, 261, 320, 261, 323, 264, 323, 264, 325, 267, 325, 267, 328, 270, 328, 270, 328, 275, 328, 275, 328, 278, 328, 278, 328, 284, 328, 284, 328, 290, 328, 290, 328, 296, 328, 296, 328, 302, 328, 302, 325, 308, 325, 308, 324, 311, 324, 311, 318, 314, 318, 314, 313, 318, 313, 318, 306, 320, 306, 320, 304, 321, 304, 321, 300, 321, 300, 321, 295, 321, 295, 321, 294, 321, 294, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 291, 321, 377, 340, 377, 340, 377, 340, 377, 337, 377, 337, 377, 331, 377, 331, 377, 325, 377, 325, 377, 314, 377, 314, 377, 304, 377, 304, 377, 298, 377, 298, 377, 286, 377, 286, 376, 274, 376, 274, 376, 268, 376, 268, 376, 260, 376, 260, 376, 254, 376, 254, 376, 250, 376, 250, 377, 245, 377, 245, 380, 236, 380, 236, 380, 229, 380, 229, 382, 224, 382, 224, 383, 223, 383, 223, 383, 220, 383, 220, 383, 220, 383, 220, 383, 220, 383, 220, 383, 220, 383, 220, 383, 220, 383, 220, 385, 220, 385, 220, 389, 220, 389, 220, 397, 220, 397, 220, 403, 220, 403, 220, 410, 222, 410, 222, 418, 222, 418, 222, 421, 222, 421, 222, 424, 225, 424, 225, 424, 225, 424, 225, 424, 225, 424, 225, 424, 225, 424, 225, 425, 225, 425, 225, 427, 227, 427, 227, 430, 233, 430, 233, 436, 248, 436, 248, 436, 254, 436, 254, 439, 263, 439, 263, 439, 267, 439, 267, 439, 272, 439, 272, 440, 278, 440, 278, 440, 284, 440, 284, 442, 290, 442, 290, 443, 290, 443, 290, 443, 291, 443, 291, 443, 293, 443, 293, 443, 293, 443, 293, 443, 293, 443, 293, 443, 293, 443, 293, 448, 283, 448, 283, 451, 274, 451, 274, 454, 260, 454, 260, 457, 254, 457, 254, 457, 247, 457, 247, 458, 242, 458, 242, 461, 236, 461, 236, 464, 230, 464, 230, 467, 226, 467, 226, 467, 223, 467, 223, 469, 221, 469, 221, 470, 220, 470, 220, 470, 220, 470, 220, 470, 220, 470, 220, 470, 220, 470, 220, 472, 220, 472, 220, 475, 220, 475, 220, 478, 220, 478, 220, 482, 220, 482, 220, 485, 220, 485, 220, 488, 220, 488, 220, 494, 220, 494, 220, 499, 221, 499, 221, 503, 222, 503, 222, 505, 222, 505, 222, 505, 222, 505, 222, 506, 224, 506, 224, 506, 224, 506, 224, 506, 224, 506, 224, 506, 224, 506, 224, 506, 225, 506, 225, 508, 230, 508, 230, 508, 240, 508, 240, 508, 246, 508, 246, 509, 257, 509, 257, 508, 270, 508, 270, 508, 275, 508, 275, 508, 285, 508, 285, 507, 293, 507, 293, 507, 300, 507, 300, 507, 306, 507, 306, 507, 317, 507, 317, 507, 320, 507, 320, 507, 329, 507, 329, 507, 332, 507, 332, 505, 338, 505, 338, 505, 341, 505, 341, 505, 341, 505, 341, 505, 341, 505, 341, 505, 341, 505, 341, 505, 341, 505, 341, 504, 341, 504, 341, 496, 342, 496, 342, 493, 342, 493, 342, 487, 342, 487, 342, 483, 342, 483, 342, 480, 342, 480, 342, 477, 342, 477, 342, 477, 342, 477, 342, 475, 342, 475, 342, 475, 342, 475, 342, 475, 342, 475, 342, 475, 342, 475, 342, 475, 340, 475, 340, 474, 331, 474, 331, 474, 325, 474, 325, 475, 316, 475, 316, 476, 310, 476, 310, 476, 299, 476, 299, 476, 293, 476, 293, 476, 289, 476, 289, 476, 280, 476, 280, 476, 277, 476, 277, 476, 274, 476, 274, 476, 269, 476, 269, 476, 266, 476, 266, 476, 265, 476, 265, 476, 263, 476, 263, 476, 263, 476, 263, 476, 263, 476, 263, 476, 263, 476, 263, 476, 270, 476, 270, 476, 278, 476, 278, 475, 291, 475, 291, 472, 297, 472, 297, 469, 305, 469, 305, 466, 312, 466, 312, 463, 315, 463, 315, 460, 321, 460, 321, 457, 327, 457, 327, 457, 332, 457, 332, 454, 338, 454, 338, 454, 338, 454, 338, 454, 339, 454, 339, 454, 339, 454, 339, 453, 344, 453, 344, 453, 344, 453, 344, 453, 344, 453, 344, 453, 344, 453, 344, 451, 344, 451, 344, 447, 344, 447, 344, 444, 344, 444, 344, 439, 344, 439, 344, 439, 344, 439, 344, 438, 344, 438, 344, 436, 344, 436, 344, 435, 344, 435, 344, 433, 344, 433, 344, 433, 344, 433, 344, 433, 344, 433, 344, 432, 344, 432, 344, 432, 344, 432, 344, 432, 344, 432, 344, 430, 344, 430, 344, 427, 335, 427, 335, 427, 332, 427, 332, 423, 323, 423, 323, 423, 317, 423, 317, 420, 308, 420, 308, 417, 304, 417, 304, 414, 298, 414, 298, 412, 295, 412, 295, 411, 289, 411, 289, 411, 286, 411, 286, 409, 283, 409, 283, 409, 278, 409, 278, 408, 271, 408, 271, 408, 268, 408, 268, 408, 266, 408, 266, 406, 266, 406, 266, 406, 266, 406, 266, 406, 266, 406, 266, 406, 269, 406, 269, 407, 279, 407, 279, 407, 287, 407, 287, 407, 299, 407, 299, 407, 309, 407, 309, 407, 315, 407, 315, 409, 321, 409, 321, 409, 327, 409, 327, 409, 332, 409, 332, 409, 335, 409, 335, 409, 338, 409, 338, 409, 338, 409, 338, 409, 341, 409, 341, 409, 341, 409, 341, 409, 341, 409, 341, 409, 341, 409, 341, 406, 344, 406, 344, 405, 344, 405, 344, 400, 344, 400, 344, 396, 344, 396, 344, 394, 344, 394, 344, 390, 344, 390, 344, 387, 343, 387, 343, 385, 343, 385, 343, 382, 341, 382, 341, 379, 340, 379, 340, 378, 340, 378, 340, 376, 340, 376, 340, 376, 340, 376, 340, 376, 340, 376, 340, 376, 340, 376, 340, 376, 340, 516, 338, 516, 338, 516, 338, 516, 338, 516, 338, 516, 338, 516, 338, 521, 329, 521, 329, 524, 319, 524, 319, 526, 313, 526, 313, 529, 305, 529, 305, 530, 302, 530, 302, 533, 295, 533, 295, 535, 292, 535, 292, 538, 284, 538, 284, 538, 281, 538, 281, 539, 275, 539, 275, 542, 266, 542, 266, 544, 262, 544, 262, 545, 256, 545, 256, 548, 253, 548, 253, 550, 247, 550, 247, 553, 241, 553, 241, 553, 238, 553, 238, 556, 233, 556, 233, 556, 232, 556, 232, 556, 232, 556, 232, 557, 232, 557, 232, 559, 229, 559, 229, 562, 226, 562, 226, 562, 226, 562, 226, 562, 226, 562, 226, 562, 226, 562, 226, 562, 226, 562, 226, 565, 223, 565, 223, 571, 223, 571, 223, 575, 223, 575, 223, 581, 221, 581, 221, 583, 221, 583, 221, 587, 221, 587, 221, 589, 221, 589, 221, 590, 221, 590, 221, 590, 221, 590, 221, 592, 221, 592, 221, 592, 221, 592, 221, 592, 221, 592, 221, 592, 221, 592, 221, 595, 224, 595, 224, 598, 230, 598, 230, 599, 234, 599, 234, 602, 239, 602, 239, 604, 245, 604, 245, 607, 248, 607, 248, 610, 254, 610, 254, 611, 258, 611, 258, 613, 261, 613, 261, 614, 264, 614, 264, 616, 269, 616, 269, 617, 275, 617, 275, 619, 281, 619, 281, 620, 288, 620, 288, 623, 293, 623, 293, 625, 297, 625, 297, 625, 299, 625, 299, 626, 303, 626, 303, 628, 309, 628, 309, 628, 311, 628, 311, 629, 312, 629, 312, 629, 315, 629, 315, 631, 318, 631, 318, 632, 323, 632, 323, 634, 327, 634, 327, 634, 330, 634, 330, 635, 333, 635, 333, 637, 336, 637, 336, 637, 336, 637, 336, 637, 338, 637, 338, 637, 339, 637, 339, 637, 339, 637, 339, 637, 339, 637, 339, 637, 341, 637, 341, 634, 341, 634, 341, 631, 341, 631, 341, 625, 341, 625, 341, 621, 341, 621, 341, 615, 341, 615, 341, 612, 341, 612, 341, 609, 341, 609, 341, 606, 341, 606, 341, 603, 342, 603, 342, 603, 342, 603, 342, 601, 342, 601, 342, 600, 342, 600, 342, 600, 342, 600, 342, 600, 342, 600, 342, 598, 342, 598, 342, 597, 340, 597, 340, 595, 335, 595, 335, 594, 332, 594, 332, 592, 328, 592, 328, 592, 326, 592, 326, 592, 326, 592, 326, 592, 326, 592, 326, 592, 325, 592, 325, 592, 325, 592, 325, 592, 325, 592, 325, 589, 325, 589, 325, 583, 325, 583, 325, 580, 325, 580, 325, 579, 325, 579, 325, 577, 325, 577, 325, 574, 325, 574, 325, 571, 325, 571, 325, 568, 325, 568, 325, 567, 325, 567, 325, 565, 325, 565, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 562, 325, 561, 325, 561, 325, 561, 327, 561, 327, 559, 330, 559, 330, 558, 333, 558, 333, 556, 336, 556, 336, 555, 339, 555, 339, 553, 342, 553, 342, 552, 344, 552, 344, 552, 345, 552, 345, 552, 345, 552, 345, 552, 345, 552, 345, 552, 345, 552, 345, 552, 345, 552, 345, 550, 345, 550, 345, 544, 345, 544, 345, 540, 345, 540, 345, 535, 345, 535, 345, 531, 345, 531, 345, 528, 345, 528, 345, 525, 345, 525, 345, 523, 345, 523, 345, 522, 345, 522, 345, 520, 345, 520, 345, 517, 345, 517, 345, 516, 345, 516, 345, 516, 345, 516, 345, 516, 345, 516, 345, 514, 345, 514, 345, 514, 345, 514, 345, 514, 345, 565, 296, 565, 296, 565, 296, 565, 295, 565, 295, 568, 292, 568, 292, 569, 290, 569, 290, 571, 286, 571, 286, 572, 284, 572, 284, 572, 280, 572, 280, 574, 277, 574, 277, 574, 274, 574, 274, 575, 272, 575, 272, 577, 268, 577, 268, 578, 266, 578, 266, 578, 263, 578, 263, 578, 263, 578, 263, 578, 263, 578, 263, 578, 263, 578, 263, 578, 263, 578, 263, 580, 266, 580, 266, 580, 272, 580, 272, 581, 278, 581, 278, 581, 282, 581, 282, 584, 285, 584, 285, 586, 290, 586, 290, 586, 293, 586, 293, 586, 296, 586, 296, 586, 299, 586, 299, 586, 300, 586, 300, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 586, 302, 585, 302, 585, 302, 579, 302, 579, 302, 574, 302, 574, 302, 571, 302, 571, 302, 570, 302, 570, 302, 567, 302, 567, 302, 565, 302, 565, 302, 565, 302, 565, 302, 562, 301, 562, 301, 562, 301, 562, 301, 562, 301, 562, 301, 562, 301, 256, 374, 256, 374, 256, 374, 256, 374, 256, 374, 256, 377, 256, 377, 256, 384, 256, 384, 256, 389, 256, 389, 256, 396, 256, 396, 256, 402, 256, 402, 256, 407, 256, 407, 256, 411, 256, 411, 256, 414, 256, 414, 256, 420, 256, 420, 256, 426, 256, 426, 256, 429, 256, 429, 256, 434, 256, 434, 256, 437, 256, 437, 256, 441, 256, 441, 256, 447, 256, 447, 257, 452, 257, 452, 257, 455, 257, 455, 257, 458, 257, 458, 257, 462, 257, 462, 257, 465, 257, 465, 257, 467, 257, 467, 257, 468, 257, 468, 257, 471, 257, 471, 257, 473, 257, 473, 257, 474, 257, 474, 257, 474, 257, 474, 257, 477, 257, 477, 257, 480, 257, 480, 257, 480, 257, 480, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 257, 485, 259, 485, 259, 485, 262, 485, 262, 485, 266, 485, 266, 485, 274, 485, 274, 485, 280, 485, 280, 485, 283, 485, 283, 485, 289, 485, 289, 485, 295, 485, 295, 485, 301, 485, 301, 485, 305, 485, 305, 485, 311, 485, 311, 485, 316, 485, 316, 485, 322, 484, 322, 484, 325, 484, 325, 484, 328, 484, 328, 484, 331, 484, 331, 484, 334, 482, 334, 482, 335, 482, 335, 482, 337, 482, 337, 482, 340, 482, 340, 482, 341, 482, 341, 482, 343, 482, 343, 482, 343, 482, 343, 482, 344, 482, 344, 482, 344, 482, 344, 482, 344, 482, 344, 482, 346, 481, 346, 481, 346, 476, 346, 476, 346, 472, 346, 472, 346, 466, 346, 466, 346, 463, 346, 463, 346, 460, 346, 460, 346, 455, 346, 455, 346, 455, 346, 455, 346, 455, 346, 455, 346, 455, 346, 455, 346, 455, 346, 455, 339, 455, 339, 455, 331, 455, 331, 455, 327, 455, 327, 455, 321, 455, 321, 455, 315, 455, 315, 455, 310, 455, 310, 455, 307, 455, 307, 455, 304, 455, 304, 455, 300, 455, 300, 455, 297, 455, 297, 455, 297, 455, 297, 455, 294, 455, 294, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 455, 292, 446, 292, 446, 292, 440, 292, 440, 292, 434, 292, 434, 292, 431, 292, 431, 292, 427, 292, 427, 292, 422, 292, 422, 293, 416, 293, 416, 293, 409, 293, 409, 293, 401, 293, 401, 293, 398, 293, 398, 293, 392, 293, 392, 293, 389, 293, 389, 293, 385, 293, 385, 293, 383, 293, 383, 293, 380, 293, 380, 293, 380, 293, 380, 293, 379, 293, 379, 293, 377, 293, 377, 293, 376, 293, 376, 293, 376, 293, 376, 293, 376, 293, 376, 293, 374, 293, 374, 293, 373, 293, 373, 293, 373, 293, 373, 293, 373, 293, 373, 293, 373, 293, 373, 289, 373, 289, 373, 285, 373, 285, 373, 280, 373, 280, 373, 274, 373, 274, 373, 268, 373, 268, 373, 265, 373, 265, 373, 261, 373, 261, 373, 258, 373, 258, 373, 256, 373, 256, 373, 255, 373, 255, 373, 255, 373, 255, 373, 255, 373, 255, 373, 255, 373, 388, 486, 388, 486, 388, 486, 388, 486, 388, 486, 388, 486, 388, 486, 388, 482, 388, 482, 391, 478, 391, 478, 392, 476, 392, 476, 394, 472, 394, 472, 394, 470, 394, 470, 395, 470, 395, 470, 398, 467, 398, 467, 400, 464, 400, 464, 400, 463, 400, 463, 401, 460, 401, 460, 403, 455, 403, 455, 404, 454, 404, 454, 404, 449, 404, 449, 406, 446, 406, 446, 407, 442, 407, 442, 409, 437, 409, 437, 410, 434, 410, 434, 412, 428, 412, 428, 413, 424, 413, 424, 413, 419, 413, 419, 415, 415, 415, 415, 415, 412, 415, 412, 418, 406, 418, 406, 419, 401, 419, 401, 421, 398, 421, 398, 422, 394, 422, 394, 424, 388, 424, 388, 427, 383, 427, 383, 427, 382, 427, 382, 427, 380, 427, 380, 428, 377, 428, 377, 428, 376, 428, 376, 428, 374, 428, 374, 428, 374, 428, 374, 428, 373, 428, 373, 428, 373, 428, 373, 428, 373, 428, 373, 428, 373, 428, 373, 428, 373, 428, 373, 433, 373, 433, 373, 436, 373, 436, 373, 440, 373, 440, 373, 442, 373, 442, 373, 446, 373, 446, 373, 449, 373, 449, 373, 452, 371, 452, 371, 454, 371, 454, 371, 457, 371, 457, 371, 461, 371, 461, 371, 463, 371, 463, 371, 464, 371, 464, 371, 464, 371, 464, 371, 467, 371, 467, 371, 467, 371, 467, 371, 467, 371, 467, 371, 467, 371, 467, 371, 467, 372, 467, 372, 470, 378, 470, 378, 472, 384, 472, 384, 475, 390, 475, 390, 476, 393, 476, 393, 478, 399, 478, 399, 481, 405, 481, 405, 481, 411, 481, 411, 484, 417, 484, 417, 484, 420, 484, 420, 487, 423, 487, 423, 487, 425, 487, 425, 490, 429, 490, 429, 490, 434, 490, 434, 494, 440, 494, 440, 496, 443, 496, 443, 497, 447, 497, 447, 499, 452, 499, 452, 500, 453, 500, 453, 502, 458, 502, 458, 503, 459, 503, 459, 503, 462, 503, 462, 505, 465, 505, 465, 506, 470, 506, 470, 506, 476, 506, 476, 508, 479, 508, 479, 508, 482, 508, 482, 509, 483, 509, 483, 511, 485, 511, 485, 511, 485, 511, 485, 511, 485, 511, 485, 511, 485, 511, 485, 511, 485, 511, 485, 510, 486, 510, 486, 505, 486, 505, 486, 499, 486, 499, 486, 492, 486, 492, 486, 487, 486, 487, 486, 481, 486, 481, 486, 475, 488, 475, 488, 475, 488, 475, 488, 474, 488, 474, 488, 472, 488, 472, 488, 472, 488, 472, 488, 472, 488, 472, 488, 472, 488, 472, 488, 469, 487, 469, 487, 469, 484, 469, 484, 466, 478, 466, 478, 465, 472, 465, 472, 465, 469, 465, 469, 465, 466, 465, 466, 463, 466, 463, 466, 463, 466, 463, 466, 463, 466, 463, 466, 463, 466, 463, 466, 460, 466, 460, 466, 451, 466, 451, 466, 447, 466, 447, 466, 444, 466, 444, 466, 441, 466, 441, 466, 438, 466, 438, 466, 435, 466, 435, 466, 432, 466, 432, 466, 432, 466, 432, 466, 429, 466, 429, 466, 429, 466, 429, 466, 429, 466, 429, 466, 429, 466, 429, 466, 429, 467, 429, 467, 429, 470, 429, 470, 429, 473, 429, 473, 429, 477, 429, 477, 429, 482, 429, 482, 427, 485, 427, 485, 427, 488, 427, 488, 427, 488, 427, 488, 426, 488, 426, 488, 426, 488, 426, 488, 424, 488, 424, 488, 418, 488, 418, 488, 411, 488, 411, 488, 403, 488, 403, 488, 400, 488, 400, 488, 396, 488, 396, 488, 394, 488, 394, 488, 393, 488, 393, 488, 391, 488, 391, 488, 391, 488, 391, 488, 391, 488, 391, 488, 390, 488, 390, 488, 390, 488, 390, 488, 390, 488, 436, 442, 436, 442, 436, 442, 437, 440, 437, 440, 439, 436, 439, 436, 440, 433, 440, 433, 442, 428, 442, 428, 442, 427, 442, 427, 442, 421, 442, 421, 442, 421, 442, 421, 442, 418, 442, 418, 443, 415, 443, 415, 443, 409, 443, 409, 445, 407, 445, 407, 445, 406, 445, 406, 445, 406, 445, 406, 446, 404, 446, 404, 446, 404, 446, 404, 446, 404, 446, 404, 446, 404, 446, 404, 446, 408, 446, 408, 448, 419, 448, 419, 449, 425, 449, 425, 452, 431, 452, 431, 452, 435, 452, 435, 454, 438, 454, 438, 455, 441, 455, 441, 455, 443, 455, 443, 455, 444, 455, 444, 455, 444, 455, 444, 455, 444, 455, 444, 455, 444, 455, 444, 454, 444, 454, 444, 450, 444, 450, 444, 445, 444, 445, 444, 442, 444, 442, 444, 441, 444, 441, 444, 441, 444, 441, 444, 438, 444, 438, 444, 436, 444, 436, 444, 435, 444, 435, 444, 433, 444, 433, 444, 433, 444, 433, 444, 433, 444, 433, 444, 433, 444, 535, 485, 535, 485, 535, 485, 535, 485, 535, 485, 535, 482, 535, 482, 535, 478, 535, 478, 535, 469, 535, 469, 535, 466, 535, 466, 536, 460, 536, 460, 536, 452, 536, 452, 536, 445, 536, 445, 536, 439, 536, 439, 536, 433, 536, 433, 536, 427, 536, 427, 536, 421, 536, 421, 536, 413, 536, 413, 536, 409, 536, 409, 536, 401, 536, 401, 536, 395, 536, 395, 536, 392, 536, 392, 536, 389, 536, 389, 535, 385, 535, 385, 535, 382, 535, 382, 535, 380, 535, 380, 536, 379, 536, 379, 536, 377, 536, 377, 538, 377, 538, 377, 539, 377, 539, 377, 539, 377, 539, 377, 542, 377, 542, 377, 544, 377, 544, 377, 548, 376, 548, 376, 551, 376, 551, 376, 554, 374, 554, 374, 557, 374, 557, 374, 562, 374, 562, 374, 568, 374, 568, 374, 571, 374, 571, 374, 575, 374, 575, 374, 583, 374, 583, 374, 587, 374, 587, 374, 595, 374, 595, 374, 598, 374, 598, 374, 604, 373, 604, 373, 610, 373, 610, 373, 613, 373, 613, 373, 617, 373, 617, 373, 622, 373, 622, 373, 625, 373, 625, 373, 626, 374, 626, 374, 629, 375, 629, 375, 632, 377, 632, 377, 634, 380, 634, 380, 635, 383, 635, 383, 638, 384, 638, 384, 640, 392, 640, 392, 640, 396, 640, 396, 641, 401, 641, 401, 641, 405, 641, 405, 641, 410, 641, 410, 639, 414, 639, 414, 633, 416, 633, 416, 627, 419, 627, 419, 622, 420, 622, 420, 619, 422, 619, 422, 615, 425, 615, 425, 615, 425, 615, 425, 615, 425, 615, 425, 615, 425, 615, 425, 615, 428, 615, 428, 619, 431, 619, 431, 623, 434, 623, 434, 628, 435, 628, 435, 631, 437, 631, 437, 632, 438, 632, 438, 635, 441, 635, 441, 637, 444, 637, 444, 640, 450, 640, 450, 641, 453, 641, 453, 641, 456, 641, 456, 641, 459, 641, 459, 641, 461, 641, 461, 639, 465, 639, 465, 634, 468, 634, 468, 631, 473, 631, 473, 625, 477, 625, 477, 621, 482, 621, 482, 618, 485, 618, 485, 612, 486, 612, 486, 607, 488, 607, 488, 603, 488, 603, 488, 594, 488, 594, 488, 586, 489, 586, 489, 580, 489, 580, 489, 570, 489, 570, 489, 562, 489, 562, 489, 556, 488, 556, 488, 552, 487, 552, 487, 547, 485, 547, 485, 541, 485, 541, 485, 538, 485, 538, 485, 537, 485, 537, 485, 535, 485, 535, 485, 535, 485, 535, 485, 535, 485, 535, 485, 535, 485, 572, 461, 572, 461, 572, 461, 574, 460, 574, 460, 574, 457, 574, 457, 575, 452, 575, 452, 575, 449, 575, 449, 575, 445, 575, 445, 575, 443, 575, 443, 575, 440, 575, 440, 575, 439, 575, 439, 575, 439, 575, 439, 575, 439, 575, 439, 575, 439, 575, 439, 577, 437, 577, 437, 583, 437, 583, 437, 583, 437, 583, 437, 586, 437, 586, 437, 587, 437, 587, 437, 589, 437, 589, 437, 593, 437, 593, 437, 595, 437, 595, 437, 596, 437, 596, 437, 599, 437, 599, 437, 601, 440, 601, 440, 604, 443, 604, 443, 605, 444, 605, 444, 607, 449, 607, 449, 607, 450, 607, 450, 603, 452, 603, 452, 597, 455, 597, 455, 592, 456, 592, 456, 585, 456, 585, 456, 579, 456, 579, 456, 574, 456, 574, 456, 570, 456, 570, 456, 570, 456, 570, 456, 570, 456, 570, 456, 570, 456, 574, 419, 574, 418, 574, 418, 574, 416, 574, 416, 574, 413, 574, 413, 574, 407, 574, 407, 574, 406, 574, 406, 574, 403, 574, 403, 574, 403, 574, 403, 574, 401, 574, 401, 574, 401, 574, 401, 574, 400, 574, 400, 574, 400, 574, 400, 574, 398, 574, 398, 574, 397, 574, 397, 574, 397, 574, 397, 574, 397, 574, 397, 577, 397, 577, 397, 583, 397, 583, 397, 587, 397, 587, 397, 592, 397, 592, 397, 593, 397, 593, 397, 596, 398, 596, 398, 598, 399, 598, 399, 599, 399, 599, 399, 601, 402, 601, 402, 605, 404, 605, 404, 607, 407, 607, 407, 607, 408, 607, 408, 607, 410, 607, 410, 607, 413, 607, 413, 604, 416, 604, 416, 603, 417, 603, 417, 600, 417, 600, 417, 594, 419, 594, 419, 591, 419, 591, 419, 586, 419, 586, 419, 582, 419, 582, 419, 579, 419, 579, 419, 576, 419, 576, 419, 574, 419, 574, 419, 574, 419, 574, 419, 574, 419, 574, 419, 574, 419, 574, 419, 574, 419, 574, 419, 574, 419 };