├── .Rhistory ├── README.md ├── google_transit.zip ├── gtfs_to_igraph.R └── muxviz_input ├── edge_list_Bus.txt ├── input_Muxviz.txt └── stops_layout.txt /.Rhistory: -------------------------------------------------------------------------------- 1 | df <- unique(df) # remove duplicate of identical stops 2 | head(df) 3 | df[, quant := .N, by = clust] 4 | table(df$quant) 5 | nrow(df[ parent_station ==""]) 6 | df[ location_type==1, parent_station := stop_id ] 7 | df[ parent_station=="" & stop_id %in% df$parent_station, parent_station := stop_id ] 8 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 9 | ifelse( parent_station=="" & stop_id %in% df$parent_station, stop_id, "")), by=clust] 10 | nrow(df[ parent_station ==""]) # 2014: 7349 |||| 2017: 5938 11 | # Update Parent Stations for each cluster 12 | # a) Stops which alread have parent stations stay the same 13 | # b) stations with no parent, will receive the parent of the cluster 14 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 15 | ifelse( parent_station=="", max(parent_station), "")), by=clust] 16 | nrow(df[ parent_station ==""]) # total number of stops without Parent Station 17 | # d) For those clusters with no parent stations, get the 1st stop to be a Parent 18 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 19 | ifelse( parent_station== "", stop_id[1L], "")), by=clust] 20 | nrow(df[ parent_station ==""]) # total number of stops without Parent Station 21 | # all clusters > 1 have a parent station 22 | df[quant > 1 & parent_station==""][order(clust)] # should be empty 23 | # Remaining stops without Parent Station 24 | nrow(df[ parent_station ==""]) # 5149 (2014) ||| 4397 (2017mix) 25 | # make sure intersection does not change (before and after) 26 | intersect(df$parent_station, stop_times$stop_id) %>% length() 27 | # make sure parent stations are consistent within each cluster with more than one stop 28 | df[ quant > 1 , parent_station := max(parent_station), by=clust] 29 | unique(df$parent_station) %>% length() 30 | #### Correction approach based on stop_name ------------------ 31 | ### 2. BRT stops ------------------ 32 | # df[ parent_station=="" & stop_name %like% "BRT" ] 33 | # df[ stop_name %like% "Magar?a" ] 34 | # df[ clust ==41] # 18223857 35 | # df[ stop_id ==18225872] 36 | if (year=="2017mix" | year=="2017counter"){ 37 | # all stops on 2017-05-05 38 | df[ grepl( "BRT.*Madureira", stop_name), parent_station := max(parent_station) ] 39 | df[ grepl( "BRT.*Bosque da Barra", stop_name), parent_station := max(parent_station) ] 40 | df[ grepl( "BRT.*Mato Alto", stop_name), parent_station := max(parent_station) ] 41 | df[ grepl( "BRT.*Pastor José Santos", stop_name), parent_station := max(parent_station) ] 42 | df[ grepl( "BRT.*Praça do Carmo", stop_name), parent_station := max(parent_station) ] 43 | df[ grepl( "BRT.*Guaporé", stop_name), parent_station := max(parent_station) ] 44 | df[ grepl( "BRT.*Marambaia", stop_name), parent_station := max(parent_station) ] 45 | df[ grepl( "BRT.*Vila Kosmos", stop_name), parent_station := max(parent_station) ] 46 | df[ grepl( "BRT.*Pedro Taques", stop_name), parent_station := max(parent_station) ] 47 | df[ grepl( "BRT.*Vila Queiroz", stop_name), parent_station := max(parent_station) ] 48 | df[ grepl( "BRT.*Vaz Lobo", stop_name), parent_station := max(parent_station) ] 49 | df[ grepl( "BRT.*Mercadão", stop_name), parent_station := max(parent_station) ] 50 | df[ grepl( "BRT.*Otaviano", stop_name), parent_station := max(parent_station) ] 51 | df[ grepl( "BRT.*Rio 2", stop_name), parent_station := max(parent_station) ] 52 | df[ grepl( "BRT.*Merck", stop_name), parent_station := max(parent_station) ] 53 | df[ grepl( "BRT.*Arroio Pavuna", stop_name), parent_station := max(parent_station) ] 54 | df[ grepl( "BRT.*Vila Sapé", stop_name), parent_station := max(parent_station) ] 55 | df[ grepl( "BRT.*Recanto das Palmeiras", stop_name), parent_station := max(parent_station) ] 56 | df[ grepl( "BRT.*Divina Providência", stop_name), parent_station := max(parent_station) ] 57 | df[ grepl( "BRT.*Pedro Correia", stop_name), parent_station := max(parent_station) ] 58 | df[ grepl( "BRT.*Curicica", stop_name), parent_station := max(parent_station) ] 59 | df[ grepl( "BRT.*Praça do Bandolim", stop_name), parent_station := max(parent_station) ] 60 | df[ grepl( "BRT.*Tanque", stop_name), parent_station := max(parent_station) ] 61 | df[ grepl( "BRT.*Galeão 2", stop_name), parent_station := max(parent_station) ] 62 | df[ grepl( "BRT.*Galeão 1", stop_name), parent_station := max(parent_station) ] 63 | df[ grepl( "BRT.*Guiomar Novaes", stop_name), parent_station := max(parent_station) ] 64 | df[ grepl( "BRT.*Santa Efigênia", stop_name), parent_station := max(parent_station) ] 65 | df[ grepl( "BRT.*André Rocha", stop_name), parent_station := max(parent_station) ] 66 | df[ grepl( "BRT.*Aracy Cabral", stop_name), parent_station := max(parent_station) ] 67 | df[ grepl( "BRT.*Taquara", stop_name), parent_station := max(parent_station) ] 68 | df[ grepl( "BRT.*Centro Metropolitano", stop_name), parent_station := max(parent_station) ] 69 | df[ grepl( "BRT.*Vila Militar", stop_name), parent_station := max(parent_station) ] 70 | df[ grepl( "BRT.*Rede Sarah", stop_name), parent_station := max(parent_station) ] 71 | df[ grepl( "BRT.*Marechal Fontenelle", stop_name), parent_station := max(parent_station) ] 72 | df[ grepl( "BRT.*São José de Magalhães Bastos", stop_name), parent_station := max(parent_station) ] 73 | df[ grepl( "BRT.*Pe. João Chribbin", stop_name), parent_station := max(parent_station) ] 74 | df[ grepl( "BRT.*Ventura", stop_name), parent_station := max(parent_station) ] 75 | df[ grepl( "BRT.*Aeroporto de Jacarepaguá", stop_name), parent_station := max(parent_station) ] 76 | df[ grepl( "BRT.*Colônia", stop_name), parent_station := max(parent_station) ] 77 | df[ grepl( "BRT.*Lourenço Jorge", stop_name), parent_station := max(parent_station) ] 78 | df[ grepl( "BRT.*Outeiro Santo", stop_name), parent_station := max(parent_station) ] 79 | df[ grepl( "BRT.*Boiúna", stop_name), parent_station := max(parent_station) ] 80 | df[ grepl( "BRT.*Leila Diniz", stop_name), parent_station := max(parent_station) ] 81 | df[ grepl( "BRT.*Ilha Pura", stop_name), parent_station := max(parent_station) ] 82 | df[ grepl( "BRT.*Tapebuias", stop_name), parent_station := max(parent_station) ] 83 | df[ grepl( "BRT.*Catedral do Recreio", stop_name), parent_station := max(parent_station) ] 84 | df[ grepl( "BRT.*Minha Praia", stop_name), parent_station := max(parent_station) ] 85 | df[ grepl( "BRT.*Asa Branca", stop_name), parent_station := max(parent_station) ] 86 | df[ grepl( "BRT.*Morro do Outeiro", stop_name), parent_station := max(parent_station) ] 87 | df[ grepl( "BRT.*Parque Olímpico", stop_name), parent_station := max(parent_station) ] 88 | df[ grepl( "BRT.*Olof Palme", stop_name), parent_station := max(parent_station) ] 89 | df[ grepl( "BRT.*Riocentro", stop_name), parent_station := max(parent_station) ] 90 | df[ grepl( "BRT.*Via Parque", stop_name), parent_station := max(parent_station) ] 91 | df[ grepl( "BRT.*Gilka Machado", stop_name), parent_station := max(parent_station) ] 92 | df[ grepl( "BRT.*Bosque Marapendi", stop_name), parent_station := max(parent_station) ] 93 | df[ grepl( "BRT.*Paulo Malta Rezende", stop_name), parent_station := max(parent_station) ] 94 | df[ grepl( "BRT.*Dom Bosco", stop_name), parent_station := max(parent_station) ] 95 | df[ grepl( "BRT.*Ricardo Marinho", stop_name), parent_station := max(parent_station) ] 96 | df[ grepl( "BRT.*Riviera", stop_name), parent_station := max(parent_station) ] 97 | df[ grepl( "BRT.*Afrânio Costa", stop_name), parent_station := max(parent_station) ] 98 | df[ grepl( "BRT.*Parque das Rosas", stop_name), parent_station := max(parent_station) ] 99 | df[ grepl( "BRT.*Pontões/Barrasul", stop_name), parent_station := max(parent_station) ] 100 | df[ grepl( "BRT.*Ibiapina", stop_name), parent_station := max(parent_station) ] 101 | df[ grepl( "BRT.*Maré", stop_name), parent_station := max(parent_station) ] 102 | df[ grepl( "BRT.*Santa Luzia", stop_name), parent_station := max(parent_station) ] 103 | df[ grepl( "BRT.*Cardoso de Moraes", stop_name), parent_station := max(parent_station) ] 104 | df[ grepl( "BRT.*Fundão", stop_name), parent_station := max(parent_station) ] 105 | df[ grepl( "BRT.*Barra Shopping", stop_name), parent_station := max(parent_station) ] 106 | df[ grepl( "BRT.*Benvindo de Novaes", stop_name), parent_station := max(parent_station) ] 107 | df[ grepl( "BRT.*Ilha de Guaratiba", stop_name), parent_station := max(parent_station) ] 108 | df[ grepl( "BRT.*Curral Falso", stop_name), parent_station := max(parent_station) ] 109 | df[ grepl( "BRT.*Interlagos", stop_name), parent_station := max(parent_station) ] 110 | df[ grepl( "BRT.*Nova Barra", stop_name), parent_station := max(parent_station) ] 111 | df[ grepl( "BRT.*Gelson Fonseca", stop_name), parent_station := max(parent_station) ] 112 | df[ grepl( "BRT.*Guignard", stop_name), parent_station := max(parent_station) ] 113 | df[ grepl( "BRT.*Pedra de Itaúna", stop_name), parent_station := max(parent_station) ] 114 | df[ grepl( "BRT.*Riomar", stop_name), parent_station := max(parent_station) ] 115 | df[ grepl( "BRT.*Novo Leblon", stop_name), parent_station := max(parent_station) ] 116 | df[ grepl( "BRT.*Américas Park", stop_name), parent_station := max(parent_station) ] 117 | df[ grepl( "BRT.*Golfe Olímpico", stop_name), parent_station := max(parent_station) ] 118 | df[ grepl( "BRT.*Cesarinho", stop_name), parent_station := max(parent_station) ] 119 | df[ grepl( "BRT.*Três Pontes", stop_name), parent_station := max(parent_station) ] 120 | df[ grepl( "BRT.*31 de Outubro", stop_name), parent_station := max(parent_station) ] 121 | df[ grepl( "BRT.*Cesarão II", stop_name), parent_station := max(parent_station) ] 122 | df[ grepl( "BRT.*Cesarão I", stop_name), parent_station := max(parent_station) ] 123 | df[ grepl( "BRT.*Vila Paciência", stop_name), parent_station := max(parent_station) ] 124 | df[ grepl( "BRT.*Cesarão III", stop_name), parent_station := max(parent_station) ] 125 | df[ grepl( "BRT.*Pingo d'Água", stop_name), parent_station := max(parent_station) ] 126 | df[ grepl( "BRT.*Cajueiros", stop_name), parent_station := max(parent_station) ] 127 | df[ grepl( "BRT.*Vendas de Varanda", stop_name), parent_station := max(parent_station) ] 128 | df[ grepl( "BRT.*Cetex", stop_name), parent_station := max(parent_station) ] 129 | df[ grepl( "BRT.*Embrapa", stop_name), parent_station := max(parent_station) ] 130 | df[ grepl( "BRT.*Pontal", stop_name), parent_station := max(parent_station) ] 131 | df[ grepl( "BRT.*Notre Dame", stop_name), parent_station := max(parent_station) ] 132 | df[ grepl( "BRT.*Santa Cruz", stop_name), parent_station := max(parent_station) ] 133 | df[ grepl( "BRT.*General Olímpio", stop_name), parent_station := max(parent_station) ] 134 | df[ grepl( "BRT.*Gastão Rangel", stop_name), parent_station := max(parent_station) ] 135 | df[ grepl( "BRT.*Recanto das Garças", stop_name), parent_station := max(parent_station) ] 136 | df[ grepl( "BRT.*Gláucio Gil", stop_name), parent_station := max(parent_station) ] 137 | df[ grepl( "BRT.*Recreio Shopping", stop_name), parent_station := max(parent_station) ] 138 | df[ grepl( "BRT.*Santa Mônica Jardins", stop_name), parent_station := max(parent_station) ] 139 | df[ grepl( "BRT.*Salvador Allende", stop_name), parent_station := max(parent_station) ] 140 | df[ grepl( "BRT.*Santa Veridiana", stop_name), parent_station := max(parent_station) ] 141 | df[ grepl( "BRT.*Pinto Teles", stop_name), parent_station := max(parent_station) ] 142 | df[ stop_name %like% "BRT.*Penha|Terminal Penha", parent_station := max(parent_station) ] 143 | #### BRT special cases 144 | df[ grepl( "BRT.*Tanque|Terminal.*Tanque", stop_name) , parent_station := max(parent_station) ] 145 | df[ grepl( "BRT.*Magarça|Terminal.*Magarça", stop_name), parent_station := max(parent_station) ] 146 | df[ grepl( "BRT.*Alvorada|Terminal.*Alvorada", stop_name), parent_station := max(parent_station) ] 147 | df[ grepl( "BRT.*Taquara", stop_name), parent_station := "31827958" ] 148 | # BRT Transcarioca - Fundão 149 | temp <- df[ grepl( "BRT.*Fundão", stop_name), .(parent_station) ][1] 150 | df[ stop_name %like% "Terminal Aroldo Melodia", parent_station := temp] 151 | # BRT Santa Eugênia merge integracao a Trem paciencia 152 | df[ stop_id =="9641", parent_station := "49666230" ] 153 | # Jardim Oceanico, Metro e BRT 154 | df[ stop_name %like% "Jardim Oceânico", parent_station := max(parent_station)] 155 | } 156 | # Remaining stops without Parent Station 157 | nrow(df[ parent_station ==""]) # ||| 2017mix: 4396 158 | ### 3. stops in Terminals ------------------ 159 | # df[ parent_station=="" & stop_name %like% "Terminal" ] 160 | # df[ stop_name %like% "Terminal Aroldo Melodia" ] 161 | terminal_to_correct <- c( "Terminal Da Puc próximo" 162 | , "Terminal da Puc próximo" 163 | , "Terminal Alvorada" 164 | , "Terminal Padre Henrique Otte - Plataforma") 165 | for (i in terminal_to_correct ){ 166 | df[ stop_name %like% i, parent_station := ifelse( parent_station !="" , parent_station, # a 167 | ifelse( parent_station=="", max(stop_id), "ERRO"))] 168 | } 169 | # Remaining stops without Parent Station 170 | nrow(df[ parent_station ==""]) # 2014: 5144 ||| 2017: 4396 171 | ### 4. stops with Plataforma ------------------ 172 | df[ parent_station=="" & stop_name %like% "Plataforma", ] 173 | df[ parent_station=="" & stop_name %like% "plataforma", ] 174 | ### 5. stops with Rodoviária ------------------ 175 | if (year=="2017mix" | year=="2017counter"){ 176 | # df[ parent_station=="" & stop_name %like% "rodoviária", ] 177 | # df[ parent_station=="" & stop_name %like% "Rodoviária", ] 178 | # df[ parent_station=="" & stop_name %like% "Terminal Rodo", ] 179 | # Fix Terminal Rodoviário Novo Rio 180 | df[ stop_id == '28420676', parent_station := '28420676'] # Novo Rio 181 | df[ stop_id == '18242377', parent_station := '28420676'] 182 | df[ stop_id == '47998886', parent_station := '28420676'] 183 | df[ stop_id == '47999015', parent_station := '28420676'] 184 | } 185 | df[ stop_name %like% 'Novo Rio',] 186 | # Remaining stops without Parent Station 187 | nrow(df[ parent_station ==""]) # 2014: 5080 ||||| 017mix: 4394 188 | ### 5. stops with Estação ------------------ 189 | #ok ??? necesarrio? 190 | df[ parent_station=="" & stop_name %like% "Estação", ] 191 | df[ parent_station=="" & stop_name %like% "estação", ] 192 | if (year=="2014" | year=="2017counter"){ 193 | # Estação de Integração - UFRJ 194 | df[ stop_id =="19859078" , parent_station := "19859078"] 195 | df[ stop_id =="19859062" , parent_station := "19859078"] } 196 | ### 6. stops with Central do Brasil ------------------ 197 | df[ stop_name %like% "Central do Brasil", ] 198 | df[ stop_name %like% "Central", ] 199 | temp <- "parent_CentraldoBrasil" 200 | df[ stop_name %like% "Central do Brasil", parent_station := temp] 201 | df[ stop_name == "Central", parent_station := temp] 202 | df[ stop_id == "18270480", parent_station := temp] 203 | df[ stop_id == "18223617", parent_station := temp] 204 | df[ stop_id == "18226161", parent_station := temp] # Procópio Ferreira 205 | df[ stop_id == "31658487", parent_station := temp] 206 | df[ stop_id == "18370876", parent_station := temp] 207 | df[ stop_name %like% "Procópio Ferreira|PROCÓPIO FERREIRA", parent_station := temp] 208 | # ### 6. Train Stations ------------------ 209 | # um solucao seria (1) identifica paradas q sao de trem, depois aplica essa formula soh para 2014 210 | # only for 2014 because it has train statations and plataforms as different stops 211 | # # get a list with all train station names form 2017 212 | # dftrens17 <- "./GTFS data/GTFS Rio feed_supervia 2017-03-06.zip" 213 | # dftrens17 <- lapply( list(dftrens17) , unzip_fread_stops, file="stops.txt") %>% rbindlist() 214 | # Encoding(dftrens17$stop_name) <- "UTF-8" 215 | if (year=="2014" | year=="2017counter"){ 216 | trains_to_correct <- c( "São Cristóvão" 217 | , "Maracanã" 218 | , "Praça da Bandeira" 219 | , "São Francisco Xavier" 220 | , "Silva Freire" 221 | , "Méier" 222 | , "Engenho de Dentro" 223 | , "Piedade" 224 | , "Quintino" 225 | , "Cascadura" 226 | , "Ricardo de Albuquerque" 227 | , "Vila Militar" 228 | , "Magalhães Bastos" 229 | , "Guilherme da Silveira" 230 | , "Senador Camará" 231 | , "Santíssimo" 232 | , "Augusto Vasconcelos" 233 | , "Benjamin do Monte" 234 | , "Triagem" 235 | , "Tancredo Neves" 236 | , "Jacarezinho" 237 | , "Pilares" 238 | , "Mercadão de Madureira" 239 | , "Rocha Miranda" 240 | , "Honório Gurgel" 241 | , "Barros Filho" 242 | , "Costa Barros" 243 | , "Mangueira" 244 | , "Manguinhos" 245 | , "Penha Circular" 246 | , "Brás de Pina" 247 | , "Parada de Lucas" 248 | , "Vigário Geral") 249 | for (i in trains_to_correct ){ 250 | df[ stop_name %like% i, parent_station := max(stop_id) ] } 251 | } 252 | # Train station with names common to other places 253 | # in general, they are Ok, tentativa de correcao pode confundir e atrapalhar 254 | nrow(df[ parent_station ==""]) # 5139 (2014) ||| 4390 (2017mix) 255 | ### Special Cases 256 | # parada na Uranos da Direto na Estacao de Trem Bonsucesso, 2014, 2017 257 | df[ stop_id == "18223413", parent_station := "18710007"] 258 | # parada da Uranos perto da Estacao de Trem Ramos, mas inacessivel 259 | df[ stop_id == '18227189', parent_station := '18227189'] 260 | # Estacao Deodoro 261 | df[ stop_name %like% "Deodoro", parent_station := max(parent_station)] 262 | nrow(df[ parent_station ==""]) # 5138 (2014) ||| 4389 (2017mix) 263 | # # parada de onibus muito perto do metro em 2017 264 | # df[ stop_id =='18370886', parent_station := stop_id] # metro Gloria 265 | # df[ stop_id =='18370884', parent_station := stop_id] # metro Cinelandia 266 | # df[ stop_id =='18370882', parent_station := stop_id] # metro Carioca 267 | # merge trem e BRT 268 | if (year=="2017mix" | year=="2017counter"){ 269 | # Estacao Madureira, merge trem e BRT 270 | df[ stop_id == "9608", parent_station := "31827977"] 271 | df[ stop_id == "18231461", parent_station := "31827977"] 272 | # Estacao Olaria, merge trem e BRT 273 | df[ grepl( "BRT.*Olaria", stop_name), parent_station := max(parent_station) ] 274 | df[ stop_id == "9687", parent_station := "31828618"] 275 | # Estacao Vicente de Carvalho, merge trem e BRT 276 | temp <- df[ grepl( "BRT.*Vicente de Carvalho", stop_name)] %>% .$parent_station %>% max() 277 | df[ grepl( "BRT.*Vicente de Carvalho", stop_name), parent_station := temp] 278 | df[ stop_id %like% "18371101", parent_station := temp ] 279 | df[ stop_id %like% "38734816", parent_station := temp ] 280 | df[ stop_id %like% "38734700", parent_station := temp ] 281 | df[ stop_id %like% "18228584", parent_station := temp ] 282 | df[ stop_id %like% "38734698", parent_station := temp ] 283 | # Estacao Vila Militar, merge trem e BRT 284 | df[ stop_id == "9630", parent_station := "48602908"] 285 | } 286 | ### 6. Subway Stations ------------------ 287 | # df[ stop_name %like% "Vicente de Carvalho"] 288 | # df[ clust ==49 ] # 18223857 289 | # df[ stop_id ==18370876] 290 | # this should be empty 291 | stop_times[ !(stop_id %in% df$stop_id) & (stop_id %in% df$parent_station)] 292 | ### identify and remove stops with no links at all --------------------- 293 | df[ quant ==1 & parent_station=="", isolated_dummy := if_else( stop_id %in% stop_times$stop_id, 0,1)] 294 | sum(df$isolated_dummy, na.rm = T) 295 | ggplot(data=subset(df, isolated_dummy==1), aes(x=stop_lon,y=stop_lat)) + geom_point() 296 | # Do they have any links via a parent station? 297 | # if the isolated stop has a parent_station that is present in the stop_times file, then replace stop_id with parent station, change back isolaton status 298 | df[ isolated_dummy ==1 & parent_station %in% stop_times$stop_id, c('stop_id', 'isolated_dummy'):= list(parent_station, 0)] 299 | sum(df$isolated_dummy, na.rm = T) 300 | # isolated stops excluded: ||||| 2017: 127 301 | stops_excluded <- df[ (isolated_dummy==1 & parent_station!="") ] 302 | cat(paste("number of isolated stops (inactive with no trips) excluded:", nrow(stops_excluded) )) 303 | # # Andherson 304 | # fwrite(stops_excluded, "stops_with_no_trips.csv") 305 | # if no connection at all, remove isolated (inactive) stops 306 | df <- subset(df, !(stop_id %in% stops_excluded$stop_id)) 307 | sum(df$isolated_dummy, na.rm=T) 308 | #### Final evaluation ----------------------- 309 | # all clusters > 1 have a parent station 310 | df[quant > 1 & parent_station==""][order(clust)] # this should be empty 311 | # number of stops per cluster 312 | table(df$quant) 313 | # Remaining stops without Parent Station 314 | nrow(df[ quant ==1 & parent_station ==""]) # 5071 ||| 4250 315 | # for the lonly stops, make sure they are the Parent station of themselves 316 | df[ quant ==1 & parent_station=="" , parent_station := stop_id , by=stop_id] 317 | nrow(df[ parent_station ==""]) # 0 318 | # update lat + long to be the same as 1st Parent Station 319 | df[, stop_lon := stop_lon[1], by=parent_station] 320 | df[, stop_lat := stop_lat[1], by=parent_station] 321 | unique(df$stop_id) %>% length() # (2014, 7626)(2017mix, 6338) 322 | unique(df$parent_station) %>% length() # (2014, 6283)(2017mix, 5290) 323 | # # fazer mapa antes e depois 324 | # map_after <- ggplot() + geom_point(data=df, aes(x=stop_lon,y=stop_lat,label=c(parent_station)), color="gray") + coord_equal() + ggtitle("After") 325 | # map_after 326 | # map_before + geom_point(data=df, aes(x=stop_lon,y=stop_lat,label=c(parent_station)), color="gray") + coord_equal() + ggtitle("After") 327 | # the core of the CORRECTION is this --------------------- 328 | # the core of the CORRECTION is this 329 | # the core of the CORRECTION is this 330 | # stop_times2 <- copy(stop_times) 331 | # stop_times <- copy(stop_times2) 332 | # 333 | # Add parent_station info to stop_times 334 | # based on correspondence btwn stop_times$stop_id and df$stop_id 335 | stop_times[df, on= 'stop_id', c('clust', 'parent_station') := list(i.clust, i.parent_station) ] 336 | # trips with non-identified stops (2014: 766,791 ||| 2017: 328,421) 337 | sum(is.na(stop_times$parent_station)) 338 | # non-identified stops (2014: 1003 ||| 2017mix: 0) 339 | stop_times[is.na(parent_station), .(stop_id, parent_station)] %>% unique() %>% nrow() 340 | # CRUX: Replace stop_id with parent_station -------------------- 341 | stop_times[ !is.na(parent_station) , stop_id := parent_station ] 342 | df[ , stop_id := parent_station ] 343 | # remove repeated stops 344 | df <- unique(df) 345 | # identify transport modes, route and service level for each trip 346 | routes <- routes[,.(route_id, route_type)] # keep necessary cols 347 | trips <- trips[,.(route_id, trip_id, service_id)] # keep necessary cols 348 | trips[routes, on=.(route_id), route_type := i.route_type] # add route_type to trips 349 | # add these columns to stop_times: route_id, route_type, service_id 350 | stop_times[trips, on=.(trip_id), c('route_id', 'route_type', 'service_id') := list(i.route_id, i.route_type, i.service_id) ] 351 | gc(reset = T) 352 | # # Only keep trips during weekdays 353 | # # remove columns with weekends 354 | # calendar <- calendar[, -c('saturday', 'sunday')] 355 | # 356 | # # keep only rows that are not zero (i.e. that have service during weekday) 357 | # calendar <- calendar[rowMeans(calendar >0)==T,] 358 | # 359 | # # Only keep those trips which run on weekdays 360 | # stop_times2 <- subset(stop_times, service_id %in% calendar$service_id) 361 | # subset columns 362 | stop_times <- stop_times[, .(route_type, route_id, trip_id, stop_id, stop_sequence, arrival_time, departure_time)] 363 | # get outputs stop_times and stops_edited in a list with name corresponding to year of input data 364 | newList <- list("stop_times_" = stop_times, "stops_edited_"= df) 365 | names(newList) <- paste0(names(newList), year) # attach year to name of output 366 | # return result of function 367 | return(list2env(newList ,.GlobalEnv)) 368 | list_gtfs_2017mix <- list.files("./GTFS data/GTFS_used/2017mix", full.names = T) 369 | source("./R scripts/00_correct_GTFS_stops.R") 370 | correct_gtfs_for_igraph(list_gtfs_2017mix, dist_threshold = 30, year="2017mix") 371 | rm(list=setdiff(ls(), c('stop_times_2014','stop_times_2017mix', 'stop_times_2017counter', 'stops_edited_2014', 'stops_edited_2017mix', 'stops_edited_2017counter'))) 372 | gc(reset = T) 373 | beep() 374 | stop_times <- copy(stop_times_2017mix) 375 | stops <- copy(stops_edited_2017mix) 376 | stop_times[, stop_sequence := as.numeric(stop_sequence) ] 377 | head(stop_times) 378 | stop_times[order(trip_id, stop_sequence, route_id)] %>% head 379 | head(stop_times) 380 | stop_times[order(trip_id, stop_sequence, route_id)] %>% head 381 | stop_times[order(route_id, trip_id, stop_sequence)] %>% head 382 | stop_times[order(route_id, trip_id, stop_sequence)] %>% head 383 | stop_times[order(trip_id, stop_sequence, route_id)] %>% head 384 | setorder(stop_times, trip_id, stop_sequence, route_id) 385 | head(stop_times) 386 | setwd("R:/Dropbox/github/gtfs_to_igraph") 387 | setwd("R:/Dropbox/github/gtfs_to_igraph") 388 | my_gtfs_feeds <- list.files(path = ".", pattern =".zip", full.names = T) 389 | list_gtfs = my_gtfs_feeds 390 | dist_threshold =30 391 | save_muxviz =T 392 | ##################### Load packages ------------------------------------------------------- 393 | library(igraph) 394 | library(data.table) 395 | library(dplyr) 396 | library(magrittr) 397 | library(sp) 398 | library(geosphere) 399 | ############ 0. read GTFS files ----------------- 400 | # list_gtfs= list_of_gtfs_feeds 401 | # dist_threshold = 30 402 | cat("reading GTFS data \n") 403 | # function to read and rbind files from a list with different GTFS.zip 404 | tmpd <- tempdir() 405 | unzip_fread_gtfs <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character") } 406 | unzip_fread_routes <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('route_id', 'route_short_name', 'route_type', 'route_long_name')) } 407 | unzip_fread_trips <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('route_id', 'service_id', 'trip_id', 'direction_id')) } 408 | unzip_fread_stops <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('stop_id', 'stop_name', 'stop_lat', 'stop_lon', 'parent_station', 'location_type')) } 409 | unzip_fread_stoptimes <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('trip_id', 'arrival_time', 'departure_time', 'stop_id', 'stop_sequence')) } 410 | # Read 411 | stops <- lapply( list_gtfs , unzip_fread_stops, file="stops.txt") %>% rbindlist() 412 | stop_times <- lapply( list_gtfs , unzip_fread_stoptimes, file="stop_times.txt") %>% rbindlist() 413 | routes <- lapply( list_gtfs , unzip_fread_routes, file="routes.txt") %>% rbindlist() 414 | trips <- lapply( list_gtfs , unzip_fread_trips, file="trips.txt") %>% rbindlist() 415 | calendar <- lapply( list_gtfs , unzip_fread_gtfs, file="calendar.txt") %>% rbindlist() 416 | # make sure lat long are numeric, and text is encoded 417 | stops[, stop_lon := as.numeric(stop_lon) ][, stop_lat := as.numeric(stop_lat) ] 418 | Encoding(stops$stop_name) <- "UTF-8" 419 | ############ 1. Identify stops that closee than distance Threshold in meters ------------------ 420 | cat("calculating distances between stops \n") 421 | ### Convert stops into SpatialPointsDataFrame 422 | # lat long projection 423 | myprojection_latlong <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0") 424 | # convert stops into spatial points 425 | coordinates(stops) <- c("stop_lon", "stop_lat") 426 | proj4string(stops) <- myprojection_latlong 427 | stops <- spTransform(stops, myprojection_latlong) 428 | # use the distm function to generate a geodesic distance matrix in meters 429 | mdist <- distm(stops, stops, fun=distHaversine) 430 | # cluster all points using a hierarchical clustering approach 431 | hc <- hclust(as.dist(mdist), method="complete") 432 | # define clusters based on a tree "height" cutoff "d" and add them to the SpDataFrame 433 | stops@data$clust <- cutree(hc, h=dist_threshold) 434 | gc(reset = T) 435 | # convert stops back into data frame 436 | df <- as.data.frame(stops) %>% setDT() 437 | df <- df[order(clust)] 438 | df <- unique(df) # remove duplicate of identical stops 439 | head(df) 440 | # identify how many stops per cluster 441 | df[, quant := .N, by = clust] 442 | table(df$quant) 443 | plot(df$stop_lon, df$stop_lat, col=df$clust) 444 | ############ 2. Identify and update Parent Stations ------------------ 445 | cat("Identifying and updating Parent Stations \n") 446 | # How many stops have a Parent Station 447 | nrow(df[ parent_station !=""]) 448 | # How many stops without Parent Station 449 | nrow(df[ parent_station ==""]) 450 | # Stops which are Parent Stations (location_type==1) will be Parent Stations of themselves 451 | df[ location_type==1, parent_station := stop_id ] 452 | # in case the field location_type is missinformed 453 | df[ parent_station=="" & stop_id %in% df$parent_station, parent_station := stop_id ] 454 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 455 | ifelse( parent_station=="" & stop_id %in% df$parent_station, stop_id, "")), by=clust] 456 | #total number of stops without Parent Station 457 | nrow(df[ parent_station ==""]) 458 | # Update Parent Stations for each cluster 459 | # a) Stops which alread have parent stations stay the same 460 | # b) stations with no parent, will receive the parent of the cluster 461 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 462 | ifelse( parent_station=="", max(parent_station), "")), by=clust] 463 | nrow(df[ parent_station ==""]) 464 | # d) For those clusters with no parent stations, get the 1st stop to be a Parent 465 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 466 | ifelse( parent_station== "", stop_id[1L], "")), by=clust] 467 | nrow(df[ parent_station ==""]) 468 | # all clusters > 1 have a parent station 469 | df[quant > 1 & parent_station==""][order(clust)] # should be empty 470 | # Remaining stops without Parent Station 471 | nrow(df[ parent_station ==""]) 472 | # make sure parent stations are consistent within each cluster with more than one stop 473 | df[ quant > 1 , parent_station := max(parent_station), by=clust] 474 | unique(df$parent_station) %>% length() 475 | # for the lonly stops, make sure they are the Parent station of themselves 476 | df[ quant ==1 & parent_station=="" , parent_station := stop_id , by=stop_id] 477 | nrow(df[ parent_station ==""]) == 0 478 | ############ 3. Update Lat long of stops based on parent_station ----------------------- 479 | # Update in stops data: get lat long to be the same as 1st Parent Station 480 | df[, stop_lon := stop_lon[1], by=parent_station] 481 | df[, stop_lat := stop_lat[1], by=parent_station] 482 | # Update in stop_times data: get lat long to be the same as 1st Parent Station 483 | # Add parent_station info to stop_times 484 | # merge stops and stop_times based on correspondence btwn stop_times$stop_id and df$stop_id 485 | stop_times[df, on= 'stop_id', c('clust', 'parent_station') := list(i.clust, i.parent_station) ] 486 | # CRUX: Replace stop_id with parent_station 487 | stop_times[ !is.na(parent_station) , stop_id := parent_station ] 488 | df[ , stop_id := parent_station ] 489 | # remove repeated stops 490 | df <- unique(df) 491 | ############ 4. identify transport modes, route and service level for each trip ----------------------- 492 | routes <- routes[,.(route_id, route_type)] # keep only necessary cols 493 | trips <- trips[,.(route_id, trip_id, service_id)] # keep only necessary cols 494 | trips[routes, on=.(route_id), route_type := i.route_type] # add route_type to trips 495 | # add these columns to stop_times: route_id, route_type, service_id 496 | stop_times[trips, on=.(trip_id), c('route_id', 'route_type', 'service_id') := list(i.route_id, i.route_type, i.service_id) ] 497 | gc(reset = T) 498 | # # Only keep trips during weekdays 499 | # # remove columns with weekends 500 | # calendar <- calendar[, -c('saturday', 'sunday')] 501 | # 502 | # # keep only rows that are not zero (i.e. that have service during weekday) 503 | # calendar <- calendar[rowMeans(calendar >0)==T,] 504 | # 505 | # # Only keep those trips which run on weekdays 506 | # stop_times2 <- subset(stop_times, service_id %in% calendar$service_id) 507 | stops_edited <- df[, .(stop_id, stop_name, parent_station, location_type, stop_lon, stop_lat)] 508 | stop_times_edited <- stop_times[, .(route_type, route_id, trip_id, stop_id, stop_sequence, arrival_time, departure_time)] 509 | stop_times_edited[, stop_sequence := as.numeric(stop_sequence) ] 510 | head(stop_times_edited) 511 | stop_times_edited[order(trip_id, stop_sequence, route_id)] %>% head 512 | stop_times_edited[order(trip_id, stop_sequence, route_id)] %>% head 513 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gtfs_to_igraph 2 | 3 | ## This repo presents a function convert a GTFS feed (or a list of GTFS feeds) into an `igraph` object for network analysis in `R`. 4 | 5 | 6 | ### Workflow 7 | The workflow of the function is as follows: 8 | - Step 0: Read the GTFS data into memory 9 | - Steps 1 to 3: Identify and merge stops that are closer than a distance threshold (meters). This threshold is set by the user 10 | - Step 4: Identify transport modes, route and service level for each trip 11 | - Step 5: Indentify links between stops 12 | - Step 6: Build igraph (L-space representation). As it stands, the script returns a graph with information on route frequecy and on travel time for each link that can be used to calculate weighted metrics 13 | - Step 7 (optional): the script creates a subdirectory and saves the input files to use in [MuxViz](https://github.com/manlius/muxViz) 14 | 15 | 16 | 17 | ### Input 18 | This function needs three inputs: 19 | - list with one or more files `gtfs.zip` 20 | - a distance threshold set in meters 21 | - a logic value indicating whether you want to save input files to use latter in MuxViz 22 | 23 | obs. This function was tested using the GTFS of Las Vegas, USA, downloaded on Oct. 2017. This file is made available in the GitHub repo but it can also be downloaded by running this line in `R`: 24 | 25 | `download.file(url="http://rtcws.rtcsnv.com/g/google_transit.zip", destfile = "google_transit.zip")` 26 | 27 | 28 | ### How to use the function 29 | ``` 30 | # set working Directory 31 | setwd("R:/Dropbox/github/gtfs_to_igraph") 32 | 33 | # get a list of GTFS.zip files 34 | my_gtfs_feeds <- list.files(path = ".", pattern =".zip", full.names = T) 35 | 36 | # load function 37 | source("gtfs_to_igraph.R") 38 | 39 | # run function 40 | g <- gtfs_to_igraph(list_gtfs = my_gtfs_feeds, dist_threshold =30 , save_muxviz =T) 41 | ``` 42 | 43 | 44 | ### Next steps: looking for collaborators :) 45 | - Allow the option whether graph is weighted by route frequency or by travel time 46 | - Allow the option to build a multilayer network where each (route? or each transport mode?) is a different layer 47 | 48 | 49 | ### Related projects which I still need to learn from: 50 | 51 | - [Mateo Neira](https://mateoneira.github.io/) has similar project in `Pyhton`, [here](https://mateoneira.github.io//transport_networks/). 52 | - [Sandro Souza](https://twitter.com/sandrofsousa) has written a [Python script to study some properties and robustness of the public transport network of São Paulo](https://github.com/sandrofsousa/PTN). This was for his Masters dissertation, which it's available in Portuguese [here](https://www.researchgate.net/publication/304946197_Estudo_das_propriedades_e_robustez_da_rede_de_transporte_publico_de_Sao_Paulo) 53 | - [Tyler Green](http://www.tyleragreen.com/) has a similar project in `Java` [to study transit system design using graph theory](https://github.com/tyleragreen/gtfs-graph). 54 | - Last but not least, [Manlio De Domenico](http://deim.urv.cat/~manlio.dedomenico/index.php) has created [MuxViz, which is well advanced platform for the visualization and the analysis of interconnected multilayer networks in `R`](https://github.com/manlius/muxViz). 55 | -------------------------------------------------------------------------------- /google_transit.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafapereirabr/gtfs_to_igraph/3ae5021907a8402aa936c04e88b5afe55252896d/google_transit.zip -------------------------------------------------------------------------------- /gtfs_to_igraph.R: -------------------------------------------------------------------------------- 1 | 2 | 3 | ############################################################################################## 4 | ################### This script brings a function to convert a list ################### 5 | ################### of GTFS.zip files into an igraph for network analysis ################### 6 | ############################################################################################## 7 | # github repo: https://github.com/rafapereirabr/gtfs_to_igraph 8 | 9 | 10 | 11 | 12 | ##################### Load packages ------------------------------------------------------- 13 | 14 | library(igraph) 15 | library(data.table) 16 | library(dplyr) 17 | library(magrittr) 18 | library(sp) 19 | library(geosphere) 20 | library(fasttime) 21 | 22 | 23 | 24 | 25 | ### Start Function 26 | 27 | gtfs_to_igraph <- function( list_gtfs, dist_threshold, save_muxviz){ 28 | 29 | 30 | ############ 0. read GTFS files ----------------- 31 | 32 | # list_gtfs= my_gtfs_feeds 33 | # dist_threshold = 30 34 | 35 | 36 | cat("reading GTFS data \n") 37 | 38 | # function to read and rbind files from a list with different GTFS.zip 39 | tmpd <- tempdir() 40 | unzip_fread_gtfs <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character") } 41 | unzip_fread_routes <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('route_id', 'route_short_name', 'route_type', 'route_long_name')) } 42 | unzip_fread_trips <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('route_id', 'service_id', 'trip_id', 'direction_id')) } 43 | unzip_fread_stops <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('stop_id', 'stop_name', 'stop_lat', 'stop_lon', 'parent_station', 'location_type')) } 44 | unzip_fread_stoptimes <- function(zip, file) { unzip(zip, file, exdir=tmpd) %>% fread(colClasses = "character", select= c('trip_id', 'arrival_time', 'departure_time', 'stop_id', 'stop_sequence')) } 45 | 46 | # Read 47 | stops <- lapply( list_gtfs , unzip_fread_stops, file="stops.txt") %>% rbindlist() 48 | stop_times <- lapply( list_gtfs , unzip_fread_stoptimes, file="stop_times.txt") %>% rbindlist() 49 | routes <- lapply( list_gtfs , unzip_fread_routes, file="routes.txt") %>% rbindlist() 50 | trips <- lapply( list_gtfs , unzip_fread_trips, file="trips.txt") %>% rbindlist() 51 | calendar <- lapply( list_gtfs , unzip_fread_gtfs, file="calendar.txt") %>% rbindlist() 52 | 53 | # make sure lat long are numeric, and text is encoded 54 | stops[, stop_lon := as.numeric(stop_lon) ][, stop_lat := as.numeric(stop_lat) ] 55 | Encoding(stops$stop_name) <- "UTF-8" 56 | 57 | 58 | 59 | ############ 1. Identify stops that closee than distance Threshold in meters ------------------ 60 | cat("calculating distances between stops \n") 61 | 62 | ### Convert stops into SpatialPointsDataFrame 63 | 64 | # lat long projection 65 | myprojection_latlong <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0") 66 | 67 | # convert stops into spatial points 68 | coordinates(stops) <- c("stop_lon", "stop_lat") 69 | proj4string(stops) <- myprojection_latlong 70 | stops <- spTransform(stops, myprojection_latlong) 71 | 72 | # use the distm function to generate a geodesic distance matrix in meters 73 | mdist <- distm(stops, stops, fun=distHaversine) 74 | 75 | 76 | # cluster all points using a hierarchical clustering approach 77 | hc <- hclust(as.dist(mdist), method="complete") 78 | 79 | # define clusters based on a tree "height" cutoff "d" and add them to the SpDataFrame 80 | stops@data$clust <- cutree(hc, h=dist_threshold) 81 | gc(reset = T) 82 | 83 | 84 | # convert stops back into data frame 85 | df <- as.data.frame(stops) %>% setDT() 86 | df <- df[order(clust)] 87 | df <- unique(df) # remove duplicate of identical stops 88 | head(df) 89 | 90 | # identify how many stops per cluster 91 | df[, quant := .N, by = clust] 92 | table(df$quant) 93 | 94 | 95 | plot(df$stop_lon, df$stop_lat, col=df$clust) 96 | 97 | 98 | 99 | 100 | 101 | ############ 2. Identify and update Parent Stations ------------------ 102 | 103 | cat("Identifying and updating Parent Stations \n") 104 | 105 | 106 | # How many stops have a Parent Station 107 | nrow(df[ parent_station !=""]) 108 | 109 | 110 | # How many stops without Parent Station 111 | nrow(df[ parent_station ==""]) 112 | 113 | 114 | # Stops which are Parent Stations (location_type==1) will be Parent Stations of themselves 115 | df[ location_type==1, parent_station := stop_id ] 116 | 117 | # in case the field location_type is missinformed 118 | df[ parent_station=="" & stop_id %in% df$parent_station, parent_station := stop_id ] 119 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 120 | ifelse( parent_station=="" & stop_id %in% df$parent_station, stop_id, "")), by=clust] 121 | 122 | #total number of stops without Parent Station 123 | nrow(df[ parent_station ==""]) 124 | 125 | 126 | 127 | 128 | # Update Parent Stations for each cluster 129 | 130 | # a) Stops which alread have parent stations stay the same 131 | 132 | # b) stations with no parent, will receive the parent of the cluster 133 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 134 | ifelse( parent_station=="", max(parent_station), "")), by=clust] 135 | 136 | nrow(df[ parent_station ==""]) 137 | 138 | 139 | # d) For those clusters with no parent stations, get the 1st stop to be a Parent 140 | df[ quant > 1 , parent_station:= ifelse( parent_station !="" , parent_station, 141 | ifelse( parent_station== "", stop_id[1L], "")), by=clust] 142 | 143 | nrow(df[ parent_station ==""]) 144 | 145 | # all clusters > 1 have a parent station 146 | df[quant > 1 & parent_station==""][order(clust)] # should be empty 147 | 148 | 149 | # Remaining stops without Parent Station 150 | nrow(df[ parent_station ==""]) 151 | 152 | 153 | # make sure parent stations are consistent within each cluster with more than one stop 154 | df[ quant > 1 , parent_station := max(parent_station), by=clust] 155 | unique(df$parent_station) %>% length() 156 | 157 | 158 | # for the lonly stops, make sure they are the Parent station of themselves 159 | df[ quant ==1 & parent_station=="" , parent_station := stop_id , by=stop_id] 160 | nrow(df[ parent_station ==""]) == 0 161 | 162 | 163 | 164 | 165 | ############ 3. Update Lat long of stops based on parent_station ----------------------- 166 | 167 | 168 | # Update in stops data: get lat long to be the same as 1st Parent Station 169 | df[, stop_lon := stop_lon[1], by=parent_station] 170 | df[, stop_lat := stop_lat[1], by=parent_station] 171 | 172 | 173 | 174 | # Update in stop_times data: get lat long to be the same as 1st Parent Station 175 | 176 | 177 | # Add parent_station info to stop_times 178 | # merge stops and stop_times based on correspondence btwn stop_times$stop_id and df$stop_id 179 | stop_times[df, on= 'stop_id', c('clust', 'parent_station') := list(i.clust, i.parent_station) ] 180 | 181 | 182 | 183 | # CRUX: Replace stop_id with parent_station 184 | stop_times[ !is.na(parent_station) , stop_id := parent_station ] 185 | df[ , stop_id := parent_station ] 186 | 187 | # remove repeated stops 188 | df <- unique(df) 189 | 190 | 191 | 192 | 193 | ############ 4. identify transport modes, route and service level for each trip ----------------------- 194 | 195 | routes <- routes[,.(route_id, route_type)] # keep only necessary cols 196 | trips <- trips[,.(route_id, trip_id, service_id)] # keep only necessary cols 197 | trips[routes, on=.(route_id), route_type := i.route_type] # add route_type to trips 198 | 199 | # add these columns to stop_times: route_id, route_type, service_id 200 | stop_times[trips, on=.(trip_id), c('route_id', 'route_type', 'service_id') := list(i.route_id, i.route_type, i.service_id) ] 201 | gc(reset = T) 202 | 203 | 204 | # # Only keep trips during weekdays 205 | # # remove columns with weekends 206 | # calendar <- calendar[, -c('saturday', 'sunday')] 207 | # 208 | # # keep only rows that are not zero (i.e. that have service during weekday) 209 | # calendar <- calendar[rowMeans(calendar >0)==T,] 210 | # 211 | # # Only keep those trips which run on weekdays 212 | # stop_times2 <- subset(stop_times, service_id %in% calendar$service_id) 213 | 214 | 215 | 216 | # Get edited info for stop_times and stops 217 | stops_edited <- df[, .(stop_id, stop_name, parent_station, location_type, stop_lon, stop_lat)] 218 | stop_times_edited <- stop_times[, .(route_type, route_id, trip_id, stop_id, stop_sequence, arrival_time, departure_time)] 219 | 220 | # make sure stop_sequence is numeric 221 | stop_times_edited[, stop_sequence := as.numeric(stop_sequence) ] 222 | 223 | 224 | # make sure stops are in the right sequence for each group (in this case, each group is a trip_id) 225 | setorder(stop_times_edited, trip_id, stop_sequence, route_id) 226 | 227 | gc(reset = T) 228 | 229 | 230 | 231 | 232 | 233 | ############ 5. Indentify links between stops ----------------- 234 | cat("Identifying links between stops \n") 235 | 236 | 237 | # calculate travel-time (in minutes) between stops 238 | 239 | # Convert times to POSIX to do calculations 240 | stop_times_edited[, arrival_time := paste("2000-01-01",arrival_time) ] # add full date. The date doesnt' matter much 241 | stop_times_edited[, arrival_time := fastPOSIXct(arrival_time) ] # fast conversion to POSIX 242 | 243 | # calculate travel time (in minutes) between stops 244 | stop_times_edited[ , travel_time := difftime( data.table::shift(arrival_time, type = "lead"), arrival_time, units="mins") , by=trip_id][ , travel_time := as.numeric(travel_time) ] 245 | 246 | 247 | # create three new columns by shifting the stop_id, arrival_time and departure_time of the following row up 248 | # you can do the same operation on multiple columns at the same time 249 | stop_times_edited[, `:=`(stop_id_to = shift(stop_id, type = "lead"), 250 | arrival_time_stop_to = shift(arrival_time, type = "lead"), 251 | departure_time_stop_to = shift(departure_time, type = "lead") 252 | ), 253 | by = .(trip_id, route_id)] 254 | 255 | # you will have NAs at this point because the last stop doesn't go anywhere. Let's remove them 256 | stop_times_edited <- na.omit(stop_times_edited) 257 | 258 | # frequency of trips per route (weight) 259 | relations <- stop_times_edited[, .(weight = .N), by= .(stop_id, stop_id_to, route_id, route_type)] 260 | relations <- unique(relations) 261 | 262 | # reorder columns 263 | setcolorder(relations, c('stop_id', 'stop_id_to', 'weight', 'route_id', 'route_type')) 264 | 265 | 266 | # now we have 'from' and 'to' columns from which we can create an igraph 267 | head(relations) 268 | 269 | # plot densit distribution of trip frequency 270 | density(relations$weight) %>% plot() 271 | 272 | 273 | # subset stop columns 274 | temp_stops <- stops_edited[, .(stop_id, stop_lon, stop_lat)] # 275 | temp_stops <- unique(temp_stops) 276 | 277 | 278 | # remove stops with no connections, and remove connections with ghost stops 279 | e <- unique(c(relations$stop_id, relations$stop_id_to)) 280 | v <- unique(temp_stops$stop_id) 281 | 282 | d <- setdiff(v,e) # stops in vertex data frame that are not present in edges data 283 | dd <- setdiff(e,v) # stops in edges data frame that are not present in vertex data 284 | 285 | temp_stops <- temp_stops[ !(stop_id %in% d) ] # stops with no connections 286 | relations <- relations[ !(stop_id %in% dd) ] # trips with ghost stops 287 | relations <- relations[ !(stop_id_to %in% dd) ] # trips with ghost stops 288 | 289 | 290 | 291 | ####### Overview of the network being built 292 | 293 | cat("Number of nodes:", unique(relations$stop_id) %>% length(), " \n") 294 | cat("Number of Edges:", nrow(relations), " \n") 295 | cat("Number of routes:", unique(relations$route_id) %>% length(), " \n") 296 | 297 | 298 | 299 | 300 | ############ 6. Build igraph --------------------- 301 | cat("building igraph \n") 302 | 303 | g <- graph_from_data_frame(relations, directed=TRUE, vertices=temp_stops) 304 | 305 | 306 | 307 | 308 | ############ 7. Save MuxViz input ---------------------------------- 309 | 310 | cat("saving muxviz input \n") 311 | 312 | if (save_muxviz==T){ 313 | 314 | # create directory where input files to muxviz will be saved 315 | dir.create(file.path(".", "muxviz_input"), showWarnings = FALSE) 316 | 317 | # stops 318 | names(temp_stops) <- c('nodeID', 'nodeLong', 'nodeLat') 319 | temp_stops[, nodeLabel := nodeID] 320 | setcolorder(temp_stops, c('nodeID', 'nodeLabel', 'nodeLong', 'nodeLat')) 321 | 322 | fwrite( temp_stops, "./muxviz_input/stops_layout.txt") 323 | 324 | # Edges 325 | #recode route type by tranport mode 326 | relations[, route_type := ifelse(route_type==0, "LightRail", ifelse(route_type==1, "Subway", ifelse(route_type==2, "Rail", 327 | ifelse(route_type==3, "Bus", ifelse(route_type==4, "Ferry", 328 | ifelse(route_type==5, "Tramway", ifelse(route_type==6, "CableCar", 329 | ifelse(route_type==7, "Funicular", "ERROR"))))))))] 330 | 331 | # save links data for each tranport mode in a separate .txt file 332 | cols_to_save <- c('stop_id', 'stop_id_to', 'weight') 333 | relations[, fwrite(.SD, paste0("./muxviz_input/edge_list_", route_type ,".txt"), 334 | col.names = F, sep = " "), by = route_type, .SDcols= cols_to_save] 335 | 336 | # create Input file 337 | edge_files <- list.files("./muxviz_input", pattern="edge_list", full.names=F) 338 | layout_file <- list.files("./muxviz_input", pattern="layout", full.names=F) 339 | 340 | input_file <- data.frame(a= edge_files, b = NA, c=layout_file) 341 | input_file$a <- input_file$a 342 | input_file$b <- gsub('^.*_\\s*|\\s*.t.*$', '', input_file$a) 343 | input_file$c <- input_file$c 344 | fwrite(x=input_file, file="./muxviz_input/input_Muxviz.txt" ,col.names = F, sep = ";" ) 345 | } 346 | 347 | # return graph 348 | return(g) 349 | 350 | } 351 | 352 | 353 | -------------------------------------------------------------------------------- /muxviz_input/edge_list_Bus.txt: -------------------------------------------------------------------------------- 1 | 6650 6675 157 2 | 6675 6082 157 3 | 6082 6395 157 4 | 6395 6083 157 5 | 6083 5477 157 6 | 5477 6396 157 7 | 6396 6057 157 8 | 6057 6086 157 9 | 6086 6123 157 10 | 6123 5501 157 11 | 5501 4370 157 12 | 4370 3215 157 13 | 3215 3216 157 14 | 3216 3217 157 15 | 3217 3218 157 16 | 3218 2236 157 17 | 2236 2200 157 18 | 2200 2198 157 19 | 2198 2247 157 20 | 2247 2234 157 21 | 2234 2194 157 22 | 2194 2222 157 23 | 2222 2196 157 24 | 2196 2197 157 25 | 2197 2228 157 26 | 2228 2218 157 27 | 2218 2219 157 28 | 2219 2192 157 29 | 2192 2186 157 30 | 2186 2209 157 31 | 2209 2181 157 32 | 2181 2255 157 33 | 2255 2230 157 34 | 2230 2252 157 35 | 2252 4039 157 36 | 4039 2250 157 37 | 2250 2202 157 38 | 2202 2210 157 39 | 2210 3219 157 40 | 3219 2231 157 41 | 2231 2261 157 42 | 2261 2223 157 43 | 2223 2213 157 44 | 2213 2188 157 45 | 2188 2185 157 46 | 2185 2204 157 47 | 2204 2226 157 48 | 2226 2179 157 49 | 2179 2257 157 50 | 2257 5690 157 51 | 5690 5691 157 52 | 5691 1618 157 53 | 6671 6672 164 54 | 6672 6721 164 55 | 6721 6722 164 56 | 6722 6673 164 57 | 6673 6674 164 58 | 6674 6650 164 59 | 1618 2225 153 60 | 2225 2178 153 61 | 2178 2258 153 62 | 2258 2180 153 63 | 2180 2227 153 64 | 2227 2260 153 65 | 2260 2259 153 66 | 2259 2189 153 67 | 2189 2214 153 68 | 2214 2224 153 69 | 2224 2262 153 70 | 2262 2232 153 71 | 2232 3220 153 72 | 3220 2211 153 73 | 2211 5109 153 74 | 5109 2251 153 75 | 2251 4038 153 76 | 4038 2253 153 77 | 2253 2254 153 78 | 2254 2256 153 79 | 2256 2182 153 80 | 2182 2208 153 81 | 2208 2187 153 82 | 2187 2193 153 83 | 2193 2220 153 84 | 2220 2217 153 85 | 2217 2229 153 86 | 2229 2241 153 87 | 2241 5833 153 88 | 5833 2190 153 89 | 2190 2195 153 90 | 2195 2235 153 91 | 2235 2249 153 92 | 2249 2199 153 93 | 2199 2201 153 94 | 2201 2239 153 95 | 2239 2237 153 96 | 2237 2245 153 97 | 2245 2207 153 98 | 2207 3221 153 99 | 3221 5413 153 100 | 5413 6125 153 101 | 6125 6052 153 102 | 6052 6126 153 103 | 6126 5500 153 104 | 5500 6072 153 105 | 6072 6127 153 106 | 6127 6139 153 107 | 6139 6665 153 108 | 6665 6666 153 109 | 6666 6667 153 110 | 6667 6668 153 111 | 6668 6669 153 112 | 6669 6670 153 113 | 6670 6671 153 114 | 5415 5504 129 115 | 5504 5506 129 116 | 5506 5507 129 117 | 5507 5508 129 118 | 5508 1227 129 119 | 1227 1180 129 120 | 1180 3222 129 121 | 3222 1215 129 122 | 1215 1195 129 123 | 1195 1234 129 124 | 1234 1231 129 125 | 1231 1222 129 126 | 1222 1185 129 127 | 1185 1182 129 128 | 1182 1224 129 129 | 1224 1205 129 130 | 1205 1217 129 131 | 1217 1209 129 132 | 1209 1210 129 133 | 1210 1225 129 134 | 1225 1176 129 135 | 1176 1192 129 136 | 1192 1169 129 137 | 1169 1194 129 138 | 1194 1178 129 139 | 1178 1198 129 140 | 1198 1237 129 141 | 1237 1173 129 142 | 1173 1232 129 143 | 1232 1171 129 144 | 1171 1203 129 145 | 1203 1190 129 146 | 1190 1220 129 147 | 1220 1168 129 148 | 1168 1219 129 149 | 1219 1201 129 150 | 1201 4427 118 151 | 4427 4428 118 152 | 4428 4430 118 153 | 4430 4431 118 154 | 4431 4432 118 155 | 4432 4433 118 156 | 4433 3960 118 157 | 1201 567 11 158 | 3960 2286 122 159 | 2286 2321 122 160 | 2321 6489 122 161 | 6489 4437 122 162 | 4437 4438 122 163 | 4438 4439 122 164 | 4439 4441 122 165 | 4441 1179 122 166 | 1179 1202 127 167 | 1202 1214 127 168 | 1214 1175 127 169 | 1175 1221 127 170 | 1221 1191 127 171 | 1191 1204 127 172 | 1204 1172 127 173 | 1172 1233 127 174 | 1233 1174 127 175 | 1174 1238 127 176 | 1238 1178 127 177 | 1178 1189 127 178 | 1189 1183 127 179 | 1183 1169 127 180 | 1169 1193 127 181 | 1193 1177 127 182 | 1177 1226 127 183 | 1226 1211 127 184 | 1211 1208 127 185 | 1208 1218 127 186 | 1218 1188 127 187 | 1188 1187 127 188 | 1187 1212 127 189 | 1212 1186 127 190 | 1186 1223 127 191 | 1223 1230 127 192 | 1230 1235 127 193 | 1235 1196 127 194 | 1196 1199 127 195 | 1199 1200 127 196 | 1200 1228 127 197 | 1228 2806 127 198 | 2806 5415 127 199 | 6551 5970 194 200 | 5970 5971 194 201 | 5971 5972 194 202 | 5972 5973 194 203 | 5973 5974 194 204 | 5974 3234 194 205 | 3234 3902 194 206 | 3902 3236 194 207 | 3236 747 194 208 | 747 735 194 209 | 735 3224 194 210 | 3224 750 194 211 | 750 733 194 212 | 733 713 194 213 | 713 745 194 214 | 745 748 194 215 | 748 743 194 216 | 743 701 194 217 | 701 740 194 218 | 740 727 194 219 | 727 706 194 220 | 706 737 194 221 | 737 722 194 222 | 722 724 194 223 | 724 712 194 224 | 712 690 194 225 | 690 715 194 226 | 715 691 194 227 | 691 5883 194 228 | 5883 693 194 229 | 693 754 194 230 | 754 756 194 231 | 756 751 194 232 | 751 699 194 233 | 699 718 194 234 | 718 709 194 235 | 709 741 194 236 | 741 731 194 237 | 731 2290 194 238 | 2290 728 194 239 | 728 698 194 240 | 698 5717 194 241 | 5717 730 194 242 | 730 696 194 243 | 696 688 194 244 | 688 739 194 245 | 739 5407 194 246 | 5407 4222 194 247 | 4222 4223 194 248 | 4223 4224 194 249 | 4224 4233 194 250 | 4233 5408 194 251 | 5408 5531 194 252 | 5531 6520 194 253 | 6520 5533 194 254 | 5533 6644 194 255 | 6644 5433 194 256 | 5433 5510 191 257 | 5510 5511 191 258 | 5511 5513 191 259 | 5513 5432 191 260 | 5432 5514 191 261 | 5514 5515 191 262 | 5515 5516 191 263 | 5516 5517 191 264 | 5517 5518 191 265 | 5518 5409 191 266 | 5409 5520 191 267 | 5520 5521 191 268 | 5521 5522 191 269 | 5522 5523 191 270 | 5523 5524 191 271 | 5524 5525 191 272 | 5525 3642 191 273 | 3642 5526 191 274 | 5526 5527 191 275 | 5527 742 191 276 | 742 710 191 277 | 710 719 191 278 | 719 703 191 279 | 703 752 191 280 | 752 695 191 281 | 695 755 191 282 | 755 694 191 283 | 694 5882 191 284 | 5882 720 191 285 | 720 692 191 286 | 692 711 191 287 | 711 689 191 288 | 689 697 191 289 | 697 704 191 290 | 704 725 191 291 | 725 723 191 292 | 723 738 191 293 | 738 707 191 294 | 707 705 191 295 | 705 726 191 296 | 726 702 191 297 | 702 744 191 298 | 744 749 191 299 | 749 753 191 300 | 753 714 191 301 | 714 734 191 302 | 734 3225 191 303 | 3225 736 191 304 | 736 3226 191 305 | 3226 3227 191 306 | 3227 3802 191 307 | 3802 5975 191 308 | 5975 5967 191 309 | 5967 5968 191 310 | 5968 5969 191 311 | 5969 5995 191 312 | 5995 6551 191 313 | 4324 4184 116 314 | 4184 4172 116 315 | 4172 1385 116 316 | 1385 6532 116 317 | 6532 5102 116 318 | 5102 5103 116 319 | 5103 5105 116 320 | 5105 5106 116 321 | 5106 3230 116 322 | 3230 3231 116 323 | 3231 5107 116 324 | 5107 5108 116 325 | 5108 5042 116 326 | 5042 5043 116 327 | 5043 128 116 328 | 128 132 116 329 | 132 126 116 330 | 126 136 116 331 | 136 2875 116 332 | 2875 2890 116 333 | 2890 2947 116 334 | 2947 2944 116 335 | 2944 2922 116 336 | 2922 2942 116 337 | 2942 2935 116 338 | 2935 2940 116 339 | 2940 2925 116 340 | 2925 2937 116 341 | 2937 2931 116 342 | 2931 2948 116 343 | 2948 2934 116 344 | 2934 2919 116 345 | 2919 2929 116 346 | 2929 2915 116 347 | 2915 5130 116 348 | 5130 5863 116 349 | 5863 2918 116 350 | 2918 3103 116 351 | 3103 3079 116 352 | 3079 3090 116 353 | 3090 3092 116 354 | 3092 3119 116 355 | 3119 3141 116 356 | 3141 3106 116 357 | 3106 3100 116 358 | 3100 2769 116 359 | 2769 2749 116 360 | 2749 2767 116 361 | 2767 2760 116 362 | 2760 2758 116 363 | 2758 2741 116 364 | 2741 2546 116 365 | 2546 2531 116 366 | 2531 2539 116 367 | 2539 2543 123 368 | 2543 2737 123 369 | 2737 2735 123 370 | 2735 2730 123 371 | 2730 2734 123 372 | 2734 2733 123 373 | 2733 598 112 374 | 598 2189 112 375 | 2189 2214 119 376 | 2214 2224 119 377 | 2224 2262 119 378 | 2262 2538 119 379 | 2538 2530 119 380 | 2530 2764 119 381 | 2764 2742 119 382 | 2742 2759 119 383 | 2759 2747 119 384 | 2747 2768 119 385 | 2768 2748 119 386 | 2748 3150 119 387 | 3150 3099 119 388 | 3099 3105 119 389 | 3105 3140 119 390 | 3140 3118 119 391 | 3118 3120 119 392 | 3120 3090 119 393 | 3090 3102 119 394 | 3102 3640 119 395 | 3640 2917 119 396 | 2917 2918 119 397 | 2918 5863 119 398 | 5863 2932 119 399 | 2932 2916 119 400 | 2916 2930 119 401 | 2930 2920 119 402 | 2920 6373 119 403 | 6373 6374 119 404 | 6374 3237 119 405 | 3237 6398 119 406 | 6398 2939 119 407 | 2939 2936 119 408 | 2936 2943 119 409 | 2943 2923 119 410 | 2923 2945 119 411 | 2945 2889 119 412 | 2889 2891 119 413 | 2891 135 119 414 | 135 136 119 415 | 136 127 119 416 | 127 131 119 417 | 131 129 119 418 | 129 133 119 419 | 133 3931 119 420 | 3931 5094 119 421 | 5094 4043 119 422 | 4043 5095 119 423 | 5095 3932 119 424 | 3932 5096 119 425 | 5096 4188 119 426 | 4188 5536 119 427 | 5536 5688 119 428 | 5688 1389 119 429 | 1389 6531 119 430 | 6531 1386 119 431 | 1386 5876 119 432 | 5876 6371 119 433 | 6371 4324 119 434 | 6213 6330 178 435 | 6330 69 178 436 | 69 1635 178 437 | 1635 1672 178 438 | 1672 1669 178 439 | 1669 1665 178 440 | 1665 1639 178 441 | 1639 1675 178 442 | 1675 1664 178 443 | 1664 1667 178 444 | 1667 1658 178 445 | 1658 1661 178 446 | 1661 1637 178 447 | 1637 1645 178 448 | 1645 1656 178 449 | 1656 1659 178 450 | 1659 1671 178 451 | 1671 1643 178 452 | 1643 1649 178 453 | 1649 1641 178 454 | 1641 1653 178 455 | 1653 1677 178 456 | 1677 1633 178 457 | 1633 5369 178 458 | 5369 1651 178 459 | 1651 5541 178 460 | 5541 5542 178 461 | 5542 5543 178 462 | 5543 5544 178 463 | 5544 5712 178 464 | 5712 4013 178 465 | 4013 4014 186 466 | 4014 5367 186 467 | 5367 4015 186 468 | 4015 4016 186 469 | 4016 4017 186 470 | 4017 5372 186 471 | 5372 4018 186 472 | 4018 4013 186 473 | 4013 4020 186 474 | 4020 4021 186 475 | 4021 4022 186 476 | 4022 4023 186 477 | 4023 4024 186 478 | 4024 4025 186 479 | 4025 5410 186 480 | 5410 5538 180 481 | 5538 5539 180 482 | 5539 5540 180 483 | 5540 5541 180 484 | 5541 1652 180 485 | 1652 5370 180 486 | 5370 1634 180 487 | 1634 1670 180 488 | 1670 1654 180 489 | 1654 1642 180 490 | 1642 1650 180 491 | 1650 1644 180 492 | 1644 1660 180 493 | 1660 1657 180 494 | 1657 1646 180 495 | 1646 1638 180 496 | 1638 1662 180 497 | 1662 1678 180 498 | 1678 3212 180 499 | 3212 1676 180 500 | 1676 1640 180 501 | 1640 1666 180 502 | 1666 1672 180 503 | 1672 78 180 504 | 78 68 180 505 | 68 6213 180 506 | 6217 6522 148 507 | 6522 6530 148 508 | 6530 6521 148 509 | 6521 1700 148 510 | 1700 199 148 511 | 199 158 148 512 | 158 161 148 513 | 161 163 148 514 | 163 196 148 515 | 196 3665 148 516 | 3665 226 148 517 | 226 178 148 518 | 178 5440 148 519 | 5440 2296 148 520 | 2296 2333 148 521 | 2333 3242 148 522 | 3242 2330 148 523 | 2330 2300 148 524 | 2300 2283 148 525 | 2283 2303 148 526 | 2303 2278 156 527 | 2278 2270 156 528 | 2270 2290 156 529 | 2290 2288 156 530 | 2288 2281 146 531 | 2281 2301 146 532 | 2301 2298 146 533 | 2298 2292 146 534 | 2292 6231 146 535 | 6231 2302 146 536 | 2302 2285 146 537 | 2285 3643 146 538 | 3643 4450 139 539 | 4450 5547 139 540 | 5547 5548 139 541 | 5548 5549 139 542 | 5549 5411 139 543 | 5411 5551 139 544 | 5551 5552 139 545 | 5552 5555 81 546 | 5555 5554 81 547 | 5554 5556 81 548 | 5556 5412 81 549 | 5412 6002 81 550 | 6002 6003 81 551 | 6003 6004 81 552 | 6004 6005 81 553 | 6005 5561 81 554 | 5561 5562 81 555 | 5562 6059 81 556 | 6059 5475 81 557 | 5552 3907 58 558 | 3907 1035 58 559 | 1035 3908 58 560 | 3908 5735 58 561 | 5735 6392 58 562 | 6392 4453 58 563 | 4453 4275 58 564 | 4275 4454 58 565 | 4454 4455 58 566 | 4455 4456 58 567 | 4456 4457 58 568 | 4457 4458 58 569 | 4458 5195 58 570 | 5195 5197 58 571 | 5197 5199 58 572 | 5199 5200 58 573 | 5200 5201 58 574 | 5201 5202 58 575 | 5202 5203 58 576 | 5203 5204 58 577 | 5204 6128 58 578 | 6128 5474 58 579 | 3643 1618 7 580 | 5475 5702 68 581 | 5702 5564 68 582 | 5564 5416 68 583 | 5416 5567 68 584 | 5567 5568 68 585 | 5568 5569 68 586 | 5569 5570 68 587 | 5570 5737 68 588 | 5737 5572 68 589 | 5572 5573 68 590 | 5573 5574 68 591 | 5574 5575 68 592 | 5575 5997 68 593 | 5997 5998 68 594 | 5998 5999 68 595 | 5999 5576 68 596 | 5576 5577 68 597 | 5577 5734 68 598 | 5734 5578 68 599 | 5578 5545 68 600 | 5545 5546 135 601 | 5546 2183 135 602 | 2183 2233 135 603 | 2233 2242 135 604 | 2242 2327 135 605 | 2327 2306 135 606 | 2306 2316 142 607 | 2316 2286 142 608 | 2286 2321 142 609 | 2321 6489 142 610 | 6489 6232 142 611 | 6232 2293 142 612 | 2293 2299 142 613 | 2299 2311 142 614 | 2311 2282 152 615 | 2282 3642 152 616 | 3642 2291 152 617 | 2291 2312 152 618 | 2312 2328 152 619 | 2328 2304 152 620 | 2304 5709 152 621 | 5709 2284 152 622 | 2284 2308 152 623 | 2308 3245 152 624 | 3245 2331 152 625 | 2331 2325 152 626 | 2325 2334 152 627 | 2334 2297 152 628 | 2297 215 152 629 | 215 225 152 630 | 225 174 152 631 | 174 3666 152 632 | 3666 195 152 633 | 195 162 152 634 | 162 159 152 635 | 159 1683 152 636 | 1683 6521 152 637 | 6521 1685 152 638 | 1685 6217 152 639 | 5474 5206 61 640 | 5206 5207 61 641 | 5207 6006 61 642 | 6006 6007 61 643 | 6007 6008 61 644 | 6008 6009 61 645 | 6009 6010 61 646 | 6010 6372 61 647 | 6372 3835 61 648 | 3835 5553 61 649 | 5553 5677 61 650 | 5677 5545 61 651 | 1785 2716 164 652 | 2716 2725 164 653 | 2725 2720 164 654 | 2720 2718 164 655 | 2718 2722 164 656 | 2722 2717 164 657 | 2717 2721 164 658 | 2721 2727 164 659 | 2727 2723 164 660 | 2723 2724 164 661 | 2724 778 164 662 | 778 4064 164 663 | 4064 4066 164 664 | 4066 4068 164 665 | 4068 4070 164 666 | 4070 2069 164 667 | 2069 2068 164 668 | 2068 2067 164 669 | 2067 1695 164 670 | 1695 1702 164 671 | 1702 6112 164 672 | 6112 5460 164 673 | 5460 6119 164 674 | 6119 6158 164 675 | 6158 6207 164 676 | 6207 6120 164 677 | 6120 1688 164 678 | 1688 1694 164 679 | 1694 1703 164 680 | 1703 2596 164 681 | 2596 2056 164 682 | 2056 2069 164 683 | 2069 2073 164 684 | 2073 2066 164 685 | 2066 5454 164 686 | 5454 2059 164 687 | 2059 2071 164 688 | 2071 2070 164 689 | 2070 2058 164 690 | 2058 2061 164 691 | 2061 2063 164 692 | 2063 2064 164 693 | 2064 2065 164 694 | 2065 2072 164 695 | 2072 2062 164 696 | 2062 1785 164 697 | 6043 5878 316 698 | 5878 4184 316 699 | 4184 4341 316 700 | 4341 5390 316 701 | 5390 4342 316 702 | 4342 1785 316 703 | 1785 1756 316 704 | 1756 1740 316 705 | 1740 1758 316 706 | 1758 1774 316 707 | 1774 1778 316 708 | 1778 1742 316 709 | 1742 1760 316 710 | 1760 1733 316 711 | 1733 1721 316 712 | 1721 1747 316 713 | 1747 1776 316 714 | 1776 1768 316 715 | 1768 1766 316 716 | 1766 1773 316 717 | 1773 1715 316 718 | 1715 1780 316 719 | 1780 1749 316 720 | 1749 1763 316 721 | 1763 1720 316 722 | 1720 1754 316 723 | 1754 1737 316 724 | 1737 1726 316 725 | 1726 6393 316 726 | 6393 6394 316 727 | 6394 6347 316 728 | 6347 6213 316 729 | 6213 6397 317 730 | 6397 6192 317 731 | 6192 6193 317 732 | 6193 1726 317 733 | 1726 1736 317 734 | 1736 1754 317 735 | 1754 1769 317 736 | 1769 1764 317 737 | 1764 1746 317 738 | 1746 1781 317 739 | 1781 1772 317 740 | 1772 1732 317 741 | 1732 1767 317 742 | 1767 1777 317 743 | 1777 1748 317 744 | 1748 1734 317 745 | 1734 1735 317 746 | 1735 1730 317 747 | 1730 1743 317 748 | 1743 1779 317 749 | 1779 1775 317 750 | 1775 1759 317 751 | 1759 1741 317 752 | 1741 5720 317 753 | 5720 1785 317 754 | 1785 4372 317 755 | 4372 5381 317 756 | 5381 4119 317 757 | 4119 6026 317 758 | 6377 4485 193 759 | 4485 4486 193 760 | 4486 4301 193 761 | 4301 5341 193 762 | 5341 5915 193 763 | 5915 5916 193 764 | 5916 6348 193 765 | 6348 3598 193 766 | 3598 3655 193 767 | 3655 3257 193 768 | 3257 3258 193 769 | 3258 3259 193 770 | 3259 3260 193 771 | 3260 830 193 772 | 830 874 193 773 | 874 840 193 774 | 840 901 193 775 | 901 857 193 776 | 857 888 193 777 | 888 889 193 778 | 889 836 193 779 | 836 866 193 780 | 866 5836 193 781 | 5836 877 193 782 | 877 869 193 783 | 869 849 193 784 | 849 871 193 785 | 871 894 193 786 | 894 892 193 787 | 892 851 193 788 | 851 875 193 789 | 875 842 193 790 | 842 898 193 791 | 898 896 193 792 | 896 841 193 793 | 841 838 193 794 | 838 865 193 795 | 865 897 193 796 | 897 861 193 797 | 861 879 193 798 | 879 884 193 799 | 884 859 193 800 | 859 844 193 801 | 844 829 193 802 | 829 847 193 803 | 847 854 193 804 | 854 828 193 805 | 828 834 193 806 | 834 832 193 807 | 832 853 193 808 | 853 903 193 809 | 903 881 193 810 | 881 637 193 811 | 637 639 193 812 | 639 632 193 813 | 632 626 193 814 | 626 635 193 815 | 635 630 193 816 | 630 623 193 817 | 623 627 193 818 | 627 620 193 819 | 620 556 193 820 | 556 5403 211 821 | 5403 550 211 822 | 550 655 211 823 | 655 3685 223 824 | 3685 6379 223 825 | 6379 3688 223 826 | 3688 3689 223 827 | 618 619 194 828 | 619 628 194 829 | 628 624 194 830 | 624 622 194 831 | 622 631 194 832 | 631 636 194 833 | 636 633 194 834 | 633 640 194 835 | 640 863 194 836 | 863 882 194 837 | 882 904 194 838 | 904 856 194 839 | 856 833 194 840 | 833 835 194 841 | 835 886 194 842 | 886 887 194 843 | 887 846 194 844 | 846 837 194 845 | 837 845 194 846 | 845 860 194 847 | 860 885 194 848 | 885 880 194 849 | 880 855 194 850 | 855 864 194 851 | 864 848 194 852 | 848 839 194 853 | 839 868 194 854 | 868 891 194 855 | 891 899 194 856 | 899 843 194 857 | 843 876 194 858 | 876 852 194 859 | 852 893 194 860 | 893 895 194 861 | 895 872 194 862 | 872 850 194 863 | 850 870 194 864 | 870 878 194 865 | 878 862 194 866 | 862 867 194 867 | 867 890 194 868 | 890 5401 194 869 | 5401 900 194 870 | 900 902 194 871 | 902 5402 194 872 | 5402 873 194 873 | 873 831 194 874 | 831 3334 194 875 | 3334 3335 194 876 | 3335 3418 194 877 | 3418 3261 194 878 | 3261 3617 194 879 | 3617 3262 194 880 | 3262 5948 194 881 | 5948 3825 194 882 | 3825 5340 194 883 | 5340 4298 194 884 | 4298 4481 194 885 | 4481 6375 194 886 | 6375 6376 194 887 | 6376 6377 194 888 | 3689 618 182 889 | 4229 4218 131 890 | 4218 4369 131 891 | 4369 5584 45 892 | 5584 5706 45 893 | 5706 4413 45 894 | 4413 5587 45 895 | 5587 5213 45 896 | 5213 5707 45 897 | 5707 3298 45 898 | 3298 3299 45 899 | 3299 3300 45 900 | 3300 3301 45 901 | 3301 3302 87 902 | 3302 3303 87 903 | 3303 3304 87 904 | 3304 2681 87 905 | 2681 2659 87 906 | 2659 2700 87 907 | 2700 5722 87 908 | 5722 2136 87 909 | 2136 2123 131 910 | 2123 2121 131 911 | 2121 5035 131 912 | 5035 3832 131 913 | 3832 2131 131 914 | 2131 2120 131 915 | 2120 2107 131 916 | 2107 2128 131 917 | 2128 2139 131 918 | 2139 2137 131 919 | 2137 2109 131 920 | 2109 2130 131 921 | 2130 2101 131 922 | 2101 2141 131 923 | 2141 3268 131 924 | 3268 2117 131 925 | 2117 1788 131 926 | 1788 1792 131 927 | 1792 1797 131 928 | 1797 1790 131 929 | 1790 1793 131 930 | 1793 1795 131 931 | 1795 2594 131 932 | 2594 2598 131 933 | 2598 2045 131 934 | 2045 2042 131 935 | 2042 2096 131 936 | 2096 2133 131 937 | 2133 2085 131 938 | 2085 2099 131 939 | 2099 2089 131 940 | 2089 6493 131 941 | 6493 2142 131 942 | 2142 2115 131 943 | 2115 2118 131 944 | 2118 2125 131 945 | 2125 2112 131 946 | 2112 2086 131 947 | 2086 2091 131 948 | 2091 2093 131 949 | 2093 2084 131 950 | 2084 2105 131 951 | 2105 2111 131 952 | 2111 5954 69 953 | 5954 5953 69 954 | 5953 3269 69 955 | 3269 5391 131 956 | 5391 3270 131 957 | 3270 3895 131 958 | 3895 3502 131 959 | 3502 3927 123 960 | 3927 3929 123 961 | 3929 3274 109 962 | 4369 3996 86 963 | 3996 3997 86 964 | 3997 5275 86 965 | 5275 4303 86 966 | 4303 3805 86 967 | 3805 3282 86 968 | 3282 3283 86 969 | 3283 3263 86 970 | 3263 3264 86 971 | 3264 3265 86 972 | 3265 3266 86 973 | 3266 3267 44 974 | 3267 2136 44 975 | 3502 3503 8 976 | 3503 1571 8 977 | 3266 3053 42 978 | 3053 3045 42 979 | 3045 3453 42 980 | 3453 3043 42 981 | 3043 3301 42 982 | 3274 5393 137 983 | 5393 3275 137 984 | 3275 5394 137 985 | 5394 2106 137 986 | 2106 2098 137 987 | 2098 2097 137 988 | 2097 2114 137 989 | 2114 2083 137 990 | 2083 2094 137 991 | 2094 2092 137 992 | 2092 2087 137 993 | 2087 2113 137 994 | 2113 2126 137 995 | 2126 2119 137 996 | 2119 6496 137 997 | 6496 2143 137 998 | 2143 6494 137 999 | 6494 2090 137 1000 | 2090 2100 137 1001 | 2100 2134 137 1002 | 2134 2135 137 1003 | 2135 2043 137 1004 | 2043 2044 137 1005 | 2044 2597 137 1006 | 2597 2595 137 1007 | 2595 1789 137 1008 | 1789 1794 137 1009 | 1794 1791 137 1010 | 1791 1798 137 1011 | 1798 1796 137 1012 | 1796 2144 137 1013 | 2144 2145 137 1014 | 2145 2146 137 1015 | 2146 6648 137 1016 | 6648 6647 137 1017 | 6647 2116 137 1018 | 2116 2110 137 1019 | 2110 2138 137 1020 | 2138 2140 137 1021 | 2140 2095 137 1022 | 2095 2108 137 1023 | 2108 2120 137 1024 | 2120 2132 137 1025 | 2132 5093 137 1026 | 5093 2122 137 1027 | 2122 2124 137 1028 | 2124 2694 90 1029 | 2694 5723 90 1030 | 5723 2699 90 1031 | 2699 2658 90 1032 | 2658 1068 90 1033 | 1068 1056 90 1034 | 1056 1059 90 1035 | 1059 1063 90 1036 | 1063 1069 90 1037 | 1069 1064 90 1038 | 1064 1066 90 1039 | 1066 3420 90 1040 | 3420 3276 90 1041 | 3276 3277 90 1042 | 3277 3427 90 1043 | 3427 3343 90 1044 | 3343 4413 90 1045 | 4413 6478 90 1046 | 6478 4229 90 1047 | 2124 3998 47 1048 | 3998 3999 47 1049 | 3999 4000 47 1050 | 4000 4001 47 1051 | 4001 4002 47 1052 | 4002 4003 47 1053 | 4003 4004 47 1054 | 4004 5579 47 1055 | 5579 5580 47 1056 | 5580 5581 47 1057 | 5581 5583 47 1058 | 5583 5584 47 1059 | 5584 4229 47 1060 | 6228 35 312 1061 | 35 6201 312 1062 | 6201 1316 312 1063 | 1316 1269 312 1064 | 1269 1274 312 1065 | 1274 4183 312 1066 | 4183 6134 312 1067 | 6134 1307 312 1068 | 1307 1318 312 1069 | 1318 5051 312 1070 | 5051 1315 312 1071 | 1315 4280 312 1072 | 4280 4281 312 1073 | 4281 1300 312 1074 | 1300 4282 312 1075 | 4282 4283 312 1076 | 4283 1308 312 1077 | 1308 4284 312 1078 | 4284 4285 312 1079 | 4285 1291 312 1080 | 1291 4286 312 1081 | 4286 1310 312 1082 | 1310 4287 312 1083 | 4287 5606 233 1084 | 5606 5418 233 1085 | 5418 6688 233 1086 | 6688 4288 233 1087 | 4287 1881 79 1088 | 1881 679 79 1089 | 679 4288 79 1090 | 4288 4289 317 1091 | 4289 4290 317 1092 | 4290 1311 317 1093 | 1311 4291 317 1094 | 4291 4292 317 1095 | 4292 6185 317 1096 | 6185 4293 317 1097 | 4293 4294 317 1098 | 4294 6186 317 1099 | 6186 1266 317 1100 | 1266 4295 317 1101 | 4295 1301 317 1102 | 1301 4425 317 1103 | 4425 4296 317 1104 | 4296 4297 317 1105 | 4297 1314 317 1106 | 1314 5051 317 1107 | 5051 4322 317 1108 | 4322 1284 317 1109 | 1284 1326 317 1110 | 1326 1273 317 1111 | 1273 1268 317 1112 | 1268 1302 317 1113 | 1302 6154 317 1114 | 6154 1374 317 1115 | 1374 6228 317 1116 | 5278 5279 95 1117 | 5279 5280 95 1118 | 5280 5325 95 1119 | 5325 5281 95 1120 | 5281 5282 95 1121 | 5282 5283 95 1122 | 5283 5284 95 1123 | 5284 5285 95 1124 | 5285 5286 95 1125 | 5286 5287 95 1126 | 5287 6386 95 1127 | 6386 3464 95 1128 | 3464 5267 95 1129 | 5267 2607 95 1130 | 2607 2608 95 1131 | 2608 2602 95 1132 | 2602 2605 95 1133 | 2605 2601 95 1134 | 2601 2079 95 1135 | 2079 2078 95 1136 | 2078 5333 95 1137 | 5333 5721 95 1138 | 5721 5335 95 1139 | 5335 5603 95 1140 | 5603 5698 95 1141 | 5698 5699 95 1142 | 5699 5604 95 1143 | 5604 5605 95 1144 | 5605 1902 95 1145 | 1902 1901 192 1146 | 1901 1874 192 1147 | 1874 6491 192 1148 | 6491 1849 192 1149 | 1849 1870 192 1150 | 1870 1851 192 1151 | 1851 1904 192 1152 | 1904 1908 192 1153 | 1908 1862 192 1154 | 1862 1872 192 1155 | 1872 1906 192 1156 | 1906 1897 192 1157 | 1897 1894 192 1158 | 1894 1841 192 1159 | 1841 1889 192 1160 | 1889 1913 192 1161 | 1913 1857 192 1162 | 1857 1843 192 1163 | 1843 1899 192 1164 | 1899 5879 192 1165 | 5879 1847 192 1166 | 1847 1875 192 1167 | 1875 1911 192 1168 | 1911 1885 192 1169 | 1885 1890 192 1170 | 1890 1879 192 1171 | 1879 1883 192 1172 | 1883 1877 192 1173 | 1877 1853 192 1174 | 1853 1839 192 1175 | 1839 1855 192 1176 | 1855 1859 192 1177 | 1859 1866 192 1178 | 1866 1887 192 1179 | 1887 1835 192 1180 | 1835 1865 192 1181 | 1865 1837 192 1182 | 1837 1881 192 1183 | 1881 679 192 1184 | 679 677 192 1185 | 1903 1896 195 1186 | 1896 5595 195 1187 | 5595 6095 104 1188 | 6095 6096 104 1189 | 6096 3308 104 1190 | 3308 3309 104 1191 | 3309 3507 104 1192 | 3507 1824 104 1193 | 1824 2825 97 1194 | 2825 6500 97 1195 | 6500 1902 97 1196 | 677 1281 192 1197 | 1281 1882 192 1198 | 1882 1838 192 1199 | 1838 1864 192 1200 | 1864 1871 192 1201 | 1871 1888 192 1202 | 1888 1860 192 1203 | 1860 1856 192 1204 | 1856 1840 192 1205 | 1840 6024 192 1206 | 6024 1854 192 1207 | 1854 1878 192 1208 | 1878 1884 192 1209 | 1884 1880 192 1210 | 1880 1891 192 1211 | 1891 1886 192 1212 | 1886 1912 192 1213 | 1912 1876 192 1214 | 1876 1847 192 1215 | 1847 1848 192 1216 | 1848 1836 192 1217 | 1836 1900 192 1218 | 1900 1898 192 1219 | 1898 1858 192 1220 | 1858 6364 192 1221 | 6364 1861 192 1222 | 1861 1842 192 1223 | 1842 1895 192 1224 | 1895 1868 192 1225 | 1868 1907 192 1226 | 1907 1873 192 1227 | 1873 1863 192 1228 | 1863 1909 192 1229 | 1909 1905 192 1230 | 1905 1852 192 1231 | 1852 1869 192 1232 | 1869 1850 192 1233 | 1850 1892 192 1234 | 1892 1844 192 1235 | 1844 1845 192 1236 | 1845 1903 192 1237 | 5595 5596 91 1238 | 5596 5597 91 1239 | 5597 5419 91 1240 | 5419 5599 91 1241 | 5599 5700 91 1242 | 5700 5600 91 1243 | 5600 5601 91 1244 | 5601 2604 91 1245 | 2604 2606 91 1246 | 2606 2603 91 1247 | 2603 2609 91 1248 | 2609 2600 91 1249 | 2600 5361 91 1250 | 5361 4375 91 1251 | 4375 5326 91 1252 | 5326 4376 91 1253 | 4376 4377 91 1254 | 4377 5276 91 1255 | 5276 5277 91 1256 | 5277 5701 91 1257 | 5701 5278 91 1258 | 1824 2824 7 1259 | 3262 5948 168 1260 | 5948 3251 168 1261 | 3251 3252 168 1262 | 3252 5913 168 1263 | 5913 5914 168 1264 | 5914 5867 168 1265 | 5867 5906 168 1266 | 5906 5621 168 1267 | 5621 5622 168 1268 | 5622 5421 168 1269 | 5421 6482 168 1270 | 6482 5624 168 1271 | 5624 5235 168 1272 | 5235 5880 168 1273 | 5880 5237 168 1274 | 5237 5830 168 1275 | 5830 5838 168 1276 | 5838 1328 168 1277 | 1328 1383 168 1278 | 1383 4339 168 1279 | 4339 1409 168 1280 | 1409 1262 168 1281 | 1262 5625 168 1282 | 5625 1411 168 1283 | 1411 5689 168 1284 | 5689 5626 168 1285 | 5626 5831 168 1286 | 5831 6238 168 1287 | 6238 6239 168 1288 | 6239 4172 168 1289 | 4172 5876 168 1290 | 5876 6371 168 1291 | 6371 6039 168 1292 | 6039 4184 166 1293 | 4184 5379 166 1294 | 5379 3039 166 1295 | 3039 5442 166 1296 | 5442 1335 166 1297 | 1335 1412 166 1298 | 1412 1394 166 1299 | 1394 1410 166 1300 | 1410 4231 166 1301 | 4231 4338 166 1302 | 4338 1384 166 1303 | 1384 1329 166 1304 | 1329 1352 166 1305 | 1352 5234 166 1306 | 5234 5607 166 1307 | 5607 5608 166 1308 | 5608 5609 166 1309 | 5609 5610 166 1310 | 5610 5420 166 1311 | 5420 5612 166 1312 | 5612 5613 166 1313 | 5613 5614 166 1314 | 5614 5422 166 1315 | 5422 5616 166 1316 | 5616 5909 166 1317 | 5909 5910 166 1318 | 5910 5911 166 1319 | 5911 5912 166 1320 | 5912 3253 166 1321 | 3253 3254 166 1322 | 3254 3255 166 1323 | 3255 3256 166 1324 | 3256 3262 162 1325 | 3256 6348 4 1326 | 6240 2340 112 1327 | 2340 1252 112 1328 | 1252 1257 112 1329 | 1257 1255 112 1330 | 1255 1250 112 1331 | 1250 1253 112 1332 | 1253 1248 112 1333 | 1248 1259 112 1334 | 1259 2505 112 1335 | 2505 2572 112 1336 | 2572 6501 112 1337 | 6501 5649 112 1338 | 5649 5650 112 1339 | 5650 5651 112 1340 | 5651 2279 112 1341 | 2279 2317 112 1342 | 2317 2320 112 1343 | 2320 2319 112 1344 | 2319 2324 112 1345 | 2324 2309 112 1346 | 2309 5440 112 1347 | 5440 2296 112 1348 | 2296 2333 112 1349 | 2333 3242 112 1350 | 3242 2980 112 1351 | 2980 5652 112 1352 | 5652 5672 112 1353 | 5672 5676 112 1354 | 5676 5428 112 1355 | 5428 5674 112 1356 | 5674 5675 112 1357 | 5675 5653 112 1358 | 5653 5654 112 1359 | 5654 6524 112 1360 | 6524 2521 112 1361 | 2521 6525 112 1362 | 6525 5658 112 1363 | 5658 5659 112 1364 | 5659 3223 112 1365 | 3223 5435 112 1366 | 5435 5704 112 1367 | 5704 5662 112 1368 | 5662 5663 112 1369 | 5663 5066 112 1370 | 5066 5087 112 1371 | 5087 5862 112 1372 | 5862 5887 112 1373 | 5887 5888 112 1374 | 5888 5889 112 1375 | 5889 5890 112 1376 | 5890 5891 112 1377 | 5891 5951 112 1378 | 5951 5858 112 1379 | 5858 5952 110 1380 | 5952 5892 114 1381 | 5892 5893 114 1382 | 5893 5894 114 1383 | 5894 5895 114 1384 | 5895 5896 114 1385 | 5896 5859 114 1386 | 5859 5897 114 1387 | 5897 5898 114 1388 | 5898 5899 114 1389 | 5899 5668 114 1390 | 5668 5669 114 1391 | 5669 2524 106 1392 | 2524 3223 106 1393 | 3223 2520 106 1394 | 2520 6529 106 1395 | 6529 2526 106 1396 | 2526 2521 106 1397 | 2521 4442 106 1398 | 4442 4443 106 1399 | 4443 5678 106 1400 | 5678 5427 106 1401 | 5427 5676 106 1402 | 5676 5672 106 1403 | 5672 2995 106 1404 | 2995 2331 106 1405 | 2331 2325 106 1406 | 2325 2334 106 1407 | 2334 2297 106 1408 | 2297 2275 106 1409 | 2275 2310 106 1410 | 2310 2322 106 1411 | 2322 2323 106 1412 | 2323 2273 106 1413 | 2273 2318 106 1414 | 2318 5438 106 1415 | 5438 5644 106 1416 | 5644 5645 106 1417 | 5645 5646 106 1418 | 5646 2563 106 1419 | 2563 2506 106 1420 | 2506 1254 106 1421 | 1254 1260 106 1422 | 1260 1261 106 1423 | 1261 1249 106 1424 | 1249 1247 106 1425 | 1247 1251 106 1426 | 1251 1256 106 1427 | 1256 1258 106 1428 | 1258 2342 106 1429 | 2342 2341 106 1430 | 2341 1375 43 1431 | 2341 1363 63 1432 | 1363 6240 63 1433 | 5669 3951 8 1434 | 3951 5409 8 1435 | 6409 6410 114 1436 | 6410 6411 114 1437 | 6411 6412 114 1438 | 6412 6413 114 1439 | 6413 6414 114 1440 | 6414 6415 114 1441 | 6415 6416 114 1442 | 6416 6417 114 1443 | 6417 6418 114 1444 | 6418 6419 114 1445 | 6419 6420 114 1446 | 6420 5754 114 1447 | 5754 6477 114 1448 | 6477 5726 114 1449 | 5726 5755 114 1450 | 5755 6421 114 1451 | 6421 6422 114 1452 | 6422 6423 114 1453 | 6423 6424 114 1454 | 6424 6425 114 1455 | 6425 6426 114 1456 | 6426 6427 114 1457 | 6427 6428 114 1458 | 6428 6429 114 1459 | 6429 6430 114 1460 | 6430 6431 114 1461 | 6431 6432 114 1462 | 6432 5169 114 1463 | 5169 5170 114 1464 | 5170 5171 114 1465 | 5171 5172 114 1466 | 5172 5857 114 1467 | 5857 5185 114 1468 | 5185 6550 114 1469 | 6550 3819 114 1470 | 3819 5174 114 1471 | 5174 5175 114 1472 | 5175 2268 114 1473 | 2268 2265 114 1474 | 2265 5177 114 1475 | 5177 6542 106 1476 | 5177 6481 8 1477 | 6542 6444 114 1478 | 6444 5382 114 1479 | 5382 3477 114 1480 | 3477 6569 114 1481 | 6569 6570 114 1482 | 6570 597 114 1483 | 597 2263 114 1484 | 2263 5181 114 1485 | 5181 2264 114 1486 | 2264 5182 114 1487 | 5182 5850 114 1488 | 5850 5113 114 1489 | 5113 5114 114 1490 | 5114 5115 114 1491 | 5115 3819 114 1492 | 3819 5116 114 1493 | 5116 5183 114 1494 | 5183 5117 114 1495 | 5117 6363 114 1496 | 6363 5934 114 1497 | 5934 4055 114 1498 | 4055 4056 114 1499 | 4056 4057 114 1500 | 4057 6451 114 1501 | 6451 6452 114 1502 | 6452 6453 114 1503 | 6453 6454 114 1504 | 6454 5764 114 1505 | 5764 5765 114 1506 | 5765 5766 114 1507 | 5766 6455 114 1508 | 6455 6456 114 1509 | 6456 6457 114 1510 | 6457 6458 114 1511 | 6458 6459 114 1512 | 6459 6460 114 1513 | 6460 6461 114 1514 | 6461 6462 114 1515 | 6462 6463 114 1516 | 6463 6544 114 1517 | 6544 6517 114 1518 | 6517 6464 114 1519 | 6464 6414 114 1520 | 6414 6633 114 1521 | 6633 6634 114 1522 | 6634 6468 114 1523 | 6468 6470 114 1524 | 6470 6534 114 1525 | 6534 6583 114 1526 | 6583 6535 114 1527 | 6535 6619 114 1528 | 6619 6620 114 1529 | 6620 6621 114 1530 | 6621 6622 114 1531 | 6622 6623 114 1532 | 6623 6624 114 1533 | 6624 3863 114 1534 | 3863 3865 114 1535 | 3865 3866 114 1536 | 3866 5139 114 1537 | 5139 3726 114 1538 | 3726 5164 114 1539 | 5164 5166 114 1540 | 5166 6626 114 1541 | 6626 823 114 1542 | 823 5179 114 1543 | 5179 6538 114 1544 | 6538 6627 114 1545 | 6627 6628 114 1546 | 6628 6629 114 1547 | 6629 6148 114 1548 | 6148 6366 114 1549 | 6366 4179 114 1550 | 4179 824 114 1551 | 824 6144 114 1552 | 6144 3165 114 1553 | 3165 3173 114 1554 | 3173 3171 114 1555 | 3171 3174 114 1556 | 3174 6176 114 1557 | 6176 6433 114 1558 | 6433 6434 114 1559 | 6434 6435 114 1560 | 6435 6436 114 1561 | 6436 6437 114 1562 | 6437 6438 114 1563 | 6438 6439 114 1564 | 6439 6440 114 1565 | 6440 6441 114 1566 | 6441 6442 114 1567 | 6442 6541 114 1568 | 6541 3727 106 1569 | 3727 3728 106 1570 | 3728 6646 106 1571 | 6646 4488 106 1572 | 4488 4489 114 1573 | 4489 6445 114 1574 | 6445 6446 114 1575 | 6446 6447 114 1576 | 6447 6448 114 1577 | 6448 6449 114 1578 | 6449 3722 114 1579 | 3722 342 114 1580 | 342 6166 114 1581 | 6166 6167 114 1582 | 6167 6161 114 1583 | 6161 6162 114 1584 | 6162 6163 114 1585 | 6163 6164 114 1586 | 6164 6145 114 1587 | 6145 6165 114 1588 | 6165 5886 114 1589 | 5886 6450 114 1590 | 6450 6540 114 1591 | 6540 6609 114 1592 | 6609 6610 114 1593 | 6610 6611 114 1594 | 6611 6539 114 1595 | 6539 822 114 1596 | 822 823 114 1597 | 823 816 114 1598 | 816 6188 114 1599 | 6188 5121 114 1600 | 5121 5122 114 1601 | 5122 5782 114 1602 | 5782 5783 114 1603 | 5783 5784 114 1604 | 5784 5785 114 1605 | 5785 5786 114 1606 | 5786 6537 114 1607 | 6537 6612 114 1608 | 6612 6613 114 1609 | 6613 6614 114 1610 | 6614 6615 114 1611 | 6615 6616 114 1612 | 6616 6617 114 1613 | 6617 6536 114 1614 | 6536 6618 114 1615 | 6618 6409 110 1616 | 4487 4488 8 1617 | 6618 6471 4 1618 | 5584 6654 120 1619 | 6654 6716 120 1620 | 6716 6655 120 1621 | 6655 6717 114 1622 | 6717 6718 114 1623 | 6718 6719 114 1624 | 6719 6720 114 1625 | 6720 4483 114 1626 | 4483 6728 114 1627 | 6728 6729 114 1628 | 6729 6730 114 1629 | 6730 6656 114 1630 | 6656 6694 114 1631 | 6694 6731 114 1632 | 6731 6732 114 1633 | 6732 6733 114 1634 | 6733 6734 114 1635 | 6734 6735 114 1636 | 6735 6657 114 1637 | 6657 6736 114 1638 | 6736 6737 114 1639 | 6737 6738 114 1640 | 6738 6739 114 1641 | 6739 6740 114 1642 | 6740 6658 114 1643 | 6658 6741 114 1644 | 6741 6742 114 1645 | 6742 6743 114 1646 | 6743 6744 114 1647 | 6744 6659 114 1648 | 6659 6745 114 1649 | 6745 4333 114 1650 | 4333 6051 114 1651 | 6051 4344 114 1652 | 4344 4345 114 1653 | 4345 4334 114 1654 | 4334 4372 114 1655 | 4372 5381 114 1656 | 5381 4119 114 1657 | 4119 4324 114 1658 | 6041 4254 114 1659 | 4254 6766 114 1660 | 6766 6695 114 1661 | 6695 6696 114 1662 | 6696 6697 114 1663 | 6697 6651 114 1664 | 6651 6698 114 1665 | 6698 6699 114 1666 | 6699 6700 114 1667 | 6700 6701 114 1668 | 6701 6652 114 1669 | 6652 6702 114 1670 | 6702 6703 114 1671 | 6703 6704 114 1672 | 6704 6705 114 1673 | 6705 6706 114 1674 | 6706 5422 114 1675 | 5422 5616 114 1676 | 5616 6707 114 1677 | 6707 6708 114 1678 | 6708 6709 114 1679 | 6709 6710 114 1680 | 6710 6693 114 1681 | 6693 6664 114 1682 | 6664 6711 114 1683 | 6711 6712 114 1684 | 6712 6376 114 1685 | 6376 6653 114 1686 | 6653 6713 114 1687 | 6713 6714 114 1688 | 6714 6715 114 1689 | 6715 5584 114 1690 | 5745 5746 145 1691 | 5746 5747 145 1692 | 5747 5748 145 1693 | 5748 5749 145 1694 | 5749 5751 145 1695 | 5751 5752 145 1696 | 5752 5753 145 1697 | 5753 6683 145 1698 | 6683 6684 145 1699 | 6684 6746 145 1700 | 6746 6662 145 1701 | 6662 6685 145 1702 | 6685 6686 145 1703 | 6686 6691 145 1704 | 6691 6747 145 1705 | 6747 6748 145 1706 | 6748 6749 145 1707 | 6749 3702 145 1708 | 3702 5501 145 1709 | 5501 4370 145 1710 | 4370 3215 145 1711 | 3215 3216 145 1712 | 3216 2838 145 1713 | 2838 2865 290 1714 | 2865 2858 290 1715 | 2858 2847 290 1716 | 2847 2806 290 1717 | 2806 2784 290 1718 | 2784 2783 290 1719 | 2783 2793 290 1720 | 2793 2791 290 1721 | 2791 2785 290 1722 | 2785 2867 290 1723 | 2867 2862 290 1724 | 2862 2837 290 1725 | 2837 2812 290 1726 | 2812 2797 290 1727 | 2797 2810 290 1728 | 2810 2831 290 1729 | 2831 2850 290 1730 | 2850 2866 290 1731 | 2866 2815 290 1732 | 2815 2852 290 1733 | 2852 2848 290 1734 | 2848 2789 290 1735 | 2789 2798 290 1736 | 2798 2856 290 1737 | 2856 2817 290 1738 | 2817 2820 290 1739 | 2820 2835 290 1740 | 2835 2833 290 1741 | 2833 2844 290 1742 | 2844 2841 290 1743 | 2841 2829 290 1744 | 2829 2825 290 1745 | 2825 6500 290 1746 | 6500 2827 290 1747 | 2827 2823 290 1748 | 2823 2796 290 1749 | 2796 2787 290 1750 | 2787 2819 290 1751 | 2819 2272 290 1752 | 2272 2415 290 1753 | 2415 2888 290 1754 | 2888 1820 290 1755 | 1820 2787 290 1756 | 2787 1819 290 1757 | 6689 5756 145 1758 | 5756 5757 145 1759 | 5757 5758 145 1760 | 5758 5727 145 1761 | 5727 5851 145 1762 | 5851 2838 145 1763 | 1819 2822 294 1764 | 2822 2828 294 1765 | 2828 2780 294 1766 | 2780 2824 294 1767 | 2824 2830 294 1768 | 2830 2846 294 1769 | 2846 2845 294 1770 | 2845 2834 294 1771 | 2834 2836 294 1772 | 2836 2820 294 1773 | 2820 2818 294 1774 | 2818 2857 294 1775 | 2857 2799 294 1776 | 2799 2790 294 1777 | 2790 2849 294 1778 | 2849 2853 294 1779 | 2853 2816 294 1780 | 2816 2854 294 1781 | 2854 2851 294 1782 | 2851 2832 294 1783 | 2832 2814 294 1784 | 2814 2811 294 1785 | 2811 2813 294 1786 | 2813 2804 294 1787 | 2804 2863 294 1788 | 2863 2868 294 1789 | 2868 2786 294 1790 | 2786 2792 294 1791 | 2792 2795 294 1792 | 2795 2794 294 1793 | 2794 2860 294 1794 | 2860 2808 294 1795 | 2808 2807 294 1796 | 2807 2859 294 1797 | 2859 2864 294 1798 | 2864 2245 147 1799 | 2245 2207 147 1800 | 2207 3221 147 1801 | 3221 3721 147 1802 | 3721 6750 147 1803 | 6750 6751 147 1804 | 6751 6055 147 1805 | 6055 6056 147 1806 | 6056 5449 147 1807 | 5449 6680 147 1808 | 6680 6662 147 1809 | 6662 6746 147 1810 | 6746 6681 147 1811 | 6681 6690 147 1812 | 6690 6753 147 1813 | 6753 6754 147 1814 | 6754 6755 147 1815 | 6755 6756 147 1816 | 6756 6757 147 1817 | 6757 6758 147 1818 | 6758 6689 147 1819 | 2864 2839 147 1820 | 2839 2809 147 1821 | 2809 3853 147 1822 | 3853 3861 147 1823 | 3861 3854 147 1824 | 3854 3855 147 1825 | 3855 3856 147 1826 | 3856 3862 147 1827 | 3862 5727 147 1828 | 5727 5743 147 1829 | 5743 5744 147 1830 | 5744 5745 147 1831 | 5730 5770 317 1832 | 5770 5772 317 1833 | 5772 5773 317 1834 | 5773 5774 317 1835 | 5774 5775 317 1836 | 5775 3867 317 1837 | 3867 3876 317 1838 | 3876 3877 317 1839 | 3877 3878 317 1840 | 3878 925 317 1841 | 925 967 317 1842 | 967 993 317 1843 | 993 979 317 1844 | 979 978 317 1845 | 978 921 317 1846 | 921 994 317 1847 | 994 943 317 1848 | 943 953 317 1849 | 953 937 317 1850 | 937 959 317 1851 | 959 942 317 1852 | 942 933 317 1853 | 933 930 317 1854 | 930 919 317 1855 | 919 1000 317 1856 | 1000 996 317 1857 | 996 957 317 1858 | 957 6687 317 1859 | 6687 955 317 1860 | 955 946 317 1861 | 946 972 317 1862 | 972 970 317 1863 | 970 968 317 1864 | 968 990 317 1865 | 990 932 317 1866 | 932 961 317 1867 | 961 992 317 1868 | 992 987 317 1869 | 987 926 317 1870 | 926 940 317 1871 | 940 945 317 1872 | 945 5347 317 1873 | 5347 949 317 1874 | 949 974 317 1875 | 974 3741 317 1876 | 3741 982 317 1877 | 982 918 317 1878 | 918 936 317 1879 | 936 964 317 1880 | 964 923 317 1881 | 923 292 317 1882 | 292 1078 298 1883 | 5764 5765 356 1884 | 5765 5766 356 1885 | 5766 5767 356 1886 | 5767 5768 356 1887 | 5768 5730 356 1888 | 292 270 19 1889 | 1078 1094 318 1890 | 1094 952 318 1891 | 952 966 318 1892 | 966 922 318 1893 | 922 965 318 1894 | 965 923 318 1895 | 923 963 318 1896 | 963 984 318 1897 | 984 924 318 1898 | 924 983 318 1899 | 983 973 318 1900 | 973 975 318 1901 | 975 6019 318 1902 | 6019 5348 318 1903 | 5348 986 318 1904 | 986 941 318 1905 | 941 927 318 1906 | 927 988 318 1907 | 988 917 318 1908 | 917 962 318 1909 | 962 929 318 1910 | 929 991 318 1911 | 991 969 318 1912 | 969 971 318 1913 | 971 951 318 1914 | 951 956 318 1915 | 956 6649 318 1916 | 6649 958 318 1917 | 958 950 318 1918 | 950 997 318 1919 | 997 1001 318 1920 | 1001 920 318 1921 | 920 928 318 1922 | 928 934 318 1923 | 934 935 318 1924 | 935 960 318 1925 | 960 938 318 1926 | 938 954 318 1927 | 954 944 318 1928 | 944 995 318 1929 | 995 980 318 1930 | 980 989 318 1931 | 989 981 318 1932 | 981 3353 318 1933 | 3353 3354 318 1934 | 3354 3355 318 1935 | 3355 3356 318 1936 | 3356 3679 318 1937 | 3679 5740 318 1938 | 5740 5760 318 1939 | 5760 5761 318 1940 | 5761 5763 318 1941 | 5763 5764 318 1942 | 5943 5944 193 1943 | 5944 6677 193 1944 | 6677 5945 193 1945 | 5945 5875 193 1946 | 5875 5874 193 1947 | 5874 4058 193 1948 | 4058 4059 193 1949 | 4059 4060 193 1950 | 4060 4062 193 1951 | 4062 6188 193 1952 | 6188 3681 193 1953 | 3681 3920 193 1954 | 3920 3682 193 1955 | 3682 3684 193 1956 | 3684 3365 193 1957 | 3365 3366 193 1958 | 3366 3367 193 1959 | 3367 2579 193 1960 | 2579 2582 193 1961 | 2582 2586 193 1962 | 2586 2561 193 1963 | 2561 2570 193 1964 | 2570 2560 193 1965 | 2560 2573 193 1966 | 2573 2565 193 1967 | 2565 2558 193 1968 | 2558 2576 193 1969 | 2576 2554 193 1970 | 2554 2591 193 1971 | 2591 2588 193 1972 | 2588 2577 193 1973 | 2577 2563 193 1974 | 2563 2506 193 1975 | 2506 2504 193 1976 | 2504 2503 193 1977 | 2503 2882 193 1978 | 2882 2880 193 1979 | 2880 2881 193 1980 | 2881 2883 193 1981 | 2883 2876 193 1982 | 2876 1776 193 1983 | 1776 1768 193 1984 | 1768 1766 193 1985 | 1766 795 193 1986 | 795 786 193 1987 | 786 764 193 1988 | 764 775 193 1989 | 775 799 193 1990 | 799 791 193 1991 | 791 782 193 1992 | 782 788 193 1993 | 788 802 193 1994 | 802 792 193 1995 | 792 763 193 1996 | 763 765 193 1997 | 765 1592 193 1998 | 1592 1600 193 1999 | 1600 1562 193 2000 | 1562 1567 193 2001 | 1567 1559 193 2002 | 1559 1604 193 2003 | 1604 5718 193 2004 | 5718 1563 193 2005 | 1563 1595 193 2006 | 1595 1596 193 2007 | 1596 1573 193 2008 | 1573 1557 193 2009 | 1557 6141 193 2010 | 6141 1602 193 2011 | 1602 6497 193 2012 | 6497 1590 193 2013 | 1590 1581 193 2014 | 1581 1586 193 2015 | 1586 1578 193 2016 | 1578 1560 193 2017 | 1560 1552 193 2018 | 1552 3658 193 2019 | 3658 1565 193 2020 | 1565 1568 193 2021 | 1568 1584 193 2022 | 1584 1576 193 2023 | 1576 1550 193 2024 | 1550 5993 193 2025 | 5993 1571 155 2026 | 5993 3508 29 2027 | 3508 3274 5 2028 | 5993 674 9 2029 | 1571 1549 183 2030 | 1549 1614 183 2031 | 1614 6187 183 2032 | 6187 827 183 2033 | 827 1572 183 2034 | 1572 5994 194 2035 | 5994 1551 194 2036 | 1551 1574 194 2037 | 1574 1585 194 2038 | 1585 1569 194 2039 | 1569 1566 194 2040 | 1566 3657 194 2041 | 3657 6020 194 2042 | 6020 1561 194 2043 | 1561 1579 194 2044 | 1579 1586 194 2045 | 1586 1599 194 2046 | 1599 1591 194 2047 | 1591 6498 194 2048 | 6498 1603 194 2049 | 1603 1577 194 2050 | 1577 1558 194 2051 | 1558 1554 194 2052 | 1554 1597 194 2053 | 1597 1588 194 2054 | 1588 1564 194 2055 | 1564 5719 194 2056 | 5719 1605 194 2057 | 1605 1555 194 2058 | 1555 1594 194 2059 | 1594 1580 194 2060 | 1580 1601 194 2061 | 1601 1593 194 2062 | 1593 766 194 2063 | 766 793 194 2064 | 793 767 194 2065 | 767 789 194 2066 | 789 783 194 2067 | 783 790 194 2068 | 790 800 194 2069 | 800 776 194 2070 | 776 764 194 2071 | 764 796 194 2072 | 796 779 194 2073 | 779 1732 194 2074 | 1732 1767 194 2075 | 1767 2879 194 2076 | 2879 2877 194 2077 | 2877 2884 194 2078 | 2884 2880 194 2079 | 2880 2509 194 2080 | 2509 2505 194 2081 | 2505 2572 194 2082 | 2572 2553 194 2083 | 2553 2590 194 2084 | 2590 2592 194 2085 | 2592 2555 194 2086 | 2555 2576 194 2087 | 2576 2559 194 2088 | 2559 2566 194 2089 | 2566 2574 194 2090 | 2574 2581 194 2091 | 2581 2571 194 2092 | 2571 2562 194 2093 | 2562 2587 194 2094 | 2587 2583 194 2095 | 2583 2580 194 2096 | 2580 3368 194 2097 | 3368 3772 194 2098 | 3772 5776 194 2099 | 5776 5777 194 2100 | 5777 5779 194 2101 | 5779 5164 194 2102 | 5164 4253 194 2103 | 4253 784 194 2104 | 784 772 194 2105 | 772 777 194 2106 | 777 801 194 2107 | 801 797 194 2108 | 797 5875 194 2109 | 5875 5936 194 2110 | 5936 5937 194 2111 | 5937 5884 194 2112 | 5884 5869 194 2113 | 5869 5943 194 2114 | 6479 5261 249 2115 | 5261 4107 249 2116 | 4107 5338 249 2117 | 5338 3690 249 2118 | 3690 3389 249 2119 | 3389 3390 249 2120 | 3390 3620 249 2121 | 3620 3622 249 2122 | 3622 477 249 2123 | 477 3391 249 2124 | 3391 530 249 2125 | 530 538 249 2126 | 538 463 249 2127 | 463 509 249 2128 | 509 453 249 2129 | 453 515 249 2130 | 515 525 249 2131 | 525 533 249 2132 | 533 6294 249 2133 | 6294 487 249 2134 | 487 540 249 2135 | 540 499 249 2136 | 499 462 249 2137 | 462 473 249 2138 | 473 480 249 2139 | 480 484 249 2140 | 484 536 249 2141 | 536 467 249 2142 | 467 465 249 2143 | 465 464 249 2144 | 464 517 249 2145 | 517 541 249 2146 | 541 6333 249 2147 | 6333 5713 249 2148 | 5713 5715 249 2149 | 5715 78 249 2150 | 78 68 249 2151 | 68 6217 249 2152 | 6217 6117 249 2153 | 6117 489 249 2154 | 489 3392 249 2155 | 3392 445 249 2156 | 445 497 249 2157 | 497 447 249 2158 | 447 449 249 2159 | 449 459 249 2160 | 459 472 249 2161 | 472 483 249 2162 | 483 451 249 2163 | 451 501 249 2164 | 501 508 249 2165 | 508 6526 249 2166 | 6526 524 249 2167 | 524 522 249 2168 | 522 458 249 2169 | 458 491 249 2170 | 491 455 249 2171 | 455 482 249 2172 | 482 503 249 2173 | 503 513 249 2174 | 513 3393 249 2175 | 3393 5711 249 2176 | 5711 3692 249 2177 | 3692 3395 275 2178 | 3395 4313 275 2179 | 4313 3396 275 2180 | 3396 3397 275 2181 | 3397 3398 275 2182 | 3398 2485 275 2183 | 2485 2449 275 2184 | 2449 2452 275 2185 | 2452 2473 26 2186 | 2452 3399 249 2187 | 3399 3676 249 2188 | 3676 3641 249 2189 | 3641 529 249 2190 | 529 470 249 2191 | 470 457 249 2192 | 457 504 249 2193 | 504 543 249 2194 | 543 495 249 2195 | 495 496 249 2196 | 496 492 249 2197 | 492 523 249 2198 | 523 486 249 2199 | 486 511 249 2200 | 511 512 249 2201 | 512 502 249 2202 | 502 452 249 2203 | 452 479 249 2204 | 479 460 249 2205 | 460 450 249 2206 | 450 448 249 2207 | 448 498 249 2208 | 498 446 249 2209 | 446 490 249 2210 | 490 6117 249 2211 | 6117 6143 249 2212 | 6143 6330 249 2213 | 6330 69 249 2214 | 69 6331 249 2215 | 6331 6332 249 2216 | 6332 5714 249 2217 | 5714 542 249 2218 | 542 531 249 2219 | 531 518 249 2220 | 518 464 249 2221 | 464 466 249 2222 | 466 468 249 2223 | 468 6490 249 2224 | 6490 485 249 2225 | 485 456 249 2226 | 456 474 249 2227 | 474 461 249 2228 | 461 500 249 2229 | 500 535 249 2230 | 535 488 249 2231 | 488 532 249 2232 | 532 534 249 2233 | 534 519 249 2234 | 519 516 249 2235 | 516 3402 249 2236 | 3402 509 249 2237 | 509 3403 249 2238 | 3403 538 249 2239 | 538 530 249 2240 | 530 3406 249 2241 | 3406 478 249 2242 | 478 507 249 2243 | 507 3775 249 2244 | 3775 4180 249 2245 | 4180 3776 249 2246 | 3776 5209 249 2247 | 5209 3777 249 2248 | 3777 5259 249 2249 | 5259 5260 249 2250 | 5260 6479 249 2251 | 5885 6638 54 2252 | 6638 6168 54 2253 | 6168 6169 54 2254 | 6169 6170 54 2255 | 6170 6171 54 2256 | 6171 6172 54 2257 | 6172 6173 54 2258 | 6173 6174 54 2259 | 6174 6175 54 2260 | 6175 81 54 2261 | 81 100 54 2262 | 100 76 54 2263 | 76 95 54 2264 | 95 92 54 2265 | 92 72 54 2266 | 72 97 54 2267 | 97 66 54 2268 | 66 55 54 2269 | 55 691 54 2270 | 691 1801 54 2271 | 1801 2932 54 2272 | 2932 98 54 2273 | 98 57 54 2274 | 57 83 54 2275 | 83 5872 54 2276 | 5872 5870 54 2277 | 5870 5713 54 2278 | 5713 5715 54 2279 | 5715 78 54 2280 | 78 68 54 2281 | 68 6217 54 2282 | 6217 6522 54 2283 | 6522 6530 54 2284 | 6530 6521 54 2285 | 6521 2638 54 2286 | 2638 6281 54 2287 | 6281 2621 54 2288 | 2621 2620 54 2289 | 2620 2611 54 2290 | 2611 2612 54 2291 | 2612 2625 54 2292 | 2625 2614 54 2293 | 2614 2632 54 2294 | 2632 2630 54 2295 | 2630 2616 54 2296 | 2616 2618 54 2297 | 2618 2642 54 2298 | 2642 2648 54 2299 | 2648 5015 54 2300 | 5015 2652 54 2301 | 2652 2653 54 2302 | 2653 2651 54 2303 | 2651 2636 54 2304 | 2636 2646 54 2305 | 2646 2639 54 2306 | 2639 2633 54 2307 | 2633 2644 54 2308 | 2644 4040 54 2309 | 4040 5817 54 2310 | 5817 5932 54 2311 | 5932 6503 54 2312 | 6503 2628 54 2313 | 2628 4040 54 2314 | 4040 2656 54 2315 | 2656 2645 50 2316 | 2656 1899 4 2317 | 2645 2634 58 2318 | 2634 2640 58 2319 | 2640 2647 58 2320 | 2647 2637 58 2321 | 2637 2627 58 2322 | 2627 2654 58 2323 | 2654 2629 58 2324 | 2629 2624 58 2325 | 2624 2649 58 2326 | 2649 2643 58 2327 | 2643 2617 58 2328 | 2617 2631 58 2329 | 2631 2615 58 2330 | 2615 2626 58 2331 | 2626 2613 58 2332 | 2613 2641 58 2333 | 2641 2611 58 2334 | 2611 2622 58 2335 | 2622 2621 58 2336 | 2621 6281 58 2337 | 6281 6521 58 2338 | 6521 1685 58 2339 | 1685 6217 58 2340 | 6217 6330 58 2341 | 6330 69 58 2342 | 69 5434 58 2343 | 5434 3584 58 2344 | 3584 5714 58 2345 | 5714 5871 58 2346 | 5871 5872 58 2347 | 5872 5633 58 2348 | 5633 84 58 2349 | 84 56 58 2350 | 56 2915 58 2351 | 2915 5866 58 2352 | 5866 1800 58 2353 | 1800 1799 58 2354 | 1799 720 58 2355 | 720 63 58 2356 | 63 55 58 2357 | 55 67 58 2358 | 67 73 58 2359 | 73 70 58 2360 | 70 96 58 2361 | 96 5291 58 2362 | 5291 100 58 2363 | 100 82 58 2364 | 82 52 58 2365 | 52 50 58 2366 | 50 86 58 2367 | 86 102 58 2368 | 102 61 58 2369 | 61 85 58 2370 | 85 6367 58 2371 | 6367 6639 58 2372 | 6639 6549 58 2373 | 6144 6179 121 2374 | 6179 6178 121 2375 | 6178 6608 121 2376 | 6608 6568 121 2377 | 6568 1345 121 2378 | 1345 3789 121 2379 | 3789 3153 121 2380 | 3153 3115 121 2381 | 3115 3131 121 2382 | 3131 3130 121 2383 | 3130 3150 121 2384 | 3150 3099 121 2385 | 3099 3105 121 2386 | 3105 3140 121 2387 | 3140 3118 121 2388 | 3118 3120 121 2389 | 3120 755 53 2390 | 755 694 53 2391 | 694 1801 53 2392 | 1801 5130 53 2393 | 5130 5863 53 2394 | 5863 2918 53 2395 | 2918 3155 53 2396 | 3155 3154 121 2397 | 3154 3113 121 2398 | 3113 3132 121 2399 | 3132 3101 121 2400 | 3101 3149 121 2401 | 3149 3087 121 2402 | 3087 3111 121 2403 | 3111 3076 121 2404 | 3076 3074 121 2405 | 3074 1127 121 2406 | 1127 1701 121 2407 | 1701 1683 121 2408 | 1683 6521 121 2409 | 6521 1685 121 2410 | 1685 6159 121 2411 | 6159 6397 121 2412 | 6397 6192 121 2413 | 6192 6193 121 2414 | 6193 6198 121 2415 | 6198 1723 121 2416 | 1723 1738 121 2417 | 1738 1770 121 2418 | 1770 1752 121 2419 | 1752 1718 121 2420 | 1718 1725 121 2421 | 1725 332 121 2422 | 332 5958 121 2423 | 5958 5979 121 2424 | 5979 882 121 2425 | 882 3094 121 2426 | 3094 3078 121 2427 | 3078 3121 121 2428 | 3121 3110 121 2429 | 3110 3128 121 2430 | 3128 3157 125 2431 | 3157 3137 125 2432 | 3137 3084 125 2433 | 3084 3107 125 2434 | 3107 3145 125 2435 | 3145 3095 125 2436 | 3095 3097 125 2437 | 3097 3123 125 2438 | 3123 3082 125 2439 | 3082 4077 125 2440 | 4077 4080 125 2441 | 4080 6344 125 2442 | 6344 6345 125 2443 | 6345 205 125 2444 | 205 194 125 2445 | 194 177 125 2446 | 177 208 125 2447 | 208 3419 125 2448 | 3419 1847 114 2449 | 1847 1875 114 2450 | 1875 3124 114 2451 | 3124 3098 118 2452 | 3098 3095 118 2453 | 3095 3146 118 2454 | 3146 3108 118 2455 | 3108 3144 118 2456 | 3144 3138 118 2457 | 3138 3125 118 2458 | 3125 3129 118 2459 | 3129 3139 118 2460 | 3139 3122 118 2461 | 3122 3116 118 2462 | 3116 903 118 2463 | 903 5980 118 2464 | 5980 5981 118 2465 | 5981 335 118 2466 | 335 332 118 2467 | 332 338 118 2468 | 338 1762 118 2469 | 1762 1783 118 2470 | 1783 1719 118 2471 | 1719 1753 118 2472 | 1753 1771 118 2473 | 1771 1739 118 2474 | 1739 1724 118 2475 | 1724 6393 118 2476 | 6393 6394 118 2477 | 6394 6347 118 2478 | 6347 6157 118 2479 | 6157 6522 118 2480 | 6522 6530 118 2481 | 6530 6521 118 2482 | 6521 1700 118 2483 | 1700 1682 118 2484 | 1682 3114 118 2485 | 3114 1127 118 2486 | 1127 3075 118 2487 | 3075 3077 118 2488 | 3077 3112 118 2489 | 3112 3088 118 2490 | 3088 3117 118 2491 | 3117 3134 118 2492 | 3134 3133 118 2493 | 3133 3113 118 2494 | 3113 3081 118 2495 | 3081 3155 118 2496 | 3155 2917 50 2497 | 2917 2918 50 2498 | 2918 5863 50 2499 | 5863 5866 50 2500 | 5866 1800 50 2501 | 1800 1799 50 2502 | 1799 5883 50 2503 | 5883 693 50 2504 | 693 5935 50 2505 | 5935 3092 50 2506 | 3092 3119 118 2507 | 3119 3141 118 2508 | 3141 3106 118 2509 | 3106 3100 118 2510 | 3100 3152 118 2511 | 3152 3089 118 2512 | 3089 3131 118 2513 | 3131 3135 118 2514 | 3135 3148 118 2515 | 3148 3789 118 2516 | 3789 3085 118 2517 | 3085 6016 118 2518 | 6016 6177 118 2519 | 6177 6178 118 2520 | 6178 6179 118 2521 | 6179 6144 118 2522 | 6549 3819 70 2523 | 3819 5174 70 2524 | 5174 5175 70 2525 | 5175 6630 70 2526 | 6630 6548 70 2527 | 6548 6564 70 2528 | 6564 6567 70 2529 | 6567 2966 70 2530 | 2966 3422 70 2531 | 3422 2977 70 2532 | 2977 2989 70 2533 | 2989 2996 70 2534 | 2996 2978 70 2535 | 2978 2956 70 2536 | 2956 2991 70 2537 | 2991 2957 70 2538 | 2957 2967 70 2539 | 2967 2985 70 2540 | 2985 2974 70 2541 | 2974 2969 70 2542 | 2969 2964 70 2543 | 2964 2997 70 2544 | 2997 2993 70 2545 | 2993 2975 70 2546 | 2975 2980 70 2547 | 2980 2982 70 2548 | 2982 2955 66 2549 | 2955 5482 66 2550 | 5482 1982 66 2551 | 1982 1980 66 2552 | 1980 1979 66 2553 | 1979 1975 66 2554 | 1975 1994 66 2555 | 1994 2004 66 2556 | 2004 2002 66 2557 | 2002 1989 66 2558 | 1989 1983 66 2559 | 1983 1997 66 2560 | 1997 1985 66 2561 | 1985 2015 66 2562 | 2015 2022 66 2563 | 2022 2024 66 2564 | 2024 2029 66 2565 | 2029 2026 66 2566 | 2026 1998 66 2567 | 1998 2006 66 2568 | 2006 1984 66 2569 | 1984 2032 66 2570 | 2032 2013 66 2571 | 2013 1890 66 2572 | 1890 2017 66 2573 | 2982 5652 4 2574 | 2019 2007 70 2575 | 2007 2012 70 2576 | 2012 2033 70 2577 | 2033 1126 70 2578 | 1126 3654 70 2579 | 3654 1999 70 2580 | 1999 2028 70 2581 | 2028 2025 70 2582 | 2025 2015 70 2583 | 2015 2023 70 2584 | 2023 1993 70 2585 | 1993 2014 70 2586 | 2014 1990 70 2587 | 1990 2003 70 2588 | 2003 2005 70 2589 | 2005 1995 70 2590 | 1995 1976 70 2591 | 1976 1978 70 2592 | 1978 1981 70 2593 | 1981 2972 70 2594 | 2972 5483 70 2595 | 5483 5484 70 2596 | 5484 2995 70 2597 | 2995 2981 70 2598 | 2981 2988 70 2599 | 2988 2994 70 2600 | 2994 2962 70 2601 | 2962 2965 70 2602 | 2965 2970 70 2603 | 2970 2987 70 2604 | 2987 2986 70 2605 | 2986 2968 70 2606 | 2968 2963 70 2607 | 2963 2992 70 2608 | 2992 2956 70 2609 | 2956 2979 70 2610 | 2979 2983 66 2611 | 2983 2984 66 2612 | 2984 2976 66 2613 | 2976 6184 66 2614 | 6184 6183 66 2615 | 6183 6563 66 2616 | 6563 6564 66 2617 | 6564 6547 66 2618 | 6547 6565 66 2619 | 6565 5114 66 2620 | 5114 5115 66 2621 | 5115 3819 66 2622 | 3819 5885 66 2623 | 2017 2019 66 2624 | 2770 2772 182 2625 | 2772 2268 16 2626 | 2268 6635 182 2627 | 6635 6058 186 2628 | 6058 1460 186 2629 | 1460 1493 186 2630 | 1493 1477 186 2631 | 1477 1431 186 2632 | 1431 5395 186 2633 | 5395 1512 186 2634 | 1512 5396 186 2635 | 5396 1498 186 2636 | 1498 1454 186 2637 | 1454 1517 186 2638 | 1517 1525 186 2639 | 1525 1420 186 2640 | 1420 1456 186 2641 | 1456 1505 186 2642 | 1505 1506 186 2643 | 1506 1514 186 2644 | 1514 1444 186 2645 | 1444 1475 186 2646 | 1475 1519 186 2647 | 1519 3936 186 2648 | 3936 3937 186 2649 | 3937 6137 186 2650 | 6137 1511 186 2651 | 1511 1439 186 2652 | 1439 1473 186 2653 | 1473 1418 186 2654 | 1418 1417 186 2655 | 1417 1416 186 2656 | 1416 1437 186 2657 | 1437 6276 186 2658 | 6276 1458 186 2659 | 1458 1429 186 2660 | 1429 1482 186 2661 | 1482 1435 186 2662 | 1435 1441 186 2663 | 1441 1425 186 2664 | 1425 1489 186 2665 | 1489 1491 186 2666 | 1491 1503 186 2667 | 1503 1520 186 2668 | 1520 1468 186 2669 | 1468 1463 186 2670 | 1463 1446 186 2671 | 1446 1479 186 2672 | 1479 1465 186 2673 | 1465 1486 186 2674 | 1486 1426 186 2675 | 1426 1433 186 2676 | 1433 1470 186 2677 | 1470 1509 186 2678 | 1509 1423 186 2679 | 1423 1484 186 2680 | 1484 1507 186 2681 | 1507 4352 186 2682 | 4352 4354 205 2683 | 4354 4378 205 2684 | 4378 411 205 2685 | 411 1623 205 2686 | 1623 1495 205 2687 | 1495 1496 205 2688 | 2772 3000 166 2689 | 3000 3001 166 2690 | 3001 1119 166 2691 | 1119 1120 166 2692 | 1120 1118 166 2693 | 1118 2268 166 2694 | 3940 3941 184 2695 | 3941 6018 184 2696 | 6018 3942 184 2697 | 3942 1499 184 2698 | 1499 1476 184 2699 | 1476 1445 184 2700 | 1445 1467 184 2701 | 1467 1483 184 2702 | 1483 1523 184 2703 | 1523 1457 184 2704 | 1457 1421 184 2705 | 1421 1518 184 2706 | 1518 1455 184 2707 | 1455 1497 184 2708 | 1497 1502 184 2709 | 1502 1513 184 2710 | 1513 3426 184 2711 | 3426 1432 184 2712 | 1432 1478 184 2713 | 1478 1494 184 2714 | 1494 1461 184 2715 | 1461 1450 184 2716 | 1450 5850 16 2717 | 5850 2772 16 2718 | 2772 2773 176 2719 | 2773 2775 176 2720 | 2775 2770 176 2721 | 1496 1452 184 2722 | 1452 1507 184 2723 | 1507 1484 184 2724 | 1484 1449 184 2725 | 1449 1510 184 2726 | 1510 1471 184 2727 | 1471 1434 184 2728 | 1434 1427 184 2729 | 1427 1487 184 2730 | 1487 1466 184 2731 | 1466 1480 184 2732 | 1480 1447 184 2733 | 1447 1464 184 2734 | 1464 1469 184 2735 | 1469 1521 184 2736 | 1521 1504 184 2737 | 1504 1492 184 2738 | 1492 1490 184 2739 | 1490 1424 184 2740 | 1424 5375 184 2741 | 5375 1436 184 2742 | 1436 1481 184 2743 | 1481 1462 184 2744 | 1462 1430 184 2745 | 1430 1459 184 2746 | 1459 1419 184 2747 | 1419 1422 184 2748 | 1422 1448 184 2749 | 1448 1488 184 2750 | 1488 1500 184 2751 | 1500 1440 184 2752 | 1440 1474 184 2753 | 1474 1438 184 2754 | 1438 1547 184 2755 | 1547 3651 184 2756 | 3651 3940 184 2757 | 1450 5387 160 2758 | 5387 6325 160 2759 | 6325 1123 160 2760 | 1123 1121 160 2761 | 1121 2999 160 2762 | 2999 3002 160 2763 | 3002 3244 160 2764 | 3244 2774 160 2765 | 2774 2772 160 2766 | 1450 2265 8 2767 | 6544 6517 150 2768 | 6517 6587 150 2769 | 6587 6588 150 2770 | 6588 6589 150 2771 | 6589 6591 150 2772 | 6591 6592 150 2773 | 6592 6545 150 2774 | 6545 6593 135 2775 | 6593 6594 135 2776 | 6594 6536 135 2777 | 6536 6618 135 2778 | 6618 6471 135 2779 | 6471 6472 135 2780 | 6472 6473 135 2781 | 6473 6595 135 2782 | 6595 6596 135 2783 | 6596 6597 135 2784 | 6597 6139 135 2785 | 6139 5448 135 2786 | 5448 6073 135 2787 | 6073 6074 135 2788 | 6074 6075 135 2789 | 6075 5499 135 2790 | 5499 6044 135 2791 | 6044 6045 135 2792 | 6045 5447 135 2793 | 5447 6212 135 2794 | 6212 6543 135 2795 | 6543 6598 139 2796 | 6598 6599 139 2797 | 6599 6574 139 2798 | 6574 6601 139 2799 | 6601 6602 139 2800 | 6602 6603 139 2801 | 6603 5876 139 2802 | 5876 6371 139 2803 | 6371 6031 276 2804 | 6031 4254 139 2805 | 4254 2665 139 2806 | 2665 2682 139 2807 | 2682 2690 139 2808 | 2690 2675 139 2809 | 2675 2702 139 2810 | 2702 2707 139 2811 | 2707 2670 139 2812 | 2670 2686 139 2813 | 2686 2708 139 2814 | 2708 2694 139 2815 | 2694 5723 139 2816 | 5723 2699 139 2817 | 2699 2658 139 2818 | 2658 2680 139 2819 | 2680 2663 139 2820 | 2663 6760 139 2821 | 6760 2710 139 2822 | 2710 2696 139 2823 | 2696 2673 139 2824 | 2673 2661 139 2825 | 2661 2711 139 2826 | 2711 2705 139 2827 | 2705 2706 139 2828 | 2706 2684 139 2829 | 2684 6660 139 2830 | 6660 6272 139 2831 | 6272 6724 139 2832 | 6724 6725 139 2833 | 6725 6661 139 2834 | 6661 6761 148 2835 | 6761 6762 148 2836 | 6762 6726 148 2837 | 6726 6727 148 2838 | 6727 6763 148 2839 | 6763 6502 148 2840 | 6502 6383 148 2841 | 6383 6252 148 2842 | 6252 6692 137 2843 | 6692 6773 137 2844 | 6773 6271 137 2845 | 6271 6272 137 2846 | 6272 2679 137 2847 | 2679 2685 137 2848 | 2685 2677 137 2849 | 2677 2704 137 2850 | 2704 2712 137 2851 | 2712 2660 137 2852 | 2660 2696 137 2853 | 2696 5594 137 2854 | 5594 6485 137 2855 | 6485 2664 137 2856 | 2664 2681 137 2857 | 2681 2659 137 2858 | 2659 2700 137 2859 | 2700 5722 137 2860 | 5722 2695 137 2861 | 2695 2709 137 2862 | 2709 2687 137 2863 | 2687 2671 137 2864 | 2671 2703 137 2865 | 2703 2676 137 2866 | 2676 6764 137 2867 | 6764 6765 137 2868 | 6765 6371 137 2869 | 6031 6643 137 2870 | 6643 6571 137 2871 | 6571 6572 137 2872 | 6572 6573 137 2873 | 6573 6574 137 2874 | 6574 6575 137 2875 | 6575 6516 137 2876 | 6516 5497 137 2877 | 5497 6401 137 2878 | 6401 6641 137 2879 | 6641 6576 137 2880 | 6576 6577 137 2881 | 6577 6578 137 2882 | 6578 6579 137 2883 | 6579 6083 137 2884 | 6083 6580 137 2885 | 6580 6581 137 2886 | 6581 6582 137 2887 | 6582 6405 137 2888 | 6405 6406 137 2889 | 6406 6407 137 2890 | 6407 6408 137 2891 | 6408 6534 137 2892 | 6534 6583 137 2893 | 6583 6584 137 2894 | 6584 6585 137 2895 | 6585 6586 137 2896 | 6586 6544 137 2897 | 6215 6522 112 2898 | 6522 6530 112 2899 | 6530 6521 112 2900 | 6521 1700 112 2901 | 1700 199 112 2902 | 199 158 112 2903 | 158 17 84 2904 | 17 30 84 2905 | 30 25 84 2906 | 25 28 84 2907 | 28 18 84 2908 | 18 1500 84 2909 | 1500 1440 84 2910 | 1440 1661 84 2911 | 1661 1637 84 2912 | 1637 399 84 2913 | 399 403 84 2914 | 403 2345 84 2915 | 2345 2347 84 2916 | 2347 2374 84 2917 | 2374 2372 84 2918 | 2372 653 84 2919 | 653 376 84 2920 | 376 398 84 2921 | 398 381 84 2922 | 381 370 84 2923 | 370 372 84 2924 | 372 373 84 2925 | 373 371 84 2926 | 371 382 84 2927 | 382 397 84 2928 | 397 377 84 2929 | 377 384 84 2930 | 384 6342 84 2931 | 6342 6343 84 2932 | 6343 21 84 2933 | 21 19 84 2934 | 19 29 84 2935 | 29 24 84 2936 | 24 31 84 2937 | 31 23 84 2938 | 23 159 84 2939 | 159 1683 112 2940 | 1683 6521 112 2941 | 6521 1685 112 2942 | 1685 6143 112 2943 | 6143 35 152 2944 | 35 36 152 2945 | 36 34 152 2946 | 34 6203 152 2947 | 6203 229 152 2948 | 229 188 152 2949 | 188 166 152 2950 | 166 201 152 2951 | 201 171 152 2952 | 171 165 152 2953 | 165 179 152 2954 | 179 204 152 2955 | 204 220 152 2956 | 220 206 152 2957 | 206 212 152 2958 | 212 184 152 2959 | 184 219 152 2960 | 219 227 152 2961 | 227 190 152 2962 | 190 211 152 2963 | 211 200 152 2964 | 200 192 152 2965 | 192 1847 152 2966 | 1847 6277 138 2967 | 6277 3419 138 2968 | 3419 210 144 2969 | 210 168 155 2970 | 168 214 155 2971 | 214 218 155 2972 | 218 187 155 2973 | 187 191 155 2974 | 191 3713 155 2975 | 3713 228 155 2976 | 228 185 155 2977 | 185 217 155 2978 | 217 213 155 2979 | 213 207 155 2980 | 207 220 155 2981 | 220 203 155 2982 | 203 180 155 2983 | 180 172 155 2984 | 172 202 155 2985 | 202 167 155 2986 | 167 1302 155 2987 | 1302 6154 155 2988 | 6154 1374 155 2989 | 1374 6143 155 2990 | 6327 3844 100 2991 | 3844 6607 100 2992 | 6607 4310 100 2993 | 4310 3914 100 2994 | 3914 5442 100 2995 | 5442 5376 100 2996 | 5376 5377 210 2997 | 5377 4119 210 2998 | 4119 6552 210 2999 | 6552 6029 204 3000 | 6029 5379 106 3001 | 5379 3044 106 3002 | 3044 6094 106 3003 | 6094 3030 106 3004 | 3030 3024 106 3005 | 3024 3057 106 3006 | 3057 3051 106 3007 | 3051 3048 106 3008 | 3048 3065 106 3009 | 3065 3060 106 3010 | 3060 3032 106 3011 | 3032 3036 106 3012 | 3036 4243 106 3013 | 4243 3067 106 3014 | 3067 3053 106 3015 | 3053 3045 106 3016 | 3045 3453 106 3017 | 3453 3043 106 3018 | 3043 3040 106 3019 | 3040 3063 106 3020 | 3063 3070 106 3021 | 3070 5210 106 3022 | 5210 5211 106 3023 | 5211 3028 106 3024 | 3028 3027 106 3025 | 3027 3061 106 3026 | 3061 3272 106 3027 | 3272 5316 106 3028 | 5316 3034 106 3029 | 3034 3660 106 3030 | 3660 1042 106 3031 | 1042 1037 106 3032 | 1037 1040 106 3033 | 1040 5276 106 3034 | 5276 5277 106 3035 | 5277 5701 106 3036 | 5701 5423 106 3037 | 5423 3438 106 3038 | 3438 1545 106 3039 | 1545 1529 106 3040 | 1529 1536 106 3041 | 1536 3439 106 3042 | 3439 1530 106 3043 | 1530 1533 118 3044 | 1533 1537 118 3045 | 1537 1526 118 3046 | 1526 1539 118 3047 | 1539 1531 118 3048 | 1531 1541 118 3049 | 1541 1821 118 3050 | 1821 2170 118 3051 | 2170 2165 118 3052 | 2165 2163 118 3053 | 2163 3047 118 3054 | 3047 3050 118 3055 | 3050 443 118 3056 | 443 440 118 3057 | 440 441 118 3058 | 441 442 118 3059 | 442 348 118 3060 | 348 6767 118 3061 | 6767 6768 118 3062 | 6768 6769 118 3063 | 6769 6770 118 3064 | 6770 6771 118 3065 | 6771 6772 118 3066 | 6772 5852 118 3067 | 5852 6637 118 3068 | 6637 1137 118 3069 | 1137 1140 118 3070 | 1140 1143 118 3071 | 1143 1139 118 3072 | 1139 1145 118 3073 | 1145 6264 110 3074 | 6264 6265 110 3075 | 6265 6266 110 3076 | 6266 6230 110 3077 | 6230 6263 110 3078 | 6263 5637 110 3079 | 5637 6267 110 3080 | 6267 6268 110 3081 | 6268 3434 110 3082 | 3434 5424 110 3083 | 5424 5694 110 3084 | 5694 5640 110 3085 | 5640 1038 110 3086 | 1038 1039 110 3087 | 1039 1036 110 3088 | 1036 1041 110 3089 | 1041 4363 110 3090 | 4363 3035 110 3091 | 3035 4365 110 3092 | 4365 4366 110 3093 | 4366 3062 110 3094 | 3062 3626 110 3095 | 3626 3038 110 3096 | 3038 5695 110 3097 | 5695 5211 110 3098 | 5211 3069 110 3099 | 3069 3071 110 3100 | 3071 3064 110 3101 | 3064 3041 110 3102 | 3041 3465 110 3103 | 3465 3053 110 3104 | 3053 3068 110 3105 | 3068 4244 110 3106 | 4244 3037 110 3107 | 3037 3033 110 3108 | 3033 3059 110 3109 | 3059 3066 110 3110 | 3066 3052 110 3111 | 3052 3056 110 3112 | 3056 3025 110 3113 | 3025 3031 110 3114 | 3031 3055 110 3115 | 3055 5376 110 3116 | 6029 4184 104 3117 | 4184 5379 104 3118 | 5379 3039 104 3119 | 3039 5442 104 3120 | 5442 5486 104 3121 | 5486 3914 104 3122 | 3914 6605 104 3123 | 6605 6606 104 3124 | 6606 5388 104 3125 | 5388 6642 104 3126 | 6642 6327 104 3127 | 595 3466 117 3128 | 3466 557 117 3129 | 557 5843 117 3130 | 5843 575 117 3131 | 575 603 117 3132 | 603 566 117 3133 | 566 559 117 3134 | 559 555 117 3135 | 555 582 117 3136 | 582 551 117 3137 | 551 556 117 3138 | 556 5403 117 3139 | 5403 550 117 3140 | 550 605 117 3141 | 605 544 117 3142 | 544 586 117 3143 | 586 573 117 3144 | 573 608 117 3145 | 608 3467 117 3146 | 3467 569 117 3147 | 569 564 117 3148 | 564 6140 117 3149 | 6140 571 117 3150 | 571 585 117 3151 | 5731 5791 121 3152 | 5791 5792 121 3153 | 5792 5793 121 3154 | 5793 5794 121 3155 | 5794 5795 121 3156 | 5795 5796 121 3157 | 5796 3473 121 3158 | 3473 3474 121 3159 | 3474 3475 121 3160 | 3475 3476 121 3161 | 3476 5110 121 3162 | 5110 5111 121 3163 | 5111 6481 121 3164 | 6481 6504 117 3165 | 6504 6505 117 3166 | 6505 3730 117 3167 | 3730 598 117 3168 | 598 588 117 3169 | 588 590 117 3170 | 590 601 117 3171 | 601 611 117 3172 | 611 567 117 3173 | 567 600 117 3174 | 600 579 117 3175 | 579 591 117 3176 | 591 561 113 3177 | 561 546 113 3178 | 546 3645 113 3179 | 3645 553 113 3180 | 553 547 113 3181 | 547 3884 113 3182 | 3884 595 113 3183 | 596 3885 125 3184 | 3885 548 125 3185 | 548 3644 125 3186 | 3644 545 125 3187 | 545 562 125 3188 | 562 592 121 3189 | 592 580 121 3190 | 580 581 121 3191 | 581 568 121 3192 | 568 578 121 3193 | 578 602 121 3194 | 602 594 121 3195 | 594 589 121 3196 | 589 599 121 3197 | 599 552 121 3198 | 552 554 121 3199 | 554 597 121 3200 | 597 3470 121 3201 | 3470 3471 121 3202 | 3471 3798 121 3203 | 3798 5788 121 3204 | 5788 5789 121 3205 | 5789 5790 121 3206 | 5790 5731 121 3207 | 585 1839 97 3208 | 1839 1855 97 3209 | 1855 585 97 3210 | 585 572 117 3211 | 572 563 117 3212 | 563 3663 117 3213 | 3663 570 117 3214 | 570 3468 117 3215 | 3468 609 117 3216 | 609 593 117 3217 | 593 587 117 3218 | 587 606 117 3219 | 606 607 117 3220 | 607 549 117 3221 | 549 577 117 3222 | 577 574 117 3223 | 574 583 117 3224 | 583 560 117 3225 | 560 565 117 3226 | 565 604 117 3227 | 604 576 117 3228 | 576 5842 117 3229 | 5842 558 117 3230 | 558 3469 117 3231 | 3469 596 117 3232 | 562 2282 4 3233 | 1618 2306 138 3234 | 2306 2316 138 3235 | 2316 3970 138 3236 | 3970 672 138 3237 | 672 671 138 3238 | 671 668 138 3239 | 668 683 138 3240 | 683 3971 138 3241 | 3971 682 138 3242 | 682 685 138 3243 | 685 5841 138 3244 | 5841 667 138 3245 | 667 670 138 3246 | 670 3972 138 3247 | 3972 3973 138 3248 | 3973 3974 138 3249 | 3974 3975 138 3250 | 3975 3976 138 3251 | 3976 4419 138 3252 | 4419 3977 138 3253 | 3977 4444 138 3254 | 4444 3978 138 3255 | 3978 5058 138 3256 | 5058 5044 138 3257 | 5044 3980 138 3258 | 3980 4045 138 3259 | 4045 3981 138 3260 | 3981 6492 138 3261 | 6492 3502 138 3262 | 3502 3503 138 3263 | 3503 6014 138 3264 | 6014 674 138 3265 | 674 669 138 3266 | 669 676 138 3267 | 676 679 138 3268 | 679 677 138 3269 | 677 1281 137 3270 | 1281 1881 137 3271 | 1881 684 137 3272 | 684 675 137 3273 | 675 680 137 3274 | 680 5839 137 3275 | 5839 3508 137 3276 | 3508 3910 137 3277 | 3910 3591 137 3278 | 3591 3509 137 3279 | 3509 5949 137 3280 | 5949 3943 137 3281 | 3943 4044 137 3282 | 4044 3944 137 3283 | 3944 5045 137 3284 | 5045 3945 137 3285 | 3945 3946 137 3286 | 3946 4034 137 3287 | 4034 4495 137 3288 | 4495 4250 137 3289 | 4250 3948 137 3290 | 3948 5733 137 3291 | 5733 3949 137 3292 | 3949 3950 137 3293 | 3950 3951 137 3294 | 3951 3952 137 3295 | 3952 3953 137 3296 | 3953 5840 137 3297 | 5840 3954 137 3298 | 3954 3955 137 3299 | 3955 3956 137 3300 | 3956 3957 137 3301 | 3957 3958 137 3302 | 3958 3959 137 3303 | 3959 3960 137 3304 | 3960 3961 137 3305 | 3961 6060 48 3306 | 6060 5690 48 3307 | 5690 5691 48 3308 | 5691 1618 48 3309 | 3961 2285 89 3310 | 2285 3643 89 3311 | 3643 1618 89 3312 | 6039 4172 139 3313 | 4172 6532 139 3314 | 6532 1348 139 3315 | 1348 1363 494 3316 | 1363 1405 515 3317 | 1405 1371 515 3318 | 1371 5485 515 3319 | 5485 1366 515 3320 | 1366 1332 515 3321 | 1332 1356 515 3322 | 1356 1377 515 3323 | 1377 1353 515 3324 | 1353 1395 515 3325 | 1395 1344 515 3326 | 1344 1349 515 3327 | 1349 1407 515 3328 | 1407 1391 515 3329 | 1391 1401 515 3330 | 1401 1397 515 3331 | 1397 1381 515 3332 | 1381 6189 515 3333 | 6189 5467 515 3334 | 5467 5464 515 3335 | 5464 6199 515 3336 | 6199 34 515 3337 | 34 6282 515 3338 | 6282 1358 515 3339 | 1358 1374 517 3340 | 1374 5465 517 3341 | 5465 6210 517 3342 | 6210 1343 517 3343 | 1343 6115 517 3344 | 6115 1380 517 3345 | 1380 1400 517 3346 | 1400 1392 517 3347 | 1392 1408 517 3348 | 1408 1344 517 3349 | 1344 1398 517 3350 | 1398 1360 517 3351 | 1360 1354 517 3352 | 1354 1403 517 3353 | 1403 1376 517 3354 | 1376 1339 517 3355 | 1339 3590 517 3356 | 3590 1378 517 3357 | 1378 1351 517 3358 | 1351 1375 517 3359 | 1375 1364 517 3360 | 1364 6531 148 3361 | 6531 5426 148 3362 | 5426 4299 148 3363 | 4299 3029 148 3364 | 3029 6028 148 3365 | 1364 1348 355 3366 | 6039 4172 291 3367 | 4172 6532 291 3368 | 6532 1363 291 3369 | 1363 1371 291 3370 | 1371 1332 291 3371 | 1332 1353 291 3372 | 1353 661 291 3373 | 661 4066 291 3374 | 4066 2069 291 3375 | 2069 1695 291 3376 | 1695 5467 291 3377 | 5467 5464 291 3378 | 5464 5462 170 3379 | 5462 6527 170 3380 | 6527 5472 258 3381 | 5472 5470 258 3382 | 5470 5469 258 3383 | 5469 5476 253 3384 | 5464 6211 121 3385 | 6211 6527 103 3386 | 5476 5479 278 3387 | 5479 5468 278 3388 | 5468 5471 278 3389 | 5471 5472 278 3390 | 5472 6527 278 3391 | 6527 5461 293 3392 | 5461 5465 293 3393 | 5465 5466 293 3394 | 5466 2596 293 3395 | 2596 2069 293 3396 | 2069 5454 293 3397 | 5454 6351 293 3398 | 6351 1354 293 3399 | 1354 3590 293 3400 | 3590 1351 293 3401 | 1351 1364 293 3402 | 1364 6531 293 3403 | 6531 5426 293 3404 | 5426 4299 293 3405 | 4299 3029 293 3406 | 3029 6028 293 3407 | 1136 6259 262 3408 | 6259 6261 262 3409 | 6261 248 262 3410 | 248 297 262 3411 | 297 283 262 3412 | 283 5425 262 3413 | 5425 5637 262 3414 | 5637 6251 262 3415 | 6251 276 262 3416 | 276 318 262 3417 | 318 295 262 3418 | 295 275 262 3419 | 275 300 262 3420 | 300 250 262 3421 | 250 286 262 3422 | 286 6252 262 3423 | 6252 6486 262 3424 | 6486 6273 262 3425 | 6273 4186 262 3426 | 4186 253 262 3427 | 253 268 262 3428 | 268 287 262 3429 | 287 314 262 3430 | 314 308 262 3431 | 308 293 262 3432 | 293 260 262 3433 | 260 272 262 3434 | 272 6274 262 3435 | 6274 278 262 3436 | 278 247 262 3437 | 247 252 262 3438 | 252 1031 262 3439 | 1031 1033 262 3440 | 1033 1017 262 3441 | 1017 1024 262 3442 | 1024 1021 262 3443 | 1021 6293 262 3444 | 6293 1026 262 3445 | 1026 1015 262 3446 | 1015 6257 262 3447 | 6257 6296 262 3448 | 6296 6158 262 3449 | 6158 6258 264 3450 | 6258 1014 264 3451 | 1014 1025 264 3452 | 1025 1011 264 3453 | 1011 1020 264 3454 | 1020 6241 264 3455 | 6241 6283 264 3456 | 6283 1034 264 3457 | 1034 6242 264 3458 | 6242 236 264 3459 | 236 6284 264 3460 | 6284 6243 264 3461 | 6243 6285 264 3462 | 6285 273 264 3463 | 273 259 264 3464 | 259 292 264 3465 | 292 270 264 3466 | 270 6245 264 3467 | 6245 6286 264 3468 | 6286 6287 264 3469 | 6287 254 264 3470 | 254 303 264 3471 | 303 6488 264 3472 | 6488 6288 264 3473 | 6288 6487 264 3474 | 6487 6246 264 3475 | 6246 262 264 3476 | 262 251 264 3477 | 251 301 264 3478 | 301 307 264 3479 | 307 296 264 3480 | 296 319 264 3481 | 319 6253 264 3482 | 6253 6247 264 3483 | 6247 6262 264 3484 | 6262 246 264 3485 | 246 3733 264 3486 | 3733 267 264 3487 | 267 249 144 3488 | 249 3744 144 3489 | 3744 5854 144 3490 | 5854 5725 144 3491 | 5725 5856 144 3492 | 5856 1136 136 3493 | 267 5852 120 3494 | 5852 6637 120 3495 | 6637 1136 105 3496 | 6637 1137 15 3497 | 6480 6515 254 3498 | 6515 6508 254 3499 | 6508 6509 254 3500 | 6509 6510 254 3501 | 6510 6312 254 3502 | 6312 6313 254 3503 | 6313 2421 254 3504 | 2421 2418 254 3505 | 2418 6314 254 3506 | 6314 2427 254 3507 | 2427 2407 254 3508 | 2407 2408 254 3509 | 2408 2399 254 3510 | 2399 3800 254 3511 | 3800 2393 254 3512 | 2393 3394 254 3513 | 3394 2480 254 3514 | 2480 2456 254 3515 | 2456 2460 254 3516 | 2460 2483 254 3517 | 2483 2413 254 3518 | 2413 2423 254 3519 | 2423 2433 254 3520 | 2433 2411 254 3521 | 2411 2402 254 3522 | 2402 6306 254 3523 | 6306 2432 254 3524 | 2432 2487 254 3525 | 2487 6307 254 3526 | 6307 6308 254 3527 | 6308 2453 254 3528 | 2453 6533 254 3529 | 6533 2425 254 3530 | 2425 2454 254 3531 | 2454 6309 254 3532 | 6309 2381 254 3533 | 2381 6310 254 3534 | 6310 2439 254 3535 | 2439 2380 254 3536 | 2380 2395 254 3537 | 2395 2409 254 3538 | 2409 2387 254 3539 | 2387 2442 254 3540 | 2442 2444 254 3541 | 2444 2419 254 3542 | 2419 2469 256 3543 | 2469 3806 256 3544 | 3806 1594 142 3545 | 1594 1580 142 3546 | 1580 6097 142 3547 | 6097 6098 142 3548 | 6098 6099 142 3549 | 6099 6100 142 3550 | 6100 1906 12 3551 | 1906 1897 12 3552 | 1897 3379 12 3553 | 5480 6063 147 3554 | 6063 6352 147 3555 | 6352 6103 147 3556 | 6103 6104 147 3557 | 6104 6105 147 3558 | 6105 6106 147 3559 | 6106 2485 147 3560 | 2485 2449 147 3561 | 2449 2452 147 3562 | 2452 2473 147 3563 | 6100 5480 130 3564 | 2473 2492 145 3565 | 2492 2450 145 3566 | 2450 1895 125 3567 | 3806 2429 114 3568 | 2429 2383 114 3569 | 2383 2465 114 3570 | 2465 1894 114 3571 | 1894 1857 114 3572 | 1857 1899 114 3573 | 1899 1847 114 3574 | 1847 1911 114 3575 | 1911 1890 114 3576 | 1890 1486 114 3577 | 1486 1426 114 3578 | 1426 1433 114 3579 | 1433 1470 114 3580 | 1470 1509 114 3581 | 1509 1423 114 3582 | 1423 1484 114 3583 | 1484 1507 114 3584 | 1507 4352 114 3585 | 4352 4354 180 3586 | 4354 4378 180 3587 | 4378 411 180 3588 | 411 1623 180 3589 | 1623 1495 180 3590 | 1495 1496 180 3591 | 1496 4352 51 3592 | 1496 1452 129 3593 | 2450 3379 20 3594 | 3379 2431 136 3595 | 2431 3363 136 3596 | 3363 2430 136 3597 | 2430 2489 256 3598 | 2489 2468 256 3599 | 2468 2417 256 3600 | 2417 2445 256 3601 | 2445 2443 256 3602 | 2443 2389 256 3603 | 2389 2410 256 3604 | 2410 6299 256 3605 | 6299 6300 256 3606 | 6300 2441 256 3607 | 2441 2400 256 3608 | 2400 6301 256 3609 | 6301 2471 256 3610 | 2471 6298 256 3611 | 6298 2426 256 3612 | 2426 2478 256 3613 | 2478 2458 256 3614 | 2458 6302 256 3615 | 6302 6303 256 3616 | 6303 6304 256 3617 | 6304 6316 256 3618 | 6316 2386 256 3619 | 2386 2401 256 3620 | 2401 2404 256 3621 | 2404 6305 256 3622 | 6305 2424 256 3623 | 2424 2482 256 3624 | 2482 2461 256 3625 | 2461 2457 256 3626 | 2457 2481 256 3627 | 2481 3413 256 3628 | 3413 2394 256 3629 | 2394 3801 256 3630 | 3801 6317 256 3631 | 6317 2414 256 3632 | 2414 3381 256 3633 | 3381 3382 256 3634 | 3382 3383 256 3635 | 3383 3369 256 3636 | 3369 3370 256 3637 | 3370 5907 256 3638 | 5907 6315 256 3639 | 6315 6506 256 3640 | 6506 6507 256 3641 | 6507 6513 256 3642 | 6513 6514 256 3643 | 6514 6480 256 3644 | 1895 5481 120 3645 | 5481 6067 120 3646 | 6067 6068 120 3647 | 6068 6069 120 3648 | 6069 1600 120 3649 | 1600 1562 120 3650 | 1562 2430 120 3651 | 1452 1507 115 3652 | 1507 1484 115 3653 | 1484 1449 115 3654 | 1449 1510 115 3655 | 1510 1471 115 3656 | 1471 1434 115 3657 | 1434 1427 115 3658 | 1427 1884 115 3659 | 1884 1891 115 3660 | 1891 1912 115 3661 | 1912 1848 115 3662 | 1848 1900 115 3663 | 1900 1858 115 3664 | 1858 3379 119 3665 | 6640 1774 76 3666 | 1774 6380 76 3667 | 6380 1742 76 3668 | 1742 962 76 3669 | 962 5478 76 3670 | 5478 5938 76 3671 | 5938 2505 76 3672 | 2505 2572 76 3673 | 2572 5479 76 3674 | 5479 68 76 3675 | 68 6159 76 3676 | 6159 36 76 3677 | 36 6142 76 3678 | 6142 6203 76 3679 | 6203 5475 76 3680 | 5475 6152 84 3681 | 6152 5461 84 3682 | 5461 5463 84 3683 | 5463 6158 84 3684 | 6158 6330 84 3685 | 6330 4092 84 3686 | 4092 2563 84 3687 | 2563 2506 84 3688 | 2506 2504 84 3689 | 2504 5938 84 3690 | 5938 5478 84 3691 | 5478 1735 84 3692 | 1735 1730 84 3693 | 1730 1743 84 3694 | 1743 6380 84 3695 | 6380 1775 84 3696 | 1775 6640 84 3697 | 6147 3620 82 3698 | 3620 6148 82 3699 | 6148 4179 82 3700 | 4179 6144 82 3701 | 6144 6152 82 3702 | 6152 5461 82 3703 | 5461 5463 82 3704 | 5463 6158 82 3705 | 6158 6330 82 3706 | 6330 4092 82 3707 | 4092 2812 82 3708 | 2812 2810 82 3709 | 2810 1785 82 3710 | 1785 6640 82 3711 | 6640 1785 82 3712 | 1785 2811 82 3713 | 2811 2813 82 3714 | 2813 5479 82 3715 | 5479 68 82 3716 | 68 6159 82 3717 | 6159 36 82 3718 | 36 6142 82 3719 | 6142 6203 82 3720 | 6203 6145 82 3721 | 6145 5886 82 3722 | 5886 478 82 3723 | 478 5857 82 3724 | 5857 6147 82 3725 | 2893 2895 94 3726 | 2895 114 94 3727 | 114 1918 94 3728 | 1918 1915 94 3729 | 1915 3349 84 3730 | 3349 1917 84 3731 | 1917 4266 84 3732 | 4266 242 84 3733 | 242 5996 84 3734 | 5996 6249 164 3735 | 6249 6250 164 3736 | 6250 5187 84 3737 | 5187 3022 84 3738 | 3022 298 84 3739 | 298 282 84 3740 | 282 290 84 3741 | 290 4317 84 3742 | 4317 6259 84 3743 | 6259 6261 84 3744 | 6261 248 84 3745 | 248 297 84 3746 | 297 283 76 3747 | 283 5425 76 3748 | 5425 5637 76 3749 | 5637 6267 76 3750 | 6267 6378 76 3751 | 6378 2685 76 3752 | 2685 2677 76 3753 | 2677 2605 76 3754 | 2605 2601 76 3755 | 2601 6384 76 3756 | 6384 1302 76 3757 | 1302 6154 76 3758 | 6154 6347 76 3759 | 6347 6215 76 3760 | 339 340 94 3761 | 340 39 94 3762 | 39 40 94 3763 | 40 41 94 3764 | 41 42 94 3765 | 42 2893 94 3766 | 6215 36 72 3767 | 36 6201 72 3768 | 6201 1316 72 3769 | 1316 6385 72 3770 | 6385 5601 72 3771 | 5601 2605 72 3772 | 2605 2706 72 3773 | 2706 2684 72 3774 | 2684 5423 72 3775 | 5423 6247 72 3776 | 6247 6262 72 3777 | 6262 246 72 3778 | 246 3733 72 3779 | 3733 267 72 3780 | 267 249 80 3781 | 249 3738 80 3782 | 3738 4316 80 3783 | 4316 289 80 3784 | 289 281 80 3785 | 281 299 80 3786 | 299 3021 80 3787 | 3021 5996 80 3788 | 6250 6387 80 3789 | 6387 242 80 3790 | 242 4265 80 3791 | 4265 1916 80 3792 | 1916 3348 80 3793 | 3348 339 80 3794 | 6143 6142 106 3795 | 6142 6203 106 3796 | 6203 5949 106 3797 | 5949 6353 106 3798 | 6353 6636 108 3799 | 6636 6553 108 3800 | 6553 6354 108 3801 | 6354 6554 108 3802 | 6554 6355 108 3803 | 6355 6555 108 3804 | 6555 6556 108 3805 | 6556 6356 108 3806 | 6356 6557 108 3807 | 6557 6357 108 3808 | 6357 6358 108 3809 | 6358 6558 108 3810 | 6558 6359 108 3811 | 6359 6559 108 3812 | 6559 6360 108 3813 | 6360 6631 108 3814 | 6631 6560 108 3815 | 6560 6361 108 3816 | 6361 6632 108 3817 | 6632 6362 108 3818 | 6362 6553 108 3819 | 6553 6562 108 3820 | 6562 3981 108 3821 | 3981 6492 108 3822 | 6492 6152 108 3823 | 6152 5461 108 3824 | 5461 6143 108 3825 | 2288 592 10 3826 | 592 6365 10 3827 | 6365 2311 10 3828 | 2111 587 62 3829 | 587 606 62 3830 | 606 655 62 3831 | 655 1045 62 3832 | 1045 3269 62 3833 | 3120 3090 68 3834 | 3090 3102 68 3835 | 3102 3640 68 3836 | 3640 3155 68 3837 | 3155 3103 68 3838 | 3103 3079 68 3839 | 3079 3090 68 3840 | 3090 3092 68 3841 | 158 16 28 3842 | 16 10 28 3843 | 10 12 28 3844 | 12 14 28 3845 | 14 3 28 3846 | 3 915 28 3847 | 915 916 30 3848 | 916 384 30 3849 | 384 408 30 3850 | 408 402 30 3851 | 402 400 30 3852 | 400 418 28 3853 | 418 375 28 3854 | 375 5678 28 3855 | 5678 6137 28 3856 | 6137 1511 28 3857 | 1511 1439 28 3858 | 1439 1473 28 3859 | 1473 1418 28 3860 | 1418 1417 28 3861 | 1417 9 28 3862 | 9 6 28 3863 | 6 7 28 3864 | 7 12 28 3865 | 12 11 28 3866 | 11 6475 28 3867 | 6475 159 28 3868 | 5856 1137 8 3869 | -------------------------------------------------------------------------------- /muxviz_input/input_Muxviz.txt: -------------------------------------------------------------------------------- 1 | edge_list_Bus.txt;Bus;stops_layout.txt 2 | --------------------------------------------------------------------------------