This commit is contained in:
Zengtudor 2024-11-11 10:25:30 +08:00
parent 9812197a3e
commit 0bef90129c
10 changed files with 1529 additions and 0 deletions

58
src/20241111/U75662.cpp Normal file
View File

@ -0,0 +1,58 @@
#include <algorithm>
#include <cstdint>
#include <functional>
#include <iostream>
#include <limits>
#include <ostream>
#include <queue>
#include <utility>
#include <vector>
using ll = int64_t;
const ll max_m = 1e3 + 5, max_n = max_m, inf = std::numeric_limits<ll>::max();
ll n, m, s, dists[max_n];
struct Edge{
ll u,v,x,y,t;
}edges[max_m];
int main(){
std::fill(dists, dists+max_n, inf);
std::cin>>n>>m>>s;
for(ll i{1};i<=m;i++){
std::cin>>edges[i].u>>edges[i].v>>edges[i].x>>edges[i].y>>edges[i].t;
}
std::priority_queue<std::pair<ll, ll>, std::vector<std::pair<ll, ll>>, std::greater<>> pq;
pq.emplace(0, s);
while(!pq.empty()){
const auto [dist,now] = pq.top();
pq.pop();
if(dist > dists[now])continue;
for(ll i{1};i<=m;i++){
if(edges[i].u<=now && now<=edges[i].v){
for(ll target{edges[i].x}; target<=edges[i].y; ++target){
if(dists[target] > dist + edges[i].t){
dists[target] = dist + edges[i].t;
pq.emplace(dists[target], target);
}
}
}
if(edges[i].x <= now && now<=edges[i].y){
for(ll target{edges[i].u}; target<=edges[i].v; ++target){
if(dists[target] > dist + edges[i].t){
dists[target] = dist + edges[i].t;
pq.emplace(dists[target], target);
}
}
}
}
}
for(ll i{1};i<=n;i++){
std::cout<<(dists[i]==inf?-1ll:dists[i])<<' ';
}
std::cout<<'\n'<<std::flush;
}

278
src/20241111/U75662.md Normal file
View File

@ -0,0 +1,278 @@
这是一个图论问题,涉及带权的双向路径,要求求解从起点 `s` 到所有节点的最短时间。我们需要处理一些特殊的路径——传送门,它们可以将一段路径中的任意位置快速传送到另一段路径中的任意位置。
### 问题建模
将链上的位置视作图的节点,传送门则是图中的特殊边。每个传送门可以看作是一条**多对多的路径**连接,例如:给定传送门 `(u, v, x, y, t)`,表示从 `u``v` 的任意位置可以在时间 `t` 内传送到 `x``y` 的任意位置,反之亦然。
### 基本思路
1. **图的构建**
- 将 `n` 个节点按照自然顺序连成链(每两个相邻节点之间有权重为 1 的边)。
- 根据输入,将每个传送门视为在两段路径之间添加**权重为 `t`** 的双向边。
2. **最短路径算法**
- 使用单源最短路径算法(例如 Dijkstra 算法)来求解从起点 `s` 到其他所有节点的最短路径。
- 特别地,传送门可能涉及一段范围内的多个节点,所以需要在更新路径时高效处理这些范围。
3. **细节处理**
- 需要处理范围更新的问题,即如何高效地从范围 `(u, v)``(x, y)` 传送,避免对每个节点分别遍历。
- 维护一个优先队列或队列,类似于 Dijkstra 的更新过程,确保访问和更新节点的顺序最优。
### 算法步骤
1. **初始化**
- 建立一个数组 `dist`,用来存储从起点 `s` 到每个节点的最短时间,初始化为 `-1`(表示不可达),`dist[s]` 设为 `0`
2. **构建图**
- 按顺序将相邻节点连成链。
- 读取每个传送门,将 `(u, v)``(x, y)` 视为完整的双向路径,添加权重为 `t` 的边。
3. **使用 Dijkstra 或广度优先搜索 (BFS)**
- 将初始点 `s` 加入优先队列,开始更新相邻节点的 `dist`
- 当访问到传送门起点范围 `(u, v)``(x, y)` 时,通过传送门更新目标范围的最短路径。
### 数据结构选择
- 使用**优先队列**(如 C++ 的 `std::priority_queue`)来实现 Dijkstra 算法。
- 如果 `t = 0` 边多,可以考虑**0-1 BFS**,即将权重为 0 的边放入队首、权重为 1 的边放入队尾,从而实现更快的更新。
### 算法复杂度
- **时间复杂度**$O((n + m) \log n)$,其中 `m` 是传送门数。
- **空间复杂度**$O(n + m)$,用于存储图的边和距离数组。
### 特殊情况
- 如果所有 `t = 0`,可以用 BFS 来替代 Dijkstra实现线性时间复杂度。
- 当节点无法到达时,输出 `-1`
### 实现思路
1. 构建图。
2. 初始化最短路径数组 `dist`
3. 使用 Dijkstra 更新最短路径。
4. 输出结果。
这种题目考察的是处理范围边和多对多节点连通性的能力,传送门引入了多源路径更新的复杂性,需要注意如何高效实现。
实现此问题的 C++ 解决方案需要使用 `priority_queue` 来实现 Dijkstra 算法,并有效地处理范围传送门。以下是完整的实现步骤:
### 实现步骤
1. **定义数据结构**
- 使用邻接表存储图。
- 使用 `priority_queue` 实现 Dijkstra 算法。
2. **处理传送门**
- 每个传送门对应一段范围到另一段范围的双向边,需要额外的处理逻辑。
3. **算法流程**
- 初始化 `dist` 数组并将起点加入优先队列。
- 更新节点的最短路径。
- 遇到传送门时更新目标范围的路径。
### 代码实现
```cpp
#include <iostream>
#include <vector>
#include <queue>
#include <tuple>
#include <algorithm>
#include <limits>
using namespace std;
// 定义一个结构来存储传送门信息
struct Portal {
int u, v, x, y, t;
};
// 定义常数
const int INF = numeric_limits<int>::max();
// 使用 Dijkstra 算法来求解最短路径
void dijkstra(int n, int s, const vector<Portal>& portals) {
// 最短路径数组,初始化为无穷大
vector<int> dist(n + 1, INF);
dist[s] = 0;
// 优先队列 (距离, 节点)
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;
pq.emplace(0, s);
// 开始 Dijkstra 算法
while (!pq.empty()) {
auto [current_dist, node] = pq.top();
pq.pop();
// 如果从优先队列中取出的距离大于当前记录的最短路径,跳过
if (current_dist > dist[node]) continue;
// 遍历每个传送门,检查是否可以更新路径
for (const auto& portal : portals) {
// 检查传送门的两侧范围
if ((portal.u <= node && node <= portal.v) || (portal.x <= node && node <= portal.y)) {
// 从 [u, v] 到 [x, y] 的传送
for (int target = portal.x; target <= portal.y; ++target) {
if (dist[node] + portal.t < dist[target]) {
dist[target] = dist[node] + portal.t;
pq.emplace(dist[target], target);
}
}
// 从 [x, y] 到 [u, v] 的传送
for (int target = portal.u; target <= portal.v; ++target) {
if (dist[node] + portal.t < dist[target]) {
dist[target] = dist[node] + portal.t;
pq.emplace(dist[target], target);
}
}
}
}
}
// 输出结果
for (int i = 1; i <= n; ++i) {
if (dist[i] == INF) {
cout << -1 << " ";
} else {
cout << dist[i] << " ";
}
}
cout << endl;
}
int main() {
int n, m, s;
cin >> n >> m >> s;
vector<Portal> portals(m);
for (int i = 0; i < m; ++i) {
cin >> portals[i].u >> portals[i].v >> portals[i].x >> portals[i].y >> portals[i].t;
}
// 调用 Dijkstra 算法来求解最短路径
dijkstra(n, s, portals);
return 0;
}
```
### 说明
1. **输入和输出**
- 输入格式:从标准输入读取节点数 `n`、传送门数 `m`、起点 `s`,以及 `m` 个传送门的定义。
- 输出格式:输出从起点 `s` 到所有其他节点的最短路径,如果无法到达则输出 `-1`
2. **优化**
- 处理传送门时,遍历范围可能会影响性能,可使用更复杂的数据结构如线段树或平衡树优化范围更新。
### 复杂度分析
- **时间复杂度**:最坏情况下 $O((n + m) \log n)$,其中 `n` 是节点数,`m` 是传送门数。
- **空间复杂度**$O(n + m)$,用于存储图和距离数组。
此代码实现了求解最短路径的逻辑,并考虑了传送门带来的多对多路径更新。
实现此问题的 C++ 解决方案需要使用 `priority_queue` 来实现 Dijkstra 算法,并有效地处理范围传送门。以下是完整的实现步骤:
### 实现步骤
1. **定义数据结构**
- 使用邻接表存储图。
- 使用 `priority_queue` 实现 Dijkstra 算法。
2. **处理传送门**
- 每个传送门对应一段范围到另一段范围的双向边,需要额外的处理逻辑。
3. **算法流程**
- 初始化 `dist` 数组并将起点加入优先队列。
- 更新节点的最短路径。
- 遇到传送门时更新目标范围的路径。
### 代码实现
```cpp
#include <iostream>
#include <vector>
#include <queue>
#include <tuple>
#include <algorithm>
#include <limits>
using namespace std;
// 定义一个结构来存储传送门信息
struct Portal {
int u, v, x, y, t;
};
// 定义常数
const int INF = numeric_limits<int>::max();
// 使用 Dijkstra 算法来求解最短路径
void dijkstra(int n, int s, const vector<Portal>& portals) {
// 最短路径数组,初始化为无穷大
vector<int> dist(n + 1, INF);
dist[s] = 0;
// 优先队列 (距离, 节点)
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;
pq.emplace(0, s);
// 开始 Dijkstra 算法
while (!pq.empty()) {
auto [current_dist, node] = pq.top();
pq.pop();
// 如果从优先队列中取出的距离大于当前记录的最短路径,跳过
if (current_dist > dist[node]) continue;
// 遍历每个传送门,检查是否可以更新路径
for (const auto& portal : portals) {
// 检查传送门的两侧范围
if ((portal.u <= node && node <= portal.v) || (portal.x <= node && node <= portal.y)) {
// 从 [u, v] 到 [x, y] 的传送
for (int target = portal.x; target <= portal.y; ++target) {
if (dist[node] + portal.t < dist[target]) {
dist[target] = dist[node] + portal.t;
pq.emplace(dist[target], target);
}
}
// 从 [x, y] 到 [u, v] 的传送
for (int target = portal.u; target <= portal.v; ++target) {
if (dist[node] + portal.t < dist[target]) {
dist[target] = dist[node] + portal.t;
pq.emplace(dist[target], target);
}
}
}
}
}
// 输出结果
for (int i = 1; i <= n; ++i) {
if (dist[i] == INF) {
cout << -1 << " ";
} else {
cout << dist[i] << " ";
}
}
cout << endl;
}
int main() {
int n, m, s;
cin >> n >> m >> s;
vector<Portal> portals(m);
for (int i = 0; i < m; ++i) {
cin >> portals[i].u >> portals[i].v >> portals[i].x >> portals[i].y >> portals[i].t;
}
// 调用 Dijkstra 算法来求解最短路径
dijkstra(n, s, portals);
return 0;
}
```
### 说明
1. **输入和输出**
- 输入格式:从标准输入读取节点数 `n`、传送门数 `m`、起点 `s`,以及 `m` 个传送门的定义。
- 输出格式:输出从起点 `s` 到所有其他节点的最短路径,如果无法到达则输出 `-1`
2. **优化**
- 处理传送门时,遍历范围可能会影响性能,可使用更复杂的数据结构如线段树或平衡树优化范围更新。
### 复杂度分析
- **时间复杂度**:最坏情况下 $O((n + m) \log n)$,其中 `n` 是节点数,`m` 是传送门数。
- **空间复杂度**$O(n + m)$,用于存储图和距离数组。
此代码实现了求解最短路径的逻辑,并考虑了传送门带来的多对多路径更新。

View File

@ -0,0 +1 @@
0 0 0 -1 0 0

View File

@ -0,0 +1,3 @@
6 2 1
1 1 2 3 0
3 3 5 6 0

View File

@ -0,0 +1 @@
-1 -1 154271 154271 139067 64311 110578 100171 96758 99138 99138 99138 99138 99138 99138 99138 78629 79844 99138 73260 73260 73260 73260 73260 73260 73260 73260 73260 73260 73260 95988 88739 94227 103631 129772 128697 63404 59628 59628 59628 59628 59628 59628 59628 59628 59628 59628 59628 83232 83141 83232 83232 83232 83232 83232 7169 83140 140926 68031 68031 68031 68031 51225 51225 51225 51225 51225 68031 68031 112502 112502 112502 112502 112502 87695 34018 112684 96644 96644 96644 96644 96644 85772 96644 96644 96644 96644 94557 94557 94557 94557 94557 94557 94557 84055 94557 94557 94557 145231 145231 103621 133667 142767 145231 73351 73351 73351 73351 73351 73351 73351 73351 73351 73351 73351 61516 61516 61516 61516 61516 61516 61516 61516 61516 61516 61516 117200 161898 161898 161898 161898 161898 161898 80688 -1 -1 -1 219811 123684 -1 101834 -1 -1 120344 94538 90362 85877 132618 -1 99322 159903 91208 91208 91208 91208 91208 91208 -1 128274 -1 149184 159463 88397 178645 -1 105158 105158 105158 105158 42937 105158 105158 105158 105158 75513 88958 107512 35348 88490 87744 101516 101516 101516 101516 101516 101516 101516 101516 71439 114296 114296 114296 114296 114296 0 163630 91136 97060 108098 76652

View File

@ -0,0 +1,153 @@
200 152 195
195 195 170 170 42937
124 124 31 31 34472
81 81 86 86 39171
68 68 11 11 32877
37 37 103 103 79363
73 73 179 179 50225
184 184 162 162 57947
116 116 8 8 38655
12 12 91 91 29480
122 122 50 50 21625
15 15 50 50 45919
183 183 21 21 65628
180 180 119 119 26228
112 112 179 179 15139
151 151 102 102 26236
168 168 33 33 92274
3 13 97 107 80920
26 36 181 188 28256
173 173 159 159 23116
145 145 173 173 73924
54 54 75 75 4463
144 144 113 113 46993
33 33 57 57 69904
11 11 37 37 64012
195 195 76 76 34018
164 164 18 18 98801
10 20 71 81 65120
86 86 101 101 6977
85 95 10 20 67893
199 199 13 13 76259
32 32 134 134 93367
152 157 78 88 5436
90 90 108 108 65513
20 30 66 76 39242
61 61 66 66 97612
161 161 138 138 70627
175 184 45 55 47884
121 121 177 177 75753
26 26 32 32 15479
34 34 198 198 6571
195 195 46 46 91841
147 147 180 180 43687
198 198 8 8 73484
86 86 75 75 61023
98 98 197 197 93886
126 126 83 83 24256
80 90 60 70 77487
10 20 188 194 41036
139 139 61 61 55653
79 79 52 52 39081
9 9 13 13 83980
120 120 122 122 83066
57 57 125 125 21624
70 70 65 65 81668
166 176 55 65 97989
189 189 152 152 42770
33 33 154 154 3019
32 32 71 71 89264
26 36 34 44 75203
48 48 150 150 39694
8 18 22 32 81032
64 64 18 18 28619
73 73 111 111 86533
20 20 22 22 99487
65 65 86 86 52068
15 15 31 31 49278
43 43 28 28 51412
96 96 74 74 51526
153 153 196 196 72422
145 145 145 145 21996
146 146 120 120 68108
156 156 186 186 98416
183 183 110 110 43734
197 197 145 145 3402
67 67 175 175 24288
127 127 34 34 13569
83 83 36 36 42925
55 55 25 25 99376
185 185 103 103 96874
109 109 42 42 84460
87 97 48 58 98695
68 68 37 37 55632
18 18 101 101 96732
163 163 95 95 58552
190 190 12 12 97587
105 115 68 78 39333
38 48 59 69 8403
38 38 125 125 11396
186 186 182 182 18275
25 25 117 117 32640
124 124 200 200 15136
6 6 200 200 66242
6 6 198 198 32749
176 176 66 66 37733
43 43 163 163 28769
96 96 141 141 84858
189 189 92 92 72068
121 121 90 90 57163
35 35 194 194 17528
195 195 178 178 35348
141 141 64 64 50609
41 51 24 34 61238
134 134 124 124 19172
24 24 161 161 75924
103 103 107 107 88695
60 60 17 17 10598
20 20 147 147 12617
56 56 195 195 7169
15 15 50 50 68706
102 102 119 119 72151
39 39 77 77 54566
181 181 97 97 82596
82 82 109 109 86235
120 120 8 8 78474
168 168 87 87 85799
89 89 78 78 51895
9 9 30 30 44625
32 32 167 167 75301
163 163 95 95 49617
97 97 154 154 61689
25 35 123 133 88638
34 34 91 91 81216
45 45 148 148 72990
148 148 34 34 98118
73 73 79 79 39631
63 67 52 57 44056
190 190 134 134 43579
88 98 20 30 21297
11 11 96 96 15577
9 9 48 48 67450
111 111 190 190 96485
48 48 121 121 22696
130 130 162 162 32002
189 189 7 7 39139
189 189 126 126 9923
54 54 9 9 13526
199 199 15 15 8960
116 116 170 170 59762
153 153 3 3 71245
195 195 22 22 86707
128 128 199 199 97230
163 163 169 169 57607
143 143 165 165 7928
5 5 71 71 26565
68 68 95 95 16024
175 175 146 146 14849
67 67 6 6 13086
141 141 71 71 46499
197 197 45 45 31508
37 47 116 126 1888
53 53 74 74 92937
116 116 17 17 17743

View File

@ -0,0 +1 @@
-1 -1 135640 77325 77325 77325 77325 77325 77325 77325 77325 77325 77325 77325 106200 74680 138285 79608 97089 94425 94425 94425 94425 94425 94425 94425 94425 0 94425 94425 154650 102874 102874 102874 102874 102874 102874 102874 102874 102874 95957 95957 95957 95957 95957 95957 95957 95957 95957 95957 95957 127391 127391 127391 127391 127391 97435 167803 189489 182253 158107 158107 133354 117808 110818 105540 117808 94355 94355 94355 94355 86547 94355 94355 94355 94355 94355 94355 97767 97767 97767 90451 90451 90451 90451 90451 90451 90451 90451 90451 90451 90451 119666 161362 165703 265836 122477 -1 157449 102906 126326 74523 126326 126326 117988 111663 81067 88948 88948 88948 88948 88948 80526 88948 88948 88948 88948 103411 103411 79004 103411 101660 103411 44979 103411 103411 168257 144869 139680 103534 132269 107282 108231 99030 106350 126440 138673 140609 144100 -1 -1 -1 110238 195221 106946 -1 74195 74195 74195 74195 74195 74195 74195 74195 74195 74195 74195 141405 -1 145732 132525 123776 -1 -1 107484 130275 110270 180409 94109 94109 94109 94109 94109 94109 94109 94109 94109 94109 94109 -1 -1 -1 100867 -1 149685 149744 101177 -1 153461 167228 -1 111528 -1 137059 158274 167476 -1 37285 -1 156939

View File

@ -0,0 +1,153 @@
200 152 28
27 27 31 31 96054
51 51 71 71 15379
25 25 161 161 40665
8 8 158 158 82639
47 57 64 67 21851
87 87 198 198 96464
168 168 72 72 93862
169 169 134 134 4921
46 56 32 42 74919
16 16 152 152 485
75 85 11 21 62804
185 185 128 128 4816
95 95 14 14 88378
147 157 116 126 29216
137 137 152 152 87343
119 119 133 133 4820
106 116 32 42 22348
52 52 42 42 91374
198 198 28 28 37285
139 139 132 132 93324
194 194 139 139 7041
75 75 187 187 6822
106 106 186 186 38081
102 102 150 150 328
114 124 14 15 61221
102 102 105 105 78772
4 14 26 36 77325
37 47 80 90 30452
101 101 112 112 76343
166 166 103 103 25191
105 105 169 169 23879
65 65 9 9 33493
97 97 80 80 38517
66 66 78 78 11185
161 161 112 112 43577
153 153 72 72 12352
101 111 74 84 35875
41 51 41 51 93276
160 160 80 80 47965
135 135 29 29 18291
80 90 61 71 67656
97 97 10 10 45152
99 99 189 189 33316
138 138 192 192 55720
131 131 51 51 36312
4 4 189 189 76136
107 107 115 115 38953
106 106 79 79 85747
100 100 24 24 8481
165 165 18 18 27876
138 138 54 54 16776
149 149 128 128 70674
40 40 65 65 33313
190 190 81 81 76257
129 129 77 77 45325
20 20 117 117 53646
132 132 13 13 29957
115 115 71 71 30644
136 136 5 5 49115
107 117 26 36 88948
123 123 59 59 86078
79 89 39 49 98256
130 130 113 113 23008
106 106 70 70 92023
20 30 20 30 94425
169 179 76 86 3658
50 50 13 13 23413
147 147 57 57 23240
113 113 11 11 3201
112 112 48 48 29850
138 138 86 86 50158
71 71 128 128 77770
100 100 122 122 67900
124 124 28 28 44979
118 118 50 50 17618
108 108 120 120 15994
25 25 173 173 73270
6 6 196 196 90151
144 144 105 105 77233
7 7 64 64 85279
178 178 145 145 12837
91 91 200 200 66488
18 18 134 134 20219
158 158 37 37 38531
183 183 198 198 63582
121 121 24 24 22681
161 161 117 117 81042
176 176 74 74 12367
30 30 114 114 12753
178 178 138 138 53716
129 129 93 93 61902
163 163 142 142 33107
38 38 63 63 30480
194 194 32 32 34185
67 67 40 40 22748
18 18 155 155 5413
106 106 109 109 22715
41 41 60 60 86296
122 122 51 51 58527
185 185 131 131 42997
106 106 26 26 29932
190 190 169 169 73119
18 18 171 171 37773
162 162 120 120 44772
145 145 125 125 79014
48 48 19 19 1132
68 68 99 99 63094
122 122 21 21 7235
40 40 157 157 49836
143 143 67 67 97288
93 93 166 166 64362
104 114 6 16 64658
126 126 167 167 6859
81 81 113 113 67178
24 24 138 138 76260
10 10 3 3 89788
30 30 100 100 28322
110 110 65 65 86451
51 51 172 172 65881
58 58 190 190 575
72 72 195 195 71727
170 170 19 19 8720
46 46 150 150 62497
3 13 16 26 60960
36 36 187 187 6406
111 121 35 45 64231
36 36 15 15 49186
58 58 56 56 61118
192 192 4 4 34203
18 18 35 35 81195
120 120 198 198 41719
137 137 67 67 20865
107 107 166 166 49208
25 25 110 110 39232
140 140 181 181 9726
135 135 175 175 12241
68 78 82 92 3904
156 156 15 15 60030
94 94 51 51 65405
155 155 25 25 30366
61 61 138 138 94609
143 143 27 27 15813
176 176 93 93 25557
116 116 192 192 83254
139 139 10 10 67316
157 157 107 107 6872
158 158 63 63 49377
96 96 60 60 83583
170 170 124 124 58094
75 75 127 127 73902
29 29 160 160 77612
41 51 5 15 18632

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,880 @@
1000 879 865
865 865 866 866 71394
340 340 341 341 1731
533 533 534 534 98910
209 209 210 210 92819
243 243 244 244 13996
875 875 876 876 78326
315 315 316 316 91887
705 705 706 706 62621
720 720 721 721 6292
718 718 719 719 13888
675 675 676 676 36051
853 853 854 854 33578
221 221 222 222 9078
459 459 460 460 71974
140 140 141 141 62949
147 147 148 148 77580
179 179 180 180 42920
413 413 414 414 17682
657 657 658 658 63045
313 313 314 314 96794
417 417 418 418 35267
797 797 798 798 87370
859 859 860 860 8210
830 830 831 831 99022
355 355 356 356 96493
7 7 8 8 21782
447 447 448 448 89198
471 471 472 472 28693
810 810 811 811 83294
241 241 242 242 43874
223 223 224 224 55595
50 50 51 51 34354
463 463 464 464 36102
491 491 492 492 88676
252 252 253 253 62073
712 712 713 713 88748
768 768 769 769 13474
379 379 380 380 61717
85 85 86 86 52980
81 81 82 82 73158
857 857 858 858 10462
624 624 625 625 12650
611 611 612 612 18617
646 646 647 647 49760
512 512 513 513 77144
541 541 542 542 18718
670 670 671 671 14861
197 197 198 198 17829
289 289 290 290 22292
286 286 287 287 88824
18 18 19 19 22376
265 265 266 266 74616
12 12 13 13 35319
690 690 691 691 43267
70 70 71 71 41773
77 77 78 78 21836
200 200 201 201 14884
510 510 511 511 3281
711 711 712 712 3792
632 632 633 633 34798
148 148 149 149 40513
695 695 696 696 30329
407 407 408 408 71020
672 672 673 673 40394
231 231 232 232 88106
804 804 805 805 84479
874 874 875 875 2921
331 331 332 332 49885
53 53 54 54 45177
164 164 165 165 33373
767 767 768 768 4623
230 230 231 231 9723
224 224 225 225 71637
142 142 143 143 724
390 390 391 391 18441
477 477 478 478 48487
840 840 841 841 95242
808 808 809 809 88650
343 343 344 344 56059
642 642 643 643 79929
332 332 333 333 65681
238 238 239 239 81511
715 715 716 716 56635
476 476 477 477 84622
852 852 853 853 35943
296 296 297 297 19814
383 383 384 384 31025
190 190 191 191 21930
482 482 483 483 88089
73 73 74 74 73427
668 668 669 669 50718
319 319 320 320 89686
815 815 816 816 49367
295 295 296 296 7903
4 4 5 5 17628
567 567 568 568 93437
787 787 788 788 80787
196 196 197 197 5598
93 93 94 94 4999
453 453 454 454 41339
410 410 411 411 79401
8 8 9 9 81794
199 199 200 200 2750
100 100 101 101 33138
522 522 523 523 91366
464 464 465 465 98639
576 576 577 577 46499
763 763 764 764 94855
259 259 260 260 86037
452 452 453 453 16620
43 43 44 44 67380
324 324 325 325 87226
641 641 642 642 43137
546 546 547 547 81145
484 484 485 485 7855
803 803 804 804 82551
325 325 326 326 36386
341 341 342 342 1971
854 854 855 855 64957
24 24 25 25 25051
819 819 820 820 10506
14 14 15 15 30897
468 468 469 469 71130
88 88 89 89 47809
462 462 463 463 37704
38 38 39 39 54926
273 273 274 274 79087
653 653 654 654 86080
165 165 166 166 80743
660 660 661 661 68836
130 130 131 131 65084
558 558 559 559 6703
455 455 456 456 49235
17 17 18 18 59223
429 429 430 430 90439
248 248 249 249 50430
829 829 830 830 2258
614 614 615 615 16221
158 158 159 159 57322
22 22 23 23 37685
422 422 423 423 53474
481 481 482 482 70817
348 348 349 349 24577
680 680 681 681 79610
443 443 444 444 39417
794 794 795 795 86145
266 266 267 267 78231
159 159 160 160 74529
441 441 442 442 1704
112 112 113 113 21373
169 169 170 170 29349
587 587 588 588 74005
380 380 381 381 72259
713 713 714 714 79721
423 423 424 424 33072
36 36 37 37 13485
538 538 539 539 51726
775 775 776 776 61884
204 204 205 205 97359
424 424 425 425 38919
431 431 432 432 10193
490 490 491 491 67994
312 312 313 313 25593
261 261 262 262 64482
520 520 521 521 81161
400 400 401 401 65528
659 659 660 660 70233
709 709 710 710 25440
155 155 156 156 48965
344 344 345 345 77574
800 800 801 801 19979
480 480 481 481 21005
634 634 635 635 6062
474 474 475 475 12702
173 173 174 174 24506
178 178 179 179 28929
411 411 412 412 29067
789 789 790 790 6179
336 336 337 337 86867
432 432 433 433 25848
284 284 285 285 15204
397 397 398 398 97569
216 216 217 217 39675
205 205 206 206 87542
591 591 592 592 73814
508 508 509 509 35381
799 799 800 800 17318
845 845 846 846 69691
698 698 699 699 78207
516 516 517 517 78533
878 878 879 879 63821
15 15 16 16 62265
758 758 759 759 19517
320 320 321 321 19327
52 52 53 53 2847
192 192 193 193 28101
356 356 357 357 45488
620 620 621 621 68485
176 176 177 177 78476
54 54 55 55 81958
774 774 775 775 27540
399 399 400 400 75267
661 661 662 662 94123
160 160 161 161 8637
742 742 743 743 13182
42 42 43 43 71146
704 704 705 705 14647
404 404 405 405 99931
104 104 105 105 83771
225 225 226 226 19474
434 434 435 435 99102
133 133 134 134 35572
835 835 836 836 67304
847 847 848 848 33623
409 409 410 410 34061
834 834 835 835 75930
246 246 247 247 74478
549 549 550 550 6504
579 579 580 580 48610
513 513 514 514 53344
110 110 111 111 54132
664 664 665 665 16179
268 268 269 269 74895
790 790 791 791 60337
23 23 24 24 93749
536 536 537 537 93105
55 55 56 56 88594
366 366 367 367 0
577 577 578 578 59411
765 765 766 766 29816
107 107 108 108 38958
111 111 112 112 79156
373 373 374 374 2563
251 251 252 252 92698
212 212 213 213 7623
601 601 602 602 39234
499 499 500 500 63101
377 377 378 378 43013
574 574 575 575 36890
548 548 549 549 66549
606 606 607 607 76307
873 873 874 874 35122
817 817 818 818 48603
871 871 872 872 60792
540 540 541 541 3600
310 310 311 311 50507
13 13 14 14 46814
78 78 79 79 44118
270 270 271 271 29346
867 867 868 868 32473
240 240 241 241 55111
293 293 294 294 4600
494 494 495 495 65703
757 757 758 758 79984
189 189 190 190 53743
350 350 351 351 23875
41 41 42 42 25349
813 813 814 814 91675
291 291 292 292 54979
752 752 753 753 71860
35 35 36 36 74959
403 403 404 404 7866
103 103 104 104 95744
788 788 789 789 75158
145 145 146 146 88739
699 699 700 700 34072
167 167 168 168 74068
833 833 834 834 72105
597 597 598 598 22871
488 488 489 489 48417
639 639 640 640 45432
521 521 522 522 97168
182 182 183 183 27390
811 811 812 812 67357
86 86 87 87 2213
245 245 246 246 30070
418 418 419 419 67189
306 306 307 307 62816
83 83 84 84 94407
563 563 564 564 62783
461 461 462 462 23996
842 842 843 843 58753
49 49 50 50 49335
537 537 538 538 64204
466 466 467 467 17675
473 473 474 474 7955
388 388 389 389 18172
46 46 47 47 89890
220 220 221 221 61179
582 582 583 583 89092
157 157 158 158 64907
269 269 270 270 69009
412 412 413 413 9212
779 779 780 780 29542
146 146 147 147 86057
347 347 348 348 42339
58 58 59 59 13912
236 236 237 237 11354
213 213 214 214 24324
305 305 306 306 59761
61 61 62 62 84213
74 74 75 75 739
764 764 765 765 64649
131 131 132 132 38277
469 469 470 470 97329
505 505 506 506 52622
753 753 754 754 11168
625 625 626 626 56557
500 500 501 501 27492
514 514 515 515 24243
708 708 709 709 56588
328 328 329 329 44160
371 371 372 372 66102
590 590 591 591 29147
673 673 674 674 99356
703 703 704 704 67945
748 748 749 749 89769
483 483 484 484 54911
770 770 771 771 191
693 693 694 694 17384
227 227 228 228 51102
776 776 777 777 74020
649 649 650 650 60162
545 545 546 546 13453
858 858 859 859 90282
535 535 536 536 26081
276 276 277 277 37721
87 87 88 88 48780
739 739 740 740 39853
685 685 686 686 9282
784 784 785 785 11426
636 636 637 637 29569
475 475 476 476 67846
731 731 732 732 48612
228 228 229 229 74296
414 414 415 415 54153
542 542 543 543 21984
283 283 284 284 79129
311 311 312 312 16212
109 109 110 110 47986
76 76 77 77 59127
561 561 562 562 45951
599 599 600 600 11826
69 69 70 70 34241
583 583 584 584 54596
132 132 133 133 82046
298 298 299 299 36560
219 219 220 220 2203
363 363 364 364 88883
302 302 303 303 23474
263 263 264 264 87002
37 37 38 38 93763
755 755 756 756 58763
666 666 667 667 59010
623 623 624 624 28186
401 401 402 402 73996
691 691 692 692 64806
596 596 597 597 81731
531 531 532 532 77275
856 856 857 857 52170
492 492 493 493 95756
9 9 10 10 17776
827 827 828 828 58742
162 162 163 163 14647
801 801 802 802 96567
318 318 319 319 3819
75 75 76 76 81938
208 208 209 209 15155
31 31 32 32 98312
329 329 330 330 22441
655 655 656 656 21295
543 543 544 544 84217
333 333 334 334 41757
316 316 317 317 22451
630 630 631 631 58858
743 743 744 744 10467
384 384 385 385 52645
747 747 748 748 35131
135 135 136 136 9143
725 725 726 726 67383
294 294 295 295 87142
342 342 343 343 46209
19 19 20 20 60679
239 239 240 240 35311
855 855 856 856 87822
96 96 97 97 61761
518 518 519 519 4145
304 304 305 305 86409
30 30 31 31 77722
262 262 263 263 14128
795 795 796 796 1006
806 806 807 807 52897
398 398 399 399 12617
754 754 755 755 61669
114 114 115 115 68876
139 139 140 140 42387
365 365 366 366 64416
534 534 535 535 22685
750 750 751 751 47971
760 760 761 761 60206
119 119 120 120 43836
357 357 358 358 5817
740 740 741 741 98750
805 805 806 806 18830
309 309 310 310 82832
79 79 80 80 10616
156 156 157 157 9539
301 301 302 302 77198
613 613 614 614 55217
554 554 555 555 94456
117 117 118 118 62827
370 370 371 371 32233
838 838 839 839 66979
671 671 672 672 51509
478 478 479 479 65943
539 539 540 540 85739
771 771 772 772 97338
102 102 103 103 60387
702 702 703 703 44662
168 168 169 169 71337
626 626 627 627 14329
527 527 528 528 37910
115 115 116 116 84589
287 287 288 288 14903
640 640 641 641 86591
116 116 117 117 16399
10 10 11 11 11030
719 719 720 720 24962
123 123 124 124 48354
667 667 668 668 8176
862 862 863 863 40576
495 495 496 496 34551
387 387 388 388 30617
532 532 533 533 26222
203 203 204 204 27821
726 726 727 727 29024
20 20 21 21 39263
217 217 218 218 80413
63 63 64 64 46462
825 825 826 826 41154
707 707 708 708 36428
823 823 824 824 52090
786 786 787 787 13758
721 721 722 722 88142
242 242 243 243 62892
877 877 878 878 22467
275 275 276 276 18888
367 367 368 368 57759
206 206 207 207 60014
149 149 150 150 40817
486 486 487 487 38793
34 34 35 35 7148
260 260 261 261 79632
517 517 518 518 92138
415 415 416 416 52695
736 736 737 737 82586
47 47 48 48 52042
557 557 558 558 95055
191 191 192 192 94335
124 124 125 125 12909
821 821 822 822 99417
519 519 520 520 47342
97 97 98 98 69874
207 207 208 208 62879
814 814 815 815 16030
868 868 869 869 98509
633 633 634 634 16066
791 791 792 792 35640
51 51 52 52 21101
118 118 119 119 20577
361 361 362 362 47427
816 816 817 817 40756
307 307 308 308 87954
676 676 677 677 19593
122 122 123 123 82270
826 826 827 827 981
65 65 66 66 51236
551 551 552 552 99612
3 3 4 4 3948
177 177 178 178 6251
105 105 106 106 66845
585 585 586 586 68204
837 837 838 838 53636
428 428 429 429 77793
352 352 353 353 73762
559 559 560 560 5225
681 681 682 682 52979
570 570 571 571 97621
730 730 731 731 19660
258 258 259 259 49486
828 828 829 829 84234
439 439 440 440 40917
465 465 466 466 43554
818 818 819 819 28844
170 170 171 171 66132
762 762 763 763 23093
198 198 199 199 42884
150 150 151 151 89443
493 493 494 494 2063
256 256 257 257 48513
674 674 675 675 94432
98 98 99 99 7129
233 233 234 234 12846
237 237 238 238 97164
151 151 152 152 70193
232 232 233 233 57743
511 511 512 512 47671
56 56 57 57 74978
780 780 781 781 24302
185 185 186 186 19029
729 729 730 730 87498
692 692 693 693 55897
138 138 139 139 732
6 6 7 7 64010
437 437 438 438 67363
621 621 622 622 38951
861 861 862 862 99544
427 427 428 428 71482
663 663 664 664 53590
876 876 877 877 20034
467 467 468 468 23924
327 327 328 328 87794
605 605 606 606 40886
303 303 304 304 80364
502 502 503 503 58332
697 697 698 698 36123
353 353 354 354 52199
647 647 648 648 33964
728 728 729 729 70030
382 382 383 383 62787
595 595 596 596 60609
870 870 871 871 98526
21 21 22 22 28704
552 552 553 553 30561
782 782 783 783 35946
108 108 109 109 9224
125 125 126 126 14998
454 454 455 455 93778
812 812 813 813 21738
562 562 563 563 32156
271 271 272 272 40860
436 436 437 437 97941
617 617 618 618 63817
317 317 318 318 4608
351 351 352 352 70122
215 215 216 216 3810
820 820 821 821 79432
184 184 185 185 81768
866 866 867 867 99116
863 863 864 864 12042
358 358 359 359 78077
769 769 770 770 69
749 749 750 750 71908
264 264 265 265 58121
860 860 861 861 36841
656 656 657 657 81580
756 756 757 757 95079
5 5 6 6 81464
696 696 697 697 56461
751 751 752 752 80110
163 163 164 164 9983
700 700 701 701 38209
272 272 273 273 59173
181 181 182 182 81980
274 274 275 275 14202
438 438 439 439 46016
72 72 73 73 30686
449 449 450 450 65766
498 498 499 499 20965
16 16 17 17 19989
686 686 687 687 542
602 602 603 603 74417
479 479 480 480 14541
394 394 395 395 6390
564 564 565 565 54436
524 524 525 525 2147
369 369 370 370 64791
152 152 153 153 98625
472 472 473 473 18268
638 638 639 639 832
322 322 323 323 38982
2 2 3 3 88079
645 645 646 646 4592
376 376 377 377 41369
426 426 427 427 36369
622 622 623 623 36767
669 669 670 670 48909
433 433 434 434 27774
290 290 291 291 28017
321 321 322 322 34784
127 127 128 128 62816
392 392 393 393 1385
745 745 746 746 41755
458 458 459 459 59231
201 201 202 202 25916
635 635 636 636 81479
781 781 782 782 10346
444 444 445 445 89229
798 798 799 799 43032
509 509 510 510 65979
308 308 309 309 48152
80 80 81 81 38017
40 40 41 41 2094
129 129 130 130 80100
618 618 619 619 90200
395 395 396 396 30338
378 378 379 379 75572
161 161 162 162 40239
249 249 250 250 80649
281 281 282 282 60410
59 59 60 60 55103
550 550 551 551 81605
734 734 735 735 76899
773 773 774 774 6611
391 391 392 392 91679
425 425 426 426 81064
393 393 394 394 52197
235 235 236 236 4288
710 710 711 711 61372
489 489 490 490 15419
345 345 346 346 55500
864 864 865 865 41546
580 580 581 581 48031
222 222 223 223 78431
824 824 825 825 49086
724 724 725 725 61703
759 759 760 760 21872
126 126 127 127 36877
766 766 767 767 53189
503 503 504 504 82391
84 84 85 85 19635
846 846 847 847 61154
575 575 576 576 9658
802 802 803 803 39728
141 141 142 142 53865
339 339 340 340 43178
187 187 188 188 65677
202 202 203 203 97114
879 879 880 880 75146
732 732 733 733 53068
349 349 350 350 92246
381 381 382 382 11889
714 714 715 715 72066
553 553 554 554 32916
419 419 420 420 99989
244 244 245 245 20909
267 267 268 268 72881
735 735 736 736 18166
143 143 144 144 96286
364 364 365 365 96995
44 44 45 45 60178
442 442 443 443 74277
560 560 561 561 46812
71 71 72 72 36903
183 183 184 184 10217
416 416 417 417 71654
188 188 189 189 1417
609 609 610 610 81488
337 337 338 338 11732
761 761 762 762 94980
446 446 447 447 86420
598 598 599 599 60650
285 285 286 286 64093
121 121 122 122 989
92 92 93 93 79863
64 64 65 65 69684
679 679 680 680 56251
701 701 702 702 10261
440 440 441 441 67744
101 101 102 102 90473
658 658 659 659 98633
594 594 595 595 40246
525 525 526 526 45574
154 154 155 155 28691
648 648 649 649 92434
430 430 431 431 48618
277 277 278 278 91556
869 869 870 870 93344
280 280 281 281 30322
386 386 387 387 29945
616 616 617 617 64993
792 792 793 793 80147
717 717 718 718 26538
662 662 663 663 56835
29 29 30 30 98140
450 450 451 451 15158
94 94 95 95 40276
526 526 527 527 25058
39 39 40 40 78658
777 777 778 778 62607
716 716 717 717 99926
359 359 360 360 24282
25 25 26 26 78203
68 68 69 69 79989
733 733 734 734 62696
836 836 837 837 165
572 572 573 573 73427
644 644 645 645 82933
420 420 421 421 29275
832 832 833 833 62240
288 288 289 289 56517
487 487 488 488 1256
335 335 336 336 7792
28 28 29 29 96972
772 772 773 773 86123
62 62 63 63 85728
722 722 723 723 75267
91 91 92 92 1367
389 389 390 390 22978
568 568 569 569 70436
32 32 33 33 28345
604 604 605 605 36526
144 144 145 145 31897
796 796 797 797 24405
584 584 585 585 97741
323 323 324 324 52850
153 153 154 154 30902
688 688 689 689 53119
850 850 851 851 70021
737 737 738 738 98825
448 448 449 449 21587
375 375 376 376 40051
194 194 195 195 50407
485 485 486 486 68546
589 589 590 590 28636
581 581 582 582 41393
66 66 67 67 52476
872 872 873 873 44705
292 292 293 293 77587
569 569 570 570 69584
619 619 620 620 38925
785 785 786 786 43094
172 172 173 173 61781
120 120 121 121 85361
128 128 129 129 94305
573 573 574 574 21237
793 793 794 794 6918
368 368 369 369 96018
166 166 167 167 42449
629 629 630 630 3457
592 592 593 593 87136
586 586 587 587 83440
279 279 280 280 82335
849 849 850 850 54358
809 809 810 810 89540
186 186 187 187 31430
330 330 331 331 7773
460 460 461 461 14444
628 628 629 629 58874
684 684 685 685 38517
408 408 409 409 49368
175 175 176 176 54273
654 654 655 655 53343
89 89 90 90 78708
556 556 557 557 46934
682 682 683 683 89215
741 741 742 742 38246
723 723 724 724 31174
106 106 107 107 12694
300 300 301 301 91772
282 282 283 283 23295
544 544 545 545 82162
839 839 840 840 39626
299 299 300 300 48905
90 90 91 91 21567
372 372 373 373 25067
26 26 27 27 85601
374 374 375 375 37687
193 193 194 194 31988
421 421 422 422 77065
354 354 355 355 85188
82 82 83 83 25631
435 435 436 436 11353
530 530 531 531 54197
195 195 196 196 19973
694 694 695 695 27389
600 600 601 601 30549
405 405 406 406 92915
612 612 613 613 60287
57 57 58 58 32076
338 338 339 339 53674
848 848 849 849 37283
247 247 248 248 23580
406 406 407 407 79814
631 631 632 632 56771
689 689 690 690 28219
234 234 235 235 26357
603 603 604 604 50566
134 134 135 135 76874
566 566 567 567 10465
48 48 49 49 20562
326 326 327 327 49450
851 851 852 852 82835
297 297 298 298 73665
497 497 498 498 25513
396 396 397 397 30376
314 314 315 315 74396
214 214 215 215 35332
11 11 12 12 10368
529 529 530 530 96862
210 210 211 211 31889
822 822 823 823 21476
250 250 251 251 87124
211 211 212 212 10415
346 346 347 347 73234
555 555 556 556 96231
841 841 842 842 22741
334 334 335 335 74524
254 254 255 255 56888
451 451 452 452 63259
783 783 784 784 79326
137 137 138 138 11246
496 496 497 497 39727
807 807 808 808 47509
1 1 2 2 398
578 578 579 579 62631
113 113 114 114 4683
683 683 684 684 6201
501 501 502 502 3259
278 278 279 279 40897
844 844 845 845 13493
565 565 566 566 9667
385 385 386 386 27387
180 180 181 181 59548
678 678 679 679 31111
504 504 505 505 18129
831 831 832 832 39050
571 571 572 572 57545
706 706 707 707 42974
650 650 651 651 52381
60 60 61 61 81443
665 665 666 666 50963
506 506 507 507 6711
253 253 254 254 52505
588 588 589 589 53763
33 33 34 34 21071
360 360 361 361 5207
607 607 608 608 10152
843 843 844 844 70383
746 746 747 747 7471
738 738 739 739 73385
470 470 471 471 30769
457 457 458 458 77042
229 229 230 230 3910
523 523 524 524 88360
637 637 638 638 68213
402 402 403 403 21342
67 67 68 68 86213
255 255 256 256 73536
677 677 678 678 2727
593 593 594 594 75677
226 226 227 227 61862
27 27 28 28 26390
171 171 172 172 99403
608 608 609 609 55163
95 95 96 96 95081
744 744 745 745 88803
174 174 175 175 58985
456 456 457 457 20587
45 45 46 46 30913
99 99 100 100 3347
507 507 508 508 8783
136 136 137 137 92594
515 515 516 516 27138
528 528 529 529 58958
547 547 548 548 18419
362 362 363 363 19567
615 615 616 616 34295
445 445 446 446 6295
651 651 652 652 58314
627 627 628 628 85502
778 778 779 779 80214
610 610 611 611 77921
687 687 688 688 65576
652 652 653 653 11969
218 218 219 219 54334
727 727 728 728 80442
643 643 644 644 783
257 257 258 258 23981