QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#591373 | #7999. 拉丁方 | Fido_Puppy | 100 ✓ | 2493ms | 6980kb | C++23 | 2.2kb | 2024-09-26 15:36:11 | 2024-09-26 15:36:11 |
Judging History
answer
#include <bits/stdc++.h>
#define all(x) x.begin(), x.end()
#define pb push_back
#define eb emplace_back
#define rz resize
#define MP make_pair
#define MT make_tuple
#define IT iterator
#define fi first
#define se second
#define For(i, a, b) for (int i = (int)(a); i <= (int)(b); ++i)
#define Rep(i, a, b) for (int i = (int)(a); i >= (int)(b); --i)
#define CLR(a, v) memset(a, v, sizeof(a))
#define CPY(a, b) memcpy(a, b, sizeof(a))
#define debug cerr << "ztxakking\n"
#define y0 ztxaknoi
#define y1 ztxakioi
using namespace std;
using ll = long long;
using ld = long double;
using ull = unsigned long long;
using uint = unsigned int;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pli = pair<ll, int>;
using pil = pair<int, ll>;
using vi = vector<int>;
template<typename T>
using V = vector<T>;
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
const int N = 507;
struct BipartiteGraphColoring {
int X, Y, g[N << 1][N];
void init(int l, int r) {
X = l, Y = r;
For(i, 1, X + Y) CLR(g[i], 0);
}
void add(int u, int v) {
v += X;
int x = 1, y = 1;
while (g[u][x]) ++x;
while (g[v][y]) ++y;
g[u][x] = v, g[v][y] = u;
if (x == y) return ;
for (int i = v, z = y; i; i = g[i][z], z ^= x ^ y) swap(g[i][x], g[i][y]);
}
} G;
int n, R, C, a[N][N], c[N];
bitset<N> vis;
void Main() {
cin >> n >> R >> C;
For(i, 1, n) c[i] = 0;
For(i, 1, R) For(j, 1, C) cin >> a[i][j], ++c[a[i][j]];
if (*min_element(c + 1, c + n + 1) < R + C - n) return cout << "No\n", void();
G.init(R, n);
For(i, 1, R) {
vis.reset();
For(j, 1, C) vis[a[i][j]] = 1;
For(j, 1, n) if (!vis[j]) G.add(i, j);
}
For(i, 1, R) For(j, 1, n - C) a[i][j + C] = G.g[i][j] - R;
G.init(n, n);
For(i, 1, n) {
vis.reset();
For(j, 1, R) vis[a[j][i]] = 1;
For(j, 1, n) if (!vis[j]) G.add(i, j);
}
For(i, 1, n) For(j, 1, n - R) a[j + R][i] = G.g[i][j] - n;
cout << "Yes\n";
For(i, 1, n) For(j, 1, n) cout << a[i][j] << " \n"[j == n];
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
int t; cin >> t;
while (t--) Main();
cerr << (double)(clock()) / CLOCKS_PER_SEC << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Pretests
Final Tests
Test #1:
score: 5
Accepted
time: 1ms
memory: 3964kb
input:
10 6 2 1 1 3 6 2 4 1 4 2 6 6 5 4 3 6 4 4 4 1 5 3 5 2 1 6 6 3 2 4 2 6 3 5 6 6 3 4 5 1 1 2 4 3 6 2 2 4 6 6 3 5 5 1 3 6 1 2 4 3 6 2 2 5 2 3 1 6 2 1 5 3 6 4 6 1 6 2 4 3 5 4 2 3 5 1 6 3 5 1 6 4 2 6 3 4 2 5 1 6 1 4 2 6 1 5 6 3 4 3 1 2 4 4 3 5 2 2 5 4 1
output:
Yes 1 6 3 2 4 5 3 1 2 4 5 6 6 3 4 5 2 1 5 4 1 3 6 2 4 2 5 6 1 3 2 5 6 1 3 4 Yes 1 4 2 6 3 5 6 5 4 3 1 2 3 2 6 5 4 1 4 6 5 1 2 3 5 3 1 2 6 4 2 1 3 4 5 6 Yes 4 1 5 3 2 6 5 2 1 6 4 3 6 3 2 4 5 1 2 6 3 5 1 4 3 5 4 1 6 2 1 4 6 2 3 5 Yes 4 5 1 3 6 2 1 2 4 6 5 3 3 6 2 4 1 5 2 4 6 5 3 1 6 3 5 1 2 4 5 1 3 2 ...
result:
ok ok (10 test cases)
Test #2:
score: 5
Accepted
time: 0ms
memory: 4032kb
input:
10 6 2 1 5 4 6 4 1 3 1 2 6 6 1 4 6 4 2 3 6 4 2 2 5 4 1 6 3 3 2 6 2 4 4 6 2 3 2 5 4 1 6 2 2 3 5 1 2 6 3 2 6 2 5 3 1 4 6 3 2 5 3 1 4 6 2 6 5 2 5 1 2 6 3 4 1 2 6 5 6 3 4 5 1 4 2 4 5 3 1 3 2 1 5
output:
Yes 5 6 1 2 4 3 4 1 2 3 5 6 2 4 5 6 3 1 1 3 4 5 6 2 3 5 6 1 2 4 6 2 3 4 1 5 Yes 3 4 5 1 6 2 1 5 3 6 2 4 2 3 1 4 5 6 6 1 2 3 4 5 5 6 4 2 3 1 4 2 6 5 1 3 Yes 6 4 2 3 1 5 4 3 5 6 2 1 3 6 4 1 5 2 5 2 1 4 6 3 1 5 6 2 3 4 2 1 3 5 4 6 Yes 2 5 6 3 4 1 4 1 5 6 2 3 6 3 4 2 1 5 3 2 1 4 5 6 5 4 3 1 6 2 1 6 2 5 ...
result:
ok ok (10 test cases)
Test #3:
score: 5
Accepted
time: 1ms
memory: 5992kb
input:
10 10 7 7 1 7 5 10 2 3 4 5 2 4 9 6 8 10 3 10 1 6 4 7 5 4 8 2 7 1 9 3 9 6 3 8 10 5 1 7 4 9 3 5 1 6 6 3 10 1 8 2 9 10 3 9 8 7 2 9 3 6 10 1 5 1 3 7 5 10 9 6 4 2 2 6 8 10 1 4 5 9 7 10 1 7 5 10 3 6 2 8 7 10 3 7 8 1 7 9 3 4 10 5 10 1 8 7 2 3 9 3 2 4 6 10 5 10 1 3 2 7 8 10 1 8 6 4 2 10 5 8 3 1 10 9 9 2 5 4...
output:
Yes 1 7 5 10 2 3 4 6 9 8 5 2 4 9 6 8 10 1 7 3 3 10 1 6 4 7 5 8 2 9 4 8 2 7 1 9 3 10 6 5 9 6 3 8 10 5 1 7 4 2 7 4 9 3 5 1 6 2 8 10 6 3 10 1 8 2 9 4 5 7 2 5 7 4 3 6 8 9 10 1 8 1 6 2 9 10 7 5 3 4 10 9 8 5 7 4 2 3 1 6 Yes 8 7 2 9 3 6 10 1 5 4 1 3 7 5 10 9 6 4 2 8 2 6 8 10 1 4 5 9 7 3 5 8 6 7 9 3 2 10 4 ...
result:
ok ok (10 test cases)
Test #4:
score: 5
Accepted
time: 1ms
memory: 4048kb
input:
10 10 1 1 10 10 8 8 1 7 5 2 3 6 4 10 2 3 4 7 9 8 5 6 9 8 6 10 1 5 2 3 5 10 3 9 4 7 1 8 4 6 1 8 10 2 7 9 7 5 9 4 2 3 8 1 3 2 7 6 5 10 9 4 10 9 8 1 6 4 3 5 10 4 7 10 7 5 3 6 9 4 3 8 7 9 1 4 10 6 5 4 1 10 2 3 2 4 10 8 7 5 6 10 5 2 6 7 4 2 9 5 3 10 8 1 10 4 7 9 6 5 1 4 2 10 7 4 2 8 10 5 3 10 1 3 9 7 8 5...
output:
Yes 10 1 2 3 4 5 6 7 8 9 9 4 3 5 2 6 7 8 10 1 7 10 4 6 1 3 8 5 9 2 4 8 1 7 9 10 2 6 5 3 2 7 6 9 3 8 5 10 1 4 1 6 8 4 10 2 3 9 7 5 5 2 10 8 7 1 9 3 4 6 8 9 5 2 6 4 10 1 3 7 6 3 9 10 5 7 1 4 2 8 3 5 7 1 8 9 4 2 6 10 Yes 1 7 5 2 3 6 4 10 9 8 2 3 4 7 9 8 5 6 1 10 9 8 6 10 1 5 2 3 7 4 5 10 3 9 4 7 1 8 6 ...
result:
ok ok (10 test cases)
Test #5:
score: 5
Accepted
time: 2493ms
memory: 6968kb
input:
10 500 1 39 201 443 328 346 404 472 146 117 171 389 321 403 420 280 197 343 126 315 108 39 42 278 303 11 255 330 101 422 263 281 496 110 97 159 406 241 178 187 179 500 1 362 278 200 441 177 47 404 184 261 199 492 198 470 39 71 297 72 134 157 92 313 269 40 304 168 447 290 224 181 481 218 489 374 383 ...
output:
Yes 201 443 328 346 404 472 146 117 171 389 321 403 420 280 197 343 126 315 108 39 42 278 303 11 255 330 101 422 263 281 496 110 97 159 406 241 178 187 179 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 43 44 45 46 47 48 49 50 51 52 53 54 ...
result:
ok ok (10 test cases)
Test #6:
score: 5
Accepted
time: 9ms
memory: 4540kb
input:
10 100 59 100 89 11 52 81 39 8 35 20 63 73 96 13 7 78 67 46 6 51 90 27 25 68 5 40 44 70 38 36 19 10 54 3 91 56 1 86 82 15 74 71 66 48 16 75 21 29 55 77 61 95 60 57 30 53 4 9 99 22 65 2 47 17 24 23 59 62 28 97 87 43 79 98 41 33 14 64 45 69 50 93 26 88 34 49 100 84 72 37 80 58 94 92 12 42 76 85 83 18 ...
output:
Yes 89 11 52 81 39 8 35 20 63 73 96 13 7 78 67 46 6 51 90 27 25 68 5 40 44 70 38 36 19 10 54 3 91 56 1 86 82 15 74 71 66 48 16 75 21 29 55 77 61 95 60 57 30 53 4 9 99 22 65 2 47 17 24 23 59 62 28 97 87 43 79 98 41 33 14 64 45 69 50 93 26 88 34 49 100 84 72 37 80 58 94 92 12 42 76 85 83 18 32 31 45 1...
result:
ok ok (10 test cases)
Test #7:
score: 5
Accepted
time: 10ms
memory: 6164kb
input:
10 100 87 100 1 86 29 33 80 26 57 15 60 2 52 93 100 56 32 4 96 34 85 91 43 72 19 83 16 75 39 35 64 31 82 74 36 17 14 25 63 58 54 18 22 13 94 73 98 37 68 30 20 41 10 95 45 42 61 38 78 12 49 55 84 3 53 7 81 40 47 66 92 76 59 6 79 99 89 70 77 23 62 97 28 24 44 67 88 5 46 8 9 87 27 11 65 69 21 51 71 48 ...
output:
Yes 1 86 29 33 80 26 57 15 60 2 52 93 100 56 32 4 96 34 85 91 43 72 19 83 16 75 39 35 64 31 82 74 36 17 14 25 63 58 54 18 22 13 94 73 98 37 68 30 20 41 10 95 45 42 61 38 78 12 49 55 84 3 53 7 81 40 47 66 92 76 59 6 79 99 89 70 77 23 62 97 28 24 44 67 88 5 46 8 9 87 27 11 65 69 21 51 71 48 90 50 63 5...
result:
ok ok (10 test cases)
Test #8:
score: 5
Accepted
time: 105ms
memory: 6508kb
input:
10 300 115 300 258 235 113 48 246 149 278 25 90 216 220 299 69 285 134 206 39 52 15 265 111 28 94 11 194 187 242 154 62 60 116 135 86 144 124 108 119 283 282 211 245 295 112 261 4 2 10 244 267 196 83 143 105 70 40 272 55 155 97 74 13 65 132 288 170 174 260 165 46 151 252 53 32 201 66 142 274 27 30 1...
output:
Yes 258 235 113 48 246 149 278 25 90 216 220 299 69 285 134 206 39 52 15 265 111 28 94 11 194 187 242 154 62 60 116 135 86 144 124 108 119 283 282 211 245 295 112 261 4 2 10 244 267 196 83 143 105 70 40 272 55 155 97 74 13 65 132 288 170 174 260 165 46 151 252 53 32 201 66 142 274 27 30 197 96 98 19...
result:
ok ok (10 test cases)
Test #9:
score: 5
Accepted
time: 138ms
memory: 5768kb
input:
10 300 39 300 153 47 152 270 96 202 24 212 109 69 160 116 133 91 150 258 246 8 295 210 223 99 178 159 32 205 101 23 213 26 89 281 117 218 106 75 215 290 104 82 113 105 174 71 297 242 197 115 221 225 5 122 286 94 9 200 28 203 33 77 108 234 12 279 7 34 154 229 62 143 186 142 275 168 196 111 25 51 156 ...
output:
Yes 153 47 152 270 96 202 24 212 109 69 160 116 133 91 150 258 246 8 295 210 223 99 178 159 32 205 101 23 213 26 89 281 117 218 106 75 215 290 104 82 113 105 174 71 297 242 197 115 221 225 5 122 286 94 9 200 28 203 33 77 108 234 12 279 7 34 154 229 62 143 186 142 275 168 196 111 25 51 156 228 193 4 ...
result:
ok ok (10 test cases)
Test #10:
score: 5
Accepted
time: 392ms
memory: 6972kb
input:
10 500 18 500 282 102 421 339 20 225 141 221 457 330 196 314 245 377 7 39 113 106 111 57 495 479 480 388 405 367 398 112 101 379 251 255 208 75 4 66 392 284 93 395 86 231 96 125 368 448 149 400 322 427 378 199 97 474 477 100 85 45 258 138 281 273 363 202 288 493 328 483 357 190 194 43 289 19 319 137...
output:
Yes 282 102 421 339 20 225 141 221 457 330 196 314 245 377 7 39 113 106 111 57 495 479 480 388 405 367 398 112 101 379 251 255 208 75 4 66 392 284 93 395 86 231 96 125 368 448 149 400 322 427 378 199 97 474 477 100 85 45 258 138 281 273 363 202 288 493 328 483 357 190 194 43 289 19 319 137 404 209 2...
result:
ok ok (10 test cases)
Test #11:
score: 5
Accepted
time: 617ms
memory: 6972kb
input:
10 500 171 146 271 474 337 28 15 9 494 482 381 404 25 74 465 378 446 11 150 160 434 199 248 419 221 354 425 265 215 94 426 197 288 287 236 223 259 8 167 453 284 499 483 473 171 62 464 383 2 476 313 116 394 293 212 182 347 457 108 325 95 82 396 96 254 432 90 79 247 351 303 110 54 459 460 311 158 415 ...
output:
Yes 271 474 337 28 15 9 494 482 381 404 25 74 465 378 446 11 150 160 434 199 248 419 221 354 425 265 215 94 426 197 288 287 236 223 259 8 167 453 284 499 483 473 171 62 464 383 2 476 313 116 394 293 212 182 347 457 108 325 95 82 396 96 254 432 90 79 247 351 303 110 54 459 460 311 158 415 469 149 268...
result:
ok ok (10 test cases)
Test #12:
score: 5
Accepted
time: 650ms
memory: 6956kb
input:
10 500 61 70 15 300 446 146 477 420 244 462 443 49 328 24 158 440 47 18 43 388 258 366 488 312 426 138 359 114 489 130 464 407 190 450 471 391 55 89 345 131 393 247 39 265 196 78 299 384 135 219 179 184 313 406 73 424 193 459 291 343 434 58 427 92 295 441 83 285 87 397 499 493 494 55 314 100 383 7 3...
output:
Yes 15 300 446 146 477 420 244 462 443 49 328 24 158 440 47 18 43 388 258 366 488 312 426 138 359 114 489 130 464 407 190 450 471 391 55 89 345 131 393 247 39 265 196 78 299 384 135 219 179 184 313 406 73 424 193 459 291 343 434 58 427 92 295 441 83 285 87 397 499 493 341 436 452 454 430 439 387 465...
result:
ok ok (10 test cases)
Test #13:
score: 5
Accepted
time: 6ms
memory: 6180kb
input:
10 100 55 94 8 91 69 56 99 10 29 79 49 39 40 78 57 26 35 28 92 45 66 51 15 82 44 9 41 60 18 67 11 81 90 27 2 36 34 59 73 23 20 95 58 3 22 84 54 87 16 63 52 88 38 80 55 1 96 14 24 17 89 21 83 53 64 71 30 85 98 74 25 31 46 70 94 13 77 86 93 61 6 7 75 19 62 42 4 33 47 50 100 48 5 32 97 68 25 10 39 68 5...
output:
Yes 8 91 69 56 99 10 29 79 49 39 40 78 57 26 35 28 92 45 66 51 15 82 44 9 41 60 18 67 11 81 90 27 2 36 34 59 73 23 20 95 58 3 22 84 54 87 16 63 52 88 38 80 55 1 96 14 24 17 89 21 83 53 64 71 30 85 98 74 25 31 46 70 94 13 77 86 93 61 6 7 75 19 62 42 4 33 47 50 100 48 5 32 97 68 72 76 12 43 65 37 25 1...
result:
ok ok (10 test cases)
Test #14:
score: 5
Accepted
time: 10ms
memory: 4588kb
input:
10 100 4 18 31 65 89 37 67 58 8 48 40 92 12 68 15 98 88 29 43 24 16 30 49 22 4 66 98 81 34 79 8 85 53 23 77 12 67 95 62 48 44 5 69 25 74 68 87 21 99 50 94 82 64 57 19 33 84 40 32 76 52 18 61 28 26 60 83 59 41 11 10 46 91 78 100 92 87 48 8 18 45 5 89 75 79 96 19 41 53 73 42 36 46 94 31 69 20 98 13 83...
output:
Yes 31 65 89 37 67 58 8 48 40 92 12 68 15 98 88 29 43 24 75 1 96 100 2 4 5 6 7 10 9 13 16 17 18 14 19 20 11 21 25 23 26 27 22 32 30 33 34 35 38 39 3 41 44 45 46 36 49 50 51 52 47 42 53 54 55 59 60 61 62 63 64 66 69 70 71 72 73 74 28 56 76 77 78 57 79 82 81 84 85 86 87 80 83 93 94 90 91 95 97 99 16 3...
result:
ok ok (10 test cases)
Test #15:
score: 5
Accepted
time: 110ms
memory: 5708kb
input:
10 300 44 46 113 257 78 212 276 158 253 150 210 278 127 237 40 149 30 63 294 143 239 49 231 70 176 111 213 203 256 192 35 69 68 250 21 23 94 41 288 171 65 126 236 44 289 137 53 129 290 230 271 87 84 251 243 127 279 48 14 174 17 194 191 154 228 297 3 82 86 195 278 143 98 241 137 20 239 30 224 100 169...
output:
Yes 113 257 78 212 276 158 253 150 210 278 127 237 40 149 30 63 294 143 239 49 231 70 176 111 213 203 256 192 35 69 68 250 21 23 94 41 288 171 65 126 236 44 289 137 53 129 267 29 258 200 1 197 247 225 260 277 169 271 285 283 229 140 273 270 274 266 263 275 286 5 281 282 4 11 269 214 8 17 9 293 300 2...
result:
ok ok (10 test cases)
Test #16:
score: 5
Accepted
time: 174ms
memory: 5780kb
input:
10 300 188 74 150 99 240 206 215 91 127 278 69 254 229 266 211 180 205 183 270 198 261 1 48 258 231 148 280 159 21 225 237 109 54 196 77 284 89 189 233 247 217 257 193 291 42 221 213 15 163 14 121 245 26 66 52 218 166 236 139 62 103 242 182 101 234 174 288 59 300 111 144 223 72 216 9 41 10 278 32 19...
output:
Yes 150 99 240 206 215 91 127 278 69 254 229 266 211 180 205 183 270 198 261 1 48 258 231 148 280 159 21 225 237 109 54 196 77 284 89 189 233 247 217 257 193 291 42 221 213 15 163 14 121 245 26 66 52 218 166 236 139 62 103 242 182 101 234 174 288 59 300 111 144 223 72 216 9 41 113 94 64 241 173 131 ...
result:
ok ok (10 test cases)
Test #17:
score: 5
Accepted
time: 400ms
memory: 6980kb
input:
10 500 137 394 193 219 137 113 369 248 464 74 408 167 383 399 482 149 154 147 6 50 69 440 437 29 286 427 307 141 228 373 296 244 273 428 44 266 341 173 255 487 114 332 416 405 367 312 323 163 133 339 20 170 26 67 96 195 241 14 205 233 291 179 478 235 381 151 185 469 82 473 441 421 311 118 350 404 23...
output:
Yes 193 219 137 113 369 248 464 74 408 167 383 399 482 149 154 147 6 50 69 440 437 29 286 427 307 141 228 373 296 244 273 428 44 266 341 173 255 487 114 332 416 405 367 312 323 163 133 339 20 170 26 67 96 195 241 14 205 233 291 179 478 235 381 151 185 469 82 473 441 421 311 118 350 404 230 218 472 3...
result:
ok ok (10 test cases)
Test #18:
score: 5
Accepted
time: 423ms
memory: 6900kb
input:
10 500 481 22 422 263 216 135 73 497 183 188 119 498 338 39 111 113 469 372 274 348 15 456 459 82 21 98 209 76 360 5 481 198 153 147 138 278 131 330 270 350 293 492 426 95 468 27 225 47 65 467 473 440 279 352 475 248 17 33 456 210 70 421 55 208 46 464 277 314 15 426 427 25 300 30 150 417 306 448 492...
output:
Yes 422 263 216 135 73 497 183 188 119 498 338 39 111 113 469 372 274 348 15 456 459 82 96 452 325 313 175 28 112 310 344 390 146 61 14 434 142 309 380 332 358 405 40 211 189 134 320 408 192 178 91 347 331 334 448 476 147 351 252 259 11 162 393 209 120 151 500 116 34 38 484 235 81 117 240 193 123 41...
result:
ok ok (10 test cases)
Test #19:
score: 5
Accepted
time: 379ms
memory: 6960kb
input:
10 500 30 446 375 376 479 293 237 104 108 215 262 4 444 241 436 121 443 195 50 166 234 165 285 315 412 469 92 159 302 44 252 9 392 487 3 495 28 96 341 253 466 352 365 32 176 401 483 60 247 8 58 371 143 68 158 201 364 42 381 240 22 272 427 183 306 235 66 144 438 138 437 208 52 122 174 209 15 102 445 ...
output:
Yes 375 376 479 293 237 104 108 215 262 4 444 241 436 121 443 195 50 166 234 165 285 315 412 469 92 159 302 44 252 9 392 487 3 495 28 96 341 253 466 352 365 32 176 401 483 60 247 8 58 371 143 68 158 201 364 42 381 240 22 272 427 183 306 235 66 144 438 138 437 208 52 122 174 209 15 102 445 428 465 85...
result:
ok ok (10 test cases)
Test #20:
score: 5
Accepted
time: 339ms
memory: 6916kb
input:
10 500 204 440 401 43 120 246 337 382 241 103 329 272 343 439 9 435 159 355 468 281 333 54 158 479 106 88 50 288 204 412 317 70 78 446 121 238 458 338 230 239 313 263 237 249 115 27 56 107 282 132 117 74 32 113 84 105 413 102 371 184 12 148 373 262 83 29 283 331 209 134 125 67 60 147 459 82 270 316 ...
output:
Yes 401 43 120 246 337 382 241 103 329 272 343 439 9 435 159 355 468 281 333 54 158 479 106 88 50 288 204 412 317 70 78 446 121 238 458 338 230 239 313 263 237 249 115 27 56 107 282 132 117 74 32 113 84 105 413 102 371 184 12 148 373 262 83 29 283 331 209 134 125 67 60 147 459 82 270 316 244 3 4 28 ...
result:
ok ok (10 test cases)