Cody

# Problem 42806. GJam 2016 Rd1A: Rank and File (Large)

Solution 880065

Submitted on 22 Apr 2016 by Alfonso Nieto-Castanon
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

### Test Suite

Test Status Code Input and Output
1   Pass
tic m=[1 2 3 2 1 2 3 5 3 2 3 5 6 4 3 ]; m=reshape(m,[],3); v=rank_file(m); vexp=[3 4 6 ]; assert(isequal(vexp,v))

2   Pass
m=[2 11 18 5 17 15 2 12 3 8 6 1 3 11 15 9 8 7 1 5 14 20 8 19 17 5 15 8 12 10 2 6 12 16 13 11 10 2 6 20 26 13 24 25 8 21 11 15 13 3 11 20 23 18 18 15 3 8 23 30 16 29 29 10 26 13 17 16 6 13 25 28 21 22 19 5 10 24 31 17 32 30 12 28 15 22 19 8 15 26 30 23 24 22 7 11 27 37 21 34 35 13 31 18 24 22 9 18 29 33 26 26 23 8 12 31 39 23 40 38 14 34 20 26 25 11 20 31 37 29 27 24 11 15 33 42 26 42 39 15 37 23 28 26 12 21 34 38 32 31 28 13 17 38 45 28 43 40 16 39 25 30 29 15 23 37 40 35 33 30 15 20 39 48 29 48 43 19 42 26 31 30 17 24 40 45 37 34 32 18 ]; m=reshape(m,[],10); v=rank_file(m); vexp=[13 15 23 26 28 32 33 37 38 42 ]; assert(isequal(vexp,v))

3   Pass
m=[22 4 17 9 301 18 10 2 18 5 12 15 7 8 21 14 23 10 8 7 3 24 302 22 16 6 5 21 19 23 1 11 20 17 9 14 13 19 15 6 11 4 1 24 3 2 20 12 13 45 27 40 32 304 41 33 25 41 28 35 38 30 31 44 37 46 33 31 30 26 47 303 45 39 29 28 44 42 46 2 34 43 40 32 37 36 42 38 29 34 27 2 47 26 25 43 35 36 67 49 62 54 306 63 55 26 63 50 57 60 52 53 66 59 68 55 53 52 48 69 305 67 61 51 50 66 64 68 3 56 65 62 54 59 58 64 60 51 56 49 3 69 48 26 65 57 58 88 70 83 75 307 84 76 27 84 71 78 81 73 74 87 80 89 76 74 73 49 90 308 88 82 72 71 87 85 89 4 77 86 83 75 80 79 85 81 72 77 70 4 90 49 27 86 78 79 108 71 103 95 310 104 96 28 104 91 98 101 93 94 107 100 109 96 94 93 50 110 309 108 102 92 91 107 105 109 5 97 106 103 95 100 99 105 101 92 97 71 5 110 50 28 106 98 99 127 72 122 114 311 123 115 29 123 92 117 120 112 113 126 119 128 115 113 112 51 129 312 127 121 111 92 126 124 128 6 116 125 122 114 119 118 124 120 111 116 72 6 129 51 29 125 117 118 145 73 140 132 314 141 133 30 141 93 135 138 130 131 144 137 146 133 131 130 52 147 313 145 139 112 93 144 142 146 7 134 143 140 132 137 136 142 138 112 134 73 7 147 52 30 143 135 136 162 74 157 149 316 158 150 31 158 94 152 155 131 148 161 154 163 150 148 131 53 164 315 162 156 113 94 161 159 163 8 151 160 157 149 154 153 159 155 113 151 74 8 164 53 31 160 152 153 178 75 173 165 317 174 166 32 174 95 168 171 132 149 177 170 179 166 149 132 54 180 318 178 172 114 95 177 175 179 9 167 176 173 165 170 169 175 171 114 167 75 9 180 54 32 176 168 169 193 76 188 166 319 189 181 33 189 96 183 186 133 150 192 185 194 181 150 133 55 195 320 193 187 115 96 192 190 194 10 182 191 188 166 185 184 190 186 115 182 76 10 195 55 33 191 183 184 207 77 202 167 321 203 182 34 203 97 197 200 134 151 206 199 208 182 151 134 56 209 322 207 201 116 97 206 204 208 11 196 205 202 167 199 198 204 200 116 196 77 11 209 56 34 205 197 198 220 78 215 168 323 216 183 35 216 98 210 213 135 152 219 212 221 183 152 135 57 222 324 220 214 117 98 219 217 221 12 197 218 215 168 212 211 217 213 117 197 78 12 222 57 35 218 210 211 232 79 227 169 325 228 184 36 228 99 211 225 136 153 231 224 233 184 153 136 58 234 326 232 226 118 99 231 229 233 13 198 230 227 169 224 223 229 225 118 198 79 13 234 58 36 230 211 223 243 80 238 170 327 239 185 37 239 100 212 236 137 154 242 235 244 185 154 137 59 245 328 243 237 119 100 242 240 244 14 199 241 238 170 235 224 240 236 119 199 80 14 245 59 37 241 212 224 253 81 248 171 329 249 186 38 249 101 213 246 138 155 252 236 254 186 155 138 60 255 330 253 247 120 101 252 250 254 15 200 251 248 171 236 225 250 246 120 200 81 15 255 60 38 251 213 225 262 82 257 172 332 258 187 39 258 102 214 247 139 156 261 237 263 187 156 139 61 264 331 262 256 121 102 261 259 263 16 201 260 257 172 237 226 259 247 121 201 82 16 264 61 39 260 214 226 270 83 265 173 334 266 188 40 266 103 215 248 140 157 269 238 271 188 157 140 62 272 333 270 257 122 103 269 267 271 17 202 268 265 173 238 227 267 248 122 202 83 17 272 62 40 268 215 227 277 84 266 174 336 273 189 41 273 104 216 249 141 158 276 239 278 189 158 141 63 279 335 277 258 123 104 276 274 278 18 203 275 266 174 239 228 274 249 123 203 84 18 279 63 41 275 216 228 283 85 267 175 337 274 190 42 274 105 217 250 142 159 282 240 284 190 159 142 64 285 338 283 259 124 105 282 280 284 19 204 281 267 175 240 229 280 250 124 204 85 19 285 64 42 281 217 229 288 86 268 176 340 275 191 43 275 106 218 251 143 160 287 241 289 191 160 143 65 290 339 288 260 125 106 287 281 289 20 205 286 268 176 241 230 281 251 125 205 86 20 290 65 43 286 218 230 292 87 269 177 342 276 192 44 276 107 219 252 144 161 291 242 293 192 161 144 66 294 341 292 261 126 107 291 282 293 21 206 287 269 177 242 231 282 252 126 206 87 21 294 66 44 287 219 231 295 88 270 178 344 277 193 45 277 108 220 253 145 162 292 243 296 193 162 145 67 297 343 295 262 127 108 292 283 296 22 207 288 270 178 243 232 283 253 127 207 88 22 297 67 45 288 220 232 296 89 271 179 346 278 194 46 278 109 221 254 146 163 293 244 298 194 163 146 68 299 345 296 263 128 109 293 284 298 23 208 289 271 179 244 233 284 254 128 208 89 23 299 68 46 289 221 233 297 90 272 180 347 279 195 47 279 110 222 255 147 164 294 245 299 195 164 147 69 300 348 297 264 129 110 294 285 299 24 209 290 272 180 245 234 285 255 129 209 90 24 300 69 47 290 222 234 343 308 333 318 349 335 320 303 336 310 323 329 313 316 342 328 346 319 315 314 306 348 349 344 331 312 309 341 338 345 302 322 340 334 317 327 325 337 330 311 321 307 301 347 305 304 339 324 326 ]; m=reshape(m,[],25); v=rank_file(m); vexp=[16 39 61 82 102 121 139 156 172 187 201 214 226 237 247 256 257 258 259 260 261 262 263 264 332 ]; assert(isequal(vexp,v))

4   Pass
m=[25 27 2 6 10 11 41 50 27 49 16 18 19 49 4 44 38 23 48 33 4 15 3 7 43 8 5 1 19 12 40 29 25 32 13 46 33 6 11 50 15 26 38 7 42 48 31 28 21 22 36 22 39 32 46 47 2 45 31 29 24 1 34 42 5 36 23 17 9 43 20 10 28 45 34 3 44 30 30 14 41 35 35 8 14 17 40 21 26 18 37 20 13 9 39 37 47 16 24 26 28 3 7 11 12 42 51 28 50 17 19 20 50 5 45 39 24 49 34 5 16 4 8 44 9 6 2 20 13 41 30 26 33 14 47 34 7 12 51 16 27 39 8 43 49 32 29 22 23 37 23 40 33 47 48 3 46 32 30 25 2 35 43 6 37 24 18 10 44 21 11 29 46 35 4 45 31 31 15 42 36 36 9 15 18 41 22 27 19 38 21 14 10 40 38 48 17 25 27 29 4 8 12 13 43 52 29 51 18 20 21 51 6 46 40 25 50 35 6 17 5 9 45 10 7 3 21 14 42 31 27 34 15 48 35 8 13 52 17 28 40 9 44 50 33 30 23 24 38 24 41 34 48 49 4 47 33 31 26 3 36 44 7 38 25 19 11 45 22 12 30 47 36 5 46 32 32 16 43 37 37 10 16 19 42 23 28 20 39 22 15 11 41 39 49 18 26 28 30 5 9 13 14 44 53 30 52 19 21 22 52 7 47 41 26 51 36 7 18 6 10 46 11 8 4 22 15 43 32 28 35 16 49 36 9 14 53 18 29 41 10 45 51 34 31 24 25 39 25 42 35 49 50 5 48 34 32 27 4 37 45 8 39 26 20 12 46 23 13 31 48 37 6 47 33 33 17 44 38 38 11 17 20 43 24 29 21 40 23 16 12 42 40 50 19 27 29 31 6 10 14 15 45 54 31 53 20 22 23 53 8 48 42 27 52 37 8 19 7 11 47 12 9 5 23 16 44 33 29 36 17 50 37 10 15 54 19 30 42 11 46 52 35 32 25 26 40 26 43 36 50 51 6 49 35 33 28 5 38 46 9 40 27 21 13 47 24 14 32 49 38 7 48 34 34 18 45 39 39 12 18 21 44 25 30 22 41 24 17 13 43 41 51 20 28 30 32 7 11 15 16 46 55 32 54 21 23 24 54 9 49 43 28 53 38 9 20 8 12 48 13 10 6 24 17 45 34 30 37 18 51 38 11 16 55 20 31 43 12 47 53 36 33 26 27 41 27 44 37 51 52 7 50 36 34 29 6 39 47 10 41 28 22 14 48 25 15 33 50 39 8 49 35 35 19 46 40 40 13 19 22 45 26 31 23 42 25 18 14 44 42 52 21 29 31 33 8 12 16 17 47 56 33 55 22 24 25 55 10 50 44 29 54 39 10 21 9 13 49 14 11 7 25 18 46 35 31 38 19 52 39 12 17 56 21 32 44 13 48 54 37 34 27 28 42 28 45 38 52 53 8 51 37 35 30 7 40 48 11 42 29 23 15 49 26 16 34 51 40 9 50 36 36 20 47 41 41 14 20 23 46 27 32 24 43 26 19 15 45 43 53 22 30 32 34 9 13 17 18 48 57 34 56 23 25 26 56 11 51 45 30 55 40 11 22 10 14 50 15 12 8 26 19 47 36 32 39 20 53 40 13 18 57 22 33 45 14 49 55 38 35 28 29 43 29 46 39 53 54 9 52 38 36 31 8 41 49 12 43 30 24 16 50 27 17 35 52 41 10 51 37 37 21 48 42 42 15 21 24 47 28 33 25 44 27 20 16 46 44 54 23 31 33 35 10 14 18 19 49 58 35 57 24 26 27 57 12 52 46 31 56 41 12 23 11 15 51 16 13 9 27 20 48 37 33 40 21 54 41 14 19 58 23 34 46 15 50 56 39 36 29 30 44 30 47 40 54 55 10 53 39 37 32 9 42 50 13 44 31 25 17 51 28 18 36 53 42 11 52 38 38 22 49 43 43 16 22 25 48 29 34 26 45 28 21 17 47 45 55 24 32 34 36 11 15 19 20 50 59 36 58 25 27 28 58 13 53 47 32 57 42 13 24 12 16 52 17 14 10 28 21 49 38 34 41 22 55 42 15 20 59 24 35 47 16 51 57 40 37 30 31 45 31 48 41 55 56 11 54 40 38 33 10 43 51 14 45 32 26 18 52 29 19 37 54 43 12 53 39 39 23 50 44 44 17 23 26 49 30 35 27 46 29 22 18 48 46 56 25 33 35 37 12 16 20 21 51 60 37 59 26 28 29 59 14 54 48 33 58 43 14 25 13 17 53 18 15 11 29 22 50 39 35 42 23 56 43 16 21 60 25 36 48 17 52 58 41 38 31 32 46 32 49 42 56 57 12 55 41 39 34 11 44 52 15 46 33 27 19 53 30 20 38 55 44 13 54 40 40 24 51 45 45 18 24 27 50 31 36 28 47 30 23 19 49 47 57 26 34 36 38 13 17 21 22 52 61 38 60 27 29 30 60 15 55 49 34 59 44 15 26 14 18 54 19 16 12 30 23 51 40 36 43 24 57 44 17 22 61 26 37 49 18 53 59 42 39 32 33 47 33 50 43 57 58 13 56 42 40 35 12 45 53 16 47 34 28 20 54 31 21 39 56 45 14 55 41 41 25 52 46 46 19 25 28 51 32 37 29 48 31 24 20 50 48 58 27 35 37 39 14 18 22 23 53 62 39 61 28 30 31 61 16 56 50 35 60 45 16 27 15 19 55 20 17 13 31 24 52 41 37 44 25 58 45 18 23 62 27 38 50 19 54 60 43 40 33 34 48 34 51 44 58 59 14 57 43 41 36 13 46 54 17 48 35 29 21 55 32 22 40 57 46 15 56 42 42 26 53 47 47 20 26 29 52 33 38 30 49 32 25 21 51 49 59 28 36 38 40 15 19 23 24 54 63 40 62 29 31 32 62 17 57 51 36 61 46 17 28 16 20 56 21 18 14 32 25 53 42 38 45 26 59 46 19 24 63 28 39 51 20 55 61 44 41 34 35 49 35 52 45 59 60 15 58 44 42 37 14 47 55 18 49 36 30 22 56 33 23 41 58 47 16 57 43 43 27 54 48 48 21 27 30 53 34 39 31 50 33 26 22 52 50 60 29 37 39 41 16 20 24 25 55 64 41 63 30 32 33 63 18 58 52 37 62 47 18 29 17 21 57 22 19 15 33 26 54 43 39 46 27 60 47 20 25 64 29 40 52 21 56 62 45 42 35 36 50 36 53 46 60 61 16 59 45 43 38 15 48 56 19 50 37 31 23 57 34 24 42 59 48 17 58 44 44 28 55 49 49 22 28 31 54 35 40 32 51 34 27 23 53 51 61 30 38 40 42 17 21 25 26 56 65 42 64 31 33 34 64 19 59 53 38 63 48 19 30 18 22 58 23 20 16 34 27 55 44 40 47 28 61 48 21 26 65 30 41 53 22 57 63 46 43 36 37 51 37 54 47 61 62 17 60 46 44 39 16 49 57 20 51 38 32 24 58 35 25 43 60 49 18 59 45 45 29 56 50 50 23 29 32 55 36 41 33 52 35 28 24 54 52 62 31 39 41 43 18 22 26 27 57 66 43 65 32 34 35 65 20 60 54 39 64 49 20 31 19 23 59 24 21 17 35 28 56 45 41 48 29 62 49 22 27 66 31 42 54 23 58 64 47 44 37 38 52 38 55 48 62 63 18 61 47 45 40 17 50 58 21 52 39 33 25 59 36 26 44 61 50 19 60 46 46 30 57 51 51 24 30 33 56 37 42 34 53 36 29 25 55 53 63 32 40 42 44 19 23 27 28 58 67 44 66 33 35 36 66 21 61 55 40 65 50 21 32 20 24 60 25 22 18 36 29 57 46 42 49 30 63 50 23 28 67 32 43 55 24 59 65 48 45 38 39 53 39 56 49 63 64 19 62 48 46 41 18 51 59 22 53 40 34 26 60 37 27 45 62 51 20 61 47 47 31 58 52 52 25 31 34 57 38 43 35 54 37 30 26 56 54 64 33 41 43 45 20 24 28 29 59 68 45 67 34 36 37 67 22 62 56 41 66 51 22 33 21 25 61 26 23 19 37 30 58 47 43 50 31 64 51 24 29 68 33 44 56 25 60 66 49 46 39 40 54 40 57 50 64 65 20 63 49 47 42 19 52 60 23 54 41 35 27 61 38 28 46 63 52 21 62 48 48 32 59 53 53 26 32 35 58 39 44 36 55 38 31 27 57 55 65 34 42 44 46 21 25 29 30 60 69 46 68 35 37 38 68 23 63 57 42 67 52 23 34 22 26 62 27 24 20 38 31 59 48 44 51 32 65 52 25 30 69 34 45 57 26 61 67 50 47 40 41 55 41 58 51 65 66 21 64 50 48 43 20 53 61 24 55 42 36 28 62 39 29 47 64 53 22 63 49 49 33 60 54 54 27 33 36 59 40 45 37 56 39 32 28 58 56 66 35 43 45 47 22 26 30 31 61 70 47 69 36 38 39 69 24 64 58 43 68 53 24 35 23 27 63 28 25 21 39 32 60 49 45 52 33 66 53 26 31 70 35 46 58 27 62 68 51 48 41 42 56 42 59 52 66 67 22 65 51 49 44 21 54 62 25 56 43 37 29 63 40 30 48 65 54 23 64 50 50 34 61 55 55 28 34 37 60 41 46 38 57 40 33 29 59 57 67 36 44 46 48 23 27 31 32 62 71 48 70 37 39 40 70 25 65 59 44 69 54 25 36 24 28 64 29 26 22 40 33 61 50 46 53 34 67 54 27 32 71 36 47 59 28 63 69 52 49 42 43 57 43 60 53 67 68 23 66 52 50 45 22 55 63 26 57 44 38 30 64 41 31 49 66 55 24 65 51 51 35 62 56 56 29 35 38 61 42 47 39 58 41 34 30 60 58 68 37 45 47 49 24 28 32 33 63 72 49 71 38 40 41 71 26 66 60 45 70 55 26 37 25 29 65 30 27 23 41 34 62 51 47 54 35 68 55 28 33 72 37 48 60 29 64 70 53 50 43 44 58 44 61 54 68 69 24 67 53 51 46 23 56 64 27 58 45 39 31 65 42 32 50 67 56 25 66 52 52 36 63 57 57 30 36 39 62 43 48 40 59 42 35 31 61 59 69 38 46 48 50 25 29 33 34 64 73 50 72 39 41 42 72 27 67 61 46 71 56 27 38 26 30 66 31 28 24 42 35 63 52 48 55 36 69 56 29 34 73 38 49 61 30 65 71 54 51 44 45 59 45 62 55 69 70 25 68 54 52 47 24 57 65 28 59 46 40 32 66 43 33 51 68 57 26 67 53 53 37 64 58 58 31 37 40 63 44 49 41 60 43 36 32 62 60 70 39 47 49 51 26 30 34 35 65 74 51 73 40 42 43 73 28 68 62 47 72 57 28 39 27 31 67 32 29 25 43 36 64 53 49 56 37 70 57 30 35 74 39 50 62 31 66 72 55 52 45 46 60 46 63 56 70 71 26 69 55 53 48 25 58 66 29 60 47 41 33 67 44 34 52 69 58 27 68 54 54 38 65 59 59 32 38 41 64 45 50 42 61 44 37 33 63 61 71 40 48 50 52 27 31 35 36 66 75 52 74 41 43 44 74 29 69 63 48 73 58 29 40 28 32 68 33 30 26 44 37 65 54 50 57 38 71 58 31 36 75 40 51 63 32 67 73 56 53 46 47 61 47 64 57 71 72 27 70 56 54 49 26 59 67 30 61 48 42 34 68 45 35 53 70 59 28 69 55 55 39 66 60 60 33 39 42 65 46 51 43 62 45 38 34 64 62 72 41 49 51 53 28 32 36 37 67 76 53 75 42 44 45 75 30 70 64 49 74 59 30 41 29 33 69 34 31 27 45 38 66 55 51 58 39 72 59 32 37 76 41 52 64 33 68 74 57 54 47 48 62 48 65 58 72 73 28 71 57 55 50 27 60 68 31 62 49 43 35 69 46 36 54 71 60 29 70 56 56 40 67 61 61 34 40 43 66 47 52 44 63 46 39 35 65 63 73 42 50 52 54 29 33 37 38 68 77 54 76 43 45 46 76 31 71 65 50 75 60 31 42 30 34 70 35 32 28 46 39 67 56 52 59 40 73 60 33 38 77 42 53 65 34 69 75 58 55 48 49 63 49 66 59 73 74 29 72 58 56 51 28 61 69 32 63 50 44 36 70 47 37 55 72 61 30 71 57 57 41 68 62 62 35 41 44 67 48 53 45 64 47 40 36 66 64 74 43 51 53 55 30 34 38 39 69 78 55 77 44 46 47 77 32 72 66 51 76 61 32 43 31 35 71 36 33 29 47 40 68 57 53 60 41 74 61 34 39 78 43 54 66 35 70 76 59 56 49 50 64 50 67 60 74 75 30 73 59 57 52 29 62 70 33 64 51 45 37 71 48 38 56 73 62 31 72 58 58 42 69 63 63 36 42 45 68 49 54 46 65 48 41 37 67 65 75 44 52 54 56 31 35 39 40 70 79 56 78 45 47 48 78 33 73 67 52 77 62 33 44 32 36 72 37 34 30 48 41 69 58 54 61 42 75 62 35 40 79 44 55 67 36 71 77 60 57 50 51 65 51 68 61 75 76 31 74 60 58 53 30 63 71 34 65 52 46 38 72 49 39 57 74 63 32 73 59 59 43 70 64 64 37 43 46 69 50 55 47 66 49 42 38 68 66 76 45 53 55 57 32 36 40 41 71 80 57 79 46 48 49 79 34 74 68 53 78 63 34 45 33 37 73 38 35 31 49 42 70 59 55 62 43 76 63 36 41 80 45 56 68 37 72 78 61 58 51 52 66 52 69 62 76 77 32 75 61 59 54 31 64 72 35 66 53 47 39 73 50 40 58 75 64 33 74 60 60 44 71 65 65 38 44 47 70 51 56 48 67 50 43 39 69 67 77 46 54 56 58 33 37 41 42 72 81 58 80 47 49 50 80 35 75 69 54 79 64 35 46 34 38 74 39 36 32 50 43 71 60 56 63 44 77 64 37 42 81 46 57 69 38 73 79 62 59 52 53 67 53 70 63 77 78 33 76 62 60 55 32 65 73 36 67 54 48 40 74 51 41 59 76 65 34 75 61 61 45 72 66 66 39 45 48 71 52 57 49 68 51 44 40 70 68 78 47 55 57 59 34 38 42 43 73 82 59 81 48 50 51 81 36 76 70 55 80 65 36 47 35 39 75 40 37 33 51 44 72 61 57 64 45 78 65 38 43 82 47 58 70 39 74 80 63 60 53 54 68 54 71 64 78 79 34 77 63 61 56 33 66 74 37 68 55 49 41 75 52 42 60 77 66 35 76 62 62 46 73 67 67 40 46 49 72 53 58 50 69 52 45 41 71 69 79 48 56 58 60 35 39 43 44 74 83 60 82 49 51 52 82 37 77 71 56 81 66 37 48 36 40 76 41 38 34 52 45 73 62 58 65 46 79 66 39 44 83 48 59 71 40 75 81 64 61 54 55 69 55 72 65 79 80 35 78 64 62 57 34 67 75 38 69 56 50 42 76 53 43 61 78 67 36 77 63 63 47 74 68 68 41 47 50 73 54 59 51 70 53 46 42 72 70 80 49 57 59 61 36 40 44 45 75 84 61 83 50 52 53 83 38 78 72 57 82 67 38 49 37 41 77 42 39 35 53 46 74 63 59 66 47 80 67 40 45 84 49 60 72 41 76 82 65 62 55 56 70 56 73 66 80 81 36 79 65 63 58 35 68 76 39 70 57 51 43 77 54 44 62 79 68 37 78 64 64 48 75 69 69 42 48 51 74 55 60 52 71 54 47 43 73 71 81 50 58 60 62 37 41 45 46 76 85 62 84 51 53 54 84 39 79 73 58 83 68 39 50 38 42 78 43 40 36 54 47 75 64 60 67 48 81 68 41 46 85 50 61 73 42 77 83 66 63 56 57 71 57 74 67 81 82 37 80 66 64 59 36 69 77 40 71 58 52 44 78 55 45 63 80 69 38 79 65 65 49 76 70 70 43 49 52 75 56 61 53 72 55 48 44 74 72 82 51 59 61 63 38 42 46 47 77 86 63 85 52 54 55 85 40 80 74 59 84 69 40 51 39 43 79 44 41 37 55 48 76 65 61 68 49 82 69 42 47 86 51 62 74 43 78 84 67 64 57 58 72 58 75 68 82 83 38 81 67 65 60 37 70 78 41 72 59 53 45 79 56 46 64 81 70 39 80 66 66 50 77 71 71 44 50 53 76 57 62 54 73 56 49 45 75 73 83 52 60 62 64 39 43 47 48 78 87 64 86 53 55 56 86 41 81 75 60 85 70 41 52 40 44 80 45 42 38 56 49 77 66 62 69 50 83 70 43 48 87 52 63 75 44 79 85 68 65 58 59 73 59 76 69 83 84 39 82 68 66 61 38 71 79 42 73 60 54 46 80 57 47 65 82 71 40 81 67 67 51 78 72 72 45 51 54 77 58 63 55 74 57 50 46 76 74 84 53 61 63 65 40 44 48 49 79 88 65 87 54 56 57 87 42 82 76 61 86 71 42 53 41 45 81 46 43 39 57 50 78 67 63 70 51 84 71 44 49 88 53 64 76 45 80 86 69 66 59 60 74 60 77 70 84 85 40 83 69 67 62 39 72 80 43 74 61 55 47 81 58 48 66 83 72 41 82 68 68 52 79 73 73 46 52 55 78 59 64 56 75 58 51 47 77 75 85 54 62 64 66 41 45 49 50 80 89 66 88 55 57 58 88 43 83 77 62 87 72 43 54 42 46 82 47 44 40 58 51 79 68 64 71 52 85 72 45 50 89 54 65 77 46 81 87 70 67 60 61 75 61 78 71 85 86 41 84 70 68 63 40 73 81 44 75 62 56 48 82 59 49 67 84 73 42 83 69 69 53 80 74 74 47 53 56 79 60 65 57 76 59 52 48 78 76 86 55 63 65 67 42 46 50 51 81 90 67 89 56 58 59 89 44 84 78 63 88 73 44 55 43 47 83 48 45 41 59 52 80 69 65 72 53 86 73 46 51 90 55 66 78 47 82 88 71 68 61 62 76 62 79 72 86 87 42 85 71 69 64 41 74 82 45 76 63 57 49 83 60 50 68 85 74 43 84 70 70 54 81 75 75 48 54 57 80 61 66 58 77 60 53 49 79 77 87 56 64 66 68 43 47 51 52 82 91 68 90 57 59 60 90 45 85 79 64 89 74 45 56 44 48 84 49 46 42 60 53 81 70 66 73 54 87 74 47 52 91 56 67 79 48 83 89 72 69 62 63 77 63 80 73 87 88 43 86 72 70 65 42 75 83 46 77 64 58 50 84 61 51 69 86 75 44 85 71 71 55 82 76 76 49 55 58 81 62 67 59 78 61 54 50 80 78 88 57 65 67 69 44 48 52 53 83 92 69 91 58 60 61 91 46 86 80 65 90 75 46 57 45 49 85 50 47 43 61 54 82 71 67 74 55 88 75 48 53 92 57 68 80 49 84 90 73 70 63 64 78 64 81 74 88 89 44 87 73 71 66 43 76 84 47 78 65 59 51 85 62 52 70 87 76 45 86 72 72 56 83 77 77 50 56 59 82 63 68 60 79 62 55 51 81 79 89 58 66 68 70 45 49 53 54 84 93 70 92 59 61 62 92 47 87 81 66 91 76 47 58 46 50 86 51 48 44 62 55 83 72 68 75 56 89 76 49 54 93 58 69 81 50 85 91 74 71 64 65 79 65 82 75 89 90 45 88 74 72 67 44 77 85 48 79 66 60 52 86 63 53 71 88 77 46 87 73 73 57 84 78 78 51 57 60 83 64 69 61 80 63 56 52 82 80 90 59 67 69 71 46 50 54 55 85 94 71 93 60 62 63 93 48 88 82 67 92 77 48 59 47 51 87 52 49 45 63 56 84 73 69 76 57 90 77 50 55 94 59 70 82 51 86 92 75 72 65 66 80 66 83 76 90 91 46 89 75 73 68 45 78 86 49 80 67 61 53 87 64 54 72 89 78 47 88 74 74 58 85 79 79 52 58 61 84 65 70 62 81 64 57 53 83 81 91 60 68 70 72 47 51 55 56 86 95 72 94 61 63 64 94 49 89 83 68 93 78 49 60 48 52 88 53 50 46 64 57 85 74 70 77 58 91 78 51 56 95 60 71 83 52 87 93 76 73 66 67 81 67 84 77 91 92 47 90 76 74 69 46 79 87 50 81 68 62 54 88 65 55 73 90 79 48 89 75 75 59 86 80 80 53 59 62 85 66 71 63 82 65 58 54 84 82 92 61 69 71 73 48 52 56 57 87 96 73 95 62 64 65 95 50 90 84 69 94 79 50 61 49 53 89 54 51 47 65 58 86 75 71 78 59 92 79 52 57 96 61 72 84 53 88 94 77 74 67 68 82 68 85 78 92 93 48 91 77 75 70 47 80 88 51 82 69 63 55 89 66 56 74 91 80 49 90 76 76 60 87 81 81 54 60 63 86 67 72 64 83 66 59 55 85 83 93 62 70 72 74 49 53 57 58 88 97 74 96 63 65 66 96 51 91 85 70 95 80 51 62 50 54 90 55 52 48 66 59 87 76 72 79 60 93 80 53 58 97 62 73 85 54 89 95 78 75 68 69 83 69 86 79 93 94 49 92 78 76 71 48 81 89 52 83 70 64 56 90 67 57 75 92 81 50 91 77 77 61 88 82 82 55 61 64 87 68 73 65 84 67 60 56 86 84 94 63 71 73 75 50 54 58 59 89 98 75 97 64 66 67 97 52 92 86 71 96 81 52 63 51 55 91 56 53 49 67 60 88 77 73 80 61 94 81 54 59 98 63 74 86 55 90 96 79 76 69 70 84 70 87 80 94 95 50 93 79 77 72 49 82 90 53 84 71 65 57 91 68 58 76 93 82 51 92 78 78 62 89 83 83 56 62 65 88 69 74 66 85 68 61 57 87 85 95 64 72 74 76 51 55 59 60 90 99 76 98 65 67 68 98 53 93 87 72 97 82 53 64 52 56 92 57 54 50 68 61 89 78 74 81 62 95 82 55 60 99 64 75 87 56 91 97 80 77 70 71 85 71 88 81 95 96 51 94 80 78 73 50 83 91 54 85 72 66 58 92 69 59 77 94 83 52 93 79 79 63 90 84 84 57 63 66 89 70 75 67 86 69 62 58 88 86 96 65 73 ]; m=reshape(m,[],50); v=rank_file(m); vexp=[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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ]; assert(isequal(vexp,v))

5   Pass
m=[5 75 73 53 77 36 22 37 55 17 50 44 39 19 49 7 25 57 78 68 28 21 5 20 65 67 18 57 9 76 7 12 60 1 37 38 46 69 39 59 45 70 48 31 6 27 64 53 34 50 63 47 29 41 55 46 43 70 27 61 66 64 41 35 32 48 30 32 3 15 10 62 31 71 45 38 34 11 59 13 19 3 71 51 52 21 9 52 72 24 15 14 43 78 8 23 1 17 25 6 78 76 56 79 40 27 40 58 19 54 46 43 20 55 8 26 64 83 73 29 23 6 21 67 68 21 60 11 82 9 14 63 3 41 42 52 71 44 62 50 74 53 34 7 31 65 61 38 57 69 50 32 44 62 49 45 73 28 68 72 70 46 39 36 52 32 35 4 17 13 64 33 75 47 42 37 13 66 14 23 4 76 59 55 25 11 60 78 28 16 15 48 81 10 25 3 19 29 8 80 77 60 81 42 28 42 61 21 56 50 46 22 56 9 28 66 86 76 30 25 8 24 69 70 23 63 14 84 10 15 65 5 43 45 53 72 46 64 51 78 54 36 9 32 68 63 39 58 71 54 34 48 65 53 49 75 29 69 74 73 48 40 38 55 34 37 6 18 14 67 35 76 51 44 39 16 67 17 25 6 80 61 58 26 12 62 82 29 18 16 50 83 12 26 5 21 30 9 86 85 66 87 43 30 46 68 22 62 53 49 23 57 11 30 67 88 79 33 27 9 25 78 79 25 70 15 86 12 17 73 6 44 47 55 80 48 72 54 80 56 37 11 35 76 65 40 59 73 58 36 50 66 57 52 82 32 71 77 75 49 44 39 60 35 40 7 20 15 74 38 84 55 47 42 17 69 18 27 8 81 62 64 29 14 64 83 32 20 18 52 88 13 28 7 22 34 10 89 87 68 90 45 33 47 69 24 64 54 51 26 59 12 31 69 90 81 36 29 12 28 79 81 26 72 16 89 14 20 74 7 46 48 56 83 49 73 55 82 57 39 13 38 77 67 43 61 74 59 40 52 68 58 53 85 34 72 78 77 50 45 41 62 37 42 9 22 18 75 41 86 56 49 44 18 71 20 28 10 84 64 66 31 16 66 86 35 24 22 54 92 14 30 8 25 37 12 91 90 69 93 47 34 48 71 26 66 58 53 29 61 14 34 74 93 83 38 31 14 30 81 83 28 74 17 91 16 21 77 9 48 49 59 85 51 75 57 85 60 41 15 39 80 70 44 63 79 62 41 54 72 60 56 86 36 78 81 80 53 47 43 63 39 44 11 24 19 78 42 88 59 51 46 19 76 22 29 11 86 66 67 33 17 68 87 37 26 23 55 94 16 32 9 27 38 14 93 91 71 94 49 35 52 72 27 68 60 54 32 63 15 37 75 96 88 40 35 16 33 83 85 30 76 19 95 18 22 78 10 50 52 61 86 53 77 58 89 62 44 17 42 81 72 47 65 82 65 43 55 74 64 58 88 38 80 86 84 54 50 46 66 42 46 13 25 21 79 44 89 62 53 48 21 78 24 31 13 90 67 69 34 19 69 92 38 28 24 57 96 18 36 11 30 40 15 98 96 74 100 52 38 53 75 28 71 61 57 34 67 17 41 78 101 90 43 38 17 36 88 90 31 78 21 99 20 25 82 12 54 56 63 92 57 80 62 92 65 47 18 44 86 73 51 69 83 68 46 58 76 66 60 93 42 82 87 85 58 52 49 70 45 49 14 27 24 84 47 95 64 55 51 22 80 25 33 14 94 70 73 36 22 71 96 39 29 27 60 101 20 40 13 32 41 16 99 98 76 102 54 39 55 77 30 73 63 58 36 69 18 43 79 102 92 46 40 18 38 90 91 32 79 23 101 22 27 83 14 56 58 67 93 60 82 65 94 68 50 20 45 88 75 52 71 86 70 47 59 78 68 61 94 44 84 89 87 62 54 51 71 48 51 15 29 25 86 48 96 66 57 52 24 81 27 34 17 96 72 75 37 24 73 98 41 31 29 63 104 22 41 15 34 42 18 101 100 78 104 56 40 57 79 32 74 64 60 38 71 20 45 82 103 93 47 42 21 40 92 93 33 81 26 102 24 28 85 15 58 60 69 95 62 84 67 96 70 51 22 47 90 77 55 73 88 71 48 61 80 69 63 96 46 85 92 90 63 56 53 72 50 53 16 31 27 87 49 98 68 58 55 28 83 29 35 19 98 74 77 38 26 76 100 42 32 30 65 106 24 43 17 35 44 21 103 102 80 106 58 42 61 81 35 76 68 64 40 72 22 47 83 104 94 50 43 23 41 94 95 37 83 27 103 26 31 87 17 60 62 70 96 63 85 68 98 71 53 25 48 91 80 56 75 89 72 50 65 82 70 66 97 49 87 93 92 65 59 54 73 52 55 19 34 30 89 52 99 69 62 57 30 84 32 39 21 100 77 78 41 28 79 101 43 33 32 66 107 25 45 18 37 45 22 105 103 82 108 60 45 62 83 38 80 70 66 42 76 23 49 84 107 96 52 45 25 43 95 96 40 84 29 106 28 33 89 19 61 63 72 98 64 86 69 100 74 55 27 49 92 82 58 77 91 76 52 68 83 74 69 99 50 89 95 93 66 60 56 78 53 56 20 36 31 91 54 101 72 63 58 32 85 34 42 23 102 78 81 44 29 80 103 46 35 34 67 109 26 46 19 39 47 24 106 105 84 109 61 48 63 86 40 81 73 68 44 77 25 50 88 110 98 54 47 26 46 97 98 41 88 30 108 31 36 92 20 63 64 74 100 66 90 71 102 75 57 29 52 95 85 60 79 92 77 54 70 86 76 72 101 52 90 97 95 68 62 59 79 56 58 21 38 34 93 55 103 74 64 59 33 89 36 43 25 103 81 82 46 33 83 104 49 38 37 69 111 28 49 21 41 51 25 108 107 87 110 63 49 65 89 42 83 75 70 45 79 27 53 89 113 101 56 49 28 48 98 100 43 90 31 111 33 38 93 21 64 65 75 102 67 91 73 104 76 58 30 55 96 87 61 81 94 79 57 72 88 77 74 104 55 92 99 97 70 64 60 81 57 61 23 40 35 95 59 106 76 66 63 35 90 38 45 27 106 82 85 47 34 84 108 50 40 39 71 112 29 51 22 42 53 26 111 109 89 113 65 51 69 90 43 84 77 71 46 81 28 55 92 115 103 57 50 29 49 99 101 45 91 32 114 35 39 95 23 66 67 76 104 69 93 75 105 78 61 32 57 98 89 64 83 97 82 58 73 90 81 76 105 56 96 101 99 71 67 63 83 59 62 25 41 38 97 60 108 79 70 65 36 94 40 46 28 108 84 87 49 37 85 110 53 42 41 72 114 30 53 24 43 55 28 112 111 90 114 67 53 71 92 45 85 79 74 47 82 30 56 93 117 104 59 53 30 51 103 104 47 93 34 116 37 41 97 25 69 71 79 106 72 95 77 106 81 62 34 59 101 90 66 85 99 83 61 76 91 82 78 107 58 97 102 101 73 69 64 84 61 64 26 43 40 99 62 110 80 72 66 37 95 41 49 29 109 87 89 50 38 89 111 55 44 42 74 116 31 55 25 45 56 29 115 113 91 117 70 55 72 93 46 87 81 76 49 84 32 59 95 119 106 62 55 32 52 104 105 49 95 36 118 38 44 99 27 72 74 80 108 75 97 79 107 83 65 35 60 102 93 68 87 100 85 63 77 94 84 80 110 60 98 103 102 76 70 66 86 64 67 28 44 42 100 65 111 82 74 69 38 97 42 50 31 111 89 90 52 39 91 112 56 47 45 78 118 34 57 27 48 58 30 117 115 93 119 73 56 74 94 47 89 82 78 52 90 33 61 99 121 107 65 57 34 54 105 106 50 97 38 119 40 46 101 28 75 77 87 109 79 98 85 108 89 68 36 62 103 97 72 92 103 87 65 79 98 85 81 112 63 102 106 105 81 72 70 88 67 69 29 46 43 102 67 113 84 76 70 40 101 43 52 32 113 94 92 54 41 96 114 57 48 47 83 120 36 58 29 50 59 34 118 116 95 121 76 57 77 97 50 92 85 81 54 92 35 62 102 122 113 67 59 35 55 108 109 52 99 39 121 41 47 103 30 78 80 88 110 81 101 87 114 90 70 38 64 106 99 74 94 107 90 67 82 100 88 83 113 65 105 111 109 83 75 71 91 68 71 32 48 44 105 68 114 87 79 73 42 104 45 53 33 116 95 93 56 42 97 117 59 49 48 85 122 37 60 31 52 61 36 119 117 99 122 78 58 79 100 51 95 89 83 56 94 37 64 104 125 114 69 61 37 58 110 112 53 101 41 123 42 49 105 31 79 82 90 113 83 102 88 115 92 73 40 65 107 101 77 95 109 92 68 85 103 91 87 114 67 108 113 110 85 77 75 93 71 73 34 50 46 106 70 115 90 80 75 44 106 47 55 35 117 96 97 57 44 99 118 61 53 51 86 124 39 62 32 55 62 38 120 118 100 123 80 60 81 101 53 98 91 85 58 96 39 66 106 127 117 70 63 39 59 111 113 54 103 43 124 44 51 106 32 81 83 92 114 85 104 90 118 93 75 42 66 108 103 79 98 111 96 70 86 105 94 89 116 69 109 115 113 87 78 77 97 73 75 36 51 48 107 71 117 92 83 77 46 107 49 56 37 120 99 99 59 46 100 122 63 55 52 88 125 41 65 34 57 64 39 127 126 104 129 82 61 83 106 55 100 93 86 60 97 40 69 108 128 118 72 64 40 62 118 120 56 108 44 126 45 52 112 34 84 86 94 121 88 110 92 119 96 77 44 68 116 104 81 99 112 97 72 87 107 96 90 122 70 110 117 114 90 81 78 99 75 77 38 52 50 114 74 124 94 84 79 47 109 51 58 39 121 100 102 60 47 102 124 64 56 54 91 130 43 67 35 59 66 42 129 128 105 131 85 63 85 108 56 102 94 88 62 98 43 71 109 130 119 74 65 42 63 120 121 58 109 47 129 47 53 114 36 87 88 95 123 89 111 94 121 97 79 46 70 117 105 83 100 114 99 73 89 108 98 92 124 72 111 118 115 91 82 81 101 77 78 40 54 52 116 76 125 96 87 80 49 110 52 60 40 122 101 104 61 48 104 126 65 57 55 93 132 45 69 37 61 67 43 131 130 107 132 87 64 87 110 58 104 96 91 63 99 44 72 111 132 120 76 66 44 64 122 124 60 112 48 131 49 55 116 37 89 91 97 125 93 114 96 122 98 80 47 72 120 106 84 102 117 100 75 93 110 99 94 127 74 115 119 118 94 84 83 103 79 79 41 56 53 118 78 129 97 89 81 50 113 54 61 42 123 103 105 63 51 105 128 66 58 57 95 134 46 70 38 62 69 45 133 132 109 135 88 65 88 111 60 107 97 92 66 104 47 74 113 134 124 78 70 46 68 123 125 62 114 49 133 51 57 118 38 91 92 102 126 95 116 100 125 103 83 49 74 121 111 86 106 119 102 77 95 112 100 96 128 76 116 122 121 97 86 85 105 81 82 42 58 54 120 80 130 98 91 83 52 115 56 63 43 127 108 108 64 53 109 129 67 60 58 98 137 48 71 39 64 71 46 134 133 111 136 89 67 89 113 62 108 100 95 68 106 48 76 114 135 125 79 72 48 70 125 126 63 115 51 134 52 58 119 39 93 95 104 128 97 118 102 126 105 85 50 75 124 112 87 107 121 104 79 97 113 103 98 129 77 118 123 122 98 88 86 107 82 83 44 60 55 122 81 132 102 93 85 53 116 57 64 44 129 109 110 66 54 111 131 69 61 59 99 139 49 73 41 65 72 48 135 134 113 137 92 70 91 114 63 110 101 97 69 109 49 78 116 139 128 81 74 49 72 127 128 65 117 53 137 53 60 122 41 94 96 106 130 98 120 104 130 108 87 52 76 125 114 90 110 123 106 81 98 115 105 100 131 80 119 126 125 100 90 89 109 83 85 46 62 58 124 83 133 104 94 87 54 118 58 66 45 131 112 111 68 56 113 132 71 63 61 102 141 50 76 43 66 73 50 139 138 116 141 94 71 93 118 65 112 104 98 70 111 52 79 120 140 131 82 75 50 73 130 131 66 120 55 138 54 61 124 43 96 97 108 133 100 122 105 132 110 89 53 78 128 117 93 112 126 108 83 99 119 106 102 135 81 124 129 127 101 91 91 110 85 86 48 63 60 126 85 137 105 95 88 57 122 60 67 46 133 114 114 69 58 116 134 72 64 63 104 142 54 77 44 68 74 51 141 140 118 142 96 73 94 119 67 113 105 100 72 112 54 80 123 142 132 84 76 51 74 131 132 68 122 57 139 56 64 125 45 97 98 109 135 102 123 106 133 111 90 55 79 129 119 94 114 128 109 85 102 121 107 104 136 82 125 130 129 104 92 92 112 87 88 50 65 62 127 87 139 106 96 90 58 124 62 69 47 134 116 115 71 59 117 135 75 68 66 105 143 55 79 45 69 77 53 145 143 119 146 98 75 95 120 69 116 108 102 74 113 55 82 124 144 134 85 77 53 76 133 134 70 124 59 141 58 66 128 46 99 100 111 137 103 126 107 135 112 91 57 80 131 121 96 116 129 113 87 104 123 111 106 138 84 127 132 130 105 94 94 114 88 90 52 67 64 130 88 141 109 97 92 61 125 63 72 49 136 118 117 74 60 120 137 76 69 68 106 147 56 81 46 70 79 54 147 144 122 148 99 76 97 124 70 118 110 103 76 117 56 83 125 146 135 87 79 54 77 134 135 71 125 60 143 59 68 130 48 100 102 113 139 104 127 109 136 115 92 58 83 132 122 97 118 131 115 89 105 124 112 108 140 85 128 134 132 106 96 96 116 90 92 53 68 65 131 90 143 111 98 93 62 126 65 74 50 137 120 120 75 62 121 138 78 71 70 108 150 57 82 47 72 81 56 148 146 123 149 101 79 98 125 71 120 111 104 78 118 57 84 128 148 140 88 81 55 79 135 137 72 126 61 147 62 70 131 49 103 105 114 140 107 129 112 142 116 93 60 84 133 124 99 120 134 117 90 106 126 113 109 141 86 132 138 136 109 97 97 118 91 94 55 69 66 132 92 145 112 99 96 63 130 67 76 52 143 121 121 77 63 122 144 81 72 71 110 152 59 83 48 73 82 58 149 147 124 151 102 81 100 126 73 121 112 106 80 120 59 85 129 149 141 89 83 56 81 136 139 75 128 63 148 64 71 132 50 104 107 116 141 108 130 113 143 118 95 62 87 134 125 100 121 135 118 92 107 127 116 110 142 87 133 139 137 110 99 98 120 92 95 57 71 68 133 94 146 114 102 98 65 131 69 77 54 144 122 122 79 66 123 145 83 74 73 112 154 61 84 50 76 85 61 151 149 126 153 104 82 101 128 74 122 114 108 81 121 62 89 130 151 143 92 85 58 82 138 141 77 130 66 150 66 73 134 51 105 108 117 143 110 131 115 144 120 97 64 89 137 127 102 122 136 120 94 109 129 118 112 145 90 134 140 139 111 100 99 121 93 96 59 72 69 135 95 147 116 103 99 67 132 70 78 55 145 124 124 81 67 125 147 84 77 75 114 155 64 87 52 78 87 62 152 151 128 154 105 84 104 129 76 123 116 109 82 123 64 90 132 154 145 93 87 60 84 141 143 79 131 68 153 68 74 135 52 107 109 119 145 111 133 118 146 122 99 66 91 139 129 104 124 137 121 96 111 131 120 113 146 91 135 142 140 113 102 100 122 95 99 60 73 71 137 97 148 117 105 100 69 134 71 80 56 148 126 125 83 69 128 149 85 78 76 116 156 66 89 53 80 89 63 154 153 129 155 108 87 105 130 77 125 117 111 83 125 65 92 133 155 146 94 89 61 86 142 144 80 133 70 154 69 75 137 53 110 111 120 147 113 135 119 147 124 100 68 93 141 130 106 126 139 122 97 112 132 121 114 148 93 137 144 142 114 104 101 124 97 101 61 75 72 138 99 149 119 106 103 72 136 73 82 58 149 128 127 85 71 129 150 89 79 77 118 157 67 90 55 81 90 65 156 154 131 158 109 88 108 132 80 127 119 112 84 126 66 93 136 157 147 97 90 63 88 143 145 82 134 72 156 72 78 139 55 112 114 124 149 115 136 122 149 125 101 70 94 142 133 108 128 141 124 98 113 134 123 115 151 95 138 145 144 117 107 103 126 99 103 62 78 76 140 100 152 121 110 105 74 137 76 83 60 150 130 129 86 74 131 151 90 81 79 120 160 68 91 57 83 91 66 158 155 132 159 111 89 109 133 82 129 120 113 86 129 67 95 137 158 148 98 91 64 90 146 148 83 136 74 157 73 80 140 57 114 116 126 150 118 137 123 150 127 102 72 95 144 135 110 130 143 125 99 114 136 124 116 153 97 140 147 145 120 108 104 128 101 104 64 79 77 141 102 154 123 111 106 75 139 78 84 62 152 131 130 88 75 133 154 92 84 82 122 162 69 93 59 85 93 67 160 157 134 162 114 90 110 136 83 131 122 115 89 131 69 97 140 160 150 101 93 65 92 147 149 84 137 76 159 74 82 142 59 116 118 128 152 119 139 125 152 130 105 73 97 145 137 112 132 145 126 101 116 139 125 118 154 99 143 148 147 122 109 106 130 103 106 66 81 78 143 104 155 124 113 107 78 142 80 85 63 153 134 132 89 77 135 156 94 85 83 124 163 71 95 60 87 95 69 162 158 135 163 116 92 111 137 85 133 124 116 91 132 71 99 141 163 152 102 95 67 93 149 150 87 138 78 161 75 84 143 61 118 120 130 153 122 140 127 153 131 106 74 98 146 138 114 133 147 128 102 118 140 127 119 155 100 144 149 148 124 110 107 132 105 108 68 84 79 144 105 157 125 115 109 80 143 82 89 64 155 135 134 90 78 137 158 96 87 86 126 164 72 97 62 89 97 71 164 160 137 166 117 94 114 139 88 135 126 119 92 133 73 101 144 165 154 103 96 68 95 151 153 89 141 79 163 77 86 145 63 120 121 131 154 124 143 129 156 132 107 76 100 148 141 116 134 148 131 103 121 142 129 123 156 102 146 151 149 125 112 108 134 106 109 69 86 81 147 107 159 128 117 111 82 145 83 91 65 157 137 136 92 80 139 160 97 90 88 128 167 74 98 64 91 99 73 165 161 140 168 120 97 115 142 90 137 127 121 95 135 75 103 146 167 156 105 98 69 97 153 154 92 144 80 166 79 88 147 64 122 123 133 156 125 145 131 158 134 110 78 102 149 142 118 136 151 132 105 122 143 130 125 157 104 149 155 153 127 114 111 136 108 110 70 87 83 148 109 160 129 118 113 84 147 85 93 67 159 138 139 95 81 141 162 99 92 90 130 170 77 99 65 94 101 74 167 163 142 169 121 99 118 144 92 139 129 122 96 137 77 104 148 169 157 106 100 70 98 155 156 93 145 81 168 81 90 148 66 124 125 134 157 126 147 132 160 135 112 79 103 151 144 120 139 153 134 106 123 145 132 126 158 105 150 156 154 128 117 113 138 109 113 72 89 85 149 111 161 130 119 115 86 149 87 95 68 162 141 140 97 83 143 163 101 93 91 131 172 78 101 67 95 102 76 169 164 145 171 123 101 119 146 93 141 131 124 98 140 79 106 150 172 159 109 102 72 100 156 157 94 147 83 170 83 92 150 68 125 126 137 159 128 148 135 162 139 113 80 106 154 147 121 141 154 135 107 125 149 134 128 160 108 153 157 156 130 118 114 140 110 114 73 92 86 152 113 162 132 120 117 88 152 90 96 71 164 143 143 98 85 145 165 103 95 93 133 173 81 104 69 96 104 78 171 168 146 173 124 104 121 147 96 143 132 125 99 141 80 107 153 173 160 112 104 75 101 158 160 98 149 85 171 85 93 152 70 127 128 138 162 129 150 136 164 140 114 82 107 156 148 122 142 156 136 108 126 151 135 130 164 110 155 158 157 131 119 116 142 113 115 74 94 88 153 114 166 133 122 118 89 154 92 100 73 166 145 144 102 86 146 168 105 96 94 135 175 82 105 70 97 106 80 173 169 148 174 125 106 122 149 98 144 133 127 101 145 81 110 154 175 162 113 106 76 103 159 162 100 150 86 172 86 95 153 71 129 130 141 164 132 152 139 166 143 115 84 111 157 149 124 146 159 137 113 129 152 136 131 166 111 157 161 160 133 121 117 143 114 117 76 96 89 155 116 168 134 123 120 90 155 94 102 75 168 147 145 103 88 148 169 108 98 96 137 176 84 108 71 99 109 82 175 171 149 176 128 108 126 150 100 145 134 129 103 146 83 111 155 176 164 115 107 77 105 162 163 101 151 87 175 87 96 156 72 130 132 143 165 133 154 140 168 144 117 85 112 160 153 126 147 160 138 114 131 154 137 132 168 113 158 163 161 134 124 118 144 116 118 78 98 91 158 117 169 135 128 122 92 157 96 103 76 169 149 147 104 90 151 171 110 100 98 138 177 86 109 73 102 111 83 177 173 151 178 129 109 127 153 101 147 136 131 105 148 84 112 158 180 169 117 108 80 106 164 165 102 155 89 179 89 98 157 74 131 133 145 167 134 156 141 171 147 119 86 116 162 154 127 149 164 140 117 133 156 139 135 170 115 162 167 165 135 125 120 145 118 121 80 100 93 159 119 171 138 130 123 93 160 98 104 78 173 151 148 105 91 152 175 112 101 99 139 180 88 111 75 103 114 84 179 175 153 180 131 111 129 154 102 148 138 133 108 149 86 114 159 182 171 119 110 81 109 166 168 103 156 91 180 90 100 159 76 132 135 146 170 136 157 142 173 148 122 87 118 163 155 129 151 166 143 119 134 158 141 137 171 117 163 169 168 137 126 123 147 121 123 82 101 94 161 121 172 139 131 124 95 162 99 106 79 174 153 150 108 93 154 176 114 104 102 141 181 89 113 77 106 116 86 180 176 154 182 132 113 130 155 103 149 140 134 109 152 88 116 162 183 173 120 112 83 111 167 169 104 157 93 181 92 101 160 78 134 137 147 172 139 158 143 175 150 124 88 119 165 157 130 154 167 146 121 135 160 144 139 173 118 164 172 170 141 128 125 148 122 125 83 102 96 163 122 175 142 132 127 96 163 101 107 81 176 155 151 110 94 156 177 115 106 104 142 183 90 114 78 107 117 ]; m=reshape(m,[],50); v=rank_file(m); vexp=[74 80 83 84 88 89 93 98 100 101 102 104 105 109 112 114 116 117 119 121 123 125 127 130 131 133 135 136 138 139 140 145 147 148 151 153 155 156 157 159 162 164 165 167 170 171 173 177 178 180 ]; assert(isequal(vexp,v))

6   Pass
m=[5 6 1 1 6 2 3 2 4 5 7 7 3 6 7 2 2 7 3 4 3 5 6 8 8 4 7 8 3 3 8 4 5 4 6 7 9 9 5 8 9 4 4 9 5 6 5 7 8 10 10 6 9 10 5 5 10 6 7 6 8 9 11 11 7 10 11 6 6 11 7 8 7 9 10 12 12 8 11 12 7 7 12 8 9 8 10 11 13 13 9 ]; m=reshape(m,[],7); v=rank_file(m); vexp=[4 5 6 7 8 9 10 ]; assert(isequal(vexp,v))

7   Pass
m=[1 13 4 2 9 3 1 5 14 8 6 10 7 2 9 15 12 10 11 11 3 13 16 16 14 12 15 4 ]; m=reshape(m,[],4); v=rank_file(m); vexp=[5 6 7 8 ]; assert(isequal(vexp,v))

8   Pass
m=[2 2 4 6 4 8 ]; m=reshape(m,[],2); v=rank_file(m); vexp=[6 8 ]; assert(isequal(vexp,v))

9   Pass
m=[33 55 94 119 106 74 42 176 132 15 170 135 242 282 134 264 186 180 333 193 308 23 38 212 62 213 111 204 70 19 152 214 233 262 15 258 220 252 232 153 46 127 330 189 55 86 297 196 86 55 85 118 131 114 81 53 199 158 23 173 142 294 306 162 326 224 205 355 218 322 26 57 233 93 266 129 257 98 26 165 245 271 305 19 284 248 299 286 163 72 138 342 247 66 104 314 225 103 60 93 141 166 156 116 60 222 171 33 197 185 319 317 188 350 238 208 374 232 351 53 85 253 110 294 161 280 129 55 189 264 284 346 42 307 283 332 299 188 87 158 372 269 108 154 336 236 117 87 123 164 198 170 126 85 244 192 38 224 201 340 357 200 376 253 229 399 263 370 72 109 297 133 328 177 308 142 57 222 317 338 365 46 342 331 353 335 223 109 191 386 286 124 169 367 280 133 93 126 186 206 203 129 108 260 224 55 279 216 369 392 244 408 307 300 440 283 425 85 123 305 142 350 201 318 183 66 268 339 372 394 55 377 358 380 365 227 124 216 435 316 126 186 412 285 136 110 129 204 225 222 155 116 271 231 74 301 228 395 410 266 418 308 307 471 289 432 93 133 314 155 365 207 350 188 81 278 340 382 404 62 406 375 401 380 247 126 226 446 327 142 204 424 298 156 125 136 210 242 235 162 117 285 262 86 309 253 401 432 271 456 337 324 477 298 462 95 137 331 156 381 225 352 196 103 292 349 411 435 68 413 388 423 391 263 133 245 473 346 161 217 437 318 167 129 186 227 270 263 188 141 293 309 94 365 281 471 454 330 511 398 374 514 323 488 98 142 350 204 455 245 433 227 118 352 353 415 504 70 438 402 483 465 290 164 287 494 412 183 242 464 325 196 154 201 242 284 284 204 161 301 319 111 386 296 490 468 332 523 415 394 517 335 513 104 169 371 207 456 256 443 245 129 371 380 427 520 86 461 421 510 474 299 177 288 514 440 186 256 480 338 217 156 206 263 300 300 222 166 341 337 119 400 312 500 480 348 543 442 419 535 345 525 114 170 377 225 476 284 469 270 131 394 383 461 536 106 478 439 519 478 334 198 324 529 451 203 284 490 347 235 158 216 287 324 312 226 185 344 347 135 413 336 545 506 364 573 461 441 554 368 541 138 191 404 228 503 288 500 281 142 412 408 471 571 127 495 446 564 521 342 201 336 543 475 216 296 522 380 245 171 227 309 337 334 231 188 372 350 153 438 347 568 524 382 600 462 450 597 379 559 158 192 421 247 523 319 519 290 163 433 440 496 599 132 507 456 589 538 350 223 342 584 494 224 299 547 398 262 188 260 330 348 341 266 222 399 372 176 467 364 580 542 399 620 510 487 603 413 563 162 200 456 271 530 332 523 293 199 442 465 499 611 134 511 489 608 546 382 244 344 591 513 244 301 559 431 271 189 283 352 394 345 278 232 442 379 193 489 412 584 582 413 644 532 493 633 451 610 165 222 499 289 571 371 549 323 218 451 515 550 643 152 571 527 622 583 433 263 368 623 543 268 335 592 476 292 197 285 365 400 347 301 236 467 398 196 508 413 602 583 431 655 533 518 646 489 618 173 224 511 298 583 386 571 325 225 476 520 566 654 170 574 539 623 590 438 280 380 643 560 279 338 617 508 309 208 305 374 419 377 307 253 487 421 212 511 441 641 605 456 699 537 529 682 493 650 205 229 529 314 619 394 601 350 233 499 533 585 684 180 594 563 660 635 450 297 404 661 579 300 371 625 518 324 238 339 398 442 383 308 264 510 440 214 520 461 666 625 465 707 544 533 692 532 658 224 253 537 340 635 415 608 353 245 515 544 595 699 186 617 581 670 653 462 317 408 668 594 307 380 644 533 337 269 358 412 451 439 327 283 513 456 220 539 475 671 659 489 726 581 563 744 543 705 247 286 579 375 643 440 637 402 248 527 594 637 724 189 646 617 684 670 494 331 446 726 617 316 421 684 560 346 280 372 433 469 461 350 284 523 496 233 566 500 677 680 499 760 595 585 752 549 715 257 308 601 382 663 443 645 415 271 550 608 645 740 204 669 637 696 673 519 338 471 748 637 318 427 707 571 352 294 377 455 476 478 365 307 530 507 258 574 503 699 690 511 785 617 594 783 571 734 266 328 619 406 676 456 669 438 284 571 635 663 742 213 676 643 705 684 523 342 495 773 646 350 461 727 583 381 299 392 465 478 480 380 317 546 524 282 583 521 718 707 542 797 625 605 812 583 751 286 335 635 410 690 474 680 454 306 582 653 673 760 232 684 670 721 707 538 357 506 795 659 365 468 749 590 391 319 412 471 500 490 395 336 580 547 297 617 545 768 718 559 821 644 625 836 584 779 294 340 641 424 727 490 707 464 314 592 666 677 807 242 699 671 792 749 568 367 522 816 684 369 480 768 602 401 332 425 483 519 525 401 351 608 559 308 618 564 779 721 563 830 658 650 844 622 796 299 353 660 432 734 510 715 488 322 610 670 696 827 252 705 684 796 751 589 370 541 837 705 380 513 792 623 423 346 435 504 536 529 404 372 611 584 330 643 571 816 760 591 864 668 661 852 643 827 305 365 684 446 773 520 748 494 342 623 699 740 847 262 742 724 837 795 599 386 543 847 726 394 514 807 654 435 350 440 511 543 535 418 374 620 597 333 646 573 836 797 603 884 692 682 884 644 830 326 376 699 471 783 523 752 514 355 633 707 760 852 264 785 726 844 812 600 399 554 864 744 408 517 821 655 456 ]; m=reshape(m,[],25); v=rank_file(m); vexp=[68 95 125 137 161 162 167 210 225 242 253 263 285 298 318 331 349 388 411 413 432 437 462 473 477 ]; assert(isequal(vexp,v))

10   Pass
m=[10 2 1 4 1 8 4 3 7 9 5 7 8 10 6 9 3 2 6 11 3 2 5 2 9 5 4 8 10 6 8 9 11 7 10 4 3 7 12 4 3 6 3 10 6 5 9 11 7 9 10 12 8 11 5 4 8 13 5 4 7 4 11 7 6 10 12 8 10 11 13 9 12 6 5 9 14 6 5 8 5 12 8 7 11 13 9 11 12 14 10 13 7 6 10 15 7 6 9 6 13 9 8 12 14 10 12 13 15 11 14 8 7 11 16 8 7 10 7 14 10 9 13 15 11 13 14 16 12 15 9 8 12 17 9 8 11 8 15 11 10 14 16 12 14 15 17 13 16 10 9 13 18 10 9 12 9 16 12 11 15 17 13 15 16 18 14 17 11 10 14 19 11 10 13 10 17 13 12 16 18 14 16 17 19 15 18 12 11 15 ]; m=reshape(m,[],10); v=rank_file(m); vexp=[5 6 7 8 9 10 11 12 13 14 ]; assert(isequal(vexp,v))

11   Pass
m=[2 22 2 22 222 22 ]; m=reshape(m,[],2); v=rank_file(m); vexp=[22 222 ]; assert(isequal(vexp,v))

12   Pass
m=[47 37 13 3 25 53 39 5 32 41 12 4 36 20 9 16 28 41 8 26 49 49 34 23 52 2 2 21 27 19 46 6 51 14 31 17 23 33 24 19 18 44 11 44 13 29 20 32 40 48 39 15 6 28 56 43 7 39 42 14 6 42 23 10 18 31 44 9 32 50 51 37 29 54 4 3 28 33 24 47 9 53 17 36 20 25 40 31 21 21 45 14 45 15 34 26 36 41 53 47 16 9 32 62 47 11 40 52 16 7 44 26 13 21 33 49 13 38 55 57 44 34 59 6 5 33 39 28 54 11 58 21 37 22 29 42 36 22 25 52 15 53 18 35 30 41 50 56 49 20 10 35 64 50 13 44 56 18 9 49 27 16 22 37 51 16 39 57 61 47 37 61 9 8 35 42 29 60 13 60 23 41 24 31 47 38 24 28 53 17 58 20 40 32 46 53 58 52 22 14 38 68 53 16 48 57 19 14 52 28 17 23 41 54 18 45 59 64 50 41 65 12 11 38 47 30 62 15 63 26 45 27 33 49 43 25 29 57 19 59 21 42 35 49 54 62 58 24 15 40 70 56 18 49 62 22 15 54 29 20 25 43 57 20 47 64 66 55 43 69 13 13 41 49 34 64 16 66 29 47 32 34 50 44 26 33 59 21 63 24 44 36 53 59 68 61 29 17 41 79 59 21 52 63 23 18 56 34 22 31 45 62 23 48 71 72 58 45 76 14 16 43 51 39 69 21 73 31 48 35 37 54 46 33 36 65 26 66 25 46 40 54 62 69 64 32 20 43 80 61 22 54 68 25 21 58 38 24 35 48 65 24 53 72 74 62 47 78 17 19 46 54 41 72 22 75 33 51 36 40 55 50 36 37 68 27 70 26 50 42 59 65 73 67 33 21 46 82 64 25 56 72 28 23 61 40 27 36 51 66 28 54 75 77 65 50 79 18 20 47 56 42 74 26 77 34 54 38 41 57 53 37 40 71 29 73 29 52 44 60 69 76 69 34 24 49 86 67 28 61 75 33 25 64 42 31 39 54 70 29 57 77 80 68 52 83 19 23 51 59 45 78 29 80 37 59 40 45 62 54 41 41 72 30 76 34 56 48 62 70 79 70 36 26 51 89 70 30 63 77 38 28 67 44 35 40 57 71 32 60 82 84 69 56 88 20 25 53 63 49 81 32 85 41 61 43 48 64 59 42 46 73 35 78 40 59 51 67 71 82 81 41 28 53 93 74 33 66 86 41 31 72 47 37 43 59 77 35 67 84 95 78 62 90 21 28 59 70 54 92 33 87 45 64 48 51 69 65 46 51 79 38 89 43 62 57 75 84 83 84 43 29 56 94 77 34 68 88 42 34 75 50 40 45 62 79 37 69 87 97 81 64 93 23 29 62 71 56 95 35 88 46 67 50 52 72 66 47 52 80 41 90 44 64 59 76 87 87 86 44 31 59 97 81 36 70 92 45 36 78 53 41 46 65 82 38 72 90 98 82 67 95 24 31 64 73 59 96 37 93 48 69 51 54 74 69 50 54 85 43 94 47 66 61 79 89 89 87 47 32 60 102 83 38 75 94 48 39 79 54 44 48 67 85 39 75 91 102 86 68 99 26 32 66 78 61 99 40 96 52 72 54 57 78 70 53 56 87 45 96 49 69 63 83 92 92 91 49 33 63 105 84 39 78 96 49 40 82 56 47 51 70 88 42 78 93 105 89 72 102 27 33 69 80 62 102 42 97 54 73 55 59 80 74 54 57 90 47 97 50 71 64 86 93 94 95 51 35 66 106 86 40 81 99 52 42 83 58 49 52 73 90 45 79 97 108 92 75 103 30 36 72 82 64 103 44 99 56 77 58 60 82 78 56 61 93 48 100 54 74 67 88 98 96 97 53 36 67 108 89 41 83 102 53 43 88 60 50 54 75 93 46 83 100 111 93 77 105 32 39 74 84 67 104 47 103 59 79 61 62 86 81 59 64 94 49 103 56 76 70 89 100 99 98 55 37 69 111 93 44 86 104 54 44 92 65 51 58 78 96 47 85 102 113 96 79 106 34 41 77 88 70 109 49 105 62 82 65 68 89 82 62 66 97 50 107 57 81 71 93 101 102 100 58 39 70 112 97 47 87 106 57 45 95 67 53 61 81 98 49 87 105 115 97 80 111 37 44 79 90 72 110 52 108 65 86 68 69 91 85 64 71 100 52 108 59 84 73 94 104 105 102 59 41 71 115 100 50 92 109 58 48 98 69 56 62 84 101 53 89 108 117 99 83 113 40 47 82 92 76 113 53 109 68 89 69 70 93 87 65 73 104 54 112 62 87 79 96 105 109 105 62 42 77 118 102 52 94 111 59 50 99 72 57 63 86 104 56 91 111 118 102 87 116 41 49 84 93 77 114 55 112 71 92 72 75 96 90 68 75 106 57 113 64 88 82 100 108 112 108 63 45 78 120 103 53 96 112 63 53 100 73 60 66 89 107 58 96 113 119 105 88 119 44 51 87 97 80 118 58 116 73 94 75 76 97 93 70 77 108 59 116 66 90 85 103 109 113 111 64 47 81 122 104 54 99 116 65 54 103 74 61 69 92 109 60 99 114 121 106 93 120 46 52 90 102 83 120 59 118 76 96 78 78 102 95 72 79 110 62 119 69 95 88 105 113 117 112 66 51 84 124 111 57 102 118 68 56 108 77 64 72 95 113 61 102 118 124 111 94 121 49 53 93 105 86 122 62 119 79 98 80 80 105 97 74 82 115 64 120 70 97 89 108 115 ]; m=reshape(m,[],25); v=rank_file(m); vexp=[30 35 40 45 48 51 52 56 58 60 66 73 74 77 81 82 83 86 90 93 94 97 99 103 106 ]; assert(isequal(vexp,v))

13   Pass
m=[35 23 18 30 62 42 46 10 64 1 4 47 35 51 49 2 14 57 4 17 38 8 33 43 24 27 5 43 33 1 28 6 34 12 25 34 47 21 39 13 32 57 53 17 37 41 21 60 36 38 26 20 32 65 44 47 14 69 2 5 51 40 53 51 5 15 58 6 19 43 10 35 47 28 31 10 46 35 4 32 13 36 13 28 38 48 23 45 18 33 60 57 18 44 46 25 64 41 47 28 22 37 70 50 57 18 71 4 6 58 46 62 70 10 18 74 12 20 48 12 40 62 31 34 15 54 40 8 33 17 43 14 31 44 66 24 56 19 36 66 64 22 52 60 27 69 49 49 30 32 42 81 56 61 20 85 5 10 65 49 68 73 13 19 79 14 28 52 15 43 63 35 38 17 57 43 12 36 18 46 17 35 45 68 25 59 24 39 73 70 24 55 62 33 77 50 52 32 33 43 84 58 65 24 87 6 13 67 51 69 74 15 21 80 18 31 56 17 46 68 39 40 19 62 47 14 41 21 51 18 37 47 72 28 62 28 45 74 72 26 59 64 35 80 56 56 34 40 48 87 62 66 30 90 10 14 68 52 73 78 18 24 82 22 37 57 18 50 71 42 46 24 64 50 17 47 26 52 20 44 51 76 33 63 34 49 76 74 30 61 68 43 81 58 59 40 42 53 89 65 71 33 92 13 18 72 58 75 81 23 28 87 24 38 61 19 55 72 44 50 25 68 55 21 51 28 58 24 46 57 79 37 66 37 53 81 79 34 65 69 45 83 60 63 43 46 54 92 71 76 34 95 17 19 77 63 80 83 26 31 89 28 43 67 20 57 74 47 52 30 72 58 23 54 32 60 28 53 60 81 38 70 40 55 82 81 37 67 73 50 84 64 70 46 50 55 96 73 79 42 100 18 20 83 65 87 89 28 33 93 31 47 70 22 60 81 50 53 35 75 64 24 58 39 68 32 57 63 85 42 77 44 61 92 89 40 75 80 54 95 74 72 50 53 58 98 76 81 46 103 21 25 87 67 89 90 31 35 100 34 52 71 27 63 84 54 55 38 79 68 27 63 40 69 33 59 66 89 45 79 50 64 94 90 43 77 81 55 97 75 76 53 55 60 102 78 85 48 104 25 28 88 71 91 95 32 37 101 37 54 73 31 66 87 57 59 42 82 72 30 67 43 74 35 60 67 93 46 83 53 68 99 95 44 81 84 58 101 77 81 54 60 67 108 83 90 50 112 28 32 92 76 96 103 35 41 106 40 57 80 33 70 97 58 63 43 86 76 33 70 46 80 36 66 74 100 51 93 55 72 101 97 47 89 95 63 105 85 84 55 63 68 112 85 94 51 115 32 33 96 79 100 106 38 45 109 44 60 83 36 72 101 61 64 45 88 79 34 74 47 83 39 67 77 104 53 96 57 77 103 102 49 91 100 66 108 86 88 58 65 72 116 86 98 52 120 33 35 101 83 103 111 40 47 115 46 63 85 40 76 104 64 68 49 91 83 35 76 51 86 43 71 79 107 55 99 58 79 109 107 50 95 103 67 110 90 89 60 70 74 120 88 99 57 123 34 36 104 86 106 113 43 51 122 48 67 87 43 80 107 68 69 52 92 85 38 80 56 87 46 73 83 109 58 102 61 83 111 108 52 99 104 71 115 93 90 63 73 76 122 90 103 62 126 35 38 107 88 110 116 44 52 126 50 71 89 47 81 111 70 72 56 96 86 42 83 58 88 49 78 84 112 59 104 65 85 114 111 56 102 106 76 116 95 96 64 75 77 126 95 107 64 127 36 41 108 90 111 123 46 56 130 54 72 93 49 85 115 74 75 57 97 91 43 86 62 92 50 82 86 119 60 108 68 88 115 113 58 103 112 79 120 97 103 67 79 81 128 102 111 66 130 37 44 112 95 116 124 47 59 133 57 76 99 52 89 119 75 77 61 103 98 46 90 65 99 55 85 91 122 65 113 71 94 121 119 61 111 117 81 122 107 107 70 83 83 129 104 113 68 133 39 45 115 99 117 127 51 62 134 58 77 102 56 93 120 77 79 65 108 101 47 92 67 104 59 88 96 125 66 115 72 96 125 122 63 112 119 87 126 108 110 73 87 84 132 106 117 73 134 41 46 119 103 120 130 53 64 136 62 80 104 60 95 123 80 81 68 112 103 51 96 69 106 62 91 100 128 69 117 75 100 127 125 68 116 120 89 129 111 111 74 89 87 137 111 119 74 140 43 47 120 104 123 132 57 68 137 64 81 107 62 97 127 81 84 70 115 107 53 97 72 108 63 95 101 129 72 122 79 102 131 127 71 119 125 90 135 113 114 81 92 93 140 112 122 76 143 47 48 125 107 128 134 60 72 140 66 82 109 66 100 131 85 89 73 119 109 57 101 74 111 68 99 104 132 79 125 81 103 132 129 76 121 127 94 137 115 116 83 95 95 142 116 124 81 145 49 51 127 111 130 139 64 74 144 69 84 113 70 103 135 89 90 77 123 110 60 105 80 115 73 101 106 137 81 126 83 108 134 132 78 122 129 97 139 120 122 86 96 97 146 122 127 87 150 53 56 131 114 132 142 65 77 147 70 92 118 72 105 137 92 96 81 124 116 62 108 84 120 76 102 107 140 84 129 89 112 136 134 79 128 132 98 143 126 126 89 100 101 147 126 133 90 153 57 58 134 115 136 145 69 80 153 71 95 122 74 106 140 93 100 85 130 120 64 112 87 123 79 104 109 143 87 133 92 115 140 137 82 130 134 103 144 127 ]; m=reshape(m,[],25); v=rank_file(m); vexp=[53 56 72 76 77 79 84 86 92 96 97 105 107 114 118 122 124 127 131 132 134 136 143 146 150 ]; assert(isequal(vexp,v))

14   Pass
m=[22 2 22 222 22 222 ]; m=reshape(m,[],2); v=rank_file(m); vexp=[2 22 ]; assert(isequal(vexp,v))

15   Pass
m=[2 2 3 1 1 6 4 4 4 5 2 2 8 6 5 6 8 3 4 9 8 6 8 9 5 6 12 10 ]; m=reshape(m,[],4); v=rank_file(m); vexp=[5 6 10 12 ]; assert(isequal(vexp,v))

16   Pass
m=[11 13 4 10 8 1 5 6 2 8 3 7 10 15 18 5 14 11 2 8 7 4 11 4 9 12 19 21 10 17 15 5 10 11 5 12 8 13 18 22 25 12 20 19 8 11 15 7 15 11 17 20 25 28 17 23 25 10 13 20 9 17 14 23 27 28 30 19 25 28 11 15 22 11 19 15 25 29 29 32 21 27 30 13 18 25 12 20 18 28 32 ]; m=reshape(m,[],7); v=rank_file(m); vexp=[1 3 4 6 7 8 10 ]; assert(isequal(vexp,v))

17   Pass
m=[6 91 7 1 11 31 51 4 9 8 21 5 61 71 3 1 41 81 10 16 92 17 11 12 32 52 14 19 18 22 15 62 72 13 2 42 82 20 26 93 27 21 13 33 53 24 29 28 23 25 63 73 23 3 43 83 30 36 94 37 31 14 34 54 34 39 38 24 35 64 74 33 4 44 84 40 46 95 47 41 15 35 55 44 49 48 25 45 65 75 43 5 45 85 50 56 96 57 51 16 36 56 54 59 58 26 55 66 76 53 6 46 86 60 66 97 67 61 17 37 57 64 69 68 27 65 67 77 63 7 47 87 70 76 98 77 71 18 38 58 74 79 78 28 75 68 78 73 8 48 88 80 86 99 87 81 19 39 59 84 89 88 29 85 69 79 83 9 49 89 90 96 100 97 91 20 40 60 94 99 98 30 95 70 80 93 10 50 90 100 ]; m=reshape(m,[],10); v=rank_file(m); vexp=[2 12 22 32 42 52 62 72 82 92 ]; assert(isequal(vexp,v))

18   Pass
m=[13 5 11 6 15 2 9 12 9 2 4 6 14 3 10 8 4 8 10 18 7 16 9 19 4 12 16 12 3 6 7 18 5 14 10 5 11 14 20 10 17 11 21 6 13 18 13 4 9 9 19 7 16 12 6 12 16 22 13 20 14 24 8 14 20 17 5 12 10 21 10 18 13 7 16 19 23 14 22 15 25 9 15 21 18 6 13 11 22 12 19 14 9 17 20 25 18 23 19 26 10 17 25 22 8 16 12 26 14 20 16 11 20 23 26 20 25 22 27 11 18 28 25 9 17 13 29 16 22 17 12 23 26 27 22 26 23 28 13 20 30 26 10 20 16 32 18 23 19 14 25 27 30 24 28 25 32 15 21 32 27 12 21 18 33 19 25 20 16 26 28 32 26 29 28 33 16 22 34 31 14 22 19 36 21 26 21 18 29 32 ]; m=reshape(m,[],10); v=rank_file(m); vexp=[16 21 22 26 28 29 31 32 34 36 ]; assert(isequal(vexp,v))

19   Pass
m=[21 36 28 46 26 29 18 38 8 32 49 12 35 15 42 41 4 5 19 41 10 17 36 13 49 32 23 1 9 51 2 13 34 22 53 45 52 5 26 42 7 39 18 1 27 28 40 32 56 30 34 21 42 17 36 60 13 43 20 52 43 11 9 26 49 18 19 44 19 54 36 29 5 11 57 9 14 40 25 64 53 59 13 27 47 15 46 23 2 29 30 41 38 61 37 38 28 46 20 40 64 15 44 26 55 50 14 11 28 52 21 20 46 22 57 42 33 9 14 61 11 18 43 31 67 59 64 15 32 51 17 47 25 4 34 33 43 40 64 39 41 32 49 25 41 68 18 50 30 61 53 15 13 30 57 27 24 54 29 64 46 34 12 15 66 13 22 49 36 70 63 69 18 37 57 21 56 29 5 38 39 58 52 74 43 44 42 60 28 54 76 21 55 38 66 61 18 15 36 64 32 29 57 36 68 49 41 13 17 69 14 26 53 46 80 70 72 22 47 63 26 60 32 7 48 43 59 57 78 48 52 46 61 33 58 82 25 56 41 71 65 20 17 37 67 35 33 58 38 72 54 46 17 20 74 19 28 55 50 84 74 75 24 54 66 29 64 36 8 56 45 65 61 79 50 54 47 68 36 63 85 27 59 42 74 71 25 18 40 71 38 35 61 41 77 56 48 18 21 81 23 32 57 53 88 77 83 29 58 72 32 68 38 10 60 47 69 65 82 53 55 51 70 37 68 88 29 63 48 80 72 28 19 45 76 40 38 66 45 79 59 50 19 22 84 26 36 62 54 92 81 86 30 61 76 36 72 41 13 64 51 76 69 91 57 60 52 80 43 72 95 30 69 51 84 84 30 20 48 78 45 41 73 47 92 64 54 21 26 94 28 38 66 58 99 87 98 33 64 88 39 74 42 15 68 52 80 72 93 61 64 58 81 46 75 99 32 71 54 88 87 33 21 51 83 48 46 77 50 94 67 58 23 28 95 29 42 70 61 101 89 100 34 65 90 41 79 47 18 71 58 83 77 95 65 68 61 86 48 80 102 36 78 57 90 89 37 25 54 86 50 50 80 53 97 72 61 26 31 98 30 46 75 65 103 92 104 39 67 91 43 81 53 22 75 64 85 80 97 67 70 64 87 52 83 106 37 81 60 92 93 38 27 61 90 54 54 85 55 101 75 65 29 32 105 34 47 79 68 107 95 106 41 70 95 44 89 58 26 77 68 89 84 100 75 77 67 90 54 85 107 38 84 64 96 97 42 29 64 95 56 56 88 59 104 79 71 32 34 106 36 48 83 72 108 99 109 46 75 99 49 91 60 27 79 69 91 86 104 77 80 70 94 55 88 109 40 89 66 100 99 43 32 65 99 57 57 92 62 108 84 72 34 38 109 40 52 86 75 112 102 111 49 79 102 53 95 61 28 83 72 92 89 110 80 83 71 95 56 90 112 41 90 69 107 103 44 36 68 103 59 58 94 63 110 85 75 35 40 112 43 54 88 78 116 108 116 50 81 104 55 97 63 32 84 76 95 92 116 83 85 77 97 58 94 119 43 92 73 111 104 46 40 69 104 61 59 95 66 111 89 80 36 41 115 44 58 91 80 120 114 117 54 85 106 57 100 65 36 88 80 100 95 119 86 87 79 103 64 97 123 49 95 74 114 108 47 42 70 108 68 61 97 72 113 90 81 39 46 116 46 60 94 81 124 115 120 56 89 110 60 103 68 38 91 84 104 99 121 89 93 83 108 67 103 124 53 103 78 115 111 52 43 72 111 71 65 104 76 117 97 87 41 50 118 49 61 99 86 126 118 121 57 90 113 64 108 71 41 95 88 111 100 126 91 95 88 114 71 107 130 57 104 84 119 115 55 47 76 113 74 66 106 80 127 99 90 42 51 129 52 63 102 90 131 123 132 61 92 119 66 110 72 42 96 89 114 102 130 94 99 89 115 74 108 132 60 105 87 123 118 59 51 78 114 77 70 107 81 131 102 93 45 53 134 53 66 103 92 135 126 136 63 95 123 70 111 76 45 99 92 116 104 134 97 101 93 119 78 110 137 64 110 91 127 121 61 54 79 117 79 72 111 82 134 104 94 46 57 135 56 68 108 95 139 131 137 64 97 126 74 113 77 49 100 94 119 109 135 98 105 99 123 82 112 140 66 112 95 129 124 64 57 84 118 85 74 115 88 137 106 95 49 61 140 60 69 109 102 144 134 142 68 106 130 76 116 81 51 107 98 120 112 137 104 106 101 124 84 116 142 69 116 99 132 126 67 59 86 121 88 75 117 92 139 109 100 53 64 144 64 72 111 103 148 136 148 70 107 131 80 120 83 52 108 ]; m=reshape(m,[],23); v=rank_file(m); vexp=[45 51 53 60 66 70 76 78 89 93 94 99 102 103 105 107 111 114 123 126 130 132 135 ]; assert(isequal(vexp,v))

20   Pass
m=[31 35 11 33 31 40 8 22 42 6 32 18 21 44 32 30 3 28 8 7 40 15 15 18 12 43 38 25 30 38 19 3 9 19 25 35 27 12 5 34 6 10 47 35 43 16 40 36 47 13 23 49 11 38 21 26 49 37 33 5 33 12 11 43 20 19 21 18 46 44 27 34 40 23 6 15 22 32 39 30 17 8 42 8 13 52 40 51 21 45 41 56 15 33 59 12 43 28 31 52 41 38 6 36 15 12 49 23 26 25 24 51 54 36 38 46 28 7 16 30 34 44 37 19 11 48 11 18 54 44 55 24 51 48 60 18 36 63 15 50 32 33 55 46 45 8 38 18 15 51 24 30 26 27 53 57 39 41 50 30 8 19 35 37 47 42 20 12 52 13 19 58 46 57 26 55 50 61 19 38 66 18 52 35 36 59 48 48 9 40 19 16 54 25 32 29 29 56 60 40 43 53 32 10 21 36 39 49 44 24 13 56 15 21 60 50 62 29 58 52 64 24 40 68 21 54 38 39 64 53 49 12 46 20 19 59 31 34 34 32 62 63 43 47 58 35 11 26 39 44 56 45 29 16 59 17 24 67 53 64 31 59 55 67 27 44 70 24 57 40 42 68 56 50 15 49 24 23 63 34 37 36 34 66 65 46 52 61 39 12 29 41 47 59 47 32 18 60 20 25 71 56 69 34 64 58 71 30 49 74 26 61 43 45 71 57 55 18 53 26 25 67 37 40 40 36 68 70 52 55 64 43 15 32 46 50 60 54 34 19 66 21 29 74 59 72 35 65 60 78 32 52 79 28 63 45 48 75 61 58 19 54 30 28 69 40 43 43 39 72 75 53 56 65 45 18 35 48 51 63 56 38 21 69 23 32 77 62 73 39 67 63 79 35 55 82 30 65 48 50 77 63 60 21 57 33 31 72 41 45 46 42 75 76 56 59 68 48 19 36 50 53 64 58 39 22 70 26 36 80 65 75 42 69 65 80 36 58 83 33 68 50 55 80 68 64 24 61 34 32 77 44 46 49 45 79 78 61 62 74 52 22 38 51 60 71 62 40 23 73 29 37 82 68 79 44 76 72 82 39 60 86 36 74 51 56 85 71 69 25 65 37 34 80 46 50 52 47 82 81 63 67 77 53 25 40 53 63 73 66 43 27 78 32 39 87 72 81 46 78 75 85 42 61 88 37 77 54 58 88 74 71 28 67 38 36 83 47 53 54 49 85 84 65 69 80 56 27 44 57 66 76 67 45 30 80 33 40 91 73 83 47 81 78 87 45 62 90 38 80 56 60 89 76 72 30 71 41 38 85 50 55 55 52 87 85 67 72 83 58 30 48 59 69 77 69 49 33 82 34 43 93 80 87 50 83 80 89 48 65 91 41 82 59 63 91 81 73 31 75 44 40 87 55 56 58 53 89 88 68 78 85 60 31 50 62 72 84 72 52 36 85 35 46 95 82 89 53 85 81 95 50 68 98 43 84 61 65 94 84 76 32 77 46 41 88 57 57 61 56 90 92 71 80 86 63 32 52 63 74 85 74 54 38 86 37 48 98 83 90 56 87 84 97 51 71 99 45 85 63 67 96 85 77 35 78 47 44 91 59 60 64 59 92 94 73 81 89 65 33 55 64 76 87 76 58 40 88 39 49 100 85 94 58 89 85 100 52 74 101 48 86 65 70 99 86 83 38 80 50 46 95 60 64 66 61 97 96 77 82 92 69 34 56 68 78 88 80 59 42 92 40 53 101 87 97 59 91 87 103 55 77 105 51 88 69 73 101 89 85 40 81 51 49 97 64 67 69 63 98 99 80 83 94 72 35 57 72 79 90 83 62 43 95 43 54 103 88 98 62 92 89 105 57 79 107 54 90 72 76 103 92 87 43 84 53 51 99 65 68 70 66 102 102 82 85 96 75 38 60 75 81 94 85 63 44 97 46 56 104 89 101 64 96 91 107 60 80 110 56 94 75 79 107 95 89 44 85 55 52 103 67 71 71 68 105 103 85 87 100 78 40 61 77 82 97 88 64 47 99 49 59 108 91 103 67 100 95 108 63 82 113 59 98 77 82 110 98 93 47 88 58 54 105 70 74 74 71 107 104 87 90 101 79 42 66 80 86 99 91 68 49 101 52 60 113 ]; m=reshape(m,[],22); v=rank_file(m); vexp=[24 29 32 34 37 42 45 46 50 51 58 61 62 64 65 68 69 73 75 78 80 83 ]; assert(isequal(vexp,v))

21   Pass
m=[4 3 2 2 3 1 1 5 4 3 3 4 2 2 6 5 4 4 5 3 3 7 6 5 5 6 4 4 ]; m=reshape(m,[],4); v=rank_file(m); vexp=[4 5 6 7 ]; assert(isequal(vexp,v))

22   Pass
m=[63 48 125 24 41 119 35 111 61 70 49 24 86 115 102 136 35 60 133 51 131 86 128 51 49 93 118 111 162 41 94 157 86 156 94 139 60 61 119 131 129 191 46 119 176 93 166 105 153 82 86 125 192 189 212 48 156 204 131 189 111 203 102 111 129 209 204 237 63 157 209 133 192 118 224 115 119 131 237 212 244 70 162 224 136 203 139 244 128 125 153 ]; m=reshape(m,[],7); v=rank_file(m); vexp=[46 82 105 125 166 176 191 ]; assert(isequal(vexp,v))

23   Pass
m=[4 1 7 6 6 3 8 5 47 9 2 9 46 8 5 1 3 7 2 12 2 15 14 14 11 16 13 48 17 10 17 49 16 13 2 11 15 10 19 3 22 21 21 18 23 20 51 24 11 24 50 23 20 3 18 22 11 25 4 28 27 27 19 29 26 53 30 12 30 52 29 26 4 19 28 12 26 5 33 32 32 20 34 31 55 35 13 35 54 34 31 5 20 33 13 27 6 37 36 36 21 38 32 56 39 14 39 57 38 32 6 21 37 14 28 7 40 37 37 22 41 33 58 42 15 42 59 41 33 7 22 40 15 29 8 41 38 38 23 43 34 61 44 16 44 60 43 34 8 23 41 16 30 9 42 39 39 24 44 35 63 45 17 45 62 44 35 9 24 42 17 52 47 58 57 56 51 61 55 64 62 48 63 64 60 54 46 50 59 49 ]; m=reshape(m,[],10); v=rank_file(m); vexp=[4 12 19 25 26 27 28 29 30 53 ]; assert(isequal(vexp,v))

24   Pass
m=[22 45 10 81 36 76 2 44 40 117 103 90 2 101 65 65 86 35 87 24 79 24 102 40 98 10 61 52 168 137 120 22 144 84 98 127 43 134 43 96 40 132 54 108 35 74 74 179 161 136 36 147 99 121 137 54 144 61 113 52 169 74 141 44 92 92 188 208 142 40 157 119 144 184 74 186 79 137 73 174 96 159 45 97 113 213 230 168 53 191 151 168 199 88 216 84 168 98 205 99 201 65 144 119 236 236 211 65 222 190 190 206 121 217 98 174 102 208 108 208 76 169 141 267 246 235 81 260 205 201 224 132 229 120 199 127 235 136 224 90 184 142 274 267 259 86 268 206 211 259 137 265 144 216 134 260 147 229 101 186 157 281 294 265 87 272 217 222 268 144 272 168 230 137 267 179 246 117 208 188 302 302 267 103 294 236 236 274 161 281 ]; m=reshape(m,[],10); v=rank_file(m); vexp=[53 73 88 97 137 151 159 168 191 213 ]; assert(isequal(vexp,v))

25   Pass
m=[27 24 23 31 11 19 34 3 21 21 30 3 26 36 7 29 4 9 26 22 12 19 15 6 16 36 31 27 44 15 23 38 4 25 24 40 6 31 39 12 34 10 12 32 27 15 21 17 10 18 40 33 31 48 16 27 44 7 27 28 44 9 35 45 15 38 12 15 35 30 16 25 20 12 22 43 37 32 50 20 29 46 11 29 32 47 12 37 50 16 41 15 16 41 33 20 28 24 15 23 47 40 39 51 23 32 48 15 36 34 50 16 40 54 22 44 18 20 42 36 24 32 28 17 28 49 43 40 53 28 34 54 19 39 37 51 19 42 55 25 46 21 27 45 39 29 34 32 23 32 51 44 43 55 29 39 56 21 40 40 53 21 47 58 27 51 25 28 48 41 32 37 36 24 34 53 45 44 58 32 40 62 22 41 43 55 23 51 64 31 55 27 30 50 44 33 39 39 27 36 60 53 45 64 37 42 66 24 44 47 61 26 53 68 35 56 31 33 56 51 37 43 40 31 40 61 56 50 67 41 46 68 26 48 51 63 29 56 72 38 57 34 35 57 55 41 45 44 32 42 62 60 53 68 43 50 72 27 51 54 66 30 60 74 40 61 37 40 61 59 43 49 45 36 47 72 66 55 79 46 54 75 30 53 56 75 34 61 79 44 63 38 44 68 62 47 51 48 40 50 74 68 58 82 50 55 79 31 55 58 79 36 64 82 45 67 39 48 72 64 50 53 54 44 51 ]; m=reshape(m,[],13); v=rank_file(m); vexp=[30 37 40 43 45 50 54 59 60 61 62 66 68 ]; assert(isequal(vexp,v))

26   Pass
m=[2 1 1 3 3 3 2 2 4 4 4 3 3 5 5 ]; m=reshape(m,[],3); v=rank_file(m); vexp=[2 3 4 ]; assert(isequal(vexp,v)) toc

Elapsed time is 1.826677 seconds.