#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <avr/pgmspace.h>
#define OLED_Address 0x3C
Adafruit_SSD1306 display(128, 64);
const unsigned char sample[] PROGMEM = { 126, 126, 126, 126, 126, 126, 126, 126, 127, 128, 128, 129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 129, 128, 128, 128, 128, 128, 127, 126, 127, 127, 126, 127, 127, 127, 127, 128, 127, 127, 127, 128, 128, 127, 128, 127, 128, 127, 128, 128, 128, 127, 127, 127, 127, 128, 128, 128, 127, 128, 128, 128, 129, 129, 128, 128, 129, 128, 128, 127, 128, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 128, 128, 128, 128, 128, 127, 127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 127, 126, 127, 126, 126, 126, 126, 126, 126, 127, 128, 128, 127, 129, 128, 128, 129, 128, 128, 129, 128, 128, 129, 127, 128, 128, 128, 128, 129, 129, 129, 129, 129, 128, 127, 128, 127, 128, 127, 128, 128, 128, 127, 126, 126, 126, 126, 126, 127, 127, 128, 128, 128, 129, 130, 129, 128, 129, 129, 128, 128, 128, 127, 128, 128, 126, 127, 128, 127, 129, 128, 128, 128, 128, 126, 126, 126, 127, 127, 127, 128, 127, 128, 128, 128, 128, 128, 127, 127, 129, 128, 128, 128, 129, 128, 128, 127, 126, 127, 126, 126, 126, 127, 126, 128, 127, 127, 127, 127, 127, 127, 128, 127, 127, 128, 128, 126, 127, 127, 126, 126, 126, 127, 128, 128, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 126, 126, 126, 127, 128, 128, 128, 127, 127, 127, 128, 127, 127, 128, 129, 128, 128, 128, 128, 128, 127, 128, 128, 129, 129, 130, 128, 129, 129, 128, 128, 127, 127, 126, 126, 127, 128, 127, 127, 128, 127, 127, 128, 129, 128, 128, 128, 128, 127, 127, 128, 128, 127, 127, 128, 127, 127, 127, 127, 127, 128, 129, 129, 129, 129, 128, 128, 128, 127, 126, 125, 124, 126, 127, 125, 126, 127, 127, 127, 128, 128, 128, 127, 129, 127, 126, 128, 128, 128, 129, 129, 128, 130, 126, 126, 126, 126, 126, 129, 128, 127, 129, 127, 127, 127, 128, 127, 129, 128, 128, 127, 127, 129, 126, 127, 127, 127, 127, 128, 126, 127, 128, 126, 129, 129, 128, 127, 129, 126, 127, 128, 125, 124, 128, 129, 128, 130, 128, 127, 128, 128, 127, 127, 128, 128, 129, 129, 126, 127, 129, 128, 127, 129, 127, 126, 127, 126, 127, 126, 130, 126, 127, 128, 126, 125, 129, 126, 126, 129, 124, 126, 125, 128, 125, 130, 128, 126, 128, 127, 128, 127, 128, 125, 130, 125, 131, 127, 127, 128, 127, 129, 128, 130, 127, 131, 124, 128, 126, 131, 130, 127, 130, 125, 128, 127, 131, 124, 128, 125, 126, 125, 128, 125, 126, 141, 147, 159, 156, 160, 166, 172, 167, 176, 166, 145, 156, 145, 132, 134, 132, 119, 125, 115, 103, 98, 84, 70, 63, 71, 74, 82, 72, 67, 73, 85, 93, 106, 118, 133, 154, 162, 175, 171, 173, 196, 211, 217, 225, 221, 213, 199, 174, 149, 115, 88, 62, 43, 36, 30, 27, 32, 45, 54, 58, 67, 90, 105, 116, 130, 142, 158, 166, 170, 179, 178, 181, 187, 184, 191, 188, 182, 185, 185, 186, 178, 167, 168, 163, 153, 146, 140, 132, 119, 104, 97, 86, 75, 71, 66, 65, 65, 63, 63, 60, 64, 68, 66, 73, 74, 76, 81, 84, 90, 95, 110, 118, 125, 146, 151, 156, 169, 176, 182, 180, 180, 182, 183, 186, 182, 176, 173, 166, 163, 163, 159, 154, 153, 146, 138, 137, 135, 129, 123, 119, 118, 115, 109, 104, 96, 93, 98, 97, 99, 111, 110, 108, 118, 123, 122, 127, 131, 132, 135, 133, 135, 138, 133, 124, 114, 112, 104, 93, 97, 91, 86, 89, 86, 87, 85, 90, 94, 88, 93, 89, 87, 94, 96, 99, 100, 108, 115, 122, 135, 137, 149, 158, 155, 165, 171, 177, 177, 176, 181, 175, 174, 176, 174, 171, 162, 161, 157, 149, 148, 141, 135, 129, 126, 127, 121, 117, 118, 116, 117, 118, 114, 117, 118, 113, 118, 119, 118, 120, 118, 117, 115, 121, 126, 120, 120, 120, 122, 130, 130, 127, 130, 135, 134, 137, 142, 144, 143, 140, 146, 144, 138, 139, 136, 135, 137, 139, 136, 133, 140, 134, 133, 135, 125, 127, 121, 114, 118, 116, 116, 115, 116, 115, 111, 117, 114, 112, 121, 122, 117, 119, 120, 122, 126, 128, 128, 125, 132, 137, 129, 133, 134, 132, 140, 138, 143, 141, 137, 142, 130, 129, 129, 123, 126, 122, 120, 117, 116, 116, 107, 109, 108, 105, 108, 111, 116, 115, 118, 122, 120, 123, 123, 123, 125, 129, 127, 124, 130, 132, 135, 141, 147, 147, 149, 152, 146, 142, 137, 126, 126, 121, 115, 113, 112, 110, 108, 113, 111, 112, 121, 121, 127, 134, 138, 138, 140, 144, 142, 144, 146, 142, 143, 145, 146, 145, 144, 142, 140, 142, 138, 139, 143, 141, 146, 146, 142, 143, 141, 138, 139, 136, 132, 132, 128, 122, 123, 120, 117, 120, 114, 107, 109, 107, 105, 105, 106, 111, 111, 109, 117, 119, 119, 122, 125, 125, 125, 131, 132, 133, 136, 136, 138, 140, 143, 146, 144, 141, 141, 143, 137, 134, 137, 131, 127, 126, 122, 124, 121, 117, 117, 119, 122, 118, 121, 124, 118, 121, 119, 115, 120, 116, 119, 122, 118, 125, 124, 126, 132, 129, 134, 132, 130, 135, 131, 135, 135, 132, 137, 132, 132, 133, 127, 125, 123, 124, 119, 115, 122, 120, 121, 130, 131, 130, 133, 132, 129, 129, 129, 126, 122, 122, 122, 121, 123, 121, 117, 119, 116, 112, 114, 116, 116, 114, 115, 118, 114, 117, 121, 118, 125, 129, 126, 136, 137, 137, 145, 142, 147, 153, 154, 158, 157, 157, 155, 156, 159, 152, 152, 151, 145, 147, 142, 139, 138, 134, 132, 129, 128, 127, 124, 121, 118, 119, 119, 117, 118, 119, 115, 116, 118, 114, 114, 115, 114, 112, 112, 113, 108, 108, 110, 107, 109, 112, 116, 117, 114, 115, 115, 116, 118, 119, 121, 121, 124, 124, 126, 126, 127, 132, 130, 134, 138, 138, 142, 142, 145, 144, 141, 143, 136, 137, 140, 134, 134, 134, 134, 135, 132, 133, 133, 130, 130, 129, 129, 126, 123, 127, 126, 126, 128, 127, 127, 126, 126, 126, 124, 125, 122, 123, 126, 125, 128, 127, 128, 130, 130, 133, 132, 131, 127, 125, 127, 123, 125, 126, 125, 128, 127, 127, 127, 130, 131, 128, 131, 132, 134, 135, 132, 134, 135, 134, 132, 130, 129, 127, 126, 127, 125, 126, 129, 127, 129, 131, 127, 129, 127, 128, 128, 126, 128, 122, 123, 126, 119, 122, 120, 119, 120, 118, 120, 116, 118, 120, 117, 121, 121, 120, 123, 122, 122, 122, 124, 123, 121, 121, 122, 120, 120, 123, 121, 122, 123, 124, 124, 122, 125, 126, 126, 129, 127, 128, 131, 130, 131, 132, 133, 134, 136, 135, 132, 133, 135, 133, 130, 134, 131, 129, 133, 130, 130, 132, 133, 134, 130, 135, 132, 130, 135, 129, 131, 134, 130, 131, 130, 131, 129, 128, 130, 126, 127, 130, 125, 125, 128, 124, 124, 126, 127, 125, 124, 127, 124, 123, 127, 124, 124, 126, 127, 128, 127, 130, 129, 127, 131, 129, 128, 130, 131, 129, 129, 131, 128, 128, 127, 122, 121, 123, 122, 117, 120, 119, 116, 120, 120, 119, 121, 121, 123, 122, 124, 125, 123, 130, 131, 130, 134, 134, 133, 135, 135, 134, 133, 136, 134, 133, 139, 137, 137, 142, 139, 140, 142, 138, 139, 137, 135, 135, 132, 129, 126, 125, 121, 120, 121, 118, 116, 112, 111, 113, 111, 111, 111, 110, 113, 118, 116, 117, 123, 118, 122, 127, 118, 124, 131, 124, 129, 136, 132, 141, 148, 143, 165, 175, 165, 184, 186, 173, 181, 164, 141, 141, 130, 127, 128, 116, 108, 102, 94, 88, 72, 66, 70, 72, 75, 75, 90, 107, 112, 128, 143, 156, 165, 173, 186, 183, 178, 177, 167, 164, 161, 153, 144, 139, 134, 120, 111, 102, 89, 83, 73, 69, 71, 69, 73, 78, 79, 83, 85, 88, 94, 98, 103, 109, 112, 116, 119, 119, 121, 123, 132, 141, 147, 158, 164, 171, 183, 184, 189, 195, 192, 192, 193, 192, 189, 182, 175, 168, 160, 156, 145, 133, 131, 122, 111, 107, 106, 107, 106, 109, 110, 108, 105, 99, 98, 98, 93, 94, 98, 100, 104, 109, 112, 111, 116, 122, 121, 126, 132, 134, 139, 141, 140, 141, 138, 138, 138, 137, 136, 131, 128, 125, 120, 119, 114, 113, 112, 104, 101, 98, 95, 96, 95, 99, 103, 109, 116, 119, 126, 133, 139, 147, 149, 152, 157, 159, 163, 164, 160, 163, 163, 159, 157, 153, 146, 137, 133, 129, 119, 114, 110, 101, 96, 94, 87, 81, 82, 80, 77, 82, 83, 84, 89, 94, 99, 103, 112, 117, 121, 128, 132, 137, 140, 141, 143, 144, 149, 149, 148, 152, 150, 152, 154, 149, 152, 152, 146, 145, 146, 145, 143, 140, 142, 141, 141, 143, 146, 148, 147, 150, 150, 145, 151, 148, 143, 148, 146, 146, 151, 152, 153, 151, 151, 150, 147, 146, 142, 140, 134, 125, 125, 120, 112, 109, 106, 103, 100, 96, 90, 83, 83, 83, 78, 80, 81, 78, 84, 86, 85, 88, 91, 93, 94, 97, 103, 105, 111, 117, 120, 122, 129, 140, 143, 147, 158, 161, 165, 174, 171, 168, 171, 166, 161, 162, 157, 151, 149, 142, 136, 131, 127, 121, 116, 118, 115, 113, 115, 113, 111, 113, 117, 116, 118, 127, 124, 125, 133, 131, 131, 138, 139, 135, 140, 142, 138, 139, 138, 133, 132, 131, 128, 124, 123, 120, 117, 117, 114, 115, 116, 115, 118, 120, 121, 124, 127, 128, 131, 132, 133, 135, 133, 138, 142, 141, 145, 146, 147, 148, 148, 150, 148, 148, 147, 145, 147, 146, 144, 139, 141, 135, 127, 131, 120, 116, 119, 112, 112, 112, 111, 111, 114, 119, 115, 119, 123, 120, 122, 125, 123, 122, 127, 128, 126, 131, 130, 124, 126, 129, 125, 124, 131, 130, 127, 133, 133, 130, 132, 127, 125, 129, 127, 124, 125, 125, 126, 124, 127, 128, 124, 126, 125, 125, 125, 125, 127, 122, 122, 125, 123, 125, 125, 122, 121, 124, 126, 125, 131, 132, 131, 136, 136, 137, 140, 140, 139, 137, 138, 138, 140, 142, 138, 138, 139, 137, 138, 137, 134, 133, 132, 132, 130, 129, 130, 125, 124, 125, 122, 121, 120, 120, 117, 119, 119, 116, 120, 119, 115, 117, 119, 121, 122, 124, 125, 126, 128, 126, 128, 130, 127, 127, 129, 129, 127, 127, 128, 125, 126, 125, 125, 127, 125, 126, 127, 127, 131, 131, 131, 134, 133, 134, 134, 135, 132, 129, 132, 127, 123, 125, 123, 124, 125, 122, 123, 125, 126, 125, 125, 124, 120, 124, 125, 122, 125, 124, 121, 122, 127, 125, 123, 129, 127, 125, 129, 129, 128, 126, 130, 129, 126, 132, 130, 127, 129, 129, 128, 129, 132, 130, 131, 135, 131, 133, 138, 135, 135, 133, 132, 134, 132, 129, 128, 129, 127, 121, 123, 121, 116, 119, 115, 115, 117, 113, 116, 114, 113, 117, 115, 115, 120, 122, 120, 123, 128, 124, 126, 131, 127, 128, 130, 131, 130, 133, 135, 128, 132, 132, 126, 131, 128, 125, 126, 127, 126, 122, 125, 124, 120, 124, 121, 121, 124, 122, 121, 122, 126, 124, 125, 128, 126, 127, 128, 127, 126, 127, 130, 126, 127, 131, 127, 129, 131, 127, 129, 128, 126, 127, 125, 128, 128, 128, 129, 126, 127, 127, 126, 125, 123, 128, 127, 124, 130, 127, 128, 128, 127, 129, 127, 130, 127, 126, 130, 123, 126, 130, 123, 126, 128, 127, 126, 127, 127, 124, 129, 127, 124, 128, 125, 123, 125, 123, 123, 125, 125, 124, 125, 127, 126, 126, 127, 126, 126, 127, 126, 125, 126, 126, 124, 124, 123, 120, 121, 119, 119, 120, 118, 124, 125, 123, 127, 124, 126, 127, 125, 128, 124, 127, 129, 123, 127, 131, 131, 131, 133, 134, 131, 131, 130, 126, 126, 126, 125, 122, 126, 125, 121, 125, 124, 125, 126, 120, 119, 119, 114, 117, 119, 119, 122, 124, 126, 128, 131, 129, 128, 135, 131, 131, 137, 135, 133, 135, 137, 135, 133, 136, 131, 128, 124, 118, 119, 113, 112, 120, 121, 125, 127, 129, 130, 128, 131, 132, 130, 127, 123, 128, 128, 124, 133, 140, 135, 130, 130, 124, 116, 121, 122, 118, 127, 126, 119, 125, 131, 134, 137, 142, 142, 127, 124, 123, 114, 127, 140, 133, 134, 143, 138, 125, 122, 120, 115, 115, 116, 114, 114, 121, 130, 127, 119, 127, 132, 125, 119, 103, 101, 105, 99, 133, 160, 136, 146, 168, 141, 133, 150, 139, 133, 139, 141, 138, 136, 154, 178, 178, 160, 148, 108, 43, 36, 18, 0, 18, 27, 33, 120, 150, 155, 218, 236, 214, 232, 247, 194, 140, 142, 130, 114, 139, 166, 154, 100, 91, 100, 51, 59, 90, 73, 82, 88, 83, 110, 152, 207, 251, 255, 227, 180, 126, 115, 137, 120, 100, 121, 146, 160, 143, 126, 140, 126, 93, 127, 119, 26, 46, 111, 78, 81, 130, 130, 127, 142, 114, 79, 108, 136, 128, 135, 143, 120, 131, 167, 154, 151, 184, 195, 125, 45, 80, 95, 79, 122, 144, 163, 150, 130, 131, 83, 92, 109, 94, 114, 105, 111, 123, 123, 157, 187, 201, 187, 194, 197, 149, 145, 148, 126, 125, 131, 152, 157, 116, 102, 119, 108, 115, 128, 121, 111, 59, 67, 133, 148, 169, 193, 215, 201, 152, 143, 110, 100, 125, 126, 152, 139, 113, 137, 144, 142, 162, 167, 120, 77, 65, 63, 79, 102, 131, 138, 159, 177, 144, 156, 164, 137, 138, 130, 129, 112, 77, 87, 118, 130, 129, 158, 174, 146, 128, 103, 79, 87, 104, 99, 95, 127, 140, 134, 127, 108, 116, 136, 139, 110, 86, 97, 109, 142, 143, 133, 175, 168, 133, 125, 117, 121, 115, 120, 120, 96, 101, 114, 131, 141, 129, 144, 153, 148, 136, 109, 114, 108, 100, 129, 141, 148, 155, 135, 135, 146, 135, 125, 130, 126, 124, 112, 89, 109, 128, 129, 142, 132, 130, 127, 103, 114, 121, 120, 139, 155, 159, 139, 131, 147, 153, 156, 147, 137, 128, 115, 117, 109, 120, 141, 125, 130, 145, 129, 112, 111, 110, 98, 106, 132, 142, 133, 133, 151, 149, 139, 155, 166, 147, 117, 118, 128, 107, 109, 142, 154, 133, 127, 128, 109, 114, 130, 129, 127, 134, 134, 114, 124, 142, 136, 140, 144, 141, 123, 112, 118, 105, 111, 124, 127, 144, 149, 141, 128, 138, 155, 136, 130, 139, 130, 111, 108, 112, 104, 121, 136, 131, 124, 119, 125, 116, 113, 129, 141, 148, 130, 127, 129, 122, 136, 124, 124, 142, 124, 110, 113, 121, 125, 124, 135, 137, 132, 127, 128, 131, 125, 128, 131, 133, 146, 137, 122, 125, 115, 112, 132, 133, 122, 118, 118, 121, 115, 121, 131, 137, 146, 132, 128, 132, 119, 130, 136, 130, 140, 133, 123, 114, 110, 126, 125, 125, 125, 114, 124, 121, 109, 124, 131, 129, 131, 123, 120, 124, 124, 125, 131, 132, 128, 132, 132, 125, 128, 127, 121, 125, 127, 123, 122, 120, 120, 121, 120, 124, 133, 141, 131, 116, 125, 130, 123, 123, 122, 124, 122, 122, 130, 125, 127, 136, 137, 138, 130, 127, 133, 130, 134, 135, 133, 134, 125, 120, 119, 116, 113, 113, 122, 118, 112, 125, 125, 124, 133, 133, 135, 137, 136, 136, 133, 132, 134, 136, 137, 131, 128, 128, 126, 122, 121, 125, 128, 127, 120, 119, 125, 129, 131, 133, 137, 130, 125, 124, 116, 124, 128, 127, 137, 136, 137, 140, 135, 138, 134, 130, 129, 125, 124, 114, 112, 118, 117, 121, 128, 129, 126, 130, 130, 124, 125, 130, 132, 128, 128, 131, 134, 138, 136, 136, 139, 135, 130, 126, 125, 122, 122, 127, 126, 126, 122, 123, 126, 120, 120, 124, 124, 120, 117, 120, 123, 125, 127, 131, 135, 139, 143, 139, 135, 135, 129, 132, 130, 129, 130, 125, 129, 124, 130, 133, 128, 129, 120, 121, 121, 119, 122, 120, 125, 131, 127, 127, 131, 130, 131, 131, 131, 131, 132, 132, 127, 129, 131, 133, 130, 133, 128, 126, 127, 123, 119, 122, 129, 121, 126, 131, 129, 129, 130, 130, 130, 133, 135, 127, 132, 131, 130, 131, 129, 133, 130, 129, 125, 125, 125, 125, 123, 128, 129, 126, 128, 128, 127, 128, 134, 127, 128, 124, 118, 122, 122, 126, 122, 127, 130, 133, 134, 132, 134, 131, 135, 130, 133, 128, 132, 133, 125, 128, 124, 124, 120, 122, 120, 117, 124, 120, 118, 128, 127, 129, 135, 132, 132, 129, 130, 130, 129, 131, 123, 131, 129, 123, 131, 126, 127, 126, 120, 123, 118, 120, 121, 121, 125, 122, 124, 124, 127, 124, 122, 128, 127, 126, 128, 128, 125, 128, 128, 132, 134, 131, 133, 131, 132, 130, 127, 127, 127, 128, 125, 123, 126, 123, 125, 125, 126, 129, 126, 126, 125, 129, 126, 123, 125, 130, 127, 128, 129, 129, 131, 132, 133, 130, 130, 129, 127, 131, 126, 126, 127, 127, 127, 124, 127, 127, 129, 128, 132, 131, 132, 128, 131, 129, 124, 126, 125, 126, 128, 130, 129, 128, 128, 131, 125, 128, 127, 127, 130, 127, 124, 127, 128, 131, 127, 129, 130, 128, 129, 125, 127, 128, 129, 129, 128, 126, 128, 129, 128, 127, 128, 128, 127, 127, 125, 124, 123, 124, 126, 124, 130, 125, 123, 129, 129, 132, 129, 129, 130, 130, 127, 127, 128, 131, 135, 131, 131, 128, 131, 131, 127, 128, 126, 123, 123, 122, 126, 125, 128, 132, 128, 131, 130, 132, 126, 125, 130, 128, 127, 128, 133, 132, 128, 126, 128, 127, 127, 123, 125, 120, 122, 122, 125, 125, 128, 134, 130, 133, 131, 129, 133, 132, 128, 130, 132, 133, 125, 140, 127, 130, 121, 133, 128, 127, 128, 120, 137, 115, 135, 117, 127, 119, 126, 124, 122, 119, 112, 135, 114, 124, 126, 129, 119, 126, 129, 120, 125, 121, 117, 120, 123, 129, 125, 132, 136, 132, 131, 130, 132, 131, 134, 129, 128, 129, 131, 131, 129, 128, 134, 126, 129, 128, 122, 125, 128, 130, 127, 134, 136, 134, 136, 137, 131, 131, 135, 131, 128, 130, 123, 122, 123, 124, 124, 124, 129, 129, 131, 130, 130, 131, 134, 136, 130, 127, 131, 130, 128, 123, 125, 124, 125, 129, 128, 128, 124, 131, 127, 129, 128, 130, 132, 132, 133, 133, 135, 130, 132, 129, 131, 125, 127, 123, 124, 126, 123, 125, 124, 126, 126, 123, 124, 125, 122, 123, 123, 125, 123, 128, 128, 132, 131, 133, 134, 127, 130, 131, 126, 124, 129, 125, 127, 129, 129, 127, 125, 132, 129, 129, 128, 128, 128, 126, 128, 122, 124, 127, 129, 124, 126, 126, 126, 127, 126, 125, 124, 128, 127, 128, 128, 130, 133, 130, 128, 132, 124, 126, 126, 124, 125, 125, 126, 125, 129, 127, 124, 126, 130, 125, 122, 128, 127, 126, 132, 129, 128, 130, 131, 127, 124, 128, 125, 126, 131, 129, 126, 132, 129, 127, 123, 128, 126, 121, 125, 119, 125, 121, 127, 125, 124, 133, 129, 128, 132, 132, 122, 129, 129, 122, 125, 131, 126, 122, 132, 125, 120, 127, 124, 124, 123, 126, 126, 122, 131, 123, 121, 125, 127, 120, 123, 126, 122, 123, 128, 127, 121, 132, 131, 128, 128, 136, 133, 129, 133, 129, 126, 127, 128, 121, 126, 127, 121, 123, 127, 120, 123, 124, 125, 125, 128, 127, 122, 126, 130, 126, 126, 130, 127, 129, 130, 128, 127, 131, 136, 132, 128, 132, 130, 127, 128, 125, 124, 122, 123, 124, 113, 119, 115, 118, 118, 117, 124, 118, 124, 124, 127, 125, 127, 130, 128, 127, 133, 127, 127, 130, 132, 127, 129, 135, 132, 132, 131, 136, 127, 138, 132, 131, 131, 132, 132, 127, 125, 125, 119, 120, 121, 114, 121, 118, 125, 116, 123, 124, 125, 124, 120, 125, 124, 122, 123, 121, 121, 126, 123, 122, 121, 120, 117, 116, 114, 116, 115, 117, 117, 118, 124, 123, 122, 128, 127, 128, 131, 129, 132, 137, 138, 137, 141, 140, 138, 140, 136, 130, 130, 128, 130, 131, 130, 129, 136, 136, 133, 131, 133, 132, 140, 136, 138, 134, 128, 140, 132, 139, 135, 142, 129, 134, 134, 131, 135, 127, 131, 130, 126, 122, 123, 116, 119, 104, 98, 92, 82, 83, 74, 78, 81, 82, 97, 112, 121, 135, 129, 142, 153, 145, 162, 147, 152, 158, 149, 147, 147, 152, 156, 148, 134, 118, 99, 102, 82, 96, 90, 92, 103, 111, 119, 129, 133, 137, 148, 139, 157, 153, 147, 143, 160, 158, 162, 162, 157, 144, 148, 143, 115, 114, 117, 115, 131, 138, 120, 117, 120, 131, 105, 118, 119, 113, 108, 103, 113, 120, 120, 124, 132, 126, 135, 129, 145, 143, 144, 136, 138, 137, 138, 122, 119, 134, 124, 131, 120, 131, 122, 123, 123, 105, 127, 134, 130, 149, 136, 147, 161, 138, 146, 139, 149, 146, 130, 133, 121, 125, 127, 126, 119, 112, 117, 109, 91, 99, 98, 94, 113, 120, 116, 119, 130, 120, 136, 137, 140, 135, 124, 130, 128, 128, 128, 135, 139, 141, 137, 133, 124, 129, 124, 111, 107, 119, 123, 110, 122, 120, 117, 125, 124, 125, 126, 125, 123, 125, 130, 129, 128, 138, 137, 125, 139, 135, 125, 134, 132, 140, 142, 133, 129, 120, 136, 133, 129, 149, 136, 135, 133, 126, 130, 115, 117, 127, 114, 124, 131, 128, 134, 134, 137, 128, 124, 128, 121, 122, 126, 120, 121, 124, 128, 128, 122, 131, 122, 121, 130, 128, 127, 120, 134, 125, 127, 127, 127, 131, 129, 132, 122, 122, 126, 122, 120, 130, 122, 128, 127, 126, 129, 121, 128, 124, 122, 129, 126, 121, 129, 129, 128, 131, 127, 133, 133, 138, 131, 129, 132, 129, 129, 128, 129, 125, 129, 124, 127, 124, 127, 125, 123, 123, 117, 120, 123, 127, 122, 129, 130, 130, 127, 129, 123, 132, 126, 121, 126, 122, 132, 127, 127, 134, 126, 130, 132, 123, 123, 118, 124, 124, 121, 123, 123, 127, 131, 125, 127, 123, 126, 124, 122, 125, 123, 124, 125, 129, 121, 132, 126, 128, 122, 116, 118, 119, 125, 119, 124, 125, 128, 127, 131, 127, 131, 129, 129, 129, 119, 129, 118, 118, 122, 123, 120, 126, 124, 119, 132, 130, 126, 130, 130, 126, 135, 125, 130, 134, 130, 130, 129, 133, 127, 125, 121, 122, 123, 121, 120, 125, 126, 122, 123, 123, 122, 122, 124, 125, 121, 123, 126, 122, 126, 128, 123, 137, 129, 119, 128, 134, 123, 133, 133, 131, 131, 118, 129, 122, 131, 122, 125, 133, 124, 120, 130, 122, 123, 121, 119, 122, 127, 133, 115, 129, 124, 119, 129, 143, 119, 131, 132, 130, 134, 129, 128, 130, 132, 123, 126, 104, 129, 120, 116, 119, 126, 117, 127, 135, 121, 132, 136, 128, 127, 144, 119, 126, 133, 125, 126, 131, 127, 135, 128, 127, 134, 125, 133, 126, 131, 131, 123, 125, 126, 125, 123, 122, 119, 125, 129, 121, 128, 131, 129, 131, 136, 131, 132, 140, 134, 131, 133, 126, 121, 126, 126, 121, 120, 113, 114, 120, 119, 122, 120, 134, 127, 122, 128, 133, 128, 135, 133, 123, 137, 132, 128, 128, 126, 122, 121, 125, 120, 118, 129, 121, 131, 123, 122, 129, 120, 122, 118, 126, 127, 123, 122, 127, 121, 130, 125, 125, 130, 125, 133, 128, 134, 129, 133, 128, 128, 132, 128, 128, 129, 128, 126, 131, 131, 131, 129, 134, 128, 127, 128, 124, 125, 119, 125, 123, 122, 127, 126, 126, 128, 134, 124, 126, 127, 128, 127, 128, 126, 126, 127, 123, 125, 122, 125, 123, 125, 121, 133, 123, 122, 129, 124, 129, 131, 131, 128, 131, 132, 125, 128, 132, 123, 131, 129, 129, 124, 133, 129, 125, 134, 133, 131, 125, 133, 128, 120, 127, 123, 120, 129, 128, 126, 126, 133, 127, 129, 130, 128, 127, 128, 134, 130, 129, 129, 128, 126, 127, 125, 121, 123, 130, 121, 127, 128, 127, 130, 126, 129, 128, 128, 130, 129, 123, 127, 122, 121, 129, 124, 123, 125, 131, 124, 129, 132, 123, 132, 131, 131, 127, 131, 126, 124, 127, 122, 122, 122, 128, 124, 126, 132, 129, 128, 130, 130, 132, 131, 136, 134, 129, 130, 131, 129, 127, 130, 131, 126, 127, 134, 122, 126, 130, 121, 126, 126, 125, 123, 123, 123, 123, 128, 128, 126, 125, 130, 128, 129, 130, 131, 129, 129, 131, 135, 131, 129, 130, 129, 129, 126, 124, 122, 126, 121, 119, 121, 120, 119, 127, 125, 125, 133, 130, 129, 136, 137, 134, 133, 133, 132, 131, 128, 134, 125, 130, 135, 122, 132, 126, 128, 113, 118, 122, 117, 117, 120, 123, 121, 132, 131, 136, 134, 130, 129, 133, 128, 125, 131, 143, 129, 134, 145, 144, 139, 139, 140, 130, 126, 122, 118, 112, 116, 115, 118, 119, 119, 116, 118, 115, 111, 107, 113, 111, 117, 131, 142, 147, 153, 175, 176, 173, 175, 171, 150, 145, 143, 126, 105, 114, 110, 101, 99, 101, 103, 103, 106, 101, 106, 107, 114, 119, 136, 137, 138, 168, 168, 151, 156, 151, 150, 153, 131, 126, 124, 124, 133, 129, 136, 122, 130, 137, 122, 123, 111, 108, 115, 109, 108, 121, 129, 140, 123, 130, 134, 141, 144, 127, 137, 139, 133, 139, 136, 140, 149, 156, 160, 150, 145, 122, 115, 112, 115, 114, 117, 110, 111, 117, 119, 121, 118, 134, 126, 128, 131, 141, 141, 138, 144, 144, 151, 146, 144, 139, 134, 130, 127, 126, 120, 116, 116, 114, 119, 140, 125, 129, 124, 123, 133, 110, 124, 126, 132, 133, 133, 144, 148, 144, 151, 139, 139, 145, 130, 134, 121, 124, 119, 126, 127, 117, 117, 130, 127, 125, 130, 115, 122, 113, 122, 124, 125, 134, 134, 141, 142, 140, 138, 137, 127, 122, 124, 128, 126, 130, 129, 131, 134, 129, 128, 125, 125, 128, 126, 129, 130, 124, 130, 125, 133, 140, 136, 137, 135, 132, 128, 126, 125, 130, 127, 126, 129, 132, 137, 128, 125, 130, 127, 129, 126, 126, 120, 116, 123, 120, 127, 132, 130, 132, 133, 139, 138, 136, 141, 130, 128, 129, 128, 130, 125, 126, 130, 128, 126, 124, 124, 115, 119, 119, 125, 128, 120, 129, 132, 130, 126, 132, 126, 129, 127, 127, 135, 131, 131, 132, 133, 130, 136, 136, 132, 126, 126, 127, 123, 123, 124, 127, 127, 123, 129, 128, 127, 131, 128, 130, 129, 132, 129, 128, 132, 133, 138, 134, 132, 135, 128, 127, 125, 128, 127, 123, 123, 122, 127, 125, 124, 127, 125, 122, 127, 125, 128, 122, 119, 127, 125, 127, 132, 134, 134, 134, 130, 130, 124, 125, 126, 118, 121, 124, 119, 125, 127, 127, 124, 122, 126, 117, 123, 124, 123, 126, 132, 133, 130, 133, 133, 131, 132, 132, 128, 134, 125, 128, 127, 123, 126, 126, 126, 124, 131, 126, 122, 121, 122, 122, 121, 120, 126, 127, 125, 129, 128, 131, 129, 130, 129, 126, 129, 125, 126, 131, 129, 131, 130, 129, 129, 130, 128, 124, 125, 126, 123, 121, 126, 123, 123, 119, 124, 118, 120, 123, 118, 124, 116, 122, 119, 126, 129, 126, 134, 134, 128, 131, 135, 132, 130, 134, 138, 134, 138, 139, 144, 137, 138, 134, 132, 128, 132, 134, 132, 134, 134, 130, 125, 130, 126, 124, 119, 117, 113, 114, 105, 110, 103, 104, 102, 107, 102, 111, 123, 106, 120, 127, 134, 130, 155, 130, 142, 162, 148, 155, 156, 147, 138, 157, 131, 134, 129, 114, 113, 113, 98, 96, 106, 91, 99, 98, 103, 110, 109, 107, 115, 121, 122, 132, 138, 146, 151, 152, 158, 152, 159, 155, 152, 151, 149, 148, 144, 149, 139, 148, 140, 141, 139, 135, 139, 133, 129, 118, 121, 108, 109, 104, 102, 96, 91, 96, 81, 84, 82, 83, 84, 84, 92, 97, 102, 113, 121, 127, 131, 136, 144, 141, 142, 146, 148, 149, 153, 149, 151, 152, 151, 150, 149, 148, 143, 145, 144, 143, 140, 142, 137, 134, 131, 127, 129, 122, 122, 120, 117, 119, 118, 119, 120, 120, 121, 121, 123, 122, 122, 126, 128, 124, 130, 128, 130, 135, 137, 136, 130, 138, 134, 130, 131, 132, 123, 127, 126, 121, 118, 116, 114, 108, 109, 110, 109, 110, 114, 113, 117, 117, 124, 123, 127, 128, 128, 133, 132, 136, 138, 140, 143, 140, 144, 149, 148, 151, 146, 150, 153, 146, 143, 148, 139, 136, 137, 132, 129, 131, 132, 129, 128, 126, 128, 122, 126, 125, 123, 123, 124, 122, 125, 128, 123, 122, 121, 126, 115, 120, 122, 117, 115, 117, 117, 112, 119, 113, 114, 114, 112, 114, 110, 115, 113, 115, 116, 119, 124, 123, 127, 126, 128, 131, 132, 128, 131, 133, 131, 130, 128, 134, 134, 134, 139, 136, 137, 142, 142, 145, 142, 140, 140, 141, 141, 141, 140, 141, 140, 141, 139, 135, 140, 135, 134, 140, 138, 138, 140, 139, 140, 136, 139, 132, 130, 131, 122, 120, 120, 118, 118, 119, 118, 121, 118, 124, 124, 120, 123, 129, 121, 122, 126, 120, 122, 122, 123, 120, 124, 121, 120, 121, 124, 123, 121, 124, 124, 126, 130, 131, 126, 128, 128, 130, 129, 124, 130, 128, 131, 132, 133, 135, 132, 133, 134, 131, 129, 133, 129, 124, 122, 125, 120, 118, 118, 112, 115, 116, 116, 116, 115, 116, 114, 117, 122, 119, 119, 120, 122, 119, 120, 120, 122, 119, 124, 123, 123, 128, 125, 131, 126, 130, 130, 127, 133, 132, 128, 134, 129, 134, 139, 135, 139, 136, 143, 138, 142, 146, 141, 145, 145, 143, 144, 144, 147, 142, 140, 148, 141, 142, 147, 137, 141, 141, 134, 141, 137, 134, 134, 134, 130, 129, 130, 125, 126, 127, 126, 122, 122, 122, 123, 121, 122, 126, 119, 123, 123, 118, 125, 120, 117, 115, 119, 117, 120, 124, 120, 128, 127, 127, 136, 130, 130, 133, 132, 131, 125, 127, 124, 124, 124, 119, 119, 119, 118, 118, 114, 116, 113, 112, 116, 111, 115, 113, 114, 116, 112, 113, 113, 113, 115, 120, 123, 124, 130, 139, 136, 140, 147, 149, 149, 155, 156, 154, 159, 158, 155, 157, 150, 145, 145, 143, 142, 142, 138, 134, 129, 119, 110, 106, 105, 99, 91, 90, 85, 86, 89, 84, 85, 91, 96, 111, 127, 136, 144, 152, 162, 171, 174, 180, 188, 191, 192, 183, 174, 165, 145, 125, 107, 92, 83, 72, 69, 68, 60, 62, 68, 74, 86, 93, 102, 117, 128, 139, 146, 154, 164, 164, 167, 173, 171, 172, 173, 171, 172, 172, 170, 163, 162, 164, 157, 152, 151, 146, 136, 127, 124, 116, 106, 96, 89, 84, 76, 72, 70, 65, 64, 66, 65, 65, 69, 72, 73, 78, 83, 86, 87, 96, 109, 114, 125, 138, 142, 152, 156, 155, 163, 169, 170, 170, 168, 173, 173, 171, 170, 163, 160, 159, 153, 152, 148, 143, 140, 137, 135, 131, 128, 125, 122, 120, 115, 112, 108, 106, 106, 102, 109, 115, 111, 116, 119, 119, 122, 126, 128, 128, 134, 133, 130, 134, 130, 123, 119, 118, 112, 102, 101, 96, 91, 95, 91, 90, 91, 89, 91, 88, 92, 92, 88, 96, 97, 96, 101, 103, 108, 111, 120, 128, 131, 138, 141, 145, 149, 152, 159, 161, 162, 162, 161, 165, 158, 157, 158, 152, 152, 148, 146, 148, 139, 139, 137, 130, 133, 128, 124, 126, 121, 121, 119, 120, 123, 118, 123, 123, 121, 124, 122, 124, 124, 125, 127, 126, 132, 125, 124, 131, 125, 131, 133, 128, 135, 133, 134, 135, 133, 138, 137, 136, 135, 130, 125, 126, 123, 117, 121, 122, 117, 117, 120, 119, 115, 116, 117, 116, 116, 120, 126, 122, 121, 123, 123, 127, 126, 126, 127, 128, 133, 132, 132, 137, 135, 136, 141, 142, 140, 137, 143, 141, 132, 137, 133, 124, 123, 119, 118, 114, 114, 118, 112, 112, 107, 101, 105, 103, 107, 105, 99, 99, 99, 101, 96, 107, 113, 106, 121, 124, 116, 123, 122, 124, 126, 131, 144, 134, 129, 143, 141, 137, 139, 138, 133, 131, 130, 124, 126, 127, 126, 127, 122, 130, 134, 119, 123, 130, 123, 136, 153, 149, 140, 141, 153, 152, 137, 144, 148, 132, 141, 149, 137, 138, 137, 128, 139, 147, 126, 130, 145, 132, 135, 146, 142, 132, 120, 128, 137, 124, 124, 146, 131, 116, 142, 125, 115, 124, 104, 114, 119, 130, 138, 112, 126, 141, 120, 91, 116, 150, 119, 149, 172, 141, 145, 132, 168, 167, 103, 129, 138, 118, 121, 133, 125, 81, 75, 76, 101, 146, 120, 113, 122, 102, 129, 142, 137, 137, 98, 106, 178, 187, 157, 146, 120, 123, 135, 144, 135, 132, 134, 93, 119, 176, 134, 88, 100, 131, 107, 74, 125, 134, 116, 110, 125, 175, 138, 113, 138, 140, 155, 150, 168, 167, 127, 139, 148, 137, 150, 135, 139, 166, 158, 134, 115, 125, 108, 97, 116, 120, 103, 106, 101, 109, 128, 145, 144, 145, 129, 111, 143, 135, 158, 163, 154, 157, 145, 134, 124, 132, 139, 88, 79, 122, 132, 93, 78, 133, 114, 96, 119, 145, 167, 126, 103, 149, 143, 144, 155, 181, 209, 138, 169, 196, 145, 142, 121, 167, 133, 86, 97, 86, 123, 113, 111, 121, 103, 95, 105, 124, 131, 130, 140, 123, 123, 95, 135, 136, 116, 155, 123, 140, 151, 148, 123, 102, 100, 126, 130, 122, 119, 143, 139, 122, 125, 115, 126, 124, 149, 135, 113, 141, 151, 141, 160, 140, 162, 166, 116, 142, 137, 116, 132, 127, 118, 122, 113, 124, 141, 103, 119, 111, 102, 137, 115, 109, 98, 114, 139, 157, 136, 138, 152, 145, 124, 121, 126, 150, 145, 106, 140, 115, 109, 104, 108, 118, 105, 118, 120, 108, 121, 119, 113, 115, 114, 116, 116, 133, 136, 134, 133, 132, 129, 152, 160, 149, 132, 148, 149, 141, 150, 139, 124, 115, 105, 107, 118, 106, 111, 108, 130, 119, 102, 133, 130, 129, 134, 133, 144, 121, 115, 135, 136, 144, 134, 142, 135, 123, 126, 135, 141, 126, 127, 130, 144, 131, 124, 127, 122, 124, 132, 133, 116, 122, 114, 123, 118, 125, 139, 145, 138, 134, 146, 128, 141, 129, 132, 149, 133, 124, 125, 111, 118, 125, 118, 120, 120, 116, 97, 113, 115, 113, 123, 120, 128, 123, 124, 127, 129, 135, 125, 134, 139, 136, 135, 124, 124, 122, 118, 140, 136, 124, 120, 112, 116, 120, 131, 127, 122, 124, 125, 125, 120, 123, 130, 129, 131, 119, 127, 122, 115, 123, 116, 121, 116, 121, 125, 122, 120, 117, 131, 133, 115, 139, 134, 138, 142, 122, 139, 135, 133, 131, 127, 130, 118, 107, 116, 122, 120, 114, 124, 118, 114, 117, 118, 128, 129, 118, 123, 134, 116, 126, 130, 128, 132, 124, 131, 133, 129, 131, 131, 133, 134, 135, 132, 125, 128, 130, 128, 121, 118, 124, 125, 122, 111, 118, 128, 117, 123, 130, 119, 128, 129, 128, 131, 130, 134, 127, 121, 127, 127, 118, 128, 121, 116, 131, 127, 124, 134, 126, 119, 129, 133, 122, 127, 133, 125, 135, 121, 137, 134, 127, 137, 128, 134, 134, 133, 127, 130, 122, 122, 120, 112, 108, 108, 120, 119, 112, 103, 112, 122, 119, 124, 125, 125, 131, 129, 130, 136, 133, 129, 131, 130, 136, 138, 133, 139, 136, 126, 134, 139, 131, 141, 124, 114, 118, 118, 124, 111, 123, 118, 111, 116, 117, 129, 130, 129, 128, 130, 132, 127, 128, 136, 129, 133, 131, 130, 133, 121, 121, 129, 121, 121, 125, 125, 126, 125, 124, 124, 131, 127, 121, 127, 137, 135, 131, 134, 130, 130, 133, 131, 133, 135, 123, 125, 132, 129, 127, 129, 129, 121, 118, 118, 124, 121, 124, 123, 125, 129, 117, 127, 122, 131, 129, 135, 142, 132, 137, 142, 138, 134, 131, 126, 133, 122, 124, 121, 121, 123, 116, 119, 126, 117, 117, 118, 120, 125, 119, 123, 122, 126, 125, 131, 134, 130, 133, 139, 131, 132, 125, 131, 139, 134, 131, 131, 134, 129, 135, 130, 127, 129, 129, 129, 125, 121, 128, 125, 122, 117, 121, 129, 125, 126, 126, 129, 126, 133, 134, 133, 135, 136, 132, 132, 137, 132, 136, 136, 125, 124, 130, 127, 130, 125, 128, 128, 128, 136, 126, 127, 129, 127, 131, 128, 136, 132, 132, 136, 131, 137, 129, 137, 134, 125, 134, 125, 127, 125, 128, 128, 124, 128, 125, 130, 128, 124, 129, 134, 130, 130, 137, 136, 131, 133, 138, 135, 135, 133, 133, 135, 131, 129, 130, 134, 135, 123, 125, 136, 129, 130, 130, 124, 131, 131, 122, 131, 126, 127, 121, 122, 132, 125, 128, 129, 132, 130, 131, 132, 134, 128, 136, 133, 133, 134, 126, 135, 126, 129, 130, 124, 126, 124, 124, 125, 125, 129, 126, 131, 129, 132, 136, 127, 135, 133, 134, 133, 135, 131, 131, 136, 127, 135, 132, 126, 133, 135, 131, 125, 131, 130, 131, 130, 129, 134, 129, 130, 134, 128, 135, 131, 135, 137, 126, 137, 136, 135, 131, 134, 136, 130, 127, 138, 129, 130, 132, 127, 131, 123, 129, 123, 124, 121, 121, 127, 125, 127, 126, 125, 128, 123, 130, 131, 135, 137, 137, 138, 132, 135, 128, 133, 128, 128, 128, 129, 129, 126, 131, 131, 128, 131, 129, 134, 127, 128, 127, 127, 131, 124, 127, 130, 134, 121, 135, 128, 136, 127, 131, 136, 116, 129, 124, 128, 131, 132, 112, 127, 129, 122, 124, 130, 119, 126, 135, 122, 137, 123, 130, 135, 126, 132, 140, 127, 131, 134, 123, 127, 131, 127, 126, 132, 128, 123, 126, 127, 122, 122, 126, 122, 122, 130, 121, 125, 135, 128, 128, 134, 128, 127, 129, 128, 129, 132, 132, 131, 126, 128, 129, 128, 133, 123, 132, 129, 124, 127, 131, 125, 128, 131, 123, 128, 129, 128, 127, 128, 122, 129, 126, 127, 129, 128, 125, 127, 130, 128, 132, 131, 128, 129, 137, 127, 129, 133, 126, 125, 130, 124, 120, 124, 124, 119, 119, 128, 117, 123, 128, 124, 127, 130, 133, 132, 134, 133, 131, 132, 133, 128, 129, 129, 126, 127, 124, 126, 120, 122, 121, 121, 121, 117, 129, 122, 121, 126, 130, 124, 125, 132, 124, 130, 127, 123, 127, 131, 123, 128, 131, 124, 127, 126, 128, 124, 129, 127, 123, 127, 128, 126, 125, 127, 127, 127, 127, 129, 128, 130, 128, 128, 128, 128, 130, 129, 126, 134, 130, 127, 131, 126, 126, 128, 129, 126, 126, 125, 125, 120, 128, 121, 123, 127, 123, 125, 128, 129, 121, 133, 128, 128, 132, 137, 132, 132, 134, 131, 131, 132, 132, 126, 131, 130, 126, 125, 131, 124, 128, 127, 125, 128, 126, 130, 128, 126, 126, 131, 129, 130, 129, 133, 129, 131, 131, 127, 135, 125, 129, 131, 129, 130, 127, 133, 127, 130, 130, 122, 130, 127, 120, 128, 127, 127, 126, 131, 130, 124, 133, 128, 125, 129, 129, 125, 132, 131, 128, 131, 137, 131, 129, 134, 125, 135, 132, 129, 129, 131, 132, 127, 129, 127, 128, 130, 127, 128, 128, 128, 128, 130, 130, 131, 134, 131, 135, 129, 129, 130, 134, 128, 129, 134, 128, 128, 131, 128, 123, 130, 127, 125, 130, 131, 128, 133, 129, 128, 126, 128, 134, 127, 127, 135, 125, 133, 134, 126, 135, 133, 134, 133, 135, 134, 131, 131, 131, 124, 131, 127, 126, 126, 124, 126, 124, 127, 120, 124, 126, 123, 124, 127, 126, 130, 128, 132, 132, 129, 132, 135, 135, 130, 133, 131, 131, 133, 134, 129, 132, 135, 129, 127, 131, 125, 123, 128, 126, 123, 128, 130, 123, 129, 135, 130, 128, 137, 130, 128, 133, 129, 130, 134, 130, 131, 133, 134, 135, 130, 130, 134, 129, 127, 134, 128, 127, 129, 130, 123, 130, 134, 129, 128, 132, 132, 128, 136, 133, 126, 134, 136, 131, 136, 137, 138, 135, 140, 133, 128, 128, 124, 114, 113, 123, 111, 119, 114, 116, 117, 119, 123, 123, 131, 134, 141, 136, 150, 147, 150, 157, 154, 157, 145, 139, 137, 133, 122, 124, 116, 114, 115, 108, 106, 105, 103, 103, 111, 116, 123, 124, 130, 144, 144, 138, 150, 149, 140, 137, 136, 133, 130, 128, 125, 126, 125, 125, 125, 128, 137, };
const int sampleLength = sizeof(sample);
volatile int sampleIndex = 0;
volatile int playbackDelayCounter = 0;
volatile int repeatStartIndex = 0;
volatile int repeatLength = 128; // Default repeat length
volatile bool randomPlayback = false; // Random playback mode flag
int playbackDelay = 15; // Default playback delay
int waveform[128]; // Store last 128 samples for display
const int potPitchPin = A0; // Pot1: Pitch control
const int potBeatPin = A1; // Pot2: Beat repeater
const int potRetrigPin = A2; // Pot3: Retrigger length and randomization
void setupTimer1() {
pinMode(9, OUTPUT); // Pin D9 for audio output
TCCR1A = _BV(COM1A1) | _BV(WGM11); // Non-inverting mode, Fast PWM
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // Fast PWM, no prescaling
ICR1 = 256; // Set TOP value for 31.25kHz PWM frequency
OCR1A = 0; // Initialize output compare register
TIMSK1 = _BV(OCIE1A); // Enable Timer1 Compare Match A interrupt
}
ISR(TIMER1_COMPA_vect) {
playbackDelayCounter++;
if (playbackDelayCounter >= playbackDelay) {
playbackDelayCounter = 0;
int sampleValue;
if (randomPlayback) {
// Random sample selection within current retrigger length
sampleValue = pgm_read_byte(&sample[random(repeatStartIndex, repeatStartIndex + repeatLength)]);
} else {
// Regular or repeating playback
sampleValue = pgm_read_byte(&sample[sampleIndex]);
}
OCR1A = sampleValue; // Output to speaker
waveform[sampleIndex % 128] = sampleValue; // Store waveform data
sampleIndex++;
if (sampleIndex >= sampleLength) {
sampleIndex = 0; // Loop back to start of the sample
}
if (sampleIndex >= repeatStartIndex + repeatLength) {
sampleIndex = repeatStartIndex; // Loop within retrigger length
}
}
}
void setup() {
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_Address)) {
while (1); // Halt if OLED fails
}
display.clearDisplay();
display.display();
setupTimer1();
}
void loop() {
// Potentiometer 1: Pitch control
int potValue1 = analogRead(potPitchPin);
playbackDelay = map(potValue1, 0, 1023, 5, 50);
// Potentiometer 2: Beat repeater activation
int potValue2 = analogRead(potBeatPin);
bool beatRepeatActive = (potValue2 > 512); // 50% threshold to activate
if (beatRepeatActive) {
repeatStartIndex = sampleIndex; // Update repeat starting point
}
// Potentiometer 3: Retrigger length and randomization
int potValue3 = analogRead(potRetrigPin);
repeatLength = map(potValue3, 0, 512, 32, 512); // First half of Pot3 controls length
randomPlayback = (potValue3 > 512); // Second half of Pot3 enables randomization
// Update OLED display
display.clearDisplay();
// Display waveform in real-time
for (int i = 0; i < 127; i++) {
int y1 = map(waveform[i], 0, 255, 50, 10); // Adjust for zoom (50 to 10 is the visible range)
int y2 = map(waveform[i + 1], 0, 255, 50, 10);
display.drawLine(i, y1, i + 1, y2, WHITE); // Connect points with a line
}
// Show Pot3 mode and values
display.setCursor(0, 0);
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Retrigger Len: ");
display.print(repeatLength);
display.setCursor(0, 10);
display.print("Random Mode: ");
display.print(randomPlayback ? "ON" : "OFF");
display.display();
delay(10); // Small delay for smoother display updates
}