LCYE / opts.py
opts.py
Raw
from __future__ import absolute_import
import torchvision
import torch
import torch.nn as nn
import torchvision.transforms as transforms
from util import transforms as T

Imagenet_mean = [0.485, 0.456, 0.406]
Imagenet_stddev = [0.229, 0.224, 0.225]

market1501_train_map = {2: 0, 7: 1, 10: 2, 11: 3, 12: 4, 20: 5, 22: 6, 23: 7, 27: 8, 28: 9, 30: 10, 32: 11, 35: 12, 37: 13, 42: 14, 43: 15, 46: 16, 47: 17, 48: 18, 52: 19, 53: 20, 56: 21, 57: 22, 59: 23, 64: 24, 65: 25, 67: 26, 68: 27, 69: 28, 70: 29, 76: 30, 77: 31, 79: 32, 81: 33, 82: 34, 84: 35, 86: 36, 88: 37, 90: 38, 93: 39, 95: 40, 97: 41, 98: 42, 99: 43, 100: 44, 104: 45, 105: 46, 106: 47, 107: 48, 108: 49, 110: 50, 111: 51, 114: 52, 115: 53, 116: 54, 117: 55, 118: 56, 121: 57, 122: 58, 123: 59, 125: 60, 127: 61, 129: 62, 132: 63, 134: 64, 135: 65, 136: 66, 139: 67, 140: 68, 141: 69, 142: 70, 143: 71, 148: 72, 149: 73, 150: 74, 151: 75, 158: 76, 159: 77, 160: 78, 162: 79, 164: 80, 166: 81, 167: 82, 169: 83, 172: 84, 173: 85, 175: 86, 176: 87, 177: 88, 178: 89, 179: 90, 180: 91, 181: 92, 184: 93, 185: 94, 190: 95, 193: 96, 195: 97, 197: 98, 199: 99, 201: 100, 202: 101, 204: 102, 206: 103, 208: 104, 209: 105, 211: 106, 212: 107, 214: 108, 216: 109, 221: 110, 222: 111, 223: 112, 224: 113, 225: 114, 232: 115, 234: 116, 236: 117, 237: 118, 239: 119, 241: 120, 242: 121, 243: 122, 245: 123, 248: 124, 249: 125, 250: 126, 251: 127, 254: 128, 255: 129, 259: 130, 261: 131, 264: 132, 266: 133, 268: 134, 269: 135, 272: 136, 273: 137, 276: 138, 277: 139, 279: 140, 281: 141, 282: 142, 287: 143, 296: 144, 297: 145, 298: 146, 299: 147, 301: 148, 303: 149, 306: 150, 307: 151, 308: 152, 309: 153, 313: 154, 314: 155, 317: 156, 318: 157, 321: 158, 323: 159, 324: 160, 325: 161, 326: 162, 327: 163, 328: 164, 331: 165, 332: 166, 333: 167, 335: 168, 338: 169, 339: 170, 340: 171, 341: 172, 344: 173, 347: 174, 348: 175, 349: 176, 350: 177, 352: 178, 354: 179, 357: 180, 358: 181, 359: 182, 361: 183, 367: 184, 368: 185, 369: 186, 370: 187, 371: 188, 374: 189, 375: 190, 376: 191, 377: 192, 379: 193, 380: 194, 382: 195, 383: 196, 384: 197, 385: 198, 386: 199, 389: 200, 390: 201, 392: 202, 393: 203, 394: 204, 397: 205, 398: 206, 399: 207, 402: 208, 403: 209, 404: 210, 407: 211, 408: 212, 409: 213, 410: 214, 411: 215, 413: 216, 414: 217, 415: 218, 419: 219, 420: 220, 421: 221, 423: 222, 424: 223, 427: 224, 429: 225, 430: 226, 432: 227, 433: 228, 434: 229, 435: 230, 437: 231, 441: 232, 442: 233, 444: 234, 445: 235, 446: 236, 449: 237, 450: 238, 451: 239, 456: 240, 457: 241, 459: 242, 464: 243, 466: 244, 468: 245, 470: 246, 472: 247, 475: 248, 477: 249, 480: 250, 481: 251, 482: 252, 484: 253, 485: 254, 486: 255, 491: 256, 494: 257, 496: 258, 499: 259, 500: 260, 503: 261, 508: 262, 509: 263, 513: 264, 515: 265, 516: 266, 517: 267, 518: 268, 519: 269, 522: 270, 524: 271, 525: 272, 528: 273, 529: 274, 534: 275, 536: 276, 537: 277, 539: 278, 540: 279, 545: 280, 546: 281, 547: 282, 549: 283, 551: 284, 552: 285, 554: 286, 555: 287, 556: 288, 557: 289, 558: 290, 563: 291, 564: 292, 565: 293, 566: 294, 570: 295, 571: 296, 572: 297, 573: 298, 575: 299, 579: 300, 581: 301, 584: 302, 586: 303, 588: 304, 589: 305, 592: 306, 593: 307, 594: 308, 596: 309, 597: 310, 599: 311, 603: 312, 604: 313, 605: 314, 606: 315, 611: 316, 612: 317, 613: 318, 614: 319, 615: 320, 616: 321, 619: 322, 620: 323, 622: 324, 623: 325, 628: 326, 629: 327, 630: 328, 633: 329, 635: 330, 636: 331, 637: 332, 639: 333, 640: 334, 641: 335, 642: 336, 645: 337, 647: 338, 648: 339, 649: 340, 652: 341, 653: 342, 655: 343, 656: 344, 657: 345, 658: 346, 659: 347, 660: 348, 661: 349, 662: 350, 663: 351, 665: 352, 666: 353, 667: 354, 669: 355, 670: 356, 673: 357, 674: 358, 676: 359, 677: 360, 681: 361, 682: 362, 683: 363, 685: 364, 688: 365, 689: 366, 696: 367, 697: 368, 700: 369, 701: 370, 702: 371, 703: 372, 704: 373, 705: 374, 706: 375, 707: 376, 708: 377, 709: 378, 711: 379, 712: 380, 714: 381, 718: 382, 724: 383, 726: 384, 729: 385, 730: 386, 733: 387, 734: 388, 738: 389, 739: 390, 741: 391, 742: 392, 744: 393, 748: 394, 749: 395, 752: 396, 754: 397, 755: 398, 757: 399, 759: 400, 760: 401, 761: 402, 762: 403, 765: 404, 766: 405, 767: 406, 772: 407, 773: 408, 774: 409, 779: 410, 780: 411, 781: 412, 782: 413, 785: 414, 787: 415, 788: 416, 792: 417, 793: 418, 795: 419, 796: 420, 802: 421, 803: 422, 806: 423, 809: 424, 810: 425, 814: 426, 816: 427, 818: 428, 820: 429, 821: 430, 823: 431, 826: 432, 828: 433, 830: 434, 832: 435, 833: 436, 837: 437, 839: 438, 840: 439, 842: 440, 843: 441, 844: 442, 848: 443, 849: 444, 850: 445, 851: 446, 854: 447, 855: 448, 857: 449, 859: 450, 862: 451, 863: 452, 864: 453, 868: 454, 871: 455, 872: 456, 875: 457, 876: 458, 879: 459, 882: 460, 883: 461, 885: 462, 886: 463, 887: 464, 890: 465, 891: 466, 892: 467, 893: 468, 894: 469, 895: 470, 896: 471, 898: 472, 900: 473, 901: 474, 902: 475, 903: 476, 904: 477, 905: 478, 907: 479, 914: 480, 915: 481, 917: 482, 919: 483, 926: 484, 930: 485, 933: 486, 936: 487, 939: 488, 940: 489, 941: 490, 942: 491, 943: 492, 945: 493, 946: 494, 947: 495, 948: 496, 952: 497, 953: 498, 954: 499, 955: 500, 957: 501, 958: 502, 961: 503, 962: 504, 963: 505, 967: 506, 969: 507, 970: 508, 971: 509, 972: 510, 973: 511, 975: 512, 976: 513, 979: 514, 982: 515, 984: 516, 986: 517, 987: 518, 988: 519, 990: 520, 991: 521, 992: 522, 994: 523, 995: 524, 997: 525, 998: 526, 999: 527, 1000: 528, 1001: 529, 1002: 530, 1003: 531, 1004: 532, 1007: 533, 1010: 534, 1011: 535, 1012: 536, 1017: 537, 1018: 538, 1019: 539, 1023: 540, 1025: 541, 1027: 542, 1030: 543, 1031: 544, 1032: 545, 1033: 546, 1038: 547, 1039: 548, 1041: 549, 1045: 550, 1048: 551, 1049: 552, 1051: 553, 1052: 554, 1055: 555, 1056: 556, 1066: 557, 1071: 558, 1072: 559, 1075: 560, 1076: 561, 1078: 562, 1079: 563, 1080: 564, 1081: 565, 1086: 566, 1088: 567, 1091: 568, 1093: 569, 1094: 570, 1096: 571, 1097: 572, 1098: 573, 1099: 574, 1100: 575, 1101: 576, 1106: 577, 1107: 578, 1110: 579, 1111: 580, 1112: 581, 1113: 582, 1114: 583, 1115: 584, 1116: 585, 1117: 586, 1123: 587, 1124: 588, 1126: 589, 1127: 590, 1129: 591, 1132: 592, 1134: 593, 1135: 594, 1138: 595, 1140: 596, 1142: 597, 1152: 598, 1157: 599, 1158: 600, 1159: 601, 1162: 602, 1165: 603, 1167: 604, 1168: 605, 1169: 606, 1173: 607, 1176: 608, 1177: 609, 1178: 610, 1179: 611, 1189: 612, 1193: 613, 1197: 614, 1198: 615, 1200: 616, 1201: 617, 1204: 618, 1206: 619, 1213: 620, 1217: 621, 1218: 622, 1219: 623, 1220: 624, 1227: 625, 1230: 626, 1231: 627, 1232: 628, 1234: 629, 1235: 630, 1237: 631, 1238: 632, 1240: 633, 1242: 634, 1243: 635, 1244: 636, 1250: 637, 1252: 638, 1253: 639, 1254: 640, 1257: 641, 1258: 642, 1260: 643, 1261: 644, 1263: 645, 1266: 646, 1269: 647, 1275: 648, 1278: 649, 1281: 650, 1286: 651, 1289: 652, 1291: 653, 1292: 654, 1294: 655, 1295: 656, 1296: 657, 1297: 658, 1300: 659, 1303: 660, 1304: 661, 1309: 662, 1313: 663, 1315: 664, 1316: 665, 1318: 666, 1320: 667, 1321: 668, 1325: 669, 1326: 670, 1327: 671, 1330: 672, 1331: 673, 1332: 674, 1334: 675, 1335: 676, 1336: 677, 1338: 678, 1339: 679, 1341: 680, 1343: 681, 1344: 682, 1346: 683, 1350: 684, 1353: 685, 1358: 686, 1363: 687, 1364: 688, 1365: 689, 1368: 690, 1372: 691, 1373: 692, 1379: 693, 1380: 694, 1381: 695, 1385: 696, 1386: 697, 1389: 698, 1391: 699, 1392: 700, 1393: 701, 1400: 702, 1402: 703, 1404: 704, 1405: 705, 1406: 706, 1407: 707, 1408: 708, 1409: 709, 1411: 710, 1415: 711, 1420: 712, 1421: 713, 1422: 714, 1426: 715, 1427: 716, 1428: 717, 1430: 718, 1432: 719, 1433: 720, 1434: 721, 1437: 722, 1442: 723, 1443: 724, 1445: 725, 1447: 726, 1449: 727, 1451: 728, 1453: 729, 1454: 730, 1455: 731, 1458: 732, 1463: 733, 1464: 734, 1466: 735, 1467: 736, 1469: 737, 1470: 738, 1471: 739, 1473: 740, 1474: 741, 1475: 742, 1479: 743, 1480: 744, 1487: 745, 1489: 746, 1492: 747, 1495: 748, 1496: 749, 1500: 750}
market1501_test_map = {0: 0, 1: 1, 3: 2, 4: 3, 5: 4, 6: 5, 8: 6, 9: 7, 13: 8, 14: 9, 15: 10, 16: 11, 17: 12, 18: 13, 19: 14, 21: 15, 24: 16, 25: 17, 26: 18, 29: 19, 31: 20, 33: 21, 34: 22, 36: 23, 38: 24, 39: 25, 40: 26, 41: 27, 44: 28, 45: 29, 49: 30, 50: 31, 51: 32, 54: 33, 55: 34, 58: 35, 60: 36, 61: 37, 62: 38, 63: 39, 66: 40, 71: 41, 72: 42, 73: 43, 74: 44, 75: 45, 78: 46, 80: 47, 83: 48, 85: 49, 87: 50, 89: 51, 91: 52, 92: 53, 94: 54, 96: 55, 101: 56, 102: 57, 103: 58, 109: 59, 112: 60, 113: 61, 119: 62, 120: 63, 124: 64, 126: 65, 128: 66, 130: 67, 131: 68, 133: 69, 137: 70, 138: 71, 144: 72, 145: 73, 146: 74, 147: 75, 152: 76, 153: 77, 154: 78, 155: 79, 156: 80, 157: 81, 161: 82, 163: 83, 165: 84, 168: 85, 170: 86, 171: 87, 174: 88, 182: 89, 183: 90, 186: 91, 187: 92, 188: 93, 189: 94, 191: 95, 192: 96, 194: 97, 196: 98, 198: 99, 200: 100, 203: 101, 205: 102, 207: 103, 210: 104, 213: 105, 215: 106, 217: 107, 218: 108, 219: 109, 220: 110, 226: 111, 227: 112, 228: 113, 229: 114, 230: 115, 231: 116, 233: 117, 235: 118, 238: 119, 240: 120, 244: 121, 246: 122, 247: 123, 252: 124, 253: 125, 256: 126, 257: 127, 258: 128, 260: 129, 262: 130, 263: 131, 265: 132, 267: 133, 270: 134, 271: 135, 274: 136, 275: 137, 278: 138, 280: 139, 283: 140, 284: 141, 285: 142, 286: 143, 288: 144, 289: 145, 290: 146, 291: 147, 292: 148, 293: 149, 294: 150, 295: 151, 300: 152, 302: 153, 304: 154, 305: 155, 310: 156, 311: 157, 312: 158, 315: 159, 316: 160, 319: 161, 320: 162, 322: 163, 329: 164, 330: 165, 334: 166, 336: 167, 337: 168, 342: 169, 343: 170, 345: 171, 346: 172, 351: 173, 353: 174, 355: 175, 356: 176, 360: 177, 362: 178, 363: 179, 364: 180, 365: 181, 366: 182, 372: 183, 373: 184, 378: 185, 381: 186, 387: 187, 388: 188, 391: 189, 395: 190, 396: 191, 400: 192, 401: 193, 405: 194, 406: 195, 412: 196, 416: 197, 417: 198, 418: 199, 422: 200, 425: 201, 426: 202, 428: 203, 431: 204, 436: 205, 438: 206, 439: 207, 440: 208, 443: 209, 447: 210, 448: 211, 452: 212, 453: 213, 454: 214, 455: 215, 458: 216, 460: 217, 461: 218, 462: 219, 463: 220, 465: 221, 467: 222, 469: 223, 471: 224, 473: 225, 474: 226, 476: 227, 478: 228, 479: 229, 483: 230, 487: 231, 488: 232, 489: 233, 490: 234, 492: 235, 493: 236, 495: 237, 497: 238, 498: 239, 501: 240, 502: 241, 504: 242, 505: 243, 506: 244, 507: 245, 510: 246, 511: 247, 512: 248, 514: 249, 520: 250, 521: 251, 523: 252, 526: 253, 527: 254, 530: 255, 531: 256, 532: 257, 533: 258, 535: 259, 538: 260, 541: 261, 542: 262, 543: 263, 544: 264, 548: 265, 550: 266, 553: 267, 559: 268, 560: 269, 561: 270, 562: 271, 567: 272, 568: 273, 569: 274, 574: 275, 576: 276, 577: 277, 578: 278, 580: 279, 582: 280, 583: 281, 585: 282, 587: 283, 590: 284, 591: 285, 595: 286, 598: 287, 600: 288, 601: 289, 602: 290, 607: 291, 608: 292, 609: 293, 610: 294, 617: 295, 618: 296, 621: 297, 624: 298, 625: 299, 626: 300, 627: 301, 631: 302, 632: 303, 634: 304, 638: 305, 643: 306, 644: 307, 646: 308, 650: 309, 651: 310, 654: 311, 664: 312, 668: 313, 671: 314, 672: 315, 675: 316, 678: 317, 679: 318, 680: 319, 684: 320, 686: 321, 687: 322, 690: 323, 691: 324, 692: 325, 693: 326, 694: 327, 695: 328, 698: 329, 699: 330, 710: 331, 713: 332, 715: 333, 716: 334, 717: 335, 719: 336, 720: 337, 721: 338, 722: 339, 723: 340, 725: 341, 727: 342, 728: 343, 731: 344, 732: 345, 735: 346, 736: 347, 737: 348, 740: 349, 743: 350, 745: 351, 746: 352, 747: 353, 750: 354, 751: 355, 753: 356, 756: 357, 758: 358, 763: 359, 764: 360, 768: 361, 769: 362, 770: 363, 771: 364, 775: 365, 776: 366, 777: 367, 778: 368, 783: 369, 784: 370, 786: 371, 789: 372, 790: 373, 791: 374, 794: 375, 797: 376, 798: 377, 799: 378, 800: 379, 801: 380, 804: 381, 805: 382, 807: 383, 808: 384, 811: 385, 812: 386, 813: 387, 815: 388, 817: 389, 819: 390, 822: 391, 824: 392, 825: 393, 827: 394, 829: 395, 831: 396, 834: 397, 835: 398, 836: 399, 838: 400, 841: 401, 845: 402, 846: 403, 847: 404, 852: 405, 853: 406, 856: 407, 858: 408, 860: 409, 861: 410, 865: 411, 866: 412, 867: 413, 869: 414, 870: 415, 873: 416, 874: 417, 877: 418, 878: 419, 880: 420, 881: 421, 884: 422, 888: 423, 889: 424, 897: 425, 899: 426, 906: 427, 908: 428, 909: 429, 910: 430, 911: 431, 912: 432, 913: 433, 916: 434, 918: 435, 920: 436, 921: 437, 922: 438, 923: 439, 924: 440, 925: 441, 927: 442, 928: 443, 929: 444, 931: 445, 932: 446, 934: 447, 935: 448, 937: 449, 938: 450, 944: 451, 949: 452, 950: 453, 951: 454, 956: 455, 959: 456, 960: 457, 964: 458, 965: 459, 966: 460, 968: 461, 974: 462, 977: 463, 978: 464, 980: 465, 981: 466, 983: 467, 985: 468, 989: 469, 993: 470, 996: 471, 1005: 472, 1006: 473, 1008: 474, 1009: 475, 1013: 476, 1014: 477, 1015: 478, 1016: 479, 1020: 480, 1021: 481, 1022: 482, 1024: 483, 1026: 484, 1028: 485, 1029: 486, 1034: 487, 1035: 488, 1036: 489, 1037: 490, 1040: 491, 1042: 492, 1043: 493, 1044: 494, 1046: 495, 1047: 496, 1050: 497, 1053: 498, 1054: 499, 1057: 500, 1058: 501, 1059: 502, 1060: 503, 1061: 504, 1062: 505, 1063: 506, 1064: 507, 1065: 508, 1067: 509, 1068: 510, 1069: 511, 1070: 512, 1073: 513, 1074: 514, 1077: 515, 1082: 516, 1083: 517, 1084: 518, 1085: 519, 1087: 520, 1089: 521, 1090: 522, 1092: 523, 1095: 524, 1102: 525, 1103: 526, 1104: 527, 1105: 528, 1108: 529, 1109: 530, 1118: 531, 1119: 532, 1120: 533, 1121: 534, 1122: 535, 1125: 536, 1128: 537, 1130: 538, 1131: 539, 1133: 540, 1136: 541, 1137: 542, 1139: 543, 1141: 544, 1143: 545, 1144: 546, 1145: 547, 1146: 548, 1147: 549, 1148: 550, 1149: 551, 1150: 552, 1151: 553, 1153: 554, 1154: 555, 1155: 556, 1156: 557, 1160: 558, 1161: 559, 1163: 560, 1164: 561, 1166: 562, 1170: 563, 1171: 564, 1172: 565, 1174: 566, 1175: 567, 1180: 568, 1181: 569, 1182: 570, 1183: 571, 1184: 572, 1185: 573, 1186: 574, 1187: 575, 1188: 576, 1190: 577, 1191: 578, 1192: 579, 1194: 580, 1195: 581, 1196: 582, 1199: 583, 1202: 584, 1203: 585, 1205: 586, 1207: 587, 1208: 588, 1209: 589, 1210: 590, 1211: 591, 1212: 592, 1214: 593, 1215: 594, 1216: 595, 1221: 596, 1222: 597, 1223: 598, 1224: 599, 1225: 600, 1226: 601, 1228: 602, 1229: 603, 1233: 604, 1236: 605, 1239: 606, 1241: 607, 1245: 608, 1246: 609, 1247: 610, 1248: 611, 1249: 612, 1251: 613, 1255: 614, 1256: 615, 1259: 616, 1262: 617, 1264: 618, 1265: 619, 1267: 620, 1268: 621, 1270: 622, 1271: 623, 1272: 624, 1273: 625, 1274: 626, 1276: 627, 1277: 628, 1279: 629, 1280: 630, 1282: 631, 1283: 632, 1284: 633, 1285: 634, 1287: 635, 1288: 636, 1290: 637, 1293: 638, 1298: 639, 1299: 640, 1301: 641, 1302: 642, 1305: 643, 1306: 644, 1307: 645, 1308: 646, 1310: 647, 1311: 648, 1312: 649, 1314: 650, 1317: 651, 1319: 652, 1322: 653, 1323: 654, 1324: 655, 1328: 656, 1329: 657, 1333: 658, 1337: 659, 1340: 660, 1342: 661, 1345: 662, 1347: 663, 1348: 664, 1349: 665, 1351: 666, 1352: 667, 1354: 668, 1355: 669, 1356: 670, 1357: 671, 1359: 672, 1360: 673, 1361: 674, 1362: 675, 1366: 676, 1367: 677, 1369: 678, 1370: 679, 1371: 680, 1374: 681, 1375: 682, 1376: 683, 1377: 684, 1378: 685, 1382: 686, 1383: 687, 1384: 688, 1387: 689, 1388: 690, 1390: 691, 1394: 692, 1395: 693, 1396: 694, 1397: 695, 1398: 696, 1399: 697, 1401: 698, 1403: 699, 1410: 700, 1412: 701, 1413: 702, 1414: 703, 1416: 704, 1417: 705, 1418: 706, 1419: 707, 1423: 708, 1424: 709, 1425: 710, 1429: 711, 1431: 712, 1435: 713, 1436: 714, 1438: 715, 1439: 716, 1440: 717, 1441: 718, 1444: 719, 1446: 720, 1448: 721, 1450: 722, 1452: 723, 1456: 724, 1457: 725, 1459: 726, 1460: 727, 1461: 728, 1462: 729, 1465: 730, 1468: 731, 1472: 732, 1476: 733, 1477: 734, 1478: 735, 1481: 736, 1482: 737, 1483: 738, 1484: 739, 1485: 740, 1486: 741, 1488: 742, 1490: 743, 1491: 744, 1493: 745, 1494: 746, 1497: 747, 1498: 748, 1499: 749, 1501: 750}
duke_train_map = {1: 0, 8: 1, 13: 2, 14: 3, 15: 4, 16: 5, 17: 6, 18: 7, 20: 8, 22: 9, 24: 10, 26: 11, 28: 12, 29: 13, 32: 14, 36: 15, 37: 16, 38: 17, 40: 18, 41: 19, 45: 20, 48: 21, 52: 22, 54: 23, 55: 24, 57: 25, 58: 26, 59: 27, 60: 28, 62: 29, 63: 30, 64: 31, 65: 32, 67: 33, 70: 34, 71: 35, 73: 36, 74: 37, 81: 38, 82: 39, 84: 40, 85: 41, 87: 42, 93: 43, 94: 44, 96: 45, 100: 46, 102: 47, 104: 48, 105: 49, 108: 50, 110: 51, 113: 52, 116: 53, 120: 54, 121: 55, 124: 56, 129: 57, 130: 58, 131: 59, 132: 60, 133: 61, 138: 62, 139: 63, 144: 64, 146: 65, 148: 66, 152: 67, 153: 68, 154: 69, 155: 70, 156: 71, 157: 72, 160: 73, 161: 74, 165: 75, 166: 76, 168: 77, 172: 78, 173: 79, 176: 80, 177: 81, 178: 82, 179: 83, 182: 84, 185: 85, 189: 86, 190: 87, 191: 88, 193: 89, 195: 90, 196: 91, 198: 92, 202: 93, 203: 94, 208: 95, 209: 96, 216: 97, 217: 98, 222: 99, 224: 100, 225: 101, 226: 102, 227: 103, 228: 104, 231: 105, 232: 106, 233: 107, 234: 108, 236: 109, 242: 110, 245: 111, 246: 112, 248: 113, 250: 114, 252: 115, 255: 116, 258: 117, 259: 118, 263: 119, 265: 120, 271: 121, 278: 122, 280: 123, 281: 124, 282: 125, 283: 126, 284: 127, 286: 128, 289: 129, 290: 130, 291: 131, 296: 132, 297: 133, 306: 134, 307: 135, 308: 136, 309: 137, 310: 138, 312: 139, 317: 140, 318: 141, 319: 142, 320: 143, 322: 144, 325: 145, 326: 146, 327: 147, 328: 148, 330: 149, 331: 150, 333: 151, 335: 152, 336: 153, 338: 154, 339: 155, 343: 156, 345: 157, 348: 158, 349: 159, 357: 160, 362: 161, 365: 162, 366: 163, 368: 164, 370: 165, 373: 166, 374: 167, 382: 168, 383: 169, 384: 170, 385: 171, 387: 172, 388: 173, 392: 174, 393: 175, 396: 176, 397: 177, 398: 178, 401: 179, 402: 180, 403: 181, 404: 182, 406: 183, 407: 184, 411: 185, 413: 186, 417: 187, 419: 188, 421: 189, 422: 190, 423: 191, 424: 192, 425: 193, 430: 194, 432: 195, 435: 196, 436: 197, 437: 198, 438: 199, 439: 200, 440: 201, 441: 202, 443: 203, 445: 204, 446: 205, 447: 206, 448: 207, 450: 208, 452: 209, 454: 210, 456: 211, 458: 212, 463: 213, 464: 214, 465: 215, 472: 216, 473: 217, 474: 218, 478: 219, 480: 220, 481: 221, 483: 222, 485: 223, 487: 224, 489: 225, 490: 226, 491: 227, 493: 228, 496: 229, 498: 230, 502: 231, 504: 232, 505: 233, 507: 234, 510: 235, 511: 236, 512: 237, 518: 238, 519: 239, 520: 240, 521: 241, 522: 242, 524: 243, 526: 244, 528: 245, 530: 246, 531: 247, 532: 248, 534: 249, 536: 250, 544: 251, 545: 252, 546: 253, 547: 254, 548: 255, 550: 256, 556: 257, 557: 258, 558: 259, 559: 260, 561: 261, 562: 262, 563: 263, 564: 264, 566: 265, 568: 266, 569: 267, 572: 268, 573: 269, 574: 270, 575: 271, 578: 272, 579: 273, 582: 274, 585: 275, 588: 276, 589: 277, 595: 278, 598: 279, 600: 280, 602: 281, 604: 282, 606: 283, 607: 284, 610: 285, 613: 286, 614: 287, 615: 288, 616: 289, 617: 290, 618: 291, 619: 292, 622: 293, 623: 294, 624: 295, 628: 296, 630: 297, 633: 298, 634: 299, 636: 300, 637: 301, 638: 302, 639: 303, 640: 304, 642: 305, 645: 306, 650: 307, 653: 308, 655: 309, 657: 310, 658: 311, 659: 312, 660: 313, 662: 314, 664: 315, 665: 316, 666: 317, 667: 318, 668: 319, 669: 320, 670: 321, 671: 322, 673: 323, 675: 324, 677: 325, 679: 326, 682: 327, 684: 328, 687: 329, 689: 330, 692: 331, 696: 332, 697: 333, 704: 334, 708: 335, 710: 336, 713: 337, 714: 338, 715: 339, 716: 340, 719: 341, 720: 342, 721: 343, 723: 344, 724: 345, 725: 346, 727: 347, 728: 348, 730: 349, 731: 350, 732: 351, 735: 352, 737: 353, 739: 354, 740: 355, 744: 356, 745: 357, 747: 358, 751: 359, 753: 360, 759: 361, 761: 362, 762: 363, 764: 364, 767: 365, 768: 366, 770: 367, 771: 368, 774: 369, 776: 370, 778: 371, 779: 372, 780: 373, 782: 374, 783: 375, 784: 376, 785: 377, 789: 378, 793: 379, 795: 380, 796: 381, 797: 382, 798: 383, 799: 384, 802: 385, 805: 386, 808: 387, 811: 388, 813: 389, 814: 390, 815: 391, 817: 392, 819: 393, 821: 394, 825: 395, 829: 396, 831: 397, 835: 398, 836: 399, 837: 400, 839: 401, 842: 402, 843: 403, 844: 404, 848: 405, 855: 406, 859: 407, 860: 408, 883: 409, 1034: 410, 1120: 411, 1174: 412, 1239: 413, 1240: 414, 1242: 415, 1246: 416, 1248: 417, 1252: 418, 1259: 419, 1312: 420, 1333: 421, 1358: 422, 1363: 423, 1396: 424, 1397: 425, 1438: 426, 1471: 427, 1472: 428, 1501: 429, 1524: 430, 1526: 431, 1532: 432, 1542: 433, 1559: 434, 1562: 435, 1565: 436, 1587: 437, 1589: 438, 1614: 439, 1631: 440, 1636: 441, 1665: 442, 1671: 443, 1672: 444, 1693: 445, 1696: 446, 1716: 447, 1729: 448, 1732: 449, 1746: 450, 1756: 451, 1760: 452, 1767: 453, 1776: 454, 1786: 455, 1794: 456, 1812: 457, 1827: 458, 1830: 459, 1874: 460, 1879: 461, 1911: 462, 1953: 463, 1954: 464, 1973: 465, 1988: 466, 1989: 467, 1996: 468, 2004: 469, 2016: 470, 2032: 471, 2036: 472, 2044: 473, 2058: 474, 2408: 475, 2410: 476, 2420: 477, 2421: 478, 2422: 479, 2432: 480, 2435: 481, 2436: 482, 2446: 483, 2464: 484, 2469: 485, 2496: 486, 2515: 487, 2520: 488, 2529: 489, 2542: 490, 2558: 491, 2581: 492, 2597: 493, 2598: 494, 2642: 495, 2726: 496, 2735: 497, 2742: 498, 2748: 499, 2770: 500, 2953: 501, 3058: 502, 3253: 503, 3261: 504, 3344: 505, 3362: 506, 3363: 507, 3368: 508, 3370: 509, 3371: 510, 3451: 511, 3516: 512, 3520: 513, 3545: 514, 3546: 515, 3555: 516, 3582: 517, 3614: 518, 3619: 519, 3621: 520, 3680: 521, 3688: 522, 3715: 523, 3716: 524, 3732: 525, 3753: 526, 3758: 527, 3765: 528, 3776: 529, 3782: 530, 4061: 531, 4063: 532, 4064: 533, 4068: 534, 4076: 535, 4084: 536, 4096: 537, 4104: 538, 4105: 539, 4107: 540, 4108: 541, 4111: 542, 4115: 543, 4120: 544, 4132: 545, 4133: 546, 4135: 547, 4136: 548, 4140: 549, 4145: 550, 4151: 551, 4160: 552, 4164: 553, 4167: 554, 4180: 555, 4184: 556, 4186: 557, 4187: 558, 4192: 559, 4195: 560, 4198: 561, 4199: 562, 4201: 563, 4206: 564, 4208: 565, 4209: 566, 4211: 567, 4212: 568, 4215: 569, 4216: 570, 4225: 571, 4235: 572, 4237: 573, 4238: 574, 4243: 575, 4250: 576, 4258: 577, 4260: 578, 4261: 579, 4263: 580, 4275: 581, 4276: 582, 4277: 583, 4278: 584, 4279: 585, 4286: 586, 4288: 587, 4292: 588, 4301: 589, 4306: 590, 4307: 591, 4317: 592, 4323: 593, 4330: 594, 4333: 595, 4336: 596, 4344: 597, 4355: 598, 4362: 599, 4365: 600, 4387: 601, 4389: 602, 4391: 603, 4393: 604, 4406: 605, 4410: 606, 4412: 607, 4415: 608, 4417: 609, 4423: 610, 4425: 611, 4426: 612, 4430: 613, 4431: 614, 4432: 615, 4438: 616, 4445: 617, 4448: 618, 4451: 619, 4453: 620, 4461: 621, 4462: 622, 4463: 623, 4464: 624, 4472: 625, 4481: 626, 4484: 627, 4487: 628, 4488: 629, 4490: 630, 4492: 631, 4493: 632, 4495: 633, 4499: 634, 4501: 635, 4502: 636, 4509: 637, 4512: 638, 4513: 639, 4515: 640, 4520: 641, 4526: 642, 4527: 643, 4528: 644, 4532: 645, 4537: 646, 4538: 647, 4548: 648, 4551: 649, 4553: 650, 4555: 651, 4556: 652, 4567: 653, 4577: 654, 4583: 655, 4590: 656, 4597: 657, 4602: 658, 4618: 659, 4624: 660, 4625: 661, 4627: 662, 4629: 663, 4631: 664, 4656: 665, 4664: 666, 4667: 667, 4679: 668, 4683: 669, 4684: 670, 4685: 671, 4689: 672, 4690: 673, 4694: 674, 4707: 675, 4721: 676, 4728: 677, 4733: 678, 4740: 679, 4741: 680, 4751: 681, 4767: 682, 4768: 683, 4791: 684, 4796: 685, 4800: 686, 4802: 687, 4805: 688, 4810: 689, 4811: 690, 4812: 691, 4815: 692, 5251: 693, 5254: 694, 5258: 695, 5259: 696, 5339: 697, 5388: 698, 5398: 699, 7136: 700, 7140: 701}
duke_test_map = {2: 0, 3: 1, 4: 2, 5: 3, 7: 4, 9: 5, 10: 6, 11: 7, 12: 8, 19: 9, 21: 10, 23: 11, 25: 12, 27: 13, 30: 14, 31: 15, 33: 16, 34: 17, 35: 18, 39: 19, 42: 20, 43: 21, 44: 22, 46: 23, 47: 24, 49: 25, 50: 26, 51: 27, 53: 28, 56: 29, 61: 30, 66: 31, 68: 32, 69: 33, 72: 34, 75: 35, 76: 36, 77: 37, 78: 38, 79: 39, 80: 40, 83: 41, 86: 42, 88: 43, 89: 44, 90: 45, 91: 46, 92: 47, 95: 48, 97: 49, 98: 50, 99: 51, 101: 52, 103: 53, 106: 54, 107: 55, 109: 56, 111: 57, 112: 58, 114: 59, 115: 60, 117: 61, 118: 62, 119: 63, 122: 64, 123: 65, 125: 66, 126: 67, 127: 68, 128: 69, 134: 70, 135: 71, 136: 72, 137: 73, 140: 74, 141: 75, 142: 76, 143: 77, 145: 78, 147: 79, 149: 80, 150: 81, 151: 82, 158: 83, 159: 84, 162: 85, 163: 86, 164: 87, 167: 88, 169: 89, 170: 90, 171: 91, 174: 92, 175: 93, 180: 94, 181: 95, 183: 96, 184: 97, 186: 98, 187: 99, 188: 100, 192: 101, 194: 102, 197: 103, 199: 104, 200: 105, 201: 106, 204: 107, 205: 108, 206: 109, 207: 110, 210: 111, 211: 112, 212: 113, 213: 114, 214: 115, 215: 116, 218: 117, 219: 118, 220: 119, 221: 120, 223: 121, 229: 122, 230: 123, 235: 124, 237: 125, 238: 126, 239: 127, 240: 128, 241: 129, 243: 130, 244: 131, 247: 132, 249: 133, 251: 134, 253: 135, 254: 136, 256: 137, 257: 138, 261: 139, 262: 140, 264: 141, 266: 142, 267: 143, 268: 144, 269: 145, 270: 146, 272: 147, 273: 148, 274: 149, 275: 150, 276: 151, 277: 152, 279: 153, 285: 154, 287: 155, 288: 156, 292: 157, 293: 158, 294: 159, 295: 160, 298: 161, 299: 162, 300: 163, 301: 164, 302: 165, 303: 166, 304: 167, 305: 168, 311: 169, 313: 170, 314: 171, 315: 172, 316: 173, 321: 174, 323: 175, 324: 176, 329: 177, 332: 178, 334: 179, 337: 180, 340: 181, 341: 182, 342: 183, 344: 184, 346: 185, 347: 186, 350: 187, 351: 188, 352: 189, 353: 190, 354: 191, 355: 192, 356: 193, 358: 194, 359: 195, 360: 196, 361: 197, 363: 198, 364: 199, 367: 200, 369: 201, 371: 202, 372: 203, 375: 204, 376: 205, 377: 206, 378: 207, 379: 208, 380: 209, 381: 210, 386: 211, 389: 212, 390: 213, 391: 214, 394: 215, 395: 216, 400: 217, 405: 218, 408: 219, 409: 220, 410: 221, 412: 222, 414: 223, 415: 224, 416: 225, 418: 226, 420: 227, 426: 228, 427: 229, 428: 230, 429: 231, 431: 232, 433: 233, 434: 234, 442: 235, 444: 236, 449: 237, 451: 238, 453: 239, 455: 240, 457: 241, 459: 242, 460: 243, 461: 244, 462: 245, 466: 246, 467: 247, 468: 248, 469: 249, 470: 250, 471: 251, 479: 252, 482: 253, 484: 254, 486: 255, 488: 256, 492: 257, 494: 258, 495: 259, 497: 260, 499: 261, 500: 262, 501: 263, 503: 264, 506: 265, 508: 266, 509: 267, 513: 268, 514: 269, 515: 270, 516: 271, 517: 272, 523: 273, 525: 274, 527: 275, 529: 276, 533: 277, 535: 278, 537: 279, 538: 280, 539: 281, 540: 282, 541: 283, 542: 284, 543: 285, 549: 286, 551: 287, 552: 288, 553: 289, 554: 290, 555: 291, 560: 292, 565: 293, 567: 294, 570: 295, 571: 296, 576: 297, 577: 298, 580: 299, 581: 300, 583: 301, 584: 302, 586: 303, 587: 304, 590: 305, 591: 306, 592: 307, 593: 308, 594: 309, 596: 310, 597: 311, 599: 312, 601: 313, 603: 314, 605: 315, 608: 316, 609: 317, 611: 318, 612: 319, 620: 320, 621: 321, 625: 322, 626: 323, 627: 324, 629: 325, 631: 326, 632: 327, 635: 328, 641: 329, 643: 330, 644: 331, 646: 332, 647: 333, 648: 334, 649: 335, 651: 336, 652: 337, 654: 338, 656: 339, 661: 340, 663: 341, 672: 342, 674: 343, 676: 344, 678: 345, 680: 346, 681: 347, 683: 348, 685: 349, 686: 350, 688: 351, 690: 352, 691: 353, 693: 354, 694: 355, 695: 356, 698: 357, 699: 358, 700: 359, 701: 360, 702: 361, 703: 362, 705: 363, 706: 364, 707: 365, 709: 366, 711: 367, 712: 368, 717: 369, 718: 370, 722: 371, 726: 372, 729: 373, 733: 374, 734: 375, 736: 376, 738: 377, 741: 378, 742: 379, 743: 380, 746: 381, 748: 382, 749: 383, 750: 384, 752: 385, 754: 386, 755: 387, 756: 388, 757: 389, 758: 390, 760: 391, 763: 392, 765: 393, 766: 394, 769: 395, 772: 396, 773: 397, 775: 398, 777: 399, 781: 400, 786: 401, 787: 402, 788: 403, 790: 404, 791: 405, 792: 406, 794: 407, 800: 408, 803: 409, 804: 410, 806: 411, 807: 412, 809: 413, 810: 414, 812: 415, 816: 416, 818: 417, 820: 418, 823: 419, 824: 420, 826: 421, 828: 422, 830: 423, 832: 424, 834: 425, 838: 426, 840: 427, 845: 428, 846: 429, 847: 430, 849: 431, 850: 432, 851: 433, 852: 434, 853: 435, 854: 436, 856: 437, 857: 438, 858: 439, 863: 440, 864: 441, 884: 442, 1104: 443, 1108: 444, 1109: 445, 1110: 446, 1226: 447, 1228: 448, 1229: 449, 1233: 450, 1243: 451, 1244: 452, 1290: 453, 1297: 454, 1300: 455, 1307: 456, 1314: 457, 1328: 458, 1343: 459, 1346: 460, 1366: 461, 1382: 462, 1386: 463, 1391: 464, 1398: 465, 1403: 466, 1408: 467, 1421: 468, 1426: 469, 1440: 470, 1463: 471, 1467: 472, 1480: 473, 1486: 474, 1487: 475, 1489: 476, 1490: 477, 1518: 478, 1555: 479, 1584: 480, 1585: 481, 1586: 482, 1598: 483, 1601: 484, 1626: 485, 1635: 486, 1637: 487, 1642: 488, 1673: 489, 1682: 490, 1698: 491, 1699: 492, 1723: 493, 1724: 494, 1725: 495, 1730: 496, 1737: 497, 1741: 498, 1745: 499, 1749: 500, 1750: 501, 1758: 502, 1759: 503, 1762: 504, 1766: 505, 1775: 506, 1782: 507, 1784: 508, 1785: 509, 1788: 510, 1790: 511, 1811: 512, 1834: 513, 1849: 514, 1893: 515, 1901: 516, 1922: 517, 1946: 518, 1949: 519, 2001: 520, 2012: 521, 2023: 522, 2053: 523, 2407: 524, 2429: 525, 2454: 526, 2470: 527, 2471: 528, 2479: 529, 2488: 530, 2495: 531, 2532: 532, 2556: 533, 2557: 534, 2573: 535, 2599: 536, 2724: 537, 2736: 538, 2754: 539, 2768: 540, 2772: 541, 2777: 542, 2942: 543, 2988: 544, 3201: 545, 3202: 546, 3259: 547, 3335: 548, 3353: 549, 3354: 550, 3358: 551, 3410: 552, 3446: 553, 3495: 554, 3515: 555, 3561: 556, 3609: 557, 3618: 558, 3638: 559, 3649: 560, 3664: 561, 3674: 562, 3731: 563, 3761: 564, 3763: 565, 4055: 566, 4057: 567, 4059: 568, 4060: 569, 4062: 570, 4065: 571, 4066: 572, 4070: 573, 4071: 574, 4072: 575, 4075: 576, 4079: 577, 4082: 578, 4099: 579, 4100: 580, 4102: 581, 4106: 582, 4110: 583, 4113: 584, 4114: 585, 4116: 586, 4117: 587, 4118: 588, 4119: 589, 4121: 590, 4128: 591, 4134: 592, 4141: 593, 4143: 594, 4144: 595, 4146: 596, 4147: 597, 4150: 598, 4152: 599, 4158: 600, 4159: 601, 4163: 602, 4169: 603, 4170: 604, 4174: 605, 4176: 606, 4177: 607, 4178: 608, 4185: 609, 4190: 610, 4197: 611, 4204: 612, 4205: 613, 4207: 614, 4210: 615, 4219: 616, 4221: 617, 4226: 618, 4227: 619, 4228: 620, 4230: 621, 4239: 622, 4245: 623, 4246: 624, 4247: 625, 4249: 626, 4254: 627, 4255: 628, 4256: 629, 4257: 630, 4271: 631, 4272: 632, 4274: 633, 4280: 634, 4284: 635, 4285: 636, 4309: 637, 4310: 638, 4315: 639, 4319: 640, 4321: 641, 4324: 642, 4326: 643, 4329: 644, 4331: 645, 4332: 646, 4334: 647, 4335: 648, 4337: 649, 4341: 650, 4349: 651, 4356: 652, 4361: 653, 4366: 654, 4372: 655, 4373: 656, 4374: 657, 4380: 658, 4386: 659, 4392: 660, 4398: 661, 4405: 662, 4411: 663, 4416: 664, 4419: 665, 4422: 666, 4427: 667, 4428: 668, 4433: 669, 4443: 670, 4447: 671, 4449: 672, 4452: 673, 4459: 674, 4460: 675, 4473: 676, 4477: 677, 4480: 678, 4483: 679, 4489: 680, 4494: 681, 4500: 682, 4503: 683, 4504: 684, 4508: 685, 4510: 686, 4511: 687, 4514: 688, 4519: 689, 4521: 690, 4540: 691, 4541: 692, 4547: 693, 4550: 694, 4558: 695, 4560: 696, 4563: 697, 4568: 698, 4572: 699, 4573: 700, 4580: 701, 4582: 702, 4587: 703, 4594: 704, 4596: 705, 4605: 706, 4606: 707, 4607: 708, 4609: 709, 4613: 710, 4622: 711, 4632: 712, 4633: 713, 4634: 714, 4639: 715, 4640: 716, 4646: 717, 4647: 718, 4654: 719, 4672: 720, 4681: 721, 4693: 722, 4695: 723, 4699: 724, 4708: 725, 4713: 726, 4717: 727, 4719: 728, 4723: 729, 4725: 730, 4726: 731, 4727: 732, 4729: 733, 4736: 734, 4739: 735, 4743: 736, 4750: 737, 4757: 738, 4758: 739, 4759: 740, 4760: 741, 4769: 742, 4772: 743, 4774: 744, 4779: 745, 4782: 746, 4789: 747, 4790: 748, 4804: 749, 4807: 750, 4808: 751, 4809: 752, 4817: 753, 4823: 754, 5249: 755, 5272: 756, 5333: 757, 5358: 758, 5474: 759, 5587: 760, 5599: 761, 5842: 762, 5849: 763, 5855: 764, 5856: 765, 5860: 766, 5867: 767, 5876: 768, 5877: 769, 5887: 770, 5889: 771, 5899: 772, 5904: 773, 5905: 774, 5906: 775, 5907: 776, 5910: 777, 5911: 778, 5920: 779, 5921: 780, 5922: 781, 5924: 782, 5927: 783, 5937: 784, 5939: 785, 5940: 786, 5941: 787, 5943: 788, 5947: 789, 5948: 790, 5949: 791, 5951: 792, 5952: 793, 5966: 794, 5970: 795, 5971: 796, 5972: 797, 5973: 798, 5974: 799, 5975: 800, 5977: 801, 5982: 802, 5985: 803, 5994: 804, 6008: 805, 6019: 806, 6031: 807, 6040: 808, 6046: 809, 6048: 810, 6049: 811, 6050: 812, 6051: 813, 6054: 814, 6056: 815, 6058: 816, 6059: 817, 6063: 818, 6068: 819, 6070: 820, 6071: 821, 6072: 822, 6073: 823, 6074: 824, 6076: 825, 6077: 826, 6084: 827, 6087: 828, 6088: 829, 6091: 830, 6093: 831, 6094: 832, 6097: 833, 6100: 834, 6101: 835, 6102: 836, 6103: 837, 6105: 838, 6109: 839, 6110: 840, 6111: 841, 6112: 842, 6115: 843, 6117: 844, 6119: 845, 6122: 846, 6123: 847, 6134: 848, 6136: 849, 6137: 850, 6139: 851, 6140: 852, 6143: 853, 6146: 854, 6147: 855, 6148: 856, 6151: 857, 6155: 858, 6156: 859, 6158: 860, 6161: 861, 6164: 862, 6166: 863, 6172: 864, 6176: 865, 6178: 866, 6179: 867, 6180: 868, 6185: 869, 6188: 870, 6189: 871, 6191: 872, 6195: 873, 6196: 874, 6198: 875, 6199: 876, 6202: 877, 6204: 878, 6205: 879, 6208: 880, 6210: 881, 6212: 882, 6213: 883, 6214: 884, 6215: 885, 6216: 886, 6219: 887, 6220: 888, 6223: 889, 6224: 890, 6225: 891, 6227: 892, 6230: 893, 6235: 894, 6236: 895, 6244: 896, 6246: 897, 6247: 898, 6252: 899, 6253: 900, 6255: 901, 6257: 902, 6258: 903, 6259: 904, 6262: 905, 6263: 906, 6264: 907, 6269: 908, 6271: 909, 6277: 910, 6279: 911, 6281: 912, 6285: 913, 6287: 914, 6290: 915, 6291: 916, 6296: 917, 6297: 918, 6299: 919, 6301: 920, 6319: 921, 6320: 922, 6328: 923, 6331: 924, 6337: 925, 6338: 926, 6339: 927, 6340: 928, 6342: 929, 6344: 930, 6345: 931, 6347: 932, 6348: 933, 6351: 934, 6352: 935, 6353: 936, 6355: 937, 6356: 938, 6357: 939, 6359: 940, 6362: 941, 6365: 942, 6366: 943, 6367: 944, 6368: 945, 6369: 946, 6370: 947, 6371: 948, 6376: 949, 6377: 950, 6389: 951, 6391: 952, 6393: 953, 6396: 954, 6397: 955, 6398: 956, 6399: 957, 6400: 958, 6402: 959, 6403: 960, 6406: 961, 6407: 962, 6408: 963, 6410: 964, 6412: 965, 6414: 966, 6415: 967, 6416: 968, 6422: 969, 6423: 970, 6429: 971, 6433: 972, 6439: 973, 6440: 974, 6441: 975, 6446: 976, 6447: 977, 6448: 978, 6449: 979, 6452: 980, 6459: 981, 6464: 982, 6465: 983, 6474: 984, 6476: 985, 6479: 986, 6481: 987, 6482: 988, 6483: 989, 6486: 990, 6489: 991, 6494: 992, 6499: 993, 6500: 994, 6502: 995, 6503: 996, 6504: 997, 6505: 998, 6506: 999, 6507: 1000, 6509: 1001, 6517: 1002, 6522: 1003, 6524: 1004, 6528: 1005, 6530: 1006, 6531: 1007, 6533: 1008, 6535: 1009, 6539: 1010, 6540: 1011, 6543: 1012, 6545: 1013, 6546: 1014, 6547: 1015, 6548: 1016, 6549: 1017, 6550: 1018, 6552: 1019, 6558: 1020, 6559: 1021, 6566: 1022, 6569: 1023, 6571: 1024, 6577: 1025, 6578: 1026, 6585: 1027, 6586: 1028, 6592: 1029, 6595: 1030, 6596: 1031, 6602: 1032, 6603: 1033, 6605: 1034, 6606: 1035, 6607: 1036, 6609: 1037, 6610: 1038, 6611: 1039, 6614: 1040, 6615: 1041, 6616: 1042, 6617: 1043, 6621: 1044, 6636: 1045, 6637: 1046, 6639: 1047, 6641: 1048, 6648: 1049, 6649: 1050, 6651: 1051, 6660: 1052, 6661: 1053, 6662: 1054, 6665: 1055, 6668: 1056, 6669: 1057, 6670: 1058, 6671: 1059, 6672: 1060, 6673: 1061, 6674: 1062, 6676: 1063, 6679: 1064, 6680: 1065, 6685: 1066, 6686: 1067, 6688: 1068, 6689: 1069, 6690: 1070, 6694: 1071, 6695: 1072, 6697: 1073, 6698: 1074, 6699: 1075, 6700: 1076, 6704: 1077, 6708: 1078, 6709: 1079, 6710: 1080, 6717: 1081, 6722: 1082, 6725: 1083, 6726: 1084, 6732: 1085, 6741: 1086, 6744: 1087, 6745: 1088, 6755: 1089, 6758: 1090, 6759: 1091, 6763: 1092, 6764: 1093, 6767: 1094, 6770: 1095, 6776: 1096, 6777: 1097, 6778: 1098, 6779: 1099, 6785: 1100, 6788: 1101, 6789: 1102, 6794: 1103, 6799: 1104, 6804: 1105, 6805: 1106, 6813: 1107, 7138: 1108, 7139: 1109}

base_opt = {'workers': 4,
            'split_id': 0,
            'cuhk03_labeled': False,
            'cuhk03_classic_split': False,
            'use_metric_cuhk03': False,
            'num_instances': 4,
            'ReID_factor': 10, }

def get_opts(name):
  # 1.
  if name == 'ide':
    base_opt['transform_train'] = T.Compose([T.RandomSizedRectCrop(256, 128), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev), T.RandomErasing(EPSILON=0)])
    base_opt['transform_test'] = T.Compose([T.Resize((256, 128), interpolation=3), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  elif name == 'densenet121':
    base_opt['transform_train'] = T.Compose([T.Random2DTranslation(256, 128), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])
    base_opt['transform_test'] = T.Compose([T.Resize((256, 128)), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  elif name == 'mudeep':
    base_opt['transform_train'] = T.Compose([T.Random2DTranslation(256, 128), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])
    base_opt['transform_test'] = T.Compose([T.Resize((256, 128)), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  # 2.   
  elif name == 'aligned':
    base_opt['transform_train'] = T.Compose([T.Random2DTranslation(256, 128), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])
    base_opt['transform_test'] = T.Compose([T.Resize((256, 128)), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  elif name == 'pcb':
    base_opt['transform_train'] = T.Compose([T.Resize((384,192), interpolation=3), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(Imagenet_mean, Imagenet_stddev)])
    base_opt['transform_test'] = T.Compose([T.Resize((384,192), interpolation=3), T.ToTensor(), T.Normalize(Imagenet_mean, Imagenet_stddev)])
    base_opt['ReID_factor'] = 2
    base_opt['workers'] = 16

  elif name == 'hacnn':
    base_opt['transform_train'] = T.Compose([T.Random2DTranslation(160, 64), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])
    base_opt['transform_test'] = T.Compose([T.Resize((160, 64)), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  # 3.
  elif name == 'cam':
    base_opt['transform_train'] = T.Compose([T.RandomSizedRectCrop(256, 128), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev), T.RandomErasing(EPSILON=0.5)])
    base_opt['transform_test'] = T.Compose([T.Resize((256, 128), interpolation=3), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  elif name == 'lsro':
    base_opt['transform_train'] = T.Compose([T.Resize(144, interpolation=3), T.RandomCrop((256,128)), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])
    base_opt['transform_test'] = T.Compose([T.Resize((288,144), interpolation=3), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  elif name == 'hhl':
    base_opt['transform_train'] = T.Compose([T.RandomSizedRectCrop(256, 128), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev), T.RandomErasing(EPSILON=0)])
    base_opt['transform_test'] = T.Compose([T.Resize((256, 128), interpolation=3), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  elif name == 'spgan':
    base_opt['transform_train'] = T.Compose([T.RandomSizedRectCrop(256, 128), T.RandomHorizontalFlip(), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev), T.RandomErasing(EPSILON=0)])
    base_opt['transform_test'] = T.Compose([T.Resize((256, 128), interpolation=3), T.ToTensor(), T.Normalize(mean=Imagenet_mean, std=Imagenet_stddev)])

  return base_opt