1{ 2 "cells": [ 3 { 4 "cell_type": "markdown", 5 "id": "google", 6 "metadata": {}, 7 "source": [ 8 "##### Copyright 2021 Google LLC." 9 ] 10 }, 11 { 12 "cell_type": "markdown", 13 "id": "apache", 14 "metadata": {}, 15 "source": [ 16 "Licensed under the Apache License, Version 2.0 (the \"License\");\n", 17 "you may not use this file except in compliance with the License.\n", 18 "You may obtain a copy of the License at\n", 19 "\n", 20 " http://www.apache.org/licenses/LICENSE-2.0\n", 21 "\n", 22 "Unless required by applicable law or agreed to in writing, software\n", 23 "distributed under the License is distributed on an \"AS IS\" BASIS,\n", 24 "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", 25 "See the License for the specific language governing permissions and\n", 26 "limitations under the License.\n" 27 ] 28 }, 29 { 30 "cell_type": "markdown", 31 "id": "basename", 32 "metadata": {}, 33 "source": [ 34 "# bus_driver_scheduling_flow_sat" 35 ] 36 }, 37 { 38 "cell_type": "markdown", 39 "id": "link", 40 "metadata": {}, 41 "source": [ 42 "<table align=\"left\">\n", 43 "<td>\n", 44 "<a href=\"https://colab.research.google.com/github/google/or-tools/blob/master/examples/notebook/examples/bus_driver_scheduling_flow_sat.ipynb\"><img src=\"https://raw.githubusercontent.com/google/or-tools/master/tools/colab_32px.png\"/>Run in Google Colab</a>\n", 45 "</td>\n", 46 "<td>\n", 47 "<a href=\"https://github.com/google/or-tools/blob/master/examples/python/bus_driver_scheduling_flow_sat.py\"><img src=\"https://raw.githubusercontent.com/google/or-tools/master/tools/github_32px.png\"/>View source on GitHub</a>\n", 48 "</td>\n", 49 "</table>" 50 ] 51 }, 52 { 53 "cell_type": "markdown", 54 "id": "doc", 55 "metadata": {}, 56 "source": [ 57 "First, you must install [ortools](https://pypi.org/project/ortools/) package in this colab." 58 ] 59 }, 60 { 61 "cell_type": "code", 62 "execution_count": null, 63 "id": "install", 64 "metadata": {}, 65 "outputs": [], 66 "source": [ 67 "!pip install ortools" 68 ] 69 }, 70 { 71 "cell_type": "code", 72 "execution_count": null, 73 "id": "code", 74 "metadata": {}, 75 "outputs": [], 76 "source": [ 77 "# Copyright 2010-2021 Google LLC\n", 78 "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", 79 "# you may not use this file except in compliance with the License.\n", 80 "# You may obtain a copy of the License at\n", 81 "#\n", 82 "# http://www.apache.org/licenses/LICENSE-2.0\n", 83 "#\n", 84 "# Unless required by applicable law or agreed to in writing, software\n", 85 "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", 86 "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", 87 "# See the License for the specific language governing permissions and\n", 88 "# limitations under the License.\n", 89 "\"\"\"This model implements a bus driver scheduling problem.\n", 90 "\n", 91 "Constraints:\n", 92 "- max driving time per driver <= 9h\n", 93 "- max working time per driver <= 12h\n", 94 "- min working time per driver >= 6.5h (soft)\n", 95 "- 30 min break after each 4h of driving time per driver\n", 96 "- 10 min preparation time before the first shift\n", 97 "- 15 min cleaning time after the last shift\n", 98 "- 2 min waiting time after each shift for passenger boarding and alighting\n", 99 "\"\"\"\n", 100 "\n", 101 "import argparse\n", 102 "import collections\n", 103 "import math\n", 104 "\n", 105 "from ortools.sat.python import cp_model\n", 106 "\n", 107 "PARSER = argparse.ArgumentParser()\n", 108 "PARSER.add_argument(\n", 109 " '--instance', default=1, type=int, help='Instance number (1..3).')\n", 110 "PARSER.add_argument(\n", 111 " '--output_proto_file',\n", 112 " default=\"\",\n", 113 " help='Output file to write the cp_model'\n", 114 " 'proto to.')\n", 115 "PARSER.add_argument('--params', default=\"\", help='Sat solver parameters.')\n", 116 "\n", 117 "SAMPLE_SHIFTS_SMALL = [\n", 118 " #\n", 119 " # column description:\n", 120 " # - shift id\n", 121 " # - shift start time as hh:mm string (for logging and readability purposes)\n", 122 " # - shift end time as hh:mm string (for logging and readability purposes)\n", 123 " # - shift start minute\n", 124 " # - shift end minute\n", 125 " # - shift duration in minutes\n", 126 " #\n", 127 " [0, '05:18', '06:00', 318, 360, 42],\n", 128 " [1, '05:26', '06:08', 326, 368, 42],\n", 129 " [2, '05:40', '05:56', 340, 356, 16],\n", 130 " [3, '06:06', '06:51', 366, 411, 45],\n", 131 " [4, '06:40', '07:52', 400, 472, 72],\n", 132 " [5, '06:42', '07:13', 402, 433, 31],\n", 133 " [6, '06:48', '08:15', 408, 495, 87],\n", 134 " [7, '06:59', '08:07', 419, 487, 68],\n", 135 " [8, '07:20', '07:36', 440, 456, 16],\n", 136 " [9, '07:35', '08:22', 455, 502, 47],\n", 137 " [10, '07:50', '08:55', 470, 535, 65],\n", 138 " [11, '08:00', '09:05', 480, 545, 65],\n", 139 " [12, '08:00', '08:35', 480, 515, 35],\n", 140 " [13, '08:11', '09:41', 491, 581, 90],\n", 141 " [14, '08:28', '08:50', 508, 530, 22],\n", 142 " [15, '08:35', '08:45', 515, 525, 10],\n", 143 " [16, '08:40', '08:50', 520, 530, 10],\n", 144 " [17, '09:03', '10:28', 543, 628, 85],\n", 145 " [18, '09:23', '09:49', 563, 589, 26],\n", 146 " [19, '09:30', '09:40', 570, 580, 10],\n", 147 " [20, '09:57', '10:20', 597, 620, 23],\n", 148 " [21, '10:09', '11:03', 609, 663, 54],\n", 149 " [22, '10:20', '10:30', 620, 630, 10],\n", 150 " [23, '11:00', '11:10', 660, 670, 10],\n", 151 " [24, '11:45', '12:24', 705, 744, 39],\n", 152 " [25, '12:18', '13:00', 738, 780, 42],\n", 153 " [26, '13:18', '14:44', 798, 884, 86],\n", 154 " [27, '13:53', '14:49', 833, 889, 56],\n", 155 " [28, '14:03', '14:50', 843, 890, 47],\n", 156 " [29, '14:28', '15:15', 868, 915, 47],\n", 157 " [30, '14:30', '15:41', 870, 941, 71],\n", 158 " [31, '14:48', '15:35', 888, 935, 47],\n", 159 " [32, '15:03', '15:50', 903, 950, 47],\n", 160 " [33, '15:28', '16:54', 928, 1014, 86],\n", 161 " [34, '15:38', '16:25', 938, 985, 47],\n", 162 " [35, '15:40', '15:56', 940, 956, 16],\n", 163 " [36, '15:58', '16:45', 958, 1005, 47],\n", 164 " [37, '16:04', '17:30', 964, 1050, 86],\n", 165 " [38, '16:28', '17:15', 988, 1035, 47],\n", 166 " [39, '16:36', '17:21', 996, 1041, 45],\n", 167 " [40, '16:50', '17:00', 1010, 1020, 10],\n", 168 " [41, '16:54', '18:20', 1014, 1100, 86],\n", 169 " [42, '17:01', '17:13', 1021, 1033, 12],\n", 170 " [43, '17:19', '18:31', 1039, 1111, 72],\n", 171 " [44, '17:23', '18:10', 1043, 1090, 47],\n", 172 " [45, '17:34', '18:15', 1054, 1095, 41],\n", 173 " [46, '18:04', '19:29', 1084, 1169, 85],\n", 174 " [47, '18:34', '19:58', 1114, 1198, 84],\n", 175 " [48, '19:56', '20:34', 1196, 1234, 38],\n", 176 " [49, '20:05', '20:48', 1205, 1248, 43]\n", 177 "] # yapf:disable\n", 178 "\n", 179 "SAMPLE_SHIFTS_MEDIUM = [\n", 180 " [0, '04:30', '04:53', 270, 293, 23],\n", 181 " [1, '04:46', '04:56', 286, 296, 10],\n", 182 " [2, '04:52', '05:56', 292, 356, 64],\n", 183 " [3, '04:53', '05:23', 293, 323, 30],\n", 184 " [4, '05:07', '05:44', 307, 344, 37],\n", 185 " [5, '05:10', '06:06', 310, 366, 56],\n", 186 " [6, '05:18', '06:03', 318, 363, 45],\n", 187 " [7, '05:30', '05:40', 330, 340, 10],\n", 188 " [8, '05:30', '05:40', 330, 340, 10],\n", 189 " [9, '05:33', '06:15', 333, 375, 42],\n", 190 " [10, '05:40', '05:50', 340, 350, 10],\n", 191 " [11, '05:43', '06:08', 343, 368, 25],\n", 192 " [12, '05:54', '07:20', 354, 440, 86],\n", 193 " [13, '06:04', '06:37', 364, 397, 33],\n", 194 " [14, '06:13', '06:58', 373, 418, 45],\n", 195 " [15, '06:14', '07:40', 374, 460, 86],\n", 196 " [16, '06:15', '07:15', 375, 435, 60],\n", 197 " [17, '06:16', '06:26', 376, 386, 10],\n", 198 " [18, '06:17', '06:34', 377, 394, 17],\n", 199 " [19, '06:20', '06:36', 380, 396, 16],\n", 200 " [20, '06:22', '07:06', 382, 426, 44],\n", 201 " [21, '06:24', '07:50', 384, 470, 86],\n", 202 " [22, '06:27', '06:44', 387, 404, 17],\n", 203 " [23, '06:30', '06:40', 390, 400, 10],\n", 204 " [24, '06:31', '06:43', 391, 403, 12],\n", 205 " [25, '06:33', '07:53', 393, 473, 80],\n", 206 " [26, '06:34', '07:09', 394, 429, 35],\n", 207 " [27, '06:40', '06:56', 400, 416, 16],\n", 208 " [28, '06:44', '07:17', 404, 437, 33],\n", 209 " [29, '06:46', '06:58', 406, 418, 12],\n", 210 " [30, '06:49', '07:43', 409, 463, 54],\n", 211 " [31, '06:50', '07:05', 410, 425, 15],\n", 212 " [32, '06:52', '07:36', 412, 456, 44],\n", 213 " [33, '06:54', '07:27', 414, 447, 33],\n", 214 " [34, '06:56', '08:23', 416, 503, 87],\n", 215 " [35, '07:04', '07:44', 424, 464, 40],\n", 216 " [36, '07:11', '08:36', 431, 516, 85],\n", 217 " [37, '07:17', '07:35', 437, 455, 18],\n", 218 " [38, '07:22', '08:06', 442, 486, 44],\n", 219 " [39, '07:27', '08:15', 447, 495, 48],\n", 220 " [40, '07:35', '07:45', 455, 465, 10],\n", 221 " [41, '07:43', '08:08', 463, 488, 25],\n", 222 " [42, '07:50', '08:37', 470, 517, 47],\n", 223 " [43, '07:58', '08:45', 478, 525, 47],\n", 224 " [44, '08:00', '08:35', 480, 515, 35],\n", 225 " [45, '08:06', '08:51', 486, 531, 45],\n", 226 " [46, '08:10', '08:45', 490, 525, 35],\n", 227 " [47, '08:15', '08:30', 495, 510, 15],\n", 228 " [48, '08:16', '09:00', 496, 540, 44],\n", 229 " [49, '08:18', '09:16', 498, 556, 58],\n", 230 " [50, '08:20', '08:36', 500, 516, 16],\n", 231 " [51, '08:27', '09:07', 507, 547, 40],\n", 232 " [52, '08:30', '08:45', 510, 525, 15],\n", 233 " [53, '08:35', '09:15', 515, 555, 40],\n", 234 " [54, '08:46', '09:30', 526, 570, 44],\n", 235 " [55, '08:51', '09:17', 531, 557, 26],\n", 236 " [56, '08:55', '09:15', 535, 555, 20],\n", 237 " [57, '08:58', '09:38', 538, 578, 40],\n", 238 " [58, '09:00', '09:35', 540, 575, 35],\n", 239 " [59, '09:00', '09:16', 540, 556, 16],\n", 240 " [60, '09:20', '09:36', 560, 576, 16],\n", 241 " [61, '09:31', '09:43', 571, 583, 12],\n", 242 " [62, '09:33', '10:15', 573, 615, 42],\n", 243 " [63, '09:54', '10:05', 594, 605, 11],\n", 244 " [64, '10:11', '10:38', 611, 638, 27],\n", 245 " [65, '10:18', '11:00', 618, 660, 42],\n", 246 " [66, '10:21', '10:47', 621, 647, 26],\n", 247 " [67, '10:25', '11:04', 625, 664, 39],\n", 248 " [68, '10:26', '11:08', 626, 668, 42],\n", 249 " [69, '10:44', '12:11', 644, 731, 87],\n", 250 " [70, '11:00', '11:16', 660, 676, 16],\n", 251 " [71, '11:15', '11:54', 675, 714, 39],\n", 252 " [72, '11:16', '11:28', 676, 688, 12],\n", 253 " [73, '11:20', '11:30', 680, 690, 10],\n", 254 " [74, '11:21', '11:47', 681, 707, 26],\n", 255 " [75, '11:25', '12:04', 685, 724, 39],\n", 256 " [76, '11:34', '11:45', 694, 705, 11],\n", 257 " [77, '11:35', '12:14', 695, 734, 39],\n", 258 " [78, '11:41', '12:23', 701, 743, 42],\n", 259 " [79, '11:44', '12:35', 704, 755, 51],\n", 260 " [80, '11:46', '11:58', 706, 718, 12],\n", 261 " [81, '12:00', '12:10', 720, 730, 10],\n", 262 " [82, '12:04', '12:15', 724, 735, 11],\n", 263 " [83, '12:04', '13:04', 724, 784, 60],\n", 264 " [84, '12:11', '12:38', 731, 758, 27],\n", 265 " [85, '12:15', '12:54', 735, 774, 39],\n", 266 " [86, '12:25', '13:10', 745, 790, 45],\n", 267 " [87, '12:30', '12:40', 750, 760, 10],\n", 268 " [88, '12:34', '13:58', 754, 838, 84],\n", 269 " [89, '12:38', '13:25', 758, 805, 47],\n", 270 " [90, '12:48', '13:35', 768, 815, 47],\n", 271 " [91, '13:00', '13:16', 780, 796, 16],\n", 272 " [92, '13:05', '13:44', 785, 824, 39],\n", 273 " [93, '13:08', '13:55', 788, 835, 47],\n", 274 " [94, '13:14', '14:38', 794, 878, 84],\n", 275 " [95, '13:23', '13:49', 803, 829, 26],\n", 276 " [96, '13:25', '14:04', 805, 844, 39],\n", 277 " [97, '13:28', '14:54', 808, 894, 86],\n", 278 " [98, '13:31', '13:43', 811, 823, 12],\n", 279 " [99, '13:34', '14:58', 814, 898, 84],\n", 280 " [100, '13:38', '14:25', 818, 865, 47],\n", 281 " [101, '13:38', '15:04', 818, 904, 86],\n", 282 " [102, '13:39', '14:33', 819, 873, 54],\n", 283 " [103, '13:40', '13:50', 820, 830, 10],\n", 284 " [104, '13:43', '14:10', 823, 850, 27],\n", 285 " [105, '13:48', '14:35', 828, 875, 47],\n", 286 " [106, '13:48', '14:35', 828, 875, 47],\n", 287 " [107, '13:53', '14:40', 833, 880, 47],\n", 288 " [108, '13:58', '15:24', 838, 924, 86],\n", 289 " [109, '13:58', '14:25', 838, 865, 27],\n", 290 " [110, '14:00', '14:16', 840, 856, 16],\n", 291 " [111, '14:13', '15:00', 853, 900, 47],\n", 292 " [112, '14:20', '15:31', 860, 931, 71],\n", 293 " [113, '14:25', '15:02', 865, 902, 37],\n", 294 " [114, '14:34', '14:45', 874, 885, 11],\n", 295 " [115, '14:40', '15:51', 880, 951, 71],\n", 296 " [116, '14:40', '14:56', 880, 896, 16],\n", 297 " [117, '14:46', '14:58', 886, 898, 12],\n", 298 " [118, '14:49', '15:43', 889, 943, 54],\n", 299 " [119, '14:52', '15:21', 892, 921, 29],\n", 300 " [120, '14:58', '16:24', 898, 984, 86],\n", 301 " [121, '14:59', '15:53', 899, 953, 54],\n", 302 " [122, '15:00', '15:10', 900, 910, 10],\n", 303 " [123, '15:00', '15:35', 900, 935, 35],\n", 304 " [124, '15:08', '15:45', 908, 945, 37],\n", 305 " [125, '15:12', '15:36', 912, 936, 24],\n", 306 " [126, '15:18', '16:05', 918, 965, 47],\n", 307 " [127, '15:24', '16:05', 924, 965, 41],\n", 308 " [128, '15:31', '15:43', 931, 943, 12],\n", 309 " [129, '15:35', '15:54', 935, 954, 19],\n", 310 " [130, '15:36', '16:21', 936, 981, 45],\n", 311 " [131, '15:39', '16:33', 939, 993, 54],\n", 312 " [132, '15:48', '16:35', 948, 995, 47],\n", 313 " [133, '15:50', '17:01', 950, 1021, 71],\n", 314 " [134, '16:03', '16:50', 963, 1010, 47],\n", 315 " [135, '16:18', '17:44', 978, 1064, 86],\n", 316 " [136, '16:24', '17:05', 984, 1025, 41],\n", 317 " [137, '16:28', '17:15', 988, 1035, 47],\n", 318 " [138, '16:34', '17:15', 994, 1035, 41],\n", 319 " [139, '16:38', '17:25', 998, 1045, 47],\n", 320 " [140, '16:40', '16:56', 1000, 1016, 16],\n", 321 " [141, '16:45', '17:04', 1005, 1024, 19],\n", 322 " [142, '16:52', '17:36', 1012, 1056, 44],\n", 323 " [143, '16:58', '17:45', 1018, 1065, 47],\n", 324 " [144, '17:04', '18:30', 1024, 1110, 86],\n", 325 " [145, '17:04', '17:45', 1024, 1065, 41],\n", 326 " [146, '17:09', '18:03', 1029, 1083, 54],\n", 327 " [147, '17:18', '18:44', 1038, 1124, 86],\n", 328 " [148, '17:28', '18:15', 1048, 1095, 47],\n", 329 " [149, '17:29', '18:41', 1049, 1121, 72],\n", 330 " [150, '17:36', '18:21', 1056, 1101, 45],\n", 331 " [151, '17:38', '18:25', 1058, 1105, 47],\n", 332 " [152, '17:40', '17:56', 1060, 1076, 16],\n", 333 " [153, '17:45', '18:04', 1065, 1084, 19],\n", 334 " [154, '17:46', '17:58', 1066, 1078, 12],\n", 335 " [155, '17:48', '18:35', 1068, 1115, 47],\n", 336 " [156, '17:49', '18:43', 1069, 1123, 54],\n", 337 " [157, '17:55', '18:14', 1075, 1094, 19],\n", 338 " [158, '17:58', '18:45', 1078, 1125, 47],\n", 339 " [159, '18:00', '19:11', 1080, 1151, 71],\n", 340 " [160, '18:04', '18:45', 1084, 1125, 41],\n", 341 " [161, '18:09', '19:03', 1089, 1143, 54],\n", 342 " [162, '18:13', '19:00', 1093, 1140, 47],\n", 343 " [163, '18:13', '18:40', 1093, 1120, 27],\n", 344 " [164, '18:19', '19:13', 1099, 1153, 54],\n", 345 " [165, '18:28', '19:25', 1108, 1165, 57],\n", 346 " [166, '18:48', '19:28', 1128, 1168, 40],\n", 347 " [167, '19:03', '19:45', 1143, 1185, 42],\n", 348 " [168, '19:20', '19:36', 1160, 1176, 16],\n", 349 " [169, '19:21', '19:31', 1161, 1171, 10],\n", 350 " [170, '19:25', '20:04', 1165, 1204, 39],\n", 351 " [171, '19:26', '20:08', 1166, 1208, 42],\n", 352 " [172, '19:30', '19:40', 1170, 1180, 10],\n", 353 " [173, '19:44', '20:33', 1184, 1233, 49],\n", 354 " [174, '19:48', '21:09', 1188, 1269, 81],\n", 355 " [175, '19:53', '21:02', 1193, 1262, 69],\n", 356 " [176, '20:04', '20:29', 1204, 1229, 25],\n", 357 " [177, '20:17', '21:03', 1217, 1263, 46],\n", 358 " [178, '20:20', '20:57', 1220, 1257, 37],\n", 359 " [179, '20:29', '21:18', 1229, 1278, 49],\n", 360 " [180, '20:35', '21:54', 1235, 1314, 79],\n", 361 " [181, '20:40', '20:50', 1240, 1250, 10],\n", 362 " [182, '20:47', '21:42', 1247, 1302, 55],\n", 363 " [183, '21:00', '21:10', 1260, 1270, 10],\n", 364 " [184, '21:07', '21:44', 1267, 1304, 37],\n", 365 " [185, '21:14', '22:03', 1274, 1323, 49],\n", 366 " [186, '21:39', '21:55', 1299, 1315, 16],\n", 367 " [187, '21:40', '22:17', 1300, 1337, 37],\n", 368 " [188, '21:40', '21:50', 1300, 1310, 10],\n", 369 " [189, '21:48', '22:03', 1308, 1323, 15],\n", 370 " [190, '22:17', '23:03', 1337, 1383, 46],\n", 371 " [191, '22:43', '23:08', 1363, 1388, 25],\n", 372 " [192, '23:35', '01:05', 1415, 1505, 90],\n", 373 " [193, '23:46', '00:01', 1426, 1441, 15],\n", 374 " [194, '23:47', '00:33', 1427, 1473, 46],\n", 375 " [195, '23:52', '00:24', 1432, 1464, 32],\n", 376 " [196, '23:58', '00:38', 1438, 1478, 40],\n", 377 " [197, '00:02', '00:12', 1442, 1452, 10],\n", 378 " [198, '00:07', '00:39', 1447, 1479, 32],\n", 379 " [199, '00:25', '01:12', 1465, 1512, 47]\n", 380 "] # yapf:disable\n", 381 "\n", 382 "SAMPLE_SHIFTS_LARGE = [\n", 383 " [0, '04:18', '05:00', 258, 300, 42],\n", 384 " [1, '04:27', '05:08', 267, 308, 41],\n", 385 " [2, '04:29', '05:26', 269, 326, 57],\n", 386 " [3, '04:29', '04:55', 269, 295, 26],\n", 387 " [4, '04:30', '04:53', 270, 293, 23],\n", 388 " [5, '04:30', '04:51', 270, 291, 21],\n", 389 " [6, '04:31', '04:53', 271, 293, 22],\n", 390 " [7, '04:33', '05:15', 273, 315, 42],\n", 391 " [8, '04:34', '04:44', 274, 284, 10],\n", 392 " [9, '04:34', '05:03', 274, 303, 29],\n", 393 " [10, '04:35', '04:50', 275, 290, 15],\n", 394 " [11, '04:36', '04:46', 276, 286, 10],\n", 395 " [12, '04:37', '05:18', 277, 318, 41],\n", 396 " [13, '04:41', '05:13', 281, 313, 32],\n", 397 " [14, '04:42', '05:23', 282, 323, 41],\n", 398 " [15, '04:43', '04:53', 283, 293, 10],\n", 399 " [16, '04:44', '05:45', 284, 345, 61],\n", 400 " [17, '04:45', '05:11', 285, 311, 26],\n", 401 " [18, '04:46', '05:01', 286, 301, 15],\n", 402 " [19, '04:46', '04:56', 286, 296, 10],\n", 403 " [20, '04:47', '05:14', 287, 314, 27],\n", 404 " [21, '04:48', '05:30', 288, 330, 42],\n", 405 " [22, '04:49', '05:41', 289, 341, 52],\n", 406 " [23, '04:49', '05:18', 289, 318, 29],\n", 407 " [24, '04:50', '05:33', 290, 333, 43],\n", 408 " [25, '04:52', '05:56', 292, 356, 64],\n", 409 " [26, '04:52', '05:07', 292, 307, 15],\n", 410 " [27, '04:53', '05:19', 293, 319, 26],\n", 411 " [28, '04:53', '05:23', 293, 323, 30],\n", 412 " [29, '04:55', '05:27', 295, 327, 32],\n", 413 " [30, '04:57', '05:38', 297, 338, 41],\n", 414 " [31, '05:00', '06:00', 300, 360, 60],\n", 415 " [32, '05:00', '05:54', 300, 354, 54],\n", 416 " [33, '05:01', '05:33', 301, 333, 32],\n", 417 " [34, '05:01', '05:26', 301, 326, 25],\n", 418 " [35, '05:02', '05:29', 302, 329, 27],\n", 419 " [36, '05:02', '05:12', 302, 312, 10],\n", 420 " [37, '05:03', '05:45', 303, 345, 42],\n", 421 " [38, '05:03', '05:18', 303, 318, 15],\n", 422 " [39, '05:03', '06:28', 303, 388, 85],\n", 423 " [40, '05:03', '05:13', 303, 313, 10],\n", 424 " [41, '05:04', '06:24', 304, 384, 80],\n", 425 " [42, '05:07', '05:44', 307, 344, 37],\n", 426 " [43, '05:08', '05:48', 308, 348, 40],\n", 427 " [44, '05:10', '06:06', 310, 366, 56],\n", 428 " [45, '05:11', '05:37', 311, 337, 26],\n", 429 " [46, '05:11', '05:53', 311, 353, 42],\n", 430 " [47, '05:13', '06:15', 313, 375, 62],\n", 431 " [48, '05:13', '05:38', 313, 338, 25],\n", 432 " [49, '05:16', '05:44', 316, 344, 28],\n", 433 " [50, '05:17', '05:27', 317, 327, 10],\n", 434 " [51, '05:18', '06:40', 318, 400, 82],\n", 435 " [52, '05:18', '06:03', 318, 363, 45],\n", 436 " [53, '05:18', '06:11', 318, 371, 53],\n", 437 " [54, '05:18', '06:00', 318, 360, 42],\n", 438 " [55, '05:19', '06:34', 319, 394, 75],\n", 439 " [56, '05:20', '06:17', 320, 377, 57],\n", 440 " [57, '05:22', '05:59', 322, 359, 37],\n", 441 " [58, '05:24', '05:48', 324, 348, 24],\n", 442 " [59, '05:25', '05:40', 325, 340, 15],\n", 443 " [60, '05:26', '06:08', 326, 368, 42],\n", 444 " [61, '05:27', '06:30', 327, 390, 63],\n", 445 " [62, '05:27', '05:54', 327, 354, 27],\n", 446 " [63, '05:28', '05:53', 328, 353, 25],\n", 447 " [64, '05:29', '05:44', 329, 344, 15],\n", 448 " [65, '05:30', '05:40', 330, 340, 10],\n", 449 " [66, '05:30', '05:40', 330, 340, 10],\n", 450 " [67, '05:30', '05:40', 330, 340, 10],\n", 451 " [68, '05:32', '06:53', 332, 413, 81],\n", 452 " [69, '05:33', '07:00', 333, 420, 87],\n", 453 " [70, '05:33', '06:15', 333, 375, 42],\n", 454 " [71, '05:33', '05:47', 333, 347, 14],\n", 455 " [72, '05:37', '06:13', 337, 373, 36],\n", 456 " [73, '05:37', '06:05', 337, 365, 28],\n", 457 " [74, '05:38', '06:33', 338, 393, 55],\n", 458 " [75, '05:38', '06:04', 338, 364, 26],\n", 459 " [76, '05:38', '06:18', 338, 378, 40],\n", 460 " [77, '05:39', '05:54', 339, 354, 15],\n", 461 " [78, '05:40', '05:56', 340, 356, 16],\n", 462 " [79, '05:40', '06:41', 340, 401, 61],\n", 463 " [80, '05:40', '05:50', 340, 350, 10],\n", 464 " [81, '05:41', '06:23', 341, 383, 42],\n", 465 " [82, '05:41', '06:01', 341, 361, 20],\n", 466 " [83, '05:43', '06:08', 343, 368, 25],\n", 467 " [84, '05:44', '07:10', 344, 430, 86],\n", 468 " [85, '05:44', '05:55', 344, 355, 11],\n", 469 " [86, '05:45', '06:44', 345, 404, 59],\n", 470 " [87, '05:47', '06:17', 347, 377, 30],\n", 471 " [88, '05:48', '07:08', 348, 428, 80],\n", 472 " [89, '05:48', '06:30', 348, 390, 42],\n", 473 " [90, '05:50', '06:50', 350, 410, 60],\n", 474 " [91, '05:50', '06:00', 350, 360, 10],\n", 475 " [92, '05:50', '06:00', 350, 360, 10],\n", 476 " [93, '05:50', '06:51', 350, 411, 61],\n", 477 " [94, '05:52', '06:33', 352, 393, 41],\n", 478 " [95, '05:52', '06:36', 352, 396, 44],\n", 479 " [96, '05:52', '06:23', 352, 383, 31],\n", 480 " [97, '05:54', '06:14', 354, 374, 20],\n", 481 " [98, '05:54', '07:20', 354, 440, 86],\n", 482 " [99, '05:55', '06:40', 355, 400, 45],\n", 483 " [100, '05:55', '06:27', 355, 387, 32],\n", 484 " [101, '05:56', '06:35', 356, 395, 39],\n", 485 " [102, '05:56', '06:06', 356, 366, 10],\n", 486 " [103, '05:57', '06:21', 357, 381, 24],\n", 487 " [104, '05:58', '07:23', 358, 443, 85],\n", 488 " [105, '05:58', '06:23', 358, 383, 25],\n", 489 " [106, '05:58', '06:08', 358, 368, 10],\n", 490 " [107, '05:58', '06:43', 358, 403, 45],\n", 491 " [108, '06:00', '06:10', 360, 370, 10],\n", 492 " [109, '06:00', '06:16', 360, 376, 16],\n", 493 " [110, '06:00', '07:01', 360, 421, 61],\n", 494 " [111, '06:01', '07:00', 361, 420, 59],\n", 495 " [112, '06:01', '06:13', 361, 373, 12],\n", 496 " [113, '06:01', '06:45', 361, 405, 44],\n", 497 " [114, '06:03', '06:50', 363, 410, 47],\n", 498 " [115, '06:04', '06:37', 364, 397, 33],\n", 499 " [116, '06:04', '07:30', 364, 450, 86],\n", 500 " [117, '06:05', '06:24', 365, 384, 19],\n", 501 " [118, '06:06', '06:51', 366, 411, 45],\n", 502 " [119, '06:07', '06:43', 367, 403, 36],\n", 503 " [120, '06:08', '07:30', 368, 450, 82],\n", 504 " [121, '06:10', '06:20', 370, 380, 10],\n", 505 " [122, '06:10', '07:17', 370, 437, 67],\n", 506 " [123, '06:11', '06:54', 371, 414, 43],\n", 507 " [124, '06:11', '06:21', 371, 381, 10],\n", 508 " [125, '06:13', '06:38', 373, 398, 25],\n", 509 " [126, '06:13', '06:58', 373, 418, 45],\n", 510 " [127, '06:13', '06:53', 373, 413, 40],\n", 511 " [128, '06:14', '07:03', 374, 423, 49],\n", 512 " [129, '06:14', '06:47', 374, 407, 33],\n", 513 " [130, '06:14', '07:40', 374, 460, 86],\n", 514 " [131, '06:15', '07:15', 375, 435, 60],\n", 515 " [132, '06:16', '06:28', 376, 388, 12],\n", 516 " [133, '06:16', '06:26', 376, 386, 10],\n", 517 " [134, '06:17', '06:34', 377, 394, 17],\n", 518 " [135, '06:18', '07:06', 378, 426, 48],\n", 519 " [136, '06:18', '07:38', 378, 458, 80],\n", 520 " [137, '06:18', '07:02', 378, 422, 44],\n", 521 " [138, '06:19', '06:53', 379, 413, 34],\n", 522 " [139, '06:20', '07:25', 380, 445, 65],\n", 523 " [140, '06:20', '06:36', 380, 396, 16],\n", 524 " [141, '06:20', '06:30', 380, 390, 10],\n", 525 " [142, '06:20', '06:30', 380, 390, 10],\n", 526 " [143, '06:21', '06:49', 381, 409, 28],\n", 527 " [144, '06:22', '07:06', 382, 426, 44],\n", 528 " [145, '06:24', '07:50', 384, 470, 86],\n", 529 " [146, '06:24', '06:57', 384, 417, 33],\n", 530 " [147, '06:26', '07:45', 386, 465, 79],\n", 531 " [148, '06:26', '07:10', 386, 430, 44],\n", 532 " [149, '06:27', '06:44', 387, 404, 17],\n", 533 " [150, '06:28', '06:53', 388, 413, 25],\n", 534 " [151, '06:28', '07:14', 388, 434, 46],\n", 535 " [152, '06:29', '07:03', 389, 423, 34],\n", 536 " [153, '06:30', '06:40', 390, 400, 10],\n", 537 " [154, '06:30', '07:37', 390, 457, 67],\n", 538 " [155, '06:31', '06:43', 391, 403, 12],\n", 539 " [156, '06:33', '07:14', 393, 434, 41],\n", 540 " [157, '06:33', '07:53', 393, 473, 80],\n", 541 " [158, '06:34', '08:16', 394, 496, 102],\n", 542 " [159, '06:34', '07:09', 394, 429, 35],\n", 543 " [160, '06:34', '07:07', 394, 427, 33],\n", 544 " [161, '06:36', '07:21', 396, 441, 45],\n", 545 " [162, '06:37', '07:22', 397, 442, 45],\n", 546 " [163, '06:37', '06:54', 397, 414, 17],\n", 547 " [164, '06:38', '07:30', 398, 450, 52],\n", 548 " [165, '06:38', '07:18', 398, 438, 40],\n", 549 " [166, '06:39', '07:33', 399, 453, 54],\n", 550 " [167, '06:40', '07:52', 400, 472, 72],\n", 551 " [168, '06:40', '06:50', 400, 410, 10],\n", 552 " [169, '06:40', '07:22', 400, 442, 42],\n", 553 " [170, '06:40', '06:56', 400, 416, 16],\n", 554 " [171, '06:41', '08:00', 401, 480, 79],\n", 555 " [172, '06:42', '07:26', 402, 446, 44],\n", 556 " [173, '06:42', '07:13', 402, 433, 31],\n", 557 " [174, '06:43', '07:08', 403, 428, 25],\n", 558 " [175, '06:43', '07:30', 403, 450, 47],\n", 559 " [176, '06:43', '07:23', 403, 443, 40],\n", 560 " [177, '06:44', '07:17', 404, 437, 33],\n", 561 " [178, '06:44', '08:13', 404, 493, 89],\n", 562 " [179, '06:46', '07:01', 406, 421, 15],\n", 563 " [180, '06:46', '06:58', 406, 418, 12],\n", 564 " [181, '06:47', '07:04', 407, 424, 17],\n", 565 " [182, '06:48', '08:15', 408, 495, 87],\n", 566 " [183, '06:48', '07:34', 408, 454, 46],\n", 567 " [184, '06:48', '07:37', 408, 457, 49],\n", 568 " [185, '06:49', '07:43', 409, 463, 54],\n", 569 " [186, '06:50', '08:00', 410, 480, 70],\n", 570 " [187, '06:50', '07:00', 410, 420, 10],\n", 571 " [188, '06:50', '07:05', 410, 425, 15],\n", 572 " [189, '06:51', '07:18', 411, 438, 27],\n", 573 " [190, '06:52', '07:36', 412, 456, 44],\n", 574 " [191, '06:53', '07:37', 413, 457, 44],\n", 575 " [192, '06:54', '08:20', 414, 500, 86],\n", 576 " [193, '06:54', '07:27', 414, 447, 33],\n", 577 " [194, '06:54', '07:20', 414, 440, 26],\n", 578 " [195, '06:56', '08:23', 416, 503, 87],\n", 579 " [196, '06:57', '07:12', 417, 432, 15],\n", 580 " [197, '06:57', '07:58', 417, 478, 61],\n", 581 " [198, '06:57', '07:45', 417, 465, 48],\n", 582 " [199, '06:57', '07:40', 417, 460, 43],\n", 583 " [200, '06:58', '07:23', 418, 443, 25],\n", 584 " [201, '06:59', '07:53', 419, 473, 54],\n", 585 " [202, '06:59', '08:07', 419, 487, 68],\n", 586 " [203, '07:00', '07:10', 420, 430, 10],\n", 587 " [204, '07:00', '07:16', 420, 436, 16],\n", 588 " [205, '07:01', '08:30', 421, 510, 89],\n", 589 " [206, '07:01', '07:13', 421, 433, 12],\n", 590 " [207, '07:01', '07:43', 421, 463, 42],\n", 591 " [208, '07:03', '08:30', 423, 510, 87],\n", 592 " [209, '07:04', '07:37', 424, 457, 33],\n", 593 " [210, '07:04', '07:44', 424, 464, 40],\n", 594 " [211, '07:05', '07:52', 425, 472, 47],\n", 595 " [212, '07:05', '08:05', 425, 485, 60],\n", 596 " [213, '07:05', '07:46', 425, 466, 41],\n", 597 " [214, '07:06', '07:51', 426, 471, 45],\n", 598 " [215, '07:07', '08:08', 427, 488, 61],\n", 599 " [216, '07:07', '07:52', 427, 472, 45],\n", 600 " [217, '07:07', '08:16', 427, 496, 69],\n", 601 " [218, '07:07', '07:27', 427, 447, 20],\n", 602 " [219, '07:09', '07:50', 429, 470, 41],\n", 603 " [220, '07:09', '08:40', 429, 520, 91],\n", 604 " [221, '07:09', '08:03', 429, 483, 54],\n", 605 " [222, '07:10', '07:20', 430, 440, 10],\n", 606 " [223, '07:11', '08:36', 431, 516, 85],\n", 607 " [224, '07:12', '08:00', 432, 480, 48],\n", 608 " [225, '07:12', '07:47', 432, 467, 35],\n", 609 " [226, '07:13', '07:54', 433, 474, 41],\n", 610 " [227, '07:13', '07:38', 433, 458, 25],\n", 611 " [228, '07:14', '07:59', 434, 479, 45],\n", 612 " [229, '07:16', '08:50', 436, 530, 94],\n", 613 " [230, '07:16', '07:28', 436, 448, 12],\n", 614 " [231, '07:17', '07:35', 437, 455, 18],\n", 615 " [232, '07:17', '07:58', 437, 478, 41],\n", 616 " [233, '07:18', '08:06', 438, 486, 48],\n", 617 " [234, '07:18', '08:44', 438, 524, 86],\n", 618 " [235, '07:19', '08:13', 439, 493, 54],\n", 619 " [236, '07:20', '08:02', 440, 482, 42],\n", 620 " [237, '07:20', '08:07', 440, 487, 47],\n", 621 " [238, '07:20', '07:30', 440, 450, 10],\n", 622 " [239, '07:20', '07:57', 440, 477, 37],\n", 623 " [240, '07:20', '07:36', 440, 456, 16],\n", 624 " [241, '07:21', '07:48', 441, 468, 27],\n", 625 " [242, '07:22', '08:06', 442, 486, 44],\n", 626 " [243, '07:22', '08:25', 442, 505, 63],\n", 627 " [244, '07:24', '08:27', 444, 507, 63],\n", 628 " [245, '07:24', '08:05', 444, 485, 41],\n", 629 " [246, '07:26', '08:23', 446, 503, 57],\n", 630 " [247, '07:26', '08:52', 446, 532, 86],\n", 631 " [248, '07:27', '08:07', 447, 487, 40],\n", 632 " [249, '07:27', '07:42', 447, 462, 15],\n", 633 " [250, '07:27', '08:15', 447, 495, 48],\n", 634 " [251, '07:28', '07:53', 448, 473, 25],\n", 635 " [252, '07:28', '08:09', 448, 489, 41],\n", 636 " [253, '07:28', '07:38', 448, 458, 10],\n", 637 " [254, '07:30', '08:35', 450, 515, 65],\n", 638 " [255, '07:31', '07:43', 451, 463, 12],\n", 639 " [256, '07:32', '08:13', 452, 493, 41],\n", 640 " [257, '07:34', '09:00', 454, 540, 86],\n", 641 " [258, '07:34', '08:33', 454, 513, 59],\n", 642 " [259, '07:34', '09:04', 454, 544, 90],\n", 643 " [260, '07:35', '08:22', 455, 502, 47],\n", 644 " [261, '07:35', '07:45', 455, 465, 10],\n", 645 " [262, '07:35', '08:16', 455, 496, 41],\n", 646 " [263, '07:36', '08:17', 456, 497, 41],\n", 647 " [264, '07:36', '08:36', 456, 516, 60],\n", 648 " [265, '07:37', '07:50', 457, 470, 13],\n", 649 " [266, '07:40', '07:56', 460, 476, 16],\n", 650 " [267, '07:40', '08:20', 460, 500, 40],\n", 651 " [268, '07:40', '08:45', 460, 525, 65],\n", 652 " [269, '07:41', '08:39', 461, 519, 58],\n", 653 " [270, '07:41', '07:51', 461, 471, 10],\n", 654 " [271, '07:42', '08:30', 462, 510, 48],\n", 655 " [272, '07:42', '08:21', 462, 501, 39],\n", 656 " [273, '07:43', '08:08', 463, 488, 25],\n", 657 " [274, '07:43', '08:24', 463, 504, 41],\n", 658 " [275, '07:44', '09:10', 464, 550, 86],\n", 659 " [276, '07:44', '08:43', 464, 523, 59],\n", 660 " [277, '07:46', '08:28', 466, 508, 42],\n", 661 " [278, '07:46', '07:58', 466, 478, 12],\n", 662 " [279, '07:47', '08:00', 467, 480, 13],\n", 663 " [280, '07:48', '09:14', 468, 554, 86],\n", 664 " [281, '07:49', '08:32', 469, 512, 43],\n", 665 " [282, '07:50', '08:55', 470, 535, 65],\n", 666 " [283, '07:50', '08:00', 470, 480, 10],\n", 667 " [284, '07:50', '08:37', 470, 517, 47],\n", 668 " [285, '07:50', '08:26', 470, 506, 36],\n", 669 " [286, '07:51', '08:18', 471, 498, 27],\n", 670 " [287, '07:52', '08:21', 472, 501, 29],\n", 671 " [288, '07:53', '08:35', 473, 515, 42],\n", 672 " [289, '07:54', '09:19', 474, 559, 85],\n", 673 " [290, '07:55', '08:53', 475, 533, 58],\n", 674 " [291, '07:56', '08:54', 476, 534, 58],\n", 675 " [292, '07:57', '08:39', 477, 519, 42],\n", 676 " [293, '07:57', '08:10', 477, 490, 13],\n", 677 " [294, '07:58', '08:45', 478, 525, 47],\n", 678 " [295, '07:58', '08:23', 478, 503, 25],\n", 679 " [296, '08:00', '08:10', 480, 490, 10],\n", 680 " [297, '08:00', '09:05', 480, 545, 65],\n", 681 " [298, '08:00', '08:16', 480, 496, 16],\n", 682 " [299, '08:00', '08:35', 480, 515, 35],\n", 683 " [300, '08:01', '08:13', 481, 493, 12],\n", 684 " [301, '08:01', '08:43', 481, 523, 42],\n", 685 " [302, '08:03', '09:26', 483, 566, 83],\n", 686 " [303, '08:04', '09:29', 484, 569, 85],\n", 687 " [304, '08:05', '08:21', 485, 501, 16],\n", 688 " [305, '08:05', '08:47', 485, 527, 42],\n", 689 " [306, '08:06', '08:51', 486, 531, 45],\n", 690 " [307, '08:06', '09:03', 486, 543, 57],\n", 691 " [308, '08:07', '08:20', 487, 500, 13],\n", 692 " [309, '08:08', '08:55', 488, 535, 47],\n", 693 " [310, '08:08', '08:50', 488, 530, 42],\n", 694 " [311, '08:10', '08:45', 490, 525, 35],\n", 695 " [312, '08:10', '09:15', 490, 555, 65],\n", 696 " [313, '08:10', '08:20', 490, 500, 10],\n", 697 " [314, '08:11', '09:41', 491, 581, 90],\n", 698 " [315, '08:12', '08:55', 492, 535, 43],\n", 699 " [316, '08:13', '08:38', 493, 518, 25],\n", 700 " [317, '08:14', '09:38', 494, 578, 84],\n", 701 " [318, '08:15', '08:30', 495, 510, 15],\n", 702 " [319, '08:16', '08:30', 496, 510, 14],\n", 703 " [320, '08:16', '08:28', 496, 508, 12],\n", 704 " [321, '08:16', '09:00', 496, 540, 44],\n", 705 " [322, '08:17', '09:13', 497, 553, 56],\n", 706 " [323, '08:18', '09:16', 498, 556, 58],\n", 707 " [324, '08:18', '09:05', 498, 545, 47],\n", 708 " [325, '08:20', '08:36', 500, 516, 16],\n", 709 " [326, '08:20', '08:55', 500, 535, 35],\n", 710 " [327, '08:20', '09:05', 500, 545, 45],\n", 711 " [328, '08:20', '08:30', 500, 510, 10],\n", 712 " [329, '08:20', '09:25', 500, 565, 65],\n", 713 " [330, '08:21', '08:38', 501, 518, 17],\n", 714 " [331, '08:21', '08:47', 501, 527, 26],\n", 715 " [332, '08:22', '08:45', 502, 525, 23],\n", 716 " [333, '08:23', '09:10', 503, 550, 47],\n", 717 " [334, '08:24', '09:48', 504, 588, 84],\n", 718 " [335, '08:26', '08:46', 506, 526, 20],\n", 719 " [336, '08:27', '09:07', 507, 547, 40],\n", 720 " [337, '08:28', '08:50', 508, 530, 22],\n", 721 " [338, '08:28', '09:56', 508, 596, 88],\n", 722 " [339, '08:28', '09:23', 508, 563, 55],\n", 723 " [340, '08:29', '09:20', 509, 560, 51],\n", 724 " [341, '08:30', '09:05', 510, 545, 35],\n", 725 " [342, '08:30', '08:45', 510, 525, 15],\n", 726 " [343, '08:30', '08:40', 510, 520, 10],\n", 727 " [344, '08:30', '09:35', 510, 575, 65],\n", 728 " [345, '08:31', '08:43', 511, 523, 12],\n", 729 " [346, '08:31', '09:13', 511, 553, 42],\n", 730 " [347, '08:34', '09:58', 514, 598, 84],\n", 731 " [348, '08:35', '08:55', 515, 535, 20],\n", 732 " [349, '08:35', '09:15', 515, 555, 40],\n", 733 " [350, '08:35', '08:45', 515, 525, 10],\n", 734 " [351, '08:36', '08:46', 516, 526, 10],\n", 735 " [352, '08:36', '09:00', 516, 540, 24],\n", 736 " [353, '08:38', '09:20', 518, 560, 42],\n", 737 " [354, '08:38', '09:35', 518, 575, 57],\n", 738 " [355, '08:38', '09:14', 518, 554, 36],\n", 739 " [356, '08:39', '09:33', 519, 573, 54],\n", 740 " [357, '08:40', '09:45', 520, 585, 65],\n", 741 " [358, '08:40', '08:50', 520, 530, 10],\n", 742 " [359, '08:40', '08:56', 520, 536, 16],\n", 743 " [360, '08:42', '09:25', 522, 565, 43],\n", 744 " [361, '08:43', '09:08', 523, 548, 25],\n", 745 " [362, '08:44', '09:35', 524, 575, 51],\n", 746 " [363, '08:45', '09:00', 525, 540, 15],\n", 747 " [364, '08:45', '09:05', 525, 545, 20],\n", 748 " [365, '08:46', '09:24', 526, 564, 38],\n", 749 " [366, '08:46', '08:58', 526, 538, 12],\n", 750 " [367, '08:46', '09:30', 526, 570, 44],\n", 751 " [368, '08:48', '10:11', 528, 611, 83],\n", 752 " [369, '08:48', '10:13', 528, 613, 85],\n", 753 " [370, '08:49', '09:43', 529, 583, 54],\n", 754 " [371, '08:50', '09:30', 530, 570, 40],\n", 755 " [372, '08:50', '10:00', 530, 600, 70],\n", 756 " [373, '08:50', '09:00', 530, 540, 10],\n", 757 " [374, '08:51', '09:17', 531, 557, 26],\n", 758 " [375, '08:53', '09:20', 533, 560, 27],\n", 759 " [376, '08:53', '09:35', 533, 575, 42],\n", 760 " [377, '08:55', '09:34', 535, 574, 39],\n", 761 " [378, '08:55', '09:15', 535, 555, 20],\n", 762 " [379, '08:58', '09:38', 538, 578, 40],\n", 763 " [380, '08:58', '10:26', 538, 626, 88],\n", 764 " [381, '08:59', '09:53', 539, 593, 54],\n", 765 " [382, '08:59', '09:50', 539, 590, 51],\n", 766 " [383, '09:00', '09:35', 540, 575, 35],\n", 767 " [384, '09:00', '09:16', 540, 556, 16],\n", 768 " [385, '09:00', '09:10', 540, 550, 10],\n", 769 " [386, '09:00', '09:16', 540, 556, 16],\n", 770 " [387, '09:01', '09:13', 541, 553, 12],\n", 771 " [388, '09:03', '09:45', 543, 585, 42],\n", 772 " [389, '09:03', '10:28', 543, 628, 85],\n", 773 " [390, '09:05', '09:44', 545, 584, 39],\n", 774 " [391, '09:05', '09:25', 545, 565, 20],\n", 775 " [392, '09:08', '09:53', 548, 593, 45],\n", 776 " [393, '09:08', '10:04', 548, 604, 56],\n", 777 " [394, '09:09', '10:03', 549, 603, 54],\n", 778 " [395, '09:10', '10:15', 550, 615, 65],\n", 779 " [396, '09:10', '09:20', 550, 560, 10],\n", 780 " [397, '09:11', '09:38', 551, 578, 27],\n", 781 " [398, '09:13', '10:00', 553, 600, 47],\n", 782 " [399, '09:14', '09:39', 554, 579, 25],\n", 783 " [400, '09:14', '10:05', 554, 605, 51],\n", 784 " [401, '09:15', '09:54', 555, 594, 39],\n", 785 " [402, '09:16', '09:28', 556, 568, 12],\n", 786 " [403, '09:18', '10:43', 558, 643, 85],\n", 787 " [404, '09:18', '10:41', 558, 641, 83],\n", 788 " [405, '09:18', '09:58', 558, 598, 40],\n", 789 " [406, '09:19', '10:13', 559, 613, 54],\n", 790 " [407, '09:20', '09:30', 560, 570, 10],\n", 791 " [408, '09:20', '09:36', 560, 576, 16],\n", 792 " [409, '09:21', '09:47', 561, 587, 26],\n", 793 " [410, '09:23', '10:30', 563, 630, 67],\n", 794 " [411, '09:23', '10:05', 563, 605, 42],\n", 795 " [412, '09:23', '09:49', 563, 589, 26],\n", 796 " [413, '09:24', '09:35', 564, 575, 11],\n", 797 " [414, '09:25', '09:35', 565, 575, 10],\n", 798 " [415, '09:25', '10:04', 565, 604, 39],\n", 799 " [416, '09:28', '10:08', 568, 608, 40],\n", 800 " [417, '09:29', '09:45', 569, 585, 16],\n", 801 " [418, '09:29', '10:20', 569, 620, 51],\n", 802 " [419, '09:29', '10:56', 569, 656, 87],\n", 803 " [420, '09:29', '10:23', 569, 623, 54],\n", 804 " [421, '09:30', '09:40', 570, 580, 10],\n", 805 " [422, '09:31', '09:43', 571, 583, 12],\n", 806 " [423, '09:33', '10:58', 573, 658, 85],\n", 807 " [424, '09:33', '10:15', 573, 615, 42],\n", 808 " [425, '09:34', '09:45', 574, 585, 11],\n", 809 " [426, '09:35', '10:14', 575, 614, 39],\n", 810 " [427, '09:38', '10:45', 578, 645, 67],\n", 811 " [428, '09:39', '10:33', 579, 633, 54],\n", 812 " [429, '09:40', '09:56', 580, 596, 16],\n", 813 " [430, '09:40', '09:50', 580, 590, 10],\n", 814 " [431, '09:41', '10:08', 581, 608, 27],\n", 815 " [432, '09:41', '10:23', 581, 623, 42],\n", 816 " [433, '09:44', '10:35', 584, 635, 51],\n", 817 " [434, '09:44', '11:11', 584, 671, 87],\n", 818 " [435, '09:44', '09:55', 584, 595, 11],\n", 819 " [436, '09:45', '10:24', 585, 624, 39],\n", 820 " [437, '09:46', '09:58', 586, 598, 12],\n", 821 " [438, '09:48', '10:30', 588, 630, 42],\n", 822 " [439, '09:48', '11:13', 588, 673, 85],\n", 823 " [440, '09:48', '10:04', 588, 604, 16],\n", 824 " [441, '09:49', '10:43', 589, 643, 54],\n", 825 " [442, '09:50', '10:00', 590, 600, 10],\n", 826 " [443, '09:51', '10:17', 591, 617, 26],\n", 827 " [444, '09:53', '10:49', 593, 649, 56],\n", 828 " [445, '09:53', '11:00', 593, 660, 67],\n", 829 " [446, '09:54', '10:05', 594, 605, 11],\n", 830 " [447, '09:55', '10:34', 595, 634, 39],\n", 831 " [448, '09:56', '10:38', 596, 638, 42],\n", 832 " [449, '09:57', '10:20', 597, 620, 23],\n", 833 " [450, '09:59', '11:26', 599, 686, 87],\n", 834 " [451, '09:59', '10:50', 599, 650, 51],\n", 835 " [452, '09:59', '10:53', 599, 653, 54],\n", 836 " [453, '10:00', '10:16', 600, 616, 16],\n", 837 " [454, '10:00', '10:10', 600, 610, 10],\n", 838 " [455, '10:01', '10:13', 601, 613, 12],\n", 839 " [456, '10:03', '11:28', 603, 688, 85],\n", 840 " [457, '10:03', '10:45', 603, 645, 42],\n", 841 " [458, '10:04', '10:15', 604, 615, 11],\n", 842 " [459, '10:05', '10:44', 605, 644, 39],\n", 843 " [460, '10:08', '11:15', 608, 675, 67],\n", 844 " [461, '10:09', '11:03', 609, 663, 54],\n", 845 " [462, '10:10', '10:20', 610, 620, 10],\n", 846 " [463, '10:11', '10:38', 611, 638, 27],\n", 847 " [464, '10:11', '10:53', 611, 653, 42],\n", 848 " [465, '10:14', '11:05', 614, 665, 51],\n", 849 " [466, '10:14', '11:41', 614, 701, 87],\n", 850 " [467, '10:14', '10:25', 614, 625, 11],\n", 851 " [468, '10:15', '10:54', 615, 654, 39],\n", 852 " [469, '10:16', '10:28', 616, 628, 12],\n", 853 " [470, '10:18', '11:43', 618, 703, 85],\n", 854 " [471, '10:18', '11:00', 618, 660, 42],\n", 855 " [472, '10:19', '11:13', 619, 673, 54],\n", 856 " [473, '10:20', '10:30', 620, 630, 10],\n", 857 " [474, '10:20', '10:36', 620, 636, 16],\n", 858 " [475, '10:21', '10:47', 621, 647, 26],\n", 859 " [476, '10:23', '11:30', 623, 690, 67],\n", 860 " [477, '10:23', '10:45', 623, 645, 22],\n", 861 " [478, '10:24', '10:35', 624, 635, 11],\n", 862 " [479, '10:25', '11:04', 625, 664, 39],\n", 863 " [480, '10:26', '11:08', 626, 668, 42],\n", 864 " [481, '10:29', '11:20', 629, 680, 51],\n", 865 " [482, '10:29', '11:23', 629, 683, 54],\n", 866 " [483, '10:29', '11:56', 629, 716, 87],\n", 867 " [484, '10:30', '10:40', 630, 640, 10],\n", 868 " [485, '10:31', '10:43', 631, 643, 12],\n", 869 " [486, '10:33', '11:15', 633, 675, 42],\n", 870 " [487, '10:33', '11:58', 633, 718, 85],\n", 871 " [488, '10:34', '10:45', 634, 645, 11],\n", 872 " [489, '10:35', '11:14', 635, 674, 39],\n", 873 " [490, '10:38', '11:45', 638, 705, 67],\n", 874 " [491, '10:39', '11:33', 639, 693, 54],\n", 875 " [492, '10:40', '10:50', 640, 650, 10],\n", 876 " [493, '10:40', '10:56', 640, 656, 16],\n", 877 " [494, '10:41', '11:23', 641, 683, 42],\n", 878 " [495, '10:41', '11:08', 641, 668, 27],\n", 879 " [496, '10:44', '12:11', 644, 731, 87],\n", 880 " [497, '10:44', '11:35', 644, 695, 51],\n", 881 " [498, '10:44', '10:55', 644, 655, 11],\n", 882 " [499, '10:45', '11:24', 645, 684, 39],\n", 883 " [500, '10:46', '10:58', 646, 658, 12],\n", 884 " [501, '10:48', '12:13', 648, 733, 85],\n", 885 " [502, '10:48', '11:30', 648, 690, 42],\n", 886 " [503, '10:49', '11:43', 649, 703, 54],\n", 887 " [504, '10:50', '11:00', 650, 660, 10],\n", 888 " [505, '10:51', '11:17', 651, 677, 26],\n", 889 " [506, '10:53', '12:00', 653, 720, 67],\n", 890 " [507, '10:53', '11:20', 653, 680, 27],\n", 891 " [508, '10:54', '11:05', 654, 665, 11],\n", 892 " [509, '10:55', '11:34', 655, 694, 39],\n", 893 " [510, '10:56', '11:38', 656, 698, 42],\n", 894 " [511, '10:59', '11:14', 659, 674, 15],\n", 895 " [512, '10:59', '12:26', 659, 746, 87],\n", 896 " [513, '10:59', '11:53', 659, 713, 54],\n", 897 " [514, '10:59', '11:50', 659, 710, 51],\n", 898 " [515, '11:00', '11:16', 660, 676, 16],\n", 899 " [516, '11:00', '11:10', 660, 670, 10],\n", 900 " [517, '11:01', '11:13', 661, 673, 12],\n", 901 " [518, '11:03', '11:45', 663, 705, 42],\n", 902 " [519, '11:03', '12:28', 663, 748, 85],\n", 903 " [520, '11:04', '11:15', 664, 675, 11],\n", 904 " [521, '11:05', '11:44', 665, 704, 39],\n", 905 " [522, '11:08', '12:15', 668, 735, 67],\n", 906 " [523, '11:09', '12:03', 669, 723, 54],\n", 907 " [524, '11:10', '11:20', 670, 680, 10],\n", 908 " [525, '11:11', '11:38', 671, 698, 27],\n", 909 " [526, '11:11', '11:53', 671, 713, 42],\n", 910 " [527, '11:14', '11:25', 674, 685, 11],\n", 911 " [528, '11:14', '12:05', 674, 725, 51],\n", 912 " [529, '11:14', '12:38', 674, 758, 84],\n", 913 " [530, '11:14', '12:41', 674, 761, 87],\n", 914 " [531, '11:15', '11:54', 675, 714, 39],\n", 915 " [532, '11:16', '11:28', 676, 688, 12],\n", 916 " [533, '11:18', '12:00', 678, 720, 42],\n", 917 " [534, '11:19', '12:13', 679, 733, 54],\n", 918 " [535, '11:20', '11:30', 680, 690, 10],\n", 919 " [536, '11:20', '11:36', 680, 696, 16],\n", 920 " [537, '11:21', '11:47', 681, 707, 26],\n", 921 " [538, '11:23', '12:30', 683, 750, 67],\n", 922 " [539, '11:23', '11:49', 683, 709, 26],\n", 923 " [540, '11:24', '12:48', 684, 768, 84],\n", 924 " [541, '11:24', '11:35', 684, 695, 11],\n", 925 " [542, '11:25', '12:04', 685, 724, 39],\n", 926 " [543, '11:26', '12:08', 686, 728, 42],\n", 927 " [544, '11:29', '11:44', 689, 704, 15],\n", 928 " [545, '11:29', '12:23', 689, 743, 54],\n", 929 " [546, '11:29', '12:20', 689, 740, 51],\n", 930 " [547, '11:29', '12:54', 689, 774, 85],\n", 931 " [548, '11:30', '11:40', 690, 700, 10],\n", 932 " [549, '11:31', '11:43', 691, 703, 12],\n", 933 " [550, '11:33', '12:15', 693, 735, 42],\n", 934 " [551, '11:34', '12:58', 694, 778, 84],\n", 935 " [552, '11:34', '11:45', 694, 705, 11],\n", 936 " [553, '11:35', '12:14', 695, 734, 39],\n", 937 " [554, '11:38', '12:45', 698, 765, 67],\n", 938 " [555, '11:39', '12:33', 699, 753, 54],\n", 939 " [556, '11:40', '11:56', 700, 716, 16],\n", 940 " [557, '11:40', '11:50', 700, 710, 10],\n", 941 " [558, '11:41', '12:08', 701, 728, 27],\n", 942 " [559, '11:41', '12:23', 701, 743, 42],\n", 943 " [560, '11:44', '11:55', 704, 715, 11],\n", 944 " [561, '11:44', '13:14', 704, 794, 90],\n", 945 " [562, '11:44', '13:08', 704, 788, 84],\n", 946 " [563, '11:44', '12:35', 704, 755, 51],\n", 947 " [564, '11:45', '12:24', 705, 744, 39],\n", 948 " [565, '11:46', '11:58', 706, 718, 12],\n", 949 " [566, '11:48', '12:30', 708, 750, 42],\n", 950 " [567, '11:49', '12:43', 709, 763, 54],\n", 951 " [568, '11:50', '12:00', 710, 720, 10],\n", 952 " [569, '11:51', '12:17', 711, 737, 26],\n", 953 " [570, '11:53', '12:49', 713, 769, 56],\n", 954 " [571, '11:53', '13:00', 713, 780, 67],\n", 955 " [572, '11:54', '13:18', 714, 798, 84],\n", 956 " [573, '11:54', '12:05', 714, 725, 11],\n", 957 " [574, '11:55', '12:40', 715, 760, 45],\n", 958 " [575, '11:55', '12:34', 715, 754, 39],\n", 959 " [576, '11:56', '12:35', 716, 755, 39],\n", 960 " [577, '11:57', '12:20', 717, 740, 23],\n", 961 " [578, '11:58', '12:29', 718, 749, 31],\n", 962 " [579, '11:59', '12:50', 719, 770, 51],\n", 963 " [580, '11:59', '12:53', 719, 773, 54],\n", 964 " [581, '11:59', '13:24', 719, 804, 85],\n", 965 " [582, '11:59', '12:14', 719, 734, 15],\n", 966 " [583, '12:00', '12:16', 720, 736, 16],\n", 967 " [584, '12:00', '12:10', 720, 730, 10],\n", 968 " [585, '12:01', '12:45', 721, 765, 44],\n", 969 " [586, '12:01', '12:13', 721, 733, 12],\n", 970 " [587, '12:03', '12:50', 723, 770, 47],\n", 971 " [588, '12:04', '12:15', 724, 735, 11],\n", 972 " [589, '12:04', '13:04', 724, 784, 60],\n", 973 " [590, '12:04', '13:28', 724, 808, 84],\n", 974 " [591, '12:05', '12:44', 725, 764, 39],\n", 975 " [592, '12:08', '13:11', 728, 791, 63],\n", 976 " [593, '12:08', '12:39', 728, 759, 31],\n", 977 " [594, '12:09', '13:03', 729, 783, 54],\n", 978 " [595, '12:10', '12:20', 730, 740, 10],\n", 979 " [596, '12:11', '12:55', 731, 775, 44],\n", 980 " [597, '12:11', '12:38', 731, 758, 27],\n", 981 " [598, '12:14', '13:05', 734, 785, 51],\n", 982 " [599, '12:14', '12:25', 734, 745, 11],\n", 983 " [600, '12:14', '13:44', 734, 824, 90],\n", 984 " [601, '12:14', '13:38', 734, 818, 84],\n", 985 " [602, '12:15', '12:54', 735, 774, 39],\n", 986 " [603, '12:16', '12:28', 736, 748, 12],\n", 987 " [604, '12:18', '13:00', 738, 780, 42],\n", 988 " [605, '12:19', '13:13', 739, 793, 54],\n", 989 " [606, '12:20', '12:30', 740, 750, 10],\n", 990 " [607, '12:20', '13:31', 740, 811, 71],\n", 991 " [608, '12:20', '12:30', 740, 750, 10],\n", 992 " [609, '12:20', '12:36', 740, 756, 16],\n", 993 " [610, '12:21', '12:47', 741, 767, 26],\n", 994 " [611, '12:23', '12:45', 743, 765, 22],\n", 995 " [612, '12:24', '12:35', 744, 755, 11],\n", 996 " [613, '12:24', '13:48', 744, 828, 84],\n", 997 " [614, '12:25', '13:10', 745, 790, 45],\n", 998 " [615, '12:25', '13:04', 745, 784, 39],\n", 999 " [616, '12:26', '13:05', 746, 785, 39],\n", 1000 " [617, '12:28', '13:54', 748, 834, 86],\n", 1001 " [618, '12:28', '12:38', 748, 758, 10],\n", 1002 " [619, '12:28', '13:15', 748, 795, 47],\n", 1003 " [620, '12:29', '13:23', 749, 803, 54],\n", 1004 " [621, '12:30', '13:41', 750, 821, 71],\n", 1005 " [622, '12:30', '12:40', 750, 760, 10],\n", 1006 " [623, '12:31', '13:15', 751, 795, 44],\n", 1007 " [624, '12:31', '12:43', 751, 763, 12],\n", 1008 " [625, '12:33', '12:48', 753, 768, 15],\n", 1009 " [626, '12:33', '13:20', 753, 800, 47],\n", 1010 " [627, '12:34', '13:58', 754, 838, 84],\n", 1011 " [628, '12:34', '13:34', 754, 814, 60],\n", 1012 " [629, '12:34', '12:45', 754, 765, 11],\n", 1013 " [630, '12:35', '13:14', 755, 794, 39],\n", 1014 " [631, '12:38', '13:25', 758, 805, 47],\n", 1015 " [632, '12:38', '13:25', 758, 805, 47],\n", 1016 " [633, '12:38', '14:04', 758, 844, 86],\n", 1017 " [634, '12:39', '13:33', 759, 813, 54],\n", 1018 " [635, '12:40', '13:51', 760, 831, 71],\n", 1019 " [636, '12:40', '12:50', 760, 770, 10],\n", 1020 " [637, '12:40', '12:56', 760, 776, 16],\n", 1021 " [638, '12:41', '13:08', 761, 788, 27],\n", 1022 " [639, '12:43', '13:30', 763, 810, 47],\n", 1023 " [640, '12:44', '12:55', 764, 775, 11],\n", 1024 " [641, '12:44', '14:08', 764, 848, 84],\n", 1025 " [642, '12:45', '13:24', 765, 804, 39],\n", 1026 " [643, '12:46', '12:58', 766, 778, 12],\n", 1027 " [644, '12:46', '13:21', 766, 801, 35],\n", 1028 " [645, '12:48', '14:14', 768, 854, 86],\n", 1029 " [646, '12:48', '13:35', 768, 815, 47],\n", 1030 " [647, '12:48', '12:58', 768, 778, 10],\n", 1031 " [648, '12:48', '13:35', 768, 815, 47],\n", 1032 " [649, '12:49', '13:43', 769, 823, 54],\n", 1033 " [650, '12:50', '14:01', 770, 841, 71],\n", 1034 " [651, '12:50', '13:00', 770, 780, 10],\n", 1035 " [652, '12:50', '13:00', 770, 780, 10],\n", 1036 " [653, '12:51', '13:17', 771, 797, 26],\n", 1037 " [654, '12:53', '13:20', 773, 800, 27],\n", 1038 " [655, '12:53', '13:24', 773, 804, 31],\n", 1039 " [656, '12:53', '13:40', 773, 820, 47],\n", 1040 " [657, '12:54', '14:18', 774, 858, 84],\n", 1041 " [658, '12:54', '13:05', 774, 785, 11],\n", 1042 " [659, '12:55', '13:34', 775, 814, 39],\n", 1043 " [660, '12:58', '14:24', 778, 864, 86],\n", 1044 " [661, '12:58', '13:25', 778, 805, 27],\n", 1045 " [662, '12:58', '13:45', 778, 825, 47],\n", 1046 " [663, '12:58', '13:45', 778, 825, 47],\n", 1047 " [664, '12:59', '13:53', 779, 833, 54],\n", 1048 " [665, '13:00', '13:10', 780, 790, 10],\n", 1049 " [666, '13:00', '13:16', 780, 796, 16],\n", 1050 " [667, '13:00', '14:11', 780, 851, 71],\n", 1051 " [668, '13:01', '13:13', 781, 793, 12],\n", 1052 " [669, '13:03', '13:34', 783, 814, 31],\n", 1053 " [670, '13:03', '13:50', 783, 830, 47],\n", 1054 " [671, '13:04', '13:15', 784, 795, 11],\n", 1055 " [672, '13:04', '14:28', 784, 868, 84],\n", 1056 " [673, '13:05', '13:44', 785, 824, 39],\n", 1057 " [674, '13:08', '13:55', 788, 835, 47],\n", 1058 " [675, '13:08', '14:34', 788, 874, 86],\n", 1059 " [676, '13:08', '13:55', 788, 835, 47],\n", 1060 " [677, '13:09', '14:03', 789, 843, 54],\n", 1061 " [678, '13:10', '13:20', 790, 800, 10],\n", 1062 " [679, '13:10', '14:21', 790, 861, 71],\n", 1063 " [680, '13:13', '14:00', 793, 840, 47],\n", 1064 " [681, '13:13', '13:40', 793, 820, 27],\n", 1065 " [682, '13:14', '14:38', 794, 878, 84],\n", 1066 " [683, '13:14', '13:25', 794, 805, 11],\n", 1067 " [684, '13:15', '13:54', 795, 834, 39],\n", 1068 " [685, '13:16', '13:28', 796, 808, 12],\n", 1069 " [686, '13:18', '14:05', 798, 845, 47],\n", 1070 " [687, '13:18', '14:44', 798, 884, 86],\n", 1071 " [688, '13:18', '14:05', 798, 845, 47],\n", 1072 " [689, '13:19', '14:13', 799, 853, 54],\n", 1073 " [690, '13:20', '13:36', 800, 816, 16],\n", 1074 " [691, '13:20', '14:31', 800, 871, 71],\n", 1075 " [692, '13:20', '13:30', 800, 810, 10],\n", 1076 " [693, '13:21', '13:47', 801, 827, 26],\n", 1077 " [694, '13:23', '14:10', 803, 850, 47],\n", 1078 " [695, '13:23', '13:49', 803, 829, 26],\n", 1079 " [696, '13:24', '14:48', 804, 888, 84],\n", 1080 " [697, '13:24', '13:35', 804, 815, 11],\n", 1081 " [698, '13:25', '14:04', 805, 844, 39],\n", 1082 " [699, '13:28', '14:15', 808, 855, 47],\n", 1083 " [700, '13:28', '14:54', 808, 894, 86],\n", 1084 " [701, '13:28', '13:55', 808, 835, 27],\n", 1085 " [702, '13:28', '14:15', 808, 855, 47],\n", 1086 " [703, '13:29', '14:23', 809, 863, 54],\n", 1087 " [704, '13:30', '13:40', 810, 820, 10],\n", 1088 " [705, '13:30', '14:41', 810, 881, 71],\n", 1089 " [706, '13:31', '13:43', 811, 823, 12],\n", 1090 " [707, '13:33', '14:20', 813, 860, 47],\n", 1091 " [708, '13:34', '14:58', 814, 898, 84],\n", 1092 " [709, '13:34', '13:45', 814, 825, 11],\n", 1093 " [710, '13:35', '14:14', 815, 854, 39],\n", 1094 " [711, '13:38', '14:25', 818, 865, 47],\n", 1095 " [712, '13:38', '14:25', 818, 865, 47],\n", 1096 " [713, '13:38', '15:04', 818, 904, 86],\n", 1097 " [714, '13:39', '14:33', 819, 873, 54],\n", 1098 " [715, '13:40', '13:50', 820, 830, 10],\n", 1099 " [716, '13:40', '13:56', 820, 836, 16],\n", 1100 " [717, '13:40', '14:51', 820, 891, 71],\n", 1101 " [718, '13:43', '14:30', 823, 870, 47],\n", 1102 " [719, '13:43', '14:10', 823, 850, 27],\n", 1103 " [720, '13:44', '15:09', 824, 909, 85],\n", 1104 " [721, '13:44', '13:55', 824, 835, 11],\n", 1105 " [722, '13:45', '14:24', 825, 864, 39],\n", 1106 " [723, '13:46', '13:58', 826, 838, 12],\n", 1107 " [724, '13:48', '14:35', 828, 875, 47],\n", 1108 " [725, '13:48', '15:14', 828, 914, 86],\n", 1109 " [726, '13:48', '14:35', 828, 875, 47],\n", 1110 " [727, '13:49', '14:43', 829, 883, 54],\n", 1111 " [728, '13:50', '14:00', 830, 840, 10],\n", 1112 " [729, '13:50', '15:01', 830, 901, 71],\n", 1113 " [730, '13:51', '14:17', 831, 857, 26],\n", 1114 " [731, '13:53', '14:40', 833, 880, 47],\n", 1115 " [732, '13:53', '14:49', 833, 889, 56],\n", 1116 " [733, '13:54', '14:05', 834, 845, 11],\n", 1117 " [734, '13:54', '15:19', 834, 919, 85],\n", 1118 " [735, '13:55', '14:34', 835, 874, 39],\n", 1119 " [736, '13:57', '14:20', 837, 860, 23],\n", 1120 " [737, '13:58', '15:24', 838, 924, 86],\n", 1121 " [738, '13:58', '14:45', 838, 885, 47],\n", 1122 " [739, '13:58', '14:45', 838, 885, 47],\n", 1123 " [740, '13:58', '14:25', 838, 865, 27],\n", 1124 " [741, '13:59', '14:53', 839, 893, 54],\n", 1125 " [742, '14:00', '14:16', 840, 856, 16],\n", 1126 " [743, '14:00', '14:10', 840, 850, 10],\n", 1127 " [744, '14:00', '15:11', 840, 911, 71],\n", 1128 " [745, '14:01', '14:13', 841, 853, 12],\n", 1129 " [746, '14:03', '14:50', 843, 890, 47],\n", 1130 " [747, '14:04', '14:15', 844, 855, 11],\n", 1131 " [748, '14:04', '15:29', 844, 929, 85],\n", 1132 " [749, '14:05', '14:44', 845, 884, 39],\n", 1133 " [750, '14:08', '14:55', 848, 895, 47],\n", 1134 " [751, '14:08', '14:55', 848, 895, 47],\n", 1135 " [752, '14:08', '15:34', 848, 934, 86],\n", 1136 " [753, '14:09', '15:03', 849, 903, 54],\n", 1137 " [754, '14:10', '15:21', 850, 921, 71],\n", 1138 " [755, '14:10', '14:20', 850, 860, 10],\n", 1139 " [756, '14:13', '15:00', 853, 900, 47],\n", 1140 " [757, '14:13', '14:40', 853, 880, 27],\n", 1141 " [758, '14:14', '15:40', 854, 940, 86],\n", 1142 " [759, '14:14', '14:25', 854, 865, 11],\n", 1143 " [760, '14:15', '14:54', 855, 894, 39],\n", 1144 " [761, '14:16', '14:28', 856, 868, 12],\n", 1145 " [762, '14:18', '15:05', 858, 905, 47],\n", 1146 " [763, '14:18', '15:44', 858, 944, 86],\n", 1147 " [764, '14:18', '15:05', 858, 905, 47],\n", 1148 " [765, '14:19', '15:13', 859, 913, 54],\n", 1149 " [766, '14:20', '15:31', 860, 931, 71],\n", 1150 " [767, '14:20', '14:30', 860, 870, 10],\n", 1151 " [768, '14:20', '14:36', 860, 876, 16],\n", 1152 " [769, '14:21', '14:47', 861, 887, 26],\n", 1153 " [770, '14:23', '15:10', 863, 910, 47],\n", 1154 " [771, '14:23', '14:45', 863, 885, 22],\n", 1155 " [772, '14:24', '15:50', 864, 950, 86],\n", 1156 " [773, '14:24', '14:35', 864, 875, 11],\n", 1157 " [774, '14:25', '15:02', 865, 902, 37],\n", 1158 " [775, '14:26', '14:52', 866, 892, 26],\n", 1159 " [776, '14:28', '15:15', 868, 915, 47],\n", 1160 " [777, '14:28', '14:55', 868, 895, 27],\n", 1161 " [778, '14:28', '15:54', 868, 954, 86],\n", 1162 " [779, '14:28', '15:15', 868, 915, 47],\n", 1163 " [780, '14:29', '15:23', 869, 923, 54],\n", 1164 " [781, '14:30', '15:41', 870, 941, 71],\n", 1165 " [782, '14:30', '14:40', 870, 880, 10],\n", 1166 " [783, '14:31', '14:43', 871, 883, 12],\n", 1167 " [784, '14:33', '15:20', 873, 920, 47],\n", 1168 " [785, '14:34', '16:00', 874, 960, 86],\n", 1169 " [786, '14:34', '14:45', 874, 885, 11],\n", 1170 " [787, '14:35', '15:11', 875, 911, 36],\n", 1171 " [788, '14:38', '15:25', 878, 925, 47],\n", 1172 " [789, '14:38', '15:25', 878, 925, 47],\n", 1173 " [790, '14:38', '16:04', 878, 964, 86],\n", 1174 " [791, '14:39', '15:33', 879, 933, 54],\n", 1175 " [792, '14:40', '14:50', 880, 890, 10],\n", 1176 " [793, '14:40', '15:51', 880, 951, 71],\n", 1177 " [794, '14:40', '14:56', 880, 896, 16],\n", 1178 " [795, '14:43', '15:30', 883, 930, 47],\n", 1179 " [796, '14:43', '15:10', 883, 910, 27],\n", 1180 " [797, '14:44', '15:00', 884, 900, 16],\n", 1181 " [798, '14:44', '16:10', 884, 970, 86],\n", 1182 " [799, '14:45', '15:19', 885, 919, 34],\n", 1183 " [800, '14:46', '14:58', 886, 898, 12],\n", 1184 " [801, '14:48', '15:35', 888, 935, 47],\n", 1185 " [802, '14:48', '15:35', 888, 935, 47],\n", 1186 " [803, '14:48', '17:04', 888, 1024, 136],\n", 1187 " [804, '14:49', '15:43', 889, 943, 54],\n", 1188 " [805, '14:50', '16:01', 890, 961, 71],\n", 1189 " [806, '14:50', '15:00', 890, 900, 10],\n", 1190 " [807, '14:51', '15:17', 891, 917, 26],\n", 1191 " [808, '14:52', '15:27', 892, 927, 35],\n", 1192 " [809, '14:52', '15:21', 892, 921, 29],\n", 1193 " [810, '14:53', '15:40', 893, 940, 47],\n", 1194 " [811, '14:54', '15:08', 894, 908, 14],\n", 1195 " [812, '14:54', '16:20', 894, 980, 86],\n", 1196 " [813, '14:58', '16:24', 898, 984, 86],\n", 1197 " [814, '14:58', '15:45', 898, 945, 47],\n", 1198 " [815, '14:58', '15:25', 898, 925, 27],\n", 1199 " [816, '14:58', '15:45', 898, 945, 47],\n", 1200 " [817, '14:59', '15:53', 899, 953, 54],\n", 1201 " [818, '15:00', '15:10', 900, 910, 10],\n", 1202 " [819, '15:00', '15:35', 900, 935, 35],\n", 1203 " [820, '15:00', '16:11', 900, 971, 71],\n", 1204 " [821, '15:00', '15:16', 900, 916, 16],\n", 1205 " [822, '15:01', '15:13', 901, 913, 12],\n", 1206 " [823, '15:02', '15:16', 902, 916, 14],\n", 1207 " [824, '15:03', '15:50', 903, 950, 47],\n", 1208 " [825, '15:04', '16:30', 904, 990, 86],\n", 1209 " [826, '15:08', '16:34', 908, 994, 86],\n", 1210 " [827, '15:08', '15:55', 908, 955, 47],\n", 1211 " [828, '15:08', '15:55', 908, 955, 47],\n", 1212 " [829, '15:08', '15:45', 908, 945, 37],\n", 1213 " [830, '15:09', '16:14', 909, 974, 65],\n", 1214 " [831, '15:09', '16:03', 909, 963, 54],\n", 1215 " [832, '15:10', '16:21', 910, 981, 71],\n", 1216 " [833, '15:10', '15:20', 910, 920, 10],\n", 1217 " [834, '15:11', '15:24', 911, 924, 13],\n", 1218 " [835, '15:12', '15:36', 912, 936, 24],\n", 1219 " [836, '15:13', '16:00', 913, 960, 47],\n", 1220 " [837, '15:13', '15:40', 913, 940, 27],\n", 1221 " [838, '15:14', '16:40', 914, 1000, 86],\n", 1222 " [839, '15:16', '15:28', 916, 928, 12],\n", 1223 " [840, '15:16', '15:55', 916, 955, 39],\n", 1224 " [841, '15:18', '16:05', 918, 965, 47],\n", 1225 " [842, '15:18', '16:44', 918, 1004, 86],\n", 1226 " [843, '15:18', '16:05', 918, 965, 47],\n", 1227 " [844, '15:19', '16:13', 919, 973, 54],\n", 1228 " [845, '15:19', '15:34', 919, 934, 15],\n", 1229 " [846, '15:20', '15:30', 920, 930, 10],\n", 1230 " [847, '15:20', '16:31', 920, 991, 71],\n", 1231 " [848, '15:20', '15:36', 920, 936, 16],\n", 1232 " [849, '15:21', '15:47', 921, 947, 26],\n", 1233 " [850, '15:21', '16:06', 921, 966, 45],\n", 1234 " [851, '15:23', '16:10', 923, 970, 47],\n", 1235 " [852, '15:24', '16:50', 924, 1010, 86],\n", 1236 " [853, '15:24', '16:05', 924, 965, 41],\n", 1237 " [854, '15:27', '15:51', 927, 951, 24],\n", 1238 " [855, '15:27', '15:44', 927, 944, 17],\n", 1239 " [856, '15:28', '16:15', 928, 975, 47],\n", 1240 " [857, '15:28', '16:54', 928, 1014, 86],\n", 1241 " [858, '15:28', '16:15', 928, 975, 47],\n", 1242 " [859, '15:28', '15:55', 928, 955, 27],\n", 1243 " [860, '15:29', '16:23', 929, 983, 54],\n", 1244 " [861, '15:30', '16:41', 930, 1001, 71],\n", 1245 " [862, '15:30', '15:40', 930, 940, 10],\n", 1246 " [863, '15:31', '15:43', 931, 943, 12],\n", 1247 " [864, '15:33', '16:20', 933, 980, 47],\n", 1248 " [865, '15:34', '17:00', 934, 1020, 86],\n", 1249 " [866, '15:34', '16:15', 934, 975, 41],\n", 1250 " [867, '15:35', '15:54', 935, 954, 19],\n", 1251 " [868, '15:36', '16:21', 936, 981, 45],\n", 1252 " [869, '15:38', '16:25', 938, 985, 47],\n", 1253 " [870, '15:38', '16:25', 938, 985, 47],\n", 1254 " [871, '15:38', '16:39', 938, 999, 61],\n", 1255 " [872, '15:39', '16:33', 939, 993, 54],\n", 1256 " [873, '15:40', '15:50', 940, 950, 10],\n", 1257 " [874, '15:40', '16:51', 940, 1011, 71],\n", 1258 " [875, '15:40', '15:56', 940, 956, 16],\n", 1259 " [876, '15:43', '16:10', 943, 970, 27],\n", 1260 " [877, '15:43', '16:30', 943, 990, 47],\n", 1261 " [878, '15:44', '17:10', 944, 1030, 86],\n", 1262 " [879, '15:44', '16:25', 944, 985, 41],\n", 1263 " [880, '15:45', '16:04', 945, 964, 19],\n", 1264 " [881, '15:46', '15:58', 946, 958, 12],\n", 1265 " [882, '15:48', '16:35', 948, 995, 47],\n", 1266 " [883, '15:48', '16:35', 948, 995, 47],\n", 1267 " [884, '15:48', '17:14', 948, 1034, 86],\n", 1268 " [885, '15:49', '16:43', 949, 1003, 54],\n", 1269 " [886, '15:50', '16:00', 950, 960, 10],\n", 1270 " [887, '15:50', '17:01', 950, 1021, 71],\n", 1271 " [888, '15:51', '16:18', 951, 978, 27],\n", 1272 " [889, '15:52', '16:36', 952, 996, 44],\n", 1273 " [890, '15:53', '16:40', 953, 1000, 47],\n", 1274 " [891, '15:54', '17:20', 954, 1040, 86],\n", 1275 " [892, '15:54', '16:35', 954, 995, 41],\n", 1276 " [893, '15:55', '16:14', 955, 974, 19],\n", 1277 " [894, '15:58', '16:25', 958, 985, 27],\n", 1278 " [895, '15:58', '16:45', 958, 1005, 47],\n", 1279 " [896, '15:58', '16:45', 958, 1005, 47],\n", 1280 " [897, '15:58', '17:24', 958, 1044, 86],\n", 1281 " [898, '15:59', '17:11', 959, 1031, 72],\n", 1282 " [899, '15:59', '16:53', 959, 1013, 54],\n", 1283 " [900, '16:00', '16:10', 960, 970, 10],\n", 1284 " [901, '16:00', '16:16', 960, 976, 16],\n", 1285 " [902, '16:01', '16:13', 961, 973, 12],\n", 1286 " [903, '16:03', '16:50', 963, 1010, 47],\n", 1287 " [904, '16:04', '17:30', 964, 1050, 86],\n", 1288 " [905, '16:04', '16:45', 964, 1005, 41],\n", 1289 " [906, '16:05', '16:24', 965, 984, 19],\n", 1290 " [907, '16:06', '16:51', 966, 1011, 45],\n", 1291 " [908, '16:08', '16:55', 968, 1015, 47],\n", 1292 " [909, '16:08', '17:34', 968, 1054, 86],\n", 1293 " [910, '16:08', '16:55', 968, 1015, 47],\n", 1294 " [911, '16:09', '17:03', 969, 1023, 54],\n", 1295 " [912, '16:09', '17:21', 969, 1041, 72],\n", 1296 " [913, '16:10', '16:20', 970, 980, 10],\n", 1297 " [914, '16:13', '16:40', 973, 1000, 27],\n", 1298 " [915, '16:13', '17:00', 973, 1020, 47],\n", 1299 " [916, '16:14', '16:55', 974, 1015, 41],\n", 1300 " [917, '16:14', '17:40', 974, 1060, 86],\n", 1301 " [918, '16:15', '16:34', 975, 994, 19],\n", 1302 " [919, '16:16', '16:28', 976, 988, 12],\n", 1303 " [920, '16:18', '17:05', 978, 1025, 47],\n", 1304 " [921, '16:18', '17:05', 978, 1025, 47],\n", 1305 " [922, '16:18', '17:44', 978, 1064, 86],\n", 1306 " [923, '16:19', '17:31', 979, 1051, 72],\n", 1307 " [924, '16:19', '17:13', 979, 1033, 54],\n", 1308 " [925, '16:20', '16:30', 980, 990, 10],\n", 1309 " [926, '16:20', '16:36', 980, 996, 16],\n", 1310 " [927, '16:21', '16:48', 981, 1008, 27],\n", 1311 " [928, '16:22', '17:06', 982, 1026, 44],\n", 1312 " [929, '16:23', '17:10', 983, 1030, 47],\n", 1313 " [930, '16:24', '17:05', 984, 1025, 41],\n", 1314 " [931, '16:24', '17:50', 984, 1070, 86],\n", 1315 " [932, '16:25', '16:44', 985, 1004, 19],\n", 1316 " [933, '16:28', '17:15', 988, 1035, 47],\n", 1317 " [934, '16:28', '17:15', 988, 1035, 47],\n", 1318 " [935, '16:28', '16:55', 988, 1015, 27],\n", 1319 " [936, '16:28', '17:54', 988, 1074, 86],\n", 1320 " [937, '16:29', '17:23', 989, 1043, 54],\n", 1321 " [938, '16:29', '17:41', 989, 1061, 72],\n", 1322 " [939, '16:30', '16:40', 990, 1000, 10],\n", 1323 " [940, '16:31', '16:43', 991, 1003, 12],\n", 1324 " [941, '16:33', '17:20', 993, 1040, 47],\n", 1325 " [942, '16:34', '17:15', 994, 1035, 41],\n", 1326 " [943, '16:34', '18:00', 994, 1080, 86],\n", 1327 " [944, '16:35', '16:54', 995, 1014, 19],\n", 1328 " [945, '16:36', '17:21', 996, 1041, 45],\n", 1329 " [946, '16:38', '17:25', 998, 1045, 47],\n", 1330 " [947, '16:38', '17:25', 998, 1045, 47],\n", 1331 " [948, '16:38', '18:04', 998, 1084, 86],\n", 1332 " [949, '16:39', '17:33', 999, 1053, 54],\n", 1333 " [950, '16:39', '17:51', 999, 1071, 72],\n", 1334 " [951, '16:40', '16:56', 1000, 1016, 16],\n", 1335 " [952, '16:40', '16:50', 1000, 1010, 10],\n", 1336 " [953, '16:43', '17:10', 1003, 1030, 27],\n", 1337 " [954, '16:43', '17:30', 1003, 1050, 47],\n", 1338 " [955, '16:44', '17:25', 1004, 1045, 41],\n", 1339 " [956, '16:44', '18:10', 1004, 1090, 86],\n", 1340 " [957, '16:45', '17:04', 1005, 1024, 19],\n", 1341 " [958, '16:46', '16:58', 1006, 1018, 12],\n", 1342 " [959, '16:48', '18:14', 1008, 1094, 86],\n", 1343 " [960, '16:48', '17:35', 1008, 1055, 47],\n", 1344 " [961, '16:48', '17:35', 1008, 1055, 47],\n", 1345 " [962, '16:49', '18:01', 1009, 1081, 72],\n", 1346 " [963, '16:49', '17:43', 1009, 1063, 54],\n", 1347 " [964, '16:50', '17:00', 1010, 1020, 10],\n", 1348 " [965, '16:51', '17:18', 1011, 1038, 27],\n", 1349 " [966, '16:52', '17:36', 1012, 1056, 44],\n", 1350 " [967, '16:53', '17:40', 1013, 1060, 47],\n", 1351 " [968, '16:54', '18:20', 1014, 1100, 86],\n", 1352 " [969, '16:54', '17:35', 1014, 1055, 41],\n", 1353 " [970, '16:55', '17:14', 1015, 1034, 19],\n", 1354 " [971, '16:58', '17:25', 1018, 1045, 27],\n", 1355 " [972, '16:58', '17:45', 1018, 1065, 47],\n", 1356 " [973, '16:58', '17:45', 1018, 1065, 47],\n", 1357 " [974, '16:58', '18:24', 1018, 1104, 86],\n", 1358 " [975, '16:59', '18:11', 1019, 1091, 72],\n", 1359 " [976, '16:59', '17:53', 1019, 1073, 54],\n", 1360 " [977, '17:00', '17:16', 1020, 1036, 16],\n", 1361 " [978, '17:00', '17:10', 1020, 1030, 10],\n", 1362 " [979, '17:01', '17:13', 1021, 1033, 12],\n", 1363 " [980, '17:03', '17:50', 1023, 1070, 47],\n", 1364 " [981, '17:04', '18:30', 1024, 1110, 86],\n", 1365 " [982, '17:04', '17:45', 1024, 1065, 41],\n", 1366 " [983, '17:05', '17:24', 1025, 1044, 19],\n", 1367 " [984, '17:06', '17:51', 1026, 1071, 45],\n", 1368 " [985, '17:08', '17:55', 1028, 1075, 47],\n", 1369 " [986, '17:08', '17:55', 1028, 1075, 47],\n", 1370 " [987, '17:08', '18:34', 1028, 1114, 86],\n", 1371 " [988, '17:09', '18:03', 1029, 1083, 54],\n", 1372 " [989, '17:09', '18:21', 1029, 1101, 72],\n", 1373 " [990, '17:10', '17:20', 1030, 1040, 10],\n", 1374 " [991, '17:13', '17:40', 1033, 1060, 27],\n", 1375 " [992, '17:13', '18:00', 1033, 1080, 47],\n", 1376 " [993, '17:14', '17:55', 1034, 1075, 41],\n", 1377 " [994, '17:14', '18:40', 1034, 1120, 86],\n", 1378 " [995, '17:15', '17:34', 1035, 1054, 19],\n", 1379 " [996, '17:16', '17:28', 1036, 1048, 12],\n", 1380 " [997, '17:18', '18:05', 1038, 1085, 47],\n", 1381 " [998, '17:18', '18:05', 1038, 1085, 47],\n", 1382 " [999, '17:18', '18:44', 1038, 1124, 86],\n", 1383 " [1000, '17:19', '18:31', 1039, 1111, 72],\n", 1384 " [1001, '17:19', '18:13', 1039, 1093, 54],\n", 1385 " [1002, '17:20', '17:36', 1040, 1056, 16],\n", 1386 " [1003, '17:20', '17:30', 1040, 1050, 10],\n", 1387 " [1004, '17:21', '17:47', 1041, 1067, 26],\n", 1388 " [1005, '17:22', '18:06', 1042, 1086, 44],\n", 1389 " [1006, '17:23', '18:10', 1043, 1090, 47],\n", 1390 " [1007, '17:24', '18:50', 1044, 1130, 86],\n", 1391 " [1008, '17:24', '18:05', 1044, 1085, 41],\n", 1392 " [1009, '17:25', '17:44', 1045, 1064, 19],\n", 1393 " [1010, '17:28', '17:55', 1048, 1075, 27],\n", 1394 " [1011, '17:28', '18:15', 1048, 1095, 47],\n", 1395 " [1012, '17:28', '18:15', 1048, 1095, 47],\n", 1396 " [1013, '17:28', '18:54', 1048, 1134, 86],\n", 1397 " [1014, '17:29', '18:41', 1049, 1121, 72],\n", 1398 " [1015, '17:29', '18:23', 1049, 1103, 54],\n", 1399 " [1016, '17:30', '17:40', 1050, 1060, 10],\n", 1400 " [1017, '17:31', '17:43', 1051, 1063, 12],\n", 1401 " [1018, '17:33', '18:20', 1053, 1100, 47],\n", 1402 " [1019, '17:34', '18:15', 1054, 1095, 41],\n", 1403 " [1020, '17:34', '19:00', 1054, 1140, 86],\n", 1404 " [1021, '17:35', '17:54', 1055, 1074, 19],\n", 1405 " [1022, '17:36', '18:21', 1056, 1101, 45],\n", 1406 " [1023, '17:38', '18:25', 1058, 1105, 47],\n", 1407 " [1024, '17:38', '19:04', 1058, 1144, 86],\n", 1408 " [1025, '17:38', '18:25', 1058, 1105, 47],\n", 1409 " [1026, '17:39', '18:51', 1059, 1131, 72],\n", 1410 " [1027, '17:39', '18:33', 1059, 1113, 54],\n", 1411 " [1028, '17:40', '17:56', 1060, 1076, 16],\n", 1412 " [1029, '17:40', '17:50', 1060, 1070, 10],\n", 1413 " [1030, '17:43', '18:10', 1063, 1090, 27],\n", 1414 " [1031, '17:43', '18:30', 1063, 1110, 47],\n", 1415 " [1032, '17:44', '18:25', 1064, 1105, 41],\n", 1416 " [1033, '17:44', '19:14', 1064, 1154, 90],\n", 1417 " [1034, '17:45', '18:04', 1065, 1084, 19],\n", 1418 " [1035, '17:46', '17:58', 1066, 1078, 12],\n", 1419 " [1036, '17:48', '18:35', 1068, 1115, 47],\n", 1420 " [1037, '17:48', '18:35', 1068, 1115, 47],\n", 1421 " [1038, '17:48', '19:14', 1068, 1154, 86],\n", 1422 " [1039, '17:49', '19:01', 1069, 1141, 72],\n", 1423 " [1040, '17:49', '18:43', 1069, 1123, 54],\n", 1424 " [1041, '17:50', '18:00', 1070, 1080, 10],\n", 1425 " [1042, '17:51', '18:17', 1071, 1097, 26],\n", 1426 " [1043, '17:52', '18:36', 1072, 1116, 44],\n", 1427 " [1044, '17:53', '18:40', 1073, 1120, 47],\n", 1428 " [1045, '17:54', '18:35', 1074, 1115, 41],\n", 1429 " [1046, '17:54', '18:57', 1074, 1137, 63],\n", 1430 " [1047, '17:55', '18:14', 1075, 1094, 19],\n", 1431 " [1048, '17:58', '18:45', 1078, 1125, 47],\n", 1432 " [1049, '17:58', '18:45', 1078, 1125, 47],\n", 1433 " [1050, '17:58', '18:25', 1078, 1105, 27],\n", 1434 " [1051, '17:58', '19:26', 1078, 1166, 88],\n", 1435 " [1052, '17:59', '18:53', 1079, 1133, 54],\n", 1436 " [1053, '18:00', '19:11', 1080, 1151, 71],\n", 1437 " [1054, '18:00', '18:10', 1080, 1090, 10],\n", 1438 " [1055, '18:00', '18:16', 1080, 1096, 16],\n", 1439 " [1056, '18:01', '18:13', 1081, 1093, 12],\n", 1440 " [1057, '18:03', '18:50', 1083, 1130, 47],\n", 1441 " [1058, '18:04', '18:45', 1084, 1125, 41],\n", 1442 " [1059, '18:04', '19:29', 1084, 1169, 85],\n", 1443 " [1060, '18:05', '18:24', 1085, 1104, 19],\n", 1444 " [1061, '18:06', '18:51', 1086, 1131, 45],\n", 1445 " [1062, '18:08', '18:55', 1088, 1135, 47],\n", 1446 " [1063, '18:08', '19:06', 1088, 1146, 58],\n", 1447 " [1064, '18:08', '18:55', 1088, 1135, 47],\n", 1448 " [1065, '18:09', '19:03', 1089, 1143, 54],\n", 1449 " [1066, '18:10', '18:20', 1090, 1100, 10],\n", 1450 " [1067, '18:10', '19:21', 1090, 1161, 71],\n", 1451 " [1068, '18:13', '19:00', 1093, 1140, 47],\n", 1452 " [1069, '18:13', '18:40', 1093, 1120, 27],\n", 1453 " [1070, '18:14', '19:43', 1094, 1183, 89],\n", 1454 " [1071, '18:14', '18:55', 1094, 1135, 41],\n", 1455 " [1072, '18:15', '18:34', 1095, 1114, 19],\n", 1456 " [1073, '18:16', '18:28', 1096, 1108, 12],\n", 1457 " [1074, '18:17', '18:27', 1097, 1107, 10],\n", 1458 " [1075, '18:18', '19:41', 1098, 1181, 83],\n", 1459 " [1076, '18:18', '18:58', 1098, 1138, 40],\n", 1460 " [1077, '18:18', '19:05', 1098, 1145, 47],\n", 1461 " [1078, '18:19', '19:13', 1099, 1153, 54],\n", 1462 " [1079, '18:20', '19:31', 1100, 1171, 71],\n", 1463 " [1080, '18:20', '18:36', 1100, 1116, 16],\n", 1464 " [1081, '18:20', '18:30', 1100, 1110, 10],\n", 1465 " [1082, '18:22', '19:05', 1102, 1145, 43],\n", 1466 " [1083, '18:23', '19:05', 1103, 1145, 42],\n", 1467 " [1084, '18:24', '19:27', 1104, 1167, 63],\n", 1468 " [1085, '18:24', '19:05', 1104, 1145, 41],\n", 1469 " [1086, '18:25', '18:44', 1105, 1124, 19],\n", 1470 " [1087, '18:28', '19:25', 1108, 1165, 57],\n", 1471 " [1088, '18:28', '18:55', 1108, 1135, 27],\n", 1472 " [1089, '18:28', '19:08', 1108, 1148, 40],\n", 1473 " [1090, '18:28', '19:15', 1108, 1155, 47],\n", 1474 " [1091, '18:29', '19:23', 1109, 1163, 54],\n", 1475 " [1092, '18:30', '19:05', 1110, 1145, 35],\n", 1476 " [1093, '18:30', '18:40', 1110, 1120, 10],\n", 1477 " [1094, '18:31', '18:43', 1111, 1123, 12],\n", 1478 " [1095, '18:33', '19:15', 1113, 1155, 42],\n", 1479 " [1096, '18:34', '19:58', 1114, 1198, 84],\n", 1480 " [1097, '18:34', '19:14', 1114, 1154, 40],\n", 1481 " [1098, '18:35', '18:55', 1115, 1135, 20],\n", 1482 " [1099, '18:36', '19:20', 1116, 1160, 44],\n", 1483 " [1100, '18:38', '19:25', 1118, 1165, 47],\n", 1484 " [1101, '18:38', '19:23', 1118, 1163, 45],\n", 1485 " [1102, '18:38', '19:56', 1118, 1196, 78],\n", 1486 " [1103, '18:39', '19:33', 1119, 1173, 54],\n", 1487 " [1104, '18:40', '18:50', 1120, 1130, 10],\n", 1488 " [1105, '18:40', '19:45', 1120, 1185, 65],\n", 1489 " [1106, '18:40', '18:56', 1120, 1136, 16],\n", 1490 " [1107, '18:43', '19:10', 1123, 1150, 27],\n", 1491 " [1108, '18:43', '19:30', 1123, 1170, 47],\n", 1492 " [1109, '18:44', '19:24', 1124, 1164, 40],\n", 1493 " [1110, '18:45', '19:05', 1125, 1145, 20],\n", 1494 " [1111, '18:46', '18:58', 1126, 1138, 12],\n", 1495 " [1112, '18:48', '19:35', 1128, 1175, 47],\n", 1496 " [1113, '18:48', '20:12', 1128, 1212, 84],\n", 1497 " [1114, '18:48', '20:11', 1128, 1211, 83],\n", 1498 " [1115, '18:48', '19:28', 1128, 1168, 40],\n", 1499 " [1116, '18:49', '19:43', 1129, 1183, 54],\n", 1500 " [1117, '18:50', '19:00', 1130, 1140, 10],\n", 1501 " [1118, '18:51', '19:01', 1131, 1141, 10],\n", 1502 " [1119, '18:53', '19:35', 1133, 1175, 42],\n", 1503 " [1120, '18:53', '19:15', 1133, 1155, 22],\n", 1504 " [1121, '18:53', '20:00', 1133, 1200, 67],\n", 1505 " [1122, '18:55', '19:15', 1135, 1155, 20],\n", 1506 " [1123, '18:55', '19:34', 1135, 1174, 39],\n", 1507 " [1124, '18:58', '19:38', 1138, 1178, 40],\n", 1508 " [1125, '18:59', '19:53', 1139, 1193, 54],\n", 1509 " [1126, '18:59', '19:50', 1139, 1190, 51],\n", 1510 " [1127, '18:59', '19:53', 1139, 1193, 54],\n", 1511 " [1128, '19:00', '19:16', 1140, 1156, 16],\n", 1512 " [1129, '19:00', '19:10', 1140, 1150, 10],\n", 1513 " [1130, '19:00', '19:16', 1140, 1156, 16],\n", 1514 " [1131, '19:01', '19:13', 1141, 1153, 12],\n", 1515 " [1132, '19:03', '20:26', 1143, 1226, 83],\n", 1516 " [1133, '19:03', '19:45', 1143, 1185, 42],\n", 1517 " [1134, '19:05', '19:44', 1145, 1184, 39],\n", 1518 " [1135, '19:05', '19:25', 1145, 1165, 20],\n", 1519 " [1136, '19:08', '20:15', 1148, 1215, 67],\n", 1520 " [1137, '19:08', '19:35', 1148, 1175, 27],\n", 1521 " [1138, '19:09', '19:49', 1149, 1189, 40],\n", 1522 " [1139, '19:09', '20:03', 1149, 1203, 54],\n", 1523 " [1140, '19:10', '19:20', 1150, 1160, 10],\n", 1524 " [1141, '19:10', '19:20', 1150, 1160, 10],\n", 1525 " [1142, '19:11', '19:53', 1151, 1193, 42],\n", 1526 " [1143, '19:14', '20:26', 1154, 1226, 72],\n", 1527 " [1144, '19:14', '19:35', 1154, 1175, 21],\n", 1528 " [1145, '19:14', '19:24', 1154, 1164, 10],\n", 1529 " [1146, '19:14', '20:05', 1154, 1205, 51],\n", 1530 " [1147, '19:15', '19:30', 1155, 1170, 15],\n", 1531 " [1148, '19:15', '19:54', 1155, 1194, 39],\n", 1532 " [1149, '19:18', '20:39', 1158, 1239, 81],\n", 1533 " [1150, '19:18', '20:00', 1158, 1200, 42],\n", 1534 " [1151, '19:19', '20:14', 1159, 1214, 55],\n", 1535 " [1152, '19:20', '19:30', 1160, 1170, 10],\n", 1536 " [1153, '19:20', '19:36', 1160, 1176, 16],\n", 1537 " [1154, '19:21', '19:31', 1161, 1171, 10],\n", 1538 " [1155, '19:23', '20:30', 1163, 1230, 67],\n", 1539 " [1156, '19:23', '19:35', 1163, 1175, 12],\n", 1540 " [1157, '19:24', '19:45', 1164, 1185, 21],\n", 1541 " [1158, '19:24', '19:45', 1164, 1185, 21],\n", 1542 " [1159, '19:25', '20:04', 1165, 1204, 39],\n", 1543 " [1160, '19:26', '20:08', 1166, 1208, 42],\n", 1544 " [1161, '19:29', '20:02', 1169, 1202, 33],\n", 1545 " [1162, '19:29', '20:18', 1169, 1218, 49],\n", 1546 " [1163, '19:29', '20:41', 1169, 1241, 72],\n", 1547 " [1164, '19:30', '19:40', 1170, 1180, 10],\n", 1548 " [1165, '19:33', '20:54', 1173, 1254, 81],\n", 1549 " [1166, '19:33', '20:17', 1173, 1217, 44],\n", 1550 " [1167, '19:34', '19:55', 1174, 1195, 21],\n", 1551 " [1168, '19:35', '20:14', 1175, 1214, 39],\n", 1552 " [1169, '19:38', '20:05', 1178, 1205, 27],\n", 1553 " [1170, '19:38', '20:45', 1178, 1245, 67],\n", 1554 " [1171, '19:39', '20:12', 1179, 1212, 33],\n", 1555 " [1172, '19:40', '19:50', 1180, 1190, 10],\n", 1556 " [1173, '19:40', '19:56', 1180, 1196, 16],\n", 1557 " [1174, '19:41', '20:27', 1181, 1227, 46],\n", 1558 " [1175, '19:43', '19:55', 1183, 1195, 12],\n", 1559 " [1176, '19:44', '20:05', 1184, 1205, 21],\n", 1560 " [1177, '19:44', '20:33', 1184, 1233, 49],\n", 1561 " [1178, '19:44', '21:00', 1184, 1260, 76],\n", 1562 " [1179, '19:45', '20:24', 1185, 1224, 39],\n", 1563 " [1180, '19:48', '20:37', 1188, 1237, 49],\n", 1564 " [1181, '19:48', '21:09', 1188, 1269, 81],\n", 1565 " [1182, '19:50', '20:00', 1190, 1200, 10],\n", 1566 " [1183, '19:52', '20:29', 1192, 1229, 37],\n", 1567 " [1184, '19:53', '20:08', 1193, 1208, 15],\n", 1568 " [1185, '19:53', '21:02', 1193, 1262, 69],\n", 1569 " [1186, '19:53', '20:20', 1193, 1220, 27],\n", 1570 " [1187, '19:54', '20:19', 1194, 1219, 25],\n", 1571 " [1188, '19:55', '20:34', 1195, 1234, 39],\n", 1572 " [1189, '19:56', '20:34', 1196, 1234, 38],\n", 1573 " [1190, '19:59', '20:48', 1199, 1248, 49],\n", 1574 " [1191, '19:59', '21:20', 1199, 1280, 81],\n", 1575 " [1192, '20:00', '20:16', 1200, 1216, 16],\n", 1576 " [1193, '20:00', '20:10', 1200, 1210, 10],\n", 1577 " [1194, '20:03', '20:42', 1203, 1242, 39],\n", 1578 " [1195, '20:03', '21:24', 1203, 1284, 81],\n", 1579 " [1196, '20:04', '20:29', 1204, 1229, 25],\n", 1580 " [1197, '20:05', '20:48', 1205, 1248, 43],\n", 1581 " [1198, '20:07', '20:44', 1207, 1244, 37],\n", 1582 " [1199, '20:08', '20:40', 1208, 1240, 32],\n", 1583 " [1200, '20:08', '20:35', 1208, 1235, 27],\n", 1584 " [1201, '20:10', '20:20', 1210, 1220, 10],\n", 1585 " [1202, '20:10', '20:22', 1210, 1222, 12],\n", 1586 " [1203, '20:11', '20:47', 1211, 1247, 36],\n", 1587 " [1204, '20:14', '21:04', 1214, 1264, 50],\n", 1588 " [1205, '20:14', '21:03', 1214, 1263, 49],\n", 1589 " [1206, '20:17', '21:03', 1217, 1263, 46],\n", 1590 " [1207, '20:18', '21:39', 1218, 1299, 81],\n", 1591 " [1208, '20:20', '20:30', 1220, 1230, 10],\n", 1592 " [1209, '20:20', '20:57', 1220, 1257, 37],\n", 1593 " [1210, '20:20', '20:36', 1220, 1236, 16],\n", 1594 " [1211, '20:22', '20:59', 1222, 1259, 37],\n", 1595 " [1212, '20:22', '20:42', 1222, 1242, 20],\n", 1596 " [1213, '20:24', '20:49', 1224, 1249, 25],\n", 1597 " [1214, '20:27', '21:22', 1227, 1282, 55],\n", 1598 " [1215, '20:29', '21:18', 1229, 1278, 49],\n", 1599 " [1216, '20:30', '21:07', 1230, 1267, 37],\n", 1600 " [1217, '20:30', '20:40', 1230, 1240, 10],\n", 1601 " [1218, '20:30', '20:40', 1230, 1240, 10],\n", 1602 " [1219, '20:30', '21:40', 1230, 1300, 70],\n", 1603 " [1220, '20:32', '21:18', 1232, 1278, 46],\n", 1604 " [1221, '20:35', '21:54', 1235, 1314, 79],\n", 1605 " [1222, '20:37', '21:14', 1237, 1274, 37],\n", 1606 " [1223, '20:38', '21:08', 1238, 1268, 30],\n", 1607 " [1224, '20:40', '20:50', 1240, 1250, 10],\n", 1608 " [1225, '20:40', '21:17', 1240, 1277, 37],\n", 1609 " [1226, '20:40', '20:56', 1240, 1256, 16],\n", 1610 " [1227, '20:44', '21:33', 1244, 1293, 49],\n", 1611 " [1228, '20:47', '21:33', 1247, 1293, 46],\n", 1612 " [1229, '20:47', '21:42', 1247, 1302, 55],\n", 1613 " [1230, '20:50', '21:00', 1250, 1260, 10],\n", 1614 " [1231, '20:50', '22:00', 1250, 1320, 70],\n", 1615 " [1232, '20:50', '22:09', 1250, 1329, 79],\n", 1616 " [1233, '20:50', '21:27', 1250, 1287, 37],\n", 1617 " [1234, '20:52', '21:29', 1252, 1289, 37],\n", 1618 " [1235, '20:53', '21:20', 1253, 1280, 27],\n", 1619 " [1236, '20:56', '21:11', 1256, 1271, 15],\n", 1620 " [1237, '20:59', '21:48', 1259, 1308, 49],\n", 1621 " [1238, '21:00', '21:10', 1260, 1270, 10],\n", 1622 " [1239, '21:00', '21:37', 1260, 1297, 37],\n", 1623 " [1240, '21:02', '21:48', 1262, 1308, 46],\n", 1624 " [1241, '21:05', '22:24', 1265, 1344, 79],\n", 1625 " [1242, '21:07', '21:44', 1267, 1304, 37],\n", 1626 " [1243, '21:07', '22:02', 1267, 1322, 55],\n", 1627 " [1244, '21:08', '21:38', 1268, 1298, 30],\n", 1628 " [1245, '21:10', '22:25', 1270, 1345, 75],\n", 1629 " [1246, '21:10', '21:20', 1270, 1280, 10],\n", 1630 " [1247, '21:10', '21:47', 1270, 1307, 37],\n", 1631 " [1248, '21:14', '22:03', 1274, 1323, 49],\n", 1632 " [1249, '21:17', '22:03', 1277, 1323, 46],\n", 1633 " [1250, '21:20', '22:18', 1280, 1338, 58],\n", 1634 " [1251, '21:20', '21:57', 1280, 1317, 37],\n", 1635 " [1252, '21:20', '21:30', 1280, 1290, 10],\n", 1636 " [1253, '21:22', '21:59', 1282, 1319, 37],\n", 1637 " [1254, '21:24', '21:49', 1284, 1309, 25],\n", 1638 " [1255, '21:27', '22:21', 1287, 1341, 54],\n", 1639 " [1256, '21:30', '22:07', 1290, 1327, 37],\n", 1640 " [1257, '21:30', '22:20', 1290, 1340, 50],\n", 1641 " [1258, '21:30', '21:40', 1290, 1300, 10],\n", 1642 " [1259, '21:32', '22:18', 1292, 1338, 46],\n", 1643 " [1260, '21:32', '22:01', 1292, 1321, 29],\n", 1644 " [1261, '21:35', '22:54', 1295, 1374, 79],\n", 1645 " [1262, '21:37', '22:14', 1297, 1334, 37],\n", 1646 " [1263, '21:39', '21:55', 1299, 1315, 16],\n", 1647 " [1264, '21:40', '22:17', 1300, 1337, 37],\n", 1648 " [1265, '21:40', '21:50', 1300, 1310, 10],\n", 1649 " [1266, '21:41', '22:08', 1301, 1328, 27],\n", 1650 " [1267, '21:47', '22:16', 1307, 1336, 29],\n", 1651 " [1268, '21:47', '22:51', 1307, 1371, 64],\n", 1652 " [1269, '21:47', '22:33', 1307, 1353, 46],\n", 1653 " [1270, '21:48', '22:03', 1308, 1323, 15],\n", 1654 " [1271, '21:50', '22:55', 1310, 1375, 65],\n", 1655 " [1272, '21:50', '22:27', 1310, 1347, 37],\n", 1656 " [1273, '21:50', '22:00', 1310, 1320, 10],\n", 1657 " [1274, '21:52', '22:29', 1312, 1349, 37],\n", 1658 " [1275, '21:53', '22:19', 1313, 1339, 26],\n", 1659 " [1276, '22:00', '22:38', 1320, 1358, 38],\n", 1660 " [1277, '22:00', '22:10', 1320, 1330, 10],\n", 1661 " [1278, '22:02', '22:12', 1322, 1332, 10],\n", 1662 " [1279, '22:02', '22:48', 1322, 1368, 46],\n", 1663 " [1280, '22:04', '22:31', 1324, 1351, 27],\n", 1664 " [1281, '22:05', '23:24', 1325, 1404, 79],\n", 1665 " [1282, '22:07', '22:44', 1327, 1364, 37],\n", 1666 " [1283, '22:07', '22:39', 1327, 1359, 32],\n", 1667 " [1284, '22:09', '22:25', 1329, 1345, 16],\n", 1668 " [1285, '22:10', '23:25', 1330, 1405, 75],\n", 1669 " [1286, '22:13', '22:38', 1333, 1358, 25],\n", 1670 " [1287, '22:13', '22:53', 1333, 1373, 40],\n", 1671 " [1288, '22:17', '22:27', 1337, 1347, 10],\n", 1672 " [1289, '22:17', '23:03', 1337, 1383, 46],\n", 1673 " [1290, '22:19', '22:46', 1339, 1366, 27],\n", 1674 " [1291, '22:22', '22:59', 1342, 1379, 37],\n", 1675 " [1292, '22:24', '22:48', 1344, 1368, 24],\n", 1676 " [1293, '22:27', '22:52', 1347, 1372, 25],\n", 1677 " [1294, '22:27', '23:21', 1347, 1401, 54],\n", 1678 " [1295, '22:28', '23:08', 1348, 1388, 40],\n", 1679 " [1296, '22:30', '23:17', 1350, 1397, 47],\n", 1680 " [1297, '22:32', '22:42', 1352, 1362, 10],\n", 1681 " [1298, '22:32', '23:11', 1352, 1391, 39],\n", 1682 " [1299, '22:34', '23:01', 1354, 1381, 27],\n", 1683 " [1300, '22:35', '23:54', 1355, 1434, 79],\n", 1684 " [1301, '22:37', '23:14', 1357, 1394, 37],\n", 1685 " [1302, '22:43', '23:23', 1363, 1403, 40],\n", 1686 " [1303, '22:43', '23:08', 1363, 1388, 25],\n", 1687 " [1304, '22:47', '23:33', 1367, 1413, 46],\n", 1688 " [1305, '22:47', '22:57', 1367, 1377, 10],\n", 1689 " [1306, '22:49', '23:16', 1369, 1396, 27],\n", 1690 " [1307, '22:52', '23:29', 1372, 1409, 37],\n", 1691 " [1308, '22:53', '23:15', 1373, 1395, 22],\n", 1692 " [1309, '22:55', '23:55', 1375, 1435, 60],\n", 1693 " [1310, '22:57', '23:51', 1377, 1431, 54],\n", 1694 " [1311, '22:58', '23:38', 1378, 1418, 40],\n", 1695 " [1312, '23:02', '23:41', 1382, 1421, 39],\n", 1696 " [1313, '23:02', '23:12', 1382, 1392, 10],\n", 1697 " [1314, '23:04', '23:31', 1384, 1411, 27],\n", 1698 " [1315, '23:05', '00:24', 1385, 1464, 79],\n", 1699 " [1316, '23:07', '23:44', 1387, 1424, 37],\n", 1700 " [1317, '23:13', '23:53', 1393, 1433, 40],\n", 1701 " [1318, '23:13', '23:38', 1393, 1418, 25],\n", 1702 " [1319, '23:17', '00:03', 1397, 1443, 46],\n", 1703 " [1320, '23:17', '23:27', 1397, 1407, 10],\n", 1704 " [1321, '23:19', '23:46', 1399, 1426, 27],\n", 1705 " [1322, '23:22', '23:59', 1402, 1439, 37],\n", 1706 " [1323, '23:25', '00:25', 1405, 1465, 60],\n", 1707 " [1324, '23:27', '00:21', 1407, 1461, 54],\n", 1708 " [1325, '23:28', '00:08', 1408, 1448, 40],\n", 1709 " [1326, '23:32', '23:42', 1412, 1422, 10],\n", 1710 " [1327, '23:34', '00:01', 1414, 1441, 27],\n", 1711 " [1328, '23:35', '01:05', 1415, 1505, 90],\n", 1712 " [1329, '23:37', '00:09', 1417, 1449, 32],\n", 1713 " [1330, '23:43', '00:23', 1423, 1463, 40],\n", 1714 " [1331, '23:43', '00:08', 1423, 1448, 25],\n", 1715 " [1332, '23:46', '00:01', 1426, 1441, 15],\n", 1716 " [1333, '23:47', '23:57', 1427, 1437, 10],\n", 1717 " [1334, '23:47', '00:33', 1427, 1473, 46],\n", 1718 " [1335, '23:52', '00:24', 1432, 1464, 32],\n", 1719 " [1336, '23:55', '00:49', 1435, 1489, 54],\n", 1720 " [1337, '23:57', '00:57', 1437, 1497, 60],\n", 1721 " [1338, '23:58', '00:38', 1438, 1478, 40],\n", 1722 " [1339, '00:02', '00:12', 1442, 1452, 10],\n", 1723 " [1340, '00:07', '00:39', 1447, 1479, 32],\n", 1724 " [1341, '00:13', '00:38', 1453, 1478, 25],\n", 1725 " [1342, '00:13', '00:51', 1453, 1491, 38],\n", 1726 " [1343, '00:15', '01:14', 1455, 1514, 59],\n", 1727 " [1344, '00:17', '01:23', 1457, 1523, 66],\n", 1728 " [1345, '00:23', '00:33', 1463, 1473, 10],\n", 1729 " [1346, '00:24', '00:40', 1464, 1480, 16],\n", 1730 " [1347, '00:25', '01:12', 1465, 1512, 47],\n", 1731 " [1348, '00:28', '01:07', 1468, 1507, 39],\n", 1732 " [1349, '00:33', '01:05', 1473, 1505, 32],\n", 1733 " [1350, '00:43', '01:21', 1483, 1521, 38],\n", 1734 " [1351, '00:44', '00:54', 1484, 1494, 10],\n", 1735 " [1352, '00:47', '01:09', 1487, 1509, 22],\n", 1736 " [1353, '00:47', '01:26', 1487, 1526, 39],\n", 1737 " [1354, '00:54', '01:04', 1494, 1504, 10],\n", 1738 " [1355, '00:57', '01:07', 1497, 1507, 10]\n", 1739 "] # yapf:disable\n", 1740 "\n", 1741 "\n", 1742 "def find_minimum_number_of_drivers(shifts, params):\n", 1743 " \"\"\"Minimize the number of needed drivers.\"\"\"\n", 1744 "\n", 1745 " num_shifts = len(shifts)\n", 1746 "\n", 1747 " # All durations are in minutes.\n", 1748 " max_driving_time = 540 # 8 hours.\n", 1749 " max_driving_time_without_pauses = 240 # 4 hours\n", 1750 " min_pause_after_4h = 30\n", 1751 " min_delay_between_shifts = 2\n", 1752 " max_working_time = 720\n", 1753 " min_working_time = 390 # 6.5 hours\n", 1754 " extra_time = 10 + 25\n", 1755 " max_break = 180\n", 1756 "\n", 1757 " # Computed data.\n", 1758 " total_driving_time = sum(shift[5] for shift in shifts)\n", 1759 " min_num_drivers = int(\n", 1760 " math.ceil(total_driving_time * 1.0 / max_driving_time))\n", 1761 " min_start_time = min(shift[3] for shift in shifts)\n", 1762 " max_end_time = max(shift[4] for shift in shifts)\n", 1763 "\n", 1764 " print('Bus driver scheduling')\n", 1765 " print(' num shifts =', num_shifts)\n", 1766 " print(' total driving time =', total_driving_time, 'minutes')\n", 1767 " print(' min num drivers =', min_num_drivers)\n", 1768 " print(' min start time =', min_start_time)\n", 1769 " print(' max end time =', max_end_time)\n", 1770 "\n", 1771 " # We are going to build a flow from a the start of the day to the end\n", 1772 " # of the day.\n", 1773 " #\n", 1774 " # Along the path, we will accumulate driving time, accrued time since the\n", 1775 " # last break, and total working time.\n", 1776 "\n", 1777 " model = cp_model.CpModel()\n", 1778 "\n", 1779 " # Per node info\n", 1780 " driving_time = {}\n", 1781 " working_time = {}\n", 1782 " no_break_driving_time = {}\n", 1783 "\n", 1784 " incoming_literals = collections.defaultdict(list)\n", 1785 " outgoing_literals = collections.defaultdict(list)\n", 1786 " outgoing_source_literals = []\n", 1787 " incoming_sink_literals = []\n", 1788 "\n", 1789 " all_literals = []\n", 1790 "\n", 1791 " # Create all the shift variables before iterating on the transitions\n", 1792 " # between these shifts.\n", 1793 " for shift in range(num_shifts):\n", 1794 " driving_time[shift] = model.NewIntVar(0, max_driving_time, 'dt_%i' % shift)\n", 1795 " no_break_driving_time[shift] = model.NewIntVar(\n", 1796 " 0, max_driving_time_without_pauses, 'nbdt_%i' % shift)\n", 1797 " working_time[shift] = model.NewIntVar(\n", 1798 " 0, max_working_time, 'wt_%i' % shift)\n", 1799 "\n", 1800 " for shift in range(num_shifts):\n", 1801 " duration = shifts[shift][5]\n", 1802 "\n", 1803 " # Arc from source to shift.\n", 1804 " # - set the working time of the driver\n", 1805 " # - increase driving time and driving time since the last break\n", 1806 " source_lit = model.NewBoolVar('from source to %i' % shift)\n", 1807 " all_literals.append(source_lit)\n", 1808 " outgoing_source_literals.append(source_lit)\n", 1809 " incoming_literals[shift].append(source_lit)\n", 1810 " model.Add(driving_time[shift] == duration).OnlyEnforceIf(source_lit)\n", 1811 " model.Add(no_break_driving_time[shift] == duration).OnlyEnforceIf(\n", 1812 " source_lit)\n", 1813 " model.Add(working_time[shift] == duration + extra_time).OnlyEnforceIf(\n", 1814 " source_lit)\n", 1815 "\n", 1816 " # Arc from shift to sink\n", 1817 " # - checks that working time is greater than min_working_time\n", 1818 " sink_lit = model.NewBoolVar('from %i to sink' % shift)\n", 1819 " all_literals.append(sink_lit)\n", 1820 " outgoing_literals[shift].append(sink_lit)\n", 1821 " incoming_sink_literals.append(sink_lit)\n", 1822 " model.Add(working_time[shift] >= min_working_time).OnlyEnforceIf(sink_lit)\n", 1823 "\n", 1824 " for other in range(num_shifts):\n", 1825 " delay = shifts[other][3] - shifts[shift][4]\n", 1826 " if delay < min_delay_between_shifts:\n", 1827 " continue\n", 1828 " if delay > max_break:\n", 1829 " break # Assumes start times are sorted.\n", 1830 " other_duration = shifts[other][5]\n", 1831 " lit = model.NewBoolVar('from %i to %i' % (shift, other))\n", 1832 " all_literals.append(lit)\n", 1833 "\n", 1834 " # Increase driving time\n", 1835 " model.Add(driving_time[other] ==\n", 1836 " driving_time[shift] + other_duration).OnlyEnforceIf(lit)\n", 1837 "\n", 1838 " # Increase no_break_driving or reset it to 0 depending on the delay\n", 1839 " if delay >= min_pause_after_4h:\n", 1840 " model.Add(no_break_driving_time[other] ==\n", 1841 " other_duration).OnlyEnforceIf(lit)\n", 1842 " else:\n", 1843 " model.Add(\n", 1844 " no_break_driving_time[other] ==\n", 1845 " no_break_driving_time[shift] + other_duration).OnlyEnforceIf(lit)\n", 1846 "\n", 1847 " # Increase working time\n", 1848 " model.Add(working_time[other] == working_time[shift] + delay +\n", 1849 " other_duration).OnlyEnforceIf(lit)\n", 1850 "\n", 1851 " # Add arc\n", 1852 " outgoing_literals[shift].append(lit)\n", 1853 " incoming_literals[other].append(lit)\n", 1854 "\n", 1855 " # Create dag constraint.\n", 1856 " for shift in range(num_shifts):\n", 1857 " model.Add(sum(outgoing_literals[shift]) == 1)\n", 1858 " model.Add(sum(incoming_literals[shift]) == 1)\n", 1859 "\n", 1860 " # Num drivers\n", 1861 " num_drivers = model.NewIntVar(min_num_drivers, min_num_drivers * 3, 'num_drivers')\n", 1862 " model.Add(sum(incoming_sink_literals) == num_drivers)\n", 1863 " model.Add(sum(outgoing_source_literals) == num_drivers)\n", 1864 "\n", 1865 " model.Minimize(num_drivers) \n", 1866 "\n", 1867 " # Solve model.\n", 1868 " solver = cp_model.CpSolver()\n", 1869 " solver.parameters.log_search_progress = True\n", 1870 " #solver.parameters.num_search_workers = 16\n", 1871 " # solver.parameters.boolean_encoding_level = 0\n", 1872 " # solver.parameters.lns_focus_on_decision_variables = True\n", 1873 " status = solver.Solve(model)\n", 1874 "\n", 1875 " if status != cp_model.OPTIMAL and status != cp_model.FEASIBLE:\n", 1876 " return -1\n", 1877 "\n", 1878 " # Display solution\n", 1879 " optimal_num_drivers = int(solver.ObjectiveValue())\n", 1880 " print('minimal number of drivers =', optimal_num_drivers)\n", 1881 " return optimal_num_drivers\n", 1882 "\n", 1883 "\n", 1884 "\"\"\"Optimize the bus driver allocation in two passes.\"\"\"\n", 1885 "print('----------- first pass: minimize the number of drivers')\n", 1886 "shifts = []\n", 1887 "if args.instance == 1:\n", 1888 " shifts = SAMPLE_SHIFTS_SMALL\n", 1889 "elif args.instance == 2:\n", 1890 " shifts = SAMPLE_SHIFTS_MEDIUM\n", 1891 "elif args.instance == 3:\n", 1892 " shifts = SAMPLE_SHIFTS_LARGE\n", 1893 "num_drivers = find_minimum_number_of_drivers(shifts, args.params)\n", 1894 "\n", 1895 "print('----------- second pass: minimize the sum of working times')\n", 1896 "#bus_driver_scheduling(False, num_drivers)\n", 1897 "\n" 1898 ] 1899 } 1900 ], 1901 "metadata": {}, 1902 "nbformat": 4, 1903 "nbformat_minor": 5 1904} 1905