Capacitated Facility Location Problem
Problem Description
Suppose there are n facilities and m customers. We wish to choose:
- which of the n facilities to open
- the assignment of customers to facilities
The objective is to minimize the sum of the opening cost and the assignment cost.
attention: The total demand assigned to a facility must not exceed its capacity.
Problem Modeling

Data Structure
-
Two Main Charactors: Customer and Facility
-
Customer
class Customer { public: Customer() = default; Customer(unsigned int count, unsigned int *assignedCost,unsigned int demands); ~Customer(); unsigned int getDemand() const {return demand;}; void updateAssigned(unsigned int seq); unsigned int getAssignedCost(unsigned int index); unsigned int getAssignedIndex(); private: unsigned int facility_count = 0; // amount of facicilities accessible unsigned int * assigned_cost; // how much it costs to assign customer to facilities unsigned int demand = 0; // customer's demand unsigned int assigned = -1; // which facility the customer is assigned to };
-
Facility
class Facility { public: Facility()= default; Facility(unsigned int capac, unsigned int opening); ~ Facility() {}; unsigned int getOpeningCost() const {return opening_cost;}; unsigned int getCapacility() const {return capacility;}; void updateCapacility(unsigned int amount); unsigned int getCost() const {return cost;}; unsigned int updateCost(unsigned int a); bool assign(unsigned int amount, unsigned int assignedCost); bool isOpen() {return is_open;}; private: unsigned int cost = 0; // the sum of opeing cost and assigned cost unsigned int capacility = 0; unsigned int opening_cost = 0; bool is_open = false; // whther the facility is open or not };
-
-
One Tool class to load data: DataLoader
class DataLoader { private: int i, j; vector<Facility*> facilities; vector<Customer*> customers; public: DataLoader(string file_path); ~DataLoader(); unsigned int getCustomerCount() { return j;}; unsigned int getFacilityCount() { return i;}; unsigned int getDemand(unsigned int index) const; unsigned int getCapacility(unsigned int index) const; unsigned int getCost(unsigned int index) const; // get the cost of a specified facility unsigned int getCost() const; // get the sum of cost unsigned int getAssignedCost(unsigned int , unsigned int) const; unsigned int pickBestFacility(unsigned int index_j); // for greedy algorithom void assign(unsigned int index_j, unsigned int index_i); // assign customer to facility void save(const string &); // save data to specified file };
-
One ProblemSolver function to run different algorithom in main function to sovle the problem.
Algorithom
1. Greedy Algorithom
-
strategy taken:
visit all the customers in sequence, for every customer, find a best facility for it, which satisfies:
- The remaining capacility of it can hold the demand of the customer.
- Among all the available facility, the facility has the minimum cost for the customer.
-
Code Implement:
void greedyAlgorithm(DataLoader & data) { int customer_count = data.getCustomerCount(); int facility_count = data.getFacilityCount(); for (int i = 0; i < customer_count; ++i) { int index_j = data.pickBestFacility(i); data.assign(i, index_j); } } unsigned int DataLoader::pickBestFacility(unsigned int index_j) { unsigned int best = 0; for (int tmp = 0; tmp < i - 1; ++tmp) { if (customers[index_j]->getDemand() <= facilities[tmp]->getCapacility()) { if (customers[index_j]->getAssignedCost(best) > customers[index_j]->getAssignedCost(tmp)) { best = tmp; } } } return best; }
-
Result:
File Result Time(s) p1 9263 0.00052815 p2 7949 0.000620098 p3 9949 0.000656021 p4 11949 0.00066885 p5 9735 0.000684246 p6 8421 0.000683818 p7 10421 0.00125174 p8 12421 0.00104946 p9 9263 0.000766355 p10 7949 0.000917745 p11 9949 0.000640197 p12 11949 0.00063421 p13 10231 0.00114098 p14 7742 0.00097334 p15 11342 0.00141254 p16 14942 0.00154554 p17 10231 0.00136764 p18 7742 0.00110335 p19 11342 0.00184875 p20 14942 0.00148268 p21 10231 0.00100755 p22 7742 0.00277376 p23 11342 0.000976761 p24 14942 0.00129451 p25 15694 0.0038955 p26 13164 0.00413798 p27 17964 0.00396093 p28 22764 0.00383862 p29 16448 0.0038925 p30 13711 0.00627026 p31 18911 0.00426371 p32 24111 0.00567069 p33 16009 0.0052905 p34 13376 0.0047786 p35 18376 0.00601751 p36 23376 0.00411788 p37 15636 0.00387796 p38 13106 0.00384033 p39 17906 0.00366927 p40 22706 0.00630233 p41 8090 0.00106272 p42 9896 0.00149508 p43 12721 0.00204932 p44 11140 0.00111019 p45 12055 0.00152672 p46 13065 0.00184319 p47 11962 0.000970774 p48 10181 0.00157847 p49 12376 0.00196036 p50 9329 0.00285459 p51 10329 0.00209636 p52 14364 0.00100627 p53 13390 0.00192059 p54 11647 0.00104861 p55 13902 0.00197448 p56 25710 0.00904658 p57 34410 0.00521524 p58 54710 0.00524902 p59 40829 0.00824602 p60 25710 0.00507283 p61 34410 0.00689677 p62 54710 0.00499713 p63 40829 0.0146702 p64 25710 0.00718629 p65 34410 0.00498943 p66 54710 0.0051049 p67 41474 0.00750532 p68 25710 0.00518017 p69 34410 0.0102145 p70 54710 0.00768622 p71 40829 0.00513142 -
Detail:
p1
9544
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 8 6 3 6 4 5 7 8 2 1 6 0 2 4 6
p2
8246
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 8 6 3 6 4 5 7 8 2 1 6 0 2 4 6
p3
10046
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 8 6 3 6 4 5 7 8 2 1 6 0 2 4 6
p4
11846
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 8 6 3 6 4 5 7 8 2 1 6 0 2 4 6
p5
10052
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 6 7 6 3 4 4 0 1 8 8 1 8 0 2 4 8
p6
8754
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 6 7 6 3 4 4 0 1 8 8 1 8 0 2 4 8
p7
10554
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 6 7 6 3 4 4 0 1 8 8 1 8 0 2 4 8
p8
12354
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 6 7 6 3 4 4 0 1 8 8 1 8 0 2 4 8
p9
9258
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 7 6 3 6 4 5 7 8 8 1 7 0 2 4 6
p10
7960
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 7 6 3 6 4 5 7 8 8 1 7 0 2 4 6
p11
9760
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 7 6 3 6 4 5 7 8 8 1 7 0 2 4 6
p12
11560
1 1 1 1 1 1 1 1 1 0
5 7 8 2 7 2 5 6 3 2 6 3 4 0 6 4 5 0 3 7 7 6 3 5 6 2 5 7 0 3 3 8 2 1 3 7 6 3 6 4 5 7 8 8 1 7 0 2 4 6
p13
9860
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p14
7625
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p15
11025
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p16
14425
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p17
9860
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p18
7625
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p19
11025
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p20
14425
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p21
9860
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p22
7625
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p23
11025
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p24
144251
1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 6 1 18 7 14 12 11 5 4 18 5 8 6 12 13 4 0 12 1 15 16 4 9 14 3 15 7 5 6 1 0 17 4 0 8 0 6 11 1 0 6 16 17 4 5 12 14 13 8
p25
15694
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 25 5 27 20 8 5 12 22 20 8 13 26 10 13 8 25 13 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p26
13164
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 25 5 27 20 8 5 12 22 20 8 13 26 10 13 8 25 13 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p27
17964
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 25 5 27 20 8 5 12 22 20 8 13 26 10 13 8 25 13 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p28
22764
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 25 5 27 20 8 5 12 22 20 8 13 26 10 13 8 25 13 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p29
16105
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 16 5 12 22 20 3 13 26 10 13 16 7 13 21 18 3 25 25 11 19 18 10 4 22 20 9 15 25
p30
13471
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 16 5 12 22 20 3 13 26 10 13 16 7 13 21 18 3 25 25 11 19 18 10 4 22 20 9 15 25
p31
18471
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 16 5 12 22 20 3 13 26 10 13 16 7 13 21 18 3 25 25 11 19 18 10 4 22 20 9 15 25
p32
23471
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 16 5 12 22 20 3 13 26 10 13 16 7 13 21 18 3 25 25 11 19 18 10 4 22 20 9 15 25
p33
15666
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 9 15 25
p34
13136
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 9 15 25
p35
17936
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 9 15 25
p36
22736
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 9 15 25
p37
15636
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p38
13106
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p39
17906
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p40
22706
0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0
21 10 7 3 20 8 13 18 21 1 26 13 24 21 5 23 13 8 7 5 21 27 8 7 5 22 20 8 5 6 4 13 11 9 4 21 27 8 7 5 11 19 15 10 4 7 20 8 5 7 22 13 8 7 13 21 27 8 3 11 22 13 8 7 9 4 17 22 9 3 8 22 18 21 4 10 12 8 7 7 11 13 10 10 4 21 27 24 11 5 4 13 8 9 4 26 13 24 21 5 4 17 17 9 3 22 20 8 25 5 10 20 8 5 7 22 27 8 7 5 27 20 8 5 12 22 20 8 13 26 10 13 8 7 7 21 18 8 25 25 8 13 18 10 4 22 20 8 15 25
p41
8049
1 1 1 1 1 1 1 1 1 0
2 8 8 1 6 8 4 3 0 3 0 1 8 8 1 2 2 6 4 2 0 5 0 6 6 7 1 7 7 5 4 3 7 3 4 0 2 0 7 1 5 0 8 2 0 0 0 5 1 5 7 3 3 0 3 1 0 7 8 1 5 8 6 4 6 5 5 7 5 3 5 9 8 7 8 0 6 7 3 4 9 5 4 5 5 9 4 5 6 6
p42
9478
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
16 17 0 6 9 10 0 6 17 8 16 5 2 6 2 5 7 9 2 2 3 0 5 4 12 11 9 12 9 10 12 6 11 13 6 11 3 2 4 4 1 15 18 10 2 6 4 4 0 4 16 0 7 9 14 5 18 14 17 10 4 17 8 7 6 7 10 6 8 8 11 6 5 11 7 15 14 11 7 8
p43
12637
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
20 21 18 22 16 21 18 12 15 10 9 23 20 4 27 24 28 16 1 6 10 13 22 19 10 22 5 9 14 11 22 13 8 15 5 17 8 22 26 25 14 8 14 23 11 14 6 13 17 7 20 15 2 7 1 3 3 13 14 0 26 11 6 26 12 7 22 18 16 23
p44
11212
1 1 1 1 1 1 1 1 1 0
8 1 1 6 1 2 4 3 7 8 7 0 0 3 0 7 4 8 8 7 8 0 4 4 7 5 4 0 1 7 4 0 3 3 2 5 3 1 1 7 0 2 1 0 7 5 1 1 6 7 2 0 3 7 8 2 2 6 6 0 5 7 6 8 7 2 6 6 7 0 3 9 5 7 7 9 5 5 7 5 4 5 7 7 6 4 4 2 2 3
p45
11798
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
3 18 15 2 8 18 4 9 18 0 0 1 17 0 1 5 17 6 2 7 0 12 16 17 14 18 17 2 7 0 7 8 17 0 10 16 18 0 18 1 7 0 18 9 17 8 2 16 17 7 3 7 8 0 11 12 17 14 16 14 9 18 17 2 1 14 5 17 17 14 12 13 9 18 14 10 1 18 15 10
p46
12703
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0
5 4 18 19 11 8 14 17 6 0 2 9 13 7 24 7 6 7 2 19 12 28 2 13 14 28 4 13 7 11 9 28 17 28 26 7 12 1 28 6 27 7 8 16 3 21 10 0 2 20 12 19 23 3 24 13 25 14 6 24 4 28 24 26 21 5 19 12 24 10
p47
11863
1 1 1 1 1 1 1 1 1 1
2 8 0 8 1 7 7 8 7 7 3 6 1 6 7 7 8 8 8 8 1 1 6 7 7 7 0 6 7 7 0 6 2 1 7 0 3 7 1 7 0 6 0 7 0 3 7 7 5 7 0 0 1 0 3 7 1 6 0 4 6 7 9 9 7 0 5 7 4 5 9 99 7 9 6 3 5 6 7 9 9 9 9 5 6 3 5 6 6 5
p48
9791
1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0
3 0 12 0 6 0 12 0 12 1 1 0 13 3 1 0 15 0 1 0 18 1 1 0 18 5 4294967295 4294967295 18 9 42949672954294967295 15 12 4294967295 4294967295 18 18 4294967295 4294967295 15 11 5 3 15 11 4 11 15 11 10 11 15 12 12 11 4294967295 11 18 2 4294967295 12 18 1 4294967295 12 9 5 4294967295 13 9 10 4294967295 4294967295 9 13 4294967295 4294967295 9 15
p49
11973
1 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0
0 22 12 1 25 5 12 10 22 20 1 28 1 12 13 3 27 0 2 12 0 22 5 26 3 26 15 7 27 0 23 10 1 23 7 28 4 2 19 1 28 0 27 14 23 25 12 17 7 27 20 0 28 3 28 14 4294967295 27 0 23 10 3 21 4294967295 28 4 23 16 4294967295 27
p50
9513
1 1 1 1 1 1 1 1 1 0
3 1 0 8 0 5 8 2 8 1 5 2 6 6 1 2 0 2 8 1 5 7 6 6 4 1 8 5 2 5 0 1 6 2 1 0 8 5 0 5 2 1 7 2 0 2 8 5 0 5 6 7 6 5 5 1 1 5 7 5 1 2 0 6 0 2 7 2 8 6 4294967295 4294967295 6 0 7 2 2 5 7 5 4294967295 7 6 4294967295 4 2 7 5 7 5 5 2 6 6 3 2 4294967295 2 3 4294967295
p51
10450
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
1 0 12 13 11 9 6 11 8 9 6 6 11 8 7 11 7 12 15 8 5 6 12 8 8 6 15 11 8 7 1 0 16 12 11 0 6 11 8 7 6 6 11 8 7 0 6 11 9 7 3 0 15 12 8 5 7 17 15 15 5 6 11 0 3 5 16 3 0 10 11 5 14 12 11 0 6 10 9 0 7 6 11 0 2 0 7 9 15 0 5 16 18 0 11 2 13 9 17 0
p52
14364
1 1 1 1 1 1 1 1 1 0
8 1 3 8 8 2 4 3 1 0 1 1 3 8 0 3 6 0 0 2 5 3 3 8 5 4 7 0 7 7 5 2 3 6 6 2 4 3 6 7 5 3 3 8 6 2 4 2 7 7 5 7 3 2 7 5 2 0 4 4 2 1 3 6 3 3 0 0 4294967295 2 7 3 3 6 5 4 7 2 7 7 5 7 3 2 8 5 5 3 2 0 5 7 7 2 0 5 6 4294967295 4 4
p53
13390
1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0
8 3 12 4 9 8 3 11 13 9 17 3 15 1 14 8 3 11 13 9 8 3 11 4 9 5 18 5 7 9 13 3 12 8 17 13 3 12 4 9 11 3 15 5 11 17 11 15 1 14 11 3 12 4 17 11 3 15 5 10 17 0 8 5 2 18 3 11 5 2 1 18 13 0 0 17 3 15 2 4 1 18 14 7 17 1 18 13 10 12 2 18 1 0 0 13 3 12 4 1
p54
11647
1 1 1 1 1 1 1 1 1 0 4 0 0 0 0 4 4 6 5 0 4 0 3 3 2 1 6 4 8 0 8 0 2 5 2 1 6 4 8 0 4 0 3 5 8 1 6 4 8 0 4 4294967295 2 3 2 1 4 4 5 0 4 4294967295 4294967295 4294967295 2 4294967295 6 3 8 4294967295 4 4294967295 3 4294967295 4294967295 4 7 1 8 4294967295 2 4294967295 2 3 2 1 6 4 8 4294967295 4 4294967295 3 4294967295 2 4294967295 6 4 8 4294967295 4294967295 4294967295 2 3 2 4294967295 6 4 5 5 p55 13902 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 4 3 8 6 9 9 0 2 6 9 9 2 2 14 9 4 0 2 4 9 4 2 2 14 10 4 2 2 4 8 9 3 11 6 10 4 3 14 7 10 13 2 2 14 18 4 0 0 16 5 4 3 0 7 10 4 0 0 0 10 4 6 2 6 10 4 0 2 4 5 4 3 11 6 10 4 2 2 4 2 2 2 2 14 10 0 2 6 14 15 4294967295 4294967295 6 14 15 4 3 4294967295 8 10
p56
25710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p57
34410
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p58
54710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p59
40829
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p60
25710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p61
34410
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p62
54710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p63
40829
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p64
25710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p65
34410
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p66
54710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p67
41474
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 19 20 1 8 9 3 8 3 24 5 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 21 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 2 5 14 15 17 27 22 25 15 21 5 14 9 10 18 3 2 8 22 15 12 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 28 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 17 9 1 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 11 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 23 2 14 27 4 26 4 28 22 28 15 8 1 28 20 16 8 26 20 8 10 4 1 27 8
p68
25710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p69
34410
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p70
54710
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
p71
40829
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
19 20 1 15 9 3 8 3 6 25 9 4 10 14 9 2 7 16 16 20 16 16 4 19 17 8 7 0 3 16 4 5 7 3 2 16 7 24 24 10 1 12 12 1 3 22 12 5 22 19 17 14 24 4 17 4 5 5 14 15 17 27 13 25 15 21 5 14 9 10 18 3 2 8 0 15 16 11 3 14 5 25 11 23 20 5 15 2 24 15 9 7 0 27 7 17 20 8 11 3 6 9 19 11 27 7 1 23 13 9 25 1 9 21 7 17 18 8 11 18 0 10 10 13 28 15 21 20 8 2 23 12 12 9 16 26 5 23 14 1 2 17 19 11 6 19 11 8 18 9 8 11 5 22 4 25 0 24 12 17 23 8 19 17 26 0 2 5 19 23 2 14 24 20 23 10 2 14 27 4 26 4 28 22 28 15 27 1 28 20 16 8 26 20 8 10 4 1 27 8
2. Simulated Annealing
-
strategy taken:
Take the calculation result of the greedy algorithm before as the initial solution, and the new solution is obtained through several iteration processes.
-
Code Implement:
void Simulated_annealing(int p, vector <int>& capacity, vector <int>& opencost, vector<double>& customer_demand, vector<vector<double>>& assign_cost) { //generate random srand((unsigned)time(NULL)); //start timing auto start = system_clock::now(); //define cost int final_cost = 0; int facility_num = capacity.size(); int customer_num = customer_demand.size(); string f_greedy1 = "greedy1_solutions/s"; string f_sa = "Simulated_annealing_solutions/s"; //define facility solution vector<int> which_facility(facility_num, 0); //define customer solution vector<int> customer_choose(customer_num, 0); vector<int> serve_number(facility_num, 0); vector <int> current_capacity = capacity; //get initial solution from greedy algorithom ifstream fin(f_greedy1+to_string(p)); fin >> final_cost; for (int i = 0; i < facility_num; i++) { fin >> which_facility[i]; } for (int i = 0; i < customer_num; i++) { fin >> customer_choose[i]; current_capacity[customer_choose[i]] -= customer_demand[i]; serve_number[customer_choose[i]]++; } fin.close(); ofstream fout(f_sa+to_string(p)); int best_final_cost = final_cost; vector<int> best_which_facility = which_facility; vector<int> best_customer_choose = customer_choose; int customer = 0; int facility = 0; int change = 0; bool flag = false; double Tem = (double)final_cost/10; for (int outer = 0; outer < facility_num*20; outer++) { if (Tem < 1e-15) { break; } for (int inner = 0; inner < customer_num*10; inner++) { customer = rand()%customer_num; flag = false; for (int i = 0; i < facility_num; i++) { facility = rand()%facility_num; if (facility != customer_choose[customer] && current_capacity[facility] > customer_demand[customer]) { flag = true; break; } } if (!flag) { continue; } change = (1 - which_facility[facility])*opencost[facility]+ assign_cost[facility][customer]- assign_cost[customer_choose[customer]][customer]- (serve_number[customer_choose[customer]]==1 ? opencost[customer_choose[customer]]:0); if (min(1.0, exp(-change / Tem)) < (rand()%1000)/1000.0) { continue; } //update final_cost += change; current_capacity[customer_choose[customer]] += customer_demand[customer]; current_capacity[facility] -= customer_demand[customer]; serve_number[customer_choose[customer]]--; if (serve_number[customer_choose[customer]] == 0) { which_facility[customer_choose[customer]] = 0; } if (serve_number[facility] == 0) { which_facility[facility] = 1; } serve_number[facility]++; customer_choose[customer] = facility; //record best solution if (final_cost < best_final_cost) { Tem *= 0.95; best_final_cost = final_cost; best_customer_choose = customer_choose; best_which_facility = which_facility; } } Tem *= 0.98; } fout << compute_cost(opencost, assign_cost, best_which_facility, best_customer_choose) << endl; for (int i = 0; i < facility_num; i++) { fout << best_which_facility[i] << " "; } fout << endl; for (int i = 0; i < customer_num; i++) { fout << best_customer_choose[i] << " "; } auto end = system_clock::now(); auto duration = duration_cast<microseconds>(end - start); fout << endl << double(duration.count()) * microseconds::period::num / microseconds::period::den; fout.close(); }
-
Result:
File Result Time(s) p1 8863 0.020943 p2 7926 0.021947 p3 9365 0.019946 p4 10793 0.021939 p5 8950 0.031883 p6 7777 0.031914 p7 9543 0.038895 p8 11088 0.034909 p9 8544 0.030917 p10 7617 0.02593 p11 9027 0.026925 p12 10132 0.023934 p13 8376 0.041888 p14 7182 0.038895 p15 8977 0.034906 p16 10603 0.032913 p17 8288 0.03291 p18 7125 0.031915 p19 8952 0.032912 p20 10752 0.03294 p21 8144 0.03096 p22 7092 0.034024 p23 8746 0.036938 p24 10374 0.041887 p25 12632 0.126661 p26 11140 0.125665 p27 13295 0.1267 p28 15794 0.1326 p29 13452 0.130652 p30 11701 0.129695 p31 14014 0.131606 p32 16490 0.12766 p33 12316 0.124666 p34 11285 0.124672 p35 13137 0.130885 p36 15128 0.126663 p37 12200 0.126619 p38 10984 0.128614 p39 12984 0.124666 p40 14984 0.124706 p41 7103 0.03494 p42 1910 0.052818 p43 6488 0.05884 p44 7128 0.035905 p45 6969 0.06283 p46 6269 0.057845 p47 6249 0.035903 p48 5919 0.052817 p49 5606 0.058838 p50 9288 0.039894 p51 8211 0.066038 p52 9303 0.041885 p53 9328 0.068814 p54 9275 0.049494 p55 8443 0.067817 p56 22848 0.19049 p57 29836 0.189492 p58 46649 0.191489 p59 40829 0.194478 p60 22266 0.19244 p61 27930 0.180478 p62 44442 0.191534 p63 28201 0.226393 p64 22535 0.234373 p65 26972 0.178561 p66 41550 0.182813 p67 27865 0.179518 p68 22711 0.17669 p69 29664 0.189531 p70 43674 0.210472 p71 31862 0.186501 -
Detail:
p1
8863
1 1 1 1 1 0 1 0 1 1
8 2 1 6 3 8 2 4 4 1 9 0 3 2 8 3 4 0 9 4 3 4 6 4 2 6 1 6 0 1 2 6 0 3 9 4 4 3 0 4 3 8 1 6 4 0 2 0 4 0
p2
7926
1 1 1 1 1 1 1 1 1 0
8 2 1 6 3 8 2 4 4 1 4 0 3 2 8 3 4 0 6 7 3 4 6 4 2 5 1 5 0 5 2 6 0 3 4 4 4 3 0 4 1 8 1 5 7 0 2 0 4 0
p3
9365
1 1 1 1 1 0 1 0 1 0
8 2 1 6 3 8 2 4 4 1 4 0 3 2 8 3 4 0 6 4 3 2 6 4 2 6 1 6 0 1 2 6 0 3 2 4 4 3 0 4 3 8 1 6 4 0 2 0 4 0
p4
10793
1 1 1 1 1 0 1 0 1 0 8 2 1 6 3 8 2 4 4 1 4 8 3 2 0 3 2 0 6 4 3 4 6 4 2 6 1 6 0 1 2 6 0 3 4 4 4 3 0 4 2 8 1 6 4 0 2 0 4 0
p5
8950
1 1 1 1 1 0 1 0 1 1
8 8 1 6 1 8 2 4 4 1 9 8 0 2 8 3 2 3 9 9 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 4 0 9 0 4 0
p6
7777
1 1 1 1 1 0 1 1 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 4 0 9 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 7 0 2 3 7 0
p7
9543
1 1 1 1 1 0 1 0 1 1
8 8 1 6 1 8 2 4 4 1 9 8 3 2 8 3 2 0 9 9 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 3 4 1 8 1 6 4 0 9 0 4 0
p8
11088
1 1 1 1 1 0 1 0 1 1
8 8 1 6 3 8 2 4 4 1 9 8 3 2 8 3 2 0 9 9 3 8 6 4 2 6 1 1 0 1 2 6 0 3 9 4 4 3 0 4 1 8 1 6 4 0 9 3 4 0
p9
8544
1 1 1 0 1 0 1 0 1 1
8 8 1 6 1 8 2 4 2 1 9 8 0 2 8 0 4 0 9 4 1 8 6 4 2 6 1 1 0 1 2 6 0 0 9 4 4 0 8 4 1 8 1 6 4 0 2 0 4 0
p10
7617
1 1 1 1 1 0 1 1 1 0
8 8 1 6 3 8 2 4 4 1 4 8 3 2 8 3 4 0 6 7 3 8 6 4 2 6 1 1 0 1 2 6 0 3 4 4 4 3 0 4 1 8 1 6 7 0 4 0 4 0
p11
9027
1 1 1 1 1 0 1 0 1 0
8 8 1 6 3 8 2 4 4 1 4 8 3 2 8 3 2 0 6 4 3 8 6 4 2 6 1 1 0 1 2 6 0 3 4 4 4 3 0 4 1 8 1 6 4 0 2 0 4 0
p12
10132
1 1 1 0 1 0 1 0 1 0
8 8 1 6 1 8 2 4 4 1 4 8 0 2 8 0 2 0 6 4 1 8 6 4 2 6 1 1 8 1 2 6 0 0 4 4 4 1 0 4 1 8 1 6 4 0 2 0 4 0
p13
8376
1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1
0 1 10 10 1 13 17 13 14 17 15 19 19 10 13 14 15 10 19 9 14 15 15 19 9 17 0 17 1 17 13 14 13 0 1 10 17 19 19 13 9 0 15 0 9 13 14 10 19 9
p14
7182
0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1
16 3 10 10 19 13 17 13 14 17 15 19 19 10 13 3 15 10 17 6 14 15 15 19 6 17 16 17 3 17 13 15 13 16 3 10 3 19 19 13 6 16 15 16 3 13 14 10 19 6
p15
8977
0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1
16 3 10 10 19 15 17 13 3 17 15 19 19 6 13 3 15 10 17 6 3 15 15 19 6 17 16 17 19 17 13 15 13 16 3 10 3 19 19 13 6 16 16 16 3 13 15 10 19 6
p16
10603
0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1
16 3 10 10 19 13 17 13 3 17 15 19 19 10 13 3 15 10 17 9 3 15 15 19 9 17 16 3 17 17 13 15 13 16 3 10 3 19 19 13 9 16 16 16 3 13 15 10 19 9
p17
8288
1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1
0 3 10 10 19 15 17 13 14 17 15 19 19 10 13 3 15 10 17 9 14 15 15 19 9 17 0 17 3 17 13 15 13 0 3 10 3 19 19 13 9 0 15 0 3 13 14 10 19 9
p18
7125
0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1
16 3 10 10 19 15 17 13 14 17 15 19 19 10 13 3 15 10 17 9 14 15 15 19 9 17 16 17 3 17 13 15 13 16 3 10 3 19 19 13 9 16 15 16 3 13 14 10 19 9
p19
8952
0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1
16 3 10 10 19 15 17 13 14 17 15 19 19 6 13 3 15 10 17 6 14 15 15 19 6 17 16 17 3 17 13 15 13 16 3 10 3 19 19 13 6 16 15 16 3 13 14 10 19 6
p20
10752
0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1
16 3 10 10 19 15 17 13 14 17 15 19 19 6 13 3 15 10 17 6 14 15 15 19 6 17 16 17 3 17 13 15 13 16 3 10 3 19 19 13 6 16 15 16 3 13 14 10 19 6
p21
8144
1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1
0 1 10 10 1 15 17 13 14 17 15 19 1 10 13 14 15 10 17 9 14 15 15 19 9 17 0 17 1 17 13 15 13 0 1 10 17 19 19 13 10 0 0 0 9 13 14 10 19 9
p22
7092
1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1
0 3 10 10 19 15 17 13 14 17 15 19 19 10 13 3 15 10 17 9 14 15 15 19 9 17 0 17 3 17 13 15 13 0 3 10 3 19 19 13 10 0 0 0 3 13 14 10 19 9
p23
8746
1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1
0 3 10 10 19 15 17 13 3 17 15 19 19 10 13 3 15 10 17 9 15 15 15 19 9 17 0 17 3 17 13 15 13 0 3 10 3 19 19 13 10 0 0 0 3 13 15 10 19 9
p24
10374
0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1
16 3 10 10 19 15 17 13 3 17 15 19 19 10 13 3 15 10 17 9 15 15 15 19 9 17 16 17 3 17 13 15 13 16 3 10 3 19 19 13 10 16 15 16 3 13 15 10 19 9
p25
12632
1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 14 20 5 2 24 14 17 24 8 8 20 2 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 11 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 8 24 20 14 24 20 7 20 17 17 17 2 7 20 5 2 24 17 11 7 24 14 2 25 20 8 17 14 25 2 25 7 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 24 0 25 0 11 24 5 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
p26
11140
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 14 20 5 14 24 14 17 5 8 8 20 2 14 14 17 25 11 2 0 5 17 5 8 2 24 5 24 25 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 11 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 8 5 20 14 24 20 0 20 17 2 17 2 0 20 5 2 24 0 11 0 5 2 14 25 8 8 17 17 25 2 25 0 11 20 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 20 11 5 24 0 25 0 0 24 5 8 14 0 5 20 17 0 8 20 14 8 25 25 5 2 5
p27
13295
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 14 20 5 2 24 14 17 24 8 8 20 17 14 14 17 25 11 2 0 5 17 5 8 2 24 5 24 11 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 11 14 0 5 20 11 11 11 24 0 24 24 20 20 11 0 24 8 24 20 14 24 8 0 20 0 2 0 17 0 20 5 2 24 0 11 17 24 2 14 25 20 8 17 17 25 2 25 0 11 14 8 14 14 2 11 11 11 24 24 24 24 5 8 25 20 20 11 5 24 0 11 0 11 24 5 8 14 0 5 20 17 0 8 20 14 8 25 25 5 2 5
p28
15794
1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 25 20 14 20 5 14 24 14 17 24 8 8 20 2 14 14 17 5 11 14 17 24 17 5 8 2 24 5 24 25 25 20 25 20 20 24 24 11 14 0 14 24 8 24 14 7 20 11 8 5 14 14 5 20 20 17 0 0 14 0 5 20 11 11 11 24 0 24 24 20 20 11 0 24 8 24 20 14 24 20 7 20 17 2 17 2 7 20 5 2 24 2 11 0 24 2 7 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 5 24 5 8 25 20 8 0 5 24 11 25 0 0 24 24 8 14 7 5 20 17 0 8 20 14 8 25 25 5 2 5
p29
13452
1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 13 2 20 5 2 9 14 17 24 8 8 20 2 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 13 25 20 20 24 24 0 14 0 14 9 8 24 14 0 13 11 8 5 14 14 5 13 20 17 11 0 14 0 5 20 11 11 11 9 0 9 9 20 20 11 17 24 8 9 20 2 24 20 0 13 17 17 17 17 0 20 5 2 24 17 11 17 9 2 2 25 13 8 17 14 25 2 25 17 11 8 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 9 0 25 0 0 24 25 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p30
11701
1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 2 24 14 17 9 8 8 20 0 14 14 17 25 11 2 0 5 17 5 8 2 24 5 24 5 25 13 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 5 2 14 5 13 13 17 11 11 14 0 5 20 11 11 11 9 0 9 9 20 20 11 0 24 8 9 20 14 24 20 0 13 17 17 17 17 0 20 5 2 9 17 11 17 9 2 2 25 13 8 17 17 25 2 25 17 11 14 14 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 9 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p31
14014
1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 2 24 14 17 9 8 8 20 2 14 14 17 25 11 2 0 5 17 5 8 2 24 5 9 5 25 13 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 25 14 14 5 13 20 17 25 11 14 0 5 20 11 11 11 9 0 9 24 13 20 11 17 24 8 9 20 14 9 20 0 13 17 2 17 17 0 20 5 2 24 17 11 17 5 2 2 25 8 8 17 17 25 2 25 0 11 14 8 14 2 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 9 0 25 0 11 24 9 8 14 0 5 20 17 0 8 20 14 8 25 25 5 2 5
p32
16490
1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
13 25 20 2 13 5 2 24 14 17 9 8 8 20 2 14 14 17 5 11 2 0 9 17 5 8 2 24 5 9 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 9 14 14 5 13 20 17 11 0 14 0 5 20 11 11 11 9 0 5 9 13 13 11 17 24 8 9 20 14 24 20 17 13 17 2 17 17 0 20 5 2 24 17 0 17 9 2 2 25 13 13 17 17 25 2 25 0 11 14 8 14 17 2 11 11 11 24 24 24 24 5 8 25 13 8 0 5 9 0 25 0 11 24 25 8 14 0 5 20 17 0 8 20 14 8 11 25 5 2 5
p33
12316
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 2 24 14 17 24 20 8 20 17 14 14 17 25 11 2 0 5 17 5 8 2 24 5 24 25 25 20 25 20 20 24 24 17 14 0 14 24 8 24 14 17 20 11 8 5 14 14 5 8 20 17 11 11 14 0 5 20 11 11 11 24 0 5 5 8 20 11 17 24 8 24 20 14 24 20 0 8 17 17 17 17 0 20 5 2 24 17 11 17 5 2 14 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 5 24 5 8 25 20 14 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 11 25 5 2 5
p34
11285
1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 13 2 20 5 2 24 14 17 5 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 13 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 24 5 20 20 11 17 24 8 24 20 14 24 20 0 13 17 17 17 17 0 20 5 2 24 17 11 17 5 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 13 8 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p35
13137
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 8 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 5 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 25 0 14 0 5 20 11 11 11 24 0 5 24 20 8 11 17 24 8 5 20 14 24 20 0 20 17 2 17 17 17 20 5 2 24 17 11 17 24 2 17 25 8 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 11 24 24 24 24 5 8 5 20 8 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p36
15128
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 17 24 14 17 5 8 8 20 2 14 14 17 5 11 2 0 24 17 5 8 2 24 24 24 5 25 8 25 20 20 24 24 11 14 0 14 24 8 24 14 11 20 11 8 25 14 14 5 20 8 17 11 11 14 0 5 20 11 11 11 24 0 5 5 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 5 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 5 24 5 8 25 20 8 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p37
12200
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 11 14 0 5 20 11 11 11 24 0 24 24 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 24 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p38
10984
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 24 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p39
12984
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 5 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p40
14984
1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0
20 11 20 2 20 5 2 24 14 17 24 8 8 20 17 14 14 17 5 11 2 0 5 17 5 8 2 24 5 24 5 25 20 25 20 20 24 24 0 14 0 14 24 8 24 14 0 20 11 8 5 14 14 5 20 20 17 11 0 14 0 5 20 11 11 11 24 0 5 24 20 20 11 17 24 8 24 20 14 24 20 0 20 17 17 17 17 0 20 5 2 24 17 11 17 5 2 2 25 20 8 17 17 25 2 25 17 11 14 8 14 14 2 11 11 25 24 24 24 24 5 8 25 20 8 0 5 24 0 25 0 11 24 5 8 14 17 5 20 17 0 8 20 14 8 25 25 5 2 5
p41
7103
1 1 1 1 1 1 1 1 1 1
5 6 4 1 7 9 3 7 8 8 4 9 2 6 2 7 7 3 0 6 6 1 4 1 6 5 5 4 8 5 8 0 0 0 3 9 2 6 6 2 2 7 3 3 3 5 0 5 6 4 1 1 6 6 2 7 2 8 8 8 0 0 1 5 0 6 6 6 4 4 0 4 4 0 7 7 2 2 6 5 7 2 9 7 9 9 9 9 9 2
p42
6910
1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1
12 18 11 5 19 19 16 13 16 16 11 18 19 14 19 0 0 17 14 14 5 11 5 11 12 12 11 16 17 13 0 19 18 14 14 19 19 0 0 0 16 11 13 16 5 5 18 19 0 18 16 17 17 13 13 5 12 14 14 14 11 11 11 11 11 11 0 0 19 19 19 12 19 19 19 18 18 19 19 19
p43
6488
0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 1
6 21 18 29 25 22 25 21 28 29 28 1 13 9 18 6 21 6 18 21 25 9 22 22 22 13 29 6 29 29 29 13 13 13 22 9 1 1 21 18 18 18 28 28 29 25 9 22 9 6 21 9 25 6 18 6 21 22 25 29 29 29 1 29 28 29 28 1 28 29
p44
7128
1 1 1 1 1 1 1 1 1 1
4 4 4 4 4 4 4 4 0 0 6 0 0 0 0 0 1 8 1 7 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 0 1 1 2 8 7 5 9 7 7 6 5 5 8 8 7 7 9 5 5 5 9 3 0 6 6 8 1 0 4 7 9 7 7 8 6 6 5 8 7 9 9 9 9 9 6 5 7 5
p45
6969
1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 2 2 2 2 2 2 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 0 0 2 2 8 2 15 14 13 10 15 5 8 13 14 13 13 0 14 15 10 10 12 10 15 13 13 13 8 12 10 10 15 2 13 8 14 14 8 14 10 13
p46
6269
0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0
10 10 10 10 10 10 10 19 1 28 1 1 1 1 1 2 2 2 2 2 2 5 5 5 5 5 5 9 9 9 9 13 9 9 10 2 2 5 14 28 28 19 19 28 14 14 18 14 13 28 10 13 13 1 2 13 13 18 18 14 19 19 28 18 14 13 14 13 19 18
p47
6249
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 2 1 1 1 2 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 6 7 6 0 7 7 7 7 7 7 8 8 8 8 6 8 8 8 9 2 9 9 9 9 9 0
p48
5919
1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1
0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 8 8 9 8 8 9 8 9 9 9 9 10 10 10 10 10 10 13 13 13 13 13 8 13 14 14 13 14 13 0 14 14 14 14 17 17 17 17 17 17 17 17 19 19 19 19 19 19 19
p49
5606
0 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0
1 1 1 2 1 2 2 2 2 2 2 2 2 7 7 7 7 7 7 7 7 7 9 9 9 9 9 13 13 13 13 13 13 13 13 13 16 16 16 16 16 16 20 20 20 20 20 20 21 20 21 20 1 21 21 21 21 26 26 26 26 26 26 26 28 28 28 28 26 28
p50
9288
1 1 1 1 1 1 1 1 0 1
3 6 3 0 2 1 5 5 3 7 7 4 1 9 9 9 9 2 5 3 6 0 0 4 0 0 7 4 4 7 7 7 3 3 3 5 9 9 0 6 0 9 9 9 5 5 5 5 5 3 3 5 6 4 0 0 9 6 1 2 2 7 7 7 3 3 0 4 7 7 3 6 6 0 0 4 4 3 3 4 3 5 2 2 2 2 6 7 2 7 9 1 2 2 1 2 1 1 9 1
p51
8211
1 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1
15 0 19 10 12 18 5 5 15 1 5 14 18 13 13 13 12 5 5 15 0 0 10 14 14 14 15 19 19 1 1 1 19 19 15 5 18 13 10 0 0 13 13 13 12 5 5 5 5 15 15 5 14 14 14 10 13 0 18 12 12 5 1 5 15 15 10 19 15 1 15 0 0 0 10 19 19 19 19 19 19 5 12 12 13 13 13 5 12 1 13 13 18 18 18 13 13 18 18 13
p52
9303
0 0 0 1 1 1 1 1 1 1
7 7 7 7 7 7 7 7 3 4 4 4 4 4 4 4 4 8 3 8 8 3 8 8 3 9 9 5 9 9 9 9 9 5 6 6 6 6 6 6 6 6 6 6 7 7 4 8 8 5 5 3 4 6 7 5 3 3 3 4 6 9 5 5 3 3 5 7 4 7 6 6 4 3 3 5 3 4 7 5 6 3 3 5 5 3 3 7 5 3 8 5 9 6 5 6 3 4 3 7
p53
9328
0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0
5 5 5 5 5 5 5 5 1 7 7 7 7 7 7 7 7 12 13 13 12 13 12 13 12 15 9 9 9 9 9 9 9 15 18 18 18 18 18 18 18 18 18 18 5 5 7 12 12 15 15 1 7 18 5 15 3 3 1 7 18 9 15 13 3 13 9 18 7 5 17 18 7 3 3 15 3 7 7 17 18 7 13 15 15 3 1 5 15 1 15 9 17 17 15 17 1 7 1 5
p54
9275
1 0 1 1 1 1 1 1 1 1
7 7 7 7 7 7 7 7 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 6 6 6 8 8 8 8 8 8 8 8 8 3 6 6 6 6 6 6 6 6 6 5 5 6 5 5 5 6 6 0 0 6 0 5 7 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 9 4 9 4 9 9 9 9 9
p55
8443
1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0
18 18 18 18 18 18 8 8 8 8 8 8 2 8 2 2 2 2 8 12 6 6 12 6 12 12 12 12 6 6 6 6 6 6 6 6 6 6 6 7 7 0 0 7 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 9 13 7 13 7 9 7 7 9 13 9 9 13 18 13 9 13 9 9 13 15 15 15 15 15 15 15 15 15 15 18 18 18 18 18 18 18 18 18
p56
22848
1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 21 12 21 27 22 28 4 28 10 3 28 18 3 20 22 27 18 16 5 24 10 18 27 19 29 2 19 19 4 16 27 6 20 8 24 16 18 9 6 4 8 19 3 21 19 20 24 16 24 16 8 6 11 9 18 25 29 0 7 8 3 11 5 17 28 25 18 12 6 9 23 23 20 5 8 16 10 0 9 25 29 10 19 5 27 7 28 6 25 25 2 3 11 12 0 28 28 21 25 18 4 0 4 24 22 3 19 29 27 12 12 8 28 7 17 8 9 11 28 19 26 16 2 11 26 17 28 24 11 20 23 9 3 3 28 10 12 22 11 11 25 5 24 21 27 25 24 17 23 0 8 11 2 16 3 3 3 27 10 24 5 27 5 4 3 21 5 20 19 10 26 2 0 10 29 10 5 21 2 6 12 8 28 23 0 21 2 21 6 4 7 12 7 21 10 19
p57
29836
0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0
18 19 21 27 2 12 21 27 22 28 4 28 13 13 28 18 3 20 22 27 18 16 5 24 10 18 27 19 4 2 19 19 4 16 27 6 20 8 24 16 18 8 6 4 8 19 13 21 19 20 24 16 24 16 8 6 11 8 18 7 4 2 7 8 13 11 5 17 28 25 18 12 19 8 23 23 20 23 8 16 10 17 26 25 4 13 6 5 27 7 28 6 25 25 2 3 11 6 17 28 28 21 25 18 4 24 4 27 22 3 19 4 27 12 12 8 28 7 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 8 3 3 28 10 12 22 11 11 25 5 24 21 27 11 24 17 23 17 8 11 2 16 3 13 13 27 10 24 5 27 5 4 3 21 5 20 19 10 26 2 24 10 4 10 5 21 2 19 12 8 28 23 17 21 2 21 6 4 7 12 7 21 10 19
p58
46649
1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0
18 19 21 27 2 12 21 27 18 28 4 28 10 3 28 18 3 20 27 0 18 16 5 24 10 18 24 19 4 2 19 19 4 16 27 6 20 8 24 16 18 9 6 9 8 19 3 21 19 14 24 16 24 16 8 6 11 9 18 7 4 0 7 8 3 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 4 10 6 5 27 7 28 6 25 25 2 3 11 6 0 28 28 21 25 18 4 0 4 24 27 3 19 4 27 12 12 8 28 7 17 8 9 11 17 19 9 16 2 11 19 17 28 24 25 20 23 9 3 3 28 10 12 27 11 11 25 5 24 21 27 25 24 17 23 0 8 11 2 16 3 3 3 27 10 24 5 27 5 4 3 21 5 20 19 14 4 2 0 10 4 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 21 10 19
p59
32175
1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 0
18 19 21 27 2 12 21 27 18 28 4 28 10 3 28 18 3 10 27 0 18 16 5 24 10 18 27 19 4 2 19 19 4 16 27 6 8 8 24 16 18 8 6 4 8 19 3 21 19 14 24 16 24 16 8 6 25 8 18 25 4 0 7 8 3 25 5 14 19 25 18 12 6 8 23 23 10 23 8 16 10 0 26 25 4 10 6 5 27 7 28 6 25 25 2 3 28 6 0 28 28 21 25 18 4 0 4 24 27 3 19 4 27 12 12 8 28 7 14 8 26 25 28 19 26 16 2 12 26 0 28 24 25 10 23 8 3 3 28 10 12 27 12 25 25 5 24 21 27 25 24 0 23 0 8 28 2 16 3 3 3 27 10 24 5 27 5 4 3 21 5 14 19 14 26 2 0 10 4 14 5 21 2 19 12 8 28 23 0 21 2 21 6 4 7 12 7 21 10 19
p60
22266
1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1
18 19 2 27 2 12 21 27 22 28 4 28 10 3 28 18 3 20 22 0 18 16 5 24 23 18 27 19 29 2 19 19 4 16 27 12 20 8 24 16 18 9 12 4 8 19 3 21 19 20 24 16 24 16 8 12 11 9 18 7 29 0 7 8 3 11 5 17 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 10 19 5 27 7 28 19 25 25 2 3 28 12 0 28 28 21 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 7 17 8 9 11 17 19 9 16 2 11 19 17 11 24 11 20 23 9 3 3 28 10 12 22 11 11 25 5 24 21 27 25 24 17 23 0 8 11 2 16 3 3 3 27 10 24 5 27 5 4 3 21 5 20 19 10 4 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 19 4 7 12 7 21 10 19
p61
27930
0 0 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0
18 19 21 18 21 12 21 18 22 28 4 28 13 13 28 18 13 13 22 28 18 21 5 24 13 18 24 19 4 21 19 19 4 21 28 12 20 20 24 21 18 9 12 4 20 19 13 21 19 20 24 24 24 21 20 12 18 9 18 18 4 24 7 20 13 12 5 19 28 12 18 12 19 9 5 13 20 5 20 24 13 5 9 7 4 13 19 5 24 7 28 19 7 7 5 13 28 12 5 28 28 15 12 18 4 24 4 24 22 13 19 4 18 12 12 20 28 7 28 20 9 12 28 19 9 21 21 12 19 28 28 24 12 20 5 9 13 13 28 20 12 22 12 12 7 5 24 15 18 7 24 28 5 28 20 28 5 15 13 13 13 24 20 24 5 27 5 4 13 21 5 20 19 20 4 21 24 20 4 20 5 21 21 19 12 9 28 13 27 21 21 21 19 4 7 19 7 15 10 19
p62
44442
0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1
18 19 21 18 21 19 21 18 18 18 19 19 13 13 19 18 13 13 18 18 18 21 21 21 13 18 18 19 29 21 19 19 19 21 18 19 13 13 21 21 18 9 19 29 9 19 13 21 19 19 21 21 21 21 9 19 18 9 18 18 29 21 18 9 13 18 13 19 19 18 18 19 19 9 13 13 13 13 9 21 13 21 9 25 29 13 29 21 27 25 27 29 25 25 21 13 27 25 27 27 27 15 25 25 29 27 29 27 27 13 9 29 27 25 25 9 27 25 17 9 9 25 17 29 9 15 15 25 9 17 27 27 25 9 17 9 3 3 17 17 25 27 25 25 25 17 27 15 27 25 27 17 3 17 13 25 15 15 3 3 3 27 17 17 17 17 5 29 3 15 5 9 17 17 9 5 17 17 29 17 5 15 5 25 12 9 12 5 5 15 5 15 12 29 7 12 7 15 5 12
p63
28201
0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1
18 6 2 18 2 6 2 18 18 28 4 28 13 13 28 18 13 13 18 28 18 16 2 24 13 18 24 28 4 2 6 4 4 16 28 6 13 13 24 16 18 9 6 4 9 4 13 2 6 14 24 16 24 16 9 6 18 9 18 18 4 2 18 9 13 6 2 14 28 25 18 6 6 9 23 23 13 23 9 16 23 2 9 25 4 13 6 2 24 25 28 6 25 25 2 13 28 6 2 28 28 15 25 18 4 24 4 24 16 13 14 4 18 6 6 9 28 25 14 9 9 25 28 6 9 16 2 28 4 17 28 24 25 14 23 9 13 13 28 14 6 18 28 25 25 2 24 15 18 25 24 17 23 17 13 28 2 15 13 13 13 24 23 24 23 24 23 4 13 15 23 13 28 14 4 2 24 14 29 14 2 15 2 6 6 9 28 23 17 24 24 16 6 4 25 25 25 15 23 6
p64
22535
1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0
18 19 21 27 2 12 21 27 22 28 4 28 13 13 28 18 3 20 22 0 18 16 5 24 10 18 27 19 4 2 19 19 4 16 27 6 20 8 24 16 18 8 6 4 8 19 13 21 19 20 24 16 24 16 8 6 11 8 18 25 4 0 25 8 13 11 5 17 28 25 18 12 19 8 23 23 20 23 8 16 10 0 26 25 4 13 6 5 27 25 28 6 25 25 2 3 11 6 0 28 28 21 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 25 17 8 26 11 17 19 26 16 2 11 26 17 28 24 25 20 23 8 3 3 28 10 12 22 11 11 25 5 24 16 27 25 24 17 23 0 8 11 2 16 3 13 13 27 10 24 5 27 5 4 3 21 5 20 19 10 26 2 0 10 4 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 25 12 25 21 10 19
p65
26972
0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0
18 19 21 22 21 12 21 18 22 28 4 28 13 13 28 18 13 13 22 28 18 21 5 24 13 18 24 19 4 21 19 19 4 21 28 12 20 20 24 21 18 9 12 4 20 19 13 21 19 20 24 24 24 21 20 12 18 9 18 18 4 24 7 20 13 12 5 19 28 12 18 12 19 9 5 13 20 5 20 24 13 5 9 7 4 13 19 5 24 7 28 19 7 7 5 13 28 12 5 28 28 15 12 18 4 24 4 24 22 13 19 4 18 12 12 20 28 7 28 20 9 12 28 19 9 21 21 12 19 28 28 24 12 20 5 9 13 13 28 20 12 22 12 12 7 5 24 15 18 7 24 28 5 28 20 28 5 15 13 13 13 24 20 24 5 27 5 4 13 21 5 20 19 20 4 21 24 20 4 20 5 21 21 19 12 9 28 13 27 21 21 21 19 4 7 12 7 15 20 19
p66
41550
0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 1
18 19 21 22 21 19 21 18 18 18 19 19 13 13 19 18 13 13 18 18 18 21 21 21 13 18 18 19 29 21 19 19 19 21 18 19 13 13 21 21 18 9 19 29 9 19 13 21 19 19 21 21 21 21 9 19 18 9 18 18 29 21 18 9 13 18 13 19 19 18 18 19 19 9 13 13 13 13 9 21 13 21 9 18 29 13 19 21 18 18 19 19 18 18 21 13 18 19 21 19 19 21 18 7 29 21 29 21 22 13 19 29 22 12 12 9 12 7 17 9 9 12 17 29 9 21 21 12 9 17 17 22 12 13 13 9 13 13 17 17 12 22 12 12 7 17 22 15 22 7 22 17 13 17 13 12 15 15 13 13 9 17 17 17 17 22 5 29 5 15 5 9 17 17 9 5 17 17 29 17 5 15 5 12 12 9 12 5 17 15 5 15 12 29 7 12 7 15 17 17
p67
27865
0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1
18 6 2 18 2 6 2 18 18 28 4 28 13 13 28 18 13 13 18 28 18 16 2 24 13 18 24 28 29 2 6 6 4 16 28 6 13 13 24 16 18 9 6 4 9 4 13 16 28 14 24 16 24 16 9 6 18 9 18 18 29 2 18 9 13 28 2 14 28 25 18 6 6 9 23 23 13 23 9 16 23 2 9 25 29 13 6 2 24 25 28 6 25 25 2 13 28 6 2 28 28 16 25 18 4 24 4 24 22 13 14 4 18 6 6 9 28 25 14 9 9 25 28 6 9 16 2 25 4 28 28 24 25 13 23 9 13 13 28 14 6 22 28 25 25 2 24 16 22 25 24 17 23 17 13 28 2 16 13 13 13 24 23 24 23 18 23 4 13 16 23 9 14 14 4 2 24 14 29 23 2 16 2 6 6 9 28 23 17 16 2 16 6 4 25 25 25 24 23 28
p68
22711
1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1
18 19 21 27 2 12 21 27 22 28 4 28 20 3 28 18 3 20 22 0 27 16 5 24 10 18 27 19 29 21 19 19 4 16 27 12 20 8 24 16 18 9 6 4 8 19 3 21 19 14 24 16 24 16 8 6 11 9 18 25 29 0 18 8 3 11 5 14 28 25 18 12 19 9 23 23 20 23 8 16 10 0 9 25 29 10 6 5 27 25 28 6 25 25 2 3 28 6 0 28 28 21 25 18 4 0 4 24 22 3 19 4 27 12 12 8 28 25 14 8 26 11 28 19 26 16 2 11 26 0 28 24 25 20 23 9 3 3 28 10 12 22 11 11 25 5 24 21 27 25 24 0 23 0 8 11 2 16 3 3 3 27 10 24 5 27 5 4 3 21 5 20 19 14 26 2 0 10 29 10 5 21 2 19 12 8 28 23 0 21 2 21 6 4 25 12 25 21 10 19
p69
29664
0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 0
18 19 21 18 21 12 21 18 22 28 4 28 13 13 28 18 13 13 22 28 18 21 5 24 13 18 24 19 4 21 19 19 4 21 28 12 20 20 24 21 18 9 12 4 20 19 13 21 19 20 24 24 24 21 20 12 18 9 18 18 4 24 7 20 13 12 5 19 28 12 18 12 19 9 5 13 20 5 20 24 13 5 9 7 4 13 19 5 24 7 28 19 7 7 5 13 28 12 5 28 28 15 12 18 4 24 4 24 22 13 19 4 18 12 12 20 28 7 28 20 9 12 28 19 9 21 21 12 19 28 28 24 12 20 5 9 13 13 19 20 12 22 12 12 7 5 24 15 18 7 24 17 5 17 20 12 5 15 13 13 13 24 20 21 5 27 5 4 3 21 5 20 19 20 4 21 27 20 4 20 5 21 21 19 12 9 17 13 17 21 21 21 19 4 7 19 7 15 10 19
p70
43674
0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1
18 19 21 18 21 19 21 18 18 18 19 19 13 13 19 18 13 13 18 18 18 21 21 21 13 18 18 19 29 21 19 19 19 21 18 19 13 13 21 21 18 9 19 29 9 19 13 21 19 19 21 21 21 21 9 19 18 9 18 18 29 21 18 9 13 18 13 19 19 25 25 25 19 9 13 13 13 13 9 21 13 21 9 25 29 9 19 21 27 25 27 29 25 25 21 3 27 25 27 19 27 21 25 25 29 27 29 27 27 3 9 29 27 7 25 9 27 25 17 9 9 25 17 29 9 21 21 25 9 17 27 21 12 9 3 9 3 3 17 17 12 27 12 25 12 17 27 15 27 12 27 17 3 17 3 12 21 15 3 3 3 27 17 27 17 27 5 29 3 21 5 9 17 17 9 5 27 17 29 17 5 15 5 12 12 9 12 5 5 15 5 15 12 29 7 12 7 15 5 17
p71
31862
0 0 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1
18 6 2 18 2 6 2 18 18 28 4 28 13 13 28 18 13 13 18 28 18 16 2 24 13 18 24 28 4 2 6 4 4 16 28 6 13 13 24
-