├── final ├── b1 │ ├── 1-input.txt │ ├── 2-result.txt │ ├── 3-result.txt │ ├── 4-result.txt │ ├── 5-result.txt │ ├── 2-input.txt.out │ ├── 3-input.txt.out │ ├── 4-input.txt.out │ ├── 5-input.txt.out │ ├── 1-input.txt.out │ ├── 1-result.txt │ ├── 2-input.txt │ ├── 3-input.txt │ ├── 4-input.txt │ └── 5-input.txt ├── template.cpp ├── 20200573_BAI2.cpp ├── 20200573_BAI3.cpp ├── 20200573_BAI4.cpp ├── 20200573_BAI1.cpp └── run.py ├── midterm2 ├── b1 │ ├── 1-input.txt.out │ ├── 1-result.txt │ ├── 2-input.txt.out │ ├── 2-result.txt │ ├── 3-result.txt │ ├── 4-result.txt │ ├── 3-input.txt.out │ ├── 4-input.txt.out │ ├── 1-input.txt │ ├── 2-input.txt │ └── 3-input.txt ├── b3 │ ├── 1-input.txt.out │ ├── 1-result.txt │ ├── 2-input.txt.out │ ├── 2-result.txt │ ├── 3-result.txt │ ├── 4-result.txt │ ├── 3-input.txt.out │ ├── 4-input.txt.out │ ├── 1-input.txt │ ├── 2-input.txt │ ├── 3-input.txt │ └── 4-input.txt ├── b4 │ ├── 1-result.txt │ ├── 2-result.txt │ ├── 1-input.txt.out │ ├── 2-input.txt.out │ ├── 3-input.txt.out │ ├── 3-result.txt │ ├── 4-result.txt │ ├── 4-input.txt.out │ ├── 1-input.txt │ ├── 2-input.txt │ └── 3-input.txt ├── b2 │ ├── 1-input.txt.out │ ├── 1-result.txt │ ├── 1-input.txt │ ├── 2-result.txt │ ├── 2-input.txt.out │ ├── 2-input.txt │ └── 3-result.txt ├── readme.md ├── template.cpp ├── 20200573_BAI1.cpp ├── 20200573_BAI4.cpp ├── 20200573_BAI3.cpp ├── 20200573_BAI2.cpp └── run.py ├── README.md ├── MultiplicationOfBigNumbers.py ├── .gitignore ├── PermutationGeneration.cpp ├── TextReplacement.cpp ├── HashOverStrings.cpp ├── midterm ├── TopSignalAnalysis.cpp ├── CutMaterial.cpp └── Digits.cpp ├── MaxSubSequence.cpp ├── BoundingRectangle.cpp ├── ExpMod.cpp ├── SumPairOfSequenceEqualToANumber.cpp ├── SimulationQueue.cpp ├── CountNumberOfPairsOfSequenceOfDistinctIntegerSumEqualToQ.cpp ├── Week-3 ├── DisjointSegment.cpp ├── Inversion.cpp └── MaxDistanceSubSequence.cpp ├── Week-2 ├── CountSolutionsToAnIntegerLinearEquation.cpp ├── CBUS.cpp └── BalancedCoursesAssignments.cpp ├── Parentheses.cpp ├── BinarySequencesGenerationWithoutConsecutive11.cpp ├── LongestCommonSubsequence.cpp ├── Ckn.cpp ├── Week-5 ├── MakeSpanSchedule.cpp ├── StronglyConnectedComponents.cpp ├── BridgesAndArticulationPoints.cpp └── BusInterCity.cpp ├── LongestPathOnATree.cpp ├── Week-4 ├── EvenSubsequence.cpp ├── Warehouse.cpp ├── GoldMining.cpp └── Nurse.cpp ├── ConnectedComponentsOfUndirectedGraphs.cpp ├── template.txt ├── CodeGenerationAndStandardizationinDBMS.cpp ├── StringMatching.cpp ├── CheckBipartiteGraph.cpp ├── Dijkstra.cpp ├── GenkCombN.cpp ├── TSP.cpp ├── HamitonCycle.cpp ├── Week-1 ├── RangeMinimumQuery.cpp ├── Maze.cpp ├── LargestBlackSubRectangle.cpp └── TelcoDataCheckAndQuery.cpp ├── JobSelectionPlanning.cpp ├── CheckTSPwithPrecedenceConstraint.cpp ├── MaxMatchingOnBipartieGraph.cpp ├── CountNumberOfSudokuSolutions.cpp ├── MinimumSpanningTreeKruskal.cpp ├── MinimumSpanningTreeKruskal2.cpp ├── WaterJugs.cpp ├── SegmentTreeSimulationQueryMax.cpp ├── ATaxiRouting.cpp ├── MaxIndependentSetOnTree.cpp ├── MaxFlow.cpp ├── PaperReviewerAssignmentProblem.cpp ├── demotest └── BankTransaction.cpp ├── CountSpanningTree.cpp └── CapacitaedVehicleRouting.cpp /final/b1/1-input.txt: -------------------------------------------------------------------------------- 1 | 2 4 -------------------------------------------------------------------------------- /final/b1/2-result.txt: -------------------------------------------------------------------------------- 1 | 68 -------------------------------------------------------------------------------- /final/b1/3-result.txt: -------------------------------------------------------------------------------- 1 | 90 -------------------------------------------------------------------------------- /final/b1/4-result.txt: -------------------------------------------------------------------------------- 1 | 92 -------------------------------------------------------------------------------- /final/b1/5-result.txt: -------------------------------------------------------------------------------- 1 | 80 -------------------------------------------------------------------------------- /final/b1/2-input.txt.out: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /final/b1/3-input.txt.out: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /final/b1/4-input.txt.out: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /final/b1/5-input.txt.out: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /midterm2/b1/1-input.txt.out: -------------------------------------------------------------------------------- 1 | 2 -------------------------------------------------------------------------------- /midterm2/b1/1-result.txt: -------------------------------------------------------------------------------- 1 | 2 -------------------------------------------------------------------------------- /midterm2/b1/2-input.txt.out: -------------------------------------------------------------------------------- 1 | 2 -------------------------------------------------------------------------------- /midterm2/b1/2-result.txt: -------------------------------------------------------------------------------- 1 | 2 -------------------------------------------------------------------------------- /midterm2/b1/3-result.txt: -------------------------------------------------------------------------------- 1 | 33 -------------------------------------------------------------------------------- /midterm2/b1/4-result.txt: -------------------------------------------------------------------------------- 1 | 316 -------------------------------------------------------------------------------- /midterm2/b3/1-input.txt.out: -------------------------------------------------------------------------------- 1 | 7 -------------------------------------------------------------------------------- /midterm2/b3/1-result.txt: -------------------------------------------------------------------------------- 1 | 7 -------------------------------------------------------------------------------- /midterm2/b3/2-input.txt.out: -------------------------------------------------------------------------------- 1 | 5 -------------------------------------------------------------------------------- /midterm2/b3/2-result.txt: -------------------------------------------------------------------------------- 1 | 5 -------------------------------------------------------------------------------- /midterm2/b3/3-result.txt: -------------------------------------------------------------------------------- 1 | 16 -------------------------------------------------------------------------------- /midterm2/b3/4-result.txt: -------------------------------------------------------------------------------- 1 | 40 -------------------------------------------------------------------------------- /midterm2/b4/1-result.txt: -------------------------------------------------------------------------------- 1 | 24 -------------------------------------------------------------------------------- /midterm2/b4/2-result.txt: -------------------------------------------------------------------------------- 1 | 55 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Applied Algorithms -------------------------------------------------------------------------------- /midterm2/b1/3-input.txt.out: -------------------------------------------------------------------------------- 1 | 33 -------------------------------------------------------------------------------- /midterm2/b1/4-input.txt.out: -------------------------------------------------------------------------------- 1 | 316 -------------------------------------------------------------------------------- /midterm2/b3/3-input.txt.out: -------------------------------------------------------------------------------- 1 | 16 -------------------------------------------------------------------------------- /midterm2/b3/4-input.txt.out: -------------------------------------------------------------------------------- 1 | 40 -------------------------------------------------------------------------------- /midterm2/b4/1-input.txt.out: -------------------------------------------------------------------------------- 1 | 24 -------------------------------------------------------------------------------- /midterm2/b4/2-input.txt.out: -------------------------------------------------------------------------------- 1 | 55 -------------------------------------------------------------------------------- /midterm2/b4/3-input.txt.out: -------------------------------------------------------------------------------- 1 | 148773 -------------------------------------------------------------------------------- /midterm2/b4/3-result.txt: -------------------------------------------------------------------------------- 1 | 148773 -------------------------------------------------------------------------------- /midterm2/b4/4-result.txt: -------------------------------------------------------------------------------- 1 | 1493554 -------------------------------------------------------------------------------- /midterm2/b4/4-input.txt.out: -------------------------------------------------------------------------------- 1 | 1493554 -------------------------------------------------------------------------------- /midterm2/b3/1-input.txt: -------------------------------------------------------------------------------- 1 | 5 4 7 2 | 9 4 1 5 2 -------------------------------------------------------------------------------- /midterm2/b4/1-input.txt: -------------------------------------------------------------------------------- 1 | 6 2 | 6 8 3 9 7 7 -------------------------------------------------------------------------------- /midterm2/b1/1-input.txt: -------------------------------------------------------------------------------- 1 | 6 3 12 2 | 5 2 5 3 4 3 -------------------------------------------------------------------------------- /midterm2/b1/2-input.txt: -------------------------------------------------------------------------------- 1 | 10 3 6 2 | 1 3 2 1 2 4 1 4 5 4 -------------------------------------------------------------------------------- /midterm2/b4/2-input.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 18 1 4 10 16 18 8 2 9 7 -------------------------------------------------------------------------------- /midterm2/b3/2-input.txt: -------------------------------------------------------------------------------- 1 | 10 3 8 2 | 8 16 5 13 18 3 6 17 15 10 -------------------------------------------------------------------------------- /final/b1/1-input.txt.out: -------------------------------------------------------------------------------- 1 | 1 2 2 | 1 3 3 | 1 4 4 | 2 3 5 | 2 4 6 | 3 4 -------------------------------------------------------------------------------- /final/b1/1-result.txt: -------------------------------------------------------------------------------- 1 | 1 2 2 | 1 3 3 | 1 4 4 | 2 3 5 | 2 4 6 | 3 4 -------------------------------------------------------------------------------- /midterm2/b2/1-input.txt.out: -------------------------------------------------------------------------------- 1 | 10 2 | 10 3 | 10 4 | 10 5 | 9 6 | 9 7 | 8 -------------------------------------------------------------------------------- /midterm2/b2/1-result.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 10 3 | 10 4 | 10 5 | 9 6 | 9 7 | 8 -------------------------------------------------------------------------------- /midterm2/b3/3-input.txt: -------------------------------------------------------------------------------- 1 | 12 3 10 2 | 2 18 13 20 7 6 4 9 12 3 8 19 -------------------------------------------------------------------------------- /MultiplicationOfBigNumbers.py: -------------------------------------------------------------------------------- 1 | a = int(input()) 2 | b = int(input()) 3 | print(a*b) -------------------------------------------------------------------------------- /midterm2/b3/4-input.txt: -------------------------------------------------------------------------------- 1 | 20 3 10 2 | 14 1 7 18 16 15 2 19 11 8 4 6 5 17 10 9 12 3 20 13 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | a.exe 3 | abc.class 4 | abc.cpp 5 | abc.exe 6 | abc.java 7 | abc.o 8 | abc.py -------------------------------------------------------------------------------- /midterm2/b2/1-input.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 10 9 10 1 8 8 7 10 10 6 3 | insert 9 4 | delete-max 5 | delete-max 6 | delete-max 7 | delete-max 8 | insert 5 9 | delete-max 10 | delete-max 11 | delete-max 12 | insert 6 13 | * -------------------------------------------------------------------------------- /PermutationGeneration.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int n; 5 | int a[100]; 6 | 7 | void print(){ 8 | for(int i=0; i>n; 16 | for(int i=0; i 2 | using namespace std; 3 | 4 | // not finished 5 | 6 | string T, P1, P2; 7 | 8 | int main() { 9 | getline(cin, P1); 10 | getline(cin, P2); 11 | getline(cin, T); 12 | int pos = T.find(P1); 13 | while (pos != string::npos) { 14 | T.replace(pos, pos + P1.size(), P2); 15 | pos = T.find(P1, pos + P2.size()); 16 | cout< 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | 6 | ll n, m; 7 | 8 | ll solve(string s) { 9 | ll ans = 0; 10 | for (int i = 0; i < s.size(); ++i) { 11 | ans = (ans * 256 + s[i])%m; 12 | } 13 | return ans; 14 | } 15 | 16 | int main() { 17 | cin >> n >> m; 18 | while (n--) { 19 | string s; 20 | cin >> s; 21 | cout << solve(s) << endl; 22 | } 23 | } -------------------------------------------------------------------------------- /midterm2/readme.md: -------------------------------------------------------------------------------- 1 | # Template for midterm test 2 | 3 | Create submit files: _BAI[i].cpp (need to change StudentID in run.py) 4 | 5 | ## run test cases on local 6 | 7 | > cd midterm2 8 | 9 | > run.py [#problem] -l -d 10 | 11 | -l: run on local (input from file, need to change test case name in run.py) 12 | 13 | -d: debug mode (activate DEBUG function) 14 | 15 | -t: number of test case, default = 5 16 | 17 | ! Becareful with '\n' at file ending ! -------------------------------------------------------------------------------- /midterm/TopSignalAnalysis.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | typedef pair pii; 6 | 7 | #define fi first 8 | #define se second 9 | 10 | const int maxn = 1000005; 11 | int a[maxn], n; 12 | 13 | int main() { 14 | cin >> n; 15 | int sol = 0; 16 | for (int i = 0; i < n; ++i) cin >> a[i]; 17 | for (int i = 1; i < n - 1; ++i) { 18 | if (a[i] > a[i + 1] && a[i] > a[i - 1]) ++sol; 19 | } 20 | cout< 2 | using namespace std; 3 | 4 | int n, a[1000001], dp[1000001][2], ans; 5 | 6 | int main() { 7 | cin >> n; 8 | for (int i = 0; i < n; ++i) cin >> a[i]; 9 | dp[0][0] = 0; 10 | dp[0][1] = a[0]; 11 | ans = max(0, a[0]); 12 | for (int i = 1; i < n; ++i) { 13 | dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); 14 | dp[i][1] = a[i] + max(0, dp[i - 1][1]); 15 | ans = max(ans, dp[i][1]); 16 | } 17 | cout << ans; 18 | } -------------------------------------------------------------------------------- /BoundingRectangle.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int n; 5 | int xmin(INT_MAX), xmax(INT_MIN), ymin(INT_MAX), ymax(INT_MIN); 6 | 7 | int main() { 8 | cin >> n; 9 | while (n--) { 10 | int a, b, c, d; 11 | cin >> a >> b >> c >> d; 12 | xmin = min(xmin, min(a, c)); 13 | xmax = max(xmax, max(a, c)); 14 | ymin = min(ymin, min(b, d)); 15 | ymax = max(ymax, max(b, d)); 16 | } 17 | cout << (xmax - xmin) * (ymax - ymin); 18 | } -------------------------------------------------------------------------------- /ExpMod.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef unsigned long long ll; 5 | 6 | const ll mod = 1e9 + 7; 7 | 8 | ll pow(ll x, ll ex) { 9 | if (ex == 0) 10 | return 1; 11 | else { 12 | ll t = pow(x, ex / 2); 13 | if (ex % 2 == 0) 14 | return (t * t) % mod; 15 | else 16 | return (t * ((t * x) % mod)) % mod; 17 | } 18 | } 19 | 20 | int main() { 21 | ll a, b; 22 | cin >> a >> b; 23 | a %= mod; 24 | b %= (mod - 1); 25 | cout << pow(a, b); 26 | } 27 | -------------------------------------------------------------------------------- /SumPairOfSequenceEqualToANumber.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int n, m, a[1000005]; 5 | 6 | int main() { 7 | cin >> n >> m; 8 | for (int i = 0; i < n; ++i) cin >> a[i]; 9 | sort(a, a + n); 10 | int i = 0, j = n - 1; 11 | int ans = 0; 12 | while (i < j) { 13 | if (a[i] + a[j] == m) { 14 | ++ans; 15 | ++i; 16 | } else if (a[i] + a[j] < m) { 17 | ++i; 18 | } else { 19 | --j; 20 | } 21 | } 22 | cout << ans << endl; 23 | } -------------------------------------------------------------------------------- /SimulationQueue.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | string inp; 5 | queue s; 6 | 7 | int main() { 8 | getline(cin, inp); 9 | while (inp != "#") { 10 | if (inp[1] == 'O') { 11 | if (s.size() > 0) { 12 | cout << s.front() << endl; 13 | s.pop(); 14 | } else { 15 | cout << "NULL\n"; 16 | } 17 | } else { 18 | string num = inp.substr(inp.find(' ') + 1); 19 | s.push(num); 20 | } 21 | getline(cin, inp); 22 | } 23 | } -------------------------------------------------------------------------------- /CountNumberOfPairsOfSequenceOfDistinctIntegerSumEqualToQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | Given a sequence of distinct integers a1, a2, …, an 6 | and an integer Q. Count number M of pairs (i, j) 7 | such that 1 ≤ i< j ≤ n and ai + aj = Q 8 | */ 9 | 10 | int n, q, a[1000005], res; 11 | 12 | int main() { 13 | cin >> n >> q; 14 | for (int i = 0; i < n; ++i) cin >> a[i]; 15 | sort(a, a + n); 16 | for (int i = 0, j = n - 1; i < j;) { 17 | if (a[i] + a[j] == q) 18 | ++res, ++i, --j; 19 | else if (a[i] + a[j] > q) 20 | --j; 21 | else 22 | ++i; 23 | } 24 | cout< 2 | using namespace std; 3 | 4 | // not done yet! 5 | 6 | typedef long long ll; 7 | typedef pair pii; 8 | 9 | #define fi first 10 | #define se second 11 | 12 | ll H, W, n, h[11], w[11]; 13 | 14 | bool chk_size() { 15 | ll total_area = 0; 16 | ll HW = max(H, W); 17 | for (int i = 0; i < n; ++i) { 18 | if (h[i] > HW || w[i] > W) return false; 19 | total_area += h[i] * w[i]; 20 | } 21 | if (total_area > H * W) return false; 22 | return true; 23 | } 24 | 25 | int main() { 26 | cin >> H >> W >> n; 27 | for (int i = 0; i < n; ++i) cin >> h[i] >> w[i]; 28 | cout << chk_size(); 29 | } 30 | -------------------------------------------------------------------------------- /final/b1/2-input.txt: -------------------------------------------------------------------------------- 1 | 8 2 | 0 8 5 1 10 5 9 9 3 5 6 6 2 8 2 2 6 3 | 3 0 7 2 5 3 4 3 3 2 7 9 6 8 7 2 9 4 | 10 3 0 10 6 5 4 2 3 4 4 5 2 2 4 9 8 5 | 5 3 8 0 10 4 2 10 9 7 6 1 3 9 7 1 3 6 | 5 9 7 6 0 10 1 1 7 2 4 9 10 4 5 5 7 7 | 1 7 7 2 9 0 10 7 4 8 9 9 3 10 2 4 6 8 | 10 9 5 1 8 7 0 7 2 6 5 3 1 10 8 4 8 9 | 3 7 1 2 7 6 8 0 5 2 3 1 1 2 5 7 1 10 | 8 2 8 8 8 8 4 4 0 10 10 9 2 9 3 7 7 11 | 1 4 9 1 2 3 6 1 10 0 8 9 4 6 2 3 1 12 | 2 7 5 1 7 2 9 10 9 5 0 5 4 10 9 9 1 13 | 9 8 8 9 4 9 4 8 2 1 8 0 5 10 7 6 2 14 | 1 10 10 7 9 4 5 9 5 10 10 3 0 6 4 4 4 15 | 8 5 4 9 1 9 9 1 7 9 2 10 9 0 8 3 3 16 | 9 3 9 10 1 8 9 2 6 9 7 2 3 5 0 6 9 17 | 7 3 7 6 4 10 3 5 7 2 9 3 2 2 10 0 7 18 | 3 10 6 3 1 1 4 10 2 9 2 10 6 4 3 6 0 19 | -------------------------------------------------------------------------------- /final/template.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | int main(int argc, char** argv) { 16 | ios_base::sync_with_stdio(0); 17 | cin.tie(NULL); 18 | cout.tie(NULL); 19 | #ifdef OFFLINE 20 | const string test_name = argv[1]; 21 | freopen((test_name).c_str(), "r", stdin); 22 | freopen((test_name + ".out").c_str(), "w", stdout); 23 | #endif 24 | 25 | 26 | 27 | return 0; 28 | } -------------------------------------------------------------------------------- /Week-3/DisjointSegment.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef pair pii; 5 | #define fi first 6 | #define se second 7 | 8 | const int maxn = 1e5 + 5; 9 | int n; 10 | pii seg[maxn]; 11 | int dp[maxn]; // dp[i]: #maximal disjoint segments among the segments with index in {i...n-1} 12 | 13 | int main() { 14 | cin >> n; 15 | for (int i = 0; i < n; ++i) { 16 | cin >> seg[i].fi >> seg[i].se; 17 | } 18 | sort(seg, seg + n); 19 | dp[n - 1] = 1; 20 | for (int i = n - 2; i >= 0; --i) { 21 | int a = lower_bound(seg, seg + n, make_pair(seg[i].se + 1, -1)) - seg; 22 | dp[i] = max(dp[i + 1], 1 + dp[a]); 23 | } 24 | cout << dp[0]; 25 | } -------------------------------------------------------------------------------- /final/20200573_BAI2.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | int main(int argc, char** argv) { 16 | ios_base::sync_with_stdio(0); 17 | cin.tie(NULL); 18 | cout.tie(NULL); 19 | #ifdef OFFLINE 20 | const string test_name = argv[1]; 21 | freopen((test_name).c_str(), "r", stdin); 22 | freopen((test_name + ".out").c_str(), "w", stdout); 23 | #endif 24 | 25 | 26 | 27 | return 0; 28 | } -------------------------------------------------------------------------------- /final/20200573_BAI3.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | int main(int argc, char** argv) { 16 | ios_base::sync_with_stdio(0); 17 | cin.tie(NULL); 18 | cout.tie(NULL); 19 | #ifdef OFFLINE 20 | const string test_name = argv[1]; 21 | freopen((test_name).c_str(), "r", stdin); 22 | freopen((test_name + ".out").c_str(), "w", stdout); 23 | #endif 24 | 25 | 26 | 27 | return 0; 28 | } -------------------------------------------------------------------------------- /final/20200573_BAI4.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | int main(int argc, char** argv) { 16 | ios_base::sync_with_stdio(0); 17 | cin.tie(NULL); 18 | cout.tie(NULL); 19 | #ifdef OFFLINE 20 | const string test_name = argv[1]; 21 | freopen((test_name).c_str(), "r", stdin); 22 | freopen((test_name + ".out").c_str(), "w", stdout); 23 | #endif 24 | 25 | 26 | 27 | return 0; 28 | } -------------------------------------------------------------------------------- /Week-2/CountSolutionsToAnIntegerLinearEquation.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | 6 | ll n, M, a[101], x[101]; 7 | ll ans = 0; 8 | 9 | void Try(int k, int sum) { 10 | for (int i = 1; i <= (M - sum) / a[k]; ++i) { 11 | x[k] = i; 12 | sum += a[k] * x[k]; 13 | if (sum <= M) { 14 | if (k == n - 1) { 15 | if (sum == M) ++ans; 16 | } else { 17 | Try(k + 1, sum); 18 | } 19 | } 20 | sum -= a[k] * x[k]; 21 | x[k] = 0; 22 | } 23 | } 24 | 25 | int main() { 26 | cin >> n >> M; 27 | for (int i = 0; i < n; ++i) { 28 | cin >> a[i]; 29 | } 30 | Try(0, 0); 31 | cout << ans << endl; 32 | } -------------------------------------------------------------------------------- /Parentheses.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int main() { 5 | stack pa; 6 | string s; 7 | cin >> s; 8 | bool answer = true; 9 | if (s.size() % 2 == 1) 10 | answer = false; 11 | else 12 | for (int i = 0; i < s.size(); ++i) { 13 | if (s[i] == '(' || s[i] == '[' || s[i] == '{') { 14 | pa.push(s[i]); 15 | } else { 16 | if (pa.empty()) { 17 | answer = false; 18 | break; 19 | } else if (s[i] != pa.top() + 1 && s[i] - pa.top() != 2) { 20 | answer = false; 21 | break; 22 | } else 23 | pa.pop(); 24 | } 25 | } 26 | cout << answer; 27 | } -------------------------------------------------------------------------------- /BinarySequencesGenerationWithoutConsecutive11.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int n; 5 | bool a[21]; 6 | 7 | void print() { 8 | for (int i = 0; i < n; ++i) { 9 | cout << a[i]; 10 | } 11 | cout << endl; 12 | } 13 | 14 | bool chk() { 15 | for (int i = 0; i < n - 1; ++i) { 16 | if (a[i] == 1 && a[i + 1] == 1) return false; 17 | } 18 | return true; 19 | } 20 | 21 | int main() { 22 | cin >> n; 23 | while (true) { 24 | if (chk()) print(); 25 | for (int dig = n - 1; dig >= 0; dig--) { 26 | if (a[dig] == 0) { 27 | a[dig] = 1; 28 | break; 29 | } else { 30 | a[dig] = 0; 31 | } 32 | if (dig == 0) return 0; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /LongestCommonSubsequence.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | Find the length of longest common subsequence of 2 sequence x and y 6 | */ 7 | 8 | int n, m, x[10001], y[10001], dp[10001][10001]; 9 | 10 | int main() { 11 | ios_base::sync_with_stdio(0); 12 | cin.tie(NULL); 13 | cout.tie(NULL); 14 | cin >> n >> m; 15 | for (int i = 1; i <= n; ++i) cin >> x[i]; 16 | for (int i = 1; i <= m; ++i) cin >> y[i]; 17 | for (int i = 1; i <= n; ++i) { 18 | for (int j = 1; j <= m; ++j) { 19 | if (x[i] == y[j]) { 20 | dp[i][j] = dp[i - 1][j - 1] + 1; 21 | } else { 22 | dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); 23 | } 24 | } 25 | } 26 | cout << dp[n][m]; 27 | return 0; 28 | } -------------------------------------------------------------------------------- /Ckn.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | 6 | const ll mod = 1e9 + 7; 7 | ll k, n, ans(1); 8 | 9 | ll pow(ll x, ll ex) { 10 | if (ex == 0) 11 | return 1; 12 | else { 13 | ll t = pow(x, ex / 2); 14 | if (ex % 2 == 0) 15 | return (t * t) % mod; 16 | else 17 | return (t * ((t * x) % mod)) % mod; 18 | } 19 | } 20 | 21 | ll inv(ll x) { 22 | return pow(x, mod - 2); 23 | } 24 | 25 | int main() { 26 | cin >> k >> n; 27 | if (k > n) { 28 | cout << 0; 29 | return 0; 30 | } else { 31 | while (k > 0) { 32 | ans *= n--; 33 | ans %= mod; 34 | ans *= inv(k--); 35 | ans %= mod; 36 | } 37 | cout << ans; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Week-5/MakeSpanSchedule.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int n, m, d[10001], t[10001]; 5 | vector> edges(10001, vector(0)); 6 | 7 | void dfs(int i) { 8 | if (!t[i]) { 9 | for (int j : edges[i]) { 10 | dfs(j); 11 | t[i] = max(t[i], t[j]); 12 | } 13 | t[i] += d[i]; 14 | } 15 | } 16 | 17 | int main() { 18 | cin >> n >> m; 19 | for (int i = 0; i < n; ++i) cin >> d[i]; 20 | for (int i = 0; i < m; ++i) { 21 | int tmp1, tmp2; 22 | cin >> tmp1 >> tmp2; 23 | edges[tmp1-1].push_back(tmp2-1); 24 | } 25 | for (int i = 0; i < n; ++i) { 26 | if (!t[i]) dfs(i); 27 | } 28 | int res = 0; 29 | for (int i = 0; i < n; ++i) { 30 | res = max(res, t[i]); 31 | } 32 | cout << res; 33 | } -------------------------------------------------------------------------------- /final/b1/3-input.txt: -------------------------------------------------------------------------------- 1 | 9 2 | 0 8 5 1 10 5 9 9 3 5 6 6 2 8 2 2 6 3 8 3 | 7 0 5 3 4 3 3 2 7 9 6 8 7 2 9 10 3 8 10 4 | 6 5 0 2 3 4 4 5 2 2 4 9 8 5 3 8 8 10 4 5 | 2 10 9 0 6 1 3 9 7 1 3 5 9 7 6 1 10 1 1 6 | 7 2 4 9 0 4 5 5 7 1 7 7 2 9 5 10 7 4 8 7 | 9 9 3 10 2 0 6 10 9 5 1 8 7 4 7 2 6 5 3 8 | 1 10 8 4 8 3 0 1 2 7 6 8 6 5 2 3 1 1 2 9 | 5 7 1 8 2 8 8 0 8 4 4 6 10 10 9 2 9 3 7 10 | 7 1 4 9 1 2 3 6 0 10 5 8 9 4 6 2 3 1 2 11 | 7 5 1 7 2 9 10 9 5 0 5 4 10 9 9 1 9 8 8 12 | 9 4 9 4 8 2 1 8 4 5 0 7 6 2 1 10 10 7 9 13 | 4 5 9 5 10 10 3 6 6 4 4 0 8 5 4 9 1 9 9 14 | 1 7 9 2 10 9 10 8 3 3 9 3 0 10 1 8 9 2 6 15 | 9 7 2 3 5 3 6 9 7 3 7 6 4 0 3 5 7 2 9 16 | 3 2 2 10 8 7 3 10 6 3 1 1 4 10 0 9 2 10 6 17 | 4 3 6 3 6 9 7 8 8 3 3 10 5 2 10 0 10 9 3 18 | 6 6 5 10 2 3 6 1 9 4 10 4 10 7 8 10 0 8 7 19 | 10 4 6 8 7 7 6 9 3 6 5 5 2 7 2 7 4 0 6 20 | 6 4 3 9 3 6 4 7 2 9 7 3 2 5 7 3 10 2 0 21 | -------------------------------------------------------------------------------- /LongestPathOnATree.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | #define pii pair 5 | #define fi first 6 | #define se second 7 | 8 | int n; 9 | 10 | bool visited[100005]; 11 | vector> edges(100005, vector(0)); 12 | pii dfs(int v, int p) { 13 | pii farthest = {v, 0}; 14 | for (auto x : edges[v]) { 15 | if (x.fi == p) continue; 16 | pii d = dfs(x.fi, v); 17 | if (x.se + d.se>farthest.se){ 18 | farthest = {d.fi, d.se+x.se}; 19 | } 20 | } 21 | return farthest; 22 | } 23 | 24 | int main() { 25 | cin >> n; 26 | for (int i = 0; i < n - 1; ++i) { 27 | int u, v, w; 28 | cin >> u >> v >> w; 29 | edges[u].push_back({v, w}); 30 | edges[v].push_back({u, w}); 31 | } 32 | pii f = dfs(2, 0); 33 | f = dfs(f.fi, -1); 34 | cout< 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | 6 | ll n, a[1000001], dp[1000001][2][2]; 7 | // dp[id][mod2][use a[id]?] 8 | 9 | int main() { 10 | cin >> n; 11 | for (int i = 0; i < n; ++i) cin >> a[i]; 12 | dp[0][a[0] % 2][1] = a[0]; 13 | for (int i = 1; i < n; ++i) { 14 | dp[i][0][0] = max(dp[i - 1][0][0], dp[i - 1][0][1]); 15 | dp[i][1][0] = max(dp[i - 1][1][0], dp[i - 1][1][1]); 16 | dp[i][0][1] = max((a[i] % 2 == 0 ? a[i] : LLONG_MIN), dp[i - 1][(100000000 + a[i]) % 2][1] + a[i]); 17 | dp[i][1][1] = max((a[i] % 2 != 0 ? a[i] : LLONG_MIN), dp[i - 1][(100000001 + a[i]) % 2][1] + a[i]); 18 | } 19 | ll ans = max(dp[n - 1][0][0], dp[n - 1][0][1]); 20 | if (ans == LLONG_MIN) 21 | cout << "NOT_FOUND"; 22 | else 23 | cout << ans; 24 | return 0; 25 | } -------------------------------------------------------------------------------- /ConnectedComponentsOfUndirectedGraphs.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int n, m; 5 | vector> edges(100001, vector(0)); 6 | int component[100001]; 7 | int num_comp = 0; 8 | 9 | void dfs(int vertex) { 10 | if (component[vertex] != -1) return; 11 | component[vertex] = num_comp; 12 | for (int i = 0; i < edges[vertex].size(); ++i) { 13 | dfs(edges[vertex][i]); 14 | } 15 | } 16 | 17 | int main() { 18 | cin >> n >> m; 19 | for (int i = 0; i < m; ++i) { 20 | int u, v; 21 | cin >> u >> v; 22 | edges[u].push_back(v); 23 | edges[v].push_back(u); 24 | } 25 | for (int i = 1; i <= n; ++i) component[i] = -1; 26 | for (int i = 1; i <= n; ++i) { 27 | if (component[i] == -1) { 28 | ++num_comp; 29 | dfs(i); 30 | } 31 | } 32 | cout< 5 | using namespace std; 6 | 7 | typedef long long ll; 8 | #define fi first 9 | #define se second 10 | #define el <<"\n" 11 | #define sp <<" " 12 | #define sps <<" "<< 13 | 14 | #define FILE_NAME "" 15 | #define DEBUG_MODE 16 | 17 | void OFFLINE() { 18 | #ifndef ONLINE_JUDGE 19 | freopen(FILE_NAME ".in", "r", stdin); 20 | freopen(FILE_NAME ".out", "w", stdout); 21 | #endif 22 | } 23 | 24 | void DEBUG(function t) { 25 | #ifndef ONLINE_JUDGE 26 | #ifdef DEBUG_MODE 27 | cout << "\n*****DEBUG ZONE*****\n"; 28 | t(); 29 | cout << "\n*****END OF DEBUG ZONE*****\nReal output here:\n"; 30 | #endif 31 | #endif 32 | } 33 | 34 | int main() { 35 | OFFLINE(); 36 | ios_base::sync_with_stdio(0); 37 | cin.tie(NULL); 38 | cout.tie(NULL); 39 | 40 | } 41 | -------------------------------------------------------------------------------- /CodeGenerationAndStandardizationinDBMS.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | int n, L; 16 | string a, z = "0"; 17 | 18 | int main(int argc, char** argv) { 19 | ios_base::sync_with_stdio(0); 20 | cin.tie(NULL); 21 | cout.tie(NULL); 22 | #ifdef OFFLINE 23 | const string test_name = argv[1]; 24 | freopen((test_name).c_str(), "r", stdin); 25 | freopen((test_name + ".out").c_str(), "w", stdout); 26 | #endif 27 | 28 | cin >> n >> L; 29 | for (int i = 0; i < n; ++i) { 30 | cin >> a; 31 | cout << string(L - a.size(), '0') << a << endl; 32 | } 33 | 34 | return 0; 35 | } -------------------------------------------------------------------------------- /midterm/Digits.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | typedef pair pii; 6 | 7 | #define fi first 8 | #define se second 9 | 10 | int n, a[7], ans(0); 11 | 12 | bool chk_ans() { 13 | int val = a[0] * 100 + a[1] * 10 + a[2] - 62 - a[3] * 100 + a[4] * 1000 + a[5] * 100 + a[6] * 10 + a[2]; 14 | if (val == n) return true; 15 | return false; 16 | } 17 | 18 | bool chk_candidate(int k, int val) { 19 | for (int i = 0; i < k; ++i) { 20 | if (a[i] == val) return false; 21 | } 22 | return true; 23 | } 24 | 25 | void Try(int k) { 26 | for (int val = 1; val <= 9; ++val) { 27 | if (!chk_candidate(k, val)) continue; 28 | a[k] = val; 29 | if (k == 6) { 30 | if (chk_ans()) ++ans; 31 | } else { 32 | Try(k + 1); 33 | } 34 | } 35 | } 36 | 37 | int main() { 38 | cin >> n; 39 | 40 | Try(0); 41 | cout << ans; 42 | } -------------------------------------------------------------------------------- /StringMatching.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | 6 | const ll mod = 1e9 + 7; 7 | string P, T; 8 | 9 | int ans = 0; 10 | ll infmod = ll(1e5) * mod; 11 | 12 | ll hashString(string s, ll m) { 13 | ll ans = 0; 14 | for (int i = 0; i < s.size(); ++i) { 15 | ans = (ans * 256 + ll(s[i])) % m; 16 | } 17 | return ans; 18 | } 19 | 20 | int main() { 21 | getline(cin, P); 22 | getline(cin, T); 23 | 24 | ll hashP = hashString(P, mod); 25 | 26 | ll hashT = ll(T[0]); 27 | ll hs = 1; 28 | for (int i = 1; i < P.size(); ++i) { 29 | hashT = (256 * hashT + ll(T[i])) % mod; 30 | hs = (hs * 256) % mod; 31 | } 32 | if (hashT == hashP) ans += 1; 33 | 34 | for (int i = P.size(); i < T.size(); ++i) { 35 | hashT = (hashT - hs * T[i - P.size()] + infmod) % mod; 36 | hashT = (hashT * 256 + ll(T[i])) % mod; 37 | if (hashT == hashP) ans += 1; 38 | } 39 | cout << ans; 40 | } -------------------------------------------------------------------------------- /final/b1/4-input.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 0 8 5 1 10 5 9 9 3 5 6 6 2 8 2 2 6 3 8 7 2 3 | 5 0 4 3 3 2 7 9 6 8 7 2 9 10 3 8 10 6 5 4 2 4 | 3 4 0 5 2 2 4 9 8 5 3 8 8 10 4 2 10 9 7 6 1 5 | 3 9 7 0 3 5 9 7 6 1 10 1 1 7 2 4 9 10 4 5 5 6 | 7 1 7 7 0 9 5 10 7 4 8 9 9 3 10 2 4 6 10 9 5 7 | 1 8 7 4 7 0 6 5 3 1 10 8 4 8 3 7 1 2 7 6 8 8 | 6 5 2 3 1 1 0 5 7 1 8 2 8 8 8 8 4 4 6 10 10 9 | 9 2 9 3 7 7 1 0 9 1 2 3 6 1 10 5 8 9 4 6 2 10 | 3 1 2 7 5 1 7 2 0 10 9 5 2 5 4 10 9 9 1 9 8 11 | 8 9 4 9 4 8 2 1 8 0 5 10 7 6 2 1 10 10 7 9 4 12 | 5 9 5 10 10 3 6 6 4 4 0 8 5 4 9 1 9 9 1 7 9 13 | 2 10 9 10 8 3 3 9 3 9 10 0 8 9 2 6 9 7 2 3 5 14 | 3 6 9 7 3 7 6 4 10 3 5 7 0 9 3 2 2 10 8 7 3 15 | 10 6 3 1 1 4 10 2 9 2 10 6 4 0 6 3 6 9 7 8 8 16 | 3 3 10 5 2 10 7 10 9 3 6 6 5 10 0 3 6 1 9 4 10 17 | 4 10 7 8 10 10 8 7 10 4 6 8 7 7 6 0 3 6 5 5 2 18 | 7 2 7 4 4 6 6 4 3 9 3 6 4 7 2 9 0 3 2 5 7 19 | 3 10 2 6 1 4 7 5 10 3 10 4 5 5 1 6 10 0 4 5 3 20 | 9 9 8 6 9 2 3 6 8 5 5 5 5 5 3 10 4 1 0 8 9 21 | 8 4 1 4 9 3 6 3 1 4 8 3 10 8 6 4 5 4 3 0 2 22 | 4 3 6 4 6 2 3 3 3 7 5 1 8 1 4 5 1 1 6 4 0 23 | -------------------------------------------------------------------------------- /Week-3/Inversion.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | // Count number of inversion pairs in a[0],..,a[n-1] 5 | 6 | int n, a[1000001]; 7 | const int mod = 1e9 + 7; 8 | int ans = 0; 9 | 10 | int tmp[1000001]; 11 | void mergesort(int a[], int l, int r) { // [l, r) 12 | if (l >= r - 1) return; 13 | int mid = (l + r) / 2; 14 | mergesort(a, l, mid); 15 | mergesort(a, mid, r); 16 | for (int inx = l, lid = l, rid = mid; inx < r;) { 17 | if (lid >= mid) { 18 | tmp[inx++] = a[rid++]; 19 | } else if (rid >= r) { 20 | tmp[inx++] = a[lid++]; 21 | } else if (a[lid] <= a[rid]) { 22 | tmp[inx++] = a[lid++]; 23 | } else { 24 | tmp[inx++] = a[rid++]; 25 | ans = (ans + (mid - lid)) % mod; 26 | } 27 | } 28 | for (int inx = l; inx < r; ++inx) { 29 | a[inx] = tmp[inx]; 30 | } 31 | } 32 | 33 | int main() { 34 | cin >> n; 35 | for (int i = 0; i < n; ++i) cin >> a[i]; 36 | mergesort(a, 0, n); 37 | cout << ans; 38 | return 0; 39 | } -------------------------------------------------------------------------------- /Week-5/StronglyConnectedComponents.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | const int maxN = 1e5 + 1; 6 | 7 | int n, m; 8 | int timeDfs = 0, scc = 0; 9 | int low[maxN], num[maxN]; 10 | bool deleted[maxN]; 11 | vector g[maxN]; 12 | stack st; 13 | 14 | void dfs(int u) { 15 | num[u] = low[u] = ++timeDfs; 16 | st.push(u); 17 | for (int v : g[u]) { 18 | if (deleted[v]) continue; 19 | if (!num[v]) { 20 | dfs(v); 21 | low[u] = min(low[u], low[v]); 22 | } else 23 | low[u] = min(low[u], num[v]); 24 | } 25 | if (low[u] == num[u]) { 26 | scc++; 27 | int v; 28 | do { 29 | v = st.top(); 30 | st.pop(); 31 | deleted[v] = true; 32 | } while (v != u); 33 | } 34 | } 35 | 36 | int main() { 37 | cin >> n >> m; 38 | for (int i = 1; i <= m; i++) { 39 | int u, v; 40 | cin >> u >> v; 41 | g[u].push_back(v); 42 | } 43 | for (int i = 1; i <= n; i++) 44 | if (!num[i]) dfs(i); 45 | 46 | cout << scc; 47 | } -------------------------------------------------------------------------------- /CheckBipartiteGraph.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | const int nmax = 100001; 5 | int n, m, tmp1, tmp2; 6 | vector> edges(nmax, vector()); 7 | 8 | int part[nmax]; 9 | bool res = true; 10 | 11 | void dfs(int u, int p) { 12 | for (int v : edges[u]) { 13 | if (v == p) continue; 14 | if (part[v] == part[u]) { 15 | res = false; 16 | return; 17 | } else if (part[v] == -1) { 18 | part[v] = 1 - part[u]; 19 | dfs(v, u); 20 | if (!res) return; 21 | } 22 | } 23 | } 24 | 25 | int main() { 26 | cin >> n >> m; 27 | for (int i = 0; i < m; ++i) { 28 | cin >> tmp1 >> tmp2; 29 | edges[tmp1 - 1].push_back(tmp2 - 1); 30 | edges[tmp2 - 1].push_back(tmp1 - 1); 31 | } 32 | for (int i = 0; i < n; ++i) part[i] = -1; 33 | for (int i = 0; i < n; ++i) { 34 | if (part[i] == -1) { 35 | part[i] = 0; 36 | dfs(i, -1); 37 | } 38 | if (!res) break; 39 | } 40 | if (res) 41 | cout << 1; 42 | else 43 | cout << 0; 44 | } -------------------------------------------------------------------------------- /Dijkstra.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | const int maxn = 1e5 + 5; 5 | int n, m, s, t, dist[maxn]; 6 | bool visited[maxn]; 7 | vector>> edges(maxn); 8 | 9 | int main() { 10 | cin >> n >> m; 11 | for (int i = 0; i < m; ++i) { 12 | int tmp1, tmp2, tmp3; 13 | cin >> tmp1 >> tmp2 >> tmp3; 14 | edges[tmp1].push_back({tmp2, tmp3}); 15 | } 16 | cin >> s >> t; 17 | 18 | memset(visited, 0, sizeof(visited)); 19 | for (int i = 0; i <= n; ++i) dist[i] = 5e7; 20 | priority_queue, vector>, greater>> pq; 21 | pq.push({0, s}); 22 | dist[s] = 0; 23 | while (!pq.empty()) { 24 | pair top = pq.top(); 25 | pq.pop(); 26 | int vertex = top.second; 27 | visited[vertex] = 1; 28 | for (auto i : edges[vertex]) { 29 | if (visited[i.first]) continue; 30 | int tmp = dist[vertex] + i.second; 31 | if (tmp < dist[i.first]) { 32 | pq.push({tmp, i.first}); 33 | dist[i.first] = tmp; 34 | } 35 | } 36 | } 37 | cout << dist[t]; 38 | } -------------------------------------------------------------------------------- /final/b1/5-input.txt: -------------------------------------------------------------------------------- 1 | 11 2 | 0 8 5 1 10 5 9 9 3 5 6 6 2 8 2 2 6 3 8 7 2 5 3 3 | 4 0 3 2 7 9 6 8 7 2 9 10 3 8 10 6 5 4 2 3 4 4 5 4 | 2 2 0 9 8 5 3 8 8 10 4 2 10 9 7 6 1 3 9 7 1 3 5 5 | 9 7 6 0 10 1 1 7 2 4 9 10 4 5 5 7 1 7 7 2 9 5 10 6 | 7 4 8 9 0 3 10 2 4 6 10 9 5 1 8 7 4 7 2 6 5 3 1 7 | 10 8 4 8 3 0 1 2 7 6 8 6 5 2 3 1 1 2 5 7 1 8 2 8 | 8 8 8 8 4 4 0 10 10 9 2 9 3 7 7 1 4 9 1 2 3 6 1 9 | 10 5 8 9 4 6 2 0 1 2 7 5 1 7 2 9 10 9 5 2 5 4 10 10 | 9 9 1 9 8 8 9 4 0 4 8 2 1 8 4 5 10 7 6 2 1 10 10 11 | 7 9 4 5 9 5 10 10 3 0 6 4 4 4 8 5 4 9 1 9 9 1 7 12 | 9 2 10 9 10 8 3 3 9 3 0 10 1 8 9 2 6 9 7 2 3 5 3 13 | 6 9 7 3 7 6 4 10 3 5 7 0 9 3 2 2 10 8 7 3 10 6 3 14 | 1 1 4 10 2 9 2 10 6 4 3 6 0 6 9 7 8 8 3 3 10 5 2 15 | 10 7 10 9 3 6 6 5 10 2 3 6 1 0 4 10 4 10 7 8 10 10 8 16 | 7 10 4 6 8 7 7 6 9 3 6 5 5 2 0 2 7 4 4 6 6 4 3 17 | 9 3 6 4 7 2 9 7 3 2 5 7 3 10 2 0 1 4 7 5 10 3 10 18 | 4 5 5 1 6 10 7 4 5 3 9 9 8 6 9 2 0 6 8 5 5 5 5 19 | 5 3 10 4 1 8 8 9 8 4 1 4 9 3 6 3 1 0 8 3 10 8 6 20 | 4 5 4 3 2 2 4 3 6 4 6 2 3 3 3 7 5 1 0 1 4 5 1 21 | 1 6 4 2 1 7 8 6 1 1 5 6 5 10 6 7 5 9 3 0 7 9 4 22 | 2 5 9 5 10 3 1 8 1 7 1 8 1 6 7 8 4 9 5 10 0 7 6 23 | 8 8 5 6 8 10 9 4 1 3 3 4 7 8 2 6 6 5 1 3 7 0 7 24 | 2 2 2 8 4 1 1 5 9 4 1 2 3 10 1 4 9 9 6 8 8 1 0 25 | -------------------------------------------------------------------------------- /GenkCombN.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | int n, k, x[100]; 16 | bool choosen[100]; 17 | 18 | void Try(int t) { 19 | if (t == k) { 20 | for (int i = 1; i <= n; ++i) { 21 | if (choosen[i]) cout << i << " "; 22 | } 23 | cout << endl; 24 | } 25 | for (int i = x[t - 1]; i <= n; ++i) { 26 | if (i == 0) continue; 27 | if (choosen[i]) continue; 28 | x[t] = i; 29 | choosen[i] = true; 30 | Try(t + 1); 31 | choosen[i] = false; 32 | } 33 | } 34 | 35 | int main(int argc, char** argv) { 36 | ios_base::sync_with_stdio(0); 37 | cin.tie(NULL); 38 | cout.tie(NULL); 39 | #ifdef OFFLINE 40 | const string test_name = argv[1]; 41 | freopen((test_name).c_str(), "r", stdin); 42 | freopen((test_name + ".out").c_str(), "w", stdout); 43 | #endif 44 | 45 | cin >> k >> n; 46 | Try(0); 47 | return 0; 48 | } -------------------------------------------------------------------------------- /final/20200573_BAI1.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | int n, k, x[100]; 16 | bool choosen[100]; 17 | 18 | void Try(int t) { 19 | if (t == k) { 20 | for (int i = 1; i <= n; ++i) { 21 | if (choosen[i]) cout << i << " "; 22 | } 23 | cout << endl; 24 | } 25 | for (int i = x[t - 1]; i <= n; ++i) { 26 | if (i == 0) continue; 27 | if (choosen[i]) continue; 28 | x[t] = i; 29 | choosen[i] = true; 30 | Try(t + 1); 31 | choosen[i] = false; 32 | } 33 | } 34 | 35 | int main(int argc, char** argv) { 36 | ios_base::sync_with_stdio(0); 37 | cin.tie(NULL); 38 | cout.tie(NULL); 39 | #ifdef OFFLINE 40 | const string test_name = argv[1]; 41 | freopen((test_name).c_str(), "r", stdin); 42 | freopen((test_name + ".out").c_str(), "w", stdout); 43 | #endif 44 | 45 | cin >> k >> n; 46 | Try(0); 47 | return 0; 48 | } -------------------------------------------------------------------------------- /TSP.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int n; 5 | int dis[20][20]; 6 | int sol[20]; 7 | int ans = INT_MAX; 8 | 9 | bool ucv(int k, int i) { 10 | for (int j = 1; j < k; ++j) { 11 | if (sol[j] == i) return false; 12 | } 13 | return true; 14 | } 15 | 16 | void Try(int k, int tmpans) { 17 | for (int i = 1; i < n; ++i) { 18 | if (ucv(k, i)) { 19 | sol[k] = i; 20 | tmpans += dis[sol[k - 1]][sol[k]]; 21 | if (tmpans < ans) { 22 | if (k == n - 1) { 23 | tmpans += dis[sol[k]][sol[0]]; 24 | if (tmpans < ans) ans = tmpans; 25 | tmpans -= dis[sol[k]][sol[0]]; 26 | } else 27 | Try(k + 1, tmpans); 28 | } 29 | tmpans -= dis[sol[k - 1]][sol[k]]; 30 | sol[k] = -1; 31 | } 32 | } 33 | } 34 | 35 | int main() { 36 | ios_base::sync_with_stdio(0); 37 | cin.tie(NULL); 38 | cout.tie(NULL); 39 | 40 | cin >> n; 41 | for (int i = 0; i < n; ++i) { 42 | for (int j = 0; j < n; ++j) { 43 | cin >> dis[i][j]; 44 | } 45 | } 46 | 47 | Try(1, 0); 48 | 49 | cout << ans << endl; 50 | } -------------------------------------------------------------------------------- /midterm2/template.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | typedef long long ll; 8 | typedef pair pii; 9 | #define fi first 10 | #define se second 11 | #define el << "\n" 12 | #define sp << " " 13 | #define sps << " " << 14 | 15 | bool offline(false), debug(false); 16 | 17 | void DEBUG(function t) { 18 | if (debug && offline) { 19 | cout << "\n*****DEBUG*****\n"; 20 | t(); 21 | cout << "\n************endDEBUG************\n"; 22 | } 23 | } 24 | 25 | void preprocess(int argc, char** argv){ 26 | if (argc > 2) { 27 | string s = argv[1]; 28 | if ((s[0] - 'a') % 2 == 0) { 29 | offline = true; 30 | const string test_name = argv[2]; 31 | freopen((test_name).c_str(), "r", stdin); 32 | freopen((test_name + ".out").c_str(), "w", stdout); 33 | } 34 | if ((s[0] - 'a') / 2 % 2 == 0) { 35 | debug = true; 36 | } 37 | } 38 | ios_base::sync_with_stdio(0); 39 | cin.tie(NULL); 40 | cout.tie(NULL); 41 | } 42 | 43 | int main(int argc, char** argv) { 44 | preprocess(argc, argv); 45 | 46 | } -------------------------------------------------------------------------------- /HamitonCycle.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | /* 4 | Given an undirected graph G = (V,E). 5 | Write a program to check if G is a Hamiltonian graph. 6 | */ 7 | 8 | /* 9 | https://en.wikipedia.org/wiki/Hamiltonian_path#Bondy%E2%80%93Chv%C3%A1tal_theorem 10 | */ 11 | 12 | const int maxn = 100; 13 | int n, m; 14 | vector> edges; 15 | bool adj[maxn][maxn]; 16 | int deg[maxn]; 17 | 18 | bool check_Ore() { 19 | // Ore's Theorem (1960), of course not AC 20 | for (int i = 1; i <= n; ++i) { 21 | for (int j = i + 1; j <= n; ++j) { 22 | if (!adj[i][j] && deg[i] + deg[j] < n) { 23 | return false; 24 | } 25 | } 26 | } 27 | return true; 28 | } 29 | 30 | int main() { 31 | int T; 32 | cin >> T; 33 | while (T--) { 34 | cin >> n >> m; 35 | edges.clear(); 36 | memset(adj, 0, sizeof(adj)); 37 | memset(deg, 0, sizeof(deg)); 38 | edges = vector>(maxn, vector()); 39 | for (int i = 0; i < m; ++i) { 40 | int v1, v2; 41 | cin >> v1 >> v2; 42 | edges[v1].push_back(v2); 43 | edges[v2].push_back(v1); 44 | deg[v1] += 1; 45 | deg[v2] += 1; 46 | } 47 | cout << check_Ore() << endl; 48 | } 49 | } -------------------------------------------------------------------------------- /Week-1/RangeMinimumQuery.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | int i, j; 6 | ll n, m, a[1000001], ans(0); 7 | ll st[4000005]; 8 | 9 | void build(int id, int l, int r) { 10 | if (l > r) 11 | return; 12 | else if (l == r) { 13 | st[id] = a[l]; 14 | } else { 15 | int mid = (l + r) / 2; 16 | build(2 * id, l, mid); 17 | build(2 * id + 1, mid + 1, r); 18 | st[id] = min(st[2 * id], st[2 * id + 1]); 19 | } 20 | } 21 | 22 | ll get(int id, int u, int v, int l, int r) { 23 | // st[id] = min(a[u], a[u+1],..., a[v]) 24 | // need to find min(a[l],..., a[r]) 25 | if (r < u || l > v) 26 | return INT_MAX; 27 | else if (l <= u && r >= v) 28 | return st[id]; 29 | else { 30 | int mid = (u + v) / 2; 31 | return min(get(2 * id, u, mid, l, r), get(2 * id + 1, mid + 1, v, l, r)); 32 | } 33 | } 34 | 35 | ll rmq(int i, int j) { 36 | return get(1, 0, n - 1, i, j); 37 | } 38 | 39 | int main() { 40 | ios_base::sync_with_stdio(0); 41 | cin.tie(NULL); 42 | cout.tie(NULL); 43 | 44 | cin >> n; 45 | for (int i = 0; i < n; ++i) { 46 | cin >> a[i]; 47 | } 48 | build(1, 0, n - 1); 49 | cin >> m; 50 | while (m--) { 51 | cin >> i >> j; 52 | ans += rmq(i, j); 53 | } 54 | cout << ans << endl; 55 | } -------------------------------------------------------------------------------- /Week-1/Maze.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | #define pii pair 5 | 6 | int n, m, c, r; 7 | queue q; 8 | vector> maze(1000, vector(1000, -1)); 9 | vector> dis(1000, vector(1000, -1)); 10 | 11 | int add(int a, int b, int c, int d) { 12 | if (a < 0 || a >= n || b < 0 || b >= m) { 13 | return dis[c][d]; 14 | } else if (maze[a][b] == 1 || dis[a][b] > -1) 15 | return 0; 16 | else { 17 | dis[a][b] = dis[c][d] + 1; 18 | q.push({a, b}); 19 | return 0; 20 | } 21 | } 22 | 23 | int main() { 24 | cin >> n >> m >> c >> r; 25 | --c; 26 | --r; 27 | for (int i = 0; i < n; ++i) { 28 | for (int j = 0; j < m; ++j) { 29 | cin >> maze[i][j]; 30 | } 31 | } 32 | if (maze[c][r] == 1) { 33 | cout << -1; 34 | return 0; 35 | } else { 36 | q.push({c, r}); 37 | dis[c][r] = 1; 38 | while (q.size() > 0) { 39 | pii top = q.front(); 40 | c = top.first; 41 | r = top.second; 42 | q.pop(); 43 | int ans = add(c + 1, r, c, r); 44 | ans = max(ans, add(c, r + 1, c, r)); 45 | ans = max(ans, add(c - 1, r, c, r)); 46 | ans = max(ans, add(c, r - 1, c, r)); 47 | if (ans > 0) { 48 | cout << ans << endl; 49 | return 0; 50 | } 51 | } 52 | cout << -1; 53 | } 54 | } -------------------------------------------------------------------------------- /Week-3/MaxDistanceSubSequence.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | Given N elements (2≤ N ≤100,000) on a straight line at positions >=0, <=1e9 6 | The distance of a subset of N elements is defined to be the minimum distance between two elements. 7 | Find the subset of N given elements containing exactly C elements such that the distance is maximal. 8 | */ 9 | 10 | const int maxn = 100001; 11 | const int maxx = 1000000000; 12 | int n, c, x[maxn]; 13 | 14 | bool check(int d) { 15 | // check if there exist c points which pairwise distance is >= d 16 | int ind = 0; 17 | int num = 1; 18 | for (int i = 1; i < n; ++i) { 19 | if (x[i] - x[ind] >= d) { 20 | ind = i; 21 | ++num; 22 | if (num >= c) return true; 23 | } 24 | } 25 | return false; 26 | } 27 | 28 | int main() { 29 | ios_base::sync_with_stdio(0); 30 | cin.tie(0); 31 | cout.tie(0); 32 | 33 | int t; 34 | cin >> t; 35 | while (t--) { 36 | cin >> n >> c; 37 | memset(x, 0, sizeof(x)); 38 | for (int i = 0; i < n; ++i) { 39 | cin >> x[i]; 40 | } 41 | sort(x, x + n); 42 | 43 | int k = 1; // init low value of binary search 44 | // binary search on the answer k 45 | for (int b = maxx / 2; b >= 1; b /= 2) // b: jump step 46 | while (k + b <= x[n - 1] && check(k + b)) k += b; 47 | cout << k << endl; // k: max int st check(k) == true 48 | } 49 | 50 | return 0; 51 | } -------------------------------------------------------------------------------- /JobSelectionPlanning.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | /* 8 | Given n jobs J = {1,. . .,n}. Each job i has a deadline d(i) 9 | and associated profit p(i) if the job is finished before the 10 | deadline. Every job takes the single unit of time, so the 11 | minimum possible deadline for any job is 1. It is also noted 12 | that no more than one job can be executed at a time. 13 | Select and schedule a subset of jobs of J such that the total 14 | profits is maximal. 15 | */ 16 | 17 | typedef pair pii; 18 | #define d second 19 | #define p first 20 | const int maxn = 10001; 21 | int n, res = 0; 22 | pii dat[maxn]; 23 | set untakendate; 24 | 25 | int main() { 26 | ios_base::sync_with_stdio(0); 27 | cin.tie(NULL); 28 | cout.tie(NULL); 29 | cin >> n; 30 | for (int i = 0; i < maxn; ++i) { 31 | untakendate.insert(i); 32 | } 33 | for (int i = 0; i < n; ++i) { 34 | cin >> dat[i].d >> dat[i].p; 35 | } 36 | sort(dat, dat + n, greater()); 37 | for (int i = 0; i < n; ++i) { 38 | auto u = untakendate.upper_bound(dat[i].d); 39 | // careful: 40 | // set.upper_bound(...) : O(log n) 41 | // upper_bound(set.begin(), set.end(), ...) : O(n) 42 | --u; 43 | if (*u != 0) { 44 | untakendate.erase(u); 45 | res += dat[i].p; 46 | } 47 | } 48 | cout << res; 49 | } 50 | -------------------------------------------------------------------------------- /CheckTSPwithPrecedenceConstraint.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | #define fi first 16 | #define se second 17 | 18 | int n, m, x[1001], d[1001][1001]; 19 | bool pre[1001][1001]; 20 | map, bool> bef; 21 | 22 | int main(int argc, char** argv) { 23 | ios_base::sync_with_stdio(0); 24 | cin.tie(NULL); 25 | cout.tie(NULL); 26 | #ifdef OFFLINE 27 | const string test_name = argv[1]; 28 | freopen((test_name).c_str(), "r", stdin); 29 | freopen((test_name + ".out").c_str(), "w", stdout); 30 | #endif 31 | 32 | cin >> n; 33 | for (int i = 0; i < n; ++i) cin >> x[i]; 34 | for (int i = 1; i <= n; ++i) 35 | for (int j = 1; j <= n; ++j) 36 | cin >> d[i][j]; 37 | 38 | cin >> m; 39 | for (int i = 0; i < m; ++i) { 40 | int tmp1, tmp2; 41 | cin >> tmp1 >> tmp2; 42 | pre[tmp1][tmp2] = 1; 43 | } 44 | 45 | int cost = d[x[n - 1]][x[0]]; 46 | for (int i = 0; i < n - 1; ++i) cost += d[x[i]][x[i + 1]]; 47 | 48 | for (int i = 0; i < n; ++i) { 49 | for (int j = i + 1; j < n; ++j) { 50 | if (pre[x[j]][x[i]]) { 51 | cost = -1; 52 | break; 53 | } 54 | } 55 | } 56 | cout << cost; 57 | 58 | return 0; 59 | } -------------------------------------------------------------------------------- /MaxMatchingOnBipartieGraph.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | /* 4 | There are n tasks 1, ..., n and m staffs 1, ..., m. 5 | T(i) is the set of staffs that can perform the task 6 | i (i=1,...,n). Compute an assignment of staffs to tasks 7 | such that each task is assigned to at most one staff and 8 | each staff cannot be assigned to more than one task and 9 | the number of tasks assigned is maximal. 10 | */ 11 | /* 12 | using Kuhn's alg, copied from 13 | https://cp-algorithms.com/graph/kuhn_maximum_bipartite_matching.html#implementation 14 | */ 15 | 16 | int n, k, tmp1, tmp2; 17 | // n: number of staff, k: number of task 18 | vector> g(10001, vector()); 19 | vector mt; 20 | vector used; 21 | 22 | bool try_kuhn(int v) { 23 | if (used[v]) 24 | return false; 25 | used[v] = true; 26 | for (int to : g[v]) { 27 | if (mt[to] == -1 || try_kuhn(mt[to])) { 28 | mt[to] = v; 29 | return true; 30 | } 31 | } 32 | return false; 33 | } 34 | 35 | int main() { 36 | cin >> n >> k; 37 | for (int i = 0; i < n; ++i) { 38 | cin >> tmp1; 39 | for (int j = 0; j < tmp1; ++j) { 40 | cin >> tmp2; 41 | g[i].push_back(tmp2-1); 42 | } 43 | } 44 | 45 | mt.assign(k, -1); 46 | for (int v = 0; v < n; ++v) { 47 | used.assign(n, false); 48 | try_kuhn(v); 49 | } 50 | int res = 0; 51 | for (int i = 0; i < k; ++i) 52 | if (mt[i] != -1) 53 | ++res; 54 | cout << res; 55 | } -------------------------------------------------------------------------------- /CountNumberOfSudokuSolutions.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | ll ans = 0; 6 | int mat[9][9]; 7 | bool filled[9][9]; 8 | 9 | bool markrow[9][10]; 10 | bool markcol[9][10]; 11 | bool marksquare[3][3][10]; 12 | 13 | void Try(int row, int col) { 14 | if (col == 9) { 15 | if (row == 8) { 16 | ++ans; 17 | return; 18 | } else { 19 | Try(row + 1, 0); 20 | return; 21 | } 22 | } else if (filled[row][col]) { 23 | Try(row, col + 1); 24 | return; 25 | } 26 | for (int i = 1; i <= 9; ++i) { 27 | if (markrow[row][i] || markcol[col][i] || marksquare[row / 3][col / 3][i]) 28 | continue; 29 | else { 30 | markrow[row][i] = true; 31 | markcol[col][i] = true; 32 | marksquare[row / 3][col / 3][i] = true; 33 | 34 | Try(row, col + 1); 35 | 36 | marksquare[row / 3][col / 3][i] = false; 37 | markcol[col][i] = false; 38 | markrow[row][i] = false; 39 | } 40 | } 41 | } 42 | 43 | int main() { 44 | for (int i = 0; i < 9; ++i) { 45 | for (int j = 0; j < 9; ++j) { 46 | cin >> mat[i][j]; 47 | markrow[i][mat[i][j]] = true; 48 | markcol[j][mat[i][j]] = true; 49 | marksquare[i / 3][j / 3][mat[i][j]] = true; 50 | if (mat[i][j] == 0) 51 | filled[i][j] = false; 52 | else 53 | filled[i][j] = true; 54 | } 55 | } 56 | Try(0, 0); 57 | cout << ans; 58 | } -------------------------------------------------------------------------------- /MinimumSpanningTreeKruskal.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | Given a undirected connected graph G=(V,E) where V={1,…,N}. 6 | Each edge (u,v)∈E has weight w(u,v). 7 | Compute weight of minimum spanning tree of G. 8 | */ 9 | 10 | #define e pair> 11 | #define w first 12 | #define v1 second.first 13 | #define v2 second.second 14 | 15 | const int maxnm = 100001; 16 | int n, m; 17 | vector edges(0); 18 | int lab[maxnm]; 19 | // lab[i] < 0 -> root, lab[i] = - size of tree 20 | // lab[i] > 0 -> lab[i] = parent of i 21 | int res = 0; 22 | 23 | int find_set(int v) { 24 | if (lab[v] < 0) { 25 | return v; 26 | } else { 27 | lab[v] = find_set(lab[v]); 28 | return lab[v]; 29 | } 30 | } 31 | 32 | void union_set(int a, int b) { 33 | a = find_set(a); 34 | b = find_set(b); 35 | 36 | if (a != b) { 37 | if (lab[a] > lab[b]) swap(a, b); 38 | lab[a] += lab[b]; 39 | lab[b] = a; 40 | } 41 | } 42 | 43 | int main() { 44 | for (int i = 0; i < maxnm; ++i) lab[i] = -1; 45 | cin >> n >> m; 46 | for (int i = 0; i < m; ++i) { 47 | int tmp1, tmp2, w; 48 | cin >> tmp1 >> tmp2 >> w; 49 | edges.push_back({w, {tmp1, tmp2}}); 50 | } 51 | sort(edges.begin(), edges.end()); 52 | 53 | for (int i = 0; i < m; ++i) { 54 | e edge = edges[i]; 55 | if (find_set(edge.v1) == find_set(edge.v2)) 56 | continue; 57 | else { 58 | res += edge.w; 59 | union_set(edge.v1, edge.v2); 60 | } 61 | } 62 | cout << res; 63 | } -------------------------------------------------------------------------------- /MinimumSpanningTreeKruskal2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | Given a undirected connected graph G=(V,E) where V={1,…,N}. 6 | Each edge (u,v)∈E has weight w(u,v). 7 | Compute weight of minimum spanning tree of G. 8 | */ 9 | 10 | #define e pair> 11 | #define w first 12 | #define v1 second.first 13 | #define v2 second.second 14 | 15 | const int maxnm = 100001; 16 | int n, m; 17 | vector edges(0); 18 | int parent[maxnm], sz[maxnm]; 19 | // can use other arr to indicate other information of trees (sum val, min val...) 20 | int res = 0; 21 | 22 | void make_set(int v){ 23 | parent[v] = v; 24 | sz[v] = 1; 25 | } 26 | 27 | int find_set(int v) { 28 | if(parent[v]==v) return v; 29 | else return find_set(parent[v]); 30 | } 31 | 32 | void union_set(int a, int b) { 33 | a = find_set(a); 34 | b = find_set(b); 35 | 36 | if (a != b) { 37 | if (sz[a] > sz[b]) swap(a, b); 38 | sz[b] += sz[a]; 39 | parent[a] = b; 40 | } 41 | } 42 | 43 | int main() { 44 | cin >> n >> m; 45 | for(int i=1; i<=n; ++i) make_set(i); 46 | for (int i = 0; i < m; ++i) { 47 | int tmp1, tmp2, w; 48 | cin >> tmp1 >> tmp2 >> w; 49 | edges.push_back({w, {tmp1, tmp2}}); 50 | } 51 | sort(edges.begin(), edges.end()); 52 | 53 | for (int i = 0; i < m; ++i) { 54 | e edge = edges[i]; 55 | if (find_set(edge.v1) == find_set(edge.v2)) 56 | continue; 57 | else { 58 | res += edge.w; 59 | union_set(edge.v1, edge.v2); 60 | } 61 | } 62 | cout << res; 63 | } -------------------------------------------------------------------------------- /Week-1/LargestBlackSubRectangle.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | const int maxnm = 1005; 5 | int n, m, a[maxnm][maxnm]; 6 | int ones_in_the_left[maxnm][maxnm]; 7 | #define fi first 8 | #define se second 9 | 10 | int solve(int j) { 11 | int l[maxnm], r[maxnm]; 12 | for (int i = 0; i < n; ++i) { 13 | l[i] = i; 14 | r[i] = i; 15 | } 16 | for (int i = 1; i < n; ++i) { 17 | while (l[i] > 0 && ones_in_the_left[i][j] <= ones_in_the_left[l[i] - 1][j]) { 18 | l[i] = l[l[l[i] - 1]]; 19 | } 20 | } 21 | for (int i = n - 2; i >= 0; --i) { 22 | while (r[i] < n - 1 && ones_in_the_left[i][j] <= ones_in_the_left[r[i] + 1][j]) { 23 | r[i] = r[r[r[i] + 1]]; 24 | } 25 | } 26 | int ans = 0; 27 | for (int i = 0; i < n; ++i) { 28 | ans = max(ans, ones_in_the_left[i][j] * (r[i] - l[i] + 1)); 29 | } 30 | return ans; 31 | } 32 | 33 | int main() { 34 | cin >> n >> m; 35 | for (int i = 0; i < n; ++i) { 36 | for (int j = 0; j < m; ++j) { 37 | cin >> a[i][j]; 38 | } 39 | } 40 | for (int i = 0; i < n; ++i) { 41 | if (a[i][0] == 1) 42 | ones_in_the_left[i][0] = 1; 43 | else 44 | ones_in_the_left[i][0] = 0; 45 | for (int j = 1; j < m; ++j) { 46 | if (a[i][j] == 1) 47 | ones_in_the_left[i][j] = ones_in_the_left[i][j - 1] + 1; 48 | else 49 | ones_in_the_left[i][j] = 0; 50 | } 51 | } 52 | int ans = 0; 53 | for (int j = 0; j < m; ++j) { 54 | ans = max(ans, solve(j)); 55 | } 56 | cout << ans << endl; 57 | } -------------------------------------------------------------------------------- /Week-5/BridgesAndArticulationPoints.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | const int maxn = 100001; 5 | int n, m; 6 | vector> edges(maxn, vector(0)); 7 | int low[maxn], tin[maxn], cnt = 1; 8 | bool visited[maxn]; 9 | bool isAP[maxn]; 10 | int n_ap = 0; 11 | 12 | void dfs(int v, int parent) { 13 | visited[v] = true; 14 | tin[v] = cnt; 15 | low[v] = cnt; 16 | ++cnt; 17 | int n_child = 0; 18 | for (int child : edges[v]) { 19 | if (child == parent) continue; 20 | if (!visited[child]) { 21 | dfs(child, v); 22 | low[v] = min(low[v], low[child]); 23 | if (low[child] >= tin[v] && parent != -1) isAP[v] = true; 24 | ++n_child; 25 | } else { 26 | low[v] = min(low[v], tin[child]); 27 | } 28 | } 29 | if (parent == -1 && n_child > 1) isAP[v] = true; 30 | } 31 | 32 | int num_articulation_point() { 33 | int res = 0; 34 | for (int i = 1; i <= n; ++i) res += isAP[i]; 35 | return res; 36 | } 37 | 38 | int num_bridge() { 39 | int res = 0; 40 | for (int u = 1; u <= n; ++u) { 41 | for (int v : edges[u]) { 42 | if (low[v] > tin[u]) ++res; 43 | } 44 | } 45 | return res; 46 | } 47 | 48 | int main() { 49 | cin >> n >> m; 50 | for (int i = 0; i < m; ++i) { 51 | int tmp1, tmp2; 52 | cin >> tmp1 >> tmp2; 53 | edges[tmp1].push_back(tmp2); 54 | edges[tmp2].push_back(tmp1); 55 | } 56 | for (int i = 1; i <= n; ++i) { 57 | if (!visited[i]) { 58 | dfs(i, -1); 59 | } 60 | } 61 | cout << num_articulation_point() << " " << num_bridge(); 62 | } -------------------------------------------------------------------------------- /midterm2/20200573_BAI1.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | maximum sum of consecutive k-subarray 3 | */ 4 | 5 | #pragma GCC optimize("O3,unroll-loops") 6 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 7 | 8 | #include 9 | using namespace std; 10 | 11 | typedef long long ll; 12 | typedef pair pii; 13 | #define fi first 14 | #define se second 15 | #define el << "\n" 16 | #define sp << " " 17 | #define sps << " " << 18 | 19 | bool offline(false), debug(false); 20 | 21 | void DEBUG(function t) { 22 | if (debug && offline) { 23 | cout << "\n*****DEBUG*****\n"; 24 | t(); 25 | cout << "\n************endDEBUG************\n"; 26 | } 27 | } 28 | 29 | void preprocess(int argc, char** argv) { 30 | if (argc > 2) { 31 | string s = argv[1]; 32 | if ((s[0] - 'a') % 2 == 0) { 33 | offline = true; 34 | const string test_name = argv[2]; 35 | freopen((test_name).c_str(), "r", stdin); 36 | freopen((test_name + ".out").c_str(), "w", stdout); 37 | } 38 | if ((s[0] - 'a') / 2 % 2 == 0) { 39 | debug = true; 40 | } 41 | } 42 | ios_base::sync_with_stdio(0); 43 | cin.tie(NULL); 44 | cout.tie(NULL); 45 | } 46 | 47 | const int maxn = 100001; 48 | int n, k, m, a[maxn]; 49 | int sum = 0, res = 0; 50 | 51 | int main(int argc, char** argv) { 52 | preprocess(argc, argv); 53 | 54 | cin >> n >> k >> m; 55 | for (int i = 0; i < n; ++i) cin >> a[i]; 56 | for (int i = 0; i < k; ++i) sum += a[i]; 57 | res += (sum == m); 58 | for (int i = k; i < n; ++i) { 59 | sum += a[i] - a[i - k]; 60 | if (sum == m) ++res; 61 | } 62 | cout << res; 63 | } -------------------------------------------------------------------------------- /Week-4/Warehouse.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | A truck is planned to arrive at some stations among N stations 6 | 1, 2, . . ., N located on a line. Station i (i = 1,…,N) has coordinate 7 | i and has following information 8 | ai : amount of goods 9 | ti : pickup time duration for taking goods 10 | The route of the truck is a sequence of stations x1 < x2 < . . . < xk 11 | (1 ≤ xj ≤ N, j = 1,…, k). Due to technical constraints, the distance between 12 | two consecutive stations that the truck arrives xi and xi+1 is less than or 13 | equal to D and the total pickup time duration cannot exceed T. Find a route 14 | for the truck such that total amount of goods picked up is maximal. 15 | */ 16 | 17 | int N, T, D, a[1001], t[1001]; 18 | int dp[1001][101]; 19 | // dp[i][t] = weight if pickup with time t and last picked at i 20 | int ans; 21 | 22 | int main() { 23 | ios_base::sync_with_stdio(0); 24 | cin.tie(0); 25 | cout.tie(0); 26 | 27 | cin >> N >> T >> D; 28 | for (int i = 0; i < N; ++i) cin >> a[i]; 29 | for (int i = 0; i < N; ++i) cin >> t[i]; 30 | 31 | for (int time = 0; time <= T; ++time) dp[0][time] = INT_MIN; 32 | for (int i = 0; i < N; ++i) dp[i][t[i]] = a[i]; 33 | 34 | for (int i = 0; i < N; ++i) { 35 | for (int time = 0; time <= T; ++time) { 36 | for (int dist = 1; dist <= D; ++dist) { 37 | if (dist > i) break; 38 | if (t[i] > time) continue; 39 | dp[i][time] = max(dp[i][time], a[i] + dp[i - dist][time - t[i]]); 40 | ans = max(dp[i][time], ans); 41 | } 42 | } 43 | } 44 | cout << ans << endl; 45 | 46 | return 0; 47 | } -------------------------------------------------------------------------------- /midterm2/20200573_BAI4.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | max sum of subsequence which dont take 3 | 2 consecutive value of input arr 4 | */ 5 | 6 | #pragma GCC optimize("O3,unroll-loops") 7 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 8 | 9 | #include 10 | using namespace std; 11 | 12 | typedef long long ll; 13 | typedef pair pii; 14 | #define fi first 15 | #define se second 16 | #define el << "\n" 17 | #define sp << " " 18 | #define sps << " " << 19 | 20 | bool offline(false), debug(false); 21 | 22 | void DEBUG(function t) { 23 | if (debug && offline) { 24 | cout << "\n*****DEBUG*****\n"; 25 | t(); 26 | cout << "\n************endDEBUG************\n"; 27 | } 28 | } 29 | 30 | void preprocess(int argc, char** argv) { 31 | if (argc > 2) { 32 | string s = argv[1]; 33 | if ((s[0] - 'a') % 2 == 0) { 34 | offline = true; 35 | const string test_name = argv[2]; 36 | freopen((test_name).c_str(), "r", stdin); 37 | freopen((test_name + ".out").c_str(), "w", stdout); 38 | } 39 | if ((s[0] - 'a') / 2 % 2 == 0) { 40 | debug = true; 41 | } 42 | } 43 | ios_base::sync_with_stdio(0); 44 | cin.tie(NULL); 45 | cout.tie(NULL); 46 | } 47 | 48 | const int maxn = 1e5 + 1; 49 | int n, a[maxn], dp[maxn][2]; 50 | // dp[last element][used last element or not] 51 | 52 | int main(int argc, char** argv) { 53 | preprocess(argc, argv); 54 | 55 | cin >> n; 56 | for (int i = 0; i < n; ++i) cin >> a[i]; 57 | dp[0][0] = 0; 58 | dp[0][1] = a[0]; 59 | for (int i = 1; i < n; ++i) { 60 | dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); 61 | dp[i][1] = a[i] + dp[i - 1][0]; 62 | } 63 | cout << max(dp[n - 1][0], dp[n - 1][1]) el; 64 | } -------------------------------------------------------------------------------- /Week-5/BusInterCity.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | const int maxn = 5001; 5 | const int maxm = 10001; 6 | int n, m; 7 | vector> edges(maxn, vector(0)); 8 | int cost[maxn][maxn]; 9 | int c[maxn], d[maxn]; 10 | bool visited[maxn]; 11 | 12 | void dfs(int root, int maxd, int u, int p, int depth) { 13 | if (depth >= maxd) 14 | return; 15 | for (int v : edges[u]) { 16 | if (v == p || visited[v]) continue; 17 | visited[v] = 1; 18 | cost[root][v] = c[root]; 19 | dfs(root, maxd, v, u, depth + 1); 20 | } 21 | } 22 | 23 | int main() { 24 | cin >> n >> m; 25 | for (int i = 1; i <= n; ++i) cin >> c[i] >> d[i]; 26 | for (int i = 0; i < m; ++i) { 27 | int v1, v2; 28 | cin >> v1 >> v2; 29 | edges[v1].push_back(v2); 30 | edges[v2].push_back(v1); 31 | } 32 | 33 | for (int i = 1; i <= n; ++i) { 34 | memset(visited, 0, sizeof(visited)); 35 | for (int j = 1; j <= n; ++j) cost[i][j] = INT_MAX - 5e7; 36 | dfs(i, d[i], i, -1, 0); 37 | } 38 | 39 | // Dijkstra's alg 40 | memset(visited, 0, sizeof(visited)); 41 | for (int i = 0; i <= n; ++i) c[i] = 5e7; 42 | priority_queue, vector>, greater>> pq; 43 | pq.push({0, 1}); 44 | c[1] = 0; 45 | while (!pq.empty()) { 46 | pair top = pq.top(); 47 | pq.pop(); 48 | int vertex = top.second; 49 | visited[vertex] = 1; 50 | for (int i = 1; i <= n; ++i) { 51 | if (visited[i]) continue; 52 | int tmp = c[vertex] + cost[vertex][i]; 53 | if (tmp < c[i]) { 54 | pq.push({tmp, i}); 55 | c[i] = tmp; 56 | } 57 | } 58 | } 59 | cout << c[n]; 60 | } -------------------------------------------------------------------------------- /WaterJugs.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | #define pii pair 5 | #define fi first 6 | #define se second 7 | 8 | int A, B, c; 9 | queue q; 10 | map mov; 11 | 12 | pii toB(pii x) { 13 | int sum = x.fi + x.se; 14 | if (sum < B) 15 | return {0, sum}; 16 | else 17 | return {sum - B, B}; 18 | } 19 | 20 | pii toA(pii x) { 21 | int sum = x.fi + x.se; 22 | if (sum < A) 23 | return {sum, 0}; 24 | else 25 | return {A, sum - A}; 26 | } 27 | 28 | pii addA(pii x) { 29 | return {A, x.se}; 30 | } 31 | 32 | pii addB(pii x) { 33 | return {x.fi, B}; 34 | } 35 | 36 | pii removeA(pii x) { 37 | return {0, x.se}; 38 | } 39 | 40 | pii removeB(pii x) { 41 | return {x.fi, 0}; 42 | } 43 | 44 | bool chk(pii x) { 45 | return (x.fi == c || x.se == c); 46 | } 47 | 48 | void add(pii x, int movv) { 49 | if (mov[x] == 0 || mov[x] >= movv) { 50 | mov[x] = movv; 51 | q.push(x); 52 | } 53 | } 54 | 55 | int main() { 56 | cin >> A >> B >> c; 57 | if (c % __gcd(A, B) != 0 || c > max(A, B)) { 58 | cout << -1; 59 | return 0; 60 | } 61 | q.push({0, 0}); 62 | mov[{0, 0}] = 0; 63 | while (q.size() > 0) { 64 | pii top = q.front(); 65 | q.pop(); 66 | if (chk(top)) { 67 | cout << mov[top]; 68 | return 0; 69 | } else { 70 | int movv = mov[top] + 1; 71 | add(removeA(top), movv); 72 | add(removeB(top), movv); 73 | if (top.fi < A) { 74 | add(toA(top), movv); 75 | add(addA(top), movv); 76 | } 77 | if (top.se < B) { 78 | add(toB(top), movv); 79 | add(addB(top), movv); 80 | } 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /midterm2/20200573_BAI3.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | number of subset of arr a have sum >= A and <= B 3 | */ 4 | 5 | #pragma GCC optimize("O3,unroll-loops") 6 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 7 | 8 | #include 9 | using namespace std; 10 | 11 | typedef long long ll; 12 | typedef pair pii; 13 | #define fi first 14 | #define se second 15 | #define el << "\n" 16 | #define sp << " " 17 | #define sps << " " << 18 | 19 | bool offline(false), debug(false); 20 | 21 | void DEBUG(function t) { 22 | if (debug && offline) { 23 | cout << "\n*****DEBUG*****\n"; 24 | t(); 25 | cout << "\n************endDEBUG************\n"; 26 | } 27 | } 28 | 29 | void preprocess(int argc, char** argv) { 30 | if (argc > 2) { 31 | string s = argv[1]; 32 | if ((s[0] - 'a') % 2 == 0) { 33 | offline = true; 34 | const string test_name = argv[2]; 35 | freopen((test_name).c_str(), "r", stdin); 36 | freopen((test_name + ".out").c_str(), "w", stdout); 37 | } 38 | if ((s[0] - 'a') / 2 % 2 == 0) { 39 | debug = true; 40 | } 41 | } 42 | ios_base::sync_with_stdio(0); 43 | cin.tie(NULL); 44 | cout.tie(NULL); 45 | } 46 | 47 | const int maxn = 21; 48 | int n, A, B, a[maxn], res = 0; 49 | int sum = 0; 50 | 51 | bool take[21]; 52 | 53 | void Try(int k) { 54 | if (k == n) { 55 | if (sum >= A) ++res; 56 | return; 57 | } 58 | take[k] = false; 59 | Try(k + 1); 60 | 61 | take[k] = true; 62 | sum += a[k]; 63 | if (sum <= B) Try(k + 1); 64 | sum -= a[k]; 65 | take[k] = false; 66 | } 67 | 68 | int main(int argc, char** argv) { 69 | preprocess(argc, argv); 70 | 71 | cin >> n >> A >> B; 72 | for (int i = 0; i < n; ++i) cin >> a[i]; 73 | 74 | Try(0); 75 | cout << res; 76 | } -------------------------------------------------------------------------------- /Week-4/GoldMining.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | The Kingdom ALPHA has n warehouses of golds located on a straight 6 | line and are numbered 1, 2,..., n. The warehouse i has amount of ai >= 0 7 | and is located at coordinate i (i=1,...,n). The King of ALPHA opens 8 | a competition for hunters who are responsible to find a subset of 9 | gold warehouses having largest total amount of golds with respect to 10 | the condition that the distance between two selected warehouses must be 11 | greater than or equal to L1 and less than or equal tolmax. 12 | */ 13 | 14 | int n, a[1000001], lmin, lmax, dp[1000001], ans = 0; 15 | deque d; // save the indices 16 | 17 | int main() { 18 | ios_base::sync_with_stdio(0); 19 | cin.tie(0); 20 | cout.tie(0); 21 | 22 | cin >> n >> lmin >> lmax; 23 | for (int i = 0; i < n; ++i) { 24 | cin >> a[i]; 25 | } 26 | 27 | // dp: O(n^2) 28 | // for (int i = 0; i < n; ++i) { 29 | // dp[i] = a[i]; 30 | // // some how 3/2 is enough to AC 31 | // for (int l = lmin; l <= lmax && l <= i && l <= lmin * 3 / 2; ++l) { 32 | // dp[i] = max(dp[i], a[i] + dp[i - l]); 33 | // } 34 | // ans = max(ans, dp[i]); 35 | // } 36 | // cout << ans; 37 | 38 | // deque: O(n) 39 | for (int i = 0; i < n; ++i) { 40 | while (!d.empty() && d.front() < i - lmax) 41 | d.pop_front(); // eliminate the indices smaller than lowerbound 42 | int j = i - lmin; // indice of new warehouse 43 | if (j >= 0) { 44 | while (!d.empty() && dp[d.back()] < dp[j]) // ? 45 | d.pop_back(); 46 | d.push_back(j); 47 | } 48 | dp[i] = a[i] + (d.empty() ? 0 : dp[d.front()]); 49 | ans = max(ans, dp[i]); 50 | } 51 | cout << ans; 52 | 53 | return 0; 54 | } -------------------------------------------------------------------------------- /midterm2/b2/2-input.txt: -------------------------------------------------------------------------------- 1 | 100 2 | 69 66 41 81 47 25 13 31 83 80 95 90 48 97 78 66 76 55 87 66 65 39 45 76 16 64 57 76 3 100 100 3 32 83 50 7 78 67 91 25 20 48 7 42 27 77 34 72 45 23 3 13 35 10 90 8 67 49 54 26 63 93 63 79 64 1 91 6 62 81 48 14 91 100 55 85 78 86 43 69 55 26 19 74 40 60 56 51 33 50 59 100 91 68 82 87 77 14 21 73 3 | insert 1 4 | delete-max 5 | delete-max 6 | insert 27 7 | delete-max 8 | delete-max 9 | insert 58 10 | delete-max 11 | delete-max 12 | delete-max 13 | delete-max 14 | insert 72 15 | insert 29 16 | insert 74 17 | insert 21 18 | delete-max 19 | insert 61 20 | insert 8 21 | insert 93 22 | insert 44 23 | delete-max 24 | insert 70 25 | delete-max 26 | insert 20 27 | delete-max 28 | insert 5 29 | insert 86 30 | delete-max 31 | delete-max 32 | insert 74 33 | insert 2 34 | delete-max 35 | delete-max 36 | delete-max 37 | delete-max 38 | delete-max 39 | delete-max 40 | delete-max 41 | insert 87 42 | insert 43 43 | delete-max 44 | delete-max 45 | delete-max 46 | insert 1 47 | insert 61 48 | delete-max 49 | insert 82 50 | delete-max 51 | insert 27 52 | insert 69 53 | delete-max 54 | delete-max 55 | insert 17 56 | delete-max 57 | delete-max 58 | delete-max 59 | insert 29 60 | insert 38 61 | delete-max 62 | delete-max 63 | insert 45 64 | delete-max 65 | delete-max 66 | delete-max 67 | insert 5 68 | delete-max 69 | delete-max 70 | insert 43 71 | delete-max 72 | insert 19 73 | insert 5 74 | delete-max 75 | insert 67 76 | delete-max 77 | insert 18 78 | insert 22 79 | delete-max 80 | delete-max 81 | insert 60 82 | delete-max 83 | insert 26 84 | insert 70 85 | insert 8 86 | insert 39 87 | delete-max 88 | delete-max 89 | insert 25 90 | insert 79 91 | delete-max 92 | insert 6 93 | delete-max 94 | delete-max 95 | insert 34 96 | delete-max 97 | insert 99 98 | delete-max 99 | delete-max 100 | delete-max 101 | delete-max 102 | delete-max 103 | * -------------------------------------------------------------------------------- /midterm2/20200573_BAI2.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 2 query: 3 | insert t: insert t into set 4 | delete-max: output max of set and delete it 5 | */ 6 | 7 | #pragma GCC optimize("O3,unroll-loops") 8 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 9 | 10 | #include 11 | using namespace std; 12 | 13 | typedef long long ll; 14 | typedef pair pii; 15 | #define fi first 16 | #define se second 17 | #define el << "\n" 18 | #define sp << " " 19 | #define sps << " " << 20 | 21 | bool offline(false), debug(false); 22 | 23 | void DEBUG(function t) { 24 | if (debug && offline) { 25 | cout << "\n*****DEBUG*****\n"; 26 | t(); 27 | cout << "\n************endDEBUG************\n"; 28 | } 29 | } 30 | 31 | void preprocess(int argc, char** argv) { 32 | if (argc > 2) { 33 | string s = argv[1]; 34 | if ((s[0] - 'a') % 2 == 0) { 35 | offline = true; 36 | const string test_name = argv[2]; 37 | freopen((test_name).c_str(), "r", stdin); 38 | freopen((test_name + ".out").c_str(), "w", stdout); 39 | } 40 | if ((s[0] - 'a') / 2 % 2 == 0) { 41 | debug = true; 42 | } 43 | } 44 | ios_base::sync_with_stdio(0); 45 | cin.tie(NULL); 46 | cout.tie(NULL); 47 | } 48 | 49 | const int maxn = 1e5 + 1; 50 | int n, a[maxn]; 51 | 52 | multiset s; 53 | 54 | int main(int argc, char** argv) { 55 | preprocess(argc, argv); 56 | cin >> n; 57 | for (int i = 0; i < n; ++i) { 58 | cin >> a[i]; 59 | s.insert(a[i]); 60 | } 61 | string inp; 62 | cin >> inp; 63 | int num; 64 | while (inp != "*") { 65 | if (inp == "insert") { 66 | cin >> num; 67 | s.insert(num); 68 | } else { 69 | auto p = s.end(); 70 | --p; 71 | cout << *p el; 72 | s.erase(p); 73 | } 74 | cin >> inp; 75 | } 76 | } -------------------------------------------------------------------------------- /SegmentTreeSimulationQueryMax.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef int ll; 5 | int i, j; 6 | ll n, m, a[100001], ans(0); 7 | ll st[400005]; 8 | 9 | void build(int id, int l, int r) { 10 | if (l > r) 11 | return; 12 | else if (l == r) { 13 | st[id] = a[l]; 14 | } else { 15 | int mid = (l + r) / 2; 16 | build(2 * id, l, mid); 17 | build(2 * id + 1, mid + 1, r); 18 | st[id] = max(st[2 * id], st[2 * id + 1]); 19 | } 20 | } 21 | 22 | ll get(int id, int u, int v, int l, int r) { 23 | // st[id] = max(a[u], a[u+1],..., a[v]) 24 | // need to find max(a[l],..., a[r]) 25 | if (r < u || l > v) 26 | return INT_MIN; 27 | else if (l <= u && r >= v) 28 | return st[id]; 29 | else { 30 | int mid = (u + v) / 2; 31 | return max(get(2 * id, u, mid, l, r), get(2 * id + 1, mid + 1, v, l, r)); 32 | } 33 | } 34 | 35 | void update(int id, int u, int v, int i, int val) { 36 | a[i] = val; 37 | if (u > i || v < i) 38 | return; 39 | else if (u == v) 40 | st[id] = val; 41 | else { 42 | int mid = (u + v) / 2; 43 | update(id * 2, u, mid, i, val); 44 | update(id * 2 + 1, mid + 1, v, i, val); 45 | st[id] = max(st[id * 2], st[id * 2 + 1]); 46 | } 47 | } 48 | 49 | ll rmq(int i, int j) { 50 | return get(1, 0, n - 1, i, j); 51 | } 52 | 53 | int main() { 54 | ios_base::sync_with_stdio(0); 55 | cin.tie(NULL); 56 | cout.tie(NULL); 57 | 58 | cin >> n; 59 | for (int i = 0; i < n; ++i) { 60 | cin >> a[i]; 61 | } 62 | build(1, 0, n - 1); 63 | cin >> m; 64 | while (m--) { 65 | string s; 66 | cin >> s; 67 | if (s == "get-max") { 68 | cin >> i >> j; 69 | cout << rmq(i - 1, j - 1) << endl; 70 | } else { 71 | cin >> i >> j; 72 | update(1, 0, n - 1, i - 1, j); 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /Week-2/CBUS.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | int n, k, c[23][23], cur_k, routes[23], minc = INT_MAX; 8 | int pickorserve[12]; 9 | int ans = INT_MAX, len = 0, t = 1; 10 | 11 | void Try() { 12 | for (int i = 1; i <= n; ++i) { 13 | if (cur_k < k && pickorserve[i] == 0) { 14 | routes[t] = i; 15 | len += c[routes[t - 1]][i]; 16 | if (len + (2 * n - t) * minc < ans) { 17 | ++t; 18 | pickorserve[i] = 1; 19 | ++cur_k; 20 | Try(); 21 | --cur_k; 22 | pickorserve[i] = 0; 23 | --t; 24 | } 25 | len -= c[routes[t - 1]][i]; 26 | } else if (pickorserve[i] == 1) { 27 | routes[t] = i + n; 28 | len += c[routes[t - 1]][i + n]; 29 | if (len + (2 * n - t) * minc < ans) { 30 | if (t == 2 * n) { 31 | ans = min(ans, len + c[routes[t]][0]); 32 | } else { 33 | pickorserve[i] = 2; 34 | --cur_k; 35 | ++t; 36 | Try(); 37 | --t; 38 | ++cur_k; 39 | pickorserve[i] = 1; 40 | } 41 | } 42 | len -= c[routes[t - 1]][i + n]; 43 | } 44 | } 45 | } 46 | 47 | int main() { 48 | ios_base::sync_with_stdio(0); 49 | cin.tie(NULL); 50 | cout.tie(NULL); 51 | cin >> n >> k; 52 | for (int i = 0; i < 2 * n + 1; ++i) { 53 | for (int j = 0; j < 2 * n + 1; ++j) { 54 | cin >> c[i][j]; 55 | } 56 | } 57 | for (int i = 0; i <= 2 * n; ++i) { 58 | for (int j = 0; j <= 2 * n; ++j) { 59 | if (i != j) minc = min(minc, c[i][j]); 60 | } 61 | } 62 | Try(); 63 | cout << ans; 64 | } -------------------------------------------------------------------------------- /ATaxiRouting.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3,unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | void debug(function t) { 8 | #ifdef DEBUG 9 | cout << "\n*****DEBUG*****\n"; 10 | t(); 11 | cout << "\n************endDEBUG************\n"; 12 | #endif 13 | } 14 | 15 | bool visited[12]; 16 | int n, c[25][25], x[15], d[15][15]; 17 | int dist = 0, ans = INT_MAX; 18 | int min_edge = INT_MAX, min_to_depot = INT_MAX; 19 | 20 | void Try(int k) { 21 | debug([=] { cout << k << ":" << dist << endl; }); 22 | if (k == n + 1) { 23 | dist += d[x[n]][0]; 24 | if (dist < ans) ans = dist; 25 | dist -= d[x[n]][0]; 26 | return; 27 | } 28 | for (int i = 1; i <= n; ++i) { 29 | if (visited[i]) continue; 30 | visited[i] = true; 31 | x[k] = i; 32 | dist += d[x[k - 1]][x[k]]; 33 | if (dist + min_edge * (n - k) + min_to_depot < ans) 34 | Try(k + 1); 35 | dist -= d[x[k - 1]][x[k]]; 36 | visited[i] = false; 37 | } 38 | } 39 | 40 | int main(int argc, char** argv) { 41 | ios_base::sync_with_stdio(0); 42 | cin.tie(NULL); 43 | cout.tie(NULL); 44 | #ifdef OFFLINE 45 | const string test_name = argv[1]; 46 | freopen((test_name).c_str(), "r", stdin); 47 | freopen((test_name + ".out").c_str(), "w", stdout); 48 | #endif 49 | 50 | cin >> n; 51 | for (int i = 0; i < (n << 1 | 1); ++i) 52 | for (int j = 0; j < (n << 1 | 1); ++j) 53 | cin >> c[i][j]; 54 | 55 | for (int i = 1; i <= n; ++i) { 56 | for (int j = 1; j <= n; ++j) { 57 | d[i][j] = c[i + n][j] + c[j][j + n]; 58 | min_edge = min(min_edge, d[i][j]); 59 | } 60 | d[i][0] = c[i + n][0]; 61 | d[0][i] = c[0][i] + c[i][i + n]; 62 | min_to_depot = min(min_to_depot, d[i][0]); 63 | } 64 | 65 | Try(1); 66 | 67 | cout << ans; 68 | 69 | return 0; 70 | } -------------------------------------------------------------------------------- /Week-4/Nurse.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | The director of a hospital want to schedule a working plan for 6 | a nurse in a given period of N consecutive days 1,..., N. Due 7 | to the policy of the hospital, each nurse cannot work all the 8 | days 1,..., N. Instead, there must be days off in which the nurse 9 | need to take a rest. A working plan is a sequence of disjoint 10 | working periods. A working period of a nurse is defined to be a 11 | sequence of consecutive days on which the nurse must work and the 12 | length of the working period is the number of consecutive days of 13 | that working period. The hospital imposes two constraints: 14 | i. Each nurse can take a rest only one day between two 15 | consecutive working periods. it means that if the nurse 16 | takes a rest today, then she has to work tomorrow 17 | ii. The length of each working period must be greater or equal 18 | to kmin and less than or equal to kmax 19 | The director of the hospital want to know how many possible working 20 | plans satisfying above constraint? 21 | */ 22 | 23 | typedef long long ll; 24 | int n, kmin, kmax; 25 | const ll mod = 1e9 + 7; 26 | 27 | ll dp[1005]; 28 | // dp[i] = number of plans if day i and day 0 are off 29 | 30 | int main() { 31 | ios_base::sync_with_stdio(0); 32 | cin.tie(0); 33 | cout.tie(0); 34 | 35 | cin >> n >> kmin >> kmax; 36 | 37 | dp[0] = 1; 38 | for (int i = 1; i <= n + 1; ++i) { 39 | for (int k = kmin; k <= kmax && k <= i - 1; ++k) { 40 | dp[i] = (dp[i] + dp[i - k - 1]) % mod; 41 | } 42 | } 43 | cout << dp[n - 1] + 2 * dp[n] + dp[n + 1]; 44 | /* 45 | we have 4 cases: 46 | day 0 and day n+1 can be days off -> dp[n+1] 47 | day 1 and day n are days off -> dp[n-1] 48 | day 0 is a day off and day n is actually a day off -> dp[n] 49 | day 1 is a day off and day n+1 can be day off -> dp[n] 50 | */ 51 | 52 | return 0; 53 | } -------------------------------------------------------------------------------- /MaxIndependentSetOnTree.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | // brute force 5 | /* 6 | int n, w[21], tmp1, tmp2; 7 | bool e[21][21]; 8 | bool subset[21]; 9 | int mis = 0; 10 | 11 | bool check(int k) { 12 | for (int i = 0; i < k; ++i) { 13 | if (i == k) continue; 14 | if (e[k][i] && subset[i]) return false; 15 | } 16 | return true; 17 | } 18 | 19 | void Try(int k) { 20 | if (k == n) { 21 | int tmp_mis = 0; 22 | for (int i = 0; i < n; ++i) { 23 | if (subset[i]) tmp_mis += w[i]; 24 | } 25 | mis = max(tmp_mis, mis); 26 | return; 27 | } 28 | subset[k] = 0; 29 | Try(k + 1); 30 | subset[k] = 1; 31 | if (check(k)) Try(k + 1); 32 | } 33 | 34 | int main() { 35 | memset(e, 0, sizeof(e)); 36 | cin >> n; 37 | for (int i = 0; i < n; ++i) cin >> w[i]; 38 | for (int i = 0; i < n - 1; ++i) { 39 | cin >> tmp1 >> tmp2; 40 | e[tmp1 - 1][tmp2 - 1] = true; 41 | e[tmp2 - 1][tmp1 - 1] = true; 42 | } 43 | Try(0); 44 | cout << mis; 45 | }*/ 46 | 47 | // dp on tree 48 | 49 | const int maxn = 100001; 50 | int n, w[maxn], tmp1, tmp2; 51 | int parent[maxn], dp[maxn][2]; 52 | // dp[i][0]: mis of subtree root i without i in the independent set 53 | // dp[i][1]: mis of subtree root i with i in the independent set 54 | vector> edges(maxn, vector()); 55 | int mis = 0; 56 | 57 | void cal(int u, int p) { 58 | dp[u][0] = 0; 59 | dp[u][1] = w[u]; 60 | for (int v : edges[u]) { 61 | if (v == p) continue; 62 | cal(v, u); 63 | dp[u][0] += max(dp[v][1], dp[v][0]); 64 | dp[u][1] += dp[v][0]; 65 | } 66 | } 67 | 68 | int main() { 69 | cin >> n; 70 | memset(dp, 0, sizeof(dp)); 71 | for (int i = 0; i < n; ++i) cin >> w[i]; 72 | for (int i = 0; i < n - 1; ++i) { 73 | cin >> tmp1 >> tmp2; 74 | edges[tmp1 - 1].push_back(tmp2 - 1); 75 | edges[tmp2 - 1].push_back(tmp1 - 1); 76 | } 77 | cal(0, -1); 78 | cout << max(dp[0][0], dp[0][1]); 79 | } -------------------------------------------------------------------------------- /MaxFlow.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | // alg from https://vnoi.info/wiki/translate/topcoder/max-flow-1-luong-cuc-dai-tren-mang-1.md 5 | 6 | const int maxn = 1001; 7 | int f[maxn][maxn], c[maxn][maxn]; // need to be adj mat 8 | int n, m, source, sink, tmp1, tmp2; 9 | bool visited[maxn]; 10 | int trace[maxn]; 11 | 12 | void bfs(int source, int sink) { 13 | memset(visited, 0, sizeof(visited)); 14 | memset(trace, 0, sizeof(trace)); 15 | queue q; 16 | q.push(source); 17 | visited[source] = true; 18 | while (!q.empty()) { 19 | int u = q.front(); 20 | q.pop(); 21 | for (int v = 1; v <= n; ++v) { 22 | if (!visited[v] && f[u][v] < c[u][v]) { 23 | q.push(v); 24 | visited[v] = true; 25 | trace[v] = u; 26 | } 27 | if (visited[sink]) return; 28 | } 29 | } 30 | } 31 | 32 | bool existAugPath(int source, int sink) { 33 | bfs(source, sink); 34 | return visited[sink]; // if there is a path from source to sink 35 | } 36 | 37 | void increaseFlow(int source, int sink) { 38 | int minCapacity = INT_MAX; 39 | int v = sink; 40 | int prev = -1; 41 | while (v != source) { 42 | // find minCapacity 43 | prev = trace[v]; 44 | minCapacity = min(minCapacity, c[prev][v] - f[prev][v]); 45 | v = prev; 46 | } 47 | v = sink; 48 | while (v != source) { 49 | // increase flow here 50 | prev = trace[v]; 51 | f[prev][v] += minCapacity; 52 | f[v][prev] -= minCapacity; 53 | v = prev; 54 | } 55 | } 56 | 57 | int main() { 58 | cin >> n >> m >> source >> sink; 59 | memset(f, 0, sizeof(f)); 60 | for (int i = 0; i < m; ++i) { 61 | cin >> tmp1 >> tmp2; 62 | cin >> c[tmp1][tmp2]; 63 | } 64 | while (existAugPath(source, sink)) { 65 | increaseFlow(source, sink); 66 | } 67 | int res = 0; 68 | for (int i = 1; i <= n; ++i) { 69 | res += f[source][i]; 70 | } 71 | cout << res; 72 | } -------------------------------------------------------------------------------- /PaperReviewerAssignmentProblem.cpp: -------------------------------------------------------------------------------- 1 | #pragma GCC optimize("O3", "unroll-loops") 2 | #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") 3 | 4 | #include 5 | using namespace std; 6 | 7 | /* 8 | The chair of a conference must assign scientific 9 | papers to reviewers in a balance way. There are N 10 | papers 1, 2, …, N and M reviewers 1, 2, …, M. Each 11 | paper i has a list L(i) of reviewers who are willing 12 | to review that paper. A review plan is an assignment 13 | reviewers to papers. The load of a reviewer is the number 14 | of papers he/she have to review. Given a constant b, 15 | compute the assignment such that 16 | Each paper is reviewed by exactly b reviewers. 17 | The maximum load of all reviewers is minimal 18 | Input 19 | Line 1 contains N, M and b 20 | Line i+1 (i = 1,…,N) contains a positive integer k 21 | followed by k positive integers representing the list L(i) 22 | Output 23 | Unique line contains the maximum load for all reviewers of the 24 | solution found or contains -1 if no solution found 25 | */ 26 | 27 | void debug(function t) { 28 | #ifdef DEBUG 29 | cout << "\n*****DEBUG*****\n"; 30 | t(); 31 | cout << "\n************endDEBUG************\n"; 32 | #endif 33 | } 34 | 35 | double n, m, b, k, tmp; 36 | vector l[20]; 37 | 38 | int main(int argc, char* argv[]) { 39 | ios_base::sync_with_stdio(0); 40 | cin.tie(NULL); 41 | cout.tie(NULL); 42 | #ifdef OFFLINE 43 | const string test_name = argv[1]; 44 | freopen((test_name).c_str(), "r", stdin); 45 | freopen((test_name + ".out").c_str(), "w", stdout); 46 | #endif 47 | cin >> n >> m >> b; 48 | 49 | for (int i = 0; i < m; ++i) { 50 | cin >> k; 51 | for (int j = 0; j < k; ++j) { 52 | cin >> tmp; 53 | l[i].push_back(tmp); 54 | } 55 | } 56 | 57 | bool noans = false; 58 | for (int i = 1; i <= m; ++i) { 59 | if (l[i].size() < b) { 60 | noans = true; 61 | break; 62 | } 63 | } 64 | if (noans) 65 | cout << -1; 66 | else 67 | cout << ceil(n * b / m); // test cases are not strong enough 68 | 69 | return 0; 70 | } -------------------------------------------------------------------------------- /Week-1/TelcoDataCheckAndQuery.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef long long ll; 5 | 6 | bool no_wrong_number = true; 7 | map num_calls_from; 8 | map num_time_calls_from; 9 | ll num_total_calls; 10 | 11 | void check(string num) { 12 | if (num.size() != 10) { 13 | no_wrong_number = false; 14 | } else { 15 | for (int i = 0; i < 10; ++i) { 16 | if (num[i] < '0' || num[i] > '9') { 17 | no_wrong_number = false; 18 | } 19 | } 20 | } 21 | } 22 | 23 | ll total_time(string from_time, string to_time) { 24 | ll from_h, from_m, from_s, to_h, to_m, to_s; 25 | from_h = (from_time[0] - '0') * 10 + (from_time[1] - '0'); 26 | from_m = (from_time[3] - '0') * 10 + (from_time[4] - '0'); 27 | from_s = (from_time[6] - '0') * 10 + (from_time[7] - '0'); 28 | to_h = (to_time[0] - '0') * 10 + (to_time[1] - '0'); 29 | to_m = (to_time[3] - '0') * 10 + (to_time[4] - '0'); 30 | to_s = (to_time[6] - '0') * 10 + (to_time[7] - '0'); 31 | return (to_h - from_h) * 3600 + (to_m - from_m) * 60 + (to_s - from_s); 32 | } 33 | 34 | int main() { 35 | string inp; 36 | cin >> inp; 37 | while (inp != "#") { 38 | string from_num, to_num, date, from_time, to_time; 39 | cin >> from_num >> to_num >> date >> from_time >> to_time; 40 | if (no_wrong_number) { 41 | check(from_num); 42 | check(to_num); 43 | } 44 | num_calls_from[from_num] += 1; 45 | num_time_calls_from[from_num] += total_time(from_time, to_time); 46 | ++num_total_calls; 47 | cin >> inp; 48 | } 49 | cin >> inp; 50 | while (inp != "#") { 51 | if (inp == "?check_phone_number") { 52 | cout << int(no_wrong_number) << endl; 53 | } else if (inp == "?number_calls_from") { 54 | string num; 55 | cin >> num; 56 | cout << num_calls_from[num] << endl; 57 | } else if (inp == "?number_total_calls") { 58 | cout << num_total_calls << endl; 59 | } else if (inp == "?count_time_calls_from") { 60 | string num; 61 | cin >> num; 62 | cout << num_time_calls_from[num] << endl; 63 | } 64 | cin >> inp; 65 | } 66 | } -------------------------------------------------------------------------------- /Week-2/BalancedCoursesAssignments.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int m, n; 5 | bool can_teach[11][31]; // [teacher][course], teacher [0] can teach course [1] 6 | bool conflict[31][31]; // [course][course], 2 course [0] and [1] are conflict 7 | 8 | bool is_teaching[11][31]; // [teacher][course], teacher [0] is teaching course [1] 9 | int load[11]; // load for each teacher 10 | 11 | int minimaxload = INT_MAX; // objective 12 | 13 | bool check(int candidate_teacher, int course_id) { 14 | // check if course_id can be assigned to candidate_teacher 15 | if (!can_teach[candidate_teacher][course_id]) 16 | return false; 17 | for (int i = 0; i < n; ++i) { 18 | if (is_teaching[candidate_teacher][i] && conflict[i][course_id]) { 19 | return false; 20 | } 21 | } 22 | // prune 23 | if (load[candidate_teacher] + 1 >= minimaxload) 24 | return false; 25 | return true; 26 | } 27 | 28 | void add(int teacher, int course_id) { 29 | is_teaching[teacher][course_id] = true; 30 | ++load[teacher]; 31 | } 32 | 33 | void remove(int teacher, int course_id) { 34 | is_teaching[teacher][course_id] = false; 35 | --load[teacher]; 36 | } 37 | 38 | void ghinhan() { 39 | int cur_max_load = 0; 40 | for (int i = 0; i < n; ++i) { 41 | cur_max_load = max(cur_max_load, load[i]); 42 | } 43 | minimaxload = min(cur_max_load, minimaxload); 44 | } 45 | 46 | void Try(int k) { 47 | // assign teacher to course k 48 | for (int i = 0; i < m; ++i) { 49 | if (!check(i, k)) continue; 50 | add(i, k); 51 | if (k == n - 1) { 52 | ghinhan(); 53 | } else { 54 | Try(k + 1); 55 | } 56 | remove(i, k); 57 | } 58 | } 59 | 60 | int main() { 61 | memset(can_teach, 0, sizeof(can_teach)); 62 | memset(load, 0, sizeof(load)); 63 | memset(conflict, 0, sizeof(conflict)); 64 | cin >> m >> n; 65 | for (int i = 0; i < m; ++i) { 66 | int k; 67 | cin >> k; 68 | for (int j = 0; j < k; ++j) { 69 | int tmp; 70 | cin >> tmp; 71 | can_teach[i][tmp - 1] = true; 72 | } 73 | } 74 | int t; 75 | cin >> t; 76 | for (int i = 0; i < t; ++i) { 77 | int tmp1, tmp2; 78 | cin >> tmp1 >> tmp2; 79 | conflict[tmp1 - 1][tmp2 - 1] = true; 80 | conflict[tmp2 - 1][tmp1 - 1] = true; 81 | } 82 | 83 | Try(0); 84 | 85 | cout << minimaxload; 86 | } -------------------------------------------------------------------------------- /demotest/BankTransaction.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | typedef int ll; 5 | 6 | ll num_transaction = 0; 7 | ll total_money = 0; 8 | 9 | set accs; 10 | map money_from_acc; 11 | map> edges; 12 | 13 | bool cycle(string acc, int k) { 14 | map dist; 15 | dist[acc] = 0; 16 | queue q; 17 | q.push(acc); 18 | while (!q.empty() || dist[acc] < k) { 19 | string top = q.front(); 20 | q.pop(); 21 | for (string next : edges[top]) { 22 | dist[next] = dist[top] + 1; 23 | if (next == acc) { 24 | if (dist[acc] > k) 25 | return false; 26 | else if (dist[acc] == k) 27 | return true; 28 | } 29 | if (dist[next] >= k) { 30 | continue; 31 | } 32 | q.push(next); 33 | } 34 | } 35 | return dist[acc] == k; 36 | } 37 | 38 | int main() { 39 | ios_base::sync_with_stdio(0); 40 | cin.tie(0); 41 | cout.tie(0); 42 | string tmp; 43 | cin >> tmp; 44 | while (tmp != "#") { 45 | string from_acc = tmp, to_acc, time, atm; 46 | ll money; 47 | cin >> to_acc >> money >> time >> atm; 48 | cout.flush(); 49 | accs.insert(from_acc); 50 | accs.insert(to_acc); 51 | edges[from_acc].push_back(to_acc); 52 | 53 | money_from_acc[from_acc] += money; 54 | total_money += money; 55 | ++num_transaction; 56 | cin >> tmp; 57 | } 58 | 59 | string q; 60 | cin >> q; 61 | while (q != "#") { 62 | if (q == "?number_transactions") { 63 | cout << num_transaction << endl; 64 | cout.flush(); 65 | } else if (q == "?total_money_transaction") { 66 | cout << total_money << endl; 67 | cout.flush(); 68 | } else if (q == "?list_sorted_accounts") { 69 | for (auto acc : accs) { 70 | cout << acc << " "; 71 | } 72 | cout << endl; 73 | cout.flush(); 74 | } else if (q == "?total_money_transaction_from") { 75 | string acc; 76 | cin >> acc; 77 | cout << money_from_acc[acc] << endl; 78 | cout.flush(); 79 | } else { 80 | string acc; 81 | int k; 82 | cin >> acc >> k; 83 | cout << cycle(acc, k) << endl; 84 | cout.flush(); 85 | } 86 | cin >> q; 87 | } 88 | return 0; 89 | } -------------------------------------------------------------------------------- /midterm2/run.py: -------------------------------------------------------------------------------- 1 | """ 2 | Auto judge for cpp solutions 3 | Used in command line: python run.py [-l] [-d] [-tl TIMELIMIT] 4 | -l: compile with local mode (file input and output) 5 | -d: compile with debug mode (print things) 6 | """ 7 | 8 | import os 9 | import argparse 10 | import filecmp 11 | import time 12 | import sys 13 | 14 | 15 | def removeendlineatendfile(filetoremove: str): 16 | """ 17 | Remove '\\n' at the end of output files 18 | Parameters: 19 | input: 20 | filetoremove: path string 21 | output: 22 | None 23 | """ 24 | with open(filetoremove, "r+", encoding="utf-8") as my_file: 25 | content = my_file.read() 26 | content = content.rstrip('\n') 27 | my_file.seek(0) 28 | 29 | my_file.write(content) 30 | my_file.truncate() 31 | 32 | 33 | parser = argparse.ArgumentParser() 34 | parser.add_argument('filename') 35 | parser.add_argument('-l', '--offline', 36 | action='store_true', default=False) 37 | parser.add_argument('-d', '--debug', 38 | action='store_true', default=False) 39 | parser.add_argument('-tl', '--time_limit', type=float, default=1.) 40 | 41 | 42 | config = parser.parse_args() 43 | file = '20200573_BAI' + config.filename # change solution files name here 44 | offline = config.offline 45 | debug = config.debug 46 | probNum = config.filename 47 | 48 | if offline and debug: 49 | C = ' a' 50 | elif not offline and debug: 51 | C = ' b' 52 | elif offline and not debug: 53 | C = ' c' 54 | elif not offline and not debug: 55 | C = ' d' 56 | else: 57 | C = '' 58 | 59 | 60 | os.system(f'g++ -o a.exe {file}.cpp') 61 | 62 | if not os.path.exists('a.exe'): 63 | print('!!Compile error!!') 64 | sys.exit() 65 | 66 | N_TEST = 0 67 | N_CORRECT = 0 68 | for testFileInput in os.listdir(f'b{probNum}'): 69 | if testFileInput.find('in') != -1 and \ 70 | not testFileInput.endswith('.out'): 71 | # if there are another patterns between input, output and 72 | # your results, fix the below lines 73 | testFileInput = f'b{probNum}\\' + testFileInput 74 | testFileOutput = testFileInput.replace('input', 'result') 75 | myOutputFile = testFileInput + ".out" 76 | 77 | N_TEST += 1 78 | print(f'***Test {N_TEST}:') 79 | 80 | begin_time = time.time() 81 | os.system('a.exe' + C + ' ' + testFileInput) 82 | end_time = time.time() 83 | runTime = end_time - begin_time 84 | 85 | removeendlineatendfile(testFileOutput) 86 | removeendlineatendfile(myOutputFile) 87 | res = filecmp.cmp(testFileOutput, myOutputFile) 88 | 89 | if res: 90 | N_CORRECT += 1 91 | print('AC!') 92 | else: 93 | print('!WA') 94 | if runTime > 1.: 95 | print('!!TLE!!') 96 | print(f'time: {runTime}') 97 | print(f'Total correct: {N_CORRECT}/{N_TEST}') 98 | os.remove('a.exe') 99 | -------------------------------------------------------------------------------- /final/run.py: -------------------------------------------------------------------------------- 1 | """ 2 | Auto judge for cpp solutions 3 | Used in command line: python run.py [-l] [-d] [-tl TIMELIMIT] 4 | -l: compile with local mode (file input and output) 5 | -d: compile with debug mode (print things) 6 | """ 7 | 8 | import os 9 | import argparse 10 | import filecmp 11 | import time 12 | import sys 13 | 14 | 15 | def removeredundantspaces(filetoremove: str): 16 | """ 17 | Remove '\\n' at the end of file and spaces at begin and ends 18 | of each line 19 | Parameters: 20 | input: 21 | filetoremove: path string 22 | output: 23 | None 24 | """ 25 | with open(filetoremove, "r+", encoding="utf-8") as my_file: 26 | content = my_file.readlines() 27 | if len(content) == 0: 28 | return 29 | content = [line.strip() + '\n' for line in content] 30 | while content[-1][-1] == '\n': 31 | content[-1] = content[-1][:-1] 32 | my_file.seek(0) 33 | 34 | for line in content: 35 | my_file.write(line) 36 | my_file.truncate() 37 | 38 | 39 | parser = argparse.ArgumentParser() 40 | parser.add_argument('filename') 41 | parser.add_argument('-l', '--offline', 42 | action='store_true', default=False) 43 | parser.add_argument('-d', '--debug', 44 | action='store_true', default=False) 45 | parser.add_argument('-tl', '--time_limit', type=float, default=1.) 46 | 47 | 48 | config = parser.parse_args() 49 | file = '20200573_BAI' + config.filename # change solution files name here 50 | offline = config.offline 51 | debug = config.debug 52 | probNum = config.filename 53 | 54 | C = '' 55 | 56 | if offline and debug: 57 | C = '-DOFFLINE -DDEBUG' 58 | elif not offline and debug: 59 | C = '-DDEBUG' 60 | elif offline and not debug: 61 | C = '-DOFFLINE' 62 | 63 | 64 | os.system(f'g++ -o a.exe {file}.cpp {C}') 65 | 66 | if not os.path.exists('a.exe'): 67 | print('!!Compile error!!') 68 | sys.exit() 69 | 70 | N_TEST = 0 71 | N_CORRECT = 0 72 | for testFileInput in os.listdir(f'b{probNum}'): 73 | if testFileInput.find('in') != -1 and \ 74 | not testFileInput.endswith('.out'): 75 | # if there are another patterns between input, output and 76 | # your results, fix the below lines 77 | testFileInput = f'b{probNum}\\' + testFileInput 78 | testFileOutput = testFileInput.replace('input', 'result') 79 | myOutputFile = testFileInput + ".out" 80 | 81 | N_TEST += 1 82 | print(f'***Test {N_TEST}:') 83 | 84 | begin_time = time.time() 85 | os.system('a.exe ' + testFileInput) 86 | end_time = time.time() 87 | runTime = end_time - begin_time 88 | 89 | removeredundantspaces(testFileOutput) 90 | removeredundantspaces(myOutputFile) 91 | res = filecmp.cmp(testFileOutput, myOutputFile) 92 | 93 | if res: 94 | N_CORRECT += 1 95 | print('AC!') 96 | else: 97 | print('!WA') 98 | if runTime > 1.: 99 | print('!!TLE!!') 100 | print(f'time: {runTime}') 101 | print(f'Total correct: {N_CORRECT}/{N_TEST}') 102 | os.remove('a.exe') 103 | -------------------------------------------------------------------------------- /CountSpanningTree.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | /* 5 | Given a undirected connected graph G = (V,E) in 6 | which V = {1,…,N} is the set of nodes and E is the 7 | set of M edges. Count the number of spanning trees of G. 8 | */ 9 | 10 | // ref https://en.wikipedia.org/wiki/Kirchhoff%27s_theorem 11 | 12 | #include 13 | #define N 30 14 | using namespace std; 15 | 16 | int n, m, tmp1, tmp2; 17 | double e[N][N], deg[N]; // need to be double to calculate determinant 18 | 19 | int determinantOfMatrix(double a[N][N], int t) { 20 | // copied from https://cp-algorithms.com/linear_algebra/determinant-gauss.html#algorithm 21 | const double EPS = 1E-9; 22 | double det = 1; 23 | 24 | for (int i = 0; i < t; ++i) { 25 | int k = i; 26 | for (int j = i + 1; j < t; ++j) 27 | if (abs(a[j][i]) > abs(a[k][i])) 28 | k = j; 29 | if (abs(a[k][i]) < EPS) { 30 | det = 0; 31 | break; 32 | } 33 | swap(a[i], a[k]); 34 | if (i != k) 35 | det = -det; 36 | det *= a[i][i]; 37 | for (int j = i + 1; j < t; ++j) 38 | a[i][j] /= a[i][i]; 39 | for (int j = 0; j < t; ++j) 40 | if (j != i && abs(a[j][i]) > EPS) 41 | for (int k = i + 1; k < t; ++k) 42 | a[j][k] -= a[i][k] * a[j][i]; 43 | } 44 | 45 | return det; 46 | } 47 | 48 | int main() { 49 | cin >> n >> m; 50 | for (int i = 0; i < m; ++i) { 51 | cin >> tmp1 >> tmp2; 52 | --tmp1; 53 | --tmp2; 54 | e[tmp1][tmp2] = -1; 55 | e[tmp2][tmp1] = -1; 56 | ++deg[tmp1]; 57 | ++deg[tmp2]; 58 | } 59 | for (int i = 0; i < n; ++i) { 60 | e[i][i] = deg[i]; 61 | } 62 | cout << determinantOfMatrix(e, n - 1); 63 | return 0; 64 | } 65 | 66 | /* 67 | // brute force, not finished yet 68 | typedef pair pii; 69 | #define fi first 70 | #define se second 71 | const int nmax = 40; 72 | int n, m, res = 0, n_edges = 0, n_visit = 0; 73 | bool visited[nmax]; 74 | vector edges(0); 75 | vector> e(nmax, vector(0)); 76 | 77 | bool dfs_loop(int u, int p) { 78 | // return true if there is a loop 79 | memset(visited, 0, sizeof(visited)); 80 | if (visited[u]) return true; 81 | visited[u] = true; 82 | n_visit++; 83 | for (int v : e[u]) { 84 | if (v == p) continue; 85 | if (dfs_loop(v, u)) return true; 86 | } 87 | return false; 88 | } 89 | 90 | void Try(int k) { 91 | if (k == m) { 92 | n_visit = 0; 93 | dfs_loop(0, -1); 94 | if (n_visit == n) 95 | res++; 96 | } else if (n_edges + (m - k) < n - 1 || n_edges >= n) { 97 | return; 98 | } else { 99 | cout << "k: " << k << endl; 100 | // not choose edge k 101 | Try(k + 1); 102 | // choose edge k 103 | e[edges[k].fi].push_back(edges[k].se); 104 | e[edges[k].se].push_back(edges[k].fi); 105 | ++n_edges; 106 | if (!dfs_loop(0, -1)) Try(k + 1); 107 | e[edges[k].fi].pop_back(); 108 | e[edges[k].se].pop_back(); 109 | --n_edges; 110 | } 111 | } 112 | 113 | int main() { 114 | cin >> n >> m; 115 | int tmp1, tmp2; 116 | for (int i = 0; i < m; ++i) { 117 | cin >> tmp1 >> tmp2; 118 | edges.push_back({tmp1 - 1, tmp2 - 1}); 119 | } 120 | Try(0); 121 | cout << res; 122 | } 123 | 124 | */ 125 | -------------------------------------------------------------------------------- /CapacitaedVehicleRouting.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | // not done yet 5 | 6 | // input 7 | const int maxn = 15; 8 | const int maxk = 6; 9 | const int maxq = 55; 10 | int n, k, q; 11 | int d[maxn], c[maxn][maxn]; 12 | 13 | // objective 14 | int min_total_distance = INT_MAX; 15 | 16 | // constraints tracking 17 | bool visited[maxn]; 18 | int current_trucks = 0; 19 | int current_total_distance = 0; 20 | int customer_list[maxn + maxk]; 21 | int capacity_list[maxn + maxk]; 22 | int num_visited_customer = 0; 23 | 24 | // for pruning 25 | int min_edge = INT_MAX; 26 | 27 | bool check(int next_customer, int cus_num) { 28 | // minimal acceptance requirements 29 | if (visited[next_customer]) 30 | return false; 31 | if (capacity_list[cus_num - 1] + d[next_customer] > q) 32 | return false; 33 | if (next_customer == 0 && current_trucks + 1 == k && num_visited_customer < n - 1) 34 | return false; 35 | // prune abundant branch 36 | if (current_total_distance + min_edge * (n - num_visited_customer + k - current_trucks) >= min_total_distance) 37 | return false; 38 | return true; 39 | } 40 | 41 | void add(int next_customer, int cus_num) { 42 | int current_customer = customer_list[cus_num - 1]; 43 | if (next_customer == 0) { 44 | ++current_trucks; 45 | current_total_distance += c[current_customer][0]; 46 | } else { 47 | visited[next_customer] = true; 48 | capacity_list[cus_num] = capacity_list[cus_num - 1] + d[next_customer]; 49 | current_total_distance += c[current_customer][next_customer]; 50 | customer_list[cus_num] = next_customer; 51 | ++num_visited_customer; 52 | } 53 | } 54 | 55 | void remove(int next_customer, int cus_num) { 56 | int current_customer = customer_list[cus_num - 1]; 57 | if (next_customer == 0) { 58 | --current_trucks; 59 | current_total_distance -= c[current_customer][0]; 60 | } else { 61 | --num_visited_customer; 62 | visited[next_customer] = false; 63 | capacity_list[cus_num] = 0; 64 | current_total_distance -= c[current_customer][next_customer]; 65 | customer_list[cus_num] = 0; 66 | } 67 | } 68 | 69 | void record() { 70 | min_total_distance = min(current_total_distance, min_total_distance); 71 | } 72 | 73 | bool visited_all() { 74 | return num_visited_customer == n - 1; 75 | } 76 | 77 | void Try(int cus_num) { 78 | // Choose a customer to visit #cus_num 79 | if (customer_list[cus_num - 1] == 0) { 80 | for (int candidate_cus = 1; candidate_cus < n; ++candidate_cus) { 81 | if (!check(candidate_cus, cus_num)) continue; 82 | add(candidate_cus, cus_num); 83 | Try(cus_num + 1); 84 | remove(candidate_cus, cus_num); 85 | } 86 | } else { 87 | add(0, cus_num); 88 | if (visited_all() & check(0, cus_num)) 89 | record(); 90 | else 91 | Try(cus_num + 1); 92 | remove(0, cus_num); 93 | for (int candidate_cus = 1; candidate_cus < n; ++candidate_cus) { 94 | if (!check(candidate_cus, cus_num)) continue; 95 | add(candidate_cus, cus_num); 96 | Try(cus_num + 1); 97 | remove(candidate_cus, cus_num); 98 | } 99 | } 100 | } 101 | 102 | int main() { 103 | cin >> n >> k >> q; 104 | ++n; 105 | for (int i = 1; i < n; ++i) 106 | cin >> d[i]; 107 | for (int i = 0; i < n; ++i) { 108 | for (int j = 0; j < n; ++j) { 109 | cin >> c[i][j]; 110 | min_edge = min(min_edge, c[i][j]); 111 | } 112 | } 113 | 114 | Try(1); 115 | cout << min_total_distance; 116 | } -------------------------------------------------------------------------------- /midterm2/b1/3-input.txt: -------------------------------------------------------------------------------- 1 | 10000 100 1531 2 | 16 4 6 6 6 19 7 10 28 19 29 30 9 8 1 2 10 26 28 17 11 25 6 9 11 1 15 29 2 29 25 9 18 22 27 1 29 13 20 25 23 29 16 5 28 24 16 22 22 23 9 2 21 6 13 13 4 1 7 11 14 25 4 5 18 20 29 5 7 8 7 30 15 15 27 4 7 12 15 5 29 18 30 8 23 24 3 24 11 30 19 13 7 13 28 21 21 3 20 11 29 24 16 18 11 10 7 11 20 29 2 15 10 1 14 28 27 4 12 29 6 17 24 29 22 4 16 20 23 15 18 3 28 17 27 26 6 22 16 22 16 15 19 1 23 20 17 22 16 9 13 5 12 3 22 12 12 28 14 18 18 1 21 21 19 17 26 15 15 18 9 16 25 12 9 9 1 21 13 5 24 15 30 18 6 13 12 28 13 21 5 17 22 26 7 20 3 10 12 12 12 17 17 22 29 5 7 27 3 16 17 1 2 25 24 30 11 11 1 9 6 29 27 27 13 2 15 14 17 11 10 20 4 30 26 22 25 25 15 12 22 11 12 4 23 5 11 20 26 21 13 22 27 21 6 16 26 10 11 5 26 19 12 17 17 7 4 24 28 3 28 10 21 19 28 25 16 2 24 14 30 23 14 3 23 11 7 17 8 19 16 8 16 17 17 7 1 18 25 12 6 29 28 15 23 13 22 2 2 3 5 28 30 21 11 5 30 21 4 1 3 3 2 29 10 17 11 15 3 20 23 19 2 3 15 30 29 4 26 7 8 16 16 9 21 17 17 6 23 4 29 6 16 28 2 17 3 2 28 3 26 28 9 17 14 14 5 17 10 8 26 25 25 4 3 7 11 30 8 22 25 17 16 10 9 15 4 26 4 26 14 29 13 13 2 18 21 5 24 24 19 21 4 12 28 12 24 21 23 23 23 18 20 26 1 16 14 13 10 14 8 19 15 26 21 17 20 19 29 11 26 22 30 28 26 14 3 30 8 23 29 13 4 14 29 27 5 6 21 9 13 30 24 21 12 10 8 27 10 28 29 19 12 27 26 8 4 26 5 5 22 21 25 20 25 13 22 9 30 14 1 20 17 28 3 17 15 29 28 8 16 12 30 1 12 24 28 20 15 23 28 24 10 4 11 16 2 25 22 26 3 17 12 16 27 28 30 1 25 18 15 4 20 29 24 19 3 19 27 24 19 25 26 23 5 14 19 6 13 8 7 10 22 7 5 21 15 1 26 25 29 20 20 9 18 17 25 22 14 28 6 21 23 24 28 6 21 3 16 27 8 19 14 1 26 29 2 20 6 30 9 30 21 19 7 8 11 13 6 9 7 6 18 14 16 12 11 14 14 30 4 22 25 28 30 12 25 27 4 4 4 15 20 13 17 7 16 22 13 27 11 18 18 11 30 7 6 5 21 18 2 6 30 4 18 3 24 22 1 3 4 1 9 24 26 10 7 30 17 3 7 28 27 10 13 28 21 13 3 28 27 21 27 7 23 5 30 21 29 19 28 30 27 10 7 13 22 12 11 22 19 4 5 24 17 28 16 15 13 10 3 10 29 22 15 29 23 29 25 24 1 11 11 8 6 26 2 30 21 14 10 8 22 18 18 15 28 24 14 10 27 2 14 1 7 7 13 22 14 25 13 30 23 24 4 27 12 17 23 8 13 12 9 1 9 30 14 10 1 2 10 10 3 20 29 29 12 4 23 22 11 10 30 20 7 9 20 4 30 30 16 8 1 2 20 21 2 8 9 21 7 27 20 13 19 6 28 11 25 6 30 4 15 20 24 24 24 6 24 16 20 15 14 26 5 1 22 8 12 26 29 28 9 11 7 25 12 2 3 1 15 2 13 13 4 6 11 1 16 3 22 8 27 19 29 26 2 2 13 13 26 7 18 30 18 22 11 29 9 18 3 23 1 12 10 21 22 1 11 7 22 3 22 26 25 5 2 14 4 22 1 10 3 8 23 10 22 26 8 21 16 13 20 20 5 3 21 14 6 21 1 26 23 5 12 16 10 3 29 23 16 30 18 15 12 26 20 8 30 22 20 1 20 10 10 3 15 30 28 4 30 24 3 25 15 25 18 24 7 28 18 10 23 2 16 25 20 9 30 8 9 26 28 18 29 25 3 11 26 21 5 16 29 3 28 14 15 26 5 2 5 19 25 19 14 4 10 30 30 8 21 30 6 7 4 24 2 7 28 23 26 1 7 27 4 11 6 14 27 12 14 21 8 18 23 8 20 13 6 5 10 13 24 16 4 16 15 16 7 7 23 14 16 22 10 29 18 17 6 1 10 22 17 15 18 23 18 23 9 2 9 20 21 7 11 9 20 14 9 18 9 1 6 13 1 19 14 22 12 20 28 13 6 21 23 18 12 2 17 9 10 13 2 29 18 1 19 22 29 19 21 6 3 4 2 1 20 5 14 8 14 2 3 27 10 29 20 20 8 23 3 24 23 19 13 5 10 21 6 19 20 21 9 5 15 26 9 3 2 18 16 4 15 29 9 25 21 5 8 18 11 3 22 6 25 15 24 4 12 2 29 22 20 24 11 25 16 14 5 11 27 25 12 16 21 22 19 1 12 4 9 6 26 7 2 30 10 25 7 30 19 20 30 27 5 28 14 10 26 7 30 15 14 3 24 24 20 8 27 28 26 20 19 28 28 2 1 7 22 6 22 14 16 4 10 27 16 15 13 17 2 9 20 1 21 6 19 29 29 3 26 22 9 4 20 5 22 17 19 23 23 17 2 24 6 11 3 7 14 22 16 23 2 7 6 28 7 18 17 6 22 26 26 5 10 29 21 6 29 2 21 28 16 6 24 6 20 13 14 1 4 6 8 28 5 18 1 26 30 27 4 27 5 24 3 6 5 15 6 7 10 27 16 19 23 2 4 1 2 1 10 25 15 10 21 18 18 26 19 25 19 4 13 2 10 21 9 7 15 27 2 12 25 12 14 26 30 18 17 19 19 4 28 3 15 26 1 25 12 3 3 18 17 3 24 11 20 2 24 23 24 27 2 14 17 20 20 9 24 6 19 3 2 18 29 13 25 23 6 1 2 30 15 22 21 18 23 20 23 4 1 24 15 6 26 5 10 28 24 8 15 8 14 21 10 20 13 10 13 27 24 9 5 24 25 11 22 20 2 19 4 9 3 12 3 13 4 9 18 15 22 22 26 21 8 9 20 11 13 9 10 15 5 18 22 12 1 11 12 30 11 18 3 2 20 26 24 22 7 22 10 23 30 20 8 10 9 6 18 11 15 28 30 10 23 6 3 7 1 27 10 24 9 15 5 8 7 12 3 22 4 1 9 8 18 27 22 8 6 6 1 7 5 15 4 18 26 25 15 19 27 15 9 8 3 22 29 25 16 17 6 30 13 27 15 5 15 10 19 29 9 18 1 15 27 5 1 2 16 25 3 16 13 11 14 3 5 17 22 17 23 29 12 18 29 2 4 27 1 22 17 1 3 2 17 22 25 18 12 16 6 15 26 7 4 11 10 20 2 13 11 11 16 6 21 24 20 30 9 24 17 26 3 30 29 14 7 5 17 30 8 17 24 16 29 25 4 14 26 10 24 29 20 22 13 5 10 13 2 7 14 17 12 29 4 22 13 1 14 16 5 10 13 12 28 10 5 24 3 13 25 28 19 7 30 1 6 26 18 6 7 10 28 29 28 28 15 9 15 15 19 10 3 28 4 15 12 19 27 15 17 18 28 24 27 27 19 12 26 7 8 10 9 20 22 19 27 25 10 3 19 12 5 5 9 9 20 19 6 13 29 3 10 7 22 6 24 24 16 22 7 25 19 16 8 27 13 23 3 20 25 30 29 15 7 10 6 27 2 5 8 15 30 26 2 8 29 29 2 8 15 18 14 22 23 6 12 29 24 15 20 8 24 6 4 22 25 18 16 8 27 1 22 6 24 7 7 8 4 16 16 13 21 24 4 16 13 22 26 18 28 30 17 15 5 8 9 13 16 27 5 13 28 20 15 21 5 19 12 16 2 6 16 6 21 5 27 10 5 17 8 1 4 17 21 9 3 25 18 17 26 2 29 24 24 18 15 1 16 20 3 22 22 25 9 9 15 5 9 20 26 22 19 4 8 25 16 1 16 28 18 10 1 28 28 7 30 8 8 1 14 17 1 14 29 13 26 28 26 18 5 19 2 3 10 21 3 8 19 8 3 11 7 15 6 7 18 27 13 5 28 12 7 24 30 14 2 12 1 12 16 27 16 19 18 7 13 19 24 15 8 22 14 5 15 20 4 18 25 1 5 11 5 11 25 26 9 28 18 24 16 1 26 26 8 18 17 19 14 18 12 28 13 24 5 16 22 3 25 28 18 5 23 27 29 1 19 4 16 19 19 17 1 12 26 15 16 21 3 17 27 9 10 20 16 29 23 22 2 29 13 1 25 9 4 8 4 16 19 24 21 26 14 1 4 7 3 4 8 8 15 2 12 24 11 24 21 14 25 7 8 28 1 24 28 3 17 4 10 30 20 1 25 23 21 28 6 12 26 30 24 30 19 1 26 17 30 18 1 5 1 28 16 21 2 13 7 3 23 23 24 3 22 3 8 6 6 12 27 4 30 10 14 11 20 28 1 29 30 5 22 17 9 29 23 16 4 11 22 16 1 3 14 2 1 21 19 10 30 12 1 7 24 11 22 25 22 5 21 4 18 21 23 28 20 14 28 21 26 13 21 1 2 22 23 20 30 2 1 19 24 21 20 7 19 29 10 13 28 5 16 5 12 1 3 24 26 10 13 23 21 1 8 28 29 10 26 21 4 16 4 19 4 30 6 21 2 18 12 9 21 23 22 10 17 16 22 14 26 18 20 4 30 8 17 21 5 1 13 23 27 18 6 17 4 7 11 2 15 27 30 7 20 10 9 25 30 6 16 4 13 10 29 20 14 26 21 14 2 25 4 8 21 1 17 3 29 10 7 23 21 7 29 20 8 13 3 21 12 28 13 12 24 3 10 2 1 22 2 22 17 26 16 17 27 23 11 30 23 22 4 5 19 12 21 16 5 18 16 30 28 5 5 7 8 4 8 10 17 9 21 8 11 28 25 6 5 17 10 16 27 30 8 11 10 9 6 3 16 3 18 10 1 21 24 27 10 5 10 14 25 3 7 28 19 29 24 25 16 16 30 9 23 8 27 4 15 19 8 2 1 7 12 10 4 15 22 20 9 20 16 1 7 3 14 16 2 23 9 17 7 18 22 26 3 19 4 23 29 22 23 17 27 13 14 21 15 8 28 25 7 18 9 18 30 30 30 8 26 1 15 5 17 12 28 29 7 26 9 19 13 17 27 11 10 5 1 28 15 12 4 24 11 26 21 11 17 20 16 22 22 22 18 25 1 9 12 6 11 16 6 28 1 19 6 22 23 12 28 6 13 25 14 4 2 19 18 14 13 18 21 21 18 23 28 27 7 17 4 10 14 17 1 10 20 10 15 6 21 15 28 12 14 6 2 5 25 30 22 27 9 17 21 20 7 30 3 10 18 10 10 5 5 1 30 17 23 13 28 10 26 10 20 3 19 26 6 29 9 9 25 4 28 23 9 21 11 3 9 4 8 3 12 7 7 11 14 12 15 7 22 10 21 10 6 26 11 20 12 27 15 26 16 13 9 28 1 18 21 27 3 9 30 19 28 25 26 8 20 20 9 28 29 23 6 16 1 20 15 26 10 29 24 8 13 14 14 29 3 16 8 7 7 5 28 13 14 21 7 11 22 21 4 2 30 7 12 30 23 21 6 16 5 25 1 16 1 2 10 25 27 27 1 27 12 9 9 5 23 12 3 2 1 5 13 10 15 10 17 8 3 29 17 30 13 8 9 4 13 26 16 11 23 27 1 28 3 18 16 17 21 7 5 8 23 30 27 13 1 21 20 27 17 30 2 27 5 1 30 25 13 3 7 6 23 23 2 25 10 8 18 25 5 13 14 7 22 4 23 8 10 26 30 18 22 25 8 23 4 24 13 10 1 7 2 26 27 25 25 2 1 15 14 15 8 24 22 12 30 10 9 13 11 15 10 4 30 12 20 14 6 11 1 1 21 10 14 15 18 2 21 4 16 25 20 9 6 11 28 14 23 27 4 2 2 5 7 4 26 1 3 9 23 6 27 27 9 19 18 26 6 22 19 28 13 15 3 1 15 1 10 15 15 21 11 25 24 20 15 2 2 28 18 8 4 29 28 1 14 17 5 22 24 17 21 26 1 5 26 23 16 14 15 30 25 2 19 12 9 26 19 24 29 19 30 12 30 5 1 9 27 9 11 9 29 4 1 19 6 19 26 1 27 26 29 27 9 13 9 21 19 4 29 23 1 11 10 4 19 9 11 2 6 21 3 4 26 25 11 24 27 18 28 20 11 6 21 7 12 8 16 6 20 14 10 8 1 5 8 6 20 23 26 10 28 7 25 10 12 30 1 21 6 7 1 19 22 24 2 11 13 1 21 19 18 7 10 19 7 12 15 1 27 3 27 22 9 29 3 11 21 18 12 20 14 10 8 13 27 12 18 29 28 1 8 22 14 25 8 7 25 14 8 30 12 15 29 21 9 5 30 4 10 2 24 16 25 19 2 14 8 27 10 6 19 18 16 23 1 6 7 1 29 1 16 24 19 10 13 9 8 28 19 8 14 22 24 8 26 8 18 14 27 28 10 19 29 1 23 8 25 23 11 9 23 8 24 13 8 5 24 21 11 21 20 25 27 2 30 27 9 15 2 10 2 30 21 26 7 2 11 23 7 10 29 2 8 23 1 25 21 28 7 20 22 15 26 13 14 14 10 11 17 30 3 29 7 21 23 22 3 17 15 9 25 26 5 15 19 30 30 23 6 23 7 16 14 13 5 19 15 8 18 13 18 15 6 14 11 11 11 30 22 9 12 3 29 17 26 24 20 24 23 24 18 28 8 23 27 27 6 14 16 27 28 6 15 28 22 27 22 24 18 20 12 16 30 25 19 13 28 19 4 17 29 13 1 26 1 23 30 23 27 5 1 24 15 4 8 19 30 11 13 10 9 30 21 1 29 22 15 7 8 27 21 28 22 4 28 29 30 24 21 1 25 23 20 23 12 10 5 2 11 19 7 2 19 29 23 6 10 5 7 25 15 7 9 19 1 19 12 29 14 16 4 18 7 20 18 8 18 20 18 17 28 7 16 22 5 8 18 19 9 24 6 17 24 14 14 18 22 28 21 17 13 23 3 25 6 10 9 21 7 29 13 26 16 20 16 14 2 10 14 15 25 30 18 10 2 5 24 12 16 25 11 18 26 29 4 30 7 28 10 9 28 24 8 10 25 18 16 18 14 16 23 16 13 17 14 18 23 26 22 3 10 26 17 4 24 14 30 15 6 19 12 3 20 13 3 4 4 9 23 1 30 30 27 22 26 12 7 3 30 3 28 1 4 16 26 1 1 7 23 5 10 7 3 21 10 4 27 17 17 20 9 15 3 10 21 11 3 6 29 24 15 27 23 25 1 2 20 28 2 7 10 8 23 5 3 27 27 20 24 5 26 27 15 22 26 27 27 8 13 9 24 3 21 29 26 7 17 5 14 3 13 27 15 28 25 28 10 27 17 22 28 8 24 8 7 29 16 6 28 2 11 20 21 7 18 15 19 27 19 29 14 20 21 27 1 9 17 26 4 25 23 9 1 5 26 7 17 9 22 1 17 5 7 24 25 14 25 6 4 26 1 29 2 23 6 11 10 22 4 22 4 28 21 30 5 4 28 1 23 18 13 13 30 23 14 3 20 26 5 7 27 27 12 5 4 25 21 6 18 8 18 9 5 13 4 7 28 23 13 3 1 22 17 3 13 18 6 10 1 22 10 6 20 20 9 10 22 18 9 7 18 11 1 29 19 6 24 26 24 25 7 9 15 4 17 15 15 5 29 23 6 8 1 30 17 29 19 19 10 10 9 17 12 11 12 24 7 15 12 24 1 17 11 2 23 10 20 18 6 17 24 21 27 1 30 28 22 16 23 16 4 1 2 29 27 2 15 27 13 15 21 2 14 11 29 15 11 30 17 1 17 4 24 17 2 11 16 10 30 15 11 6 9 5 14 29 11 17 23 7 27 26 20 14 29 15 22 20 1 16 15 6 2 8 9 3 25 12 11 23 17 4 30 29 3 23 16 9 19 26 8 19 7 16 4 17 9 13 19 20 22 27 5 21 26 19 9 30 16 15 22 13 5 23 4 2 25 16 20 30 29 9 16 30 22 30 17 18 23 23 28 7 16 10 18 5 23 6 23 26 27 6 6 5 20 21 26 14 16 5 8 15 5 13 2 26 26 10 30 24 5 8 30 22 9 21 23 27 3 23 7 6 20 27 8 18 28 7 28 17 16 6 19 6 5 15 13 3 24 15 22 3 23 19 11 2 15 8 13 6 16 10 2 7 16 13 15 30 21 18 13 26 15 11 22 2 3 19 21 14 6 1 16 29 24 30 8 23 12 13 12 24 11 30 2 20 23 18 20 22 15 6 26 28 14 1 27 5 10 3 10 8 5 20 28 9 23 19 15 22 3 17 11 24 2 26 23 29 7 16 19 22 15 22 11 21 12 2 24 14 26 26 23 27 27 13 10 30 28 5 7 6 29 5 5 17 2 20 27 8 18 2 11 27 1 24 5 30 17 26 18 6 6 10 8 14 28 16 6 13 28 16 17 7 2 13 9 11 17 16 20 9 12 14 22 16 20 4 12 20 18 18 28 15 22 7 20 24 18 15 12 20 3 28 12 9 19 21 18 3 4 15 13 24 13 3 10 7 7 11 11 21 9 2 24 4 5 3 16 27 3 25 15 1 15 10 27 21 10 29 17 13 23 25 27 15 3 11 14 3 2 11 22 21 14 21 1 12 29 5 15 26 20 29 19 25 10 24 7 24 25 27 17 8 22 4 14 11 19 6 15 3 21 10 8 19 25 5 19 30 14 10 4 4 25 21 25 3 18 26 9 11 20 2 12 13 6 14 23 17 15 23 9 23 19 22 12 8 2 14 24 28 25 22 10 21 29 9 29 2 3 27 17 15 19 29 3 8 6 30 22 8 18 12 4 4 5 30 5 1 9 17 14 26 30 15 28 15 2 19 29 29 8 17 4 26 28 16 16 3 28 6 19 16 18 16 7 25 17 7 16 27 10 10 18 1 30 19 4 1 27 1 18 14 15 23 9 8 16 17 24 29 17 22 2 10 8 27 12 18 16 23 17 14 21 16 4 24 21 17 21 26 8 6 25 23 3 23 27 20 29 9 15 20 3 26 15 26 26 7 2 26 26 14 21 28 3 5 3 1 24 4 12 7 12 9 30 9 21 9 23 15 2 28 15 18 26 22 13 2 3 1 2 29 7 22 8 12 20 23 7 19 15 13 8 27 5 4 7 27 5 28 22 19 26 14 10 25 16 27 2 12 17 21 3 18 9 30 24 29 8 27 7 27 28 15 2 8 14 13 7 21 1 8 19 9 15 20 15 30 17 28 2 13 19 1 16 16 4 23 16 27 27 15 12 11 19 9 11 2 3 10 12 24 17 12 4 24 27 28 16 2 23 10 9 17 25 6 24 19 24 10 25 3 11 13 21 4 20 16 28 14 11 10 11 29 21 24 8 30 26 1 25 11 8 23 10 10 20 20 24 28 29 6 6 14 24 12 13 5 30 11 19 3 12 6 25 8 26 4 21 22 22 15 18 25 22 23 18 5 30 5 15 29 11 24 22 18 18 20 25 14 15 11 21 17 3 24 29 21 1 5 17 17 28 20 20 10 14 17 20 15 15 20 17 15 11 7 15 19 18 23 22 30 16 10 30 23 19 20 22 1 26 21 29 21 12 11 8 18 22 25 7 20 13 17 13 7 15 28 23 4 24 22 20 13 5 26 3 6 29 8 10 22 30 24 18 22 21 2 7 2 21 11 5 11 26 3 10 11 9 26 29 21 20 29 4 30 5 11 12 14 2 6 6 28 27 17 18 17 7 11 10 5 26 10 10 19 7 16 13 4 21 17 27 30 18 9 14 30 20 22 4 2 20 15 8 19 27 28 9 8 29 9 21 20 8 6 7 18 19 28 15 27 11 17 20 27 14 24 16 19 26 28 16 1 26 26 17 20 18 17 30 3 25 12 8 18 6 20 22 30 22 10 21 16 19 13 3 17 24 16 1 14 2 7 18 23 22 5 17 13 7 7 1 4 24 6 8 13 20 2 8 6 1 14 2 14 1 3 11 30 26 4 28 17 16 21 23 24 8 28 7 1 22 20 11 4 18 16 5 23 19 12 8 4 8 11 18 14 26 13 9 3 18 18 15 23 7 4 3 1 28 2 10 9 22 13 12 9 10 2 4 18 12 9 13 2 19 27 30 18 14 20 3 25 4 2 24 17 11 19 17 19 12 7 25 24 19 20 6 20 14 13 6 1 5 27 6 20 30 20 17 29 9 16 2 9 17 25 22 22 1 27 15 7 22 27 1 22 28 7 24 10 7 13 16 29 3 12 25 13 13 17 16 24 11 24 12 3 19 12 5 14 9 4 10 5 30 23 14 21 19 9 25 9 13 6 5 21 22 7 29 21 6 10 6 17 22 18 23 3 26 22 28 23 27 10 13 10 28 5 11 5 4 18 5 20 28 19 3 25 28 5 26 21 24 13 2 30 2 14 16 13 18 8 6 17 1 7 23 7 14 18 30 8 26 11 24 10 6 30 17 19 11 16 23 6 17 27 13 10 25 3 28 15 23 17 16 14 11 21 29 20 15 24 15 8 16 14 7 25 15 28 25 28 24 4 6 19 4 24 18 14 17 13 10 21 19 16 27 20 30 1 1 28 17 1 9 24 16 27 8 10 5 11 20 13 7 11 2 6 18 30 12 16 4 6 29 7 22 12 12 22 12 20 24 29 30 18 17 1 7 17 16 24 12 7 4 19 25 27 14 17 11 26 11 29 15 11 1 17 15 20 22 17 19 16 25 10 28 19 9 16 3 12 20 17 5 15 14 28 25 19 26 28 29 12 24 24 18 10 28 27 10 30 9 6 8 3 21 26 3 22 25 27 20 18 25 10 30 15 15 10 21 18 17 17 7 29 2 28 16 11 21 14 9 20 22 27 9 18 14 17 9 26 30 15 16 27 12 12 9 15 1 7 25 18 23 20 6 29 14 25 22 27 22 3 14 4 8 6 21 27 10 2 12 14 20 24 19 24 3 19 14 26 2 29 17 13 11 22 22 2 19 11 19 1 2 15 1 7 24 4 25 8 9 29 3 19 4 5 29 4 23 1 25 29 23 28 7 29 25 20 30 29 26 15 22 3 12 6 28 2 17 4 1 12 23 5 10 30 8 23 18 9 18 29 20 25 4 14 9 17 8 11 28 14 2 30 13 15 16 10 1 17 22 13 16 5 25 21 23 10 30 26 28 27 9 4 5 2 24 25 29 14 13 13 4 17 3 9 27 3 10 6 12 18 24 28 26 9 13 27 22 12 25 27 5 11 10 25 8 22 24 27 12 26 21 16 12 11 2 10 17 5 29 3 17 13 28 1 20 23 26 16 7 5 30 16 18 7 10 28 26 19 1 11 18 9 3 29 22 29 26 2 25 17 25 23 7 23 14 18 2 4 18 19 30 8 17 14 1 21 2 29 5 11 2 8 27 17 23 9 10 25 26 18 24 1 9 15 8 22 7 16 25 22 15 4 29 9 6 24 28 18 21 24 22 23 24 9 29 7 14 17 26 11 7 24 20 13 24 6 23 10 3 4 2 27 14 2 22 14 2 4 15 16 8 3 16 17 2 12 16 15 26 24 26 11 26 8 21 25 28 26 3 22 16 6 26 17 6 2 12 19 25 25 18 11 21 6 20 5 9 15 4 29 16 28 21 9 28 3 24 21 15 4 13 9 15 17 20 11 3 2 19 3 26 20 2 30 15 1 21 11 11 23 27 4 12 7 15 30 18 2 17 18 9 13 28 3 25 5 24 11 17 7 6 3 12 21 10 20 5 24 29 26 19 9 15 22 7 26 8 9 17 22 7 27 18 17 16 22 16 25 25 23 11 3 8 16 2 21 22 11 6 27 5 26 24 21 7 24 8 16 16 20 15 1 12 8 1 15 16 25 11 28 13 20 27 19 3 3 3 26 17 27 11 9 20 3 29 10 11 13 25 25 29 29 25 15 21 25 11 6 28 20 18 30 9 12 4 24 17 3 12 7 23 10 13 17 28 24 11 29 3 16 10 6 29 29 24 18 8 3 24 16 21 19 18 4 17 2 23 14 3 19 14 13 24 16 27 18 14 10 19 26 11 21 28 20 10 20 25 28 21 10 1 29 23 18 19 1 10 28 1 25 10 20 1 20 14 26 18 20 16 9 22 26 7 18 9 3 5 26 5 15 30 10 30 26 15 30 30 8 17 4 27 30 22 29 30 17 27 17 9 27 10 25 18 26 23 17 10 15 2 4 23 5 27 13 9 26 28 3 2 29 30 21 26 27 2 26 12 1 1 11 18 16 8 3 20 26 21 24 22 7 16 20 26 22 3 22 10 8 16 11 18 20 14 13 27 6 18 27 6 26 4 16 14 18 29 11 4 17 8 5 20 14 19 2 22 18 3 28 12 27 30 10 15 22 27 19 10 11 24 7 5 28 17 4 24 18 27 3 8 18 8 14 3 1 30 9 10 24 11 29 5 15 22 6 3 12 24 7 2 17 24 16 30 9 28 22 11 6 17 5 7 11 2 26 6 1 23 4 21 5 16 11 8 12 3 30 29 12 5 25 14 5 6 22 16 13 14 15 24 26 5 16 10 23 6 8 6 22 1 11 2 28 18 4 27 17 9 21 21 1 27 20 21 23 2 2 15 12 8 11 26 2 10 21 7 2 27 6 2 6 8 24 22 25 5 25 27 29 25 14 23 6 29 14 20 21 4 26 20 20 5 24 30 3 18 8 6 13 1 18 24 28 13 25 6 10 11 25 15 8 12 19 12 25 18 23 24 11 3 11 17 5 16 2 7 4 1 15 8 25 9 17 17 21 6 10 9 28 6 2 16 29 3 12 19 27 3 10 8 28 1 9 24 11 7 12 1 16 24 10 13 18 11 13 6 5 14 30 16 30 21 28 1 11 21 4 29 29 28 11 8 30 9 6 24 28 1 22 19 18 24 2 14 13 18 2 10 11 21 24 22 15 28 21 3 20 30 29 5 13 16 28 13 7 6 3 8 6 9 18 23 26 5 8 12 10 18 3 10 18 29 2 29 21 4 10 15 5 5 1 25 4 21 30 23 6 4 12 20 25 25 29 23 6 20 19 30 8 4 24 3 18 4 16 16 2 24 29 19 14 25 15 11 26 8 1 13 30 25 13 10 20 26 22 2 6 17 12 25 12 4 3 16 6 12 3 16 12 6 26 30 4 12 13 14 22 29 16 29 19 26 13 19 16 30 7 23 14 16 20 28 4 16 9 17 1 2 19 8 21 24 6 30 20 3 22 18 5 9 25 30 13 30 9 27 6 21 4 26 27 21 18 4 11 20 30 9 3 11 2 11 9 30 5 15 10 28 26 4 15 3 22 25 11 9 28 21 28 5 10 28 30 12 21 22 28 10 15 29 17 3 3 4 22 4 20 24 27 9 1 17 19 21 12 20 29 28 13 27 22 30 5 21 9 27 16 18 13 16 16 28 18 27 24 22 20 30 1 2 16 19 30 25 9 18 7 8 9 23 17 5 3 11 1 2 24 20 15 7 21 28 21 21 8 3 19 23 11 10 30 13 13 12 3 26 28 2 20 17 29 12 11 30 22 12 4 9 25 11 20 1 7 7 1 11 15 23 29 2 8 25 20 21 30 5 25 29 13 16 15 20 22 3 16 5 1 20 19 7 15 27 22 26 17 27 16 15 18 5 27 10 8 3 27 11 13 4 22 16 13 2 22 1 3 18 29 14 13 24 3 13 2 22 13 1 13 2 8 14 12 15 27 4 8 22 10 15 30 22 10 10 22 21 6 7 24 17 30 9 9 20 2 17 26 5 23 13 10 18 24 9 12 11 11 5 4 6 7 2 19 15 28 18 22 2 23 15 9 27 25 3 29 24 20 18 4 5 7 14 13 15 24 28 4 28 3 2 6 23 16 13 26 1 14 10 7 22 3 13 18 10 18 8 10 6 7 30 13 2 7 13 13 17 20 4 3 4 9 30 17 9 30 9 7 30 24 10 29 4 25 29 30 5 18 21 27 2 28 24 19 30 16 8 21 12 11 10 22 30 10 4 8 6 15 25 30 28 27 10 8 26 1 2 7 19 16 3 14 17 1 14 9 14 28 5 11 6 26 3 7 7 23 5 18 7 3 22 15 4 1 10 9 15 27 28 3 16 25 11 2 7 14 23 30 13 23 5 23 30 1 4 17 11 24 1 15 20 5 5 2 6 6 27 3 21 16 6 23 2 6 14 28 11 24 6 6 11 10 8 16 2 4 22 16 24 25 27 15 26 28 12 1 3 29 25 25 28 7 19 22 5 20 17 8 13 10 24 29 3 11 26 5 26 24 12 18 15 3 8 10 18 19 2 7 19 22 27 19 15 14 20 18 5 10 5 30 12 30 10 8 21 30 5 14 16 21 6 2 27 26 1 18 16 14 13 5 5 2 27 5 19 17 8 25 5 13 22 3 24 4 25 24 13 22 2 14 6 1 11 2 6 28 21 1 26 15 29 26 9 23 21 2 27 18 20 16 24 14 21 28 2 29 18 30 7 3 7 26 12 16 29 24 29 4 7 15 13 26 27 8 25 21 24 13 4 15 19 3 20 1 17 12 24 29 29 9 15 19 5 4 26 13 10 4 22 26 12 2 6 11 22 11 2 29 11 3 20 17 18 30 30 20 9 1 17 28 5 23 17 5 10 29 17 3 7 23 15 16 20 26 23 15 14 18 10 17 20 24 27 19 5 5 16 30 28 30 13 12 3 10 16 27 27 15 3 19 23 30 28 3 8 6 7 20 17 12 18 19 9 5 18 3 29 23 12 7 13 8 3 6 8 9 24 20 27 21 1 18 8 6 5 16 15 11 24 12 26 25 12 22 27 11 23 3 26 12 6 1 3 13 29 15 17 15 10 24 15 10 5 1 30 19 8 13 2 4 6 21 3 26 17 11 10 20 2 10 26 15 15 27 28 14 27 8 15 6 1 5 22 2 30 3 4 11 23 10 2 29 23 4 9 30 23 29 5 23 19 2 14 17 15 5 13 25 13 18 1 7 27 28 18 28 4 1 30 5 18 19 6 18 5 19 23 11 14 15 25 18 16 17 15 23 19 24 4 9 3 4 13 15 16 3 10 23 8 28 21 8 22 28 17 8 18 30 24 22 6 16 13 9 9 18 23 15 17 16 5 14 17 11 18 24 24 9 20 1 2 18 10 18 5 14 28 18 4 30 5 4 19 13 26 17 4 10 8 6 4 5 21 11 7 10 26 9 13 22 21 8 19 21 16 6 17 20 26 1 3 16 7 9 28 29 23 30 30 28 19 21 16 6 5 23 6 14 21 21 8 2 5 22 11 2 28 11 2 4 13 19 30 14 1 30 24 19 25 26 5 30 12 9 17 25 30 26 6 13 18 10 17 8 25 10 15 23 13 25 28 26 28 3 29 16 29 26 13 17 6 17 23 24 28 21 17 26 5 21 23 27 26 12 18 28 24 30 29 6 20 13 7 29 22 20 6 11 30 27 12 17 9 18 14 26 8 3 14 8 12 27 15 3 1 14 8 2 9 12 13 28 17 24 19 11 18 6 29 3 25 13 21 3 17 16 8 14 1 1 1 30 9 21 10 18 17 19 7 1 21 13 23 9 7 6 25 14 21 13 10 12 29 13 18 22 5 24 23 22 2 23 30 27 16 27 8 7 3 14 11 14 2 20 15 26 12 8 25 21 10 6 23 13 19 28 23 17 10 12 25 30 8 24 8 18 18 29 3 2 19 22 18 4 13 29 20 3 14 13 8 4 26 12 20 2 2 25 24 16 29 8 28 20 6 9 25 18 14 28 15 29 22 5 21 27 13 26 3 4 18 23 24 23 29 17 28 7 23 19 2 23 3 11 4 8 2 7 6 28 19 29 13 6 28 17 2 9 3 14 24 6 9 14 6 21 28 19 17 9 15 20 23 16 19 24 16 23 27 28 5 17 26 22 19 13 5 25 9 28 2 14 16 25 7 1 14 1 14 14 11 12 1 4 26 30 10 7 8 20 14 26 15 4 21 20 14 30 18 22 23 18 13 5 3 2 2 3 3 7 4 30 21 6 5 4 2 3 14 1 4 10 16 26 16 7 24 26 27 11 30 2 26 21 25 30 5 1 3 5 27 13 27 10 25 10 26 1 27 23 6 15 12 3 26 23 13 24 10 6 18 4 3 4 4 19 3 5 22 10 30 29 15 21 26 25 9 3 7 25 21 15 3 13 30 26 9 4 22 7 7 1 13 23 1 27 11 2 12 2 2 12 16 23 13 15 22 23 3 23 23 13 20 18 4 20 2 19 10 7 22 17 26 12 23 19 27 17 15 18 26 12 1 13 19 3 6 20 12 8 6 12 17 30 24 12 18 13 22 2 11 18 25 15 28 17 23 27 19 5 15 27 26 30 4 29 27 15 20 1 17 2 18 18 4 18 20 15 23 6 23 14 25 9 28 30 18 3 15 4 8 8 10 13 3 15 23 8 30 9 23 2 13 20 4 14 11 28 17 3 11 14 11 27 4 4 28 29 25 13 24 10 1 18 14 20 28 13 25 19 22 9 15 19 27 24 10 8 24 6 3 18 23 19 8 13 25 29 2 21 2 17 24 11 7 30 30 3 2 4 15 29 10 27 20 7 6 4 29 12 16 3 13 28 29 6 8 30 2 4 9 17 8 5 15 16 11 3 22 17 12 20 27 28 27 13 7 4 23 13 2 27 4 8 7 23 24 14 7 29 11 9 3 24 27 28 29 9 23 13 20 6 19 21 13 14 13 1 23 4 3 16 27 25 7 25 3 23 9 3 27 25 10 10 25 19 12 23 24 10 20 26 8 4 7 9 25 17 21 27 14 2 19 25 6 7 20 21 25 20 17 6 8 18 26 18 9 28 24 1 6 18 4 19 28 8 11 28 27 6 1 27 17 10 20 6 20 16 10 27 13 22 27 17 20 10 25 6 23 21 24 17 14 4 22 9 22 26 29 6 2 22 23 22 24 10 12 30 25 5 2 15 18 29 20 1 15 25 17 5 13 11 5 13 26 16 10 16 22 20 3 25 28 23 20 21 11 23 2 1 16 16 1 1 28 17 14 11 2 14 23 7 29 10 4 21 25 19 27 27 13 8 26 14 3 13 11 4 4 4 29 9 9 12 18 3 16 17 26 10 25 21 23 30 29 2 22 28 26 8 4 29 29 27 3 14 8 20 20 12 5 23 2 4 25 16 7 2 29 6 22 18 22 20 8 19 29 16 7 25 29 20 30 23 30 16 22 20 9 27 20 14 22 28 28 29 22 24 7 30 19 19 21 21 19 4 19 27 29 24 4 12 24 9 22 25 16 9 15 26 8 14 27 26 18 9 24 25 4 8 11 7 8 12 5 9 26 18 18 21 19 19 7 26 15 4 10 11 5 6 21 4 1 3 19 19 17 22 23 18 15 11 6 10 12 23 29 30 29 6 29 13 4 7 18 12 26 23 7 21 1 13 18 1 19 27 9 27 24 28 24 30 28 1 23 1 13 25 16 8 4 22 17 23 30 12 22 4 6 22 22 19 26 1 5 30 4 29 28 21 26 18 16 21 21 22 27 19 24 6 8 20 2 3 14 11 1 27 30 22 27 6 16 29 21 25 6 2 4 9 23 4 21 10 23 16 1 29 5 25 14 16 24 25 9 15 21 29 5 20 27 3 12 9 14 30 25 30 9 3 20 23 3 4 9 4 8 3 21 17 13 17 25 30 8 24 21 20 19 15 18 23 2 9 17 15 21 29 2 9 28 11 12 13 20 24 23 11 12 30 7 4 28 24 30 4 27 25 6 26 25 21 4 5 17 18 21 23 4 19 1 3 5 8 8 23 22 23 20 5 22 24 17 2 19 5 15 11 19 22 24 10 20 3 27 9 28 26 22 21 28 4 12 15 25 26 26 25 12 1 24 22 27 8 3 23 23 17 16 27 11 8 25 29 29 21 18 8 19 10 28 23 30 14 21 2 29 3 22 9 20 23 12 29 28 12 21 21 17 24 1 6 2 4 13 27 11 30 5 7 19 30 4 12 2 30 22 17 20 30 19 23 3 3 10 22 30 7 20 3 8 8 4 23 5 9 2 16 21 13 30 5 26 11 12 14 7 5 30 28 24 28 28 7 30 6 30 29 29 19 27 16 11 30 27 28 27 19 16 18 5 29 5 3 14 18 7 12 8 16 25 29 4 4 19 11 28 27 28 17 20 5 14 10 28 17 3 14 8 18 6 16 24 20 14 30 17 20 14 6 24 21 12 19 25 4 29 6 22 16 12 3 8 12 4 3 4 6 20 19 13 10 6 6 2 8 11 1 30 5 3 18 18 22 30 12 6 21 8 23 16 20 2 9 26 16 9 1 1 19 8 29 12 12 2 26 11 2 16 30 13 1 3 13 17 7 3 8 12 15 28 14 25 17 26 17 5 12 27 23 20 18 7 1 29 12 10 5 3 21 25 11 23 4 7 23 30 10 12 30 1 17 21 19 1 24 18 13 8 11 22 2 19 25 10 23 1 26 20 14 26 6 3 16 6 14 24 29 24 5 10 22 14 14 11 29 29 16 3 19 4 7 4 23 11 12 12 15 29 18 22 1 13 25 16 30 25 13 11 1 17 4 14 16 25 20 24 20 25 2 1 8 12 3 15 17 23 25 16 1 29 19 26 24 27 12 11 8 27 8 14 25 12 21 1 25 9 8 21 30 26 14 26 19 23 20 4 5 25 19 25 22 9 29 19 16 9 21 15 15 9 8 18 20 13 8 17 2 16 26 24 14 25 24 20 14 13 30 23 28 6 23 29 7 24 30 21 17 23 24 30 4 22 12 25 24 18 17 29 23 27 25 20 6 16 26 17 11 9 16 1 23 10 6 27 16 21 22 24 15 16 9 6 14 19 4 25 25 14 18 3 12 19 28 30 8 20 2 15 11 26 30 21 5 6 2 3 25 4 24 8 6 1 24 16 18 7 21 18 18 8 25 23 3 26 13 14 3 9 14 30 14 1 25 21 12 10 18 7 27 24 27 21 17 23 29 5 1 30 13 28 9 18 23 7 19 1 27 12 27 14 21 5 14 3 28 5 8 25 2 19 10 26 9 9 11 13 4 1 14 19 25 13 2 13 9 21 30 24 23 18 11 23 24 18 28 21 5 8 2 24 7 19 6 9 29 18 10 25 22 27 9 11 28 17 28 3 25 17 16 28 15 2 25 19 16 2 24 12 13 5 22 4 8 13 4 16 4 28 16 26 8 9 16 13 12 10 5 5 15 5 16 11 2 23 17 15 11 3 28 20 30 22 4 28 11 23 26 25 20 21 23 10 11 21 10 18 8 2 16 7 15 9 6 16 3 23 28 18 4 18 17 14 1 2 15 4 29 16 24 24 16 28 12 22 7 29 11 25 18 14 21 16 2 22 11 6 22 6 10 17 27 21 28 3 15 3 25 1 12 22 29 24 16 11 26 12 20 29 25 21 21 20 22 15 24 24 19 2 11 16 13 6 22 23 3 16 28 25 11 25 19 6 12 7 19 20 12 15 27 15 21 28 24 2 4 12 29 6 26 27 25 9 28 26 7 22 18 18 3 26 23 13 27 13 16 12 16 7 19 20 5 17 9 9 11 28 17 4 28 15 21 20 21 11 26 3 17 3 3 8 29 10 17 9 10 23 2 14 5 26 14 10 19 18 4 10 27 16 25 7 2 5 12 20 16 26 2 26 16 8 14 11 21 21 28 30 29 12 17 24 29 11 12 20 21 28 20 18 17 25 27 12 5 22 4 19 17 10 1 21 24 26 12 20 7 23 2 17 3 3 20 9 9 20 16 12 23 28 13 27 15 26 28 21 12 9 9 10 2 9 22 15 4 27 26 30 7 13 29 26 12 25 26 26 23 22 23 19 15 19 14 9 12 11 8 1 21 21 3 24 23 6 16 19 11 27 28 13 10 9 18 12 21 18 20 20 29 25 17 19 27 21 5 24 24 15 3 23 7 16 15 2 19 27 26 16 29 8 18 30 3 20 25 1 3 9 14 11 22 3 12 10 19 18 12 9 4 2 3 10 11 1 25 21 17 7 15 1 23 28 15 2 4 19 6 10 18 22 2 18 4 14 7 5 21 5 10 18 27 20 8 25 13 18 25 14 29 9 7 26 4 14 9 20 8 8 4 29 24 29 12 18 11 20 28 5 11 5 28 23 13 29 11 7 2 19 20 6 8 29 4 18 18 17 4 21 30 3 8 5 20 28 17 8 29 9 23 15 27 12 17 22 7 15 7 19 1 14 14 7 9 23 24 30 23 9 21 14 18 26 4 27 21 11 12 17 5 15 13 28 16 1 11 22 2 16 14 17 27 11 27 18 26 30 18 27 12 9 10 18 25 29 12 28 18 10 3 6 11 22 2 22 29 6 8 21 26 30 22 18 18 16 28 20 18 29 15 2 9 27 7 15 18 9 6 15 9 13 16 4 2 16 4 25 19 15 26 15 19 26 28 23 6 6 10 30 14 14 15 26 10 13 9 22 19 18 16 20 7 21 29 24 11 16 18 11 20 28 11 16 9 26 18 5 4 19 13 28 16 14 10 18 17 19 11 22 10 6 8 10 1 30 25 7 21 18 1 13 14 15 12 19 6 4 28 11 11 20 9 20 30 9 10 11 3 29 19 10 26 29 4 11 1 17 16 5 2 16 23 21 12 26 9 28 16 2 1 22 23 18 2 14 19 19 25 22 20 9 23 7 10 11 9 1 26 7 24 9 12 18 12 19 25 20 16 12 5 20 29 3 9 1 4 14 18 20 6 11 11 16 17 16 3 20 6 3 2 30 10 20 6 30 10 25 7 19 7 13 3 22 4 18 30 21 13 3 10 22 18 23 3 18 29 6 6 6 28 4 22 20 29 15 17 27 1 30 23 10 5 12 22 20 5 8 8 26 9 7 22 13 1 27 27 8 26 26 29 5 1 5 25 4 1 3 6 16 20 8 18 22 18 8 2 5 9 9 20 26 20 29 12 14 29 24 11 23 9 15 4 1 2 1 27 7 26 21 3 25 2 12 9 5 18 28 25 6 25 17 23 4 14 8 6 17 13 21 1 11 22 1 8 19 23 2 18 11 20 4 23 13 23 24 22 9 29 19 25 21 28 27 1 26 21 15 29 9 17 19 7 14 17 11 16 9 14 8 7 23 25 20 3 2 19 21 7 10 29 16 7 23 9 16 16 20 18 11 8 19 13 25 25 1 23 30 20 23 14 10 27 27 25 10 23 24 23 16 3 2 5 18 16 12 7 2 29 10 8 23 3 21 6 5 13 15 4 11 11 15 7 16 25 5 16 29 13 7 27 24 25 12 18 17 3 12 27 11 9 12 25 20 15 11 9 24 12 2 28 21 30 27 25 23 2 13 26 10 14 3 13 28 14 13 29 26 10 19 22 28 29 24 27 22 21 6 8 19 7 9 30 21 7 17 26 10 16 7 3 2 29 12 20 7 28 23 12 8 11 17 30 5 4 28 19 28 19 3 18 11 23 30 16 26 13 1 5 12 15 17 21 28 1 22 4 4 30 5 27 6 25 21 21 7 12 4 25 28 15 4 10 13 28 19 26 22 27 10 13 2 4 19 29 25 4 16 4 29 1 25 27 7 15 3 27 24 27 6 21 15 22 10 3 16 8 12 15 14 29 2 26 8 26 18 8 25 4 14 26 19 7 27 24 2 29 20 13 28 22 4 17 3 30 3 1 25 14 5 20 26 5 4 14 17 24 22 22 23 23 11 20 15 20 7 2 22 30 13 6 20 14 11 6 22 25 19 1 3 29 30 13 30 2 4 23 27 2 10 1 15 29 12 23 8 17 11 12 23 3 26 4 19 25 29 25 24 19 14 19 7 28 5 10 23 25 11 24 28 22 27 26 20 22 13 27 1 27 2 12 12 22 19 21 13 14 2 24 20 29 14 9 9 30 4 9 10 23 22 22 9 14 9 23 20 8 16 18 23 2 22 1 13 12 4 5 26 30 26 11 30 12 23 10 28 15 10 12 27 23 5 21 29 20 6 22 10 5 30 27 3 9 30 17 13 30 13 1 11 29 27 22 10 26 27 10 29 17 17 4 8 15 29 19 17 30 18 26 3 11 22 22 30 27 29 30 6 6 9 21 8 24 8 14 22 29 20 5 1 15 13 28 8 19 8 16 10 25 17 23 11 30 22 5 19 3 11 11 15 5 12 15 14 28 2 19 27 5 29 15 23 18 26 12 29 24 30 12 28 16 30 11 15 2 23 5 30 3 14 10 21 22 6 18 -------------------------------------------------------------------------------- /midterm2/b4/3-input.txt: -------------------------------------------------------------------------------- 1 | 10000 2 | 7 40 26 17 49 3 39 50 40 26 33 6 45 19 14 8 8 14 27 13 10 4 20 4 11 36 19 47 41 42 2 3 26 38 12 37 43 47 37 23 15 47 22 45 50 15 37 39 22 25 36 10 48 4 36 23 17 37 23 2 9 12 38 11 47 20 7 5 2 25 14 7 13 39 2 36 47 41 25 5 26 47 21 50 46 29 23 22 28 34 25 50 9 7 2 10 34 48 37 34 13 23 26 43 30 50 3 26 37 33 35 30 45 40 9 8 41 38 13 31 34 39 23 34 20 1 44 27 18 47 32 40 14 39 15 50 10 43 26 2 1 22 25 41 42 45 34 27 50 39 9 21 34 1 22 19 8 19 34 12 18 27 43 18 36 41 7 32 25 14 29 41 32 24 8 29 47 6 30 16 2 38 30 2 19 12 44 28 9 1 25 24 2 45 38 18 22 41 19 22 22 8 34 46 48 2 16 37 49 46 49 35 37 25 3 41 12 18 32 25 10 4 10 29 15 23 7 45 40 21 19 22 29 2 2 24 17 39 1 4 32 3 18 35 37 21 20 47 45 11 32 29 38 12 20 14 48 33 43 48 9 25 27 15 18 20 47 44 46 27 2 3 25 33 13 10 35 28 15 3 12 1 8 21 17 15 17 30 1 47 23 48 2 18 1 1 5 22 36 44 26 46 27 35 35 38 14 11 36 49 1 48 38 44 31 18 18 29 35 26 37 1 31 42 43 6 50 23 19 15 25 21 19 6 35 44 14 7 22 12 10 39 35 46 36 32 39 13 20 26 16 1 15 14 1 14 31 18 24 16 50 38 2 47 23 15 44 9 9 4 40 10 38 44 8 18 23 36 6 39 13 37 14 38 35 38 38 43 26 27 3 21 48 29 26 2 25 16 20 19 26 50 10 46 27 16 10 8 17 10 27 37 2 9 24 48 46 20 18 12 3 9 25 21 43 27 13 3 11 47 34 37 38 43 38 48 13 19 39 37 24 7 17 39 49 44 28 13 38 46 35 44 45 2 14 37 42 32 43 47 39 34 26 18 24 32 24 35 47 1 29 47 6 16 45 32 17 21 42 22 18 45 19 41 46 11 29 50 48 16 3 46 3 10 6 5 44 13 46 19 20 8 48 37 3 1 12 47 41 36 2 9 31 15 21 41 47 25 31 30 24 11 33 28 18 17 21 33 35 36 42 19 20 2 20 48 35 16 11 19 21 1 49 28 21 18 12 24 50 12 21 4 10 17 23 24 33 24 5 44 44 26 20 9 46 44 35 14 18 8 35 9 32 26 10 40 9 17 48 10 4 25 1 9 44 16 20 6 36 14 44 37 17 12 34 22 9 26 41 4 24 24 31 18 15 37 13 34 29 4 25 44 30 16 43 2 9 41 38 5 34 23 43 2 9 4 32 31 13 42 18 14 41 32 16 37 18 45 42 20 24 6 21 12 32 49 20 50 12 36 30 23 2 48 11 21 35 45 12 49 44 16 3 49 20 25 10 33 3 38 33 46 15 31 35 5 25 8 14 44 41 48 16 38 20 23 30 47 41 25 7 15 45 20 31 3 36 15 1 45 44 5 5 5 5 20 23 7 50 7 19 13 29 6 38 20 7 31 30 43 31 2 38 41 39 28 13 9 10 14 17 21 24 23 22 15 2 29 5 42 45 44 6 15 37 50 23 25 43 14 47 11 8 48 15 44 29 44 25 10 8 48 35 46 23 24 42 29 34 32 40 7 26 47 29 25 35 28 19 38 41 38 1 9 49 17 30 2 44 39 49 37 8 43 7 35 13 32 14 28 49 13 7 7 3 11 43 31 42 26 9 48 36 27 2 8 13 31 32 32 6 47 50 31 1 21 49 3 30 47 23 17 9 28 6 38 13 12 44 44 1 38 47 20 28 29 10 46 1 8 19 42 19 21 1 40 34 40 15 27 7 39 9 39 42 12 5 36 22 27 12 14 18 19 41 42 46 32 41 22 27 34 29 13 30 12 9 33 22 40 1 43 50 23 42 47 31 33 25 44 10 49 14 48 30 24 48 43 45 48 13 9 13 42 17 16 48 2 16 6 21 8 50 5 27 48 20 18 41 22 8 32 14 16 18 45 48 7 18 24 41 16 10 36 16 16 45 49 25 39 18 10 31 46 41 14 38 14 21 50 29 31 32 21 37 4 34 29 28 5 47 12 46 24 43 24 49 3 25 47 10 37 33 7 2 10 45 22 26 34 13 2 1 23 11 12 21 48 33 45 24 2 7 42 19 44 19 32 2 18 4 38 27 26 45 44 5 30 14 44 10 20 18 3 35 12 44 10 26 3 16 29 17 32 19 4 9 14 4 29 32 42 4 7 1 35 30 14 27 44 40 49 25 18 6 10 12 12 22 46 37 25 14 44 12 47 42 15 13 20 30 8 20 34 46 12 29 42 26 49 17 32 14 46 27 22 39 50 33 16 49 23 16 29 11 42 50 10 38 27 40 46 16 1 10 42 22 20 5 5 47 2 48 10 38 6 8 6 13 28 49 36 37 2 37 1 45 14 42 21 5 7 24 10 4 15 23 7 10 20 34 34 25 21 42 41 6 18 35 33 43 37 3 29 48 3 6 25 12 11 16 7 12 41 13 46 34 12 8 20 41 27 1 37 13 41 48 39 9 48 33 39 48 44 1 5 47 1 50 15 2 23 8 34 31 38 16 19 20 50 45 43 17 10 49 20 30 40 25 32 1 21 11 33 20 9 25 7 41 47 48 19 50 28 35 11 34 19 4 25 9 22 22 13 44 32 18 5 3 3 28 47 25 47 35 4 13 45 24 21 33 28 50 19 6 35 24 48 50 42 23 30 20 31 40 4 9 28 44 48 24 21 7 11 45 33 17 22 8 10 17 37 48 11 42 10 40 38 29 5 11 37 2 44 9 37 28 36 27 10 6 3 9 27 39 17 7 23 17 41 5 18 8 9 35 17 32 18 28 6 3 25 17 49 28 29 2 7 11 47 9 9 45 5 7 10 28 36 32 2 17 45 2 36 10 41 7 43 9 38 11 32 5 11 3 38 17 27 41 31 5 8 39 50 45 20 39 2 44 28 8 13 49 38 6 13 27 2 49 23 5 49 39 33 7 23 10 45 14 50 9 9 43 1 21 48 37 1 14 6 17 13 27 8 20 37 7 33 34 26 16 18 48 21 10 36 29 32 32 47 22 37 40 44 14 11 11 26 14 49 40 16 16 48 16 8 3 3 15 5 40 28 34 28 13 48 44 20 50 24 49 47 45 29 20 3 6 5 19 29 12 42 29 3 13 33 9 45 25 24 13 43 39 26 29 46 47 50 33 10 27 3 27 20 26 32 7 19 48 47 8 10 46 46 33 27 2 39 36 8 14 43 49 42 16 35 16 38 30 3 36 1 13 19 50 3 37 1 45 39 18 18 26 31 25 8 38 1 26 19 38 27 41 6 44 14 6 17 31 7 20 24 46 31 3 26 9 19 1 40 31 13 35 49 11 9 37 38 32 20 20 37 4 37 2 43 6 14 32 2 42 18 18 18 14 27 23 38 29 49 27 1 14 33 32 1 33 37 31 47 23 46 14 29 12 49 30 14 9 39 34 35 24 27 38 19 42 8 43 5 38 33 7 20 29 14 19 35 33 30 18 47 41 20 36 24 8 14 40 13 50 24 10 26 37 9 20 14 20 49 28 23 36 34 26 14 2 50 50 29 26 11 20 13 20 34 5 2 10 41 20 46 13 14 21 34 45 32 18 17 21 17 3 42 23 23 16 49 25 34 10 40 40 11 19 1 25 29 19 28 36 30 47 40 15 43 6 35 11 7 29 44 9 35 7 5 38 25 20 42 41 23 27 44 47 1 30 19 45 31 22 12 10 50 9 49 14 34 31 38 26 18 29 9 46 18 20 24 4 45 39 22 34 44 39 31 47 10 22 5 5 23 2 33 8 35 41 46 34 37 43 45 26 36 5 28 35 19 38 11 1 6 7 3 40 34 46 23 2 39 16 32 17 48 24 17 25 4 40 38 36 44 31 16 37 44 38 12 12 20 17 38 41 43 15 14 28 19 29 24 19 16 40 36 45 5 35 22 28 3 28 23 4 14 47 35 7 30 7 39 36 38 37 49 26 28 20 32 44 32 29 6 29 24 18 36 4 35 37 7 18 15 10 41 20 38 2 8 16 4 48 2 17 49 30 34 7 24 36 2 28 15 28 37 34 36 4 17 49 32 34 10 17 3 45 9 8 41 39 2 15 23 30 28 3 7 15 1 27 37 42 31 47 33 24 21 36 19 11 13 5 37 4 4 32 49 11 42 7 44 42 35 11 27 44 25 25 33 47 1 29 30 43 13 18 26 11 23 8 44 45 24 14 42 4 43 45 26 29 42 28 39 44 7 28 19 14 17 5 12 37 8 25 39 5 37 45 5 39 9 12 22 12 12 22 34 50 50 34 32 10 6 19 42 33 17 44 6 24 26 49 14 41 24 47 6 27 41 2 41 6 13 42 26 42 13 15 39 6 23 34 22 48 30 30 10 50 31 22 3 5 26 32 38 14 1 33 13 44 15 33 43 6 47 13 34 30 35 41 8 49 18 33 28 47 44 48 43 6 12 14 33 10 36 1 34 16 23 3 39 10 29 33 16 25 9 29 11 12 10 26 30 12 47 5 33 40 44 29 26 15 39 40 27 11 42 23 33 41 6 34 46 39 19 38 18 29 25 11 15 36 47 12 5 27 48 10 50 36 6 17 8 28 6 9 38 19 13 32 37 25 48 6 22 20 37 32 28 12 11 19 34 32 40 41 4 21 16 11 10 10 40 25 41 45 42 11 45 11 19 48 37 1 33 31 35 40 33 22 7 28 22 31 35 37 13 17 39 44 14 9 42 40 4 35 33 11 21 29 32 4 7 17 16 25 6 47 50 30 41 16 50 43 3 28 19 36 10 21 49 31 40 40 44 27 41 49 5 31 4 45 24 12 45 47 14 37 45 5 16 14 26 45 30 4 44 44 6 22 19 26 8 41 7 44 37 22 39 24 31 6 13 27 21 45 45 5 45 36 13 16 46 30 2 41 40 14 4 34 24 3 12 23 37 46 39 47 35 27 19 18 24 46 37 50 17 42 40 41 50 49 37 40 37 28 16 38 33 44 3 6 8 11 45 22 9 27 32 10 28 23 22 9 43 27 1 6 22 32 40 11 37 30 41 41 19 30 31 7 36 2 29 4 38 29 5 7 39 15 28 50 7 16 48 12 16 31 42 23 26 28 24 37 29 14 35 19 16 44 5 42 18 48 38 25 9 30 10 41 20 28 15 19 29 41 35 28 17 22 43 32 8 14 19 46 33 28 8 45 27 36 2 20 33 1 33 19 50 48 11 31 48 5 4 23 47 13 34 31 38 8 26 39 37 10 1 38 2 44 18 43 38 16 13 5 32 22 28 40 22 14 11 50 8 37 13 18 34 4 26 43 31 24 42 28 40 44 11 43 9 33 50 37 12 40 45 31 36 22 44 10 34 21 8 24 30 32 31 18 28 4 47 41 39 1 7 8 35 2 42 31 37 21 46 26 34 7 6 37 8 17 48 22 13 5 34 15 17 43 47 36 25 24 10 7 12 30 18 41 13 38 47 12 25 19 5 25 15 32 35 45 3 7 18 7 12 31 1 25 11 32 11 23 50 27 13 7 7 15 11 24 41 46 49 9 36 8 31 38 6 20 20 33 46 20 4 45 11 8 9 22 29 24 8 1 15 48 34 13 22 22 47 43 4 32 4 1 8 22 24 1 30 5 15 12 8 4 2 42 27 24 17 30 30 22 23 10 5 2 35 12 47 26 39 16 21 16 13 7 50 50 34 25 37 49 40 20 13 13 8 50 16 28 37 7 26 38 39 25 31 1 44 49 7 48 47 18 7 11 12 25 49 30 43 6 14 47 45 39 42 7 32 46 32 31 47 29 40 33 35 14 44 49 37 38 27 23 34 9 11 42 35 31 30 27 16 40 9 16 50 28 21 20 2 41 26 37 18 16 36 27 11 23 3 47 6 9 13 42 40 34 33 28 31 30 10 16 33 49 10 3 38 42 46 6 43 17 1 14 13 1 15 35 28 23 8 22 42 34 17 45 10 13 50 49 19 4 44 18 5 50 42 16 5 49 38 42 45 42 7 41 19 5 39 50 48 38 46 49 17 32 32 16 32 30 43 31 10 47 47 49 11 2 24 10 34 11 10 33 16 20 6 41 43 3 9 28 33 9 47 42 4 31 22 34 47 40 19 29 35 12 26 37 45 35 33 34 38 14 14 48 46 8 3 31 21 39 18 16 41 34 3 33 42 7 44 20 28 37 29 24 8 3 40 20 33 11 50 12 11 46 26 47 21 20 40 39 9 45 29 11 48 43 21 12 15 45 11 44 10 33 24 27 5 11 45 46 47 32 1 1 49 49 13 38 13 48 50 25 25 36 1 2 30 23 38 45 27 27 10 3 14 25 35 24 23 32 14 47 49 49 31 33 28 1 35 24 40 45 23 25 22 17 46 37 41 28 13 34 13 26 20 35 10 35 16 33 50 42 34 11 8 38 29 18 26 1 19 18 6 48 11 33 48 31 37 12 22 34 13 16 38 47 26 45 47 31 8 34 48 44 12 36 30 25 6 13 48 46 41 28 26 47 14 11 21 34 16 4 43 2 46 30 36 5 37 44 11 24 45 11 5 24 29 40 2 39 16 34 20 45 15 7 34 50 16 43 21 40 20 10 23 14 42 5 22 28 37 28 15 6 4 20 47 6 9 42 10 12 35 27 30 18 41 18 46 4 18 11 48 17 43 12 35 2 25 35 42 48 31 30 25 26 17 3 8 47 15 15 9 15 31 48 32 26 47 5 6 9 47 25 29 49 18 19 9 23 20 25 26 5 20 1 23 18 22 18 14 12 33 37 29 3 44 50 31 35 20 39 48 33 25 7 44 44 34 14 15 32 17 5 2 37 39 16 35 2 15 1 32 32 8 17 23 35 39 44 48 9 17 1 48 48 21 37 20 26 9 47 1 41 10 38 14 6 37 13 40 19 35 13 46 27 42 24 5 39 40 38 32 35 5 35 36 29 23 45 17 23 28 9 33 30 49 27 22 40 15 24 34 13 26 49 10 17 26 40 38 31 8 37 34 19 40 12 3 40 19 18 12 3 39 5 42 33 42 40 34 4 34 12 41 45 40 8 22 30 29 24 38 29 48 18 6 37 3 49 9 27 38 23 27 33 45 31 6 34 22 20 42 35 11 46 4 1 18 22 14 42 40 48 50 37 5 9 12 3 49 8 27 25 3 38 36 50 24 49 3 23 45 7 19 39 5 44 13 31 46 1 2 2 22 43 34 31 28 45 33 28 39 28 1 21 42 6 29 13 25 48 29 46 40 20 19 6 14 37 7 10 11 48 50 10 31 4 18 37 28 26 31 35 8 7 50 9 24 6 27 50 43 41 26 45 30 4 30 17 29 44 43 30 30 46 34 40 30 35 44 19 38 45 38 44 2 46 30 29 7 22 50 41 7 9 36 6 9 15 6 4 11 37 8 37 7 4 18 46 20 21 22 29 13 7 12 13 20 48 12 46 29 9 33 21 10 39 33 11 29 24 17 33 17 43 21 26 5 10 29 23 44 39 22 20 2 10 31 38 34 33 14 46 25 19 13 43 30 31 41 49 16 42 45 25 6 21 36 21 8 48 25 35 5 29 4 49 27 49 22 48 29 30 21 29 32 19 22 48 6 33 16 29 36 13 42 6 48 21 18 6 11 46 16 16 8 8 21 7 47 13 6 13 43 49 35 20 1 30 44 44 32 16 11 31 48 6 41 36 1 10 37 8 32 8 24 1 22 7 27 10 1 34 45 19 21 41 5 29 49 42 43 47 43 33 48 49 16 34 38 12 50 28 23 20 12 20 41 47 50 48 26 6 14 26 24 39 18 21 45 2 26 34 17 5 35 46 45 38 27 7 49 18 33 46 24 24 50 44 36 48 5 1 18 14 37 14 17 50 46 49 5 20 26 1 44 36 21 48 2 16 11 13 2 25 17 45 38 38 17 18 48 32 11 45 7 42 12 45 10 2 20 12 45 3 4 45 40 50 28 24 23 41 6 1 27 5 39 19 27 48 28 30 13 32 41 41 39 12 4 36 41 7 32 25 47 6 48 1 12 19 36 4 36 25 37 14 48 18 46 21 3 12 20 25 34 50 50 6 32 39 49 26 42 4 1 30 4 5 9 11 38 5 50 49 27 29 41 43 45 11 23 17 10 22 38 46 45 8 45 6 50 18 30 1 33 15 49 36 23 12 28 32 26 42 16 26 7 38 24 1 24 50 47 4 24 26 50 44 28 47 11 1 40 5 17 25 47 50 23 22 18 24 50 11 18 49 39 37 24 22 36 16 43 2 20 17 36 41 47 49 49 31 3 11 46 2 3 41 30 39 12 2 28 9 46 14 4 43 45 38 21 19 16 30 27 43 33 9 38 34 32 5 40 22 4 35 15 1 7 18 33 27 25 30 25 39 14 28 22 3 17 38 44 7 12 10 28 29 18 6 36 46 26 17 31 5 49 17 22 44 39 22 1 35 35 9 17 21 3 5 12 23 34 2 36 13 27 35 4 39 30 50 50 3 44 48 18 20 37 45 43 48 14 30 28 35 49 16 8 50 41 8 27 31 41 23 38 20 22 27 39 21 3 25 4 17 41 27 46 4 2 37 22 28 4 45 28 19 2 10 34 38 27 26 33 46 47 8 42 14 34 41 37 11 20 43 14 3 30 22 23 21 21 20 46 24 42 17 9 31 18 42 17 37 5 32 19 23 32 23 3 17 22 22 32 29 28 14 4 46 14 37 44 15 45 18 6 22 16 7 49 34 28 8 40 49 20 34 18 1 33 14 11 5 3 12 24 32 45 21 5 35 18 30 34 39 49 15 24 19 19 20 21 13 23 16 37 48 29 12 44 40 28 4 20 3 16 31 12 17 14 29 17 28 12 7 49 11 14 39 37 25 6 8 15 8 14 37 41 43 44 18 31 36 4 30 3 29 27 10 12 28 1 31 40 35 35 38 47 37 14 49 15 26 36 16 36 39 22 34 35 31 36 16 25 39 19 2 8 47 25 25 20 1 13 11 6 22 20 33 31 28 26 14 42 21 44 32 26 36 24 33 31 26 47 16 24 19 24 15 5 14 20 46 48 6 32 37 43 5 40 32 6 14 40 31 20 2 19 27 36 27 21 23 45 50 48 21 21 48 44 34 28 4 20 39 42 14 29 50 33 22 26 21 10 41 15 6 15 25 12 44 20 45 25 17 3 7 47 50 12 36 25 9 43 26 30 31 14 4 35 5 36 47 14 47 26 14 39 11 43 21 43 27 13 45 47 27 35 4 7 44 23 25 24 17 49 10 21 28 38 38 33 3 12 38 31 1 22 2 17 9 3 38 27 45 31 15 48 42 32 4 21 9 27 1 35 9 24 8 1 29 22 16 20 18 21 45 29 18 50 1 36 45 37 27 33 42 41 49 5 24 4 23 18 30 3 31 47 17 49 21 50 13 26 22 28 9 24 32 3 30 6 19 17 5 12 10 6 31 43 6 9 24 43 27 3 17 22 20 2 17 36 7 27 35 23 13 32 41 7 3 17 29 6 23 41 6 5 27 31 47 50 22 21 9 4 22 22 26 39 41 3 34 30 23 46 29 17 15 48 42 14 30 12 36 14 13 14 7 8 7 15 4 42 31 26 17 45 31 8 11 10 40 41 31 23 1 8 25 46 38 34 3 13 6 37 16 43 9 31 30 31 14 27 31 15 4 33 9 4 16 5 49 21 47 31 21 39 5 44 15 14 15 33 42 12 8 27 27 19 5 11 10 16 29 23 15 13 49 11 42 49 39 32 32 42 29 30 41 38 20 21 31 23 29 20 3 11 38 15 28 37 24 47 6 37 44 32 4 14 11 18 50 1 19 45 44 24 25 2 27 9 2 50 23 23 4 37 15 14 12 35 50 40 34 41 44 33 11 44 43 8 40 1 33 12 24 9 34 17 8 18 5 24 43 46 31 16 12 18 10 22 35 30 4 2 47 1 23 7 25 21 39 5 16 49 29 48 11 29 9 23 36 22 18 4 20 18 7 17 48 42 2 19 33 18 44 31 20 7 6 33 34 30 6 46 14 25 27 44 7 37 5 20 7 17 33 38 16 30 17 8 26 40 17 3 50 25 24 15 42 17 33 46 36 18 9 17 38 34 39 14 43 15 23 42 37 13 12 8 14 19 20 19 30 4 26 22 34 14 5 44 21 26 6 14 32 32 21 10 16 1 25 4 15 28 4 50 12 27 16 18 2 15 5 45 14 15 10 6 18 10 10 7 21 22 8 5 48 49 8 43 45 29 22 46 43 42 36 21 6 14 12 50 2 24 1 33 15 28 28 35 23 42 42 19 7 50 28 19 6 15 18 36 9 10 13 18 17 32 17 37 9 26 30 22 10 4 38 44 46 4 34 21 23 47 29 4 49 42 37 39 3 38 42 25 26 43 8 31 27 49 10 21 1 32 31 49 40 21 2 1 3 14 12 40 28 21 14 9 19 12 34 27 21 48 15 44 19 18 11 10 3 48 36 17 30 28 18 24 23 20 44 32 34 18 23 18 2 46 16 20 22 6 9 48 27 12 20 25 47 16 7 33 43 10 28 49 33 1 39 33 47 14 9 27 25 18 38 32 26 2 15 35 8 48 50 30 45 45 29 17 24 25 23 25 48 6 31 7 27 13 37 33 36 28 3 43 31 3 41 38 6 2 37 18 39 35 8 2 13 12 14 18 48 41 32 40 21 47 1 29 41 47 50 36 14 42 11 18 30 9 11 42 12 38 37 49 32 24 26 8 26 8 41 41 5 30 17 36 22 20 40 38 1 46 47 36 44 41 44 23 30 21 37 50 21 24 46 43 27 10 42 6 50 47 34 15 15 21 24 35 43 35 11 2 39 9 3 23 42 40 10 13 16 6 21 50 44 16 24 24 29 27 7 5 33 19 17 19 20 32 43 5 33 25 21 26 20 41 6 41 10 22 28 39 38 33 42 26 31 7 28 21 34 38 32 10 30 7 22 44 48 2 45 50 8 13 7 27 49 39 43 44 3 14 11 50 33 31 25 34 50 19 37 11 4 8 23 47 30 31 7 50 16 12 7 39 38 16 13 39 1 43 24 5 28 33 33 18 10 17 4 23 40 27 50 2 24 12 48 3 11 2 16 46 21 20 6 38 28 37 33 11 50 46 40 12 49 36 33 38 30 18 30 43 7 1 19 50 30 17 20 16 19 25 28 21 36 22 10 30 8 41 4 26 10 18 42 2 12 21 40 26 7 18 23 26 15 30 46 45 10 11 12 20 4 41 42 15 17 35 35 48 4 47 39 31 49 17 44 44 20 9 30 13 5 40 24 22 10 47 44 43 43 39 11 35 34 3 29 17 26 8 39 22 49 33 49 3 1 44 37 22 25 47 7 27 32 48 30 9 9 25 20 13 23 23 46 45 48 33 7 29 40 7 26 32 47 50 38 42 24 24 22 38 19 4 22 49 26 48 33 1 17 27 7 27 50 8 9 34 5 48 8 5 12 22 12 40 19 7 39 21 24 39 49 23 29 25 16 38 13 36 6 8 24 6 21 36 25 28 36 50 35 18 21 47 10 38 23 40 25 35 11 20 15 23 9 26 35 9 46 2 39 14 13 26 24 41 35 24 21 10 26 41 18 24 15 6 8 29 31 9 7 9 28 45 29 27 21 27 3 17 45 18 5 43 17 47 29 34 1 24 30 19 38 37 23 38 39 14 32 22 20 7 32 8 38 40 1 19 3 7 20 28 7 10 44 22 37 46 40 10 36 36 46 44 27 1 40 19 17 36 42 26 1 40 2 5 22 25 18 28 46 26 8 1 4 18 48 46 10 13 43 20 47 8 18 2 7 25 5 20 37 20 39 34 13 32 37 27 1 26 39 35 22 12 29 50 23 31 7 45 46 38 42 19 38 19 14 31 40 23 1 48 13 31 24 49 23 7 10 9 44 27 42 35 48 25 8 44 23 19 34 42 35 43 48 24 42 33 4 8 48 1 6 4 40 29 35 13 43 17 1 31 46 36 7 25 1 7 48 28 14 4 43 34 12 50 6 38 17 25 46 19 45 37 38 44 20 44 48 11 47 36 4 38 49 2 1 30 3 32 15 5 31 2 36 42 40 27 50 40 4 26 17 10 29 2 32 33 19 33 41 33 22 30 6 9 37 45 45 45 39 6 33 50 3 49 34 11 42 46 28 17 16 26 31 12 39 3 47 8 17 23 11 46 47 19 6 5 9 15 30 44 3 4 26 14 6 30 45 24 22 4 49 28 17 34 4 2 42 28 10 32 19 24 10 20 47 19 50 35 22 28 32 18 38 44 21 20 9 43 29 10 43 21 35 27 46 25 39 10 1 16 48 39 25 41 24 36 6 33 8 26 30 16 45 21 25 47 2 18 42 33 1 1 14 27 48 1 36 20 43 26 6 17 30 25 29 14 44 13 24 21 47 49 48 9 7 31 30 34 17 45 18 36 45 36 39 38 36 35 49 42 10 31 10 3 7 6 7 31 29 31 11 19 15 48 34 21 50 29 10 37 39 46 4 29 46 32 48 2 14 18 26 11 18 27 43 6 2 6 24 46 29 5 19 19 46 40 29 47 34 6 50 42 40 42 18 6 12 26 2 45 7 29 2 32 32 9 29 26 40 24 47 11 24 45 30 3 32 17 46 31 13 45 48 45 49 44 35 45 35 15 4 15 35 6 5 5 40 45 24 45 17 32 46 12 35 16 39 14 46 15 45 33 17 17 15 32 11 17 28 41 30 16 7 38 26 10 14 32 28 13 23 45 47 43 10 33 2 12 33 45 49 3 1 10 30 18 36 14 29 24 13 48 45 42 33 40 12 41 43 44 23 8 38 23 16 28 18 24 17 8 13 6 42 30 29 6 21 19 9 21 35 42 2 11 48 27 24 30 38 28 29 28 35 43 3 23 27 48 46 15 42 47 39 4 40 50 24 11 7 29 45 15 40 32 19 50 30 44 32 32 45 37 9 27 30 44 37 6 7 4 49 25 26 20 2 29 50 25 10 29 17 49 15 8 49 38 46 24 14 43 48 2 19 7 39 40 25 33 33 19 32 5 39 28 4 32 34 21 11 24 3 15 9 40 35 40 28 31 29 1 14 47 48 10 4 35 18 13 42 41 11 35 32 50 11 40 16 8 34 34 34 7 34 39 33 47 33 5 7 8 44 19 28 4 16 48 30 12 38 8 4 38 8 13 27 14 36 21 18 1 39 40 50 7 10 37 22 47 32 11 23 2 7 46 24 15 30 32 27 47 6 18 39 47 49 43 50 26 14 15 40 49 35 39 43 15 17 12 46 19 15 48 48 40 16 2 40 27 17 50 14 30 37 17 27 5 8 48 13 42 6 47 27 19 3 36 15 30 2 12 45 16 28 20 22 40 31 2 15 8 29 1 12 34 25 17 17 19 4 15 20 23 49 8 50 16 33 11 39 23 6 5 14 2 44 50 6 6 34 46 46 1 28 21 13 29 11 38 31 20 47 34 22 24 45 40 27 19 14 33 27 23 17 39 30 12 32 40 49 39 11 31 45 22 24 6 13 39 44 24 25 50 14 24 14 18 6 30 50 49 23 35 23 3 48 28 29 37 21 27 21 9 19 23 30 28 36 6 7 29 20 9 6 36 38 19 20 40 5 36 45 33 40 43 28 37 10 35 45 28 35 12 6 31 45 15 21 1 47 35 15 40 46 1 40 32 33 3 10 34 9 42 44 22 50 9 42 12 7 21 36 10 28 44 46 38 6 21 39 12 49 21 39 50 41 17 41 1 8 28 43 45 1 2 44 10 2 42 4 18 22 16 8 14 31 40 19 11 44 35 31 6 47 42 20 13 17 27 28 27 17 6 31 29 36 36 32 12 22 19 42 38 32 27 26 45 35 16 20 31 47 49 41 38 24 26 2 8 1 31 6 19 23 22 22 35 16 26 50 16 17 2 48 14 7 14 19 1 27 35 50 41 18 22 37 1 22 15 15 36 41 31 17 10 3 4 36 31 7 7 38 6 36 32 39 26 49 35 7 15 7 43 45 7 50 44 35 13 32 20 6 7 8 23 23 7 12 47 42 12 50 41 41 1 23 1 31 8 21 14 12 16 16 35 13 18 15 38 42 13 4 45 14 36 5 41 5 23 14 14 33 13 48 45 45 30 34 33 29 9 44 5 25 39 45 5 44 38 32 29 2 35 33 16 45 50 22 13 49 32 3 47 1 10 1 16 48 47 38 16 9 47 37 47 6 43 8 48 35 38 46 1 7 37 42 1 41 26 24 19 7 11 37 6 46 2 34 14 7 8 46 38 47 49 44 10 3 25 49 20 3 12 31 44 40 30 31 26 30 21 5 37 5 46 44 15 18 45 2 19 30 18 15 37 22 14 9 47 33 10 25 14 15 13 22 6 2 35 49 6 12 47 2 12 34 33 8 34 2 38 39 5 26 49 48 47 38 16 16 27 36 43 3 34 42 34 34 9 17 29 19 46 22 6 32 34 44 35 15 16 8 17 4 34 31 16 7 6 45 37 12 14 14 15 46 5 29 41 7 2 21 35 9 14 29 43 5 31 1 29 33 33 42 13 4 31 25 8 34 31 1 1 5 27 14 34 8 29 35 41 28 50 45 7 17 25 45 8 46 25 8 31 10 6 21 11 39 16 47 38 48 18 31 18 49 47 47 5 27 13 41 16 28 1 3 31 18 13 46 10 20 22 36 45 35 5 6 36 37 14 5 43 32 2 48 9 8 5 15 3 33 39 48 37 49 38 43 31 34 8 29 30 7 45 33 20 11 33 23 25 5 47 41 34 42 32 36 35 43 12 18 27 30 29 46 34 30 21 5 20 11 8 12 7 48 47 23 8 32 22 22 33 13 18 34 28 19 32 47 15 24 16 48 4 6 29 39 10 17 12 26 20 25 25 49 38 10 32 7 36 45 41 14 27 21 47 4 2 42 20 19 23 1 10 45 45 45 7 6 8 24 39 1 45 33 21 15 28 39 3 5 40 49 2 45 29 21 3 19 40 7 21 11 24 16 4 22 25 33 46 11 47 5 28 9 31 15 22 34 4 27 8 21 48 28 6 29 34 34 18 34 11 33 29 34 27 44 6 10 40 30 7 36 18 9 22 31 2 18 41 37 34 45 15 14 5 39 31 2 49 20 43 26 15 39 1 38 27 50 8 45 25 29 22 34 21 14 27 6 13 27 48 26 45 22 8 12 38 20 24 17 31 26 44 41 8 35 15 5 13 29 50 33 25 45 2 29 11 26 50 21 4 12 20 35 4 3 33 13 27 22 29 33 17 3 18 9 31 43 42 25 47 37 38 45 23 13 41 12 18 48 46 19 40 34 30 19 32 5 20 2 44 20 40 45 48 49 43 20 7 48 4 5 46 26 26 29 12 49 15 49 47 23 37 43 28 50 16 40 12 28 15 33 16 20 15 48 41 41 35 40 12 13 41 5 38 9 34 49 41 31 50 34 26 27 25 27 13 26 16 42 31 50 31 29 31 23 30 11 4 18 18 47 11 29 7 39 41 43 49 2 1 50 36 40 6 11 14 39 18 27 33 22 20 24 44 36 48 22 25 21 50 44 40 37 46 28 3 24 10 14 39 30 3 21 32 3 32 6 20 48 36 10 2 2 46 1 45 16 36 41 40 1 49 48 21 5 1 27 31 29 30 19 20 19 4 41 40 17 4 36 12 13 20 27 25 18 39 25 45 36 34 31 12 44 33 3 41 2 27 31 42 30 18 49 42 32 14 16 1 7 9 4 3 13 11 43 1 45 30 1 50 50 41 39 47 46 17 7 3 33 25 12 36 35 25 24 21 46 18 46 16 41 49 24 11 26 29 15 30 29 29 32 50 14 48 3 29 25 32 41 49 40 44 15 28 6 35 43 3 47 29 31 23 33 43 25 49 20 11 31 44 47 18 10 16 3 16 45 46 30 41 44 33 31 15 2 30 27 26 49 18 19 26 9 38 40 23 40 11 17 39 5 39 5 2 46 35 33 35 42 46 20 5 16 25 19 22 44 26 48 33 46 13 2 2 2 13 17 40 39 11 5 37 14 43 37 12 23 45 32 12 39 31 4 22 39 29 39 5 36 25 11 32 49 12 38 38 6 46 12 21 45 25 10 46 45 20 34 34 21 15 5 36 37 31 10 12 38 11 10 17 8 4 4 4 3 45 6 39 45 4 33 1 33 45 46 25 49 12 22 31 30 27 7 30 18 12 50 25 46 25 21 46 48 43 27 6 14 35 3 3 9 14 18 23 17 16 46 14 18 30 16 19 5 33 12 45 40 5 46 12 12 1 15 5 21 15 8 3 30 24 35 31 11 10 33 35 43 10 11 13 42 14 48 43 9 15 50 20 11 20 2 18 10 8 23 49 7 12 32 14 14 4 2 2 46 33 36 26 19 50 15 49 39 39 22 35 3 3 35 4 10 2 26 28 46 6 6 25 10 40 36 3 5 45 13 15 19 47 5 10 26 43 48 38 19 12 9 36 38 11 1 35 15 14 26 35 34 29 19 18 50 23 14 21 40 18 32 15 26 26 32 41 28 41 23 35 22 37 19 9 30 20 18 8 30 44 3 37 50 19 50 20 20 31 24 44 45 45 3 13 15 30 3 14 31 16 22 37 34 36 30 43 23 6 46 41 7 38 6 8 48 6 7 16 45 2 31 23 46 10 29 20 7 15 50 32 6 2 47 47 33 28 9 17 40 28 43 30 7 17 5 29 30 32 18 28 9 6 17 50 13 50 46 31 19 23 30 34 31 35 33 28 27 32 40 1 12 33 41 24 38 20 24 22 20 41 48 41 44 9 4 4 24 47 10 33 14 11 34 43 17 31 42 13 20 34 11 38 49 9 6 50 14 21 40 32 10 40 31 43 24 14 31 26 39 35 50 24 14 29 24 11 29 40 30 31 40 49 31 46 44 14 9 20 33 23 15 44 49 2 3 29 1 3 8 12 44 28 27 19 39 16 48 38 37 11 48 14 31 43 12 33 44 22 21 24 2 44 33 19 16 1 5 4 26 7 13 13 37 42 25 47 19 25 7 45 46 38 12 19 28 14 15 12 47 37 4 43 24 6 27 40 34 42 32 11 20 43 13 9 12 38 30 39 26 24 5 30 13 3 7 27 48 42 43 44 26 48 36 47 12 23 41 49 5 11 30 35 38 4 28 33 39 11 16 22 48 13 50 10 35 18 9 43 31 7 35 5 16 6 32 31 24 31 29 11 41 46 15 36 33 19 27 13 50 39 5 25 33 7 18 32 6 7 10 46 2 21 45 15 45 31 12 45 30 26 6 30 1 29 40 27 11 2 40 28 23 17 46 5 3 39 38 43 48 50 39 39 24 10 34 5 23 6 30 17 45 9 36 39 2 31 13 35 28 28 7 19 47 35 34 8 50 23 45 38 12 3 12 17 9 1 15 25 3 17 13 10 12 24 36 22 45 50 8 39 34 4 47 35 23 3 41 19 35 20 27 49 7 43 33 45 46 18 40 2 32 44 39 19 1 50 48 8 2 49 37 10 24 40 42 11 9 7 19 33 5 28 4 31 26 6 39 34 1 2 25 16 37 19 20 38 45 2 42 16 45 47 49 43 21 43 14 45 50 7 29 1 45 5 4 14 33 33 7 48 3 44 29 13 3 4 27 21 37 2 31 37 22 4 15 25 8 3 20 4 27 40 29 16 39 13 4 4 42 13 47 26 9 32 10 18 30 32 14 17 33 12 45 20 44 49 3 31 31 38 5 48 4 24 1 41 15 42 5 26 11 30 43 17 3 36 30 40 42 27 36 10 34 22 35 41 28 45 41 46 30 38 32 44 20 46 46 35 28 50 43 3 24 38 45 22 32 27 36 7 32 50 7 27 33 8 23 27 13 1 23 44 8 40 18 50 29 27 34 9 29 45 4 9 11 4 41 38 3 22 17 37 47 46 21 1 4 7 13 3 38 42 12 6 28 42 50 47 46 29 5 38 47 31 32 26 49 11 38 1 18 9 26 41 13 5 45 25 48 42 16 12 11 44 43 5 31 13 1 24 26 5 36 14 38 31 3 29 23 11 15 18 23 1 3 39 7 1 1 30 44 17 28 40 16 46 20 20 3 4 48 10 25 20 40 40 38 47 50 33 30 33 34 5 31 16 44 2 42 6 27 39 16 1 49 49 13 22 35 22 10 27 2 10 24 21 35 25 43 31 22 44 14 41 31 5 7 50 47 13 50 44 16 49 32 14 14 21 44 26 46 38 10 15 13 34 48 3 37 20 27 3 43 23 12 15 8 14 20 3 28 13 20 34 16 46 41 22 47 14 44 46 35 19 39 33 35 33 19 12 22 32 44 29 1 24 22 33 22 39 45 35 43 47 3 30 23 41 16 41 22 11 42 50 49 9 49 40 22 48 20 43 46 42 40 39 23 23 7 39 16 7 2 42 48 4 47 33 24 37 12 6 2 50 10 8 43 5 48 13 31 46 27 22 24 5 7 3 25 24 34 25 2 5 41 16 1 9 42 45 24 25 26 45 35 10 38 2 41 31 40 32 43 34 31 41 17 37 17 16 37 31 25 35 48 12 39 4 2 18 25 17 33 38 18 39 22 14 38 34 1 3 27 20 6 41 45 8 49 21 1 6 32 13 5 26 6 10 19 10 34 2 27 45 9 1 24 50 3 3 35 37 50 22 2 37 36 22 1 29 20 18 36 19 14 8 46 36 29 6 31 27 30 48 23 13 38 27 11 9 50 30 33 21 24 3 40 21 7 40 20 44 7 13 27 1 26 31 3 4 47 2 38 44 47 11 18 50 18 22 6 4 24 38 14 19 39 46 40 28 7 12 20 23 20 33 38 8 32 19 17 21 34 19 27 33 13 40 42 34 37 13 13 17 25 10 21 44 34 29 14 32 31 50 16 38 25 7 31 36 46 48 48 37 41 21 34 16 6 38 7 12 19 36 35 1 34 33 41 4 17 3 18 17 26 3 45 42 3 10 31 23 21 6 31 22 33 11 8 12 39 20 18 42 26 5 31 49 7 42 8 45 15 8 25 3 10 28 14 1 44 23 19 11 27 19 13 27 20 2 36 4 17 20 6 3 4 15 41 17 32 23 17 26 46 9 10 10 19 40 15 33 36 33 8 20 42 35 34 19 38 46 4 32 27 49 17 33 37 29 49 26 36 21 20 36 8 44 1 5 24 12 26 4 40 34 39 7 25 31 49 48 50 34 29 25 42 7 40 26 10 8 20 48 17 7 6 1 22 29 17 20 39 7 1 46 3 13 44 8 9 3 39 27 20 34 16 17 27 19 8 3 30 45 25 1 23 38 32 42 28 48 5 37 24 28 2 39 41 13 39 40 45 38 28 22 14 1 5 38 43 19 19 1 9 18 35 21 24 1 42 33 22 45 7 2 28 1 41 15 22 15 49 24 35 34 4 11 36 37 8 4 9 28 28 12 39 29 13 8 7 2 1 42 47 41 46 47 21 47 5 33 38 46 41 43 37 29 2 6 27 25 4 9 28 25 20 1 39 44 17 30 1 6 8 39 41 41 1 50 8 5 43 5 11 3 13 44 47 30 29 17 28 16 28 15 42 34 41 40 43 42 49 1 48 3 2 10 36 14 18 39 15 8 16 9 40 7 25 13 43 24 26 38 22 9 33 16 25 12 1 44 23 20 10 3 16 22 19 39 23 50 34 7 36 15 28 16 38 40 46 43 42 35 23 43 36 49 41 39 27 13 35 33 20 9 7 50 36 1 23 9 12 10 50 29 36 3 48 6 41 19 10 31 14 27 19 41 45 38 30 40 11 30 40 37 48 50 29 3 18 15 25 34 14 19 26 15 33 29 2 1 19 39 7 41 15 43 49 4 18 17 48 46 1 29 11 36 19 23 6 24 32 37 26 47 44 36 35 36 48 4 48 37 15 19 29 48 23 27 35 5 48 1 21 12 31 49 33 29 36 50 2 39 41 5 24 43 41 48 27 32 41 47 38 37 23 16 5 46 47 18 20 47 46 29 9 8 46 23 20 12 3 26 19 42 25 20 32 34 7 49 1 25 18 18 33 39 7 29 50 11 39 45 44 18 28 49 46 26 25 38 50 11 43 39 9 23 18 22 3 34 17 4 44 19 46 32 41 11 50 49 48 2 15 41 12 4 30 15 26 15 18 7 30 5 2 30 50 41 7 26 1 15 14 5 42 33 9 16 30 24 8 5 21 21 16 1 19 4 3 21 9 46 7 16 7 36 42 18 47 33 31 2 23 41 18 17 8 1 9 1 33 40 3 18 29 27 49 6 21 37 7 35 15 3 49 42 25 12 30 42 19 39 36 29 24 17 7 30 18 24 2 8 23 13 12 2 47 24 10 49 42 1 36 34 20 3 18 2 43 7 2 37 45 14 50 26 20 1 22 5 25 3 15 16 20 5 30 24 23 49 45 10 27 29 3 2 20 28 10 21 10 11 32 40 49 24 5 20 23 31 19 31 42 50 45 30 23 48 43 43 7 36 7 28 19 49 43 44 34 10 39 31 4 44 13 48 50 25 5 46 42 46 10 18 45 17 6 28 25 23 35 10 22 5 48 31 41 9 42 42 27 45 36 22 32 46 7 33 44 15 39 11 26 18 4 33 23 30 2 25 12 5 46 50 37 22 28 9 6 37 25 20 41 29 42 40 30 20 14 20 7 28 30 12 22 33 22 2 7 19 5 15 34 42 50 26 34 21 39 17 42 27 15 37 49 8 11 21 13 50 35 30 43 30 44 41 39 23 33 24 23 46 22 32 20 9 12 43 21 33 44 12 19 21 11 48 48 24 23 12 18 4 25 4 31 19 43 41 43 25 9 41 28 19 16 29 7 48 11 17 19 3 26 48 40 45 45 47 34 6 40 47 1 48 44 25 49 8 47 35 18 5 40 48 3 33 35 39 30 17 17 31 10 47 25 41 48 23 18 16 12 26 9 1 25 50 18 32 33 7 43 50 5 27 10 18 10 26 31 32 32 22 34 14 36 10 27 50 34 46 22 32 32 9 38 42 1 4 33 42 50 48 6 3 7 40 47 12 5 8 24 4 3 3 3 33 19 16 26 3 46 50 29 11 39 12 45 10 29 10 19 43 27 5 46 37 38 6 38 15 7 49 37 40 29 31 38 47 26 29 1 37 32 9 20 40 6 7 9 18 28 30 46 44 18 6 45 3 45 39 39 4 9 5 18 16 21 26 33 39 34 37 1 33 16 41 9 34 19 48 39 23 39 24 10 49 8 7 3 39 29 15 40 48 22 46 11 17 38 41 5 48 15 18 10 40 48 16 48 14 23 22 37 37 18 37 1 21 42 50 23 10 24 12 19 19 27 42 49 50 33 45 12 37 4 11 20 19 10 34 40 7 9 30 37 44 32 45 1 40 24 6 46 20 25 39 41 32 22 27 21 12 16 2 24 29 28 2 37 3 28 47 11 32 13 40 26 39 23 22 8 34 25 32 49 49 3 35 8 12 49 36 15 26 15 31 34 50 13 48 38 33 18 38 21 32 33 3 30 40 34 26 11 15 3 48 9 32 8 44 6 18 27 1 9 5 34 31 7 37 26 20 7 41 14 35 35 7 26 35 11 38 12 13 31 26 37 7 45 12 37 37 8 23 39 4 48 2 35 47 9 1 11 18 42 14 25 22 19 14 13 16 31 32 5 6 30 9 44 27 26 40 13 2 41 20 41 9 48 29 48 26 26 5 47 46 34 15 22 9 26 16 43 26 9 43 18 22 18 38 36 26 7 25 2 25 5 44 6 48 11 3 6 30 14 26 1 36 37 47 20 44 14 4 25 13 48 4 21 19 46 7 6 4 45 31 2 12 30 5 49 13 43 48 30 38 13 43 3 20 30 21 45 1 7 39 13 3 40 16 27 46 48 49 24 43 22 12 22 45 19 34 12 50 3 31 27 42 22 31 14 48 9 20 19 42 38 24 5 8 27 42 43 5 14 24 5 8 2 34 47 26 30 22 36 2 35 10 19 50 36 18 36 16 42 21 11 23 37 36 16 37 23 50 23 46 35 16 24 43 3 32 5 5 5 48 35 13 5 31 24 4 27 7 2 21 46 5 30 38 26 26 13 32 27 49 14 17 7 49 20 31 28 3 25 31 38 19 22 4 45 48 21 44 47 25 37 25 31 29 32 26 6 19 34 17 8 6 25 50 10 18 23 47 4 44 26 34 46 12 2 35 47 40 33 26 39 41 47 22 2 23 20 25 40 15 22 48 25 10 26 43 11 13 29 35 7 36 7 28 14 46 43 27 32 41 27 4 47 12 15 20 43 8 5 39 38 17 34 13 33 26 33 38 18 29 44 7 35 7 42 7 14 32 -------------------------------------------------------------------------------- /midterm2/b2/3-result.txt: -------------------------------------------------------------------------------- 1 | 1000 2 | 1000 3 | 1000 4 | 1000 5 | 1000 6 | 1000 7 | 1000 8 | 1000 9 | 1000 10 | 1000 11 | 1000 12 | 1000 13 | 999 14 | 999 15 | 999 16 | 999 17 | 999 18 | 999 19 | 999 20 | 999 21 | 999 22 | 999 23 | 998 24 | 998 25 | 998 26 | 998 27 | 998 28 | 998 29 | 998 30 | 998 31 | 998 32 | 998 33 | 998 34 | 998 35 | 997 36 | 997 37 | 997 38 | 997 39 | 997 40 | 997 41 | 996 42 | 996 43 | 996 44 | 996 45 | 996 46 | 996 47 | 996 48 | 996 49 | 996 50 | 996 51 | 996 52 | 996 53 | 996 54 | 996 55 | 995 56 | 995 57 | 995 58 | 995 59 | 995 60 | 995 61 | 995 62 | 995 63 | 995 64 | 995 65 | 995 66 | 994 67 | 994 68 | 994 69 | 994 70 | 994 71 | 994 72 | 994 73 | 993 74 | 993 75 | 993 76 | 993 77 | 993 78 | 993 79 | 993 80 | 993 81 | 993 82 | 993 83 | 993 84 | 993 85 | 993 86 | 993 87 | 992 88 | 992 89 | 992 90 | 992 91 | 992 92 | 992 93 | 992 94 | 992 95 | 992 96 | 992 97 | 992 98 | 992 99 | 992 100 | 992 101 | 992 102 | 994 103 | 991 104 | 991 105 | 991 106 | 991 107 | 991 108 | 991 109 | 991 110 | 991 111 | 991 112 | 991 113 | 991 114 | 991 115 | 991 116 | 991 117 | 991 118 | 990 119 | 990 120 | 990 121 | 990 122 | 990 123 | 990 124 | 990 125 | 990 126 | 990 127 | 990 128 | 989 129 | 989 130 | 989 131 | 989 132 | 989 133 | 989 134 | 989 135 | 989 136 | 989 137 | 989 138 | 989 139 | 989 140 | 988 141 | 988 142 | 988 143 | 988 144 | 988 145 | 988 146 | 988 147 | 988 148 | 988 149 | 988 150 | 987 151 | 987 152 | 987 153 | 987 154 | 987 155 | 987 156 | 987 157 | 986 158 | 986 159 | 986 160 | 986 161 | 986 162 | 986 163 | 986 164 | 985 165 | 985 166 | 985 167 | 985 168 | 985 169 | 985 170 | 985 171 | 985 172 | 985 173 | 985 174 | 985 175 | 985 176 | 984 177 | 984 178 | 984 179 | 984 180 | 984 181 | 984 182 | 984 183 | 984 184 | 984 185 | 984 186 | 983 187 | 983 188 | 983 189 | 983 190 | 983 191 | 983 192 | 983 193 | 982 194 | 982 195 | 982 196 | 982 197 | 982 198 | 982 199 | 982 200 | 982 201 | 982 202 | 981 203 | 981 204 | 981 205 | 981 206 | 981 207 | 981 208 | 981 209 | 981 210 | 981 211 | 981 212 | 981 213 | 981 214 | 980 215 | 980 216 | 980 217 | 980 218 | 980 219 | 980 220 | 980 221 | 980 222 | 980 223 | 980 224 | 980 225 | 980 226 | 980 227 | 980 228 | 980 229 | 980 230 | 980 231 | 980 232 | 979 233 | 979 234 | 979 235 | 979 236 | 979 237 | 979 238 | 979 239 | 979 240 | 979 241 | 979 242 | 979 243 | 978 244 | 978 245 | 978 246 | 978 247 | 978 248 | 978 249 | 978 250 | 978 251 | 978 252 | 978 253 | 977 254 | 977 255 | 977 256 | 977 257 | 977 258 | 977 259 | 977 260 | 977 261 | 976 262 | 976 263 | 976 264 | 976 265 | 976 266 | 976 267 | 976 268 | 976 269 | 976 270 | 976 271 | 976 272 | 976 273 | 975 274 | 975 275 | 975 276 | 975 277 | 975 278 | 975 279 | 975 280 | 975 281 | 975 282 | 975 283 | 975 284 | 975 285 | 975 286 | 975 287 | 974 288 | 974 289 | 974 290 | 974 291 | 974 292 | 974 293 | 973 294 | 973 295 | 973 296 | 973 297 | 973 298 | 973 299 | 973 300 | 973 301 | 973 302 | 973 303 | 972 304 | 972 305 | 972 306 | 972 307 | 972 308 | 972 309 | 972 310 | 972 311 | 972 312 | 971 313 | 971 314 | 971 315 | 971 316 | 971 317 | 971 318 | 971 319 | 970 320 | 970 321 | 970 322 | 970 323 | 970 324 | 970 325 | 970 326 | 970 327 | 970 328 | 970 329 | 970 330 | 970 331 | 969 332 | 969 333 | 969 334 | 969 335 | 969 336 | 969 337 | 996 338 | 969 339 | 969 340 | 969 341 | 969 342 | 969 343 | 969 344 | 969 345 | 969 346 | 969 347 | 969 348 | 969 349 | 969 350 | 969 351 | 968 352 | 968 353 | 968 354 | 968 355 | 968 356 | 968 357 | 968 358 | 968 359 | 968 360 | 967 361 | 967 362 | 967 363 | 967 364 | 967 365 | 966 366 | 966 367 | 978 368 | 966 369 | 966 370 | 966 371 | 966 372 | 966 373 | 966 374 | 966 375 | 966 376 | 965 377 | 965 378 | 965 379 | 965 380 | 965 381 | 965 382 | 965 383 | 965 384 | 964 385 | 964 386 | 964 387 | 964 388 | 964 389 | 964 390 | 964 391 | 964 392 | 964 393 | 963 394 | 963 395 | 963 396 | 963 397 | 963 398 | 963 399 | 963 400 | 963 401 | 963 402 | 963 403 | 963 404 | 963 405 | 963 406 | 962 407 | 962 408 | 962 409 | 962 410 | 962 411 | 962 412 | 962 413 | 962 414 | 962 415 | 962 416 | 961 417 | 961 418 | 961 419 | 961 420 | 961 421 | 961 422 | 961 423 | 961 424 | 961 425 | 961 426 | 961 427 | 961 428 | 961 429 | 960 430 | 960 431 | 960 432 | 960 433 | 960 434 | 960 435 | 960 436 | 960 437 | 959 438 | 959 439 | 959 440 | 959 441 | 959 442 | 959 443 | 959 444 | 959 445 | 959 446 | 959 447 | 959 448 | 959 449 | 959 450 | 959 451 | 959 452 | 959 453 | 959 454 | 959 455 | 959 456 | 958 457 | 958 458 | 958 459 | 958 460 | 958 461 | 980 462 | 958 463 | 958 464 | 958 465 | 958 466 | 958 467 | 958 468 | 958 469 | 957 470 | 957 471 | 973 472 | 957 473 | 957 474 | 957 475 | 957 476 | 957 477 | 957 478 | 956 479 | 956 480 | 956 481 | 956 482 | 956 483 | 956 484 | 956 485 | 956 486 | 956 487 | 956 488 | 956 489 | 956 490 | 955 491 | 955 492 | 955 493 | 955 494 | 955 495 | 954 496 | 954 497 | 954 498 | 953 499 | 953 500 | 953 501 | 953 502 | 953 503 | 953 504 | 953 505 | 953 506 | 953 507 | 997 508 | 953 509 | 953 510 | 993 511 | 953 512 | 952 513 | 952 514 | 952 515 | 952 516 | 952 517 | 952 518 | 952 519 | 952 520 | 952 521 | 952 522 | 952 523 | 952 524 | 952 525 | 952 526 | 951 527 | 967 528 | 951 529 | 951 530 | 951 531 | 951 532 | 951 533 | 951 534 | 951 535 | 951 536 | 950 537 | 950 538 | 950 539 | 950 540 | 950 541 | 950 542 | 950 543 | 950 544 | 949 545 | 949 546 | 949 547 | 949 548 | 949 549 | 949 550 | 949 551 | 949 552 | 948 553 | 948 554 | 948 555 | 948 556 | 948 557 | 948 558 | 948 559 | 948 560 | 948 561 | 948 562 | 948 563 | 947 564 | 947 565 | 947 566 | 947 567 | 947 568 | 947 569 | 947 570 | 947 571 | 947 572 | 947 573 | 946 574 | 946 575 | 946 576 | 946 577 | 946 578 | 946 579 | 946 580 | 946 581 | 946 582 | 946 583 | 946 584 | 946 585 | 999 586 | 945 587 | 945 588 | 945 589 | 945 590 | 945 591 | 944 592 | 944 593 | 944 594 | 944 595 | 990 596 | 944 597 | 944 598 | 944 599 | 944 600 | 944 601 | 943 602 | 943 603 | 943 604 | 943 605 | 943 606 | 975 607 | 943 608 | 943 609 | 943 610 | 943 611 | 943 612 | 942 613 | 942 614 | 942 615 | 942 616 | 942 617 | 942 618 | 942 619 | 942 620 | 942 621 | 941 622 | 941 623 | 941 624 | 941 625 | 941 626 | 941 627 | 941 628 | 941 629 | 941 630 | 941 631 | 941 632 | 941 633 | 941 634 | 941 635 | 941 636 | 941 637 | 940 638 | 940 639 | 940 640 | 940 641 | 940 642 | 940 643 | 940 644 | 940 645 | 940 646 | 940 647 | 940 648 | 940 649 | 940 650 | 939 651 | 939 652 | 939 653 | 939 654 | 939 655 | 939 656 | 939 657 | 939 658 | 939 659 | 939 660 | 939 661 | 938 662 | 938 663 | 938 664 | 938 665 | 980 666 | 938 667 | 938 668 | 938 669 | 938 670 | 938 671 | 938 672 | 938 673 | 986 674 | 938 675 | 937 676 | 937 677 | 937 678 | 937 679 | 937 680 | 937 681 | 937 682 | 937 683 | 937 684 | 937 685 | 991 686 | 962 687 | 960 688 | 937 689 | 937 690 | 937 691 | 936 692 | 936 693 | 936 694 | 936 695 | 936 696 | 936 697 | 936 698 | 936 699 | 986 700 | 936 701 | 936 702 | 935 703 | 935 704 | 935 705 | 935 706 | 935 707 | 935 708 | 935 709 | 935 710 | 935 711 | 935 712 | 935 713 | 977 714 | 935 715 | 934 716 | 934 717 | 934 718 | 934 719 | 934 720 | 934 721 | 934 722 | 934 723 | 955 724 | 934 725 | 934 726 | 969 727 | 934 728 | 934 729 | 934 730 | 934 731 | 933 732 | 933 733 | 933 734 | 933 735 | 933 736 | 933 737 | 933 738 | 933 739 | 933 740 | 933 741 | 932 742 | 932 743 | 932 744 | 932 745 | 932 746 | 932 747 | 932 748 | 932 749 | 932 750 | 932 751 | 932 752 | 932 753 | 931 754 | 931 755 | 934 756 | 931 757 | 945 758 | 931 759 | 931 760 | 931 761 | 931 762 | 931 763 | 931 764 | 931 765 | 931 766 | 931 767 | 931 768 | 940 769 | 931 770 | 931 771 | 930 772 | 930 773 | 930 774 | 930 775 | 930 776 | 930 777 | 930 778 | 930 779 | 930 780 | 930 781 | 930 782 | 929 783 | 929 784 | 929 785 | 929 786 | 929 787 | 929 788 | 928 789 | 928 790 | 928 791 | 928 792 | 928 793 | 928 794 | 928 795 | 928 796 | 928 797 | 928 798 | 928 799 | 928 800 | 928 801 | 928 802 | 927 803 | 927 804 | 927 805 | 927 806 | 927 807 | 927 808 | 927 809 | 927 810 | 927 811 | 927 812 | 926 813 | 926 814 | 926 815 | 926 816 | 926 817 | 926 818 | 926 819 | 926 820 | 926 821 | 926 822 | 925 823 | 925 824 | 925 825 | 925 826 | 925 827 | 925 828 | 925 829 | 925 830 | 925 831 | 924 832 | 924 833 | 924 834 | 924 835 | 924 836 | 924 837 | 924 838 | 924 839 | 923 840 | 923 841 | 923 842 | 923 843 | 923 844 | 923 845 | 923 846 | 990 847 | 923 848 | 923 849 | 923 850 | 923 851 | 922 852 | 922 853 | 922 854 | 922 855 | 922 856 | 922 857 | 922 858 | 922 859 | 922 860 | 922 861 | 922 862 | 921 863 | 921 864 | 921 865 | 921 866 | 921 867 | 921 868 | 920 869 | 920 870 | 920 871 | 920 872 | 920 873 | 920 874 | 919 875 | 947 876 | 929 877 | 919 878 | 919 879 | 919 880 | 919 881 | 919 882 | 919 883 | 919 884 | 984 885 | 919 886 | 988 887 | 918 888 | 918 889 | 918 890 | 918 891 | 918 892 | 918 893 | 918 894 | 980 895 | 918 896 | 918 897 | 918 898 | 918 899 | 918 900 | 917 901 | 917 902 | 917 903 | 917 904 | 917 905 | 917 906 | 917 907 | 917 908 | 917 909 | 917 910 | 916 911 | 916 912 | 958 913 | 916 914 | 916 915 | 916 916 | 916 917 | 916 918 | 916 919 | 916 920 | 916 921 | 916 922 | 916 923 | 916 924 | 916 925 | 915 926 | 915 927 | 915 928 | 915 929 | 915 930 | 915 931 | 915 932 | 915 933 | 915 934 | 915 935 | 915 936 | 915 937 | 915 938 | 915 939 | 915 940 | 914 941 | 914 942 | 914 943 | 914 944 | 914 945 | 983 946 | 914 947 | 914 948 | 914 949 | 914 950 | 914 951 | 914 952 | 914 953 | 914 954 | 914 955 | 914 956 | 971 957 | 913 958 | 913 959 | 968 960 | 913 961 | 922 962 | 913 963 | 913 964 | 913 965 | 913 966 | 913 967 | 913 968 | 913 969 | 913 970 | 913 971 | 912 972 | 912 973 | 912 974 | 912 975 | 912 976 | 912 977 | 912 978 | 912 979 | 912 980 | 912 981 | 912 982 | 912 983 | 912 984 | 911 985 | 911 986 | 911 987 | 911 988 | 911 989 | 911 990 | 911 991 | 926 992 | 911 993 | 911 994 | 910 995 | 910 996 | 910 997 | 910 998 | 910 999 | 910 1000 | 910 1001 | 910 1002 | 910 1003 | 973 1004 | 910 1005 | 910 1006 | 910 1007 | 910 1008 | 909 1009 | 909 1010 | 909 1011 | 909 1012 | 909 1013 | 909 1014 | 909 1015 | 909 1016 | 909 1017 | 944 1018 | 909 1019 | 909 1020 | 909 1021 | 908 1022 | 908 1023 | 970 1024 | 908 1025 | 908 1026 | 908 1027 | 907 1028 | 907 1029 | 907 1030 | 907 1031 | 907 1032 | 907 1033 | 907 1034 | 907 1035 | 907 1036 | 907 1037 | 907 1038 | 907 1039 | 907 1040 | 907 1041 | 906 1042 | 906 1043 | 906 1044 | 906 1045 | 906 1046 | 906 1047 | 906 1048 | 906 1049 | 906 1050 | 905 1051 | 905 1052 | 905 1053 | 905 1054 | 905 1055 | 905 1056 | 905 1057 | 905 1058 | 905 1059 | 905 1060 | 905 1061 | 904 1062 | 904 1063 | 904 1064 | 904 1065 | 904 1066 | 904 1067 | 981 1068 | 904 1069 | 904 1070 | 904 1071 | 904 1072 | 904 1073 | 904 1074 | 904 1075 | 904 1076 | 904 1077 | 904 1078 | 904 1079 | 903 1080 | 903 1081 | 903 1082 | 903 1083 | 903 1084 | 903 1085 | 989 1086 | 903 1087 | 903 1088 | 903 1089 | 903 1090 | 903 1091 | 903 1092 | 903 1093 | 902 1094 | 905 1095 | 902 1096 | 902 1097 | 902 1098 | 902 1099 | 902 1100 | 901 1101 | 901 1102 | 901 1103 | 901 1104 | 901 1105 | 901 1106 | 901 1107 | 900 1108 | 900 1109 | 900 1110 | 900 1111 | 900 1112 | 900 1113 | 900 1114 | 900 1115 | 900 1116 | 900 1117 | 900 1118 | 899 1119 | 899 1120 | 899 1121 | 899 1122 | 921 1123 | 899 1124 | 899 1125 | 963 1126 | 899 1127 | 910 1128 | 899 1129 | 899 1130 | 898 1131 | 898 1132 | 898 1133 | 898 1134 | 898 1135 | 898 1136 | 898 1137 | 898 1138 | 898 1139 | 898 1140 | 950 1141 | 898 1142 | 898 1143 | 898 1144 | 898 1145 | 897 1146 | 897 1147 | 897 1148 | 897 1149 | 897 1150 | 897 1151 | 897 1152 | 896 1153 | 896 1154 | 896 1155 | 896 1156 | 896 1157 | 896 1158 | 896 1159 | 896 1160 | 896 1161 | 896 1162 | 896 1163 | 896 1164 | 896 1165 | 896 1166 | 895 1167 | 895 1168 | 895 1169 | 895 1170 | 951 1171 | 895 1172 | 895 1173 | 895 1174 | 895 1175 | 895 1176 | 895 1177 | 895 1178 | 894 1179 | 894 1180 | 894 1181 | 894 1182 | 894 1183 | 894 1184 | 980 1185 | 894 1186 | 894 1187 | 893 1188 | 893 1189 | 893 1190 | 893 1191 | 893 1192 | 893 1193 | 893 1194 | 893 1195 | 893 1196 | 893 1197 | 893 1198 | 892 1199 | 915 1200 | 892 1201 | 892 1202 | 892 1203 | 892 1204 | 892 1205 | 933 1206 | 892 1207 | 891 1208 | 891 1209 | 891 1210 | 891 1211 | 891 1212 | 891 1213 | 891 1214 | 891 1215 | 891 1216 | 891 1217 | 891 1218 | 891 1219 | 890 1220 | 890 1221 | 938 1222 | 890 1223 | 890 1224 | 890 1225 | 890 1226 | 890 1227 | 915 1228 | 890 1229 | 890 1230 | 890 1231 | 890 1232 | 890 1233 | 889 1234 | 889 1235 | 889 1236 | 889 1237 | 889 1238 | 889 1239 | 938 1240 | 889 1241 | 889 1242 | 888 1243 | 888 1244 | 888 1245 | 888 1246 | 888 1247 | 888 1248 | 888 1249 | 888 1250 | 888 1251 | 888 1252 | 888 1253 | 887 1254 | 887 1255 | 887 1256 | 934 1257 | 933 1258 | 887 1259 | 887 1260 | 887 1261 | 887 1262 | 887 1263 | 887 1264 | 887 1265 | 887 1266 | 974 1267 | 931 1268 | 952 1269 | 887 1270 | 887 1271 | 887 1272 | 887 1273 | 886 1274 | 914 1275 | 914 1276 | 886 1277 | 886 1278 | 886 1279 | 886 1280 | 886 1281 | 886 1282 | 886 1283 | 886 1284 | 886 1285 | 886 1286 | 885 1287 | 885 1288 | 885 1289 | 885 1290 | 885 1291 | 885 1292 | 885 1293 | 885 1294 | 885 1295 | 885 1296 | 885 1297 | 885 1298 | 885 1299 | 885 1300 | 885 1301 | 884 1302 | 884 1303 | 951 1304 | 994 1305 | 884 1306 | 884 1307 | 884 1308 | 884 1309 | 884 1310 | 884 1311 | 884 1312 | 884 1313 | 884 1314 | 884 1315 | 993 1316 | 884 1317 | 883 1318 | 883 1319 | 883 1320 | 883 1321 | 883 1322 | 883 1323 | 883 1324 | 883 1325 | 883 1326 | 883 1327 | 883 1328 | 883 1329 | 883 1330 | 883 1331 | 958 1332 | 882 1333 | 882 1334 | 882 1335 | 912 1336 | 908 1337 | 882 1338 | 882 1339 | 882 1340 | 980 1341 | 935 1342 | 994 1343 | 882 1344 | 882 1345 | 882 1346 | 882 1347 | 882 1348 | 881 1349 | 881 1350 | 881 1351 | 944 1352 | 881 1353 | 881 1354 | 881 1355 | 880 1356 | 880 1357 | 880 1358 | 880 1359 | 880 1360 | 885 1361 | 880 1362 | 880 1363 | 880 1364 | 880 1365 | 880 1366 | 879 1367 | 879 1368 | 879 1369 | 879 1370 | 879 1371 | 879 1372 | 879 1373 | 878 1374 | 878 1375 | 878 1376 | 878 1377 | 878 1378 | 878 1379 | 878 1380 | 878 1381 | 878 1382 | 915 1383 | 878 1384 | 877 1385 | 877 1386 | 877 1387 | 877 1388 | 877 1389 | 877 1390 | 877 1391 | 877 1392 | 877 1393 | 876 1394 | 944 1395 | 954 1396 | 876 1397 | 876 1398 | 876 1399 | 876 1400 | 876 1401 | 876 1402 | 876 1403 | 876 1404 | 876 1405 | 957 1406 | 892 1407 | 876 1408 | 876 1409 | 876 1410 | 875 1411 | 875 1412 | 875 1413 | 909 1414 | 875 1415 | 875 1416 | 875 1417 | 875 1418 | 960 1419 | 875 1420 | 875 1421 | 874 1422 | 874 1423 | 874 1424 | 874 1425 | 874 1426 | 874 1427 | 874 1428 | 990 1429 | 874 1430 | 874 1431 | 874 1432 | 874 1433 | 874 1434 | 874 1435 | 991 1436 | 873 1437 | 873 1438 | 873 1439 | 873 1440 | 873 1441 | 873 1442 | 873 1443 | 873 1444 | 873 1445 | 873 1446 | 873 1447 | 873 1448 | 873 1449 | 873 1450 | 872 1451 | 872 1452 | 896 1453 | 872 1454 | 872 1455 | 872 1456 | 872 1457 | 872 1458 | 872 1459 | 871 1460 | 871 1461 | 975 1462 | 871 1463 | 871 1464 | 871 1465 | 900 1466 | 871 1467 | 871 1468 | 871 1469 | 871 1470 | 871 1471 | 940 1472 | 871 1473 | 871 1474 | 871 1475 | 977 1476 | 917 1477 | 871 1478 | 870 1479 | 870 1480 | 870 1481 | 870 1482 | 870 1483 | 948 1484 | 870 1485 | 871 1486 | 870 1487 | 870 1488 | 870 1489 | 870 1490 | 870 1491 | 870 1492 | 870 1493 | 869 1494 | 869 1495 | 869 1496 | 869 1497 | 869 1498 | 869 1499 | 869 1500 | 910 1501 | 868 1502 | 868 1503 | 868 1504 | 868 1505 | 868 1506 | 868 1507 | 867 1508 | 901 1509 | 879 1510 | 867 1511 | 867 1512 | 898 1513 | 867 1514 | 867 1515 | 867 1516 | 867 1517 | 867 1518 | 950 1519 | 867 1520 | 951 1521 | 897 1522 | 867 1523 | 867 1524 | 866 1525 | 866 1526 | 866 1527 | 866 1528 | 866 1529 | 866 1530 | 866 1531 | 866 1532 | 865 1533 | 865 1534 | 865 1535 | 865 1536 | 865 1537 | 865 1538 | 865 1539 | 865 1540 | 865 1541 | 865 1542 | 865 1543 | 865 1544 | 865 1545 | 973 1546 | 865 1547 | 892 1548 | 865 1549 | 865 1550 | 913 1551 | 864 1552 | 864 1553 | 864 1554 | 864 1555 | 864 1556 | 864 1557 | 864 1558 | 864 1559 | 864 1560 | 864 1561 | 864 1562 | 864 1563 | 921 1564 | 864 1565 | 864 1566 | 864 1567 | 864 1568 | 864 1569 | 864 1570 | 864 1571 | 863 1572 | 863 1573 | 863 1574 | 863 1575 | 863 1576 | 902 1577 | 863 1578 | 862 1579 | 952 1580 | 988 1581 | 862 1582 | 862 1583 | 862 1584 | 862 1585 | 862 1586 | 862 1587 | 862 1588 | 862 1589 | 987 1590 | 862 1591 | 862 1592 | 862 1593 | 862 1594 | 861 1595 | 861 1596 | 861 1597 | 861 1598 | 861 1599 | 861 1600 | 861 1601 | 861 1602 | 861 1603 | 861 1604 | 861 1605 | 861 1606 | 891 1607 | 916 1608 | 861 1609 | 860 1610 | 860 1611 | 860 1612 | 860 1613 | 860 1614 | 860 1615 | 860 1616 | 860 1617 | 918 1618 | 859 1619 | 859 1620 | 859 1621 | 859 1622 | 859 1623 | 859 1624 | 859 1625 | 859 1626 | 859 1627 | 859 1628 | 859 1629 | 859 1630 | 859 1631 | 858 1632 | 858 1633 | 858 1634 | 858 1635 | 858 1636 | 891 1637 | 883 1638 | 858 1639 | 858 1640 | 858 1641 | 858 1642 | 857 1643 | 857 1644 | 946 1645 | 857 1646 | 857 1647 | 916 1648 | 857 1649 | 857 1650 | 857 1651 | 996 1652 | 857 1653 | 857 1654 | 857 1655 | 857 1656 | 857 1657 | 857 1658 | 857 1659 | 857 1660 | 857 1661 | 856 1662 | 940 1663 | 856 1664 | 856 1665 | 856 1666 | 856 1667 | 937 1668 | 856 1669 | 856 1670 | 856 1671 | 856 1672 | 855 1673 | 855 1674 | 855 1675 | 855 1676 | 941 1677 | 912 1678 | 855 1679 | 855 1680 | 855 1681 | 977 1682 | 878 1683 | 856 1684 | 855 1685 | 855 1686 | 884 1687 | 854 1688 | 854 1689 | 854 1690 | 854 1691 | 854 1692 | 854 1693 | 854 1694 | 854 1695 | 930 1696 | 999 1697 | 854 1698 | 853 1699 | 853 1700 | 877 1701 | 853 1702 | 853 1703 | 853 1704 | 853 1705 | 853 1706 | 853 1707 | 853 1708 | 853 1709 | 853 1710 | 853 1711 | 853 1712 | 853 1713 | 853 1714 | 853 1715 | 852 1716 | 852 1717 | 852 1718 | 852 1719 | 852 1720 | 852 1721 | 852 1722 | 852 1723 | 852 1724 | 852 1725 | 886 1726 | 882 1727 | 852 1728 | 852 1729 | 852 1730 | 852 1731 | 852 1732 | 852 1733 | 852 1734 | 852 1735 | 852 1736 | 852 1737 | 851 1738 | 851 1739 | 851 1740 | 851 1741 | 997 1742 | 991 1743 | 916 1744 | 855 1745 | 851 1746 | 851 1747 | 851 1748 | 851 1749 | 982 1750 | 851 1751 | 851 1752 | 971 1753 | 851 1754 | 851 1755 | 851 1756 | 851 1757 | 850 1758 | 850 1759 | 939 1760 | 850 1761 | 850 1762 | 850 1763 | 992 1764 | 850 1765 | 850 1766 | 850 1767 | 850 1768 | 999 1769 | 850 1770 | 850 1771 | 850 1772 | 850 1773 | 988 1774 | 850 1775 | 850 1776 | 850 1777 | 850 1778 | 850 1779 | 850 1780 | 987 1781 | 850 1782 | 850 1783 | 849 1784 | 849 1785 | 849 1786 | 849 1787 | 849 1788 | 849 1789 | 849 1790 | 849 1791 | 955 1792 | 849 1793 | 849 1794 | 849 1795 | 849 1796 | 849 1797 | 849 1798 | 848 1799 | 848 1800 | 848 1801 | 848 1802 | 848 1803 | 848 1804 | 848 1805 | 848 1806 | 848 1807 | 848 1808 | 848 1809 | 848 1810 | 848 1811 | 847 1812 | 916 1813 | 847 1814 | 847 1815 | 847 1816 | 847 1817 | 847 1818 | 847 1819 | 847 1820 | 980 1821 | 847 1822 | 847 1823 | 847 1824 | 847 1825 | 846 1826 | 846 1827 | 846 1828 | 986 1829 | 846 1830 | 924 1831 | 892 1832 | 846 1833 | 846 1834 | 846 1835 | 846 1836 | 846 1837 | 846 1838 | 846 1839 | 846 1840 | 846 1841 | 845 1842 | 845 1843 | 845 1844 | 845 1845 | 845 1846 | 845 1847 | 845 1848 | 845 1849 | 845 1850 | 845 1851 | 844 1852 | 844 1853 | 844 1854 | 844 1855 | 844 1856 | 844 1857 | 844 1858 | 844 1859 | 984 1860 | 844 1861 | 999 1862 | 844 1863 | 843 1864 | 843 1865 | 843 1866 | 843 1867 | 843 1868 | 843 1869 | 843 1870 | 843 1871 | 919 1872 | 843 1873 | 842 1874 | 842 1875 | 842 1876 | 842 1877 | 842 1878 | 842 1879 | 842 1880 | 842 1881 | 842 1882 | 842 1883 | 842 1884 | 842 1885 | 842 1886 | 858 1887 | 854 1888 | 842 1889 | 841 1890 | 841 1891 | 841 1892 | 841 1893 | 841 1894 | 841 1895 | 841 1896 | 933 1897 | 841 1898 | 841 1899 | 841 1900 | 841 1901 | 998 1902 | 940 1903 | 881 1904 | 841 1905 | 840 1906 | 840 1907 | 840 1908 | 840 1909 | 989 1910 | 840 1911 | 840 1912 | 840 1913 | 840 1914 | 840 1915 | 907 1916 | 840 1917 | 840 1918 | 840 1919 | 887 1920 | 840 1921 | 839 1922 | 839 1923 | 839 1924 | 839 1925 | 839 1926 | 854 1927 | 839 1928 | 839 1929 | 839 1930 | 839 1931 | 839 1932 | 839 1933 | 839 1934 | 839 1935 | 838 1936 | 838 1937 | 838 1938 | 838 1939 | 852 1940 | 841 1941 | 838 1942 | 972 1943 | 838 1944 | 845 1945 | 838 1946 | 838 1947 | 838 1948 | 865 1949 | 838 1950 | 838 1951 | 907 1952 | 878 1953 | 838 1954 | 838 1955 | 838 1956 | 838 1957 | 838 1958 | 838 1959 | 837 1960 | 837 1961 | 837 1962 | 837 1963 | 837 1964 | 837 1965 | 837 1966 | 949 1967 | 837 1968 | 837 1969 | 837 1970 | 837 1971 | 837 1972 | 836 1973 | 836 1974 | 836 1975 | 836 1976 | 836 1977 | 836 1978 | 836 1979 | 836 1980 | 985 1981 | 835 1982 | 835 1983 | 835 1984 | 835 1985 | 835 1986 | 835 1987 | 835 1988 | 835 1989 | 835 1990 | 835 1991 | 835 1992 | 835 1993 | 835 1994 | 835 1995 | 835 1996 | 834 1997 | 834 1998 | 834 1999 | 834 2000 | 834 2001 | 834 2002 | 834 2003 | 834 2004 | 834 2005 | 834 2006 | 834 2007 | 834 2008 | 834 2009 | 834 2010 | 833 2011 | 833 2012 | 833 2013 | 833 2014 | 833 2015 | 833 2016 | 833 2017 | 833 2018 | 833 2019 | 833 2020 | 833 2021 | 833 2022 | 832 2023 | 832 2024 | 832 2025 | 832 2026 | 832 2027 | 832 2028 | 832 2029 | 832 2030 | 832 2031 | 832 2032 | 931 2033 | 832 2034 | 831 2035 | 831 2036 | 831 2037 | 865 2038 | 849 2039 | 831 2040 | 831 2041 | 831 2042 | 831 2043 | 831 2044 | 831 2045 | 831 2046 | 831 2047 | 831 2048 | 831 2049 | 831 2050 | 831 2051 | 831 2052 | 831 2053 | 831 2054 | 830 2055 | 830 2056 | 830 2057 | 830 2058 | 830 2059 | 830 2060 | 830 2061 | 830 2062 | 830 2063 | 830 2064 | 830 2065 | 830 2066 | 830 2067 | 830 2068 | 904 2069 | 892 2070 | 878 2071 | 934 2072 | 830 2073 | 829 2074 | 829 2075 | 963 2076 | 829 2077 | 829 2078 | 975 2079 | 829 2080 | 829 2081 | 985 2082 | 829 2083 | 829 2084 | 829 2085 | 829 2086 | 829 2087 | 828 2088 | 828 2089 | 828 2090 | 840 2091 | 828 2092 | 828 2093 | 828 2094 | 973 2095 | 955 2096 | 885 2097 | 828 2098 | 828 2099 | 828 2100 | 828 2101 | 828 2102 | 827 2103 | 827 2104 | 827 2105 | 827 2106 | 827 2107 | 827 2108 | 871 2109 | 827 2110 | 827 2111 | 827 2112 | 827 2113 | 826 2114 | 826 2115 | 826 2116 | 826 2117 | 826 2118 | 826 2119 | 935 2120 | 826 2121 | 826 2122 | 826 2123 | 946 2124 | 861 2125 | 826 2126 | 826 2127 | 987 2128 | 826 2129 | 825 2130 | 825 2131 | 978 2132 | 825 2133 | 825 2134 | 825 2135 | 825 2136 | 825 2137 | 825 2138 | 863 2139 | 825 2140 | 825 2141 | 825 2142 | 825 2143 | 825 2144 | 825 2145 | 825 2146 | 825 2147 | 824 2148 | 824 2149 | 824 2150 | 824 2151 | 824 2152 | 824 2153 | 824 2154 | 928 2155 | 824 2156 | 888 2157 | 824 2158 | 824 2159 | 824 2160 | 824 2161 | 824 2162 | 824 2163 | 824 2164 | 874 2165 | 936 2166 | 883 2167 | 824 2168 | 824 2169 | 824 2170 | 823 2171 | 902 2172 | 823 2173 | 823 2174 | 823 2175 | 823 2176 | 823 2177 | 950 2178 | 823 2179 | 823 2180 | 823 2181 | 823 2182 | 853 2183 | 822 2184 | 985 2185 | 822 2186 | 822 2187 | 822 2188 | 822 2189 | 822 2190 | 822 2191 | 822 2192 | 870 2193 | 822 2194 | 822 2195 | 822 2196 | 822 2197 | 822 2198 | 822 2199 | 822 2200 | 821 2201 | 821 2202 | 821 2203 | 821 2204 | 821 2205 | 821 2206 | 821 2207 | 821 2208 | 821 2209 | 821 2210 | 821 2211 | 821 2212 | 827 2213 | 820 2214 | 820 2215 | 820 2216 | 820 2217 | 820 2218 | 820 2219 | 820 2220 | 820 2221 | 819 2222 | 819 2223 | 819 2224 | 819 2225 | 819 2226 | 819 2227 | 819 2228 | 945 2229 | 819 2230 | 819 2231 | 819 2232 | 819 2233 | 819 2234 | 818 2235 | 818 2236 | 818 2237 | 836 2238 | 818 2239 | 818 2240 | 818 2241 | 817 2242 | 817 2243 | 817 2244 | 817 2245 | 817 2246 | 817 2247 | 817 2248 | 817 2249 | 817 2250 | 817 2251 | 982 2252 | 819 2253 | 817 2254 | 817 2255 | 821 2256 | 817 2257 | 817 2258 | 817 2259 | 816 2260 | 819 2261 | 816 2262 | 816 2263 | 816 2264 | 816 2265 | 816 2266 | 816 2267 | 816 2268 | 816 2269 | 816 2270 | 816 2271 | 902 2272 | 816 2273 | 816 2274 | 815 2275 | 815 2276 | 815 2277 | 815 2278 | 912 2279 | 815 2280 | 815 2281 | 815 2282 | 815 2283 | 815 2284 | 815 2285 | 815 2286 | 971 2287 | 861 2288 | 984 2289 | 956 2290 | 815 2291 | 815 2292 | 814 2293 | 814 2294 | 814 2295 | 814 2296 | 814 2297 | 814 2298 | 814 2299 | 814 2300 | 970 2301 | 814 2302 | 814 2303 | 813 2304 | 845 2305 | 920 2306 | 832 2307 | 818 2308 | 813 2309 | 813 2310 | 813 2311 | 813 2312 | 813 2313 | 813 2314 | 813 2315 | 813 2316 | 813 2317 | 813 2318 | 958 2319 | 830 2320 | 812 2321 | 812 2322 | 812 2323 | 812 2324 | 812 2325 | 812 2326 | 812 2327 | 812 2328 | 811 2329 | 811 2330 | 811 2331 | 844 2332 | 811 2333 | 811 2334 | 811 2335 | 811 2336 | 811 2337 | 811 2338 | 811 2339 | 810 2340 | 810 2341 | 810 2342 | 810 2343 | 810 2344 | 810 2345 | 810 2346 | 810 2347 | 810 2348 | 827 2349 | 809 2350 | 809 2351 | 904 2352 | 809 2353 | 809 2354 | 809 2355 | 885 2356 | 809 2357 | 809 2358 | 809 2359 | 842 2360 | 809 2361 | 809 2362 | 809 2363 | 809 2364 | 809 2365 | 808 2366 | 872 2367 | 808 2368 | 808 2369 | 808 2370 | 808 2371 | 808 2372 | 808 2373 | 808 2374 | 807 2375 | 965 2376 | 807 2377 | 807 2378 | 807 2379 | 807 2380 | 807 2381 | 807 2382 | 807 2383 | 807 2384 | 996 2385 | 923 2386 | 827 2387 | 806 2388 | 884 2389 | 806 2390 | 806 2391 | 806 2392 | 892 2393 | 806 2394 | 806 2395 | 806 2396 | 865 2397 | 806 2398 | 806 2399 | 806 2400 | 806 2401 | 806 2402 | 806 2403 | 806 2404 | 806 2405 | 805 2406 | 805 2407 | 805 2408 | 805 2409 | 923 2410 | 889 2411 | 805 2412 | 805 2413 | 805 2414 | 805 2415 | 805 2416 | 805 2417 | 805 2418 | 805 2419 | 804 2420 | 804 2421 | 804 2422 | 804 2423 | 820 2424 | 804 2425 | 804 2426 | 804 2427 | 804 2428 | 804 2429 | 807 2430 | 813 2431 | 804 2432 | 804 2433 | 803 2434 | 803 2435 | 802 2436 | 802 2437 | 802 2438 | 802 2439 | 802 2440 | 802 2441 | 802 2442 | 801 2443 | 801 2444 | 868 2445 | 842 2446 | 801 2447 | 801 2448 | 801 2449 | 801 2450 | 801 2451 | 801 2452 | 801 2453 | 801 2454 | 801 2455 | 801 2456 | 801 2457 | 801 2458 | 801 2459 | 801 2460 | 801 2461 | 800 2462 | 800 2463 | 800 2464 | 800 2465 | 800 2466 | 800 2467 | 800 2468 | 800 2469 | 799 2470 | 799 2471 | 799 2472 | 799 2473 | 799 2474 | 799 2475 | 799 2476 | 850 2477 | 799 2478 | 920 2479 | 799 2480 | 870 2481 | 799 2482 | 799 2483 | 979 2484 | 819 2485 | 813 2486 | 799 2487 | 829 2488 | 799 2489 | 913 2490 | 799 2491 | 799 2492 | 799 2493 | 799 2494 | 920 2495 | 799 2496 | 799 2497 | 799 2498 | 799 2499 | 799 2500 | 833 2501 | 798 2502 | 798 2503 | 798 2504 | 798 2505 | 798 2506 | 815 2507 | 798 2508 | 798 2509 | 798 2510 | 798 2511 | 798 2512 | 798 2513 | 798 2514 | 860 2515 | 797 2516 | 797 2517 | 797 2518 | 958 2519 | 797 2520 | 797 2521 | 797 2522 | 797 2523 | 797 2524 | 797 2525 | 797 2526 | 797 2527 | 801 2528 | 797 2529 | 802 2530 | 841 2531 | 797 2532 | 797 2533 | 796 2534 | 796 2535 | 796 2536 | 796 2537 | 796 2538 | 796 2539 | 796 2540 | 819 2541 | 909 2542 | 796 2543 | 796 2544 | 796 2545 | 796 2546 | 796 2547 | 808 2548 | 809 2549 | 796 2550 | 795 2551 | 795 2552 | 795 2553 | 795 2554 | 795 2555 | 795 2556 | 795 2557 | 795 2558 | 795 2559 | 795 2560 | 795 2561 | 826 2562 | 795 2563 | 795 2564 | 795 2565 | 795 2566 | 795 2567 | 795 2568 | 795 2569 | 795 2570 | 794 2571 | 794 2572 | 863 2573 | 794 2574 | 794 2575 | 993 2576 | 794 2577 | 881 2578 | 901 2579 | 794 2580 | 794 2581 | 945 2582 | 794 2583 | 794 2584 | 794 2585 | 794 2586 | 917 2587 | 862 2588 | 794 2589 | 794 2590 | 794 2591 | 794 2592 | 856 2593 | 793 2594 | 970 2595 | 810 2596 | 797 2597 | 793 2598 | 793 2599 | 793 2600 | 793 2601 | 793 2602 | 793 2603 | 792 2604 | 792 2605 | 882 2606 | 792 2607 | 792 2608 | 792 2609 | 792 2610 | 850 2611 | 792 2612 | 841 2613 | 965 2614 | 792 2615 | 792 2616 | 791 2617 | 791 2618 | 791 2619 | 791 2620 | 791 2621 | 791 2622 | 791 2623 | 987 2624 | 896 2625 | 910 2626 | 929 2627 | 882 2628 | 791 2629 | 791 2630 | 791 2631 | 790 2632 | 790 2633 | 790 2634 | 790 2635 | 790 2636 | 790 2637 | 790 2638 | 789 2639 | 789 2640 | 789 2641 | 789 2642 | 789 2643 | 930 2644 | 789 2645 | 873 2646 | 789 2647 | 789 2648 | 789 2649 | 882 2650 | 789 2651 | 789 2652 | 810 2653 | 788 2654 | 788 2655 | 866 2656 | 788 2657 | 803 2658 | 945 2659 | 788 2660 | 788 2661 | 788 2662 | 788 2663 | 789 2664 | 788 2665 | 788 2666 | 788 2667 | 961 2668 | 915 2669 | 788 2670 | 788 2671 | 788 2672 | 788 2673 | 788 2674 | 787 2675 | 787 2676 | 787 2677 | 787 2678 | 804 2679 | 787 2680 | 787 2681 | 787 2682 | 787 2683 | 787 2684 | 786 2685 | 786 2686 | 786 2687 | 786 2688 | 786 2689 | 786 2690 | 916 2691 | 786 2692 | 786 2693 | 862 2694 | 786 2695 | 786 2696 | 786 2697 | 786 2698 | 786 2699 | 785 2700 | 785 2701 | 785 2702 | 785 2703 | 785 2704 | 785 2705 | 785 2706 | 785 2707 | 785 2708 | 785 2709 | 785 2710 | 784 2711 | 784 2712 | 784 2713 | 868 2714 | 784 2715 | 870 2716 | 901 2717 | 784 2718 | 784 2719 | 784 2720 | 784 2721 | 784 2722 | 784 2723 | 784 2724 | 784 2725 | 784 2726 | 784 2727 | 784 2728 | 784 2729 | 985 2730 | 849 2731 | 784 2732 | 894 2733 | 784 2734 | 784 2735 | 784 2736 | 784 2737 | 783 2738 | 783 2739 | 783 2740 | 783 2741 | 783 2742 | 783 2743 | 783 2744 | 783 2745 | 783 2746 | 783 2747 | 783 2748 | 783 2749 | 783 2750 | 783 2751 | 782 2752 | 782 2753 | 782 2754 | 954 2755 | 782 2756 | 782 2757 | 834 2758 | 830 2759 | 782 2760 | 782 2761 | 782 2762 | 782 2763 | 782 2764 | 782 2765 | 781 2766 | 781 2767 | 781 2768 | 781 2769 | 781 2770 | 781 2771 | 781 2772 | 781 2773 | 781 2774 | 781 2775 | 781 2776 | 819 2777 | 973 2778 | 963 2779 | 781 2780 | 781 2781 | 781 2782 | 781 2783 | 781 2784 | 1000 2785 | 962 2786 | 780 2787 | 780 2788 | 853 2789 | 780 2790 | 780 2791 | 780 2792 | 780 2793 | 780 2794 | 780 2795 | 780 2796 | 780 2797 | 780 2798 | 780 2799 | 780 2800 | 780 2801 | 780 2802 | 779 2803 | 779 2804 | 779 2805 | 779 2806 | 779 2807 | 924 2808 | 779 2809 | 953 2810 | 779 2811 | 779 2812 | 779 2813 | 779 2814 | 779 2815 | 779 2816 | 778 2817 | 778 2818 | 778 2819 | 778 2820 | 778 2821 | 778 2822 | 778 2823 | 778 2824 | 778 2825 | 778 2826 | 778 2827 | 778 2828 | 778 2829 | 837 2830 | 778 2831 | 778 2832 | 777 2833 | 777 2834 | 777 2835 | 777 2836 | 777 2837 | 777 2838 | 777 2839 | 777 2840 | 909 2841 | 777 2842 | 777 2843 | 776 2844 | 912 2845 | 832 2846 | 776 2847 | 776 2848 | 776 2849 | 776 2850 | 776 2851 | 776 2852 | 899 2853 | 776 2854 | 841 2855 | 828 2856 | 776 2857 | 776 2858 | 967 2859 | 905 2860 | 858 2861 | 776 2862 | 840 2863 | 775 2864 | 775 2865 | 775 2866 | 775 2867 | 944 2868 | 983 2869 | 808 2870 | 927 2871 | 775 2872 | 775 2873 | 775 2874 | 774 2875 | 774 2876 | 774 2877 | 774 2878 | 774 2879 | 774 2880 | 774 2881 | 774 2882 | 815 2883 | 774 2884 | 774 2885 | 774 2886 | 774 2887 | 773 2888 | 773 2889 | 773 2890 | 773 2891 | 773 2892 | 773 2893 | 888 2894 | 797 2895 | 778 2896 | 773 2897 | 869 2898 | 773 2899 | 773 2900 | 773 2901 | 773 2902 | 773 2903 | 773 2904 | 868 2905 | 773 2906 | 979 2907 | 772 2908 | 808 2909 | 772 2910 | 772 2911 | 772 2912 | 772 2913 | 772 2914 | 778 2915 | 772 2916 | 772 2917 | 772 2918 | 772 2919 | 771 2920 | 771 2921 | 771 2922 | 771 2923 | 771 2924 | 771 2925 | 771 2926 | 771 2927 | 771 2928 | 771 2929 | 841 2930 | 771 2931 | 771 2932 | 771 2933 | 771 2934 | 770 2935 | 770 2936 | 770 2937 | 770 2938 | 770 2939 | 770 2940 | 770 2941 | 770 2942 | 770 2943 | 770 2944 | 770 2945 | 770 2946 | 770 2947 | 770 2948 | 770 2949 | 769 2950 | 769 2951 | 769 2952 | 769 2953 | 769 2954 | 810 2955 | 943 2956 | 880 2957 | 817 2958 | 769 2959 | 769 2960 | 769 2961 | 998 2962 | 973 2963 | 769 2964 | 769 2965 | 769 2966 | 769 2967 | 769 2968 | 769 2969 | 768 2970 | 768 2971 | 768 2972 | 839 2973 | 828 2974 | 874 2975 | 768 2976 | 768 2977 | 768 2978 | 768 2979 | 994 2980 | 975 2981 | 870 2982 | 844 2983 | 768 2984 | 877 2985 | 849 2986 | 777 2987 | 768 2988 | 768 2989 | 768 2990 | 767 2991 | 767 2992 | 767 2993 | 767 2994 | 767 2995 | 767 2996 | 875 2997 | 767 2998 | 968 2999 | 938 3000 | 869 3001 | 790 3002 | 767 3003 | 767 3004 | 767 3005 | 767 3006 | 767 3007 | 867 3008 | 767 3009 | 767 3010 | 766 3011 | 766 3012 | 896 3013 | 766 3014 | 766 3015 | 766 3016 | 766 3017 | 766 3018 | 766 3019 | 766 3020 | 929 3021 | 999 3022 | 913 3023 | 892 3024 | 994 3025 | 790 3026 | 766 3027 | 766 3028 | 766 3029 | 765 3030 | 765 3031 | 765 3032 | 906 3033 | 765 3034 | 765 3035 | 765 3036 | 765 3037 | 765 3038 | 989 3039 | 913 3040 | 765 3041 | 765 3042 | 765 3043 | 916 3044 | 765 3045 | 819 3046 | 764 3047 | 834 3048 | 764 3049 | 764 3050 | 920 3051 | 764 3052 | 764 3053 | 764 3054 | 973 3055 | 764 3056 | 798 3057 | 764 3058 | 764 3059 | 764 3060 | 848 3061 | 764 3062 | 764 3063 | 764 3064 | 764 3065 | 764 3066 | 764 3067 | 763 3068 | 763 3069 | 763 3070 | 840 3071 | 763 3072 | 990 3073 | 763 3074 | 763 3075 | 763 3076 | 763 3077 | 763 3078 | 763 3079 | 763 3080 | 762 3081 | 910 3082 | 762 3083 | 762 3084 | 762 3085 | 762 3086 | 762 3087 | 762 3088 | 829 3089 | 847 3090 | 762 3091 | 762 3092 | 762 3093 | 762 3094 | 762 3095 | 804 3096 | 790 3097 | 762 3098 | 761 3099 | 881 3100 | 761 3101 | 761 3102 | 761 3103 | 761 3104 | 980 3105 | 761 3106 | 761 3107 | 761 3108 | 811 3109 | 792 3110 | 761 3111 | 795 3112 | 976 3113 | 930 3114 | 867 3115 | 760 3116 | 760 3117 | 760 3118 | 760 3119 | 760 3120 | 952 3121 | 760 3122 | 760 3123 | 760 3124 | 760 3125 | 760 3126 | 987 3127 | 760 3128 | 975 3129 | 760 3130 | 760 3131 | 895 3132 | 889 3133 | 760 3134 | 760 3135 | 759 3136 | 759 3137 | 759 3138 | 759 3139 | 759 3140 | 831 3141 | 759 3142 | 1000 3143 | 759 3144 | 759 3145 | 758 3146 | 855 3147 | 758 3148 | 758 3149 | 758 3150 | 758 3151 | 758 3152 | 758 3153 | 758 3154 | 758 3155 | 758 3156 | 758 3157 | 946 3158 | 890 3159 | 758 3160 | 757 3161 | 757 3162 | 757 3163 | 757 3164 | 757 3165 | 757 3166 | 757 3167 | 757 3168 | 756 3169 | 756 3170 | 756 3171 | 756 3172 | 756 3173 | 756 3174 | 756 3175 | 756 3176 | 756 3177 | 756 3178 | 755 3179 | 755 3180 | 755 3181 | 755 3182 | 755 3183 | 760 3184 | 755 3185 | 755 3186 | 755 3187 | 755 3188 | 755 3189 | 755 3190 | 755 3191 | 982 3192 | 755 3193 | 968 3194 | 911 3195 | 878 3196 | 868 3197 | 796 3198 | 870 3199 | 754 3200 | 754 3201 | 915 3202 | 754 3203 | 754 3204 | 754 3205 | 754 3206 | 754 3207 | 754 3208 | 754 3209 | 754 3210 | 754 3211 | 754 3212 | 963 3213 | 970 3214 | 925 3215 | 892 3216 | 758 3217 | 754 3218 | 925 3219 | 754 3220 | 837 3221 | 754 3222 | 754 3223 | 754 3224 | 754 3225 | 977 3226 | 753 3227 | 753 3228 | 895 3229 | 753 3230 | 753 3231 | 753 3232 | 753 3233 | 753 3234 | 851 3235 | 790 3236 | 753 3237 | 911 3238 | 753 3239 | 753 3240 | 799 3241 | 753 3242 | 753 3243 | 753 3244 | 753 3245 | 753 3246 | 753 3247 | 753 3248 | 753 3249 | 753 3250 | 867 3251 | 752 3252 | 942 3253 | 828 3254 | 808 3255 | 802 3256 | 752 3257 | 822 3258 | 752 3259 | 841 3260 | 752 3261 | 752 3262 | 752 3263 | 752 3264 | 752 3265 | 752 3266 | 752 3267 | 964 3268 | 806 3269 | 751 3270 | 859 3271 | 830 3272 | 814 3273 | 751 3274 | 751 3275 | 751 3276 | 751 3277 | 751 3278 | 751 3279 | 751 3280 | 751 3281 | 751 3282 | 751 3283 | 751 3284 | 751 3285 | 751 3286 | 751 3287 | 918 3288 | 925 3289 | 844 3290 | 751 3291 | 937 3292 | 751 3293 | 1000 3294 | 767 3295 | 751 3296 | 750 3297 | 750 3298 | 750 3299 | 750 3300 | 750 3301 | 863 3302 | 750 3303 | 750 3304 | 750 3305 | 750 3306 | 749 3307 | 974 3308 | 749 3309 | 749 3310 | 749 3311 | 749 3312 | 749 3313 | 749 3314 | 806 3315 | 769 3316 | 748 3317 | 748 3318 | 748 3319 | 748 3320 | 748 3321 | 748 3322 | 748 3323 | 747 3324 | 747 3325 | 747 3326 | 747 3327 | 747 3328 | 747 3329 | 956 3330 | 747 3331 | 747 3332 | 747 3333 | 747 3334 | 746 3335 | 746 3336 | 746 3337 | 746 3338 | 746 3339 | 998 3340 | 746 3341 | 996 3342 | 746 3343 | 746 3344 | 746 3345 | 746 3346 | 746 3347 | 746 3348 | 745 3349 | 751 3350 | 891 3351 | 745 3352 | 745 3353 | 745 3354 | 745 3355 | 745 3356 | 745 3357 | 745 3358 | 744 3359 | 825 3360 | 744 3361 | 744 3362 | 744 3363 | 744 3364 | 744 3365 | 934 3366 | 744 3367 | 744 3368 | 744 3369 | 744 3370 | 915 3371 | 913 3372 | 764 3373 | 744 3374 | 949 3375 | 744 3376 | 744 3377 | 743 3378 | 743 3379 | 743 3380 | 743 3381 | 743 3382 | 743 3383 | 963 3384 | 743 3385 | 743 3386 | 743 3387 | 798 3388 | 743 3389 | 743 3390 | 743 3391 | 743 3392 | 743 3393 | 742 3394 | 742 3395 | 799 3396 | 742 3397 | 742 3398 | 742 3399 | 756 3400 | 779 3401 | 742 3402 | 742 3403 | 844 3404 | 878 3405 | 742 3406 | 742 3407 | 742 3408 | 742 3409 | 742 3410 | 780 3411 | 742 3412 | 742 3413 | 741 3414 | 741 3415 | 741 3416 | 741 3417 | 770 3418 | 893 3419 | 741 3420 | 741 3421 | 741 3422 | 741 3423 | 808 3424 | 741 3425 | 741 3426 | 741 3427 | 741 3428 | 741 3429 | 741 3430 | 741 3431 | 741 3432 | 741 3433 | 741 3434 | 741 3435 | 740 3436 | 945 3437 | 908 3438 | 740 3439 | 740 3440 | 914 3441 | 740 3442 | 948 3443 | 740 3444 | 961 3445 | 740 3446 | 830 3447 | 740 3448 | 740 3449 | 905 3450 | 986 3451 | 740 3452 | 956 3453 | 740 3454 | 740 3455 | 740 3456 | 740 3457 | 740 3458 | 740 3459 | 943 3460 | 808 3461 | 740 3462 | 740 3463 | 740 3464 | 739 3465 | 933 3466 | 739 3467 | 739 3468 | 739 3469 | 869 3470 | 739 3471 | 739 3472 | 739 3473 | 991 3474 | 739 3475 | 739 3476 | 739 3477 | 932 3478 | 738 3479 | 738 3480 | 738 3481 | 738 3482 | 738 3483 | 832 3484 | 738 3485 | 738 3486 | 738 3487 | 738 3488 | 738 3489 | 762 3490 | 738 3491 | 843 3492 | 738 3493 | 738 3494 | 738 3495 | 738 3496 | 738 3497 | 737 3498 | 737 3499 | 952 3500 | 787 3501 | 737 3502 | 737 3503 | 819 3504 | 761 3505 | 737 3506 | 737 3507 | 887 3508 | 737 3509 | 737 3510 | 737 3511 | 737 3512 | 737 3513 | 737 3514 | 965 3515 | 929 3516 | 737 3517 | 933 3518 | 736 3519 | 736 3520 | 736 3521 | 736 3522 | 736 3523 | 736 3524 | 736 3525 | 736 3526 | 736 3527 | 736 3528 | 735 3529 | 735 3530 | 735 3531 | 735 3532 | 735 3533 | 735 3534 | 735 3535 | 734 3536 | 973 3537 | 891 3538 | 734 3539 | 734 3540 | 734 3541 | 734 3542 | 734 3543 | 999 3544 | 953 3545 | 860 3546 | 800 3547 | 734 3548 | 734 3549 | 734 3550 | 734 3551 | 742 3552 | 734 3553 | 734 3554 | 734 3555 | 734 3556 | 734 3557 | 734 3558 | 734 3559 | 734 3560 | 935 3561 | 734 3562 | 734 3563 | 734 3564 | 734 3565 | 733 3566 | 781 3567 | 733 3568 | 733 3569 | 733 3570 | 733 3571 | 741 3572 | 733 3573 | 733 3574 | 857 3575 | 733 3576 | 733 3577 | 733 3578 | 733 3579 | 785 3580 | 733 3581 | 733 3582 | 733 3583 | 830 3584 | 732 3585 | 732 3586 | 732 3587 | 732 3588 | 732 3589 | 956 3590 | 788 3591 | 877 3592 | 732 3593 | 732 3594 | 732 3595 | 732 3596 | 732 3597 | 732 3598 | 732 3599 | 731 3600 | 731 3601 | 731 3602 | 740 3603 | 731 3604 | 731 3605 | 731 3606 | 891 3607 | 731 3608 | 731 3609 | 731 3610 | 731 3611 | 731 3612 | 731 3613 | 730 3614 | 939 3615 | 815 3616 | 730 3617 | 947 3618 | 738 3619 | 730 3620 | 730 3621 | 730 3622 | 730 3623 | 730 3624 | 730 3625 | 730 3626 | 730 3627 | 730 3628 | 730 3629 | 730 3630 | 730 3631 | 730 3632 | 932 3633 | 730 3634 | 730 3635 | 729 3636 | 729 3637 | 729 3638 | 729 3639 | 729 3640 | 729 3641 | 729 3642 | 729 3643 | 729 3644 | 729 3645 | 729 3646 | 729 3647 | 728 3648 | 909 3649 | 906 3650 | 728 3651 | 821 3652 | 728 3653 | 728 3654 | 728 3655 | 728 3656 | 728 3657 | 728 3658 | 763 3659 | 728 3660 | 728 3661 | 861 3662 | 749 3663 | 924 3664 | 728 3665 | 727 3666 | 727 3667 | 727 3668 | 727 3669 | 727 3670 | 822 3671 | 727 3672 | 727 3673 | 727 3674 | 988 3675 | 727 3676 | 727 3677 | 727 3678 | 735 3679 | 727 3680 | 753 3681 | 727 3682 | 883 3683 | 843 3684 | 727 3685 | 727 3686 | 726 3687 | 726 3688 | 768 3689 | 890 3690 | 726 3691 | 726 3692 | 769 3693 | 726 3694 | 726 3695 | 726 3696 | 726 3697 | 726 3698 | 726 3699 | 726 3700 | 726 3701 | 726 3702 | 726 3703 | 726 3704 | 726 3705 | 725 3706 | 937 3707 | 725 3708 | 725 3709 | 924 3710 | 824 3711 | 725 3712 | 725 3713 | 725 3714 | 725 3715 | 725 3716 | 725 3717 | 725 3718 | 724 3719 | 724 3720 | 975 3721 | 909 3722 | 789 3723 | 724 3724 | 724 3725 | 724 3726 | 724 3727 | 724 3728 | 780 3729 | 901 3730 | 724 3731 | 724 3732 | 890 3733 | 786 3734 | 724 3735 | 724 3736 | 724 3737 | 724 3738 | 983 3739 | 913 3740 | 897 3741 | 724 3742 | 724 3743 | 724 3744 | 724 3745 | 723 3746 | 840 3747 | 723 3748 | 723 3749 | 723 3750 | 723 3751 | 723 3752 | 723 3753 | 723 3754 | 723 3755 | 723 3756 | 723 3757 | 985 3758 | 723 3759 | 723 3760 | 722 3761 | 722 3762 | 722 3763 | 722 3764 | 870 3765 | 722 3766 | 722 3767 | 722 3768 | 833 3769 | 722 3770 | 722 3771 | 721 3772 | 796 3773 | 910 3774 | 744 3775 | 721 3776 | 973 3777 | 842 3778 | 765 3779 | 747 3780 | 721 3781 | 977 3782 | 965 3783 | 721 3784 | 825 3785 | 882 3786 | 782 3787 | 721 3788 | 721 3789 | 721 3790 | 941 3791 | 721 3792 | 721 3793 | 721 3794 | 800 3795 | 960 3796 | 724 3797 | 721 3798 | 721 3799 | 721 3800 | 721 3801 | 721 3802 | 721 3803 | 929 3804 | 721 3805 | 721 3806 | 720 3807 | 720 3808 | 732 3809 | 720 3810 | 720 3811 | 720 3812 | 720 3813 | 720 3814 | 720 3815 | 720 3816 | 720 3817 | 720 3818 | 720 3819 | 720 3820 | 720 3821 | 720 3822 | 720 3823 | 720 3824 | 935 3825 | 849 3826 | 720 3827 | 720 3828 | 720 3829 | 719 3830 | 855 3831 | 765 3832 | 719 3833 | 719 3834 | 719 3835 | 719 3836 | 944 3837 | 962 3838 | 719 3839 | 719 3840 | 964 3841 | 899 3842 | 848 3843 | 821 3844 | 810 3845 | 752 3846 | 719 3847 | 719 3848 | 719 3849 | 719 3850 | 719 3851 | 719 3852 | 719 3853 | 719 3854 | 718 3855 | 718 3856 | 718 3857 | 718 3858 | 802 3859 | 718 3860 | 906 3861 | 853 3862 | 774 3863 | 718 3864 | 718 3865 | 718 3866 | 718 3867 | 718 3868 | 718 3869 | 979 3870 | 986 3871 | 718 3872 | 718 3873 | 990 3874 | 805 3875 | 718 3876 | 718 3877 | 718 3878 | 718 3879 | 956 3880 | 717 3881 | 771 3882 | 717 3883 | 761 3884 | 717 3885 | 717 3886 | 797 3887 | 976 3888 | 749 3889 | 717 3890 | 717 3891 | 976 3892 | 717 3893 | 717 3894 | 717 3895 | 716 3896 | 716 3897 | 716 3898 | 716 3899 | 716 3900 | 716 3901 | 767 3902 | 716 3903 | 716 3904 | 857 3905 | 787 3906 | 716 3907 | 769 3908 | 716 3909 | 731 3910 | 716 3911 | 848 3912 | 716 3913 | 716 3914 | 715 3915 | 715 3916 | 715 3917 | 715 3918 | 715 3919 | 715 3920 | 715 3921 | 715 3922 | 829 3923 | 715 3924 | 715 3925 | 715 3926 | 715 3927 | 715 3928 | 715 3929 | 743 3930 | 715 3931 | 714 3932 | 714 3933 | 714 3934 | 944 3935 | 888 3936 | 865 3937 | 791 3938 | 939 3939 | 783 3940 | 714 3941 | 714 3942 | 714 3943 | 993 3944 | 961 3945 | 920 3946 | 714 3947 | 714 3948 | 714 3949 | 714 3950 | 746 3951 | 714 3952 | 714 3953 | 923 3954 | 922 3955 | 714 3956 | 714 3957 | 714 3958 | 714 3959 | 714 3960 | 714 3961 | 713 3962 | 713 3963 | 713 3964 | 713 3965 | 713 3966 | 713 3967 | 713 3968 | 713 3969 | 713 3970 | 713 3971 | 850 3972 | 947 3973 | 713 3974 | 848 3975 | 837 3976 | 712 3977 | 850 3978 | 712 3979 | 712 3980 | 712 3981 | 787 3982 | 712 3983 | 754 3984 | 957 3985 | 712 3986 | 712 3987 | 712 3988 | 712 3989 | 712 3990 | 935 3991 | 921 3992 | 712 3993 | 712 3994 | 964 3995 | 712 3996 | 970 3997 | 816 3998 | 711 3999 | 711 4000 | 895 4001 | 711 4002 | 711 4003 | 711 4004 | 711 4005 | 711 4006 | 711 4007 | 711 4008 | 893 4009 | 711 4010 | 711 4011 | 711 4012 | 710 4013 | 710 4014 | 831 4015 | 710 4016 | 710 4017 | 873 4018 | 989 4019 | 946 4020 | 867 4021 | 710 4022 | 710 4023 | 960 4024 | 710 4025 | 710 4026 | 710 4027 | 710 4028 | 710 4029 | 710 4030 | 709 4031 | 709 4032 | 709 4033 | 919 4034 | 709 4035 | 987 4036 | 904 4037 | 832 4038 | 709 4039 | 912 4040 | 855 4041 | 709 4042 | 856 4043 | 709 4044 | 709 4045 | 709 4046 | 709 4047 | 709 4048 | 974 4049 | 958 4050 | 709 4051 | 708 4052 | 708 4053 | 708 4054 | 708 4055 | 835 4056 | 894 4057 | 708 4058 | 708 4059 | 708 4060 | 942 4061 | 708 4062 | 708 4063 | 708 4064 | 707 4065 | 707 4066 | 707 4067 | 707 4068 | 707 4069 | 707 4070 | 707 4071 | 707 4072 | 946 4073 | 889 4074 | 707 4075 | 707 4076 | 758 4077 | 707 4078 | 707 4079 | 944 4080 | 878 4081 | 792 4082 | 707 4083 | 707 4084 | 987 4085 | 707 4086 | 707 4087 | 982 4088 | 977 4089 | 910 4090 | 827 4091 | 769 4092 | 707 4093 | 707 4094 | 707 4095 | 707 4096 | 707 4097 | 706 4098 | 960 4099 | 719 4100 | 791 4101 | 706 4102 | 973 4103 | 706 4104 | 706 4105 | 706 4106 | 706 4107 | 706 4108 | 706 4109 | 737 4110 | 706 4111 | 706 4112 | 706 4113 | 951 4114 | 706 4115 | 705 4116 | 853 4117 | 705 4118 | 838 4119 | 705 4120 | 774 4121 | 705 4122 | 705 4123 | 705 4124 | 705 4125 | 964 4126 | 943 4127 | 705 4128 | 705 4129 | 705 4130 | 705 4131 | 705 4132 | 704 4133 | 726 4134 | 704 4135 | 704 4136 | 867 4137 | 704 4138 | 704 4139 | 704 4140 | 704 4141 | 704 4142 | 704 4143 | 704 4144 | 808 4145 | 852 4146 | 704 4147 | 704 4148 | 904 4149 | 791 4150 | 751 4151 | 704 4152 | 784 4153 | 704 4154 | 704 4155 | 703 4156 | 703 4157 | 703 4158 | 703 4159 | 703 4160 | 703 4161 | 703 4162 | 703 4163 | 703 4164 | 703 4165 | 702 4166 | 702 4167 | 702 4168 | 916 4169 | 702 4170 | 954 4171 | 702 4172 | 702 4173 | 702 4174 | 702 4175 | 702 4176 | 702 4177 | 702 4178 | 702 4179 | 702 4180 | 702 4181 | 702 4182 | 702 4183 | 702 4184 | 701 4185 | 859 4186 | 793 4187 | 701 4188 | 701 4189 | 749 4190 | 701 4191 | 861 4192 | 757 4193 | 701 4194 | 701 4195 | 701 4196 | 701 4197 | 701 4198 | 911 4199 | 701 4200 | 701 4201 | 701 4202 | 701 4203 | 701 4204 | 701 4205 | 737 4206 | 700 4207 | 700 4208 | 700 4209 | 700 4210 | 700 4211 | 958 4212 | 700 4213 | 936 4214 | 700 4215 | 700 4216 | 699 4217 | 699 4218 | 699 4219 | 699 4220 | 699 4221 | 947 4222 | 699 4223 | 724 4224 | 698 4225 | 698 4226 | 698 4227 | 698 4228 | 698 4229 | 974 4230 | 698 4231 | 698 4232 | 968 4233 | 857 4234 | 698 4235 | 698 4236 | 698 4237 | 698 4238 | 698 4239 | 697 4240 | 697 4241 | 697 4242 | 697 4243 | 697 4244 | 697 4245 | 697 4246 | 697 4247 | 697 4248 | 697 4249 | 732 4250 | 697 4251 | 771 4252 | 697 4253 | 697 4254 | 697 4255 | 697 4256 | 697 4257 | 696 4258 | 852 4259 | 696 4260 | 696 4261 | 696 4262 | 696 4263 | 696 4264 | 696 4265 | 696 4266 | 696 4267 | 974 4268 | 922 4269 | 696 4270 | 696 4271 | 696 4272 | 696 4273 | 696 4274 | 696 4275 | 746 4276 | 696 4277 | 696 4278 | 696 4279 | 696 4280 | 723 4281 | 930 4282 | 780 4283 | 708 4284 | 695 4285 | 695 4286 | 695 4287 | 695 4288 | 695 4289 | 695 4290 | 695 4291 | 695 4292 | 891 4293 | 695 4294 | 695 4295 | 695 4296 | 695 4297 | 752 4298 | 695 4299 | 695 4300 | 977 4301 | 695 4302 | 865 4303 | 695 4304 | 695 4305 | 695 4306 | 694 4307 | 694 4308 | 694 4309 | 694 4310 | 694 4311 | 694 4312 | 694 4313 | 912 4314 | 694 4315 | 928 4316 | 694 4317 | 742 4318 | 694 4319 | 694 4320 | 694 4321 | 694 4322 | 694 4323 | 694 4324 | 694 4325 | 694 4326 | 693 4327 | 693 4328 | 693 4329 | 693 4330 | 693 4331 | 693 4332 | 693 4333 | 693 4334 | 929 4335 | 693 4336 | 700 4337 | 693 4338 | 693 4339 | 693 4340 | 693 4341 | 693 4342 | 960 4343 | 938 4344 | 897 4345 | 858 4346 | 959 4347 | 789 4348 | 778 4349 | 717 4350 | 693 4351 | 692 4352 | 692 4353 | 692 4354 | 692 4355 | 946 4356 | 855 4357 | 857 4358 | 990 4359 | 840 4360 | 806 4361 | 692 4362 | 692 4363 | 692 4364 | 980 4365 | 881 4366 | 692 4367 | 692 4368 | 692 4369 | 692 4370 | 692 4371 | 692 4372 | 692 4373 | 692 4374 | 692 4375 | 767 4376 | 692 4377 | 998 4378 | 954 4379 | 915 4380 | 694 4381 | 692 4382 | 692 4383 | 692 4384 | 691 4385 | 691 4386 | 691 4387 | 691 4388 | 691 4389 | 691 4390 | 727 4391 | 691 4392 | 719 4393 | 691 4394 | 691 4395 | 691 4396 | 691 4397 | 691 4398 | 750 4399 | 691 4400 | 691 4401 | 691 4402 | 691 4403 | 691 4404 | 691 4405 | 891 4406 | 691 4407 | 691 4408 | 949 4409 | 712 4410 | 691 4411 | 691 4412 | 915 4413 | 690 4414 | 690 4415 | 690 4416 | 690 4417 | 690 4418 | 690 4419 | 690 4420 | 690 4421 | 801 4422 | 722 4423 | 690 4424 | 689 4425 | 952 4426 | 930 4427 | 689 4428 | 689 4429 | 689 4430 | 689 4431 | 689 4432 | 729 4433 | 689 4434 | 689 4435 | 737 4436 | 689 4437 | 689 4438 | 689 4439 | 689 4440 | 689 4441 | 689 4442 | 689 4443 | 928 4444 | 689 4445 | 689 4446 | 689 4447 | 689 4448 | 688 4449 | 688 4450 | 688 4451 | 688 4452 | 688 4453 | 739 4454 | 929 4455 | 729 4456 | 790 4457 | 688 4458 | 688 4459 | 768 4460 | 710 4461 | 688 4462 | 688 4463 | 688 4464 | 688 4465 | 688 4466 | 688 4467 | 688 4468 | 740 4469 | 961 4470 | 703 4471 | 688 4472 | 969 4473 | 859 4474 | 810 4475 | 688 4476 | 687 4477 | 891 4478 | 765 4479 | 687 4480 | 764 4481 | 687 4482 | 687 4483 | 993 4484 | 687 4485 | 687 4486 | 687 4487 | 687 4488 | 816 4489 | 687 4490 | 793 4491 | 695 4492 | 856 4493 | 687 4494 | 687 4495 | 687 4496 | 988 4497 | 958 4498 | 779 4499 | 902 4500 | 823 4501 | 915 4502 | 933 4503 | 743 4504 | 928 4505 | 770 4506 | 687 4507 | 687 4508 | 687 4509 | 858 4510 | 990 4511 | 799 4512 | 740 4513 | 687 4514 | 687 4515 | 982 4516 | 832 4517 | 687 4518 | 752 4519 | 686 4520 | 686 4521 | 686 4522 | 817 4523 | 686 4524 | 686 4525 | 686 4526 | 686 4527 | 686 4528 | 686 4529 | 686 4530 | 686 4531 | 686 4532 | 686 4533 | 686 4534 | 686 4535 | 686 4536 | 686 4537 | 686 4538 | 686 4539 | 686 4540 | 685 4541 | 800 4542 | 685 4543 | 685 4544 | 685 4545 | 701 4546 | 685 4547 | 685 4548 | 728 4549 | 685 4550 | 685 4551 | 685 4552 | 685 4553 | 685 4554 | 685 4555 | 685 4556 | 685 4557 | 685 4558 | 685 4559 | 684 4560 | 896 4561 | 850 4562 | 725 4563 | 684 4564 | 684 4565 | 684 4566 | 684 4567 | 994 4568 | 739 4569 | 684 4570 | 684 4571 | 684 4572 | 684 4573 | 684 4574 | 684 4575 | 684 4576 | 684 4577 | 684 4578 | 974 4579 | 940 4580 | 855 4581 | 857 4582 | 684 4583 | 684 4584 | 911 4585 | 882 4586 | 739 4587 | 888 4588 | 684 4589 | 684 4590 | 684 4591 | 684 4592 | 921 4593 | 713 4594 | 922 4595 | 683 4596 | 683 4597 | 683 4598 | 699 4599 | 683 4600 | 683 4601 | 683 4602 | 683 4603 | 683 4604 | 683 4605 | 683 4606 | 683 4607 | 682 4608 | 682 4609 | 682 4610 | 938 4611 | 682 4612 | 682 4613 | 682 4614 | 682 4615 | 682 4616 | 682 4617 | 774 4618 | 994 4619 | 726 4620 | 701 4621 | 687 4622 | 682 4623 | 682 4624 | 682 4625 | 999 4626 | 682 4627 | 681 4628 | 782 4629 | 747 4630 | 681 4631 | 681 4632 | 681 4633 | 681 4634 | 930 4635 | 681 4636 | 681 4637 | 681 4638 | 680 4639 | 680 4640 | 680 4641 | 731 4642 | 680 4643 | 680 4644 | 680 4645 | 680 4646 | 680 4647 | 680 4648 | 680 4649 | 680 4650 | 680 4651 | 680 4652 | 680 4653 | 718 4654 | 817 4655 | 679 4656 | 679 4657 | 679 4658 | 679 4659 | 679 4660 | 679 4661 | 679 4662 | 679 4663 | 679 4664 | 679 4665 | 790 4666 | 679 4667 | 718 4668 | 990 4669 | 714 4670 | 679 4671 | 679 4672 | 679 4673 | 679 4674 | 716 4675 | 679 4676 | 872 4677 | 679 4678 | 869 4679 | 678 4680 | 678 4681 | 678 4682 | 678 4683 | 678 4684 | 678 4685 | 958 4686 | 746 4687 | 878 4688 | 744 4689 | 857 4690 | 678 4691 | 678 4692 | 932 4693 | 678 4694 | 757 4695 | 678 4696 | 810 4697 | 678 4698 | 678 4699 | 678 4700 | 678 4701 | 678 4702 | 677 4703 | 677 4704 | 677 4705 | 677 4706 | 677 4707 | 677 4708 | 677 4709 | 832 4710 | 677 4711 | 677 4712 | 677 4713 | 677 4714 | 677 4715 | 810 4716 | 947 4717 | 677 4718 | 981 4719 | 677 4720 | 677 4721 | 977 4722 | 937 4723 | 677 4724 | 677 4725 | 677 4726 | 985 4727 | 677 4728 | 677 4729 | 676 4730 | 676 4731 | 676 4732 | 676 4733 | 676 4734 | 726 4735 | 676 4736 | 676 4737 | 676 4738 | 675 4739 | 812 4740 | 675 4741 | 675 4742 | 675 4743 | 712 4744 | 675 4745 | 949 4746 | 675 4747 | 675 4748 | 675 4749 | 675 4750 | 910 4751 | 906 4752 | 963 4753 | 948 4754 | 698 4755 | 690 4756 | 675 4757 | 841 4758 | 675 4759 | 675 4760 | 904 4761 | 960 4762 | 819 4763 | 733 4764 | 675 4765 | 675 4766 | 675 4767 | 675 4768 | 801 4769 | 674 4770 | 674 4771 | 674 4772 | 727 4773 | 674 4774 | 674 4775 | 674 4776 | 674 4777 | 674 4778 | 674 4779 | 864 4780 | 699 4781 | 674 4782 | 674 4783 | 674 4784 | 674 4785 | 674 4786 | 674 4787 | 674 4788 | 674 4789 | 974 4790 | 674 4791 | 673 4792 | 673 4793 | 673 4794 | 841 4795 | 673 4796 | 673 4797 | 682 4798 | 673 4799 | 673 4800 | 673 4801 | 885 4802 | 673 4803 | 673 4804 | 673 4805 | 673 4806 | 672 4807 | 672 4808 | 672 4809 | 672 4810 | 672 4811 | 672 4812 | 672 4813 | 672 4814 | 672 4815 | 697 4816 | 672 4817 | 763 4818 | 672 4819 | 672 4820 | 672 4821 | 672 4822 | 672 4823 | 672 4824 | 672 4825 | 672 4826 | 672 4827 | 672 4828 | 774 4829 | 734 4830 | 672 4831 | 671 4832 | 671 4833 | 834 4834 | 905 4835 | 863 4836 | 850 4837 | 671 4838 | 671 4839 | 671 4840 | 671 4841 | 671 4842 | 754 4843 | 671 4844 | 671 4845 | 671 4846 | 671 4847 | 671 4848 | 671 4849 | 671 4850 | 958 4851 | 921 4852 | 671 4853 | 671 4854 | 671 4855 | 671 4856 | 671 4857 | 671 4858 | 671 4859 | 935 4860 | 839 4861 | 826 4862 | 675 4863 | 671 4864 | 671 4865 | 671 4866 | 910 4867 | 919 4868 | 831 4869 | 671 4870 | 670 4871 | 677 4872 | 670 4873 | 746 4874 | 670 4875 | 670 4876 | 670 4877 | 670 4878 | 670 4879 | 755 4880 | 670 4881 | 670 4882 | 670 4883 | 670 4884 | 670 4885 | 670 4886 | 682 4887 | 670 4888 | 670 4889 | 670 4890 | 989 4891 | 671 4892 | 670 4893 | 670 4894 | 669 4895 | 669 4896 | 669 4897 | 765 4898 | 976 4899 | 927 4900 | 669 4901 | 669 4902 | 669 4903 | 669 4904 | 726 4905 | 669 4906 | 669 4907 | 832 4908 | 751 4909 | 669 4910 | 669 4911 | 899 4912 | 669 4913 | 669 4914 | 669 4915 | 669 4916 | 668 4917 | 668 4918 | 668 4919 | 668 4920 | 668 4921 | 833 4922 | 668 4923 | 668 4924 | 668 4925 | 668 4926 | 668 4927 | 919 4928 | 883 4929 | 799 4930 | 943 4931 | 946 4932 | 735 4933 | 668 4934 | 668 4935 | 795 4936 | 701 4937 | 999 4938 | 996 4939 | 780 4940 | 667 4941 | 667 4942 | 667 4943 | 667 4944 | 667 4945 | 667 4946 | 667 4947 | 667 4948 | 667 4949 | 666 4950 | 666 4951 | 666 4952 | 674 4953 | 936 4954 | 885 4955 | 666 4956 | 666 4957 | 666 4958 | 666 4959 | 666 4960 | 981 4961 | 882 4962 | 666 4963 | 666 4964 | 993 4965 | 780 4966 | 666 4967 | 853 4968 | 666 4969 | 923 4970 | 792 4971 | 666 4972 | 751 4973 | 666 4974 | 940 4975 | 666 4976 | 666 4977 | 666 4978 | 665 4979 | 665 4980 | 665 4981 | 999 4982 | 665 4983 | 709 4984 | 665 4985 | 665 4986 | 733 4987 | 970 4988 | 665 4989 | 964 4990 | 665 4991 | 665 4992 | 985 4993 | 790 4994 | 880 4995 | 752 4996 | 730 4997 | 695 4998 | 665 4999 | 665 5000 | 665 5001 | 665 5002 | 665 5003 | 665 5004 | 664 5005 | 664 5006 | 664 5007 | 899 5008 | 867 5009 | 728 5010 | 697 5011 | 664 5012 | 664 5013 | 664 5014 | 993 5015 | 664 5016 | 903 5017 | 816 --------------------------------------------------------------------------------