summaryrefslogtreecommitdiff
path: root/simulator
diff options
context:
space:
mode:
Diffstat (limited to 'simulator')
-rw-r--r--simulator/.editorconfig21
-rw-r--r--simulator/.gitattributes7
-rw-r--r--simulator/.gitignore104
-rw-r--r--simulator/.gitlab-ci.yml34
-rw-r--r--simulator/.travis.yml1
-rw-r--r--simulator/CONTRIBUTING.md0
-rw-r--r--simulator/LICENSE.txt21
-rw-r--r--simulator/README.md46
-rw-r--r--simulator/build.gradle.kts36
-rw-r--r--simulator/buildSrc/build.gradle.kts46
-rw-r--r--simulator/buildSrc/settings.gradle.kts23
-rw-r--r--simulator/buildSrc/src/main/kotlin/dokka-convention.gradle.kts33
-rw-r--r--simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts50
-rw-r--r--simulator/buildSrc/src/main/kotlin/kotlin-library-convention.gradle.kts62
-rw-r--r--simulator/buildSrc/src/main/kotlin/library.kt49
-rw-r--r--simulator/docs/architecture.md53
-rw-r--r--simulator/docs/introduction.md15
-rw-r--r--simulator/docs/run.md5
-rw-r--r--simulator/docs/setup.md47
-rw-r--r--simulator/gradle/wrapper/gradle-wrapper.jarbin0 -> 55190 bytes
-rw-r--r--simulator/gradle/wrapper/gradle-wrapper.properties5
-rwxr-xr-xsimulator/gradlew172
-rw-r--r--simulator/gradlew.bat84
-rw-r--r--simulator/misc/artwork/logo.pngbin0 -> 2825 bytes
-rw-r--r--simulator/odcsim/README.md54
-rw-r--r--simulator/odcsim/build.gradle.kts23
-rw-r--r--simulator/odcsim/odcsim-api/build.gradle.kts40
-rw-r--r--simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/Domain.kt54
-rw-r--r--simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationContext.kt63
-rw-r--r--simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngine.kt58
-rw-r--r--simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngineProvider.kt35
-rw-r--r--simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/EventFlow.kt99
-rw-r--r--simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/StateFlow.kt81
-rw-r--r--simulator/odcsim/odcsim-engine-omega/build.gradle.kts47
-rw-r--r--simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngine.kt264
-rw-r--r--simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngineProvider.kt37
-rw-r--r--simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationAwareLoggerImpl.kt567
-rw-r--r--simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationIgnorantLoggerImpl.kt440
-rw-r--r--simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LoggerImpl.kt74
-rw-r--r--simulator/odcsim/odcsim-engine-omega/src/main/resources/META-INF/services/com.atlarge.odcsim.SimulationEngineProvider1
-rw-r--r--simulator/opendc/README.md8
-rw-r--r--simulator/opendc/build.gradle.kts23
-rw-r--r--simulator/opendc/opendc-compute/build.gradle.kts43
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Flavor.kt41
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/MemoryUnit.kt40
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingNode.kt40
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingUnit.kt38
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Server.kt80
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerEvent.kt53
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerState.kt55
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerContext.kt163
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerManagementContext.kt40
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ShutdownException.kt53
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/EmptyImage.kt40
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImage.kt67
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsHistoryFragment.kt3
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/Image.kt46
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/VmImage.kt34
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt125
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/VmWorkload.kt25
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Metadata.kt34
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt74
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeEvent.kt43
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeState.kt55
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/BareMetalDriver.kt88
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt478
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt45
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/ProvisioningService.kt66
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningService.kt70
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/Hypervisor.kt58
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorEvent.kt78
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorImage.kt57
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/InsufficientMemoryOnServerException.kt3
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/SimpleVirtDriver.kt625
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/VirtDriver.kt56
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/HypervisorView.kt15
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt351
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningEvent.kt49
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningService.kt42
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AllocationPolicy.kt25
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableCoreMemoryAllocationPolicy.kt40
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableMemoryAllocationPolicy.kt15
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ComparableAllocationPolicyLogic.kt52
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/NumberOfActiveServersAllocationPolicy.kt15
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ProvisionedCoresAllocationPolicy.kt42
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/RandomAllocationPolicy.kt51
-rw-r--r--simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ReplayAllocationPolicy.kt34
-rw-r--r--simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImageTest.kt78
-rw-r--r--simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt88
-rw-r--r--simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt73
-rw-r--r--simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/HypervisorTest.kt167
-rw-r--r--simulator/opendc/opendc-core/build.gradle.kts39
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Environment.kt36
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Identity.kt42
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Platform.kt36
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/User.kt35
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Zone.kt48
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/CorrelatedFaultInjector.kt134
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FailureDomain.kt47
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FaultInjector.kt35
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/UncorrelatedFaultInjector.kt58
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/PowerModel.kt32
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/Powerable.kt37
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/Resource.kt37
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/TagContainer.kt36
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceKey.kt47
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistry.kt63
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistryImpl.kt44
-rw-r--r--simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/Workload.kt39
-rw-r--r--simulator/opendc/opendc-experiments-sc18/build.gradle.kts47
-rw-r--r--simulator/opendc/opendc-experiments-sc18/src/main/kotlin/com/atlarge/opendc/experiments/sc18/TestExperiment.kt125
-rw-r--r--simulator/opendc/opendc-experiments-sc18/src/main/resources/env/setup-test.json36
-rw-r--r--simulator/opendc/opendc-experiments-sc20/build.gradle.kts59
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Main.kt162
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Experiment.kt78
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/ExperimentHelpers.kt245
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolio.kt90
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolios.kt198
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Run.kt156
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Scenario.kt48
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/OperationalPhenomena.kt33
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Topology.kt30
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Workload.kt36
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ExperimentMonitor.kt75
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ParquetExperimentMonitor.kt206
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/reporter/ConsoleExperimentReporter.kt75
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ContainerExperimentDescriptor.kt68
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentDescriptor.kt81
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentRunner.kt51
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/TrialExperimentDescriptor.kt32
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionContext.kt45
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionListener.kt48
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionResult.kt42
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentScheduler.kt59
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ThreadPoolExperimentScheduler.kt85
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/internal/DefaultExperimentRunner.kt62
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/Event.kt35
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/HostEvent.kt45
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/ProvisionerEvent.kt39
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/RunEvent.kt35
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/VmEvent.kt43
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetEventWriter.kt121
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetHostEventWriter.kt83
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetProvisionerEventWriter.kt67
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt78
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20ParquetTraceReader.kt98
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20RawParquetTraceReader.kt173
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20StreamingParquetTraceReader.kt301
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20TraceConverter.kt460
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt85
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/main/resources/log4j2.xml49
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt248
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/test/resources/env/single.txt3
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/test/resources/env/topology.txt5
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/meta.parquetbin0 -> 2148 bytes
-rw-r--r--simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/trace.parquetbin0 -> 1672463 bytes
-rw-r--r--simulator/opendc/opendc-format/build.gradle.kts43
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt39
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Model.kt44
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt110
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Model.kt45
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt143
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt119
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt39
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceEntry.kt54
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceReader.kt37
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceWriter.kt45
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/VmPlacementReader.kt37
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt173
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt169
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/PerformanceInterferenceEntry.kt7
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt68
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt208
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20VmPlacementReader.kt53
-rw-r--r--simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReader.kt196
-rw-r--r--simulator/opendc/opendc-format/src/test/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReaderTest.kt23
-rw-r--r--simulator/opendc/opendc-format/src/test/resources/swf_trace.txt6
-rw-r--r--simulator/opendc/opendc-workflows/build.gradle.kts42
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/JobState.kt41
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerListener.kt39
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowService.kt361
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskState.kt85
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskStatus.kt35
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowEvent.kt76
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowSchedulerMode.kt112
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowService.kt52
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/StagePolicy.kt38
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/DurationJobOrderPolicy.kt102
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobAdmissionPolicy.kt72
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobOrderPolicy.kt33
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LimitJobAdmissionPolicy.kt47
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LoadJobAdmissionPolicy.kt47
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/NullJobAdmissionPolicy.kt39
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/RandomJobOrderPolicy.kt62
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SizeJobOrderPolicy.kt40
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SubmissionTimeJobOrderPolicy.kt40
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FirstFitResourceSelectionPolicy.kt39
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FunctionalResourceFilterPolicy.kt43
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/RandomResourceSelectionPolicy.kt47
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceFilterPolicy.kt47
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceSelectionPolicy.kt34
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/ActiveTaskOrderPolicy.kt70
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/BalancingTaskEligibilityPolicy.kt78
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/CompletionTaskOrderPolicy.kt66
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependenciesTaskOrderPolicy.kt41
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependentsTaskOrderPolicy.kt41
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationHistoryTaskOrderPolicy.kt72
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationTaskOrderPolicy.kt68
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitPerJobTaskEligibilityPolicy.kt70
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitTaskEligibilityPolicy.kt45
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LoadTaskEligibilityPolicy.kt45
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/NullTaskEligibilityPolicy.kt43
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskEligibilityPolicy.kt47
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskOrderPolicy.kt62
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/SubmissionTimeTaskOrderPolicy.kt41
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskEligibilityPolicy.kt72
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskOrderPolicy.kt34
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Job.kt52
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Metadata.kt30
-rw-r--r--simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Task.kt50
-rw-r--r--simulator/opendc/opendc-workflows/src/test/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerIntegrationTest.kt125
-rw-r--r--simulator/opendc/opendc-workflows/src/test/resources/environment.json36
-rw-r--r--simulator/opendc/opendc-workflows/src/test/resources/trace.gwf30747
-rw-r--r--simulator/settings.gradle.kts33
224 files changed, 47119 insertions, 0 deletions
diff --git a/simulator/.editorconfig b/simulator/.editorconfig
new file mode 100644
index 00000000..1cdb4ce2
--- /dev/null
+++ b/simulator/.editorconfig
@@ -0,0 +1,21 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+indent_style = space
+
+# ktlint
+[*.{kt, kts}]
+disabled_rules = import-ordering
diff --git a/simulator/.gitattributes b/simulator/.gitattributes
new file mode 100644
index 00000000..12924725
--- /dev/null
+++ b/simulator/.gitattributes
@@ -0,0 +1,7 @@
+# https://help.github.com/articles/dealing-with-line-endings/
+#
+# These are explicitly windows files and should use crlf
+*.bat text eol=crlf
+
+# See https://github.com/gradle/gradle/issues/12248
+buildSrc/src/main/**/*.gradle.kts text eol=lf
diff --git a/simulator/.gitignore b/simulator/.gitignore
new file mode 100644
index 00000000..4ec6f778
--- /dev/null
+++ b/simulator/.gitignore
@@ -0,0 +1,104 @@
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+# data
+data/
+
+### JetBrains
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff:
+.idea/workspace.xml
+.idea/tasks.xml
+.idea/dictionaries
+.idea/vcs.xml
+.idea/jsLibraryMappings.xml
+
+# Sensitive or high-churn files:
+.idea/dataSources.ids
+.idea/dataSources.xml
+.idea/dataSources.local.xml
+.idea/sqlDataSources.xml
+.idea/dynamic.xml
+.idea/uiDesigner.xml
+
+# Gradle:
+.idea/gradle.xml
+.idea/libraries
+
+# Mongo Explorer plugin:
+.idea/mongoSettings.xml
+
+## File-based project format:
+*.iws
+
+## Plugin-specific files:
+
+# IntelliJ
+/out/
+.idea/
+*/out
+*.iml
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Swap files
+*.swp*
+
+### Eclipse
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.recommenders
+
+# Eclipse Core
+.project
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# JDT-specific (Eclipse Java Development Tools)
+.classpath
+
+# Java annotation processor (APT)
+.factorypath
+
+# Code Recommenders
+.recommenders/
+
+### Gradle
+.gradle
+build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle/wrapper/gradle-wrapper.jar
+
+# Cache of project
+.gradletasknamecache
+
+# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
+# gradle/wrapper/gradle-wrapper.properties
diff --git a/simulator/.gitlab-ci.yml b/simulator/.gitlab-ci.yml
new file mode 100644
index 00000000..a095f7e7
--- /dev/null
+++ b/simulator/.gitlab-ci.yml
@@ -0,0 +1,34 @@
+image: gradle:6.1-jdk13
+
+variables:
+ GRADLE_OPTS: "-Dorg.gradle.daemon=false"
+
+before_script:
+ - export GRADLE_USER_HOME=`pwd`/.gradle
+
+stages:
+ - build
+ - test
+
+build:
+ stage: build
+ script:
+ - gradle --build-cache assemble
+ allow_failure: false
+ cache:
+ key: "$CI_COMMIT_REF_NAME"
+ policy: push
+ paths:
+ - build
+ - .gradle
+
+test:
+ stage: test
+ script:
+ - gradle check
+ cache:
+ key: "$CI_COMMIT_REF_NAME"
+ policy: pull
+ paths:
+ - build
+ - .gradle
diff --git a/simulator/.travis.yml b/simulator/.travis.yml
new file mode 100644
index 00000000..dff5f3a5
--- /dev/null
+++ b/simulator/.travis.yml
@@ -0,0 +1 @@
+language: java
diff --git a/simulator/CONTRIBUTING.md b/simulator/CONTRIBUTING.md
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/simulator/CONTRIBUTING.md
diff --git a/simulator/LICENSE.txt b/simulator/LICENSE.txt
new file mode 100644
index 00000000..57288ae2
--- /dev/null
+++ b/simulator/LICENSE.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 atlarge-research
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/simulator/README.md b/simulator/README.md
new file mode 100644
index 00000000..1bc866cf
--- /dev/null
+++ b/simulator/README.md
@@ -0,0 +1,46 @@
+<h1 align="center">
+ <a href="http://opendc.org/">
+ <img src="misc/artwork/logo.png" width="100" alt="OpenDC">
+ </a>
+ <br>
+ OpenDC Simulator
+</h1>
+<p align="center">
+Collaborative Datacenter Simulation and Exploration for Everybody
+</p>
+<p align="center">
+ <a href="https://travis-ci.org/atlarge-research/opendc-simulator">
+ <img src="https://travis-ci.org/atlarge-research/opendc-simulator.svg?branch=master" alt="Build Status">
+ </a>
+ <a href="https://opensource.org/licenses/MIT">
+ <img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License">
+ </a>
+</p>
+
+## Introduction
+This repository hosts the source code and development of the simulation component of the [OpenDC](https://opendc.org) project. This component is responsible for modelling and simulation of datacenters and their components. We have structured the repository into two individual subprojects:
+- **[odcsim](/odcsim)**
+ A framework for discrete event simulation using the [Kotlin](https://kotlinlang.org/) language.
+- **[opendc](/opendc)**
+ A collection of models for simulating clouds, datacenters and their components using the **odcsim** framework.
+
+## Documentation
+Check out the [Getting Started](#getting-started) section for a quick
+overview.
+The documentation is located in the [docs/](docs) directory and is divided as follows:
+1. [Introduction](docs/introduction.md)
+1. [Toolchain Setup](docs/setup.md)
+2. [Architecture Overview](docs/architecture.md)
+3. [Running an Experiment](docs/run.md)
+
+## Getting Started
+TODO
+
+## Contributing
+### Contributing Guide
+Read our [contributing guide](CONTRIBUTING.md) to learn about our
+development process, how to propose bug fixes and improvements, and how
+to build and test your changes to the project.
+
+### License
+The OpenDC simulator is available under the [MIT license](https://github.com/atlarge-research/opendc-simulator/blob/master/LICENSE.txt).
diff --git a/simulator/build.gradle.kts b/simulator/build.gradle.kts
new file mode 100644
index 00000000..90f43749
--- /dev/null
+++ b/simulator/build.gradle.kts
@@ -0,0 +1,36 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+plugins {
+ `dokka-convention`
+}
+
+allprojects {
+ group = "com.atlarge.opendc"
+ version = "2.0.0"
+}
+
+tasks.wrapper {
+ gradleVersion = "6.0"
+}
diff --git a/simulator/buildSrc/build.gradle.kts b/simulator/buildSrc/build.gradle.kts
new file mode 100644
index 00000000..6ed95c71
--- /dev/null
+++ b/simulator/buildSrc/build.gradle.kts
@@ -0,0 +1,46 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+plugins {
+ `kotlin-dsl`
+}
+
+kotlinDslPluginOptions {
+ experimentalWarning.set(false)
+}
+
+
+/* Project configuration */
+repositories {
+ jcenter()
+ maven {
+ url = uri("https://plugins.gradle.org/m2/")
+ }
+}
+
+dependencies {
+ implementation(kotlin("gradle-plugin", version = "1.3.70"))
+ implementation("org.jlleitschuh.gradle:ktlint-gradle:9.2.1")
+ implementation("org.jetbrains.dokka:dokka-gradle-plugin:0.10.1")
+}
diff --git a/simulator/buildSrc/settings.gradle.kts b/simulator/buildSrc/settings.gradle.kts
new file mode 100644
index 00000000..cc3f3add
--- /dev/null
+++ b/simulator/buildSrc/settings.gradle.kts
@@ -0,0 +1,23 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
diff --git a/simulator/buildSrc/src/main/kotlin/dokka-convention.gradle.kts b/simulator/buildSrc/src/main/kotlin/dokka-convention.gradle.kts
new file mode 100644
index 00000000..95183df2
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/dokka-convention.gradle.kts
@@ -0,0 +1,33 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+import org.jetbrains.dokka.gradle.DokkaTask
+
+plugins {
+ id("org.jetbrains.dokka")
+}
+
+tasks.getting(DokkaTask::class) {
+ outputFormat = "html"
+}
diff --git a/simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts
new file mode 100644
index 00000000..8c07fdea
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts
@@ -0,0 +1,50 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+plugins {
+ jacoco
+}
+
+repositories {
+ mavenLocal()
+ mavenCentral()
+}
+
+task<JacocoReport>("jacocoTestReport") {
+ group = "Coverage reports"
+ description = "Generates an aggregate report from all subprojects"
+
+ val jacocoReportTasks = subprojects.map { it.tasks.withType<JacocoReport>() }
+ dependsOn(jacocoReportTasks)
+ executionData(jacocoReportTasks)
+
+ subprojects.forEach { testedProject ->
+ val sourceSets = testedProject.convention.findPlugin(JavaPluginConvention::class)?.sourceSets ?: return@forEach
+
+ this@task.additionalSourceDirs.from(sourceSets["main"].allSource.srcDirs)
+ this@task.sourceDirectories.from(sourceSets["main"].allSource.srcDirs)
+ this@task.classDirectories.from(sourceSets["main"].output)
+ }
+}
diff --git a/simulator/buildSrc/src/main/kotlin/kotlin-library-convention.gradle.kts b/simulator/buildSrc/src/main/kotlin/kotlin-library-convention.gradle.kts
new file mode 100644
index 00000000..c0c37a09
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/kotlin-library-convention.gradle.kts
@@ -0,0 +1,62 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
+plugins {
+ `java-library`
+ kotlin("jvm")
+ id("org.jlleitschuh.gradle.ktlint")
+ jacoco
+}
+
+/* Project configuration */
+repositories {
+ jcenter()
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+}
+
+tasks.withType<KotlinCompile>().configureEach {
+ kotlinOptions.jvmTarget = "1.8"
+ kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
+}
+
+tasks.test {
+ useJUnitPlatform()
+ reports.html.isEnabled = true
+}
+
+
+tasks.jacocoTestReport {
+ reports {
+ html.isEnabled = true
+ }
+}
+
+dependencies {
+ implementation(kotlin("stdlib"))
+}
diff --git a/simulator/buildSrc/src/main/kotlin/library.kt b/simulator/buildSrc/src/main/kotlin/library.kt
new file mode 100644
index 00000000..1a3c30a6
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/library.kt
@@ -0,0 +1,49 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/**
+ * This object contains the versions of the dependencies shared by the different
+ * subprojects.
+ */
+object Library {
+ /**
+ * The library for testing the projects.
+ */
+ val JUNIT_JUPITER = "5.6.0"
+
+ /**
+ * The library for hosting the tests.
+ */
+ val JUNIT_PLATFORM = "1.6.0"
+
+ /**
+ * Logging facade.
+ */
+ val SLF4J = "1.7.30"
+
+ /**
+ * Kotlin coroutines support
+ */
+ val KOTLINX_COROUTINES = "1.3.7"
+}
diff --git a/simulator/docs/architecture.md b/simulator/docs/architecture.md
new file mode 100644
index 00000000..e84686e3
--- /dev/null
+++ b/simulator/docs/architecture.md
@@ -0,0 +1,53 @@
+# 3. Architecture Overview
+The OpenDC simulator has two main components: `odcsim`, a general framework for discrete event-based simulation, and `opendc` a collection of components using `odcsim` to simulate datacenters. While `opendc` is the focus of this project and thus these docs, we also shortly explain what `odcsim` looks like, to give you a better understanding of the other concepts.
+
+**TODO: Add a schematic general overview here.**
+
+## 3.1 `odcsim`
+The `odcsim` framework has an API module (`odcsim-api`) and an module implementing this API (`odcsim-engine-omega`).
+
+### 3.1.1 `odcsim-api`
+The API defines the behavior of any implementation adhering to the `odcsim` framework. It centers around a `SimulationEngine`, which can be created through a `SimulationEngineProvider`.
+
+A simulation consists of a number of simulation domains (logical processes) which itself consist of several coroutines
+whose execution is serialized. That is, we guarantee that no two coroutines run at the same time.
+
+### 3.1.2 `odcsim-engine-omega`
+The implementation is an executable interpretation of this API. The main class is `OmegaSimulationEngine` and takes care of transmitting timestamped events between processes. It ensures that message delivery order is the same as sent order.
+
+You might note that the simulation framework and the simulator itself makes extensive use of Kotlin's coroutine feature. This is a paradigm for asynchronous programming. If you are not familiar with coroutines, we suggest having a look at the [Kotlin documentation on this](https://kotlinlang.org/docs/reference/coroutines-overview.html), especially their [quick start guide](https://kotlinlang.org/docs/tutorials/coroutines/coroutines-basic-jvm.html) and their [hands-on guide](https://play.kotlinlang.org/hands-on/Introduction%20to%20Coroutines%20and%20Channels/01_Introduction).
+
+## 3.2 `opendc`
+The `opendc` package consists of a number of submodules, the most feature-rich being `opendc-compute`. Below, we will explain each in turn.
+
+### 3.2.1 `opendc-core`
+This module defines a base model for datacenter simulation, establishing core concepts and terminology of datacenters
+that we share across the various modules. Other `opendc` modules build on this model and extend it in various directions (e.g. virtual machines or workflows).
+
+### 3.2.2 `opendc-compute`
+This module is concerned with modeling cloud computing services (such as [Amazon EC2](https://aws.amazon.com/ec2/) and [Google Compute Engine](https://cloud.google.com/compute)) and provides the following features:
+
+1. **Model for simulated workloads**
+ We represent workloads as bootable disk images (called `Image`) which characterize the runtime behavior
+ of a running server in terms of the cpu time they require over time.
+2. **Bare-metal management & provisioning**
+ We provide models for simulating management of bare-metal machines (`Node`) and deploying workloads on it (using `BareMetalDriver`).
+ Furthermore, we also include functionality for simulating and experimenting with (custom) provisioning policies on a pool of bare-metal machies (using `ProvisioningService`).
+3. **Virtual machine management, scheduling and provisioning**
+ We provide functionality for simulating deployment of multiple `Image`s on a single machine using a hypervisor, which
+ is concerned with scheduling/distributing the load of the running guest machines on the host machine. This may be used to experiment with overcommitting of virtual resources.
+ Moreover, we also model provisioning policies for virtual machine provisioning with a pool of host machines.
+
+### 3.2.3 `opendc-workflows`
+This module contains all workflow-related models and logic of the simulator. The models for workflows can be found in the `workload` package: A `Job` and a `Task`. The logic concerning the scheduling of a workflow is contained in the `service` package. It follows the Reference Architecture for Datacenter Schedulers by [Andreadis et al.](https://dl.acm.org/doi/10.5555/3291656.3291706). For a good introduction into datacenter schedulers and to fully grasp the modeling approach taken, we highly recommend reading this publication (or its more extensive [technical report](https://arxiv.org/pdf/1808.04224.pdf)).
+
+The `service` package merits its own explanation. A scheduler is defined by the `StageWorkflowScheduler` class, according to the architecture. The main component, however, is the `StageWorkflowSchedulerLogic`, responsible for pulling together the different scheduling stage implementations from the `stage` package. The scheduler is managed by the `WorkflowService`, which also orchestrates the lifecycle of a workflow.
+
+### 3.2.4 `opendc-format`
+Running scientific experiments does not require running the full OpenDC stack. We also support directly reading out environment and workload trace files. Example implementations of these can be found in the `opendc-format` module. To parse a different format, you can take one of the existing parsers and adapt it to your needs.
+
+### 3.2.5 `opendc-experiments-sc18`
+This is a module created for the experiments of our [SC18 publication](https://dl.acm.org/doi/10.5555/3291656.3291706). We aim to separate these kinds of custom experiment setups from the rest of the codebase by placing them in separate modules.
+
+---
+[< Previous](setup.md) | [Next >](run.md)
diff --git a/simulator/docs/introduction.md b/simulator/docs/introduction.md
new file mode 100644
index 00000000..711a829b
--- /dev/null
+++ b/simulator/docs/introduction.md
@@ -0,0 +1,15 @@
+# 1. Introduction
+This repository hosts the source code and development of the simulation component of the [OpenDC](https://opendc.org) project. OpenDC is a simulation platform for cloud infrastructure, with the aim of making datacenter concepts and technology accessible to everyone. To learn more about OpenDC, have a look through our [vision paper](https://ieeexplore.ieee.org/document/8121623)!
+
+The simulator is one of the components of the OpenDC stack. It is responsible for modelling and simulation of datacenters and their components. This entails receiving environments and experiment configurations from up the stack, simulating these configurations, and reporting back results.
+
+The simulator is composed of two main components:
+- **[odcsim](/odcsim)**
+ A framework for discrete event simulation.
+- **[opendc](/opendc)**
+ A collection of models for simulating clouds, datacenters and their components, using the **odcsim** framework.
+
+In the remainder of this documentation, we walk you through a typical toolchain setup for amending OpenDC in your own way, explain the architecture of the system, and show you how to run your own experiments with the simulator.
+
+---
+[Next >](setup.md)
diff --git a/simulator/docs/run.md b/simulator/docs/run.md
new file mode 100644
index 00000000..76be70ba
--- /dev/null
+++ b/simulator/docs/run.md
@@ -0,0 +1,5 @@
+# 4. Running an Experiment
+**TODO: What did we do for SC18?**
+
+---
+[< Previous](architecture.md)
diff --git a/simulator/docs/setup.md b/simulator/docs/setup.md
new file mode 100644
index 00000000..801dfe58
--- /dev/null
+++ b/simulator/docs/setup.md
@@ -0,0 +1,47 @@
+# 2. Toolchain Setup
+The OpenDC simulator is built using the [Kotlin](https://kotlinlang.org/) language. This is a JVM-based language that should appear familiar to programmers knowledgeable in Java or Scala. For a short interactive introduction to Kotlin, the [Learn Kotlin By Example](https://play.kotlinlang.org/byExample/overview) docs are a great place to start.
+
+For the build and dependency toolchain, we use [Gradle](https://gradle.org/). You will likely not need to change the Gradle build configurations of components, but you will use Gradle to execute builds and tests on the codebase.
+
+Follow the steps below to get it all set up!
+
+## 2.1 Installing Java
+Kotlin requires a Java installation of version 8 or higher. Make sure to install the [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html), not only the JRE (the JDK also includes a JRE).
+
+## 2.2 Building and Developing
+With Java installed, we're ready to set up the development environment on your machine. You can either use a visual IDE or work from a command line shell. We outline both approaches below, feel free to choose which you are most comfortable with. If in doubt which one to choose, we suggest going with the first one.
+
+## 2.2.1 Setup With IntelliJ IDEA
+We suggest using [IntelliJ IDEA](https://www.jetbrains.com/idea/) as development environment. Once you have installed any version of this IDE on your machine, choose "Get from Version Control" in the new project dialogue. Enter `https://atlarge.ewi.tudelft.nl/gitlab/opendc/opendc-simulator` as URL and submit your credentials when asked. Open the project once it's ready fetching the codebase, and let it set up with the defaults (IntelliJ will recognize that this is a Gradle codebase).
+
+You will now be prompted in a dialogue to enable auto-import for Gradle, which we suggest you do. Wait for any progress bars in the lower bar to disappear and then look for the Gradle context menu on the right hand side. In it, go to `opendc-simulator > Tasks > verification > test`. This will build the codebase and run checks to verify that tests pass. If you get a `BUILD SUCCESSFUL` message, you're ready to go to the [next section](architecture.md)!
+
+## 2.2.2 Setup With Command Line
+First, clone the repository with the following command:
+
+```shell script
+git clone https://atlarge.ewi.tudelft.nl/gitlab/opendc/opendc-simulator
+```
+
+And enter the directory:
+
+```shell script
+cd opendc-simulator
+```
+
+If on Windows, run the batch file included in the root, as follows:
+
+```commandline
+gradlew.bat test
+```
+
+If on Linux/macOS, run the shell script included in the root, as follows:
+
+```shell script
+./gradlew test
+```
+
+If the build is successful, you are ready to go to the next section!
+
+---
+[< Previous](introduction.md) | [Next >](architecture.md)
diff --git a/simulator/gradle/wrapper/gradle-wrapper.jar b/simulator/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..87b738cb
--- /dev/null
+++ b/simulator/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/simulator/gradle/wrapper/gradle-wrapper.properties b/simulator/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..a4b44297
--- /dev/null
+++ b/simulator/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/simulator/gradlew b/simulator/gradlew
new file mode 100755
index 00000000..af6708ff
--- /dev/null
+++ b/simulator/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/simulator/gradlew.bat b/simulator/gradlew.bat
new file mode 100644
index 00000000..6d57edc7
--- /dev/null
+++ b/simulator/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/simulator/misc/artwork/logo.png b/simulator/misc/artwork/logo.png
new file mode 100644
index 00000000..d743038b
--- /dev/null
+++ b/simulator/misc/artwork/logo.png
Binary files differ
diff --git a/simulator/odcsim/README.md b/simulator/odcsim/README.md
new file mode 100644
index 00000000..b930315a
--- /dev/null
+++ b/simulator/odcsim/README.md
@@ -0,0 +1,54 @@
+<h1 align="center">
+ <a href="http://opendc.org/">
+ <img src="../misc/artwork/logo.png" width="100" alt="OpenDC">
+ </a>
+ <br>
+ odcsim
+</h1>
+
+## Introduction
+**odcsim** is a framework for discrete event simulation in Kotlin, used
+by the [OpenDC](https://opendc.org) project.
+Simulations are defined in terms of a hierarchical grouping of actors
+and the interactions between these actors
+([Actor model](https://en.wikipedia.org/wiki/Actor_model)).
+
+## Getting Started
+
+The instructions below are meant for when you would like to use `odcsim` separately from `opendc`. If you simply want to use the simulator, you do not need to follow them, please refer to the [main README](../README.md) for instructions.
+
+### Installation
+Please add the required packages as dependency in your project.
+Releases are available in the [Maven Central Repository](https://search.maven.org/).
+
+The package `odcsim-core` is required to construct a simulation model.
+A `odcsim-engine-*` package is needed for running the simulation
+model.
+
+#### Gradle
+Groovy
+```groovy
+implementation 'com.atlarge.odcsim:odcsim-api:2.0.0'
+runtime 'com.atlarge.odcsim:odcsim-engine-omega:2.0.0'
+```
+Kotlin
+```groovy
+implementation("com.atlarge.odcsim:odcsim-api:2.0.0")
+runtime("com.atlarge.odcsim:odcsim-engine-omega:2.0.0")
+```
+
+#### Maven
+```xml
+<dependency>
+ <groupId>com.atlarge.odcsim</groupId>
+ <artifactId>odcsim-api</artifactId>
+ <version>2.0.0</version>
+</dependency>
+
+<dependency>
+ <groupId>com.atlarge.odcsim</groupId>
+ <artifactId>odcsim-engine-omega</artifactId>
+ <version>2.0.0</version>
+</dependency>
+```
+
diff --git a/simulator/odcsim/build.gradle.kts b/simulator/odcsim/build.gradle.kts
new file mode 100644
index 00000000..cc3f3add
--- /dev/null
+++ b/simulator/odcsim/build.gradle.kts
@@ -0,0 +1,23 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
diff --git a/simulator/odcsim/odcsim-api/build.gradle.kts b/simulator/odcsim/odcsim-api/build.gradle.kts
new file mode 100644
index 00000000..c8c6c90c
--- /dev/null
+++ b/simulator/odcsim/odcsim-api/build.gradle.kts
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Framework for discrete event simulation in Kotlin"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+}
+
+dependencies {
+ implementation(kotlin("stdlib"))
+ api("org.slf4j:slf4j-api:${Library.SLF4J}")
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Library.KOTLINX_COROUTINES}")
+
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+}
diff --git a/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/Domain.kt b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/Domain.kt
new file mode 100644
index 00000000..c850952c
--- /dev/null
+++ b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/Domain.kt
@@ -0,0 +1,54 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim
+
+import kotlinx.coroutines.CoroutineScope
+
+/**
+ * An isolated execution unit that runs concurrently in simulation to the other simulation domains. A domain defines a
+ * logical boundary between processes in simulation.
+ */
+public interface Domain : CoroutineScope {
+ /**
+ * The name of this domain.
+ */
+ public val name: String
+
+ /**
+ * The parent domain to which the lifecycle of this domain is bound. In case this is a root domain, this refers to
+ * itself.
+ */
+ public val parent: Domain
+
+ /**
+ * Construct an anonymous simulation sub-domain that is bound to the lifecycle of this domain.
+ */
+ public fun newDomain(): Domain
+
+ /**
+ * Construct a new simulation sub-domain with the specified [name].
+ */
+ public fun newDomain(name: String): Domain
+}
diff --git a/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationContext.kt b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationContext.kt
new file mode 100644
index 00000000..c51d1d8b
--- /dev/null
+++ b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationContext.kt
@@ -0,0 +1,63 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2018 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim
+
+import java.time.Clock
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.coroutineContext
+import org.slf4j.Logger
+
+/**
+ * Represents the execution context of a simulation domain.
+ */
+public interface SimulationContext : CoroutineContext.Element {
+ /**
+ * Key for [SimulationContext] instance in the coroutine context.
+ */
+ companion object Key : CoroutineContext.Key<SimulationContext>
+
+ /**
+ * The reference to the current simulation domain.
+ */
+ public val domain: Domain
+
+ /**
+ * The clock tracking the simulation time.
+ */
+ public val clock: Clock
+
+ /**
+ * A logger instance tied to the logical process.
+ */
+ public val log: Logger
+}
+
+/**
+ * The simulation context of the current coroutine.
+ */
+@Suppress("WRONG_MODIFIER_TARGET")
+public suspend inline val simulationContext: SimulationContext
+ @Suppress("ILLEGAL_SUSPEND_PROPERTY_ACCESS")
+ get() = coroutineContext[SimulationContext] ?: throw IllegalStateException("No simulation context available")
diff --git a/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngine.kt b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngine.kt
new file mode 100644
index 00000000..db05cb1d
--- /dev/null
+++ b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngine.kt
@@ -0,0 +1,58 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2018 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim
+
+/**
+ * An engine for managing logical processes represented as [Behavior] during simulation.
+ *
+ * An implementation of this interface should be provided by an engine. See for example *odcsim-engine-omega*,
+ * which is the reference implementation of the *odcsim* API.
+ */
+public interface SimulationEngine {
+ /**
+ * The name of this engine instance, used to distinguish between multiple engines running within the same JVM.
+ */
+ public val name: String
+
+ /**
+ * Construct an anonymous root simulation domain.
+ */
+ public fun newDomain(): Domain
+
+ /**
+ * Construct a new root simulation domain with the specified [name].
+ */
+ public fun newDomain(name: String): Domain
+
+ /**
+ * Run the simulation.
+ */
+ public suspend fun run()
+
+ /**
+ * Terminates this engine in an asynchronous fashion.
+ */
+ public suspend fun terminate()
+}
diff --git a/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngineProvider.kt b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngineProvider.kt
new file mode 100644
index 00000000..a975fa3c
--- /dev/null
+++ b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/SimulationEngineProvider.kt
@@ -0,0 +1,35 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2018 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim
+
+/**
+ * A factory for [SimulationEngine] instances that allows users to dynamically load engine implementations.
+ */
+public interface SimulationEngineProvider {
+ /**
+ * Construct an [SimulationEngine] with the given [name].
+ */
+ public operator fun invoke(name: String): SimulationEngine
+}
diff --git a/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/EventFlow.kt b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/EventFlow.kt
new file mode 100644
index 00000000..5d9af9ec
--- /dev/null
+++ b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/EventFlow.kt
@@ -0,0 +1,99 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim.flow
+
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.FlowPreview
+import kotlinx.coroutines.InternalCoroutinesApi
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.SendChannel
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.FlowCollector
+import kotlinx.coroutines.flow.consumeAsFlow
+import java.util.WeakHashMap
+
+/**
+ * A [Flow] that can be used to emit events.
+ */
+public interface EventFlow<T> : Flow<T> {
+ /**
+ * Emit the specified [event].
+ */
+ public fun emit(event: T)
+
+ /**
+ * Close the flow.
+ */
+ public fun close()
+}
+
+/**
+ * Creates a new [EventFlow].
+ */
+@Suppress("FunctionName")
+public fun <T> EventFlow(): EventFlow<T> = EventFlowImpl()
+
+/**
+ * Internal implementation of the [EventFlow] class.
+ */
+@OptIn(ExperimentalCoroutinesApi::class, FlowPreview::class)
+private class EventFlowImpl<T> : EventFlow<T> {
+ private var closed: Boolean = false
+ private val subscribers = WeakHashMap<SendChannel<T>, Unit>()
+
+ override fun emit(event: T) {
+ synchronized(this) {
+ for ((chan, _) in subscribers) {
+ chan.offer(event)
+ }
+ }
+ }
+
+ override fun close() {
+ synchronized(this) {
+ closed = true
+
+ for ((chan, _) in subscribers) {
+ chan.close()
+ }
+ }
+ }
+
+ @InternalCoroutinesApi
+ override suspend fun collect(collector: FlowCollector<T>) {
+ val channel: Channel<T>
+ synchronized(this) {
+ if (closed) {
+ return
+ }
+
+ channel = Channel(Channel.UNLIMITED)
+ subscribers[channel] = Unit
+ }
+ channel.consumeAsFlow().collect(collector)
+ }
+
+ override fun toString(): String = "EventFlow"
+}
diff --git a/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/StateFlow.kt b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/StateFlow.kt
new file mode 100644
index 00000000..50add0ad
--- /dev/null
+++ b/simulator/odcsim/odcsim-api/src/main/kotlin/com/atlarge/odcsim/flow/StateFlow.kt
@@ -0,0 +1,81 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim.flow
+
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.FlowPreview
+import kotlinx.coroutines.InternalCoroutinesApi
+import kotlinx.coroutines.channels.BroadcastChannel
+import kotlinx.coroutines.channels.ConflatedBroadcastChannel
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.FlowCollector
+import kotlinx.coroutines.flow.asFlow
+
+/**
+ * A [Flow] that contains a single value that changes over time.
+ *
+ * This class exists to implement the DataFlow/StateFlow functionality that will be implemented in `kotlinx-coroutines`
+ * in the future, but is not available yet.
+ * See: https://github.com/Kotlin/kotlinx.coroutines/pull/1354
+ */
+public interface StateFlow<T> : Flow<T> {
+ /**
+ * The current value of this flow.
+ *
+ * Setting a value that is [equal][Any.equals] to the previous one does nothing.
+ */
+ public var value: T
+}
+
+/**
+ * Creates a [StateFlow] with a given initial [value].
+ */
+@Suppress("FunctionName")
+public fun <T> StateFlow(value: T): StateFlow<T> = StateFlowImpl(value)
+
+/**
+ * Internal implementation of the [StateFlow] interface.
+ */
+@OptIn(ExperimentalCoroutinesApi::class, FlowPreview::class)
+private class StateFlowImpl<T>(initialValue: T) : StateFlow<T> {
+ /**
+ * The [BroadcastChannel] to back this flow.
+ */
+ private val chan = ConflatedBroadcastChannel(initialValue)
+
+ /**
+ * The internal [Flow] backing this flow.
+ */
+ private val flow = chan.asFlow()
+
+ public override var value: T = initialValue
+ set(value) {
+ chan.offer(value)
+ field = value
+ }
+
+ @InternalCoroutinesApi
+ override suspend fun collect(collector: FlowCollector<T>) = flow.collect(collector)
+}
diff --git a/simulator/odcsim/odcsim-engine-omega/build.gradle.kts b/simulator/odcsim/odcsim-engine-omega/build.gradle.kts
new file mode 100644
index 00000000..98e2469e
--- /dev/null
+++ b/simulator/odcsim/odcsim-engine-omega/build.gradle.kts
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2018 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Single-threaded reference implementation for the odcsim API"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+}
+
+/* Project configuration */
+repositories {
+ jcenter()
+}
+
+dependencies {
+ api(project(":odcsim:odcsim-api"))
+
+ implementation(kotlin("stdlib"))
+ implementation("org.jetbrains:annotations:17.0.0")
+
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+ testRuntimeOnly("org.slf4j:slf4j-simple:${Library.SLF4J}")
+}
diff --git a/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngine.kt b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngine.kt
new file mode 100644
index 00000000..e675b877
--- /dev/null
+++ b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngine.kt
@@ -0,0 +1,264 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2018 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim.engine.omega
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.odcsim.SimulationContext
+import com.atlarge.odcsim.SimulationEngine
+import com.atlarge.odcsim.engine.omega.logging.LoggerImpl
+import java.time.Clock
+import java.time.Instant
+import java.time.ZoneId
+import java.util.PriorityQueue
+import java.util.UUID
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.coroutineContext
+import kotlinx.coroutines.CancellableContinuation
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineName
+import kotlinx.coroutines.Delay
+import kotlinx.coroutines.DisposableHandle
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.InternalCoroutinesApi
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.Runnable
+import kotlinx.coroutines.SupervisorJob
+import org.jetbrains.annotations.Async
+import org.slf4j.Logger
+
+/**
+ * The reference implementation of the [SimulationEngine] instance for the OpenDC simulation core.
+ *
+ * This engine implementation is a single-threaded implementation, running logical processes synchronously and
+ * provides a single priority queue for all events (messages, ticks, etc) that occur.
+ *
+ * @param name The name of the engine instance.
+ */
+public class OmegaSimulationEngine(override val name: String) : SimulationEngine {
+ /**
+ * The state of the actor system.
+ */
+ private var state: SimulationEngineState = SimulationEngineState.CREATED
+
+ /**
+ * The clock tracking the simulation time.
+ */
+ private val clock: VirtualClock = VirtualClock(0)
+
+ /**
+ * The event queue to process
+ */
+ private val queue: PriorityQueue<Event> = PriorityQueue(Comparator<Event> { lhs, rhs ->
+ // Note that Comparator gives better performance than Comparable according to
+ // profiling
+ val cmp = lhs.time.compareTo(rhs.time)
+ if (cmp == 0) lhs.id.compareTo(rhs.id) else cmp
+ })
+
+ /**
+ * The active processes in the simulation engine.
+ */
+ private val registry: MutableMap<String, Domain> = HashMap()
+
+ /**
+ * A unique increasing identifier assigned to each event, needed because otherwise two events occurring in sequence
+ * (but at the same time) may be differently ordered in the internal priority queue (queue) since it does not
+ * guarantee insertion order.
+ */
+ private var nextId: Long = 0
+
+ override fun newDomain(): Domain = newDomain(null)
+
+ override fun newDomain(name: String): Domain = newDomain(name, null)
+
+ override suspend fun run() {
+ check(state != SimulationEngineState.TERMINATED) { "The simulation engine is terminated" }
+
+ if (state == SimulationEngineState.CREATED) {
+ state = SimulationEngineState.STARTED
+ }
+
+ val job = coroutineContext[Job]
+
+ while (job?.isActive == true) {
+ val event = queue.peek() ?: break
+ val delivery = event.time
+
+ // A message should never be delivered out of order in this single-threaded implementation. Assert for
+ // sanity
+ assert(delivery >= clock.time) { "Message delivered out of order [expected=$delivery, actual=${clock.time}]" }
+
+ clock.time = delivery
+ queue.poll()
+
+ process(event)
+ }
+ }
+
+ override suspend fun terminate() {
+ state = SimulationEngineState.TERMINATED
+ }
+
+ /**
+ * Schedule the specified event to be processed by the engine.
+ */
+ private fun schedule(@Async.Schedule event: Event) {
+ assert(event.time >= clock.time) { "Message scheduled in the past [received=${event.time}, actual=${clock.time}]" }
+ queue.add(event)
+ }
+
+ /**
+ * Process the delivery of an event.
+ */
+ @OptIn(ExperimentalCoroutinesApi::class)
+ private fun process(@Async.Execute event: Event) {
+ // This has been inlined into this method for performance
+ when (event) {
+ is Event.Dispatch ->
+ event.block.run()
+ is Event.Resume ->
+ with(event.continuation) { event.dispatcher.resumeUndispatched(Unit) }
+ is Event.Timeout ->
+ if (!event.isCancelled)
+ event.block.run()
+ }
+ }
+
+ /**
+ * Spawn a new simulation domain.
+ */
+ private fun newDomainImpl(name: String, parent: DomainImpl?): Domain {
+ val domain = DomainImpl(name, parent)
+ require(domain.path !in registry) { "Domain name $name not unique" }
+ registry[domain.path] = domain
+ return domain
+ }
+
+ private fun newDomain(parent: DomainImpl?): Domain {
+ val name = "$" + UUID.randomUUID()
+ return newDomainImpl(name, parent)
+ }
+
+ private fun newDomain(name: String, parent: DomainImpl?): Domain {
+ require(name.isNotEmpty()) { "Domain name may not be empty" }
+ require(!name.startsWith("$")) { "Domain name may not start with $-sign" }
+ require(!name.contains("/")) { "Domain name may not contain /" }
+ return newDomainImpl(name, parent)
+ }
+
+ private inner class DomainImpl(override val name: String, parent: DomainImpl?) : SimulationContext, Domain {
+ val job: Job = SupervisorJob(parent?.job)
+ val path: String = (parent?.path ?: "") + "/$name"
+
+ @InternalCoroutinesApi
+ private val dispatcher = object : CoroutineDispatcher(), Delay {
+ // CoroutineDispatcher
+ override fun dispatch(context: CoroutineContext, block: Runnable) {
+ schedule(Event.Dispatch(clock.time, nextId++, block))
+ }
+
+ // Delay
+ override fun scheduleResumeAfterDelay(timeMillis: Long, continuation: CancellableContinuation<Unit>) {
+ schedule(Event.Resume(clock.time + timeMillis, nextId++, this, continuation))
+ }
+
+ override fun invokeOnTimeout(timeMillis: Long, block: Runnable): DisposableHandle {
+ val event = Event.Timeout(clock.time + timeMillis, nextId++, block)
+ schedule(event)
+ return event
+ }
+ }
+
+ private val exceptionHandler = CoroutineExceptionHandler { _, exception ->
+ log.error("Uncaught exception", exception)
+ }
+
+ // SimulationContext
+ override val key: CoroutineContext.Key<*> = SimulationContext.Key
+
+ override val domain: Domain = this
+
+ override val clock: VirtualClock
+ get() = this@OmegaSimulationEngine.clock
+
+ override val log: Logger by lazy(LazyThreadSafetyMode.NONE) { LoggerImpl.invoke(this) }
+
+ override fun newDomain(): Domain = this@OmegaSimulationEngine.newDomain(this)
+
+ override fun newDomain(name: String): Domain = this@OmegaSimulationEngine.newDomain(name, this)
+
+ // Domain
+ override val parent: Domain = parent ?: this
+
+ @InternalCoroutinesApi
+ override val coroutineContext: CoroutineContext = this + CoroutineName(name) + dispatcher + job + exceptionHandler
+
+ override fun toString(): String = path
+ }
+
+ /**
+ * Enumeration to track the state of the actor system.
+ */
+ private enum class SimulationEngineState {
+ CREATED, STARTED, TERMINATED
+ }
+
+ /**
+ * A wrapper around a message that has been scheduled for processing.
+ *
+ * @property time The point in time to deliver the message.
+ */
+ private sealed class Event(val time: Long, val id: Long) {
+ class Dispatch(time: Long, id: Long, val block: Runnable) : Event(time, id) {
+ override fun toString(): String = "Dispatch[$time]"
+ }
+
+ class Resume(time: Long, id: Long, val dispatcher: CoroutineDispatcher, val continuation: CancellableContinuation<Unit>) : Event(time, id) {
+ override fun toString(): String = "Resume[$time]"
+ }
+
+ class Timeout(time: Long, id: Long, val block: Runnable, var isCancelled: Boolean = false) : Event(time, id), DisposableHandle {
+ override fun dispose() {
+ isCancelled = true
+ }
+
+ override fun toString(): String = "Timeout[$time]"
+ }
+ }
+
+ /**
+ * A virtual [Clock] implementation for keeping track of simulation time.
+ */
+ private data class VirtualClock(var time: Long) : Clock() {
+ override fun withZone(zone: ZoneId?): Clock = throw NotImplementedError()
+
+ override fun getZone(): ZoneId = ZoneId.systemDefault()
+
+ override fun instant(): Instant = Instant.ofEpochMilli(time)
+
+ override fun millis(): Long = time
+ }
+}
diff --git a/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngineProvider.kt b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngineProvider.kt
new file mode 100644
index 00000000..5dba3233
--- /dev/null
+++ b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/OmegaSimulationEngineProvider.kt
@@ -0,0 +1,37 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2018 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim.engine.omega
+
+import com.atlarge.odcsim.SimulationEngine
+import com.atlarge.odcsim.SimulationEngineProvider
+import java.util.ServiceLoader
+
+/**
+ * An [SimulationEngineProvider] for the Omega engine, used by the [ServiceLoader] API to create
+ * [OmegaSimulationEngine] instances.
+ */
+public class OmegaSimulationEngineProvider : SimulationEngineProvider {
+ override operator fun invoke(name: String): SimulationEngine = OmegaSimulationEngine(name)
+}
diff --git a/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationAwareLoggerImpl.kt b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationAwareLoggerImpl.kt
new file mode 100644
index 00000000..fca4826e
--- /dev/null
+++ b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationAwareLoggerImpl.kt
@@ -0,0 +1,567 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim.engine.omega.logging
+
+import com.atlarge.odcsim.SimulationContext
+import org.slf4j.Logger
+import org.slf4j.Marker
+import org.slf4j.helpers.MessageFormatter
+import org.slf4j.spi.LocationAwareLogger
+
+/**
+ * An actor-specific [Logger] implementation that is aware of the calling location.
+ *
+ * @param ctx The owning [SimulationContext] of this logger.
+ * @param delegate The [LocationAwareLogger] to delegate the messages to.
+ */
+internal class LocationAwareLoggerImpl(
+ ctx: SimulationContext,
+ private val delegate: LocationAwareLogger
+) : LoggerImpl(ctx), Logger by delegate {
+ /**
+ * The fully qualified name of this class.
+ */
+ private val fqcn = LocationAwareLoggerImpl::class.java.name
+
+ override fun trace(format: String?, arg: Any?) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(null, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun trace(format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(null, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun trace(format: String?, argArray: Array<Any?>) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(null, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun trace(msg: String?, t: Throwable?) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.TRACE_INT, msg, null, t)
+ }
+ }
+
+ override fun trace(marker: Marker?, msg: String?) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.TRACE_INT, msg, null, null)
+ }
+ }
+
+ override fun trace(marker: Marker?, format: String?, arg: Any?) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(marker, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun trace(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(marker, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun trace(marker: Marker?, format: String?, argArray: Array<Any?>) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(marker, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun trace(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!delegate.isTraceEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.TRACE_INT, msg, null, t)
+ }
+ }
+
+ override fun debug(msg: String?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, null)
+ }
+ }
+
+ override fun debug(format: String?, arg: Any?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(null, fqcn, LocationAwareLogger.DEBUG_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun debug(format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(null, fqcn, LocationAwareLogger.DEBUG_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun debug(format: String?, argArray: Array<Any?>) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ val ft = MessageFormatter.arrayFormat(format, argArray)
+ delegate.log(null, fqcn, LocationAwareLogger.DEBUG_INT, ft.message, ft.argArray, ft.throwable)
+ }
+ }
+
+ override fun debug(msg: String?, t: Throwable?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, t)
+ }
+ }
+
+ override fun debug(marker: Marker?, msg: String?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, null)
+ }
+ }
+
+ override fun debug(marker: Marker?, format: String?, arg: Any?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ val ft = MessageFormatter.format(format, arg)
+ delegate.log(marker, fqcn, LocationAwareLogger.DEBUG_INT, ft.message, ft.argArray, ft.throwable)
+ }
+ }
+
+ override fun debug(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(marker, fqcn, LocationAwareLogger.DEBUG_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun debug(marker: Marker?, format: String?, argArray: Array<Any?>) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ val ft = MessageFormatter.arrayFormat(format, argArray)
+ delegate.log(marker, fqcn, LocationAwareLogger.DEBUG_INT, ft.message, argArray, ft.throwable)
+ }
+ }
+
+ override fun debug(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!delegate.isDebugEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, t)
+ }
+ }
+
+ override fun info(msg: String?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.INFO_INT, msg, null, null)
+ }
+ }
+
+ override fun info(format: String?, arg: Any?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(null, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun info(format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(null, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun info(format: String?, argArray: Array<Any?>) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(null, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun info(msg: String?, t: Throwable?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.INFO_INT, msg, null, t)
+ }
+ }
+
+ override fun info(marker: Marker?, msg: String?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.INFO_INT, msg, null, null)
+ }
+ }
+
+ override fun info(marker: Marker?, format: String?, arg: Any?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(marker, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun info(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(marker, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun info(marker: Marker?, format: String?, argArray: Array<Any?>) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(marker, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun info(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!delegate.isInfoEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.INFO_INT, msg, null, t)
+ }
+ }
+
+ override fun warn(msg: String?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.WARN_INT, msg, null, null)
+ }
+ }
+
+ override fun warn(format: String?, arg: Any?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(null, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun warn(format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(null, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun warn(format: String?, argArray: Array<Any?>) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(null, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun warn(msg: String?, t: Throwable?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.WARN_INT, msg, null, t)
+ }
+ }
+
+ override fun warn(marker: Marker?, msg: String?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.WARN_INT, msg, null, null)
+ }
+ }
+
+ override fun warn(marker: Marker?, format: String?, arg: Any?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(marker, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun warn(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(marker, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun warn(marker: Marker?, format: String?, argArray: Array<Any?>) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(marker, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun warn(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!delegate.isWarnEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.WARN_INT, msg, null, t)
+ }
+ }
+
+ override fun error(msg: String?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.ERROR_INT, msg, null, null)
+ }
+ }
+
+ override fun error(format: String?, arg: Any?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(null, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun error(format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(null, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun error(format: String?, argArray: Array<Any?>) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(null, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun error(msg: String?, t: Throwable?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(null, fqcn, LocationAwareLogger.ERROR_INT, msg, null, t)
+ }
+ }
+
+ override fun error(marker: Marker?, msg: String?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.ERROR_INT, msg, null, null)
+ }
+ }
+
+ override fun error(marker: Marker?, format: String?, arg: Any?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg).message
+ delegate.log(marker, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, arrayOf(arg), null)
+ }
+ }
+
+ override fun error(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.format(format, arg1, arg2).message
+ delegate.log(marker, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, arrayOf(arg1, arg2), null)
+ }
+ }
+
+ override fun error(marker: Marker?, format: String?, argArray: Array<Any?>) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ val formattedMessage = MessageFormatter.arrayFormat(format, argArray).message
+ delegate.log(marker, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, argArray, null)
+ }
+ }
+
+ override fun error(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!delegate.isErrorEnabled) {
+ return
+ }
+
+ withMdc {
+ delegate.log(marker, fqcn, LocationAwareLogger.ERROR_INT, msg, null, t)
+ }
+ }
+}
diff --git a/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationIgnorantLoggerImpl.kt b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationIgnorantLoggerImpl.kt
new file mode 100644
index 00000000..856cecfa
--- /dev/null
+++ b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LocationIgnorantLoggerImpl.kt
@@ -0,0 +1,440 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim.engine.omega.logging
+
+import com.atlarge.odcsim.SimulationContext
+import org.slf4j.Logger
+import org.slf4j.Marker
+
+/**
+ * A [Logger] implementation that is not aware of the calling location.
+ *
+ * @param ctx The owning [SimulationContext] of this logger.
+ * @param delegate The [Logger] to delegate the messages to.
+ */
+internal class LocationIgnorantLoggerImpl(
+ ctx: SimulationContext,
+ private val delegate: Logger
+) : LoggerImpl(ctx), Logger by delegate {
+ override fun warn(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(marker, format, arg1, arg2) }
+ }
+
+ override fun warn(format: String?, arg1: Any?, arg2: Any?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(format, arg1, arg2) }
+ }
+
+ override fun warn(msg: String?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(msg) }
+ }
+
+ override fun warn(marker: Marker?, format: String?, arg: Any?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(marker, format, arg) }
+ }
+
+ override fun warn(marker: Marker?, format: String?, vararg arguments: Any?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(marker, format, arguments) }
+ }
+
+ override fun warn(format: String?, arg: Any?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(format, arg) }
+ }
+
+ override fun warn(marker: Marker?, msg: String?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(marker, msg) }
+ }
+
+ override fun warn(msg: String?, t: Throwable?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(msg, t) }
+ }
+
+ override fun warn(format: String?, vararg arguments: Any?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(format, *arguments) }
+ }
+
+ override fun warn(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!isWarnEnabled) {
+ return
+ }
+
+ withMdc { delegate.warn(marker, msg, t) }
+ }
+
+ override fun info(marker: Marker?, format: String?, vararg arguments: Any?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(marker, format, *arguments) }
+ }
+
+ override fun info(format: String?, arg: Any?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(format, arg) }
+ }
+
+ override fun info(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(marker, msg, t) }
+ }
+
+ override fun info(msg: String?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(msg) }
+ }
+
+ override fun info(format: String?, vararg arguments: Any?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(format, *arguments) }
+ }
+
+ override fun info(format: String?, arg1: Any?, arg2: Any?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(format, arg1, arg2) }
+ }
+
+ override fun info(marker: Marker?, msg: String?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(marker, msg) }
+ }
+
+ override fun info(marker: Marker?, format: String?, arg: Any?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(marker, format, arg) }
+ }
+
+ override fun info(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(marker, format, arg1, arg2) }
+ }
+
+ override fun info(msg: String?, t: Throwable?) {
+ if (!isInfoEnabled) {
+ return
+ }
+
+ withMdc { delegate.info(msg, t) }
+ }
+
+ override fun error(msg: String?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(msg) }
+ }
+
+ override fun error(marker: Marker?, msg: String?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(marker, msg) }
+ }
+
+ override fun error(format: String?, vararg arguments: Any?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(format, *arguments) }
+ }
+
+ override fun error(format: String?, arg: Any?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(format, arg) }
+ }
+
+ override fun error(msg: String?, t: Throwable?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(msg, t) }
+ }
+
+ override fun error(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(marker, format, arg1, arg2) }
+ }
+
+ override fun error(marker: Marker?, format: String?, vararg arguments: Any?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(marker, format, *arguments) }
+ }
+
+ override fun error(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(marker, msg, t) }
+ }
+
+ override fun error(format: String?, arg1: Any?, arg2: Any?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(format, arg1, arg2) }
+ }
+
+ override fun error(marker: Marker?, format: String?, arg: Any?) {
+ if (!isErrorEnabled) {
+ return
+ }
+
+ withMdc { delegate.error(marker, format, arg) }
+ }
+
+ override fun debug(format: String?, vararg arguments: Any?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(format, *arguments) }
+ }
+
+ override fun debug(format: String?, arg1: Any?, arg2: Any?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(format, arg1, arg2) }
+ }
+
+ override fun debug(msg: String?, t: Throwable?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(msg, t) }
+ }
+
+ override fun debug(format: String?, arg: Any?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(format, arg) }
+ }
+
+ override fun debug(marker: Marker?, msg: String?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(marker, msg) }
+ }
+
+ override fun debug(msg: String?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(msg) }
+ }
+
+ override fun debug(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(marker, msg, t) }
+ }
+
+ override fun debug(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(marker, format, arg1, arg2) }
+ }
+
+ override fun debug(marker: Marker?, format: String?, arg: Any?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(marker, format, arg) }
+ }
+
+ override fun debug(marker: Marker?, format: String?, vararg arguments: Any?) {
+ if (!isDebugEnabled) {
+ return
+ }
+
+ withMdc { delegate.debug(marker, format, *arguments) }
+ }
+
+ override fun trace(format: String?, arg: Any?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(format, arg) }
+ }
+
+ override fun trace(marker: Marker?, msg: String?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(marker, msg) }
+ }
+
+ override fun trace(msg: String?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(msg) }
+ }
+
+ override fun trace(msg: String?, t: Throwable?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(msg, t) }
+ }
+
+ override fun trace(format: String?, arg1: Any?, arg2: Any?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(format, arg1, arg2) }
+ }
+
+ override fun trace(marker: Marker?, format: String?, arg1: Any?, arg2: Any?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(marker, format, arg1, arg2) }
+ }
+
+ override fun trace(marker: Marker?, format: String?, arg: Any?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(marker, format, arg) }
+ }
+
+ override fun trace(marker: Marker?, format: String?, vararg argArray: Any?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(marker, format, *argArray) }
+ }
+
+ override fun trace(marker: Marker?, msg: String?, t: Throwable?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(marker, msg, t) }
+ }
+
+ override fun trace(format: String?, vararg arguments: Any?) {
+ if (!isTraceEnabled) {
+ return
+ }
+
+ withMdc { delegate.trace(format, *arguments) }
+ }
+}
diff --git a/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LoggerImpl.kt b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LoggerImpl.kt
new file mode 100644
index 00000000..1adcfdc0
--- /dev/null
+++ b/simulator/odcsim/odcsim-engine-omega/src/main/kotlin/com/atlarge/odcsim/engine/omega/logging/LoggerImpl.kt
@@ -0,0 +1,74 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.odcsim.engine.omega.logging
+
+import com.atlarge.odcsim.SimulationContext
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.slf4j.MDC
+import org.slf4j.spi.LocationAwareLogger
+
+/**
+ * An actor-specific [Logger] implementation.
+ *
+ * @param ctx The owning [SimulationContext] of this logger.
+ */
+internal abstract class LoggerImpl internal constructor(protected val ctx: SimulationContext) : Logger {
+ /**
+ * Configure [MDC] with actor-specific information.
+ */
+ protected inline fun withMdc(block: () -> Unit) {
+ MDC.put(MDC_PROCESS_REF, ctx.domain.name)
+ MDC.put(MDC_PROCESS_TIME, String.format("%d", ctx.clock.millis()))
+ try {
+ block()
+ } finally {
+ MDC.remove(MDC_PROCESS_TIME)
+ MDC.remove(MDC_PROCESS_REF)
+ }
+ }
+
+ /**
+ * Mapped Diagnostic Context (MDC) attribute names.
+ */
+ companion object {
+ val MDC_PROCESS_TIME = "process.time"
+ val MDC_PROCESS_REF = "process.ref"
+
+ /**
+ * Create a [Logger] for the specified [ActorContext].
+ *
+ * @param ctx The actor context to create the logger for.
+ */
+ operator fun invoke(ctx: SimulationContext): Logger {
+ val logger = LoggerFactory.getLogger(ctx.javaClass)
+ return if (logger is LocationAwareLogger) {
+ LocationAwareLoggerImpl(ctx, logger)
+ } else {
+ LocationIgnorantLoggerImpl(ctx, logger)
+ }
+ }
+ }
+}
diff --git a/simulator/odcsim/odcsim-engine-omega/src/main/resources/META-INF/services/com.atlarge.odcsim.SimulationEngineProvider b/simulator/odcsim/odcsim-engine-omega/src/main/resources/META-INF/services/com.atlarge.odcsim.SimulationEngineProvider
new file mode 100644
index 00000000..1131cebd
--- /dev/null
+++ b/simulator/odcsim/odcsim-engine-omega/src/main/resources/META-INF/services/com.atlarge.odcsim.SimulationEngineProvider
@@ -0,0 +1 @@
+com.atlarge.odcsim.engine.omega.OmegaSimulationEngineProvider
diff --git a/simulator/opendc/README.md b/simulator/opendc/README.md
new file mode 100644
index 00000000..e3c65ba7
--- /dev/null
+++ b/simulator/opendc/README.md
@@ -0,0 +1,8 @@
+<h1 align="center">
+ <a href="http://opendc.org/">
+ <img src="../misc/artwork/logo.png" width="100" alt="OpenDC">
+ </a>
+ <br>
+ OpenDC
+</h1>
+
diff --git a/simulator/opendc/build.gradle.kts b/simulator/opendc/build.gradle.kts
new file mode 100644
index 00000000..cc3f3add
--- /dev/null
+++ b/simulator/opendc/build.gradle.kts
@@ -0,0 +1,23 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
diff --git a/simulator/opendc/opendc-compute/build.gradle.kts b/simulator/opendc/opendc-compute/build.gradle.kts
new file mode 100644
index 00000000..acdcd5a7
--- /dev/null
+++ b/simulator/opendc/opendc-compute/build.gradle.kts
@@ -0,0 +1,43 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Cloud computing fabric simulation model"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+}
+
+dependencies {
+ implementation(kotlin("stdlib"))
+ api(project(":odcsim:odcsim-api"))
+ api(project(":opendc:opendc-core"))
+ implementation("io.github.microutils:kotlin-logging:1.7.9")
+
+ testRuntimeOnly(project(":odcsim:odcsim-engine-omega"))
+ testRuntimeOnly("org.slf4j:slf4j-simple:${Library.SLF4J}")
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Flavor.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Flavor.kt
new file mode 100644
index 00000000..ff5060de
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Flavor.kt
@@ -0,0 +1,41 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core
+
+/**
+ * Flavors define the compute and memory capacity of [Server] instance. o put it simply, a flavor is an available
+ * hardware configuration for a server. It defines the size of a virtual server that can be launched.
+ */
+public data class Flavor(
+ /**
+ * The number of (virtual) processing cores to use.
+ */
+ public val cpuCount: Int,
+
+ /**
+ * The amount of RAM available to the server (in MB).
+ */
+ public val memorySize: Long
+)
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/MemoryUnit.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/MemoryUnit.kt
new file mode 100644
index 00000000..ce57fc72
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/MemoryUnit.kt
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core
+
+/**
+ * A memory unit of a compute resource, either virtual or physical.
+ *
+ * @property vendor The vendor string of the memory.
+ * @property modelName The name of the memory model.
+ * @property speed The access speed of the memory in MHz.
+ * @property size The size of the memory unit in MBs.
+ */
+public data class MemoryUnit(
+ public val vendor: String,
+ public val modelName: String,
+ public val speed: Double,
+ public val size: Long
+)
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingNode.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingNode.kt
new file mode 100644
index 00000000..91f5dde9
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingNode.kt
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core
+
+/**
+ * A processing node/package/socket containing possibly several CPU cores.
+ *
+ * @property vendor The vendor string of the processor node.
+ * @property modelName The name of the processor node.
+ * @property arch The micro-architecture of the processor node.
+ * @property coreCount The number of logical CPUs in the processor node.
+ */
+data class ProcessingNode(
+ val vendor: String,
+ val arch: String,
+ val modelName: String,
+ val coreCount: Int
+)
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingUnit.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingUnit.kt
new file mode 100644
index 00000000..ba148ee0
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ProcessingUnit.kt
@@ -0,0 +1,38 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core
+
+/**
+ * A single logical compute unit of processor node, either virtual or physical.
+ *
+ * @property node The processing node containing the CPU core.
+ * @property id The identifier of the CPU core within the processing node.
+ * @property frequency The clock rate of the CPU in MHz.
+ */
+public data class ProcessingUnit(
+ public val node: ProcessingNode,
+ public val id: Int,
+ public val frequency: Double
+)
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Server.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Server.kt
new file mode 100644
index 00000000..01968cd8
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/Server.kt
@@ -0,0 +1,80 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core
+
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.core.resource.Resource
+import com.atlarge.opendc.core.resource.TagContainer
+import com.atlarge.opendc.core.services.ServiceRegistry
+import kotlinx.coroutines.flow.Flow
+import java.util.UUID
+
+/**
+ * A server instance that is running on some physical or virtual machine.
+ */
+public data class Server(
+ /**
+ * The unique identifier of the server.
+ */
+ public override val uid: UUID,
+
+ /**
+ * The optional name of the server.
+ */
+ public override val name: String,
+
+ /**
+ * The tags of this server.
+ */
+ public override val tags: TagContainer,
+
+ /**
+ * The hardware configuration of the server.
+ */
+ public val flavor: Flavor,
+
+ /**
+ * The image running on the server.
+ */
+ public val image: Image,
+
+ /**
+ * The last known state of the server.
+ */
+ public val state: ServerState,
+
+ /**
+ * The services published by this server.
+ */
+ public val services: ServiceRegistry,
+
+ /**
+ * The events that are emitted by the server.
+ */
+ public val events: Flow<ServerEvent>
+) : Resource {
+ override fun hashCode(): Int = uid.hashCode()
+ override fun equals(other: Any?): Boolean = other is Server && uid == other.uid
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerEvent.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerEvent.kt
new file mode 100644
index 00000000..1595937c
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerEvent.kt
@@ -0,0 +1,53 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core
+
+import com.atlarge.opendc.core.services.ServiceKey
+
+/**
+ * An event that is emitted by a [Server].
+ */
+public sealed class ServerEvent {
+ /**
+ * The server that emitted the event.
+ */
+ public abstract val server: Server
+
+ /**
+ * This event is emitted when the state of [server] changes.
+ *
+ * @property server The server of which the state changed.
+ * @property previousState The previous state of the server.
+ */
+ public data class StateChanged(override val server: Server, val previousState: ServerState) : ServerEvent()
+
+ /**
+ * This event is emitted when a server publishes a service.
+ *
+ * @property server The server that published the service.
+ * @property key The service key of the service that was published.
+ */
+ public data class ServicePublished(override val server: Server, val key: ServiceKey<*>) : ServerEvent()
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerState.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerState.kt
new file mode 100644
index 00000000..27372a5e
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/ServerState.kt
@@ -0,0 +1,55 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core
+
+/**
+ * An enumeration describing the possible states of a server.
+ */
+public enum class ServerState {
+ /**
+ * The server has not yet finished the original build process.
+ */
+ BUILD,
+
+ /**
+ * The server was powered down by the user.
+ */
+ SHUTOFF,
+
+ /**
+ * The server is active and running.
+ */
+ ACTIVE,
+
+ /**
+ * The server is in error.
+ */
+ ERROR,
+
+ /**
+ * The state of the server is unknown.
+ */
+ UNKNOWN,
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerContext.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerContext.kt
new file mode 100644
index 00000000..f770fa49
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerContext.kt
@@ -0,0 +1,163 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.execution
+
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.core.services.ServiceKey
+import kotlinx.coroutines.selects.SelectClause0
+import kotlinx.coroutines.selects.select
+
+/**
+ * Represents the execution context in which a bootable [Image] runs on a [Server].
+ */
+public interface ServerContext {
+ /**
+ * The server on which the image runs.
+ */
+ public val server: Server
+
+ /**
+ * A list of processing units available to use.
+ */
+ public val cpus: List<ProcessingUnit>
+
+ /**
+ * Publish the specified [service] at the given [ServiceKey].
+ */
+ public suspend fun <T : Any> publishService(key: ServiceKey<T>, service: T)
+
+ /**
+ * Ask the processor cores to run the specified [slice] and suspend execution until the trigger condition is met as
+ * specified by [triggerMode].
+ *
+ * After the method returns, [Slice.burst] will contain the remaining burst length for each of the cores (which
+ * may be zero). These changes may happen anytime during execution of this method and callers should not rely on
+ * the timing of this change.
+ *
+ * @param slice The representation of work to run on the processors.
+ * @param triggerMode The trigger condition to resume execution.
+ */
+ public suspend fun run(slice: Slice, triggerMode: TriggerMode = TriggerMode.FIRST) =
+ select<Unit> { onRun(slice, triggerMode).invoke {} }
+
+ /**
+ * Ask the processors cores to run the specified [batch] of work slices and suspend execution until the trigger
+ * condition is met as specified by [triggerMode].
+ *
+ * After the method returns, [Slice.burst] will contain the remaining burst length for each of the cores (which
+ * may be zero). These changes may happen anytime during execution of this method and callers should not rely on
+ * the timing of this change.
+ *
+ * In case slices in the batch do not finish processing before their deadline, [merge] is called to merge these
+ * slices with the next slice to be executed.
+ *
+ * @param batch The batch of work to run on the processors.
+ * @param triggerMode The trigger condition to resume execution.
+ * @param merge The merge function for consecutive slices in case the last slice was not completed within its
+ * deadline.
+ */
+ public suspend fun run(
+ batch: Sequence<Slice>,
+ triggerMode: TriggerMode = TriggerMode.FIRST,
+ merge: (Slice, Slice) -> Slice = { _, r -> r }
+ ) = select<Unit> { onRun(batch, triggerMode, merge).invoke {} }
+
+ /**
+ * Ask the processor cores to run the specified [slice] and select when the trigger condition is met as specified
+ * by [triggerMode].
+ *
+ * After the method returns, [Slice.burst] will contain the remaining burst length for each of the cores (which
+ * may be zero). These changes may happen anytime during execution of this method and callers should not rely on
+ * the timing of this change.
+ *
+ * @param slice The representation of work to request from the processors.
+ * @param triggerMode The trigger condition to resume execution.
+ */
+ public fun onRun(slice: Slice, triggerMode: TriggerMode = TriggerMode.FIRST): SelectClause0 =
+ onRun(sequenceOf(slice), triggerMode)
+
+ /**
+ * Ask the processors cores to run the specified [batch] of work slices and select when the trigger condition is met
+ * as specified by [triggerMode].
+ *
+ * After the method returns, [Slice.burst] will contain the remaining burst length for each of the cores (which
+ * may be zero). These changes may happen anytime during execution of this method and callers should not rely on
+ * the timing of this change.
+ *
+ * In case slices in the batch do not finish processing before their deadline, [merge] is called to merge these
+ * slices with the next slice to be executed.
+ *
+ * @param batch The batch of work to run on the processors.
+ * @param triggerMode The trigger condition to resume execution during the **last** slice.
+ * @param merge The merge function for consecutive slices in case the last slice was not completed within its
+ * deadline.
+ */
+ public fun onRun(
+ batch: Sequence<Slice>,
+ triggerMode: TriggerMode = TriggerMode.FIRST,
+ merge: (Slice, Slice) -> Slice = { _, r -> r }
+ ): SelectClause0
+
+ /**
+ * A request to the host machine for a slice of CPU time from the processor cores.
+ *
+ * Both [burst] and [limit] must be of the same size and in any other case the method will throw an
+ * [IllegalArgumentException].
+ *
+ *
+ * @param burst The burst time to request from each of the processor cores.
+ * @param limit The maximum usage in terms of MHz that the processing core may use while running the burst.
+ * @param deadline The instant at which this slice needs to be fulfilled.
+ */
+ public class Slice(val burst: LongArray, val limit: DoubleArray, val deadline: Long) {
+ init {
+ require(burst.size == limit.size) { "Incompatible array dimensions" }
+ }
+ }
+
+ /**
+ * The modes for triggering a machine exit from the machine.
+ */
+ public enum class TriggerMode {
+ /**
+ * A machine exit occurs when either the first processor finishes processing a **non-zero** burst or the
+ * deadline is reached.
+ */
+ FIRST,
+
+ /**
+ * A machine exit occurs when either the last processor finishes processing a **non-zero** burst or the deadline
+ * is reached.
+ */
+ LAST,
+
+ /**
+ * A machine exit occurs only when the deadline is reached.
+ */
+ DEADLINE
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerManagementContext.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerManagementContext.kt
new file mode 100644
index 00000000..5a9b725b
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ServerManagementContext.kt
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.execution
+
+/**
+ * An extended [ServerContext] providing several methods for managing the execution context.
+ */
+public interface ServerManagementContext : ServerContext {
+ /**
+ * Initialize the management context.
+ */
+ public suspend fun init()
+
+ /**
+ * Terminate the execution of the server.
+ */
+ public suspend fun exit(cause: Throwable? = null)
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ShutdownException.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ShutdownException.kt
new file mode 100644
index 00000000..e4da557b
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/execution/ShutdownException.kt
@@ -0,0 +1,53 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.execution
+
+import kotlinx.coroutines.CancellationException
+
+/**
+ * This exception is thrown by the underlying [ServerContext] to indicate that a shutdown flow
+ * has been sent to the server.
+ */
+public class ShutdownException(message: String? = null, override val cause: Throwable? = null) : CancellationException(message)
+
+/**
+ * This method terminates the current active coroutine if the specified [CancellationException] is caused
+ * by a shutdown.
+ */
+public fun CancellationException.assertShutdown() {
+ if (this is ShutdownException) {
+ throw this
+ }
+}
+
+/**
+ * This method terminates the current active coroutine if the specified [CancellationException] is caused
+ * by a failure.
+ */
+public fun CancellationException.assertFailure() {
+ if (this is ShutdownException && cause != null) {
+ throw this
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/EmptyImage.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/EmptyImage.kt
new file mode 100644
index 00000000..8f6c4682
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/EmptyImage.kt
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.image
+
+import com.atlarge.opendc.compute.core.execution.ServerContext
+import com.atlarge.opendc.core.resource.TagContainer
+import java.util.UUID
+
+/**
+ * An empty boot disk [Image] that exits immediately on start.
+ */
+object EmptyImage : Image {
+ override val uid: UUID = UUID.randomUUID()
+ override val name: String = "empty"
+ override val tags: TagContainer = emptyMap()
+
+ override suspend fun invoke(ctx: ServerContext) {}
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImage.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImage.kt
new file mode 100644
index 00000000..d65e7e94
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImage.kt
@@ -0,0 +1,67 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.image
+
+import com.atlarge.opendc.compute.core.execution.ServerContext
+import com.atlarge.opendc.core.resource.TagContainer
+import java.util.UUID
+import kotlin.math.min
+
+/**
+ * An application [Image] that models applications performing a static number of floating point operations ([flops]) on
+ * a compute resource.
+ *
+ * @property uid The unique identifier of this image.
+ * @property name The name of this image.
+ * @property tags The tags attached to the image.
+ * @property flops The number of floating point operations to perform for this task in MFLOPs.
+ * @property cores The number of cores that the image is able to utilize.
+ * @property utilization A model of the CPU utilization of the application.
+ */
+data class FlopsApplicationImage(
+ public override val uid: UUID,
+ public override val name: String,
+ public override val tags: TagContainer,
+ public val flops: Long,
+ public val cores: Int,
+ public val utilization: Double = 0.8
+) : Image {
+ init {
+ require(flops >= 0) { "Negative number of flops" }
+ require(cores > 0) { "Negative number of cores or no cores" }
+ require(utilization > 0.0 && utilization <= 1.0) { "Utilization must be in (0, 1]" }
+ }
+
+ /**
+ * Execute the runtime behavior based on a number of floating point operations to execute.
+ */
+ override suspend fun invoke(ctx: ServerContext) {
+ val cores = min(this.cores, ctx.server.flavor.cpuCount)
+ val burst = LongArray(cores) { flops / cores }
+ val maxUsage = DoubleArray(cores) { i -> ctx.cpus[i].frequency * utilization }
+
+ ctx.run(ServerContext.Slice(burst, maxUsage, Long.MAX_VALUE), triggerMode = ServerContext.TriggerMode.LAST)
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsHistoryFragment.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsHistoryFragment.kt
new file mode 100644
index 00000000..5b0035e3
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/FlopsHistoryFragment.kt
@@ -0,0 +1,3 @@
+package com.atlarge.opendc.compute.core.image
+
+data class FlopsHistoryFragment(val tick: Long, val flops: Long, val duration: Long, val usage: Double, val cores: Int)
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/Image.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/Image.kt
new file mode 100644
index 00000000..52d4d7b5
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/Image.kt
@@ -0,0 +1,46 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.image
+
+import com.atlarge.opendc.compute.core.execution.ServerContext
+import com.atlarge.opendc.core.resource.Resource
+
+/**
+ * An image containing a bootable operating system that can directly be executed by physical or virtual server.
+ *
+ * OpenStack: A collection of files used to create or rebuild a server. Operators provide a number of pre-built OS
+ * images by default. You may also create custom images from cloud servers you have launched. These custom images are
+ * useful for backup purposes or for producing “gold” server images if you plan to deploy a particular server
+ * configuration frequently.
+ */
+public interface Image : Resource {
+ /**
+ * Launch the machine image in the specified [ServerContext].
+ *
+ * This method should encapsulate and characterize the runtime behavior of the instance resulting from launching
+ * the image on some machine, in terms of the resource consumption on the machine.
+ */
+ public suspend operator fun invoke(ctx: ServerContext)
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/VmImage.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/VmImage.kt
new file mode 100644
index 00000000..c615d865
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/image/VmImage.kt
@@ -0,0 +1,34 @@
+package com.atlarge.opendc.compute.core.image
+
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.core.execution.ServerContext
+import com.atlarge.opendc.core.resource.TagContainer
+import java.util.UUID
+import kotlin.math.min
+
+class VmImage(
+ public override val uid: UUID,
+ public override val name: String,
+ public override val tags: TagContainer,
+ public val flopsHistory: Sequence<FlopsHistoryFragment>,
+ public val maxCores: Int,
+ public val requiredMemory: Long
+) : Image {
+
+ override suspend fun invoke(ctx: ServerContext) {
+ val clock = simulationContext.clock
+ var offset = clock.millis()
+
+ val batch = flopsHistory.map { fragment ->
+ val cores = min(fragment.cores, ctx.server.flavor.cpuCount)
+ val burst = LongArray(cores) { fragment.flops / cores }
+ val usage = DoubleArray(cores) { fragment.usage / cores }
+ offset += fragment.duration
+ ServerContext.Slice(burst, usage, offset)
+ }
+
+ ctx.run(batch)
+ }
+
+ override fun toString(): String = "VmImage(uid=$uid, name=$name, cores=$maxCores, requiredMemory=$requiredMemory)"
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt
new file mode 100644
index 00000000..f458877b
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/PerformanceInterferenceModel.kt
@@ -0,0 +1,125 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.workload
+
+import com.atlarge.opendc.compute.core.Server
+import java.util.SortedSet
+import java.util.TreeSet
+import kotlin.random.Random
+
+/**
+ * Meta-data key for the [PerformanceInterferenceModel] of an image.
+ */
+const val IMAGE_PERF_INTERFERENCE_MODEL = "image:performance-interference"
+
+/**
+ * Performance Interference Model describing the variability incurred by different sets of workloads if colocated.
+ *
+ * @param items The [PerformanceInterferenceModelItem]s that make up this model.
+ */
+class PerformanceInterferenceModel(
+ val items: SortedSet<PerformanceInterferenceModelItem>,
+ val random: Random = Random(0)
+) {
+ private var intersectingItems: List<PerformanceInterferenceModelItem> = emptyList()
+ private val colocatedWorkloads = TreeSet<String>()
+
+ fun vmStarted(server: Server) {
+ colocatedWorkloads.add(server.image.name)
+ intersectingItems = items.filter { item -> doesMatch(item) }
+ }
+
+ fun vmStopped(server: Server) {
+ colocatedWorkloads.remove(server.image.name)
+ intersectingItems = items.filter { item -> doesMatch(item) }
+ }
+
+ private fun doesMatch(item: PerformanceInterferenceModelItem): Boolean {
+ var count = 0
+ for (name in item.workloadNames.subSet(colocatedWorkloads.first(), colocatedWorkloads.last() + "\u0000")) {
+ if (name in colocatedWorkloads)
+ count++
+ if (count > 1)
+ return true
+ }
+ return false
+ }
+
+ fun apply(currentServerLoad: Double): Double {
+ if (intersectingItems.isEmpty()) {
+ return 1.0
+ }
+ val score = intersectingItems
+ .firstOrNull { it.minServerLoad <= currentServerLoad }
+
+ // Apply performance penalty to (on average) only one of the VMs
+ return if (score != null && random.nextInt(score.workloadNames.size) == 0) {
+ score.performanceScore
+ } else {
+ 1.0
+ }
+ }
+}
+
+/**
+ * Model describing how a specific set of workloads causes performance variability for each workload.
+ *
+ * @param workloadNames The names of the workloads that together cause performance variability for each workload in the set.
+ * @param minServerLoad The minimum total server load at which this interference is activated and noticeable.
+ * @param performanceScore The performance score that should be applied to each workload's performance. 1 means no
+ * influence, <1 means that performance degrades, and >1 means that performance improves.
+ */
+data class PerformanceInterferenceModelItem(
+ val workloadNames: SortedSet<String>,
+ val minServerLoad: Double,
+ val performanceScore: Double
+) : Comparable<PerformanceInterferenceModelItem> {
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+
+ other as PerformanceInterferenceModelItem
+
+ if (workloadNames != other.workloadNames) return false
+
+ return true
+ }
+
+ override fun hashCode(): Int = workloadNames.hashCode()
+
+ override fun compareTo(other: PerformanceInterferenceModelItem): Int {
+ var cmp = performanceScore.compareTo(other.performanceScore)
+ if (cmp != 0) {
+ return cmp
+ }
+
+ cmp = minServerLoad.compareTo(other.minServerLoad)
+ if (cmp != 0) {
+ return cmp
+ }
+
+ return hashCode().compareTo(other.hashCode())
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/VmWorkload.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/VmWorkload.kt
new file mode 100644
index 00000000..098eb8ca
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/core/workload/VmWorkload.kt
@@ -0,0 +1,25 @@
+package com.atlarge.opendc.compute.core.workload
+
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.core.workload.Workload
+import java.util.UUID
+
+/**
+ * A workload that represents a VM.
+ *
+ * @property uid A unique identified of this VM.
+ * @property name The name of this VM.
+ * @property owner The owner of the VM.
+ * @property image The image of the VM.
+ */
+data class VmWorkload(
+ override val uid: UUID,
+ override val name: String,
+ override val owner: User,
+ val image: VmImage
+) : Workload {
+ override fun equals(other: Any?): Boolean = other is VmWorkload && uid == other.uid
+
+ override fun hashCode(): Int = uid.hashCode()
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Metadata.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Metadata.kt
new file mode 100644
index 00000000..a3a851fe
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Metadata.kt
@@ -0,0 +1,34 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal
+
+/*
+ * Common metadata keys for bare-metal nodes.
+ */
+
+/**
+ * The cluster to which the node belongs.
+ */
+const val NODE_CLUSTER = "bare-metal:cluster"
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt
new file mode 100644
index 00000000..7cb4c0c5
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/Node.kt
@@ -0,0 +1,74 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal
+
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.core.Identity
+import kotlinx.coroutines.flow.Flow
+import java.util.UUID
+
+/**
+ * A bare-metal compute node.
+ */
+public data class Node(
+ /**
+ * The unique identifier of the node.
+ */
+ public override val uid: UUID,
+
+ /**
+ * The optional name of the node.
+ */
+ public override val name: String,
+
+ /**
+ * Metadata of the node.
+ */
+ public val metadata: Map<String, Any>,
+
+ /**
+ * The last known state of the compute node.
+ */
+ public val state: NodeState,
+
+ /**
+ * The boot image of the node.
+ */
+ public val image: Image,
+
+ /**
+ * The server instance that is running on the node or `null` if no server is running.
+ */
+ public val server: Server?,
+
+ /**
+ * The events that are emitted by the node.
+ */
+ public val events: Flow<NodeEvent>
+) : Identity {
+ override fun hashCode(): Int = uid.hashCode()
+ override fun equals(other: Any?): Boolean = other is Node && uid == other.uid
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeEvent.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeEvent.kt
new file mode 100644
index 00000000..7719db24
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeEvent.kt
@@ -0,0 +1,43 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal
+
+/**
+ * An event that is emitted by a [Node].
+ */
+public sealed class NodeEvent {
+ /**
+ * The node that emitted the event.
+ */
+ public abstract val node: Node
+
+ /**
+ * This event is emitted when the state of [node] changes.
+ *
+ * @property node The node of which the state changed.
+ * @property previousState The previous state of the node.
+ */
+ public data class StateChanged(override val node: Node, val previousState: NodeState) : NodeEvent()
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeState.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeState.kt
new file mode 100644
index 00000000..ca9cf509
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/NodeState.kt
@@ -0,0 +1,55 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal
+
+/**
+ * An enumeration describing the possible states of a bare-metal compute node.
+ */
+public enum class NodeState {
+ /**
+ * The node is booting.
+ */
+ BOOT,
+
+ /**
+ * The node is powered off.
+ */
+ SHUTOFF,
+
+ /**
+ * The node is active and running.
+ */
+ ACTIVE,
+
+ /**
+ * The node is in error.
+ */
+ ERROR,
+
+ /**
+ * The state of the node is unknown.
+ */
+ UNKNOWN,
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/BareMetalDriver.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/BareMetalDriver.kt
new file mode 100644
index 00000000..41cec291
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/BareMetalDriver.kt
@@ -0,0 +1,88 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal.driver
+
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.core.failure.FailureDomain
+import com.atlarge.opendc.core.power.Powerable
+import com.atlarge.opendc.core.services.AbstractServiceKey
+import kotlinx.coroutines.flow.Flow
+import java.util.UUID
+
+/**
+ * A driver interface for the management interface of a bare-metal compute node.
+ */
+public interface BareMetalDriver : Powerable, FailureDomain {
+ /**
+ * The [Node] that is controlled by this driver.
+ */
+ public val node: Flow<Node>
+
+ /**
+ * The amount of work done by the machine in percentage with respect to the total amount of processing power
+ * available.
+ */
+ public val usage: Flow<Double>
+
+ /**
+ * Initialize the driver.
+ */
+ public suspend fun init(): Node
+
+ /**
+ * Start the bare metal node with the specified boot disk image.
+ */
+ public suspend fun start(): Node
+
+ /**
+ * Stop the bare metal node if it is running.
+ */
+ public suspend fun stop(): Node
+
+ /**
+ * Reboot the bare metal node.
+ */
+ public suspend fun reboot(): Node
+
+ /**
+ * Update the boot disk image of the compute node.
+ *
+ * Changing the boot disk image of node does not affect it while the node is running. In order to start the new boot
+ * disk image, the compute node must be restarted.
+ */
+ public suspend fun setImage(image: Image): Node
+
+ /**
+ * Obtain the state of the compute node.
+ */
+ public suspend fun refresh(): Node
+
+ /**
+ * A key that allows access to the [BareMetalDriver] instance from a [Server] that runs on the bare-metal machine.
+ */
+ companion object Key : AbstractServiceKey<BareMetalDriver>(UUID.randomUUID(), "bare-metal:driver")
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt
new file mode 100644
index 00000000..6a77415c
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt
@@ -0,0 +1,478 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal.driver
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.odcsim.SimulationContext
+import com.atlarge.odcsim.flow.EventFlow
+import com.atlarge.odcsim.flow.StateFlow
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.Flavor
+import com.atlarge.opendc.compute.core.MemoryUnit
+import com.atlarge.opendc.compute.core.ServerEvent
+import com.atlarge.opendc.compute.core.ServerState
+import com.atlarge.opendc.compute.core.execution.ServerContext
+import com.atlarge.opendc.compute.core.execution.ServerManagementContext
+import com.atlarge.opendc.compute.core.execution.ShutdownException
+import com.atlarge.opendc.compute.core.image.EmptyImage
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.compute.metal.NodeEvent
+import com.atlarge.opendc.compute.metal.NodeState
+import com.atlarge.opendc.compute.metal.power.ConstantPowerModel
+import com.atlarge.opendc.core.power.PowerModel
+import com.atlarge.opendc.core.services.ServiceKey
+import com.atlarge.opendc.core.services.ServiceRegistry
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Delay
+import kotlinx.coroutines.DisposableHandle
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.FlowPreview
+import kotlinx.coroutines.InternalCoroutinesApi
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.intrinsics.startCoroutineCancellable
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.selects.SelectClause0
+import kotlinx.coroutines.selects.SelectInstance
+import java.util.UUID
+import kotlin.math.ceil
+import kotlin.math.max
+import kotlin.math.min
+import kotlinx.coroutines.withContext
+import java.lang.Exception
+import java.time.Clock
+import kotlin.coroutines.ContinuationInterceptor
+import kotlin.random.Random
+
+/**
+ * A basic implementation of the [BareMetalDriver] that simulates an [Image] running on a bare-metal machine.
+ *
+ * @param domain The simulation domain the driver runs in.
+ * @param uid The unique identifier of the machine.
+ * @param name An optional name of the machine.
+ * @param metadata The initial metadata of the node.
+ * @param cpus The CPUs available to the bare metal machine.
+ * @param memoryUnits The memory units in this machine.
+ * @param powerModel The power model of this machine.
+ */
+@OptIn(ExperimentalCoroutinesApi::class)
+public class SimpleBareMetalDriver(
+ private val domain: Domain,
+ uid: UUID,
+ name: String,
+ metadata: Map<String, Any>,
+ val cpus: List<ProcessingUnit>,
+ val memoryUnits: List<MemoryUnit>,
+ powerModel: PowerModel<SimpleBareMetalDriver> = ConstantPowerModel(
+ 0.0
+ )
+) : BareMetalDriver {
+ /**
+ * The flavor that corresponds to this machine.
+ */
+ private val flavor = Flavor(cpus.size, memoryUnits.map { it.size }.sum())
+
+ /**
+ * The current active server context.
+ */
+ private var serverContext: BareMetalServerContext? = null
+
+ /**
+ * The events of the machine.
+ */
+ private val events = EventFlow<NodeEvent>()
+
+ /**
+ * The flow containing the load of the server.
+ */
+ private val usageState = MutableStateFlow(0.0)
+
+ /**
+ * The machine state.
+ */
+ private val nodeState = StateFlow(Node(uid, name, metadata + ("driver" to this), NodeState.SHUTOFF, EmptyImage, null, events))
+
+ override val node: Flow<Node> = nodeState
+
+ @OptIn(FlowPreview::class)
+ override val usage: Flow<Double> = usageState
+
+ override val powerDraw: Flow<Double> = powerModel(this)
+
+ /**
+ * The internal random instance.
+ */
+ private val random = Random(uid.leastSignificantBits xor uid.mostSignificantBits)
+
+ override suspend fun init(): Node = withContext(domain.coroutineContext) {
+ nodeState.value
+ }
+
+ override suspend fun start(): Node = withContext(domain.coroutineContext) {
+ val node = nodeState.value
+ if (node.state != NodeState.SHUTOFF) {
+ return@withContext node
+ }
+
+ val events = EventFlow<ServerEvent>()
+ val server = Server(
+ UUID(random.nextLong(), random.nextLong()),
+ node.name,
+ emptyMap(),
+ flavor,
+ node.image,
+ ServerState.BUILD,
+ ServiceRegistry().put(BareMetalDriver, this@SimpleBareMetalDriver),
+ events
+ )
+
+ setNode(node.copy(state = NodeState.BOOT, server = server))
+ serverContext = BareMetalServerContext(events)
+ return@withContext nodeState.value
+ }
+
+ override suspend fun stop(): Node = withContext(domain.coroutineContext) {
+ val node = nodeState.value
+ if (node.state == NodeState.SHUTOFF) {
+ return@withContext node
+ }
+
+ // We terminate the image running on the machine
+ serverContext!!.cancel(fail = false)
+ serverContext = null
+
+ setNode(node.copy(state = NodeState.SHUTOFF, server = null))
+ return@withContext node
+ }
+
+ override suspend fun reboot(): Node = withContext(domain.coroutineContext) {
+ stop()
+ start()
+ }
+
+ override suspend fun setImage(image: Image): Node = withContext(domain.coroutineContext) {
+ setNode(nodeState.value.copy(image = image))
+ return@withContext nodeState.value
+ }
+
+ override suspend fun refresh(): Node = withContext(domain.coroutineContext) { nodeState.value }
+
+ private fun setNode(value: Node) {
+ val field = nodeState.value
+ if (field.state != value.state) {
+ events.emit(NodeEvent.StateChanged(value, field.state))
+ }
+
+ if (field.server != null && value.server != null && field.server.state != value.server.state) {
+ serverContext!!.events.emit(ServerEvent.StateChanged(value.server, field.server.state))
+ }
+
+ nodeState.value = value
+ }
+
+ private inner class BareMetalServerContext(val events: EventFlow<ServerEvent>) : ServerManagementContext {
+ private var finalized: Boolean = false
+
+ // A state in which the machine is still available, but does not run any of the work requested by the
+ // image
+ var unavailable = false
+
+ override val cpus: List<ProcessingUnit> = this@SimpleBareMetalDriver.cpus
+
+ override val server: Server
+ get() = nodeState.value.server!!
+
+ private val job = domain.launch {
+ delay(1) // TODO Introduce boot time
+ init()
+ try {
+ server.image(this@BareMetalServerContext)
+ exit()
+ } catch (cause: Throwable) {
+ exit(cause)
+ }
+ }
+
+ /**
+ * Cancel the image running on the machine.
+ */
+ suspend fun cancel(fail: Boolean) {
+ if (fail)
+ job.cancel(ShutdownException(cause = Exception("Random failure")))
+ else
+ job.cancel(ShutdownException())
+ job.join()
+ }
+
+ override suspend fun <T : Any> publishService(key: ServiceKey<T>, service: T) {
+ val server = server.copy(services = server.services.put(key, service))
+ setNode(nodeState.value.copy(server = server))
+ events.emit(ServerEvent.ServicePublished(server, key))
+ }
+
+ override suspend fun init() {
+ assert(!finalized) { "Machine is already finalized" }
+
+ val server = server.copy(state = ServerState.ACTIVE)
+ setNode(nodeState.value.copy(state = NodeState.ACTIVE, server = server))
+ }
+
+ override suspend fun exit(cause: Throwable?) {
+ finalized = true
+
+ val newServerState =
+ if (cause == null || (cause is ShutdownException && cause.cause == null))
+ ServerState.SHUTOFF
+ else
+ ServerState.ERROR
+ val newNodeState =
+ if (cause == null || (cause is ShutdownException && cause.cause != null))
+ nodeState.value.state
+ else
+ NodeState.ERROR
+ val server = server.copy(state = newServerState)
+ setNode(nodeState.value.copy(state = newNodeState, server = server))
+ }
+
+ /**
+ * A disposable to prevent resetting the usage state for subsequent calls to onRun.
+ */
+ private var usageFlush: DisposableHandle? = null
+
+ /**
+ * Cache the [Clock] for timing.
+ */
+ private val clock = domain.coroutineContext[SimulationContext]!!.clock
+
+ /**
+ * Cache the [Delay] instance for timing.
+ *
+ * XXX We need to cache this before the call to [onRun] since doing this in [onRun] is too heavy.
+ * XXX Note however that this is an ugly hack which may break in the future.
+ */
+ @OptIn(InternalCoroutinesApi::class)
+ private val delay = domain.coroutineContext[ContinuationInterceptor] as Delay
+
+ @OptIn(InternalCoroutinesApi::class)
+ override fun onRun(
+ batch: Sequence<ServerContext.Slice>,
+ triggerMode: ServerContext.TriggerMode,
+ merge: (ServerContext.Slice, ServerContext.Slice) -> ServerContext.Slice
+ ): SelectClause0 {
+ assert(!finalized) { "Server instance is already finalized" }
+
+ return object : SelectClause0 {
+ @InternalCoroutinesApi
+ override fun <R> registerSelectClause0(select: SelectInstance<R>, block: suspend () -> R) {
+ // Do not reset the usage state: we will set it ourselves
+ usageFlush?.dispose()
+ usageFlush = null
+
+ val queue = batch.iterator()
+ var start = Long.MIN_VALUE
+ var currentWork: SliceWork? = null
+ var currentDisposable: DisposableHandle? = null
+
+ fun schedule(slice: ServerContext.Slice) {
+ start = clock.millis()
+
+ val isLastSlice = !queue.hasNext()
+ val work = SliceWork(slice)
+ val candidateDuration = when (triggerMode) {
+ ServerContext.TriggerMode.FIRST -> work.minExit
+ ServerContext.TriggerMode.LAST -> work.maxExit
+ ServerContext.TriggerMode.DEADLINE -> slice.deadline - start
+ }
+
+ // Check whether the deadline is exceeded during the run of the slice.
+ val duration = min(candidateDuration, slice.deadline - start)
+
+ val action = Runnable {
+ currentWork = null
+
+ // Flush all the work that was performed
+ val hasFinished = work.stop(duration)
+
+ if (!isLastSlice) {
+ val candidateSlice = queue.next()
+ val nextSlice =
+ // If our previous slice exceeds its deadline, merge it with the next candidate slice
+ if (hasFinished)
+ candidateSlice
+ else
+ merge(candidateSlice, slice)
+ schedule(nextSlice)
+ } else if (select.trySelect()) {
+ block.startCoroutineCancellable(select.completion)
+ }
+ }
+
+ // Schedule the flush after the entire slice has finished
+ currentDisposable = delay.invokeOnTimeout(duration, action)
+
+ // Start the slice work
+ currentWork = work
+ work.start()
+ }
+
+ // Schedule the first work
+ if (queue.hasNext()) {
+ schedule(queue.next())
+
+ // A DisposableHandle to flush the work in case the call is cancelled
+ val disposable = DisposableHandle {
+ val end = clock.millis()
+ val duration = end - start
+
+ currentWork?.stop(duration)
+ currentDisposable?.dispose()
+
+ // Schedule reset the usage of the machine since the call is returning
+ usageFlush = delay.invokeOnTimeout(1, Runnable {
+ usageState.value = 0.0
+ usageFlush = null
+ })
+ }
+
+ select.disposeOnSelect(disposable)
+ } else if (select.trySelect()) {
+ // No work has been given: select immediately
+ block.startCoroutineCancellable(select.completion)
+ }
+ }
+ }
+ }
+
+ /**
+ * A slice to be processed.
+ */
+ private inner class SliceWork(val slice: ServerContext.Slice) {
+ /**
+ * The duration after which the first processor finishes processing this slice.
+ */
+ public val minExit: Long
+
+ /**
+ * The duration after which the last processor finishes processing this slice.
+ */
+ public val maxExit: Long
+
+ /**
+ * A flag to indicate that the slice will exceed the deadline.
+ */
+ public val exceedsDeadline: Boolean
+ get() = slice.deadline < maxExit
+
+ /**
+ * The total amount of CPU usage.
+ */
+ public val totalUsage: Double
+
+ /**
+ * A flag to indicate that this slice is empty.
+ */
+ public val isEmpty: Boolean
+
+ init {
+ var totalUsage = 0.0
+ var minExit = Long.MAX_VALUE
+ var maxExit = 0L
+ var nonEmpty = false
+
+ // Determine the duration of the first/last CPU to finish
+ for (i in 0 until min(cpus.size, slice.burst.size)) {
+ val cpu = cpus[i]
+ val usage = min(slice.limit[i], cpu.frequency)
+ val cpuDuration = ceil(slice.burst[i] / usage * 1000).toLong() // Convert from seconds to milliseconds
+
+ totalUsage += usage / cpu.frequency
+
+ if (cpuDuration != 0L) { // We only wait for processor cores with a non-zero burst
+ minExit = min(minExit, cpuDuration)
+ maxExit = max(maxExit, cpuDuration)
+ nonEmpty = true
+ }
+ }
+
+ this.isEmpty = !nonEmpty
+ this.totalUsage = totalUsage
+ this.minExit = minExit
+ this.maxExit = maxExit
+ }
+
+ /**
+ * Indicate that the work on the slice has started.
+ */
+ public fun start() {
+ usageState.value = totalUsage / cpus.size
+ }
+
+ /**
+ * Flush the work performed on the slice.
+ */
+ public fun stop(duration: Long): Boolean {
+ var hasFinished = true
+
+ // Only flush the work if the machine is available
+ if (!unavailable) {
+ for (i in 0 until min(cpus.size, slice.burst.size)) {
+ val usage = min(slice.limit[i], cpus[i].frequency)
+ val granted = ceil(duration / 1000.0 * usage).toLong()
+ val res = max(0, slice.burst[i] - granted)
+ slice.burst[i] = res
+
+ if (res != 0L) {
+ hasFinished = false
+ }
+ }
+ }
+
+ return hasFinished
+ }
+ }
+ }
+
+ override val scope: CoroutineScope
+ get() = domain
+
+ override suspend fun fail() {
+ serverContext?.unavailable = true
+
+ val server = nodeState.value.server?.copy(state = ServerState.ERROR)
+ setNode(nodeState.value.copy(state = NodeState.ERROR, server = server))
+ }
+
+ override suspend fun recover() {
+ serverContext?.unavailable = false
+
+ val server = nodeState.value.server?.copy(state = ServerState.ACTIVE)
+ setNode(nodeState.value.copy(state = NodeState.ACTIVE, server = server))
+ }
+
+ override fun toString(): String = "SimpleBareMetalDriver(node = ${nodeState.value.uid})"
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt
new file mode 100644
index 00000000..9ddbe08e
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/power/PowerModels.kt
@@ -0,0 +1,45 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal.power
+
+import com.atlarge.opendc.compute.metal.driver.BareMetalDriver
+import com.atlarge.opendc.core.power.PowerModel
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.map
+
+/**
+ * A power model which emits a single value.
+ */
+public fun ConstantPowerModel(value: Double): PowerModel<BareMetalDriver> = { _ -> flowOf(value) }
+
+/**
+ * A power model that assumes a naive linear relation between power usage and host CPU utilization.
+ *
+ * @param idle The power draw in Watts on idle.
+ * @param max The maximum power draw in Watts of the server.
+ */
+public fun LinearLoadPowerModel(idle: Double, max: Double): PowerModel<BareMetalDriver> = { driver ->
+ driver.usage.map { load -> (max - idle) * load + idle }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/ProvisioningService.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/ProvisioningService.kt
new file mode 100644
index 00000000..a54d8df4
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/ProvisioningService.kt
@@ -0,0 +1,66 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal.service
+
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.compute.metal.driver.BareMetalDriver
+import com.atlarge.opendc.core.services.AbstractServiceKey
+import java.util.UUID
+
+/**
+ * A cloud platform service for provisioning bare-metal compute nodes on the platform.
+ */
+public interface ProvisioningService {
+ /**
+ * Create a new bare-metal compute node.
+ */
+ public suspend fun create(driver: BareMetalDriver): Node
+
+ /**
+ * Obtain the available nodes.
+ */
+ public suspend fun nodes(): Set<Node>
+
+ /**
+ * Refresh the state of a compute node.
+ */
+ public suspend fun refresh(node: Node): Node
+
+ /**
+ * Deploy the specified [Image] on a compute node.
+ */
+ public suspend fun deploy(node: Node, image: Image): Node
+
+ /**
+ * Stop the specified [Node] .
+ */
+ public suspend fun stop(node: Node): Node
+
+ /**
+ * The service key of this service.
+ */
+ companion object Key : AbstractServiceKey<ProvisioningService>(UUID.randomUUID(), "provisioner")
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningService.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningService.kt
new file mode 100644
index 00000000..f6b236ae
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningService.kt
@@ -0,0 +1,70 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal.service
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.compute.metal.driver.BareMetalDriver
+import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.withContext
+
+/**
+ * A very basic implementation of the [ProvisioningService].
+ */
+public class SimpleProvisioningService(val domain: Domain) : ProvisioningService {
+ /**
+ * The active nodes in this service.
+ */
+ private val nodes: MutableMap<Node, BareMetalDriver> = mutableMapOf()
+
+ override suspend fun create(driver: BareMetalDriver): Node = withContext(domain.coroutineContext) {
+ val node = driver.init()
+ nodes[node] = driver
+ return@withContext node
+ }
+
+ override suspend fun nodes(): Set<Node> = withContext(domain.coroutineContext) { nodes.keys }
+
+ override suspend fun refresh(node: Node): Node = withContext(domain.coroutineContext) {
+ return@withContext nodes[node]!!.refresh()
+ }
+
+ override suspend fun deploy(node: Node, image: Image): Node = withContext(domain.coroutineContext) {
+ val driver = nodes[node]!!
+ driver.setImage(image)
+ val newNode = driver.reboot()
+ return@withContext newNode
+ }
+
+ override suspend fun stop(node: Node): Node = withContext(domain.coroutineContext) {
+ val driver = nodes[node]!!
+ try {
+ driver.stop()
+ } catch (e: CancellationException) {
+ node
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/Hypervisor.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/Hypervisor.kt
new file mode 100644
index 00000000..69b0124d
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/Hypervisor.kt
@@ -0,0 +1,58 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt
+
+import com.atlarge.opendc.core.Identity
+import kotlinx.coroutines.flow.Flow
+import java.util.UUID
+
+/**
+ * A hypervisor (or virtual machine monitor) is software or firmware that virtualizes the host compute environment
+ * into several virtual guest machines.
+ */
+public class Hypervisor(
+ /**
+ * The unique identifier of the hypervisor.
+ */
+ override val uid: UUID,
+
+ /**
+ * The optional name of the hypervisor.
+ */
+ override val name: String,
+
+ /**
+ * Metadata of the hypervisor.
+ */
+ public val metadata: Map<String, Any>,
+
+ /**
+ * The events that are emitted by the hypervisor.
+ */
+ public val events: Flow<HypervisorEvent>
+) : Identity {
+ override fun hashCode(): Int = uid.hashCode()
+ override fun equals(other: Any?): Boolean = other is Hypervisor && uid == other.uid
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorEvent.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorEvent.kt
new file mode 100644
index 00000000..7c088bc8
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorEvent.kt
@@ -0,0 +1,78 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt
+
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+
+/**
+ * An event that is emitted by a [VirtDriver].
+ */
+public sealed class HypervisorEvent {
+ /**
+ * The driver that emitted the event.
+ */
+ public abstract val driver: VirtDriver
+
+ /**
+ * This event is emitted when the number of active servers on the server managed by this driver is updated.
+ *
+ * @property driver The driver that emitted the event.
+ * @property numberOfActiveServers The number of active servers.
+ * @property availableMemory The available memory, in MB.
+ */
+ public data class VmsUpdated(
+ override val driver: VirtDriver,
+ public val numberOfActiveServers: Int,
+ public val availableMemory: Long
+ ) : HypervisorEvent()
+
+ /**
+ * This event is emitted when a slice is finished.
+ *
+ * @property driver The driver that emitted the event.
+ * @property requestedBurst The total requested CPU time (can be above capacity).
+ * @property grantedBurst The actual total granted capacity, which might be lower than the requested burst due to
+ * the hypervisor being interrupted during a slice.
+ * @property overcommissionedBurst The CPU time that the hypervisor could not grant to the virtual machine since
+ * it did not have the capacity.
+ * @property interferedBurst The sum of CPU time that virtual machines could not utilize due to performance
+ * interference.
+ * @property cpuUsage CPU use in megahertz.
+ * @property cpuDemand CPU demand in megahertz.
+ * @property numberOfDeployedImages The number of images deployed on this hypervisor.
+ */
+ public data class SliceFinished(
+ override val driver: VirtDriver,
+ public val requestedBurst: Long,
+ public val grantedBurst: Long,
+ public val overcommissionedBurst: Long,
+ public val interferedBurst: Long,
+ public val cpuUsage: Double,
+ public val cpuDemand: Double,
+ public val numberOfDeployedImages: Int,
+ public val hostServer: Server
+ ) : HypervisorEvent()
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorImage.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorImage.kt
new file mode 100644
index 00000000..bd395f0d
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/HypervisorImage.kt
@@ -0,0 +1,57 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt
+
+import com.atlarge.opendc.compute.core.execution.ServerContext
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.virt.driver.SimpleVirtDriver
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+import com.atlarge.opendc.core.resource.TagContainer
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.suspendCancellableCoroutine
+import java.util.UUID
+
+/**
+ * A hypervisor managing the VMs of a node.
+ */
+object HypervisorImage : Image {
+ override val uid: UUID = UUID.randomUUID()
+ override val name: String = "vmm"
+ override val tags: TagContainer = emptyMap()
+
+ override suspend fun invoke(ctx: ServerContext) {
+ coroutineScope {
+ val driver = SimpleVirtDriver(ctx, this)
+ ctx.publishService(VirtDriver.Key, driver)
+
+ // Suspend image until it is cancelled
+ try {
+ suspendCancellableCoroutine<Unit> {}
+ } finally {
+ driver.cancel()
+ }
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/InsufficientMemoryOnServerException.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/InsufficientMemoryOnServerException.kt
new file mode 100644
index 00000000..0586ae00
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/InsufficientMemoryOnServerException.kt
@@ -0,0 +1,3 @@
+package com.atlarge.opendc.compute.virt.driver
+
+public class InsufficientMemoryOnServerException : IllegalStateException("Insufficient memory left on server.")
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/SimpleVirtDriver.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/SimpleVirtDriver.kt
new file mode 100644
index 00000000..3c41f52e
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/SimpleVirtDriver.kt
@@ -0,0 +1,625 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt.driver
+
+import com.atlarge.odcsim.flow.EventFlow
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.core.Flavor
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.ServerEvent
+import com.atlarge.opendc.compute.core.ServerState
+import com.atlarge.opendc.compute.core.execution.ServerContext
+import com.atlarge.opendc.compute.core.execution.ServerManagementContext
+import com.atlarge.opendc.compute.core.execution.ShutdownException
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.virt.HypervisorEvent
+import com.atlarge.opendc.core.services.ServiceKey
+import com.atlarge.opendc.core.services.ServiceRegistry
+import com.atlarge.opendc.compute.core.workload.IMAGE_PERF_INTERFERENCE_MODEL
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.DisposableHandle
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.FlowPreview
+import kotlinx.coroutines.InternalCoroutinesApi
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.intrinsics.startCoroutineCancellable
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.selects.SelectClause0
+import kotlinx.coroutines.selects.SelectInstance
+import kotlinx.coroutines.selects.select
+import java.util.UUID
+import kotlin.math.ceil
+import kotlin.math.max
+import kotlin.math.min
+
+/**
+ * A [VirtDriver] that is backed by a simple hypervisor implementation.
+ */
+@OptIn(ExperimentalCoroutinesApi::class, FlowPreview::class)
+class SimpleVirtDriver(
+ private val hostContext: ServerContext,
+ scope: CoroutineScope
+) : VirtDriver, CoroutineScope by scope {
+ /**
+ * The [Server] on which this hypervisor runs.
+ */
+ val server: Server
+ get() = hostContext.server
+
+ /**
+ * A set for tracking the VM context objects.
+ */
+ private val vms: MutableSet<VmServerContext> = mutableSetOf()
+
+ /**
+ * Current total memory use of the images on this hypervisor.
+ */
+ private var availableMemory: Long = hostContext.server.flavor.memorySize
+
+ /**
+ * The [EventFlow] to emit the events.
+ */
+ internal val eventFlow = EventFlow<HypervisorEvent>()
+
+ override val events: Flow<HypervisorEvent> = eventFlow
+
+ init {
+ launch {
+ try {
+ scheduler()
+ } catch (e: Exception) {
+ if (e !is CancellationException) {
+ simulationContext.log.error("Hypervisor scheduler failed", e)
+ }
+ throw e
+ }
+ }
+ }
+
+ override suspend fun spawn(
+ name: String,
+ image: Image,
+ flavor: Flavor
+ ): Server {
+ val requiredMemory = flavor.memorySize
+ if (availableMemory - requiredMemory < 0) {
+ throw InsufficientMemoryOnServerException()
+ }
+ require(flavor.cpuCount <= hostContext.server.flavor.cpuCount) { "Machine does not fit" }
+
+ val events = EventFlow<ServerEvent>()
+ val server = Server(
+ UUID.randomUUID(), name, emptyMap(), flavor, image, ServerState.BUILD,
+ ServiceRegistry(), events
+ )
+ availableMemory -= requiredMemory
+ vms.add(VmServerContext(server, events))
+ vmStarted(server)
+ eventFlow.emit(HypervisorEvent.VmsUpdated(this, vms.size, availableMemory))
+ return server
+ }
+
+ internal fun cancel() {
+ eventFlow.close()
+ }
+
+ private fun vmStarted(server: Server) {
+ vms.forEach {
+ val performanceModel =
+ it.server.image.tags[IMAGE_PERF_INTERFERENCE_MODEL] as? PerformanceInterferenceModel?
+ performanceModel?.vmStarted(server)
+ }
+ }
+
+ private fun vmStopped(server: Server) {
+ vms.forEach {
+ val performanceModel =
+ it.server.image.tags[IMAGE_PERF_INTERFERENCE_MODEL] as? PerformanceInterferenceModel?
+ performanceModel?.vmStopped(server)
+ }
+ }
+
+ /**
+ * A scheduling command processed by the scheduler.
+ */
+ private sealed class SchedulerCommand {
+ /**
+ * Schedule the specified VM on the hypervisor.
+ */
+ data class Schedule(val vm: Vm) : SchedulerCommand()
+
+ /**
+ * De-schedule the specified VM on the hypervisor.
+ */
+ data class Deschedule(val vm: Vm) : SchedulerCommand()
+
+ /**
+ * Interrupt the scheduler.
+ */
+ object Interrupt : SchedulerCommand()
+ }
+
+ /**
+ * A flag to indicate the driver is stopped.
+ */
+ private var stopped: Boolean = false
+
+ /**
+ * The channel for scheduling new CPU requests.
+ */
+ private val schedulingQueue = Channel<SchedulerCommand>(Channel.UNLIMITED)
+
+ /**
+ * The scheduling process of the hypervisor.
+ */
+ private suspend fun scheduler() {
+ val clock = simulationContext.clock
+ val maxUsage = hostContext.cpus.sumByDouble { it.frequency }
+ val pCPUs = hostContext.cpus.indices.sortedBy { hostContext.cpus[it].frequency }
+
+ val vms = mutableSetOf<Vm>()
+ val vcpus = mutableListOf<VCpu>()
+
+ val usage = DoubleArray(hostContext.cpus.size)
+ val burst = LongArray(hostContext.cpus.size)
+
+ fun process(command: SchedulerCommand) {
+ when (command) {
+ is SchedulerCommand.Schedule -> {
+ vms += command.vm
+ vcpus.addAll(command.vm.vcpus)
+ }
+ is SchedulerCommand.Deschedule -> {
+ vms -= command.vm
+ vcpus.removeAll(command.vm.vcpus)
+ }
+ is SchedulerCommand.Interrupt -> {}
+ }
+ }
+
+ fun processRemaining() {
+ var command = schedulingQueue.poll()
+ while (command != null) {
+ process(command)
+ command = schedulingQueue.poll()
+ }
+ }
+
+ while (!stopped) {
+ // Wait for a request to be submitted if we have no work yet.
+ if (vcpus.isEmpty()) {
+ process(schedulingQueue.receive())
+ }
+
+ processRemaining()
+
+ val start = clock.millis()
+
+ val vmCount = vms.size
+ var duration: Double = Double.POSITIVE_INFINITY
+ var deadline: Long = Long.MAX_VALUE
+ var availableUsage = maxUsage
+ var totalRequestedUsage = 0.0
+ var totalRequestedBurst = 0L
+
+ // Sort the vCPUs based on their requested usage
+ // Profiling shows that it is faster to sort every slice instead of maintaining some kind of sorted set
+ vcpus.sort()
+
+ // Divide the available host capacity fairly across the vCPUs using max-min fair sharing
+ for ((i, req) in vcpus.withIndex()) {
+ val remaining = vcpus.size - i
+ val availableShare = availableUsage / remaining
+ val grantedUsage = min(req.limit, availableShare)
+
+ // Take into account the minimum deadline of this slice before we possible continue
+ deadline = min(deadline, req.vm.deadline)
+
+ // Ignore empty CPUs
+ if (grantedUsage <= 0 || req.burst <= 0) {
+ req.allocatedLimit = 0.0
+ continue
+ }
+
+ totalRequestedUsage += req.limit
+ totalRequestedBurst += req.burst
+
+ req.allocatedLimit = grantedUsage
+ availableUsage -= grantedUsage
+
+ // The duration that we want to run is that of the shortest request from a vCPU
+ duration = min(duration, req.burst / grantedUsage)
+ }
+
+ // XXX We set the minimum duration to 5 minutes here to prevent the rounding issues that are occurring with the FLOPs.
+ duration = 300.0
+
+ val totalAllocatedUsage = maxUsage - availableUsage
+ var totalAllocatedBurst = 0L
+ availableUsage = totalAllocatedUsage
+ val serverLoad = totalAllocatedUsage / maxUsage
+
+ // Divide the requests over the available capacity of the pCPUs fairly
+ for (i in pCPUs) {
+ val maxCpuUsage = hostContext.cpus[i].frequency
+ val fraction = maxCpuUsage / maxUsage
+ val grantedUsage = min(maxCpuUsage, totalAllocatedUsage * fraction)
+ val grantedBurst = ceil(duration * grantedUsage).toLong()
+
+ usage[i] = grantedUsage
+ burst[i] = grantedBurst
+ totalAllocatedBurst += grantedBurst
+ availableUsage -= grantedUsage
+ }
+
+ // We run the total burst on the host processor. Note that this call may be cancelled at any moment in
+ // time, so not all of the burst may be executed.
+ select<Boolean> {
+ schedulingQueue.onReceive { schedulingQueue.offer(it); true }
+ hostContext.onRun(ServerContext.Slice(burst, usage, deadline), ServerContext.TriggerMode.DEADLINE).invoke { false }
+ }
+
+ val end = clock.millis()
+
+ // No work was performed
+ if ((end - start) <= 0) {
+ continue
+ }
+
+ // The total requested burst that the VMs wanted to run in the time-frame that we ran.
+ val totalRequestedSubBurst = vcpus.map { ceil((duration * 1000) / (it.vm.deadline - start) * it.burst).toLong() }.sum()
+ val totalRemainder = burst.sum()
+ val totalGrantedBurst = totalAllocatedBurst - totalRemainder
+
+ // The burst that was lost due to overcommissioning of CPU resources
+ var totalOvercommissionedBurst = 0L
+ // The burst that was lost due to interference.
+ var totalInterferedBurst = 0L
+
+ val vmIterator = vms.iterator()
+ while (vmIterator.hasNext()) {
+ val vm = vmIterator.next()
+
+ // Apply performance interference model
+ val performanceModel =
+ vm.ctx.server.image.tags[IMAGE_PERF_INTERFERENCE_MODEL] as? PerformanceInterferenceModel?
+ val performanceScore = performanceModel?.apply(serverLoad) ?: 1.0
+ var hasFinished = false
+
+ for (vcpu in vm.vcpus) {
+ // Compute the fraction of compute time allocated to the VM
+ val fraction = vcpu.allocatedLimit / totalAllocatedUsage
+
+ // Compute the burst time that the VM was actually granted
+ val grantedBurst = ceil(totalGrantedBurst * fraction).toLong()
+
+ // The burst that was actually used by the VM
+ val usedBurst = ceil(grantedBurst * performanceScore).toLong()
+
+ totalInterferedBurst += grantedBurst - usedBurst
+
+ // Compute remaining burst time to be executed for the request
+ if (vcpu.consume(usedBurst)) {
+ hasFinished = true
+ } else if (vm.deadline <= end && hostContext.server.state != ServerState.ERROR) {
+ // Request must have its entire burst consumed or otherwise we have overcommission
+ // Note that we count the overcommissioned burst if the hypervisor has failed.
+ totalOvercommissionedBurst += vcpu.burst
+ }
+ }
+
+ if (hasFinished || vm.deadline <= end) {
+ // Mark the VM as finished and deschedule the VMs if needed
+ if (vm.finish()) {
+ vmIterator.remove()
+ vcpus.removeAll(vm.vcpus)
+ }
+ }
+ }
+
+ eventFlow.emit(
+ HypervisorEvent.SliceFinished(
+ this@SimpleVirtDriver,
+ totalRequestedBurst,
+ min(totalRequestedSubBurst, totalGrantedBurst), // We can run more than requested due to timing
+ totalOvercommissionedBurst,
+ totalInterferedBurst, // Might be smaller than zero due to FP rounding errors,
+ min(totalAllocatedUsage, totalRequestedUsage), // The allocated usage might be slightly higher due to FP rounding
+ totalRequestedUsage,
+ vmCount, // Some VMs might already have finished, so keep initial VM count
+ server
+ )
+ )
+ }
+ }
+
+ /**
+ * A virtual machine running on the hypervisor.
+ *
+ * @param ctx The execution context the vCPU runs in.
+ * @param triggerMode The mode when to trigger the VM exit.
+ * @param merge The function to merge consecutive slices on spillover.
+ * @param select The function to select on finish.
+ */
+ @OptIn(InternalCoroutinesApi::class)
+ private data class Vm(
+ val ctx: VmServerContext,
+ var triggerMode: ServerContext.TriggerMode = ServerContext.TriggerMode.FIRST,
+ var merge: (ServerContext.Slice, ServerContext.Slice) -> ServerContext.Slice = { _, r -> r },
+ var select: () -> Unit = {}
+ ) {
+ /**
+ * The vCPUs of this virtual machine.
+ */
+ val vcpus: List<VCpu>
+
+ /**
+ * The slices that the VM wants to run.
+ */
+ var queue: Iterator<ServerContext.Slice> = emptyList<ServerContext.Slice>().iterator()
+
+ /**
+ * The current active slice.
+ */
+ var activeSlice: ServerContext.Slice? = null
+
+ /**
+ * The current deadline of the VM.
+ */
+ val deadline: Long
+ get() = activeSlice?.deadline ?: Long.MAX_VALUE
+
+ /**
+ * A flag to indicate that the VM is idle.
+ */
+ val isIdle: Boolean
+ get() = activeSlice == null
+
+ init {
+ vcpus = ctx.cpus.mapIndexed { i, model -> VCpu(this, model, i) }
+ }
+
+ /**
+ * Schedule the given slices on this vCPU, replacing the existing slices.
+ */
+ fun schedule(slices: Sequence<ServerContext.Slice>) {
+ queue = slices.iterator()
+
+ if (queue.hasNext()) {
+ activeSlice = queue.next()
+ vcpus.forEach { it.refresh() }
+ }
+ }
+
+ /**
+ * Cancel the existing workload on the VM.
+ */
+ fun cancel() {
+ queue = emptyList<ServerContext.Slice>().iterator()
+ activeSlice = null
+ vcpus.forEach { it.refresh() }
+ }
+
+ /**
+ * Finish the current slice of the VM.
+ *
+ * @return `true` if the vCPUs may be descheduled, `false` otherwise.
+ */
+ fun finish(): Boolean {
+ val activeSlice = activeSlice ?: return true
+
+ return if (queue.hasNext()) {
+ val needsMerge = activeSlice.burst.any { it > 0 }
+ val candidateSlice = queue.next()
+ val slice = if (needsMerge) merge(activeSlice, candidateSlice) else candidateSlice
+
+ this.activeSlice = slice
+
+ // Update the vCPU cache
+ vcpus.forEach { it.refresh() }
+
+ false
+ } else {
+ this.activeSlice = null
+ select()
+ true
+ }
+ }
+ }
+
+ /**
+ * A virtual CPU that can be scheduled on a physical CPU.
+ *
+ * @param vm The VM of which this vCPU is part.
+ * @param model The model of CPU that this vCPU models.
+ * @param id The id of the vCPU with respect to the VM.
+ */
+ private data class VCpu(
+ val vm: Vm,
+ val model: ProcessingUnit,
+ val id: Int
+ ) : Comparable<VCpu> {
+ /**
+ * The current limit on the vCPU.
+ */
+ var limit: Double = 0.0
+
+ /**
+ * The limit allocated by the hypervisor.
+ */
+ var allocatedLimit: Double = 0.0
+
+ /**
+ * The current burst running on the vCPU.
+ */
+ var burst: Long = 0L
+
+ /**
+ * Consume the specified burst on this vCPU.
+ */
+ fun consume(burst: Long): Boolean {
+ this.burst = max(0, this.burst - burst)
+
+ // Flush the result to the slice if it exists
+ vm.activeSlice?.burst?.takeIf { id < it.size }?.set(id, this.burst)
+
+ return allocatedLimit > 0.0 && this.burst == 0L
+ }
+
+ /**
+ * Refresh the information of this vCPU based on the current slice.
+ */
+ fun refresh() {
+ limit = vm.activeSlice?.limit?.takeIf { id < it.size }?.get(id) ?: 0.0
+ burst = vm.activeSlice?.burst?.takeIf { id < it.size }?.get(id) ?: 0
+ }
+
+ /**
+ * Compare to another vCPU based on the current load of the vCPU.
+ */
+ override fun compareTo(other: VCpu): Int {
+ var cmp = limit.compareTo(other.limit)
+
+ if (cmp != 0) {
+ return cmp
+ }
+
+ cmp = vm.ctx.server.uid.compareTo(other.vm.ctx.server.uid)
+
+ if (cmp != 0) {
+ return cmp
+ }
+
+ return id.compareTo(other.id)
+ }
+
+ /**
+ * Create a string representation of the vCPU.
+ */
+ override fun toString(): String =
+ "vCPU(vm=${vm.ctx.server.uid},id=$id,burst=$burst,limit=$limit,allocatedLimit=$allocatedLimit)"
+ }
+
+ /**
+ * The execution context in which a VM runs.
+ *
+ * @param server The details of the VM.
+ * @param events The event stream to publish to.
+ */
+ private inner class VmServerContext(server: Server, val events: EventFlow<ServerEvent>) : ServerManagementContext, DisposableHandle {
+ private var finalized: Boolean = false
+ private var initialized: Boolean = false
+ private val vm: Vm
+
+ internal val job: Job = launch {
+ delay(1) // TODO Introduce boot time
+ init()
+ try {
+ server.image(this@VmServerContext)
+ exit()
+ } catch (cause: Throwable) {
+ exit(cause)
+ }
+ }
+
+ override var server: Server = server
+ set(value) {
+ if (field.state != value.state) {
+ events.emit(ServerEvent.StateChanged(value, field.state))
+ }
+
+ field = value
+ }
+
+ override val cpus: List<ProcessingUnit> = hostContext.cpus.take(server.flavor.cpuCount)
+
+ init {
+ vm = Vm(this)
+ }
+
+ override suspend fun <T : Any> publishService(key: ServiceKey<T>, service: T) {
+ server = server.copy(services = server.services.put(key, service))
+ events.emit(ServerEvent.ServicePublished(server, key))
+ }
+
+ override suspend fun init() {
+ assert(!finalized) { "VM is already finalized" }
+
+ server = server.copy(state = ServerState.ACTIVE)
+ initialized = true
+ }
+
+ override suspend fun exit(cause: Throwable?) {
+ finalized = true
+
+ val serverState =
+ if (cause == null || (cause is ShutdownException && cause.cause == null))
+ ServerState.SHUTOFF
+ else
+ ServerState.ERROR
+ server = server.copy(state = serverState)
+ availableMemory += server.flavor.memorySize
+ vms.remove(this)
+ vmStopped(server)
+ eventFlow.emit(HypervisorEvent.VmsUpdated(this@SimpleVirtDriver, vms.size, availableMemory))
+ events.close()
+ }
+
+ @OptIn(InternalCoroutinesApi::class)
+ override fun onRun(
+ batch: Sequence<ServerContext.Slice>,
+ triggerMode: ServerContext.TriggerMode,
+ merge: (ServerContext.Slice, ServerContext.Slice) -> ServerContext.Slice
+ ): SelectClause0 = object : SelectClause0 {
+ @InternalCoroutinesApi
+ override fun <R> registerSelectClause0(select: SelectInstance<R>, block: suspend () -> R) {
+ vm.triggerMode = triggerMode
+ vm.merge = merge
+ vm.select = {
+ if (select.trySelect()) {
+ block.startCoroutineCancellable(select.completion)
+ }
+ }
+ vm.schedule(batch)
+ // Indicate to the hypervisor that the VM should be re-scheduled
+ schedulingQueue.offer(SchedulerCommand.Schedule(vm))
+ select.disposeOnSelect(this@VmServerContext)
+ }
+ }
+
+ override fun dispose() {
+ if (!vm.isIdle) {
+ vm.cancel()
+ schedulingQueue.offer(SchedulerCommand.Deschedule(vm))
+ }
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/VirtDriver.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/VirtDriver.kt
new file mode 100644
index 00000000..1002d382
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/driver/VirtDriver.kt
@@ -0,0 +1,56 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt.driver
+
+import com.atlarge.opendc.compute.core.Flavor
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.virt.HypervisorEvent
+import com.atlarge.opendc.core.services.AbstractServiceKey
+import kotlinx.coroutines.flow.Flow
+import java.util.UUID
+
+/**
+ * A driver interface for a hypervisor running on some host server and communicating with the central compute service to
+ * provide virtualization for that particular resource.
+ */
+public interface VirtDriver {
+ /**
+ * The events emitted by the driver.
+ */
+ public val events: Flow<HypervisorEvent>
+
+ /**
+ * Spawn the given [Image] on the compute resource of this driver.
+ *
+ * @param name The name of the server to spawn.
+ * @param image The image to deploy.
+ * @param flavor The flavor of the server which this driver is controlling.
+ * @return The virtual server spawned by this method.
+ */
+ public suspend fun spawn(name: String, image: Image, flavor: Flavor): Server
+
+ companion object Key : AbstractServiceKey<VirtDriver>(UUID.randomUUID(), "virtual-driver")
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/HypervisorView.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/HypervisorView.kt
new file mode 100644
index 00000000..e52a1698
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/HypervisorView.kt
@@ -0,0 +1,15 @@
+package com.atlarge.opendc.compute.virt.service
+
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+import java.util.UUID
+
+class HypervisorView(
+ val uid: UUID,
+ var server: Server,
+ var numberOfActiveServers: Int,
+ var availableMemory: Long,
+ var provisionedCores: Int
+) {
+ lateinit var driver: VirtDriver
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt
new file mode 100644
index 00000000..ff4aa3d7
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/SimpleVirtProvisioningService.kt
@@ -0,0 +1,351 @@
+package com.atlarge.opendc.compute.virt.service
+
+import com.atlarge.odcsim.SimulationContext
+import com.atlarge.odcsim.flow.EventFlow
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.core.Flavor
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.ServerEvent
+import com.atlarge.opendc.compute.core.ServerState
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.compute.virt.HypervisorEvent
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+import com.atlarge.opendc.compute.virt.HypervisorImage
+import com.atlarge.opendc.compute.virt.driver.InsufficientMemoryOnServerException
+import com.atlarge.opendc.compute.virt.service.allocation.AllocationPolicy
+import com.atlarge.opendc.core.services.ServiceKey
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.suspendCancellableCoroutine
+import kotlinx.coroutines.withContext
+import mu.KotlinLogging
+import kotlin.coroutines.Continuation
+import kotlin.coroutines.resume
+import kotlin.math.max
+
+private val logger = KotlinLogging.logger {}
+
+@OptIn(ExperimentalCoroutinesApi::class)
+class SimpleVirtProvisioningService(
+ public override val allocationPolicy: AllocationPolicy,
+ private val ctx: SimulationContext,
+ private val provisioningService: ProvisioningService
+) : VirtProvisioningService, CoroutineScope by ctx.domain {
+ /**
+ * The hypervisors that have been launched by the service.
+ */
+ private val hypervisors: MutableMap<Server, HypervisorView> = mutableMapOf()
+
+ /**
+ * The available hypervisors.
+ */
+ private val availableHypervisors: MutableSet<HypervisorView> = mutableSetOf()
+
+ /**
+ * The incoming images to be processed by the provisioner.
+ */
+ private val incomingImages: MutableSet<ImageView> = mutableSetOf()
+
+ /**
+ * The active images in the system.
+ */
+ private val activeImages: MutableSet<ImageView> = mutableSetOf()
+
+ public var submittedVms = 0
+ public var queuedVms = 0
+ public var runningVms = 0
+ public var finishedVms = 0
+ public var unscheduledVms = 0
+
+ private var maxCores = 0
+ private var maxMemory = 0L
+
+ /**
+ * The allocation logic to use.
+ */
+ private val allocationLogic = allocationPolicy()
+
+ /**
+ * The [EventFlow] to emit the events.
+ */
+ internal val eventFlow = EventFlow<VirtProvisioningEvent>()
+
+ override val events: Flow<VirtProvisioningEvent> = eventFlow
+
+ init {
+ launch {
+ val provisionedNodes = provisioningService.nodes()
+ provisionedNodes.forEach { node ->
+ val hypervisorImage = HypervisorImage
+ val node = provisioningService.deploy(node, hypervisorImage)
+ node.server!!.events.onEach { event ->
+ when (event) {
+ is ServerEvent.StateChanged -> stateChanged(event.server)
+ is ServerEvent.ServicePublished -> servicePublished(event.server, event.key)
+ }
+ }.launchIn(this)
+ }
+ }
+ }
+
+ override suspend fun drivers(): Set<VirtDriver> = withContext(coroutineContext) {
+ availableHypervisors.map { it.driver }.toSet()
+ }
+
+ override suspend fun deploy(
+ name: String,
+ image: Image,
+ flavor: Flavor
+ ): Server = withContext(coroutineContext) {
+ eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
+ this@SimpleVirtProvisioningService,
+ hypervisors.size,
+ availableHypervisors.size,
+ ++submittedVms,
+ runningVms,
+ finishedVms,
+ ++queuedVms,
+ unscheduledVms
+ ))
+
+ suspendCancellableCoroutine<Server> { cont ->
+ val vmInstance = ImageView(name, image, flavor, cont)
+ incomingImages += vmInstance
+ requestCycle()
+ }
+ }
+
+ override suspend fun terminate() {
+ val provisionedNodes = provisioningService.nodes()
+ provisionedNodes.forEach { node -> provisioningService.stop(node) }
+ }
+
+ private var call: Job? = null
+
+ private fun requestCycle() {
+ if (call != null) {
+ return
+ }
+
+ val quantum = 300000 // 5 minutes in milliseconds
+ // We assume that the provisioner runs at a fixed slot every time quantum (e.g t=0, t=60, t=120).
+ // This is important because the slices of the VMs need to be aligned.
+ // We calculate here the delay until the next scheduling slot.
+ val delay = quantum - (ctx.clock.millis() % quantum)
+
+ val call = launch {
+ delay(delay)
+ this@SimpleVirtProvisioningService.call = null
+ schedule()
+ }
+ this.call = call
+ }
+
+ private suspend fun schedule() {
+ val clock = simulationContext.clock
+ val imagesToBeScheduled = incomingImages.toSet()
+
+ for (imageInstance in imagesToBeScheduled) {
+ val requiredMemory = (imageInstance.image as VmImage).requiredMemory
+ val selectedHv = allocationLogic.select(availableHypervisors, imageInstance)
+
+ if (selectedHv == null) {
+ if (requiredMemory > maxMemory || imageInstance.flavor.cpuCount > maxCores) {
+ eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
+ this@SimpleVirtProvisioningService,
+ hypervisors.size,
+ availableHypervisors.size,
+ submittedVms,
+ runningVms,
+ finishedVms,
+ queuedVms,
+ ++unscheduledVms
+ ))
+
+ incomingImages -= imageInstance
+
+ logger.warn("Failed to spawn ${imageInstance.image}: does not fit [${clock.millis()}]")
+ continue
+ } else {
+ break
+ }
+ }
+
+ try {
+ logger.info { "[${ctx.clock.millis()}] Spawning ${imageInstance.image} on ${selectedHv.server.uid} ${selectedHv.server.name} ${selectedHv.server.flavor}" }
+ incomingImages -= imageInstance
+
+ // Speculatively update the hypervisor view information to prevent other images in the queue from
+ // deciding on stale values.
+ selectedHv.numberOfActiveServers++
+ selectedHv.provisionedCores += imageInstance.flavor.cpuCount
+ selectedHv.availableMemory -= requiredMemory // XXX Temporary hack
+
+ val server = selectedHv.driver.spawn(
+ imageInstance.name,
+ imageInstance.image,
+ imageInstance.flavor
+ )
+ imageInstance.server = server
+ imageInstance.continuation.resume(server)
+
+ eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
+ this@SimpleVirtProvisioningService,
+ hypervisors.size,
+ availableHypervisors.size,
+ submittedVms,
+ ++runningVms,
+ finishedVms,
+ --queuedVms,
+ unscheduledVms
+ ))
+ activeImages += imageInstance
+
+ server.events
+ .onEach { event ->
+ when (event) {
+ is ServerEvent.StateChanged -> {
+ if (event.server.state == ServerState.SHUTOFF) {
+ logger.info { "[${ctx.clock.millis()}] Server ${event.server.uid} ${event.server.name} ${event.server.flavor} finished." }
+
+ eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
+ this@SimpleVirtProvisioningService,
+ hypervisors.size,
+ availableHypervisors.size,
+ submittedVms,
+ --runningVms,
+ ++finishedVms,
+ queuedVms,
+ unscheduledVms
+ ))
+
+ activeImages -= imageInstance
+ selectedHv.provisionedCores -= server.flavor.cpuCount
+
+ // Try to reschedule if needed
+ if (incomingImages.isNotEmpty()) {
+ requestCycle()
+ }
+ }
+ }
+ }
+ }
+ .launchIn(this)
+ } catch (e: InsufficientMemoryOnServerException) {
+ logger.error("Failed to deploy VM", e)
+
+ selectedHv.numberOfActiveServers--
+ selectedHv.provisionedCores -= imageInstance.flavor.cpuCount
+ selectedHv.availableMemory += requiredMemory
+ } catch (e: Throwable) {
+ logger.error("Failed to deploy VM", e)
+ }
+ }
+ }
+
+ private fun stateChanged(server: Server) {
+ when (server.state) {
+ ServerState.ACTIVE -> {
+ logger.debug { "[${ctx.clock.millis()}] Server ${server.uid} available: ${server.state}" }
+
+ if (server in hypervisors) {
+ // Corner case for when the hypervisor already exists
+ availableHypervisors += hypervisors.getValue(server)
+ } else {
+ val hv = HypervisorView(
+ server.uid,
+ server,
+ 0,
+ server.flavor.memorySize,
+ 0
+ )
+ maxCores = max(maxCores, server.flavor.cpuCount)
+ maxMemory = max(maxMemory, server.flavor.memorySize)
+ hypervisors[server] = hv
+ }
+
+ eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
+ this@SimpleVirtProvisioningService,
+ hypervisors.size,
+ availableHypervisors.size,
+ submittedVms,
+ runningVms,
+ finishedVms,
+ queuedVms,
+ unscheduledVms
+ ))
+
+ // Re-schedule on the new machine
+ if (incomingImages.isNotEmpty()) {
+ requestCycle()
+ }
+ }
+ ServerState.SHUTOFF, ServerState.ERROR -> {
+ logger.debug { "[${ctx.clock.millis()}] Server ${server.uid} unavailable: ${server.state}" }
+ val hv = hypervisors[server] ?: return
+ availableHypervisors -= hv
+
+ eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
+ this@SimpleVirtProvisioningService,
+ hypervisors.size,
+ availableHypervisors.size,
+ submittedVms,
+ runningVms,
+ finishedVms,
+ queuedVms,
+ unscheduledVms
+ ))
+
+ if (incomingImages.isNotEmpty()) {
+ requestCycle()
+ }
+ }
+ else -> throw IllegalStateException()
+ }
+ }
+
+ private fun servicePublished(server: Server, key: ServiceKey<*>) {
+ if (key == VirtDriver.Key) {
+ val hv = hypervisors[server] ?: return
+ hv.driver = server.services[VirtDriver]
+ availableHypervisors += hv
+
+ eventFlow.emit(VirtProvisioningEvent.MetricsAvailable(
+ this@SimpleVirtProvisioningService,
+ hypervisors.size,
+ availableHypervisors.size,
+ submittedVms,
+ runningVms,
+ finishedVms,
+ queuedVms,
+ unscheduledVms
+ ))
+
+ hv.driver.events
+ .onEach { event ->
+ if (event is HypervisorEvent.VmsUpdated) {
+ hv.numberOfActiveServers = event.numberOfActiveServers
+ hv.availableMemory = event.availableMemory
+ }
+ }.launchIn(this)
+
+ requestCycle()
+ }
+ }
+
+ data class ImageView(
+ val name: String,
+ val image: Image,
+ val flavor: Flavor,
+ val continuation: Continuation<Server>,
+ var server: Server? = null
+ )
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningEvent.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningEvent.kt
new file mode 100644
index 00000000..c3fb99f9
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningEvent.kt
@@ -0,0 +1,49 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt.service
+
+/**
+ * An event that is emitted by the [VirtProvisioningService].
+ */
+public sealed class VirtProvisioningEvent {
+ /**
+ * The service that has emitted the event.
+ */
+ public abstract val provisioner: VirtProvisioningService
+
+ /**
+ * An event emitted for writing metrics.
+ */
+ data class MetricsAvailable(
+ override val provisioner: VirtProvisioningService,
+ public val totalHostCount: Int,
+ public val availableHostCount: Int,
+ public val totalVmCount: Int,
+ public val activeVmCount: Int,
+ public val inactiveVmCount: Int,
+ public val waitingVmCount: Int,
+ public val failedVmCount: Int
+ ) : VirtProvisioningEvent()
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningService.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningService.kt
new file mode 100644
index 00000000..c4cbd711
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/VirtProvisioningService.kt
@@ -0,0 +1,42 @@
+package com.atlarge.opendc.compute.virt.service
+
+import com.atlarge.opendc.compute.core.Flavor
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+import com.atlarge.opendc.compute.virt.service.allocation.AllocationPolicy
+import kotlinx.coroutines.flow.Flow
+
+/**
+ * A service for VM provisioning on a cloud.
+ */
+interface VirtProvisioningService {
+ /**
+ * The policy used for allocating a VM on the available hypervisors.
+ */
+ val allocationPolicy: AllocationPolicy
+
+ /**
+ * The events emitted by the service.
+ */
+ public val events: Flow<VirtProvisioningEvent>
+
+ /**
+ * Obtain the active hypervisors for this provisioner.
+ */
+ public suspend fun drivers(): Set<VirtDriver>
+
+ /**
+ * Submit the specified [Image] to the provisioning service.
+ *
+ * @param name The name of the server to deploy.
+ * @param image The image to be deployed.
+ * @param flavor The flavor of the machine instance to run this [image] on.
+ */
+ public suspend fun deploy(name: String, image: Image, flavor: Flavor): Server
+
+ /**
+ * Terminate the provisioning service releasing all the leased bare-metal machines.
+ */
+ public suspend fun terminate()
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AllocationPolicy.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AllocationPolicy.kt
new file mode 100644
index 00000000..b7c9388d
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AllocationPolicy.kt
@@ -0,0 +1,25 @@
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+import com.atlarge.opendc.compute.virt.service.SimpleVirtProvisioningService
+
+/**
+ * A policy for selecting the [Node] an image should be deployed to,
+ */
+public interface AllocationPolicy {
+ /**
+ * The logic of the allocation policy.
+ */
+ public interface Logic {
+ /**
+ * Select the node on which the server should be scheduled.
+ */
+ public fun select(hypervisors: Set<HypervisorView>, image: SimpleVirtProvisioningService.ImageView): HypervisorView?
+ }
+
+ /**
+ * Builds the logic of the policy.
+ */
+ operator fun invoke(): Logic
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableCoreMemoryAllocationPolicy.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableCoreMemoryAllocationPolicy.kt
new file mode 100644
index 00000000..79b622d2
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableCoreMemoryAllocationPolicy.kt
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+
+/**
+ * An [AllocationPolicy] that selects the machine with the highest/lowest amount of memory per core.
+ *
+ * @param reversed An option to reverse the order of the machines (lower amount of memory scores better).
+ */
+public class AvailableCoreMemoryAllocationPolicy(val reversed: Boolean = false) : AllocationPolicy {
+ override fun invoke(): AllocationPolicy.Logic = object : ComparableAllocationPolicyLogic {
+ override val comparator: Comparator<HypervisorView> =
+ compareBy<HypervisorView> { -it.availableMemory / it.server.flavor.cpuCount }
+ .run { if (reversed) reversed() else this }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableMemoryAllocationPolicy.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableMemoryAllocationPolicy.kt
new file mode 100644
index 00000000..c081244f
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/AvailableMemoryAllocationPolicy.kt
@@ -0,0 +1,15 @@
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+
+/**
+ * Allocation policy that selects the node with the most available memory.
+ *
+ * @param reversed A flag to reverse the order (least amount of memory scores the best).
+ */
+public class AvailableMemoryAllocationPolicy(val reversed: Boolean = false) : AllocationPolicy {
+ override fun invoke(): AllocationPolicy.Logic = object : ComparableAllocationPolicyLogic {
+ override val comparator: Comparator<HypervisorView> = compareBy<HypervisorView> { -it.availableMemory }
+ .run { if (reversed) reversed() else this }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ComparableAllocationPolicyLogic.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ComparableAllocationPolicyLogic.kt
new file mode 100644
index 00000000..79dd95f3
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ComparableAllocationPolicyLogic.kt
@@ -0,0 +1,52 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+import com.atlarge.opendc.compute.virt.service.SimpleVirtProvisioningService
+
+/**
+ * The logic for an [AllocationPolicy] that uses a [Comparator] to select the appropriate node.
+ */
+interface ComparableAllocationPolicyLogic : AllocationPolicy.Logic {
+ /**
+ * The comparator to use.
+ */
+ public val comparator: Comparator<HypervisorView>
+
+ override fun select(
+ hypervisors: Set<HypervisorView>,
+ image: SimpleVirtProvisioningService.ImageView
+ ): HypervisorView? {
+ return hypervisors.asSequence()
+ .filter { hv ->
+ val fitsMemory = hv.availableMemory >= (image.image as VmImage).requiredMemory
+ val fitsCpu = hv.server.flavor.cpuCount >= image.flavor.cpuCount
+ fitsMemory && fitsCpu
+ }
+ .minWith(comparator.thenBy { it.server.uid })
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/NumberOfActiveServersAllocationPolicy.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/NumberOfActiveServersAllocationPolicy.kt
new file mode 100644
index 00000000..7e3e5864
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/NumberOfActiveServersAllocationPolicy.kt
@@ -0,0 +1,15 @@
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+
+/**
+ * Allocation policy that selects the node with the least amount of active servers.
+ *
+ * @param reversed A flag to reverse the order, such that the node with the most active servers is selected.
+ */
+public class NumberOfActiveServersAllocationPolicy(val reversed: Boolean = false) : AllocationPolicy {
+ override fun invoke(): AllocationPolicy.Logic = object : ComparableAllocationPolicyLogic {
+ override val comparator: Comparator<HypervisorView> = compareBy<HypervisorView> { it.numberOfActiveServers }
+ .run { if (reversed) reversed() else this }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ProvisionedCoresAllocationPolicy.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ProvisionedCoresAllocationPolicy.kt
new file mode 100644
index 00000000..e1a995a0
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ProvisionedCoresAllocationPolicy.kt
@@ -0,0 +1,42 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+
+/**
+ * An [AllocationPolicy] that takes into account the number of vCPUs that have been provisioned on this machine
+ * relative to its core count.
+ *
+ * @param reversed A flag to reverse the order of the policy, such that the machine with the most provisioned cores
+ * is selected.
+ */
+class ProvisionedCoresAllocationPolicy(val reversed: Boolean = false) : AllocationPolicy {
+ override fun invoke(): AllocationPolicy.Logic = object : ComparableAllocationPolicyLogic {
+ override val comparator: Comparator<HypervisorView> =
+ compareBy<HypervisorView> { it.provisionedCores / it.server.flavor.cpuCount }
+ .run { if (reversed) reversed() else this }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/RandomAllocationPolicy.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/RandomAllocationPolicy.kt
new file mode 100644
index 00000000..07dcf1c5
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/RandomAllocationPolicy.kt
@@ -0,0 +1,51 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+import com.atlarge.opendc.compute.virt.service.SimpleVirtProvisioningService
+import kotlin.random.Random
+
+/**
+ * An [AllocationPolicy] that select a random node on which the server fits.
+ */
+public class RandomAllocationPolicy(val random: Random = Random(0)) : AllocationPolicy {
+ @OptIn(ExperimentalStdlibApi::class)
+ override fun invoke(): AllocationPolicy.Logic = object : AllocationPolicy.Logic {
+ override fun select(
+ hypervisors: Set<HypervisorView>,
+ image: SimpleVirtProvisioningService.ImageView
+ ): HypervisorView? {
+ return hypervisors.asIterable()
+ .filter { hv ->
+ val fitsMemory = hv.availableMemory >= (image.image as VmImage).requiredMemory
+ val fitsCpu = hv.server.flavor.cpuCount >= image.flavor.cpuCount
+ fitsMemory && fitsCpu
+ }
+ .randomOrNull(random)
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ReplayAllocationPolicy.kt b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ReplayAllocationPolicy.kt
new file mode 100644
index 00000000..59acfce2
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/virt/service/allocation/ReplayAllocationPolicy.kt
@@ -0,0 +1,34 @@
+package com.atlarge.opendc.compute.virt.service.allocation
+
+import com.atlarge.opendc.compute.virt.service.HypervisorView
+import com.atlarge.opendc.compute.virt.service.SimpleVirtProvisioningService
+import mu.KotlinLogging
+
+private val logger = KotlinLogging.logger {}
+
+/**
+ * Policy replaying VM-cluster assignment.
+ *
+ * Within each cluster, the active servers on each node determine which node gets
+ * assigned the VM image.
+ */
+class ReplayAllocationPolicy(val vmPlacements: Map<String, String>) : AllocationPolicy {
+ override fun invoke(): AllocationPolicy.Logic = object : AllocationPolicy.Logic {
+ override fun select(
+ hypervisors: Set<HypervisorView>,
+ image: SimpleVirtProvisioningService.ImageView
+ ): HypervisorView? {
+ val clusterName = vmPlacements[image.name]
+ ?: throw IllegalStateException("Could not find placement data in VM placement file for VM ${image.name}")
+ val machinesInCluster = hypervisors.filter { it.server.name.contains(clusterName) }
+
+ if (machinesInCluster.isEmpty()) {
+ logger.info { "Could not find any machines belonging to cluster $clusterName for image ${image.name}, assigning randomly." }
+ return hypervisors.maxBy { it.availableMemory }
+ }
+
+ return machinesInCluster.maxBy { it.availableMemory }
+ ?: throw IllegalStateException("Cloud not find any machine and could not randomly assign")
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImageTest.kt b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImageTest.kt
new file mode 100644
index 00000000..417db77d
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/core/image/FlopsApplicationImageTest.kt
@@ -0,0 +1,78 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.core.image
+
+import org.junit.jupiter.api.DisplayName
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.assertThrows
+import java.util.UUID
+
+/**
+ * Test suite for [FlopsApplicationImage]
+ */
+@DisplayName("FlopsApplicationImage")
+internal class FlopsApplicationImageTest {
+ @Test
+ fun `flops must be non-negative`() {
+ assertThrows<IllegalArgumentException>("FLOPs must be non-negative") {
+ FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), -1, 1)
+ }
+ }
+
+ @Test
+ fun `cores cannot be zero`() {
+ assertThrows<IllegalArgumentException>("Cores cannot be zero") {
+ FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1, 0)
+ }
+ }
+
+ @Test
+ fun `cores cannot be negative`() {
+ assertThrows<IllegalArgumentException>("Cores cannot be negative") {
+ FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1, -1)
+ }
+ }
+
+ @Test
+ fun `utilization cannot be zero`() {
+ assertThrows<IllegalArgumentException>("Utilization cannot be zero") {
+ FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1, 1, 0.0)
+ }
+ }
+
+ @Test
+ fun `utilization cannot be negative`() {
+ assertThrows<IllegalArgumentException>("Utilization cannot be negative") {
+ FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1, 1, -1.0)
+ }
+ }
+
+ @Test
+ fun `utilization cannot be larger than one`() {
+ assertThrows<IllegalArgumentException>("Utilization cannot be larger than one") {
+ FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1, 1, 2.0)
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt
new file mode 100644
index 00000000..071c0626
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt
@@ -0,0 +1,88 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal.driver
+
+import com.atlarge.odcsim.SimulationEngineProvider
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.core.ProcessingNode
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.core.ServerEvent
+import com.atlarge.opendc.compute.core.ServerState
+import com.atlarge.opendc.compute.core.image.FlopsApplicationImage
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.withContext
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Test
+import java.util.ServiceLoader
+import java.util.UUID
+
+internal class SimpleBareMetalDriverTest {
+ /**
+ * A smoke test for the bare-metal driver.
+ */
+ @Test
+ fun smoke() {
+ var finalState: ServerState = ServerState.BUILD
+ val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+ val system = provider("sim")
+ val root = system.newDomain(name = "root")
+ root.launch {
+ val dom = root.newDomain(name = "driver")
+ val cpuNode = ProcessingNode("Intel", "Xeon", "amd64", 4)
+ val cpus = List(4) { ProcessingUnit(cpuNode, it, 2400.0) }
+ val driver = SimpleBareMetalDriver(dom, UUID.randomUUID(), "test", emptyMap(), cpus, emptyList())
+ val image = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1_000, 2)
+
+ // Batch driver commands
+ withContext(dom.coroutineContext) {
+ driver.init()
+ driver.setImage(image)
+ val server = driver.start().server!!
+ driver.usage
+ .onEach { println("${simulationContext.clock.millis()} $it") }
+ .launchIn(this)
+ server.events.collect { event ->
+ when (event) {
+ is ServerEvent.StateChanged -> {
+ println("${simulationContext.clock.millis()} $event")
+ finalState = event.server.state
+ }
+ }
+ }
+ }
+ }
+
+ runBlocking {
+ system.run()
+ system.terminate()
+ }
+
+ assertEquals(ServerState.SHUTOFF, finalState)
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt
new file mode 100644
index 00000000..f8bd786e
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt
@@ -0,0 +1,73 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.metal.service
+
+import com.atlarge.odcsim.SimulationEngineProvider
+import com.atlarge.opendc.compute.core.ProcessingNode
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.core.image.FlopsApplicationImage
+import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import org.junit.jupiter.api.Test
+import java.util.ServiceLoader
+import java.util.UUID
+
+/**
+ * Test suite for the [SimpleProvisioningService].
+ */
+internal class SimpleProvisioningServiceTest {
+ /**
+ * A basic smoke test.
+ */
+ @Test
+ fun smoke() {
+ val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+ val system = provider("sim")
+ val root = system.newDomain(name = "root")
+ root.launch {
+ val image = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1000, 2)
+ val dom = root.newDomain("provisioner")
+
+ val cpuNode = ProcessingNode("Intel", "Xeon", "amd64", 4)
+ val cpus = List(4) { ProcessingUnit(cpuNode, it, 2400.0) }
+ val driver = SimpleBareMetalDriver(dom.newDomain(), UUID.randomUUID(), "test", emptyMap(), cpus, emptyList())
+
+ val provisioner = SimpleProvisioningService(dom)
+ provisioner.create(driver)
+ delay(5)
+ val nodes = provisioner.nodes()
+ val node = provisioner.deploy(nodes.first(), image)
+ node.server!!.events.collect { println(it) }
+ }
+
+ runBlocking {
+ system.run()
+ system.terminate()
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/HypervisorTest.kt b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/HypervisorTest.kt
new file mode 100644
index 00000000..ca00fc94
--- /dev/null
+++ b/simulator/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/HypervisorTest.kt
@@ -0,0 +1,167 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.compute.virt
+
+import com.atlarge.odcsim.SimulationEngineProvider
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.core.Flavor
+import com.atlarge.opendc.compute.core.ProcessingNode
+import com.atlarge.opendc.compute.core.image.FlopsApplicationImage
+import com.atlarge.opendc.compute.core.image.FlopsHistoryFragment
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Disabled
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.assertAll
+import java.util.ServiceLoader
+import java.util.UUID
+
+/**
+ * Basic test-suite for the hypervisor.
+ */
+internal class HypervisorTest {
+ /**
+ * A smoke test for the bare-metal driver.
+ */
+ @OptIn(ExperimentalCoroutinesApi::class)
+ @Test
+ @Disabled
+ fun smoke() {
+ val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+ val system = provider("test")
+ val root = system.newDomain("root")
+
+ root.launch {
+ val vmm = HypervisorImage
+ val workloadA = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1_000, 1)
+ val workloadB = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 2_000, 1)
+
+ val driverDom = root.newDomain("driver")
+
+ val cpuNode = ProcessingNode("Intel", "Xeon", "amd64", 1)
+ val cpus = List(1) { ProcessingUnit(cpuNode, it, 2000.0) }
+ val metalDriver = SimpleBareMetalDriver(driverDom, UUID.randomUUID(), "test", emptyMap(), cpus, emptyList())
+
+ metalDriver.init()
+ metalDriver.setImage(vmm)
+ val node = metalDriver.start()
+ node.server?.events?.onEach { println(it) }?.launchIn(this)
+
+ delay(5)
+
+ val flavor = Flavor(1, 0)
+ val vmDriver = metalDriver.refresh().server!!.services[VirtDriver]
+ vmDriver.events.onEach { println(it) }.launchIn(this)
+ val vmA = vmDriver.spawn("a", workloadA, flavor)
+ vmA.events.onEach { println(it) }.launchIn(this)
+ val vmB = vmDriver.spawn("b", workloadB, flavor)
+ vmB.events.onEach { println(it) }.launchIn(this)
+ }
+
+ runBlocking {
+ system.run()
+ system.terminate()
+ }
+ }
+
+ /**
+ * Test overcommissioning of a hypervisor.
+ */
+ @Test
+ fun overcommission() {
+ val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+ val system = provider("test")
+ val root = system.newDomain("root")
+
+ var requestedBurst = 0L
+ var grantedBurst = 0L
+ var overcommissionedBurst = 0L
+
+ root.launch {
+ val vmm = HypervisorImage
+ val duration = 5 * 60L
+ val vmImageA = VmImage(UUID.randomUUID(), "<unnamed>", emptyMap(), sequenceOf(
+ FlopsHistoryFragment(0, 28L * duration, duration * 1000, 28.0, 2),
+ FlopsHistoryFragment(0, 3500L * duration, duration * 1000, 3500.0, 2),
+ FlopsHistoryFragment(0, 0, duration * 1000, 0.0, 2),
+ FlopsHistoryFragment(0, 183L * duration, duration * 1000, 183.0, 2)
+ ), 2, 0)
+ val vmImageB = VmImage(UUID.randomUUID(), "<unnamed>", emptyMap(), sequenceOf(
+ FlopsHistoryFragment(0, 28L * duration, duration * 1000, 28.0, 2),
+ FlopsHistoryFragment(0, 3100L * duration, duration * 1000, 3100.0, 2),
+ FlopsHistoryFragment(0, 0, duration * 1000, 0.0, 2),
+ FlopsHistoryFragment(0, 73L * duration, duration * 1000, 73.0, 2)
+ ), 2, 0)
+
+ val driverDom = root.newDomain("driver")
+
+ val cpuNode = ProcessingNode("Intel", "Xeon", "amd64", 2)
+ val cpus = List(2) { ProcessingUnit(cpuNode, it, 3200.0) }
+ val metalDriver = SimpleBareMetalDriver(driverDom, UUID.randomUUID(), "test", emptyMap(), cpus, emptyList())
+
+ metalDriver.init()
+ metalDriver.setImage(vmm)
+ metalDriver.start()
+
+ delay(5)
+
+ val flavor = Flavor(2, 0)
+ val vmDriver = metalDriver.refresh().server!!.services[VirtDriver]
+ vmDriver.events
+ .onEach { event ->
+ when (event) {
+ is HypervisorEvent.SliceFinished -> {
+ requestedBurst += event.requestedBurst
+ grantedBurst += event.grantedBurst
+ overcommissionedBurst += event.overcommissionedBurst
+ }
+ }
+ }
+ .launchIn(this)
+
+ vmDriver.spawn("a", vmImageA, flavor)
+ vmDriver.spawn("b", vmImageB, flavor)
+ }
+
+ runBlocking {
+ system.run()
+ system.terminate()
+ }
+
+ assertAll(
+ { assertEquals(2073600, requestedBurst, "Requested Burst does not match") },
+ { assertEquals(2013600, grantedBurst, "Granted Burst does not match") },
+ { assertEquals(60000, overcommissionedBurst, "Overcommissioned Burst does not match") }
+ )
+ }
+}
diff --git a/simulator/opendc/opendc-core/build.gradle.kts b/simulator/opendc/opendc-core/build.gradle.kts
new file mode 100644
index 00000000..0ac1f1ea
--- /dev/null
+++ b/simulator/opendc/opendc-core/build.gradle.kts
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Base model for datacenter simulation"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+}
+
+dependencies {
+ implementation(kotlin("stdlib"))
+ api(project(":odcsim:odcsim-api"))
+
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Environment.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Environment.kt
new file mode 100644
index 00000000..62309bf9
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Environment.kt
@@ -0,0 +1,36 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core
+
+/**
+ * A description of a large-scale computing environment. This description includes including key size and topology
+ * information of the environment, types of resources, but also various operational and management rules such as
+ * scheduled maintenance, allocation and other constraints.
+ *
+ * @property name The name of the environment.
+ * @property description A small textual description about the environment that is being modeled.
+ * @property platforms The cloud platforms (such as AWS or GCE) in this environment.
+ */
+data class Environment(val name: String, val description: String?, val platforms: List<Platform>)
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Identity.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Identity.kt
new file mode 100644
index 00000000..c87e934f
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Identity.kt
@@ -0,0 +1,42 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core
+
+import java.util.UUID
+
+/**
+ * An object that has a unique identity.
+ */
+interface Identity {
+ /**
+ * A unique, opaque, system-generated value, representing the object.
+ */
+ val uid: UUID
+
+ /**
+ * A non-empty, human-readable string representing the object.
+ */
+ val name: String
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Platform.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Platform.kt
new file mode 100644
index 00000000..c0424c20
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Platform.kt
@@ -0,0 +1,36 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core
+
+import java.util.UUID
+
+/**
+ * A representation of a cloud platform such as Amazon Web Services (AWS), Microsoft Azure or Google Cloud.
+ *
+ * @property uid The unique identifier of this datacenter.
+ * @property name the name of the platform.
+ * @property zones The availability zones available on this platform.
+ */
+data class Platform(override val uid: UUID, override val name: String, val zones: List<Zone>) : Identity
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/User.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/User.kt
new file mode 100644
index 00000000..6105ae9e
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/User.kt
@@ -0,0 +1,35 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core
+
+/**
+ * A user of the cloud network.
+ */
+interface User : Identity {
+ /**
+ * The name of the user.
+ */
+ override val name: String
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Zone.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Zone.kt
new file mode 100644
index 00000000..5f5d946b
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/Zone.kt
@@ -0,0 +1,48 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core
+
+import com.atlarge.opendc.core.services.ServiceRegistry
+import java.util.UUID
+
+/**
+ * An isolated location within a datacenter region from which public cloud services operate, roughly equivalent to a
+ * single datacenter. Zones contain one or more clusters and secondary storage.
+ *
+ * This class models *only* the static information of a zone, with dynamic information being contained within the zone's
+ * actor. During runtime, it's actor acts as a registry for all the cloud services provided by the zone.
+ *
+ * @property uid The unique identifier of this availability zone.
+ * @property name The name of the zone within its platform.
+ * @property services The service registry containing the services of the zone.
+ */
+data class Zone(
+ override val uid: UUID,
+ override val name: String,
+ val services: ServiceRegistry
+) : Identity {
+ override fun equals(other: Any?): Boolean = other is Zone && uid == other.uid
+ override fun hashCode(): Int = uid.hashCode()
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/CorrelatedFaultInjector.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/CorrelatedFaultInjector.kt
new file mode 100644
index 00000000..50261db5
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/CorrelatedFaultInjector.kt
@@ -0,0 +1,134 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.failure
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.odcsim.simulationContext
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.ensureActive
+import kotlinx.coroutines.launch
+import kotlin.math.exp
+import kotlin.math.max
+import kotlin.random.Random
+import kotlin.random.asJavaRandom
+
+/**
+ * A [FaultInjector] that injects fault in the system which are correlated to each other. Failures do not occur in
+ * isolation, but will trigger other faults.
+ */
+public class CorrelatedFaultInjector(
+ private val domain: Domain,
+ private val iatScale: Double,
+ private val iatShape: Double,
+ private val sizeScale: Double,
+ private val sizeShape: Double,
+ private val dScale: Double,
+ private val dShape: Double,
+ random: Random = Random(0)
+) : FaultInjector {
+ /**
+ * The active failure domains that have been registered.
+ */
+ private val active = mutableSetOf<FailureDomain>()
+
+ /**
+ * The [Job] that awaits the nearest fault in the system.
+ */
+ private var job: Job? = null
+
+ /**
+ * The [Random] instance to use.
+ */
+ private val random: java.util.Random = random.asJavaRandom()
+
+ /**
+ * Enqueue the specified [FailureDomain] to fail some time in the future.
+ */
+ override fun enqueue(domain: FailureDomain) {
+ active += domain
+
+ // Clean up the domain if it finishes
+ domain.scope.coroutineContext[Job]!!.invokeOnCompletion {
+ this@CorrelatedFaultInjector.domain.launch {
+ active -= domain
+
+ if (active.isEmpty()) {
+ job?.cancel()
+ job = null
+ }
+ }
+ }
+
+ if (job != null) {
+ return
+ }
+
+ job = this.domain.launch {
+ while (active.isNotEmpty()) {
+ ensureActive()
+
+ // Make sure to convert delay from hours to milliseconds
+ val d = lognvariate(iatScale, iatShape) * 3.6e6
+
+ // Handle long overflow
+ if (simulationContext.clock.millis() + d <= 0) {
+ return@launch
+ }
+
+ delay(d.toLong())
+
+ val n = lognvariate(sizeScale, sizeShape).toInt()
+ val targets = active.shuffled(random).take(n)
+
+ for (failureDomain in targets) {
+ active -= failureDomain
+ failureDomain.fail()
+ }
+
+ val df = max(lognvariate(dScale, dShape) * 6e4, 15 * 6e4)
+
+ // Handle long overflow
+ if (simulationContext.clock.millis() + df <= 0) {
+ return@launch
+ }
+
+ delay(df.toLong())
+
+ for (failureDomain in targets) {
+ failureDomain.recover()
+
+ // Re-enqueue machine to be failed
+ enqueue(failureDomain)
+ }
+ }
+
+ job = null
+ }
+ }
+
+ // XXX We should extract this in some common package later on.
+ private fun lognvariate(scale: Double, shape: Double) = exp(scale + shape * random.nextGaussian())
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FailureDomain.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FailureDomain.kt
new file mode 100644
index 00000000..d56df3c9
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FailureDomain.kt
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.failure
+
+import kotlinx.coroutines.CoroutineScope
+
+/**
+ * A logical or physical component in a computing environment which may fail.
+ */
+public interface FailureDomain {
+ /**
+ * The lifecycle of the failure domain to which a [FaultInjector] will attach.
+ */
+ public val scope: CoroutineScope
+
+ /**
+ * Fail the domain externally.
+ */
+ public suspend fun fail()
+
+ /**
+ * Resume the failure domain.
+ */
+ public suspend fun recover()
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FaultInjector.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FaultInjector.kt
new file mode 100644
index 00000000..ac7a08de
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/FaultInjector.kt
@@ -0,0 +1,35 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.failure
+
+/**
+ * An interface for stochastically injecting faults into a running system.
+ */
+public interface FaultInjector {
+ /**
+ * Enqueue the specified [FailureDomain] into the queue as candidate for failure injection in the future.
+ */
+ public fun enqueue(domain: FailureDomain)
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/UncorrelatedFaultInjector.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/UncorrelatedFaultInjector.kt
new file mode 100644
index 00000000..1b896858
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/failure/UncorrelatedFaultInjector.kt
@@ -0,0 +1,58 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.failure
+
+import com.atlarge.odcsim.simulationContext
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+import kotlin.math.ln1p
+import kotlin.math.pow
+import kotlin.random.Random
+
+/**
+ * A [FaultInjector] that injects uncorrelated faults into the system, meaning that failures of the subsystems are
+ * independent.
+ */
+public class UncorrelatedFaultInjector(private val alpha: Double, private val beta: Double, private val random: Random = Random(0)) : FaultInjector {
+ /**
+ * Enqueue the specified [FailureDomain] to fail some time in the future.
+ */
+ override fun enqueue(domain: FailureDomain) {
+ domain.scope.launch {
+ val d = random.weibull(alpha, beta) * 1e3 // Make sure to convert delay to milliseconds
+
+ // Handle long overflow
+ if (simulationContext.clock.millis() + d <= 0) {
+ return@launch
+ }
+
+ delay(d.toLong())
+ domain.fail()
+ }
+ }
+
+ // XXX We should extract this in some common package later on.
+ private fun Random.weibull(alpha: Double, beta: Double) = (beta * (-ln1p(-nextDouble())).pow(1.0 / alpha))
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/PowerModel.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/PowerModel.kt
new file mode 100644
index 00000000..51c9f379
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/PowerModel.kt
@@ -0,0 +1,32 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.power
+
+import kotlinx.coroutines.flow.Flow
+
+/**
+ * A model for computing the power draw based on some value.
+ */
+public typealias PowerModel<T> = (T) -> Flow<Double>
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/Powerable.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/Powerable.kt
new file mode 100644
index 00000000..4473a571
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/power/Powerable.kt
@@ -0,0 +1,37 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.power
+
+import kotlinx.coroutines.flow.Flow
+
+/**
+ * An entity that is uses power from some power source.
+ */
+public interface Powerable {
+ /**
+ * The power draw at the device's power supply in watts (W).w
+ */
+ val powerDraw: Flow<Double>
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/Resource.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/Resource.kt
new file mode 100644
index 00000000..25a494bc
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/Resource.kt
@@ -0,0 +1,37 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.resource
+
+import com.atlarge.opendc.core.Identity
+
+/**
+ * Represents a generic cloud resource.
+ */
+public interface Resource : Identity {
+ /**
+ * The tags of this cloud resource.
+ */
+ public val tags: TagContainer
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/TagContainer.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/TagContainer.kt
new file mode 100644
index 00000000..6ba1cf0b
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/resource/TagContainer.kt
@@ -0,0 +1,36 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.resource
+
+/**
+ * An immutable map containing the tags of some resource.
+ */
+typealias TagContainer = Map<String, Any>
+
+/**
+ * Obtain the value of the tag with the specified [key] of type [T]. If the tag does not exist or the tag is of
+ * different type, `null` is returned.
+ */
+inline fun <reified T : Any> TagContainer.typed(key: String): T? = this[key] as? T
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceKey.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceKey.kt
new file mode 100644
index 00000000..290bf439
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceKey.kt
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.services
+
+import com.atlarge.opendc.core.Identity
+import java.util.UUID
+
+/**
+ * An interface for identifying service implementations of the same type (providing the same service).
+ *
+ * @param T The shape of the messages the service responds to.
+ */
+interface ServiceKey<T : Any> : Identity
+
+/**
+ * Helper class for constructing a [ServiceKey].
+ *
+ * @property uid The unique identifier of the service.
+ * @property name The name of the service.
+ */
+abstract class AbstractServiceKey<T : Any>(override val uid: UUID, override val name: String) : ServiceKey<T> {
+ override fun equals(other: Any?): Boolean = other is ServiceKey<*> && uid == other.uid
+ override fun hashCode(): Int = uid.hashCode()
+ override fun toString(): String = "ServiceKey[uid=$uid, name=$name]"
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistry.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistry.kt
new file mode 100644
index 00000000..75aa778f
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistry.kt
@@ -0,0 +1,63 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.services
+
+/**
+ * An immutable service registry interface.
+ */
+public interface ServiceRegistry {
+ /**
+ * The keys in this registry.
+ */
+ public val keys: Collection<ServiceKey<*>>
+
+ /**
+ * Determine if this map contains the service with the specified [ServiceKey].
+ *
+ * @param key The key of the service to check for.
+ * @return `true` if the service is in the map, `false` otherwise.
+ */
+ public operator fun contains(key: ServiceKey<*>): Boolean
+
+ /**
+ * Obtain the service with the specified [ServiceKey].
+ *
+ * @param key The key of the service to obtain.
+ * @return The references to the service.
+ * @throws IllegalArgumentException if the key does not exist in the map.
+ */
+ public operator fun <T : Any> get(key: ServiceKey<T>): T
+
+ /**
+ * Return the result of associating the specified [service] with the given [key] in this registry.
+ */
+ public fun <T : Any> put(key: ServiceKey<T>, service: T): ServiceRegistry
+}
+
+/**
+ * Construct an empty [ServiceRegistry].
+ */
+@Suppress("FunctionName")
+public fun ServiceRegistry(): ServiceRegistry = ServiceRegistryImpl(emptyMap())
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistryImpl.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistryImpl.kt
new file mode 100644
index 00000000..0686ebaf
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/services/ServiceRegistryImpl.kt
@@ -0,0 +1,44 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.services
+
+/**
+ * Default implementation of the [ServiceRegistry] interface.
+ */
+internal class ServiceRegistryImpl(private val map: Map<ServiceKey<*>, Any>) : ServiceRegistry {
+ override val keys: Collection<ServiceKey<*>>
+ get() = map.keys
+
+ override fun contains(key: ServiceKey<*>): Boolean = key in map
+
+ override fun <T : Any> get(key: ServiceKey<T>): T {
+ @Suppress("UNCHECKED_CAST")
+ return map[key] as T
+ }
+
+ override fun <T : Any> put(key: ServiceKey<T>, service: T): ServiceRegistry = ServiceRegistryImpl(map.plus(key to service))
+
+ override fun toString(): String = map.toString()
+}
diff --git a/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/Workload.kt b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/Workload.kt
new file mode 100644
index 00000000..def5d6e4
--- /dev/null
+++ b/simulator/opendc/opendc-core/src/main/kotlin/com/atlarge/opendc/core/workload/Workload.kt
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.core.workload
+
+import com.atlarge.opendc.core.Identity
+import com.atlarge.opendc.core.User
+
+/**
+ * A high-level abstraction that represents the actual work that a set of compute resources perform, such
+ * as running an application on a machine or a whole workflow running multiple tasks on numerous machines.
+ */
+interface Workload : Identity {
+ /**
+ * The owner of this workload.
+ */
+ val owner: User
+}
diff --git a/simulator/opendc/opendc-experiments-sc18/build.gradle.kts b/simulator/opendc/opendc-experiments-sc18/build.gradle.kts
new file mode 100644
index 00000000..2e366a43
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc18/build.gradle.kts
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Experiments for the TPDS paper"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+ application
+}
+
+application {
+ mainClassName = "com.atlarge.opendc.experiments.sc18.TestExperiment"
+}
+
+dependencies {
+ api(project(":opendc:opendc-core"))
+ implementation(project(":opendc:opendc-format"))
+ implementation(project(":opendc:opendc-workflows"))
+ implementation(kotlin("stdlib"))
+
+ runtimeOnly(project(":odcsim:odcsim-engine-omega"))
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+}
diff --git a/simulator/opendc/opendc-experiments-sc18/src/main/kotlin/com/atlarge/opendc/experiments/sc18/TestExperiment.kt b/simulator/opendc/opendc-experiments-sc18/src/main/kotlin/com/atlarge/opendc/experiments/sc18/TestExperiment.kt
new file mode 100644
index 00000000..b0182ab3
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc18/src/main/kotlin/com/atlarge/opendc/experiments/sc18/TestExperiment.kt
@@ -0,0 +1,125 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc18
+
+import com.atlarge.odcsim.SimulationEngineProvider
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.format.environment.sc18.Sc18EnvironmentReader
+import com.atlarge.opendc.format.trace.gwf.GwfTraceReader
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.WorkflowEvent
+import com.atlarge.opendc.workflows.service.WorkflowSchedulerMode
+import com.atlarge.opendc.workflows.service.stage.job.NullJobAdmissionPolicy
+import com.atlarge.opendc.workflows.service.stage.job.SubmissionTimeJobOrderPolicy
+import com.atlarge.opendc.workflows.service.stage.resource.FirstFitResourceSelectionPolicy
+import com.atlarge.opendc.workflows.service.stage.resource.FunctionalResourceFilterPolicy
+import com.atlarge.opendc.workflows.service.stage.task.NullTaskEligibilityPolicy
+import com.atlarge.opendc.workflows.service.stage.task.SubmissionTimeTaskOrderPolicy
+import kotlin.math.max
+import kotlinx.coroutines.async
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import java.io.File
+import java.util.ServiceLoader
+
+/**
+ * Main entry point of the experiment.
+ */
+fun main(args: Array<String>) {
+ if (args.isEmpty()) {
+ println("error: Please provide path to GWF trace")
+ return
+ }
+
+ var total = 0
+ var finished = 0
+
+ val token = Channel<Boolean>()
+ val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+ val system = provider(name = "sim")
+
+ val schedulerDomain = system.newDomain(name = "scheduler")
+ val schedulerAsync = schedulerDomain.async {
+ val environment = Sc18EnvironmentReader(object {}.javaClass.getResourceAsStream("/env/setup-test.json"))
+ .use { it.construct(system.newDomain("topology")) }
+
+ StageWorkflowService(
+ schedulerDomain,
+ environment.platforms[0].zones[0].services[ProvisioningService],
+ mode = WorkflowSchedulerMode.Batch(100),
+ jobAdmissionPolicy = NullJobAdmissionPolicy,
+ jobOrderPolicy = SubmissionTimeJobOrderPolicy(),
+ taskEligibilityPolicy = NullTaskEligibilityPolicy,
+ taskOrderPolicy = SubmissionTimeTaskOrderPolicy(),
+ resourceFilterPolicy = FunctionalResourceFilterPolicy,
+ resourceSelectionPolicy = FirstFitResourceSelectionPolicy
+ )
+ }
+
+ val broker = system.newDomain(name = "broker")
+
+ broker.launch {
+ val scheduler = schedulerAsync.await()
+ scheduler.events
+ .onEach { event ->
+ when (event) {
+ is WorkflowEvent.JobStarted -> {
+ println("Job ${event.job.uid} started")
+ }
+ is WorkflowEvent.JobFinished -> {
+ finished += 1
+ println("Jobs $finished/$total finished (${event.job.tasks.size} tasks)")
+
+ if (finished == total) {
+ token.send(true)
+ }
+ }
+ }
+ }
+ .collect()
+ }
+ broker.launch {
+ val ctx = simulationContext
+ val reader = GwfTraceReader(File(args[0]))
+ val scheduler = schedulerAsync.await()
+
+ while (reader.hasNext()) {
+ val (time, job) = reader.next()
+ total += 1
+ delay(max(0, time * 1000 - ctx.clock.millis()))
+ scheduler.submit(job)
+ }
+ }
+
+ runBlocking {
+ system.run()
+ system.terminate()
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc18/src/main/resources/env/setup-test.json b/simulator/opendc/opendc-experiments-sc18/src/main/resources/env/setup-test.json
new file mode 100644
index 00000000..0965b250
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc18/src/main/resources/env/setup-test.json
@@ -0,0 +1,36 @@
+{
+ "name": "Experimental Setup 2",
+ "rooms": [
+ {
+ "type": "SERVER",
+ "objects": [
+ {
+ "type": "RACK",
+ "machines": [
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]}
+ ]
+ },
+ {
+ "type": "RACK",
+ "machines": [
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]}
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/build.gradle.kts b/simulator/opendc/opendc-experiments-sc20/build.gradle.kts
new file mode 100644
index 00000000..46d99564
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/build.gradle.kts
@@ -0,0 +1,59 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Experiments for the SC20 paper"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+ application
+}
+
+application {
+ mainClassName = "com.atlarge.opendc.experiments.sc20.MainKt"
+ applicationDefaultJvmArgs = listOf("-Xms2500M")
+}
+
+dependencies {
+ api(project(":opendc:opendc-core"))
+ implementation(project(":opendc:opendc-format"))
+ implementation(kotlin("stdlib"))
+
+ implementation("com.github.ajalt:clikt:2.6.0")
+ implementation("me.tongfei:progressbar:0.8.1")
+ implementation("io.github.microutils:kotlin-logging:1.7.9")
+
+ implementation("org.apache.parquet:parquet-avro:1.11.0")
+ implementation("org.apache.hadoop:hadoop-client:3.2.1") {
+ exclude(group = "org.slf4j", module = "slf4j-log4j12")
+ exclude(group = "log4j")
+ }
+
+ runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:2.13.1")
+ runtimeOnly(project(":odcsim:odcsim-engine-omega"))
+
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Main.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Main.kt
new file mode 100644
index 00000000..677af381
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/Main.kt
@@ -0,0 +1,162 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20
+
+import com.atlarge.opendc.experiments.sc20.experiment.CompositeWorkloadPortfolio
+import com.atlarge.opendc.experiments.sc20.experiment.Experiment
+import com.atlarge.opendc.experiments.sc20.experiment.HorVerPortfolio
+import com.atlarge.opendc.experiments.sc20.experiment.MoreVelocityPortfolio
+import com.atlarge.opendc.experiments.sc20.experiment.OperationalPhenomenaPortfolio
+import com.atlarge.opendc.experiments.sc20.experiment.Portfolio
+import com.atlarge.opendc.experiments.sc20.experiment.ReplayPortfolio
+import com.atlarge.opendc.experiments.sc20.experiment.TestPortfolio
+import com.atlarge.opendc.experiments.sc20.reporter.ConsoleExperimentReporter
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+import com.atlarge.opendc.experiments.sc20.runner.execution.ThreadPoolExperimentScheduler
+import com.atlarge.opendc.experiments.sc20.runner.internal.DefaultExperimentRunner
+import com.atlarge.opendc.format.trace.sc20.Sc20PerformanceInterferenceReader
+import com.atlarge.opendc.format.trace.sc20.Sc20VmPlacementReader
+import com.github.ajalt.clikt.core.CliktCommand
+import com.github.ajalt.clikt.parameters.options.convert
+import com.github.ajalt.clikt.parameters.options.default
+import com.github.ajalt.clikt.parameters.options.defaultLazy
+import com.github.ajalt.clikt.parameters.options.multiple
+import com.github.ajalt.clikt.parameters.options.option
+import com.github.ajalt.clikt.parameters.options.required
+import com.github.ajalt.clikt.parameters.types.choice
+import com.github.ajalt.clikt.parameters.types.file
+import com.github.ajalt.clikt.parameters.types.int
+import mu.KotlinLogging
+import java.io.File
+import java.io.InputStream
+
+/**
+ * The logger for this experiment.
+ */
+private val logger = KotlinLogging.logger {}
+
+/**
+ * Represents the command for running the experiment.
+ */
+class ExperimentCli : CliktCommand(name = "sc20-experiment") {
+ /**
+ * The path to the directory where the topology descriptions are located.
+ */
+ private val environmentPath by option("--environment-path", help = "path to the environment directory")
+ .file(canBeFile = false)
+ .required()
+
+ /**
+ * The path to the directory where the traces are located.
+ */
+ private val tracePath by option("--trace-path", help = "path to the traces directory")
+ .file(canBeFile = false)
+ .required()
+
+ /**
+ * The path to the performance interference model.
+ */
+ private val performanceInterferenceStream by option("--performance-interference-model", help = "path to the performance interference file")
+ .file()
+ .convert { it.inputStream() as InputStream }
+
+ /**
+ * The path to the original VM placements file.
+ */
+ private val vmPlacements by option("--vm-placements-file", help = "path to the VM placement file")
+ .file()
+ .convert {
+ Sc20VmPlacementReader(it.inputStream().buffered()).construct()
+ }
+ .default(emptyMap())
+
+ /**
+ * The selected portfolios to run.
+ */
+ private val portfolios by option("--portfolio")
+ .choice(
+ "hor-ver" to { experiment: Experiment, i: Int -> HorVerPortfolio(experiment, i) }
+ as (Experiment, Int) -> Portfolio,
+ "more-velocity" to { experiment, i -> MoreVelocityPortfolio(experiment, i) },
+ "composite-workload" to { experiment, i -> CompositeWorkloadPortfolio(experiment, i) },
+ "operational-phenomena" to { experiment, i -> OperationalPhenomenaPortfolio(experiment, i) },
+ "replay" to { experiment, i -> ReplayPortfolio(experiment, i) },
+ "test" to { experiment, i -> TestPortfolio(experiment, i) },
+ ignoreCase = true
+ )
+ .multiple()
+
+ /**
+ * The maximum number of worker threads to use.
+ */
+ private val parallelism by option("--parallelism")
+ .int()
+ .default(Runtime.getRuntime().availableProcessors())
+
+ /**
+ * The buffer size for writing results.
+ */
+ private val bufferSize by option("--buffer-size")
+ .int()
+ .default(4096)
+
+ /**
+ * The path to the output directory.
+ */
+ private val output by option("-O", "--output", help = "path to the output directory")
+ .file(canBeFile = false)
+ .defaultLazy { File("data") }
+
+ override fun run() {
+ logger.info { "Constructing performance interference model" }
+
+ val performanceInterferenceModel =
+ performanceInterferenceStream?.let { Sc20PerformanceInterferenceReader(it) }
+
+ logger.info { "Creating experiment descriptor" }
+ val descriptor = object : Experiment(environmentPath, tracePath, output, performanceInterferenceModel, vmPlacements, bufferSize) {
+ private val descriptor = this
+ override val children: Sequence<ExperimentDescriptor> = sequence {
+ for ((i, producer) in portfolios.withIndex()) {
+ yield(producer(descriptor, i))
+ }
+ }
+ }
+
+ logger.info { "Starting experiment runner [parallelism=$parallelism]" }
+ val scheduler = ThreadPoolExperimentScheduler(parallelism)
+ val runner = DefaultExperimentRunner(scheduler)
+ try {
+ runner.execute(descriptor, ConsoleExperimentReporter())
+ } finally {
+ scheduler.close()
+ }
+ }
+}
+
+/**
+ * Main entry point of the experiment.
+ */
+fun main(args: Array<String>) = ExperimentCli().main(args)
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Experiment.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Experiment.kt
new file mode 100644
index 00000000..f3ac2554
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Experiment.kt
@@ -0,0 +1,78 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment
+
+import com.atlarge.opendc.experiments.sc20.runner.ContainerExperimentDescriptor
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionContext
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionListener
+import com.atlarge.opendc.experiments.sc20.telemetry.RunEvent
+import com.atlarge.opendc.experiments.sc20.telemetry.parquet.ParquetRunEventWriter
+import com.atlarge.opendc.format.trace.PerformanceInterferenceModelReader
+import java.io.File
+
+/**
+ * The global configuration of the experiment.
+ *
+ * @param environments The path to the topologies directory.
+ * @param traces The path to the traces directory.
+ * @param output The output directory.
+ * @param performanceInterferenceModel The optional performance interference model that has been specified.
+ * @param vmPlacements Original VM placement in the trace.
+ * @param bufferSize The buffer size of the event reporters.
+ */
+public abstract class Experiment(
+ val environments: File,
+ val traces: File,
+ val output: File,
+ val performanceInterferenceModel: PerformanceInterferenceModelReader?,
+ val vmPlacements: Map<String, String>,
+ val bufferSize: Int
+) : ContainerExperimentDescriptor() {
+ override val parent: ExperimentDescriptor? = null
+
+ override suspend fun invoke(context: ExperimentExecutionContext) {
+ val writer = ParquetRunEventWriter(File(output, "experiments.parquet"), bufferSize)
+ try {
+ val listener = object : ExperimentExecutionListener by context.listener {
+ override fun descriptorRegistered(descriptor: ExperimentDescriptor) {
+ if (descriptor is Run) {
+ writer.write(RunEvent(descriptor, System.currentTimeMillis()))
+ }
+
+ context.listener.descriptorRegistered(descriptor)
+ }
+ }
+
+ val newContext = object : ExperimentExecutionContext by context {
+ override val listener: ExperimentExecutionListener = listener
+ }
+
+ super.invoke(newContext)
+ } finally {
+ writer.close()
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/ExperimentHelpers.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/ExperimentHelpers.kt
new file mode 100644
index 00000000..a70297d2
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/ExperimentHelpers.kt
@@ -0,0 +1,245 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.core.Flavor
+import com.atlarge.opendc.compute.core.ServerEvent
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.compute.metal.NODE_CLUSTER
+import com.atlarge.opendc.compute.metal.driver.BareMetalDriver
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.compute.virt.HypervisorEvent
+import com.atlarge.opendc.compute.virt.driver.SimpleVirtDriver
+import com.atlarge.opendc.compute.virt.service.SimpleVirtProvisioningService
+import com.atlarge.opendc.compute.virt.service.VirtProvisioningEvent
+import com.atlarge.opendc.compute.virt.service.allocation.AllocationPolicy
+import com.atlarge.opendc.core.failure.CorrelatedFaultInjector
+import com.atlarge.opendc.core.failure.FailureDomain
+import com.atlarge.opendc.core.failure.FaultInjector
+import com.atlarge.opendc.experiments.sc20.experiment.monitor.ExperimentMonitor
+import com.atlarge.opendc.experiments.sc20.trace.Sc20StreamingParquetTraceReader
+import com.atlarge.opendc.format.environment.EnvironmentReader
+import com.atlarge.opendc.format.trace.TraceReader
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+import mu.KotlinLogging
+import java.io.File
+import kotlin.math.ln
+import kotlin.math.max
+import kotlin.random.Random
+
+/**
+ * The logger for this experiment.
+ */
+private val logger = KotlinLogging.logger {}
+
+/**
+ * Construct the failure domain for the experiments.
+ */
+suspend fun createFailureDomain(
+ seed: Int,
+ failureInterval: Double,
+ bareMetalProvisioner: ProvisioningService,
+ chan: Channel<Unit>
+): Domain {
+ val root = simulationContext.domain
+ val domain = root.newDomain(name = "failures")
+ domain.launch {
+ chan.receive()
+ val random = Random(seed)
+ val injectors = mutableMapOf<String, FaultInjector>()
+ for (node in bareMetalProvisioner.nodes()) {
+ val cluster = node.metadata[NODE_CLUSTER] as String
+ val injector =
+ injectors.getOrPut(cluster) {
+ createFaultInjector(
+ simulationContext.domain,
+ random,
+ failureInterval
+ )
+ }
+ injector.enqueue(node.metadata["driver"] as FailureDomain)
+ }
+ }
+ return domain
+}
+
+/**
+ * Obtain the [FaultInjector] to use for the experiments.
+ */
+fun createFaultInjector(domain: Domain, random: Random, failureInterval: Double): FaultInjector {
+ // Parameters from A. Iosup, A Framework for the Study of Grid Inter-Operation Mechanisms, 2009
+ // GRID'5000
+ return CorrelatedFaultInjector(
+ domain,
+ iatScale = ln(failureInterval), iatShape = 1.03, // Hours
+ sizeScale = ln(2.0), sizeShape = ln(1.0), // Expect 2 machines, with variation of 1
+ dScale = ln(60.0), dShape = ln(60.0 * 8), // Minutes
+ random = random
+ )
+}
+
+/**
+ * Create the trace reader from which the VM workloads are read.
+ */
+fun createTraceReader(path: File, performanceInterferenceModel: PerformanceInterferenceModel, vms: List<String>, seed: Int): Sc20StreamingParquetTraceReader {
+ return Sc20StreamingParquetTraceReader(
+ path,
+ performanceInterferenceModel,
+ vms,
+ Random(seed)
+ )
+}
+
+/**
+ * Construct the environment for a VM provisioner and return the provisioner instance.
+ */
+suspend fun createProvisioner(
+ root: Domain,
+ environmentReader: EnvironmentReader,
+ allocationPolicy: AllocationPolicy
+): Pair<ProvisioningService, SimpleVirtProvisioningService> = withContext(root.coroutineContext) {
+ val environment = environmentReader.use { it.construct(root) }
+ val bareMetalProvisioner = environment.platforms[0].zones[0].services[ProvisioningService]
+
+ // Wait for the bare metal nodes to be spawned
+ delay(10)
+
+ val scheduler = SimpleVirtProvisioningService(allocationPolicy, simulationContext, bareMetalProvisioner)
+
+ // Wait for the hypervisors to be spawned
+ delay(10)
+
+ bareMetalProvisioner to scheduler
+}
+
+/**
+ * Attach the specified monitor to the VM provisioner.
+ */
+@OptIn(ExperimentalCoroutinesApi::class)
+suspend fun attachMonitor(scheduler: SimpleVirtProvisioningService, monitor: ExperimentMonitor) {
+ val domain = simulationContext.domain
+ val clock = simulationContext.clock
+ val hypervisors = scheduler.drivers()
+
+ // Monitor hypervisor events
+ for (hypervisor in hypervisors) {
+ // TODO Do not expose VirtDriver directly but use Hypervisor class.
+ monitor.reportHostStateChange(clock.millis(), hypervisor, (hypervisor as SimpleVirtDriver).server)
+ hypervisor.server.events
+ .onEach { event ->
+ val time = clock.millis()
+ when (event) {
+ is ServerEvent.StateChanged -> {
+ monitor.reportHostStateChange(time, hypervisor, event.server)
+ }
+ }
+ }
+ .launchIn(domain)
+ hypervisor.events
+ .onEach { event ->
+ when (event) {
+ is HypervisorEvent.SliceFinished -> monitor.reportHostSlice(
+ clock.millis(),
+ event.requestedBurst,
+ event.grantedBurst,
+ event.overcommissionedBurst,
+ event.interferedBurst,
+ event.cpuUsage,
+ event.cpuDemand,
+ event.numberOfDeployedImages,
+ event.hostServer
+ )
+ }
+ }
+ .launchIn(domain)
+
+ val driver = hypervisor.server.services[BareMetalDriver.Key]
+ driver.powerDraw
+ .onEach { monitor.reportPowerConsumption(hypervisor.server, it) }
+ .launchIn(domain)
+ }
+
+ scheduler.events
+ .onEach { event ->
+ when (event) {
+ is VirtProvisioningEvent.MetricsAvailable ->
+ monitor.reportProvisionerMetrics(clock.millis(), event)
+ }
+ }
+ .launchIn(domain)
+}
+
+/**
+ * Process the trace.
+ */
+suspend fun processTrace(reader: TraceReader<VmWorkload>, scheduler: SimpleVirtProvisioningService, chan: Channel<Unit>, monitor: ExperimentMonitor, vmPlacements: Map<String, String> = emptyMap()) {
+ val domain = simulationContext.domain
+
+ try {
+ var submitted = 0
+ val finished = Channel<Unit>(Channel.CONFLATED)
+
+ while (reader.hasNext()) {
+ val (time, workload) = reader.next()
+
+ submitted++
+ delay(max(0, time - simulationContext.clock.millis()))
+ domain.launch {
+ chan.send(Unit)
+ val server = scheduler.deploy(
+ workload.image.name, workload.image,
+ Flavor(workload.image.maxCores, workload.image.requiredMemory)
+ )
+ // Monitor server events
+ server.events
+ .onEach {
+ if (it is ServerEvent.StateChanged) {
+ monitor.reportVmStateChange(simulationContext.clock.millis(), it.server)
+ }
+
+ delay(1)
+ finished.send(Unit)
+ }
+ .collect()
+ }
+ }
+
+ while (scheduler.finishedVms + scheduler.unscheduledVms != submitted) {
+ finished.receive()
+ }
+ } finally {
+ reader.close()
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolio.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolio.kt
new file mode 100644
index 00000000..6a40f5fb
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolio.kt
@@ -0,0 +1,90 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment
+
+import com.atlarge.opendc.experiments.sc20.experiment.model.OperationalPhenomena
+import com.atlarge.opendc.experiments.sc20.experiment.model.Topology
+import com.atlarge.opendc.experiments.sc20.experiment.model.Workload
+import com.atlarge.opendc.experiments.sc20.runner.ContainerExperimentDescriptor
+
+/**
+ * A portfolio represents a collection of scenarios are tested.
+ */
+public abstract class Portfolio(
+ override val parent: Experiment,
+ val id: Int,
+ val name: String
+) : ContainerExperimentDescriptor() {
+ /**
+ * The topologies to consider.
+ */
+ protected abstract val topologies: List<Topology>
+
+ /**
+ * The workloads to consider.
+ */
+ protected abstract val workloads: List<Workload>
+
+ /**
+ * The operational phenomenas to consider.
+ */
+ protected abstract val operationalPhenomenas: List<OperationalPhenomena>
+
+ /**
+ * The allocation policies to consider.
+ */
+ protected abstract val allocationPolicies: List<String>
+
+ /**
+ * The number of repetitions to perform.
+ */
+ open val repetitions: Int = 32
+
+ /**
+ * Resolve the children of this container.
+ */
+ override val children: Sequence<Scenario> = sequence {
+ var id = 0
+ for (topology in topologies) {
+ for (workload in workloads) {
+ for (operationalPhenomena in operationalPhenomenas) {
+ for (allocationPolicy in allocationPolicies) {
+ yield(
+ Scenario(
+ this@Portfolio,
+ id++,
+ repetitions,
+ topology,
+ workload,
+ allocationPolicy,
+ operationalPhenomena
+ )
+ )
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolios.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolios.kt
new file mode 100644
index 00000000..4d8e2f1d
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Portfolios.kt
@@ -0,0 +1,198 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment
+
+import com.atlarge.opendc.experiments.sc20.experiment.model.CompositeWorkload
+import com.atlarge.opendc.experiments.sc20.experiment.model.OperationalPhenomena
+import com.atlarge.opendc.experiments.sc20.experiment.model.Topology
+import com.atlarge.opendc.experiments.sc20.experiment.model.Workload
+
+public class HorVerPortfolio(parent: Experiment, id: Int) : Portfolio(parent, id, "horizontal_vs_vertical") {
+ override val topologies = listOf(
+ Topology("base"),
+ Topology("rep-vol-hor-hom"),
+ Topology("rep-vol-hor-het"),
+ Topology("rep-vol-ver-hom"),
+ Topology("rep-vol-ver-het"),
+ Topology("exp-vol-hor-hom"),
+ Topology("exp-vol-hor-het"),
+ Topology("exp-vol-ver-hom"),
+ Topology("exp-vol-ver-het")
+ )
+
+ override val workloads = listOf(
+ Workload("solvinity", 0.1),
+ Workload("solvinity", 0.25),
+ Workload("solvinity", 0.5),
+ Workload("solvinity", 1.0)
+ )
+
+ override val operationalPhenomenas = listOf(
+ OperationalPhenomena(failureFrequency = 24.0 * 7, hasInterference = true)
+ )
+
+ override val allocationPolicies = listOf(
+ "active-servers"
+ )
+}
+
+public class MoreVelocityPortfolio(parent: Experiment, id: Int) : Portfolio(parent, id, "more_velocity") {
+ override val topologies = listOf(
+ Topology("base"),
+ Topology("rep-vel-ver-hom"),
+ Topology("rep-vel-ver-het"),
+ Topology("exp-vel-ver-hom"),
+ Topology("exp-vel-ver-het")
+ )
+
+ override val workloads = listOf(
+ Workload("solvinity", 0.1),
+ Workload("solvinity", 0.25),
+ Workload("solvinity", 0.5),
+ Workload("solvinity", 1.0)
+ )
+
+ override val operationalPhenomenas = listOf(
+ OperationalPhenomena(failureFrequency = 24.0 * 7, hasInterference = true)
+ )
+
+ override val allocationPolicies = listOf(
+ "active-servers"
+ )
+}
+
+public class CompositeWorkloadPortfolio(parent: Experiment, id: Int) : Portfolio(parent, id, "composite-workload") {
+ private val totalSampleLoad = 1.3301733005049648E12
+
+ override val topologies = listOf(
+ Topology("base"),
+ Topology("exp-vol-hor-hom"),
+ Topology("exp-vol-ver-hom"),
+ Topology("exp-vel-ver-hom")
+ )
+
+ override val workloads = listOf(
+ CompositeWorkload(
+ "all-azure",
+ listOf(Workload("solvinity-short", 0.0), Workload("azure", 1.0)),
+ totalSampleLoad
+ ),
+ CompositeWorkload(
+ "solvinity-25-azure-75",
+ listOf(Workload("solvinity-short", 0.25), Workload("azure", 0.75)),
+ totalSampleLoad
+ ),
+ CompositeWorkload(
+ "solvinity-50-azure-50",
+ listOf(Workload("solvinity-short", 0.5), Workload("azure", 0.5)),
+ totalSampleLoad
+ ),
+ CompositeWorkload(
+ "solvinity-75-azure-25",
+ listOf(Workload("solvinity-short", 0.75), Workload("azure", 0.25)),
+ totalSampleLoad
+ ),
+ CompositeWorkload(
+ "all-solvinity",
+ listOf(Workload("solvinity-short", 1.0), Workload("azure", 0.0)),
+ totalSampleLoad
+ )
+ )
+
+ override val operationalPhenomenas = listOf(
+ OperationalPhenomena(failureFrequency = 24.0 * 7, hasInterference = false)
+ )
+
+ override val allocationPolicies = listOf(
+ "active-servers"
+ )
+}
+
+public class OperationalPhenomenaPortfolio(parent: Experiment, id: Int) : Portfolio(parent, id, "operational_phenomena") {
+ override val topologies = listOf(
+ Topology("base")
+ )
+
+ override val workloads = listOf(
+ Workload("solvinity", 0.1),
+ Workload("solvinity", 0.25),
+ Workload("solvinity", 0.5),
+ Workload("solvinity", 1.0)
+ )
+
+ override val operationalPhenomenas = listOf(
+ OperationalPhenomena(failureFrequency = 24.0 * 7, hasInterference = true),
+ OperationalPhenomena(failureFrequency = 0.0, hasInterference = true),
+ OperationalPhenomena(failureFrequency = 24.0 * 7, hasInterference = false),
+ OperationalPhenomena(failureFrequency = 0.0, hasInterference = false)
+ )
+
+ override val allocationPolicies = listOf(
+ "mem",
+ "mem-inv",
+ "core-mem",
+ "core-mem-inv",
+ "active-servers",
+ "active-servers-inv",
+ "random"
+ )
+}
+
+public class ReplayPortfolio(parent: Experiment, id: Int) : Portfolio(parent, id, "replay") {
+ override val topologies = listOf(
+ Topology("base")
+ )
+
+ override val workloads = listOf(
+ Workload("solvinity", 1.0)
+ )
+
+ override val operationalPhenomenas = listOf(
+ OperationalPhenomena(failureFrequency = 0.0, hasInterference = false)
+ )
+
+ override val allocationPolicies = listOf(
+ "replay",
+ "active-servers"
+ )
+}
+
+public class TestPortfolio(parent: Experiment, id: Int) : Portfolio(parent, id, "test") {
+ override val repetitions: Int = 1
+
+ override val topologies: List<Topology> = listOf(
+ Topology("base")
+ )
+
+ override val workloads: List<Workload> = listOf(
+ Workload("solvinity", 1.0)
+ )
+
+ override val operationalPhenomenas: List<OperationalPhenomena> = listOf(
+ OperationalPhenomena(failureFrequency = 24.0 * 7, hasInterference = true)
+ )
+
+ override val allocationPolicies: List<String> = listOf("active-servers")
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Run.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Run.kt
new file mode 100644
index 00000000..5d1c29e2
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Run.kt
@@ -0,0 +1,156 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment
+
+import com.atlarge.odcsim.SimulationEngineProvider
+import com.atlarge.opendc.compute.virt.service.allocation.AvailableCoreMemoryAllocationPolicy
+import com.atlarge.opendc.compute.virt.service.allocation.AvailableMemoryAllocationPolicy
+import com.atlarge.opendc.compute.virt.service.allocation.NumberOfActiveServersAllocationPolicy
+import com.atlarge.opendc.compute.virt.service.allocation.ProvisionedCoresAllocationPolicy
+import com.atlarge.opendc.compute.virt.service.allocation.RandomAllocationPolicy
+import com.atlarge.opendc.compute.virt.service.allocation.ReplayAllocationPolicy
+import com.atlarge.opendc.experiments.sc20.experiment.model.CompositeWorkload
+import com.atlarge.opendc.experiments.sc20.experiment.monitor.ParquetExperimentMonitor
+import com.atlarge.opendc.experiments.sc20.runner.TrialExperimentDescriptor
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionContext
+import com.atlarge.opendc.experiments.sc20.trace.Sc20ParquetTraceReader
+import com.atlarge.opendc.experiments.sc20.trace.Sc20RawParquetTraceReader
+import com.atlarge.opendc.format.environment.sc20.Sc20ClusterEnvironmentReader
+import kotlinx.coroutines.cancel
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.launch
+import mu.KotlinLogging
+import java.io.File
+import java.util.ServiceLoader
+import kotlin.random.Random
+
+/**
+ * The logger for the experiment scenario.
+ */
+private val logger = KotlinLogging.logger {}
+
+/**
+ * The provider for the simulation engine to use.
+ */
+private val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+
+/**
+ * An experiment run represent a single invocation of a trial and is used to distinguish between repetitions of the
+ * same set of parameters.
+ */
+public data class Run(override val parent: Scenario, val id: Int, val seed: Int) : TrialExperimentDescriptor() {
+ override suspend fun invoke(context: ExperimentExecutionContext) {
+ val experiment = parent.parent.parent
+ val system = provider("experiment-$id")
+ val root = system.newDomain("root")
+ val seeder = Random(seed)
+ val environment = Sc20ClusterEnvironmentReader(File(experiment.environments, "${parent.topology.name}.txt"))
+
+ val chan = Channel<Unit>(Channel.CONFLATED)
+ val allocationPolicy = when (parent.allocationPolicy) {
+ "mem" -> AvailableMemoryAllocationPolicy()
+ "mem-inv" -> AvailableMemoryAllocationPolicy(true)
+ "core-mem" -> AvailableCoreMemoryAllocationPolicy()
+ "core-mem-inv" -> AvailableCoreMemoryAllocationPolicy(true)
+ "active-servers" -> NumberOfActiveServersAllocationPolicy()
+ "active-servers-inv" -> NumberOfActiveServersAllocationPolicy(true)
+ "provisioned-cores" -> ProvisionedCoresAllocationPolicy()
+ "provisioned-cores-inv" -> ProvisionedCoresAllocationPolicy(true)
+ "random" -> RandomAllocationPolicy(Random(seeder.nextInt()))
+ "replay" -> ReplayAllocationPolicy(experiment.vmPlacements)
+ else -> throw IllegalArgumentException("Unknown policy ${parent.allocationPolicy}")
+ }
+
+ @Suppress("UNCHECKED_CAST")
+ val rawTraceReaders =
+ context.cache.computeIfAbsent("raw-trace-readers") { mutableMapOf<String, Sc20RawParquetTraceReader>() } as MutableMap<String, Sc20RawParquetTraceReader>
+ val rawReaders = synchronized(rawTraceReaders) {
+ val workloadNames = if (parent.workload is CompositeWorkload) {
+ parent.workload.workloads.map { it.name }
+ } else {
+ listOf(parent.workload.name)
+ }
+
+ workloadNames.map { workloadName ->
+ rawTraceReaders.computeIfAbsent(workloadName) {
+ logger.info { "Loading trace $workloadName" }
+ Sc20RawParquetTraceReader(File(experiment.traces, workloadName))
+ }
+ }
+ }
+
+ val performanceInterferenceModel = experiment.performanceInterferenceModel
+ ?.takeIf { parent.operationalPhenomena.hasInterference }
+ ?.construct(seeder) ?: emptyMap()
+ val trace = Sc20ParquetTraceReader(rawReaders, performanceInterferenceModel, parent.workload, seed)
+
+ val monitor = ParquetExperimentMonitor(this)
+
+ root.launch {
+ val (bareMetalProvisioner, scheduler) = createProvisioner(
+ root,
+ environment,
+ allocationPolicy
+ )
+
+ val failureDomain = if (parent.operationalPhenomena.failureFrequency > 0) {
+ logger.debug("ENABLING failures")
+ createFailureDomain(
+ seeder.nextInt(),
+ parent.operationalPhenomena.failureFrequency,
+ bareMetalProvisioner,
+ chan
+ )
+ } else {
+ null
+ }
+
+ attachMonitor(scheduler, monitor)
+ processTrace(
+ trace,
+ scheduler,
+ chan,
+ monitor,
+ experiment.vmPlacements
+ )
+
+ logger.debug("SUBMIT=${scheduler.submittedVms}")
+ logger.debug("FAIL=${scheduler.unscheduledVms}")
+ logger.debug("QUEUED=${scheduler.queuedVms}")
+ logger.debug("RUNNING=${scheduler.runningVms}")
+ logger.debug("FINISHED=${scheduler.finishedVms}")
+
+ failureDomain?.cancel()
+ scheduler.terminate()
+ }
+
+ try {
+ system.run()
+ } finally {
+ system.terminate()
+ monitor.close()
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Scenario.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Scenario.kt
new file mode 100644
index 00000000..98bc7fc2
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/Scenario.kt
@@ -0,0 +1,48 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment
+
+import com.atlarge.opendc.experiments.sc20.experiment.model.OperationalPhenomena
+import com.atlarge.opendc.experiments.sc20.experiment.model.Topology
+import com.atlarge.opendc.experiments.sc20.experiment.model.Workload
+import com.atlarge.opendc.experiments.sc20.runner.ContainerExperimentDescriptor
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+
+/**
+ * A scenario represents a single point in the design space (a unique combination of parameters).
+ */
+public class Scenario(
+ override val parent: Portfolio,
+ val id: Int,
+ val repetitions: Int,
+ val topology: Topology,
+ val workload: Workload,
+ val allocationPolicy: String,
+ val operationalPhenomena: OperationalPhenomena
+) : ContainerExperimentDescriptor() {
+ override val children: Sequence<ExperimentDescriptor> = sequence {
+ repeat(repetitions) { i -> yield(Run(this@Scenario, i, i)) }
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/OperationalPhenomena.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/OperationalPhenomena.kt
new file mode 100644
index 00000000..af99df84
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/OperationalPhenomena.kt
@@ -0,0 +1,33 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment.model
+
+/**
+ * Operation phenomena during experiments.
+ *
+ * @param failureFrequency The average time between failures in hours.
+ * @param hasInterference A flag to enable performance interference between VMs.
+ */
+public data class OperationalPhenomena(val failureFrequency: Double, val hasInterference: Boolean)
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Topology.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Topology.kt
new file mode 100644
index 00000000..3ed71e09
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Topology.kt
@@ -0,0 +1,30 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment.model
+
+/**
+ * The datacenter topology on which we test the workload.
+ */
+public data class Topology(val name: String)
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Workload.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Workload.kt
new file mode 100644
index 00000000..cc3c448a
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/model/Workload.kt
@@ -0,0 +1,36 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment.model
+
+/**
+ * A workload that is considered for a scenario.
+ */
+public open class Workload(open val name: String, val fraction: Double)
+
+/**
+ * A workload that is composed of multiple workloads.
+ */
+public class CompositeWorkload(override val name: String, val workloads: List<Workload>, val totalLoad: Double) :
+ Workload(name, -1.0)
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ExperimentMonitor.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ExperimentMonitor.kt
new file mode 100644
index 00000000..1f674f00
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ExperimentMonitor.kt
@@ -0,0 +1,75 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment.monitor
+
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+import com.atlarge.opendc.compute.virt.service.VirtProvisioningEvent
+import java.io.Closeable
+
+/**
+ * A monitor watches the events of an experiment.
+ */
+interface ExperimentMonitor : Closeable {
+ /**
+ * This method is invoked when the state of a VM changes.
+ */
+ fun reportVmStateChange(time: Long, server: Server) {}
+
+ /**
+ * This method is invoked when the state of a host changes.
+ */
+ fun reportHostStateChange(
+ time: Long,
+ driver: VirtDriver,
+ server: Server
+ ) {}
+
+ /**
+ * Report the power consumption of a host.
+ */
+ fun reportPowerConsumption(host: Server, draw: Double) {}
+
+ /**
+ * This method is invoked for a host for each slice that is finishes.
+ */
+ fun reportHostSlice(
+ time: Long,
+ requestedBurst: Long,
+ grantedBurst: Long,
+ overcommissionedBurst: Long,
+ interferedBurst: Long,
+ cpuUsage: Double,
+ cpuDemand: Double,
+ numberOfDeployedImages: Int,
+ hostServer: Server,
+ duration: Long = 5 * 60 * 1000L
+ ) {}
+
+ /**
+ * This method is invoked for a provisioner event.
+ */
+ fun reportProvisionerMetrics(time: Long, event: VirtProvisioningEvent.MetricsAvailable) {}
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ParquetExperimentMonitor.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ParquetExperimentMonitor.kt
new file mode 100644
index 00000000..be60e5b7
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/experiment/monitor/ParquetExperimentMonitor.kt
@@ -0,0 +1,206 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.experiment.monitor
+
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.virt.driver.VirtDriver
+import com.atlarge.opendc.compute.virt.service.VirtProvisioningEvent
+import com.atlarge.opendc.experiments.sc20.experiment.Run
+import com.atlarge.opendc.experiments.sc20.telemetry.HostEvent
+import com.atlarge.opendc.experiments.sc20.telemetry.ProvisionerEvent
+import com.atlarge.opendc.experiments.sc20.telemetry.parquet.ParquetHostEventWriter
+import com.atlarge.opendc.experiments.sc20.telemetry.parquet.ParquetProvisionerEventWriter
+import mu.KotlinLogging
+import java.io.File
+
+/**
+ * The logger instance to use.
+ */
+private val logger = KotlinLogging.logger {}
+
+/**
+ * An [ExperimentMonitor] that logs the events to a Parquet file.
+ */
+class ParquetExperimentMonitor(val run: Run) : ExperimentMonitor {
+ private val partition = "portfolio_id=${run.parent.parent.id}/scenario_id=${run.parent.id}/run_id=${run.id}"
+ private val hostWriter = ParquetHostEventWriter(
+ File(run.parent.parent.parent.output, "host-metrics/$partition/data.parquet"),
+ run.parent.parent.parent.bufferSize
+ )
+ private val provisionerWriter = ParquetProvisionerEventWriter(
+ File(run.parent.parent.parent.output, "provisioner-metrics/$partition/data.parquet"),
+ run.parent.parent.parent.bufferSize
+ )
+ private val currentHostEvent = mutableMapOf<Server, HostEvent>()
+ private var startTime = -1L
+
+ override fun reportVmStateChange(time: Long, server: Server) {
+ if (startTime < 0) {
+ startTime = time
+
+ // Update timestamp of initial event
+ currentHostEvent.replaceAll { k, v -> v.copy(timestamp = startTime) }
+ }
+ }
+
+ override fun reportHostStateChange(
+ time: Long,
+ driver: VirtDriver,
+ server: Server
+ ) {
+ logger.debug { "Host ${server.uid} changed state ${server.state} [$time]" }
+
+ val previousEvent = currentHostEvent[server]
+
+ val roundedTime = previousEvent?.let {
+ val duration = time - it.timestamp
+ val k = 5 * 60 * 1000L // 5 min in ms
+ val rem = duration % k
+
+ if (rem == 0L) {
+ time
+ } else {
+ it.timestamp + duration + k - rem
+ }
+ } ?: time
+
+ reportHostSlice(
+ roundedTime,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.0,
+ 0.0,
+ 0,
+ server
+ )
+ }
+
+ private val lastPowerConsumption = mutableMapOf<Server, Double>()
+
+ override fun reportPowerConsumption(host: Server, draw: Double) {
+ lastPowerConsumption[host] = draw
+ }
+
+ override fun reportHostSlice(
+ time: Long,
+ requestedBurst: Long,
+ grantedBurst: Long,
+ overcommissionedBurst: Long,
+ interferedBurst: Long,
+ cpuUsage: Double,
+ cpuDemand: Double,
+ numberOfDeployedImages: Int,
+ hostServer: Server,
+ duration: Long
+ ) {
+ val previousEvent = currentHostEvent[hostServer]
+ when {
+ previousEvent == null -> {
+ val event = HostEvent(
+ time,
+ 5 * 60 * 1000L,
+ hostServer,
+ numberOfDeployedImages,
+ requestedBurst,
+ grantedBurst,
+ overcommissionedBurst,
+ interferedBurst,
+ cpuUsage,
+ cpuDemand,
+ lastPowerConsumption[hostServer] ?: 200.0,
+ hostServer.flavor.cpuCount
+ )
+
+ currentHostEvent[hostServer] = event
+ }
+ previousEvent.timestamp == time -> {
+ val event = HostEvent(
+ time,
+ previousEvent.duration,
+ hostServer,
+ numberOfDeployedImages,
+ requestedBurst,
+ grantedBurst,
+ overcommissionedBurst,
+ interferedBurst,
+ cpuUsage,
+ cpuDemand,
+ lastPowerConsumption[hostServer] ?: 200.0,
+ hostServer.flavor.cpuCount
+ )
+
+ currentHostEvent[hostServer] = event
+ }
+ else -> {
+ hostWriter.write(previousEvent)
+
+ val event = HostEvent(
+ time,
+ time - previousEvent.timestamp,
+ hostServer,
+ numberOfDeployedImages,
+ requestedBurst,
+ grantedBurst,
+ overcommissionedBurst,
+ interferedBurst,
+ cpuUsage,
+ cpuDemand,
+ lastPowerConsumption[hostServer] ?: 200.0,
+ hostServer.flavor.cpuCount
+ )
+
+ currentHostEvent[hostServer] = event
+ }
+ }
+ }
+
+ override fun reportProvisionerMetrics(time: Long, event: VirtProvisioningEvent.MetricsAvailable) {
+ provisionerWriter.write(
+ ProvisionerEvent(
+ time,
+ event.totalHostCount,
+ event.availableHostCount,
+ event.totalVmCount,
+ event.activeVmCount,
+ event.inactiveVmCount,
+ event.waitingVmCount,
+ event.failedVmCount
+ )
+ )
+ }
+
+ override fun close() {
+ // Flush remaining events
+ for ((_, event) in currentHostEvent) {
+ hostWriter.write(event)
+ }
+ currentHostEvent.clear()
+
+ hostWriter.close()
+ provisionerWriter.close()
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/reporter/ConsoleExperimentReporter.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/reporter/ConsoleExperimentReporter.kt
new file mode 100644
index 00000000..f59402d5
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/reporter/ConsoleExperimentReporter.kt
@@ -0,0 +1,75 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.reporter
+
+import com.atlarge.opendc.experiments.sc20.experiment.Run
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionListener
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionResult
+import me.tongfei.progressbar.ProgressBar
+import me.tongfei.progressbar.ProgressBarBuilder
+
+/**
+ * A reporter that reports the experiment progress to the console.
+ */
+public class ConsoleExperimentReporter : ExperimentExecutionListener {
+ /**
+ * The active [Run]s.
+ */
+ private val runs: MutableSet<Run> = mutableSetOf()
+
+ /**
+ * The total number of runs.
+ */
+ private var total = 0
+
+ /**
+ * The progress bar to keep track of the progress.
+ */
+ private val pb: ProgressBar = ProgressBarBuilder()
+ .setTaskName("")
+ .setInitialMax(1)
+ .build()
+
+ override fun descriptorRegistered(descriptor: ExperimentDescriptor) {
+ if (descriptor is Run) {
+ runs += descriptor
+ pb.maxHint((++total).toLong())
+ }
+ }
+
+ override fun executionFinished(descriptor: ExperimentDescriptor, result: ExperimentExecutionResult) {
+ if (descriptor is Run) {
+ runs -= descriptor
+
+ pb.stepTo(total - runs.size.toLong())
+ if (runs.isEmpty()) {
+ pb.close()
+ }
+ }
+ }
+
+ override fun executionStarted(descriptor: ExperimentDescriptor) {}
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ContainerExperimentDescriptor.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ContainerExperimentDescriptor.kt
new file mode 100644
index 00000000..dac32586
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ContainerExperimentDescriptor.kt
@@ -0,0 +1,68 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner
+
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionContext
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionResult
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.supervisorScope
+
+/**
+ * An abstract [ExperimentDescriptor] specifically for containers.
+ */
+public abstract class ContainerExperimentDescriptor : ExperimentDescriptor() {
+ /**
+ * The child descriptors of this container.
+ */
+ public abstract val children: Sequence<ExperimentDescriptor>
+
+ override val type: Type = Type.CONTAINER
+
+ override suspend fun invoke(context: ExperimentExecutionContext) {
+ val materializedChildren = children.toList()
+ for (child in materializedChildren) {
+ context.listener.descriptorRegistered(child)
+ }
+
+ supervisorScope {
+ for (child in materializedChildren) {
+ if (child.isTrial) {
+ launch {
+ val worker = context.scheduler.allocate()
+ context.listener.executionStarted(child)
+ try {
+ worker(child, context)
+ context.listener.executionFinished(child, ExperimentExecutionResult.Success)
+ } catch (e: Throwable) {
+ context.listener.executionFinished(child, ExperimentExecutionResult.Failed(e))
+ }
+ }
+ } else {
+ launch { child(context) }
+ }
+ }
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentDescriptor.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentDescriptor.kt
new file mode 100644
index 00000000..64b6b767
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentDescriptor.kt
@@ -0,0 +1,81 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner
+
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionContext
+import java.io.Serializable
+
+/**
+ * An immutable description of an experiment in the **odcsim* simulation framework, which may be a single atomic trial
+ * or a composition of multiple trials.
+ *
+ * This class represents a dynamic tree-like structure where the children of the nodes are not known at instantiation
+ * since they might be generated dynamically.
+ */
+public abstract class ExperimentDescriptor : Serializable {
+ /**
+ * The parent of this descriptor, or `null` if it has no parent.
+ */
+ public abstract val parent: ExperimentDescriptor?
+
+ /**
+ * The type of descriptor.
+ */
+ abstract val type: Type
+
+ /**
+ * A flag to indicate that this descriptor is a root descriptor.
+ */
+ public open val isRoot: Boolean
+ get() = parent == null
+
+ /**
+ * A flag to indicate that this descriptor describes an experiment trial.
+ */
+ val isTrial: Boolean
+ get() = type == Type.TRIAL
+
+ /**
+ * Execute this [ExperimentDescriptor].
+ *
+ * @param context The context to execute the descriptor in.
+ */
+ public abstract suspend operator fun invoke(context: ExperimentExecutionContext)
+
+ /**
+ * The types of experiment descriptors.
+ */
+ enum class Type {
+ /**
+ * A composition of multiple experiment descriptions whose invocation happens on a single thread.
+ */
+ CONTAINER,
+
+ /**
+ * An invocation of a single scenario of an experiment whose invocation may happen on different threads.
+ */
+ TRIAL
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentRunner.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentRunner.kt
new file mode 100644
index 00000000..77f970fe
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/ExperimentRunner.kt
@@ -0,0 +1,51 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner
+
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionListener
+
+/**
+ * An [ExperimentRunner] facilitates discovery and execution of experiments.
+ */
+public interface ExperimentRunner {
+ /**
+ * The unique identifier of this runner.
+ */
+ val id: String
+
+ /**
+ * The version of this runner.
+ */
+ val version: String?
+ get() = null
+
+ /**
+ * Execute the specified experiment represented as [ExperimentDescriptor].
+ *
+ * @param root The experiment to execute.
+ * @param listener The listener to report events to.
+ */
+ public fun execute(root: ExperimentDescriptor, listener: ExperimentExecutionListener)
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/TrialExperimentDescriptor.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/TrialExperimentDescriptor.kt
new file mode 100644
index 00000000..cf05416a
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/TrialExperimentDescriptor.kt
@@ -0,0 +1,32 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner
+
+/**
+ * An abstract [ExperimentDescriptor] specifically for trials.
+ */
+public abstract class TrialExperimentDescriptor : ExperimentDescriptor() {
+ override val type: Type = Type.TRIAL
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionContext.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionContext.kt
new file mode 100644
index 00000000..9a04c491
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionContext.kt
@@ -0,0 +1,45 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner.execution
+
+/**
+ * The execution context of an experiment.
+ */
+public interface ExperimentExecutionContext {
+ /**
+ * The execution listener to use.
+ */
+ public val listener: ExperimentExecutionListener
+
+ /**
+ * The experiment scheduler to use.
+ */
+ public val scheduler: ExperimentScheduler
+
+ /**
+ * A cache for objects within a single runner.
+ */
+ public val cache: MutableMap<Any?, Any?>
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionListener.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionListener.kt
new file mode 100644
index 00000000..f6df0524
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionListener.kt
@@ -0,0 +1,48 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner.execution
+
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+
+/**
+ * Listener to be notified of experiment execution events by experiment runners.
+ */
+interface ExperimentExecutionListener {
+ /**
+ * A method that is invoked when a new [ExperimentDescriptor] is registered.
+ */
+ fun descriptorRegistered(descriptor: ExperimentDescriptor)
+
+ /**
+ * A method that is invoked when when the execution of a leaf or subtree of the experiment tree has finished,
+ * regardless of the outcome.
+ */
+ fun executionFinished(descriptor: ExperimentDescriptor, result: ExperimentExecutionResult)
+
+ /**
+ * A method that is invoked when the execution of a leaf or subtree of the experiment tree is about to be started.
+ */
+ fun executionStarted(descriptor: ExperimentDescriptor)
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionResult.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionResult.kt
new file mode 100644
index 00000000..057e1f92
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentExecutionResult.kt
@@ -0,0 +1,42 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner.execution
+
+import java.io.Serializable
+
+/**
+ * The result of executing an experiment.
+ */
+public sealed class ExperimentExecutionResult : Serializable {
+ /**
+ * The experiment executed successfully
+ */
+ public object Success : ExperimentExecutionResult()
+
+ /**
+ * The experiment failed during execution.
+ */
+ public data class Failed(val throwable: Throwable) : ExperimentExecutionResult()
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentScheduler.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentScheduler.kt
new file mode 100644
index 00000000..0346a7f8
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ExperimentScheduler.kt
@@ -0,0 +1,59 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner.execution
+
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+import java.io.Closeable
+
+/**
+ * A interface for scheduling the execution of experiment trials over compute resources (threads/containers/vms)
+ */
+interface ExperimentScheduler : Closeable {
+ /**
+ * Allocate a [Worker] for executing an experiment trial. This method may suspend in case no resources are directly
+ * available at the moment.
+ *
+ * @return The available worker.
+ */
+ suspend fun allocate(): ExperimentScheduler.Worker
+
+ /**
+ * An isolated worker of an [ExperimentScheduler] that is responsible for executing a single experiment trial.
+ */
+ interface Worker {
+ /**
+ * Dispatch the specified [ExperimentDescriptor] to execute some time in the future and return the results of
+ * the trial.
+ *
+ * @param descriptor The descriptor to execute.
+ * @param context The context to execute the descriptor in.
+ * @return The results of the experiment trial.
+ */
+ suspend operator fun invoke(
+ descriptor: ExperimentDescriptor,
+ context: ExperimentExecutionContext
+ ): ExperimentExecutionResult
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ThreadPoolExperimentScheduler.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ThreadPoolExperimentScheduler.kt
new file mode 100644
index 00000000..31632b8c
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/execution/ThreadPoolExperimentScheduler.kt
@@ -0,0 +1,85 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner.execution
+
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+import kotlinx.coroutines.asCoroutineDispatcher
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.supervisorScope
+import kotlinx.coroutines.sync.Semaphore
+import kotlinx.coroutines.withContext
+import java.util.concurrent.Executors
+
+/**
+ * An [ExperimentScheduler] that runs experiments using a local thread pool.
+ *
+ * @param parallelism The maximum amount of parallel workers (default is the number of available processors).
+ */
+class ThreadPoolExperimentScheduler(parallelism: Int = Runtime.getRuntime().availableProcessors() + 1) : ExperimentScheduler {
+ private val dispatcher = Executors.newCachedThreadPool().asCoroutineDispatcher()
+ private val tickets = Semaphore(parallelism)
+
+ override suspend fun allocate(): ExperimentScheduler.Worker {
+ tickets.acquire()
+ return object : ExperimentScheduler.Worker {
+ override suspend fun invoke(
+ descriptor: ExperimentDescriptor,
+ context: ExperimentExecutionContext
+ ): ExperimentExecutionResult = supervisorScope {
+ val listener =
+ object : ExperimentExecutionListener {
+ override fun descriptorRegistered(descriptor: ExperimentDescriptor) {
+ launch { context.listener.descriptorRegistered(descriptor) }
+ }
+
+ override fun executionFinished(descriptor: ExperimentDescriptor, result: ExperimentExecutionResult) {
+ launch { context.listener.executionFinished(descriptor, result) }
+ }
+
+ override fun executionStarted(descriptor: ExperimentDescriptor) {
+ launch { context.listener.executionStarted(descriptor) }
+ }
+ }
+
+ val newContext = object : ExperimentExecutionContext by context {
+ override val listener: ExperimentExecutionListener = listener
+ }
+
+ try {
+ withContext(dispatcher) {
+ descriptor(newContext)
+ ExperimentExecutionResult.Success
+ }
+ } catch (e: Throwable) {
+ ExperimentExecutionResult.Failed(e)
+ } finally {
+ tickets.release()
+ }
+ }
+ }
+ }
+
+ override fun close() = dispatcher.close()
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/internal/DefaultExperimentRunner.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/internal/DefaultExperimentRunner.kt
new file mode 100644
index 00000000..3b80276f
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/runner/internal/DefaultExperimentRunner.kt
@@ -0,0 +1,62 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.runner.internal
+
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentDescriptor
+import com.atlarge.opendc.experiments.sc20.runner.ExperimentRunner
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionContext
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionListener
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentExecutionResult
+import com.atlarge.opendc.experiments.sc20.runner.execution.ExperimentScheduler
+import kotlinx.coroutines.runBlocking
+import java.util.concurrent.ConcurrentHashMap
+
+/**
+ * The default implementation of the [ExperimentRunner] interface.
+ *
+ * @param scheduler The scheduler to use.
+ */
+public class DefaultExperimentRunner(val scheduler: ExperimentScheduler) : ExperimentRunner {
+ override val id: String = "default"
+
+ override val version: String? = "1.0"
+
+ override fun execute(root: ExperimentDescriptor, listener: ExperimentExecutionListener) = runBlocking {
+ val context = object : ExperimentExecutionContext {
+ override val listener: ExperimentExecutionListener = listener
+ override val scheduler: ExperimentScheduler = this@DefaultExperimentRunner.scheduler
+ override val cache: MutableMap<Any?, Any?> = ConcurrentHashMap()
+ }
+
+ listener.descriptorRegistered(root)
+ context.listener.executionStarted(root)
+ try {
+ root(context)
+ context.listener.executionFinished(root, ExperimentExecutionResult.Success)
+ } catch (e: Throwable) {
+ context.listener.executionFinished(root, ExperimentExecutionResult.Failed(e))
+ }
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/Event.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/Event.kt
new file mode 100644
index 00000000..c1e14e2a
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/Event.kt
@@ -0,0 +1,35 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry
+
+/**
+ * An event that occurs within the system.
+ */
+public abstract class Event(val name: String) {
+ /**
+ * The time of occurrence of this event.
+ */
+ public abstract val timestamp: Long
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/HostEvent.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/HostEvent.kt
new file mode 100644
index 00000000..b9030172
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/HostEvent.kt
@@ -0,0 +1,45 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry
+
+import com.atlarge.opendc.compute.core.Server
+
+/**
+ * A periodic report of the host machine metrics.
+ */
+data class HostEvent(
+ override val timestamp: Long,
+ val duration: Long,
+ val host: Server,
+ val vmCount: Int,
+ val requestedBurst: Long,
+ val grantedBurst: Long,
+ val overcommissionedBurst: Long,
+ val interferedBurst: Long,
+ val cpuUsage: Double,
+ val cpuDemand: Double,
+ val powerDraw: Double,
+ val cores: Int
+) : Event("host-metrics")
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/ProvisionerEvent.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/ProvisionerEvent.kt
new file mode 100644
index 00000000..df619632
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/ProvisionerEvent.kt
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry
+
+/**
+ * A periodic report of the provisioner's metrics.
+ */
+data class ProvisionerEvent(
+ override val timestamp: Long,
+ val totalHostCount: Int,
+ val availableHostCount: Int,
+ val totalVmCount: Int,
+ val activeVmCount: Int,
+ val inactiveVmCount: Int,
+ val waitingVmCount: Int,
+ val failedVmCount: Int
+) : Event("provisioner-metrics")
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/RunEvent.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/RunEvent.kt
new file mode 100644
index 00000000..497d2c3f
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/RunEvent.kt
@@ -0,0 +1,35 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry
+
+import com.atlarge.opendc.experiments.sc20.experiment.Run
+
+/**
+ * A periodic report of the host machine metrics.
+ */
+data class RunEvent(
+ val run: Run,
+ override val timestamp: Long
+) : Event("run")
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/VmEvent.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/VmEvent.kt
new file mode 100644
index 00000000..7289fb21
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/VmEvent.kt
@@ -0,0 +1,43 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry
+
+import com.atlarge.opendc.compute.core.Server
+
+/**
+ * A periodic report of a virtual machine's metrics.
+ */
+data class VmEvent(
+ override val timestamp: Long,
+ val duration: Long,
+ val vm: Server,
+ val host: Server,
+ val requestedBurst: Long,
+ val grantedBurst: Long,
+ val overcommissionedBurst: Long,
+ val interferedBurst: Long,
+ val cpuUsage: Double,
+ val cpuDemand: Double
+) : Event("vm-metrics")
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetEventWriter.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetEventWriter.kt
new file mode 100644
index 00000000..a69bd4b2
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetEventWriter.kt
@@ -0,0 +1,121 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry.parquet
+
+import com.atlarge.opendc.experiments.sc20.telemetry.Event
+import mu.KotlinLogging
+import org.apache.avro.Schema
+import org.apache.avro.generic.GenericData
+import org.apache.hadoop.fs.Path
+import org.apache.parquet.avro.AvroParquetWriter
+import org.apache.parquet.hadoop.metadata.CompressionCodecName
+import java.io.Closeable
+import java.io.File
+import java.util.concurrent.ArrayBlockingQueue
+import java.util.concurrent.BlockingQueue
+import kotlin.concurrent.thread
+
+/**
+ * The logging instance to use.
+ */
+private val logger = KotlinLogging.logger {}
+
+/**
+ * A writer that writes events in Parquet format.
+ */
+public open class ParquetEventWriter<in T : Event>(
+ private val path: File,
+ private val schema: Schema,
+ private val converter: (T, GenericData.Record) -> Unit,
+ private val bufferSize: Int = 4096
+) : Runnable, Closeable {
+ /**
+ * The queue of commands to process.
+ */
+ private val queue: BlockingQueue<Action> = ArrayBlockingQueue(bufferSize)
+
+ /**
+ * The thread that is responsible for writing the Parquet records.
+ */
+ private val writerThread = thread(start = true, name = "parquet-writer") { run() }
+
+ /**
+ * Write the specified metrics to the database.
+ */
+ public fun write(event: T) {
+ queue.put(Action.Write(event))
+ }
+
+ /**
+ * Signal the writer to stop.
+ */
+ public override fun close() {
+ queue.put(Action.Stop)
+ writerThread.join()
+ }
+
+ /**
+ * Start the writer thread.
+ */
+ override fun run() {
+ val writer = AvroParquetWriter.builder<GenericData.Record>(Path(path.absolutePath))
+ .withSchema(schema)
+ .withCompressionCodec(CompressionCodecName.SNAPPY)
+ .withPageSize(4 * 1024 * 1024) // For compression
+ .withRowGroupSize(16 * 1024 * 1024) // For write buffering (Page size)
+ .build()
+
+ try {
+ loop@ while (true) {
+ val action = queue.take()
+ when (action) {
+ is Action.Stop -> break@loop
+ is Action.Write<*> -> {
+ val record = GenericData.Record(schema)
+ @Suppress("UNCHECKED_CAST")
+ converter(action.event as T, record)
+ writer.write(record)
+ }
+ }
+ }
+ } catch (e: Throwable) {
+ logger.error("Writer failed", e)
+ } finally {
+ writer.close()
+ }
+ }
+
+ sealed class Action {
+ /**
+ * A poison pill that will stop the writer thread.
+ */
+ object Stop : Action()
+
+ /**
+ * Write the specified metrics to the database.
+ */
+ data class Write<out T : Event>(val event: T) : Action()
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetHostEventWriter.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetHostEventWriter.kt
new file mode 100644
index 00000000..3bc09435
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetHostEventWriter.kt
@@ -0,0 +1,83 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry.parquet
+
+import com.atlarge.opendc.experiments.sc20.telemetry.HostEvent
+import org.apache.avro.Schema
+import org.apache.avro.SchemaBuilder
+import org.apache.avro.generic.GenericData
+import java.io.File
+
+/**
+ * A Parquet event writer for [HostEvent]s.
+ */
+public class ParquetHostEventWriter(path: File, bufferSize: Int) :
+ ParquetEventWriter<HostEvent>(path, schema, convert, bufferSize) {
+
+ override fun toString(): String = "host-writer"
+
+ companion object {
+ val convert: (HostEvent, GenericData.Record) -> Unit = { event, record ->
+ // record.put("portfolio_id", event.run.parent.parent.id)
+ // record.put("scenario_id", event.run.parent.id)
+ // record.put("run_id", event.run.id)
+ record.put("host_id", event.host.name)
+ record.put("state", event.host.state.name)
+ record.put("timestamp", event.timestamp)
+ record.put("duration", event.duration)
+ record.put("vm_count", event.vmCount)
+ record.put("requested_burst", event.requestedBurst)
+ record.put("granted_burst", event.grantedBurst)
+ record.put("overcommissioned_burst", event.overcommissionedBurst)
+ record.put("interfered_burst", event.interferedBurst)
+ record.put("cpu_usage", event.cpuUsage)
+ record.put("cpu_demand", event.cpuDemand)
+ record.put("power_draw", event.powerDraw * (1.0 / 12))
+ record.put("cores", event.cores)
+ }
+
+ val schema: Schema = SchemaBuilder
+ .record("host_metrics")
+ .namespace("com.atlarge.opendc.experiments.sc20")
+ .fields()
+ // .name("portfolio_id").type().intType().noDefault()
+ // .name("scenario_id").type().intType().noDefault()
+ // .name("run_id").type().intType().noDefault()
+ .name("timestamp").type().longType().noDefault()
+ .name("duration").type().longType().noDefault()
+ .name("host_id").type().stringType().noDefault()
+ .name("state").type().stringType().noDefault()
+ .name("vm_count").type().intType().noDefault()
+ .name("requested_burst").type().longType().noDefault()
+ .name("granted_burst").type().longType().noDefault()
+ .name("overcommissioned_burst").type().longType().noDefault()
+ .name("interfered_burst").type().longType().noDefault()
+ .name("cpu_usage").type().doubleType().noDefault()
+ .name("cpu_demand").type().doubleType().noDefault()
+ .name("power_draw").type().doubleType().noDefault()
+ .name("cores").type().intType().noDefault()
+ .endRecord()
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetProvisionerEventWriter.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetProvisionerEventWriter.kt
new file mode 100644
index 00000000..1f3b0472
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetProvisionerEventWriter.kt
@@ -0,0 +1,67 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry.parquet
+
+import com.atlarge.opendc.experiments.sc20.telemetry.ProvisionerEvent
+import org.apache.avro.Schema
+import org.apache.avro.SchemaBuilder
+import org.apache.avro.generic.GenericData
+import java.io.File
+
+/**
+ * A Parquet event writer for [ProvisionerEvent]s.
+ */
+public class ParquetProvisionerEventWriter(path: File, bufferSize: Int) :
+ ParquetEventWriter<ProvisionerEvent>(path, schema, convert, bufferSize) {
+
+ override fun toString(): String = "provisioner-writer"
+
+ companion object {
+ val convert: (ProvisionerEvent, GenericData.Record) -> Unit = { event, record ->
+ record.put("timestamp", event.timestamp)
+ record.put("host_total_count", event.totalHostCount)
+ record.put("host_available_count", event.availableHostCount)
+ record.put("vm_total_count", event.totalVmCount)
+ record.put("vm_active_count", event.activeVmCount)
+ record.put("vm_inactive_count", event.inactiveVmCount)
+ record.put("vm_waiting_count", event.waitingVmCount)
+ record.put("vm_failed_count", event.failedVmCount)
+ }
+
+ val schema: Schema = SchemaBuilder
+ .record("provisioner_metrics")
+ .namespace("com.atlarge.opendc.experiments.sc20")
+ .fields()
+ .name("timestamp").type().longType().noDefault()
+ .name("host_total_count").type().intType().noDefault()
+ .name("host_available_count").type().intType().noDefault()
+ .name("vm_total_count").type().intType().noDefault()
+ .name("vm_active_count").type().intType().noDefault()
+ .name("vm_inactive_count").type().intType().noDefault()
+ .name("vm_waiting_count").type().intType().noDefault()
+ .name("vm_failed_count").type().intType().noDefault()
+ .endRecord()
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt
new file mode 100644
index 00000000..1549b8d2
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt
@@ -0,0 +1,78 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.telemetry.parquet
+
+import com.atlarge.opendc.experiments.sc20.telemetry.RunEvent
+import org.apache.avro.Schema
+import org.apache.avro.SchemaBuilder
+import org.apache.avro.generic.GenericData
+import java.io.File
+
+/**
+ * A Parquet event writer for [RunEvent]s.
+ */
+public class ParquetRunEventWriter(path: File, bufferSize: Int) :
+ ParquetEventWriter<RunEvent>(path, schema, convert, bufferSize) {
+
+ override fun toString(): String = "run-writer"
+
+ companion object {
+ val convert: (RunEvent, GenericData.Record) -> Unit = { event, record ->
+ val run = event.run
+ val scenario = run.parent
+ val portfolio = scenario.parent
+ record.put("portfolio_id", portfolio.id)
+ record.put("portfolio_name", portfolio.name)
+ record.put("scenario_id", scenario.id)
+ record.put("run_id", run.id)
+ record.put("repetitions", scenario.repetitions)
+ record.put("topology", scenario.topology.name)
+ record.put("workload_name", scenario.workload.name)
+ record.put("workload_fraction", scenario.workload.fraction)
+ record.put("allocation_policy", scenario.allocationPolicy)
+ record.put("failure_frequency", scenario.operationalPhenomena.failureFrequency)
+ record.put("interference", scenario.operationalPhenomena.hasInterference)
+ record.put("seed", run.seed)
+ }
+
+ val schema: Schema = SchemaBuilder
+ .record("runs")
+ .namespace("com.atlarge.opendc.experiments.sc20")
+ .fields()
+ .name("portfolio_id").type().intType().noDefault()
+ .name("portfolio_name").type().stringType().noDefault()
+ .name("scenario_id").type().intType().noDefault()
+ .name("run_id").type().intType().noDefault()
+ .name("repetitions").type().intType().noDefault()
+ .name("topology").type().stringType().noDefault()
+ .name("workload_name").type().stringType().noDefault()
+ .name("workload_fraction").type().doubleType().noDefault()
+ .name("allocation_policy").type().stringType().noDefault()
+ .name("failure_frequency").type().doubleType().noDefault()
+ .name("interference").type().booleanType().noDefault()
+ .name("seed").type().intType().noDefault()
+ .endRecord()
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20ParquetTraceReader.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20ParquetTraceReader.kt
new file mode 100644
index 00000000..06bececf
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20ParquetTraceReader.kt
@@ -0,0 +1,98 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.trace
+
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.core.workload.IMAGE_PERF_INTERFERENCE_MODEL
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.experiments.sc20.experiment.model.CompositeWorkload
+import com.atlarge.opendc.experiments.sc20.experiment.model.Workload
+import com.atlarge.opendc.format.trace.TraceEntry
+import com.atlarge.opendc.format.trace.TraceReader
+import java.util.TreeSet
+
+/**
+ * A [TraceReader] for the internal VM workload trace format.
+ *
+ * @param reader The internal trace reader to use.
+ * @param performanceInterferenceModel The performance model covering the workload in the VM trace.
+ * @param run The run to which this reader belongs.
+ */
+@OptIn(ExperimentalStdlibApi::class)
+class Sc20ParquetTraceReader(
+ rawReaders: List<Sc20RawParquetTraceReader>,
+ performanceInterferenceModel: Map<String, PerformanceInterferenceModel>,
+ workload: Workload,
+ seed: Int
+) : TraceReader<VmWorkload> {
+ /**
+ * The iterator over the actual trace.
+ */
+ private val iterator: Iterator<TraceEntry<VmWorkload>> =
+ rawReaders
+ .map { it.read() }
+ .run {
+ if (workload is CompositeWorkload) {
+ this.zip(workload.workloads)
+ } else {
+ this.zip(listOf(workload))
+ }
+ }
+ .map { sampleWorkload(it.first, workload, it.second, seed) }
+ .flatten()
+ .run {
+ // Apply performance interference model
+ if (performanceInterferenceModel.isEmpty())
+ this
+ else {
+ map { entry ->
+ val image = entry.workload.image
+ val id = image.name
+ val relevantPerformanceInterferenceModelItems =
+ performanceInterferenceModel[id] ?: PerformanceInterferenceModel(TreeSet())
+
+ val newImage =
+ VmImage(
+ image.uid,
+ image.name,
+ mapOf(IMAGE_PERF_INTERFERENCE_MODEL to relevantPerformanceInterferenceModelItems),
+ image.flopsHistory,
+ image.maxCores,
+ image.requiredMemory
+ )
+ val newWorkload = entry.workload.copy(image = newImage)
+ Sc20RawParquetTraceReader.TraceEntryImpl(entry.submissionTime, newWorkload)
+ }
+ }
+ }
+ .iterator()
+
+ override fun hasNext(): Boolean = iterator.hasNext()
+
+ override fun next(): TraceEntry<VmWorkload> = iterator.next()
+
+ override fun close() {}
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20RawParquetTraceReader.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20RawParquetTraceReader.kt
new file mode 100644
index 00000000..652f7746
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20RawParquetTraceReader.kt
@@ -0,0 +1,173 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.trace
+
+import com.atlarge.opendc.compute.core.image.FlopsHistoryFragment
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.format.trace.TraceEntry
+import com.atlarge.opendc.format.trace.TraceReader
+import mu.KotlinLogging
+import org.apache.avro.generic.GenericData
+import org.apache.hadoop.fs.Path
+import org.apache.parquet.avro.AvroParquetReader
+import java.io.File
+import java.util.UUID
+
+private val logger = KotlinLogging.logger {}
+
+/**
+ * A [TraceReader] for the internal VM workload trace format.
+ *
+ * @param path The directory of the traces.
+ */
+@OptIn(ExperimentalStdlibApi::class)
+class Sc20RawParquetTraceReader(private val path: File) {
+ /**
+ * Read the fragments into memory.
+ */
+ private fun parseFragments(path: File): Map<String, List<FlopsHistoryFragment>> {
+ val reader = AvroParquetReader.builder<GenericData.Record>(Path(path.absolutePath, "trace.parquet"))
+ .disableCompatibility()
+ .build()
+
+ val fragments = mutableMapOf<String, MutableList<FlopsHistoryFragment>>()
+
+ return try {
+ while (true) {
+ val record = reader.read() ?: break
+
+ val id = record["id"].toString()
+ val tick = record["time"] as Long
+ val duration = record["duration"] as Long
+ val cores = record["cores"] as Int
+ val cpuUsage = record["cpuUsage"] as Double
+ val flops = record["flops"] as Long
+
+ val fragment = FlopsHistoryFragment(
+ tick,
+ flops,
+ duration,
+ cpuUsage,
+ cores
+ )
+
+ fragments.getOrPut(id) { mutableListOf() }.add(fragment)
+ }
+
+ fragments
+ } finally {
+ reader.close()
+ }
+ }
+
+ /**
+ * Read the metadata into a workload.
+ */
+ private fun parseMeta(path: File, fragments: Map<String, List<FlopsHistoryFragment>>): List<TraceEntryImpl> {
+ val metaReader = AvroParquetReader.builder<GenericData.Record>(Path(path.absolutePath, "meta.parquet"))
+ .disableCompatibility()
+ .build()
+
+ var counter = 0
+ val entries = mutableListOf<TraceEntryImpl>()
+
+ return try {
+ while (true) {
+ val record = metaReader.read() ?: break
+
+ val id = record["id"].toString()
+ if (!fragments.containsKey(id)) {
+ continue
+ }
+
+ val submissionTime = record["submissionTime"] as Long
+ val endTime = record["endTime"] as Long
+ val maxCores = record["maxCores"] as Int
+ val requiredMemory = record["requiredMemory"] as Long
+ val uid = UUID.nameUUIDFromBytes("$id-${counter++}".toByteArray())
+
+ val vmFragments = fragments.getValue(id).asSequence()
+ val totalLoad = vmFragments.sumByDouble { it.usage } * 5 * 60 // avg MHz * duration = MFLOPs
+ val vmWorkload = VmWorkload(
+ uid, id,
+ UnnamedUser,
+ VmImage(
+ uid,
+ id,
+ mapOf(
+ "submit-time" to submissionTime,
+ "end-time" to endTime,
+ "total-load" to totalLoad
+ ),
+ vmFragments,
+ maxCores,
+ requiredMemory
+ )
+ )
+ entries.add(TraceEntryImpl(submissionTime, vmWorkload))
+ }
+
+ entries
+ } catch (e: Exception) {
+ e.printStackTrace()
+ throw e
+ } finally {
+ metaReader.close()
+ }
+ }
+
+ /**
+ * The entries in the trace.
+ */
+ private val entries: List<TraceEntryImpl>
+
+ init {
+ val fragments = parseFragments(path)
+ entries = parseMeta(path, fragments)
+ }
+
+ /**
+ * Read the entries in the trace.
+ */
+ public fun read(): List<TraceEntry<VmWorkload>> = entries
+
+ /**
+ * An unnamed user.
+ */
+ private object UnnamedUser : User {
+ override val name: String = "<unnamed>"
+ override val uid: UUID = UUID.randomUUID()
+ }
+
+ /**
+ * An entry in the trace.
+ */
+ internal data class TraceEntryImpl(
+ override var submissionTime: Long,
+ override val workload: VmWorkload
+ ) : TraceEntry<VmWorkload>
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20StreamingParquetTraceReader.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20StreamingParquetTraceReader.kt
new file mode 100644
index 00000000..f6d6e6fd
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20StreamingParquetTraceReader.kt
@@ -0,0 +1,301 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.trace
+
+import com.atlarge.opendc.compute.core.image.FlopsHistoryFragment
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.core.workload.IMAGE_PERF_INTERFERENCE_MODEL
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.format.trace.TraceEntry
+import com.atlarge.opendc.format.trace.TraceReader
+import mu.KotlinLogging
+import org.apache.avro.generic.GenericData
+import org.apache.hadoop.fs.Path
+import org.apache.parquet.avro.AvroParquetReader
+import org.apache.parquet.filter2.compat.FilterCompat
+import org.apache.parquet.filter2.predicate.FilterApi
+import org.apache.parquet.filter2.predicate.Statistics
+import org.apache.parquet.filter2.predicate.UserDefinedPredicate
+import org.apache.parquet.io.api.Binary
+import java.io.File
+import java.io.Serializable
+import java.util.SortedSet
+import java.util.TreeSet
+import java.util.UUID
+import java.util.concurrent.ArrayBlockingQueue
+import kotlin.concurrent.thread
+import kotlin.random.Random
+
+private val logger = KotlinLogging.logger {}
+
+/**
+ * A [TraceReader] for the internal VM workload trace format that streams workloads on the fly.
+ *
+ * @param traceFile The directory of the traces.
+ * @param performanceInterferenceModel The performance model covering the workload in the VM trace.
+ */
+@OptIn(ExperimentalStdlibApi::class)
+class Sc20StreamingParquetTraceReader(
+ traceFile: File,
+ performanceInterferenceModel: PerformanceInterferenceModel,
+ selectedVms: List<String>,
+ random: Random
+) : TraceReader<VmWorkload> {
+ /**
+ * The internal iterator to use for this reader.
+ */
+ private val iterator: Iterator<TraceEntry<VmWorkload>>
+
+ /**
+ * The intermediate buffer to store the read records in.
+ */
+ private val queue = ArrayBlockingQueue<Pair<String, FlopsHistoryFragment>>(1024)
+
+ /**
+ * An optional filter for filtering the selected VMs
+ */
+ private val filter =
+ if (selectedVms.isEmpty())
+ null
+ else
+ FilterCompat.get(FilterApi.userDefined(FilterApi.binaryColumn("id"),
+ SelectedVmFilter(
+ TreeSet(selectedVms)
+ )
+ ))
+
+ /**
+ * A poisonous fragment.
+ */
+ private val poison = Pair("\u0000", FlopsHistoryFragment(0, 0, 0, 0.0, 0))
+
+ /**
+ * The thread to read the records in.
+ */
+ private val readerThread = thread(start = true, name = "sc20-reader") {
+ val reader = AvroParquetReader.builder<GenericData.Record>(Path(traceFile.absolutePath, "trace.parquet"))
+ .disableCompatibility()
+ .run { if (filter != null) withFilter(filter) else this }
+ .build()
+
+ try {
+ while (true) {
+ val record = reader.read()
+
+ if (record == null) {
+ queue.put(poison)
+ break
+ }
+
+ val id = record["id"].toString()
+ val tick = record["time"] as Long
+ val duration = record["duration"] as Long
+ val cores = record["cores"] as Int
+ val cpuUsage = record["cpuUsage"] as Double
+ val flops = record["flops"] as Long
+
+ val fragment = FlopsHistoryFragment(
+ tick,
+ flops,
+ duration,
+ cpuUsage,
+ cores
+ )
+
+ queue.put(id to fragment)
+ }
+ } catch (e: InterruptedException) {
+ // Do not rethrow this
+ } finally {
+ reader.close()
+ }
+ }
+
+ /**
+ * Fill the buffers with the VMs
+ */
+ private fun pull(buffers: Map<String, List<MutableList<FlopsHistoryFragment>>>) {
+ if (!hasNext) {
+ return
+ }
+
+ val fragments = mutableListOf<Pair<String, FlopsHistoryFragment>>()
+ queue.drainTo(fragments)
+
+ for ((id, fragment) in fragments) {
+ if (id == poison.first) {
+ hasNext = false
+ return
+ }
+ buffers[id]?.forEach { it.add(fragment) }
+ }
+ }
+
+ /**
+ * A flag to indicate whether the reader has more entries.
+ */
+ private var hasNext: Boolean = true
+
+ /**
+ * Initialize the reader.
+ */
+ init {
+ val takenIds = mutableSetOf<UUID>()
+ val entries = mutableMapOf<String, GenericData.Record>()
+ val buffers = mutableMapOf<String, MutableList<MutableList<FlopsHistoryFragment>>>()
+
+ val metaReader = AvroParquetReader.builder<GenericData.Record>(Path(traceFile.absolutePath, "meta.parquet"))
+ .disableCompatibility()
+ .run { if (filter != null) withFilter(filter) else this }
+ .build()
+
+ while (true) {
+ val record = metaReader.read() ?: break
+ val id = record["id"].toString()
+ entries[id] = record
+ }
+
+ metaReader.close()
+
+ val selection = if (selectedVms.isEmpty()) entries.keys else selectedVms
+
+ // Create the entry iterator
+ iterator = selection.asSequence()
+ .mapNotNull { entries[it] }
+ .mapIndexed { index, record ->
+ val id = record["id"].toString()
+ val submissionTime = record["submissionTime"] as Long
+ val endTime = record["endTime"] as Long
+ val maxCores = record["maxCores"] as Int
+ val requiredMemory = record["requiredMemory"] as Long
+ val uid = UUID.nameUUIDFromBytes("$id-$index".toByteArray())
+
+ assert(uid !in takenIds)
+ takenIds += uid
+
+ logger.info("Processing VM $id")
+
+ val internalBuffer = mutableListOf<FlopsHistoryFragment>()
+ val externalBuffer = mutableListOf<FlopsHistoryFragment>()
+ buffers.getOrPut(id) { mutableListOf() }.add(externalBuffer)
+ val fragments = sequence<FlopsHistoryFragment> {
+ repeat@while (true) {
+ if (externalBuffer.isEmpty()) {
+ if (hasNext) {
+ pull(buffers)
+ continue
+ } else {
+ break
+ }
+ }
+
+ internalBuffer.addAll(externalBuffer)
+ externalBuffer.clear()
+
+ for (fragment in internalBuffer) {
+ yield(fragment)
+
+ if (fragment.tick >= endTime) {
+ break@repeat
+ }
+ }
+
+ internalBuffer.clear()
+ }
+
+ buffers.remove(id)
+ }
+ val relevantPerformanceInterferenceModelItems =
+ PerformanceInterferenceModel(
+ performanceInterferenceModel.items.filter { it.workloadNames.contains(id) }.toSortedSet(),
+ Random(random.nextInt())
+ )
+ val vmWorkload = VmWorkload(
+ uid, "VM Workload $id",
+ UnnamedUser,
+ VmImage(
+ uid,
+ id,
+ mapOf(IMAGE_PERF_INTERFERENCE_MODEL to relevantPerformanceInterferenceModelItems),
+ fragments,
+ maxCores,
+ requiredMemory
+ )
+ )
+
+ TraceEntryImpl(
+ submissionTime,
+ vmWorkload
+ )
+ }
+ .sortedBy { it.submissionTime }
+ .toList()
+ .iterator()
+ }
+
+ override fun hasNext(): Boolean = iterator.hasNext()
+
+ override fun next(): TraceEntry<VmWorkload> = iterator.next()
+
+ override fun close() {
+ readerThread.interrupt()
+ }
+
+ private class SelectedVmFilter(val selectedVms: SortedSet<String>) : UserDefinedPredicate<Binary>(), Serializable {
+ override fun keep(value: Binary?): Boolean = value != null && selectedVms.contains(value.toStringUsingUTF8())
+
+ override fun canDrop(statistics: Statistics<Binary>): Boolean {
+ val min = statistics.min
+ val max = statistics.max
+
+ return selectedVms.subSet(min.toStringUsingUTF8(), max.toStringUsingUTF8() + "\u0000").isEmpty()
+ }
+
+ override fun inverseCanDrop(statistics: Statistics<Binary>): Boolean {
+ val min = statistics.min
+ val max = statistics.max
+
+ return selectedVms.subSet(min.toStringUsingUTF8(), max.toStringUsingUTF8() + "\u0000").isNotEmpty()
+ }
+ }
+
+ /**
+ * An unnamed user.
+ */
+ private object UnnamedUser : User {
+ override val name: String = "<unnamed>"
+ override val uid: UUID = UUID.randomUUID()
+ }
+
+ /**
+ * An entry in the trace.
+ */
+ private data class TraceEntryImpl(
+ override var submissionTime: Long,
+ override val workload: VmWorkload
+ ) : TraceEntry<VmWorkload>
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20TraceConverter.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20TraceConverter.kt
new file mode 100644
index 00000000..0877ad52
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/Sc20TraceConverter.kt
@@ -0,0 +1,460 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.trace
+
+import com.atlarge.opendc.format.trace.sc20.Sc20VmPlacementReader
+import me.tongfei.progressbar.ProgressBar
+import org.apache.avro.Schema
+import org.apache.avro.SchemaBuilder
+import org.apache.avro.generic.GenericData
+import org.apache.hadoop.fs.Path
+import org.apache.parquet.avro.AvroParquetWriter
+import org.apache.parquet.hadoop.ParquetWriter
+import org.apache.parquet.hadoop.metadata.CompressionCodecName
+import java.io.BufferedReader
+import java.io.File
+import java.io.FileReader
+import java.util.Random
+import kotlin.math.max
+import kotlin.math.min
+
+/**
+ * A script to convert a trace in text format into a Parquet trace.
+ */
+fun main(args: Array<String>) {
+ if (args.size < 4) {
+ println("error: expected <OUTPUT> <INPUT> <TRACE-TYPE> <SEED/CLUSTERS+MAPPING>")
+ return
+ }
+
+ val metaSchema = SchemaBuilder
+ .record("meta")
+ .namespace("com.atlarge.opendc.format.sc20")
+ .fields()
+ .name("id").type().stringType().noDefault()
+ .name("submissionTime").type().longType().noDefault()
+ .name("endTime").type().longType().noDefault()
+ .name("maxCores").type().intType().noDefault()
+ .name("requiredMemory").type().longType().noDefault()
+ .endRecord()
+ val schema = SchemaBuilder
+ .record("trace")
+ .namespace("com.atlarge.opendc.format.sc20")
+ .fields()
+ .name("id").type().stringType().noDefault()
+ .name("time").type().longType().noDefault()
+ .name("duration").type().longType().noDefault()
+ .name("cores").type().intType().noDefault()
+ .name("cpuUsage").type().doubleType().noDefault()
+ .name("flops").type().longType().noDefault()
+ .endRecord()
+
+ val dest = File(args[0])
+ val traceDirectory = File(args[1])
+ val metaParquet = File(dest.absolutePath, "meta.parquet")
+ val traceParquet = File(dest.absolutePath, "trace.parquet")
+
+ if (metaParquet.exists()) {
+ metaParquet.delete()
+ }
+ if (traceParquet.exists()) {
+ traceParquet.delete()
+ }
+
+ val metaWriter = AvroParquetWriter.builder<GenericData.Record>(Path(metaParquet.toURI()))
+ .withSchema(metaSchema)
+ .withCompressionCodec(CompressionCodecName.SNAPPY)
+ .withPageSize(4 * 1024 * 1024) // For compression
+ .withRowGroupSize(16 * 1024 * 1024) // For write buffering (Page size)
+ .build()
+
+ val writer = AvroParquetWriter.builder<GenericData.Record>(Path(traceParquet.toURI()))
+ .withSchema(schema)
+ .withCompressionCodec(CompressionCodecName.SNAPPY)
+ .withPageSize(4 * 1024 * 1024) // For compression
+ .withRowGroupSize(16 * 1024 * 1024) // For write buffering (Page size)
+ .build()
+
+ val traceType = args[2]
+ val allFragments = if (traceType == "solvinity") {
+ val clusters = args[3].split(",")
+ val vmPlacementFile = File(args[4])
+ val vmPlacements = Sc20VmPlacementReader(vmPlacementFile.inputStream().buffered()).construct()
+
+ readSolvinityTrace(traceDirectory, metaSchema, metaWriter, clusters, vmPlacements)
+ } else {
+ val seed = args[3].toLong()
+ readAzureTrace(traceDirectory, metaSchema, metaWriter, seed)
+ }
+ allFragments.sortWith(compareBy<Fragment> { it.tick }.thenBy { it.id })
+
+ for (fragment in allFragments) {
+ val record = GenericData.Record(schema)
+ record.put("id", fragment.id)
+ record.put("time", fragment.tick)
+ record.put("duration", fragment.duration)
+ record.put("cores", fragment.cores)
+ record.put("cpuUsage", fragment.usage)
+ record.put("flops", fragment.flops)
+
+ writer.write(record)
+ }
+
+ writer.close()
+ metaWriter.close()
+}
+
+data class Fragment(
+ val id: String,
+ val tick: Long,
+ val flops: Long,
+ val duration: Long,
+ val usage: Double,
+ val cores: Int
+)
+
+/**
+ * Reads the confidential Solvinity trace.
+ */
+fun readSolvinityTrace(
+ traceDirectory: File,
+ metaSchema: Schema,
+ metaWriter: ParquetWriter<GenericData.Record>,
+ clusters: List<String>,
+ vmPlacements: Map<String, String>
+): MutableList<Fragment> {
+ val timestampCol = 0
+ val cpuUsageCol = 1
+ val coreCol = 12
+ val provisionedMemoryCol = 20
+ val traceInterval = 5 * 60 * 1000L
+
+ // Identify start time of the entire trace
+ var minTimestamp = Long.MAX_VALUE
+ traceDirectory.walk()
+ .filterNot { it.isDirectory }
+ .filter { it.extension == "csv" || it.extension == "txt" }
+ .toList()
+ .forEach { vmFile ->
+ BufferedReader(FileReader(vmFile)).use { reader ->
+ reader.lineSequence()
+ .chunked(128)
+ .forEachIndexed { idx, lines ->
+ for (line in lines) {
+ // Ignore comments in the trace
+ if (line.startsWith("#") || line.isBlank()) {
+ continue
+ }
+
+ val vmId = vmFile.name
+
+ // Check if VM in topology
+ val clusterName = vmPlacements[vmId]
+ if (clusterName == null || !clusters.contains(clusterName)) {
+ continue
+ }
+
+ val values = line.split(" ")
+ val timestamp = (values[timestampCol].trim().toLong() - 5 * 60) * 1000L
+
+ if (timestamp < minTimestamp) {
+ minTimestamp = timestamp
+ }
+ return@forEach
+ }
+ }
+ }
+ }
+
+ println("Start of trace at $minTimestamp")
+
+ val allFragments = mutableListOf<Fragment>()
+
+ val begin = 15 * 24 * 60 * 60 * 1000L
+ val end = 45 * 24 * 60 * 60 * 1000L
+
+ traceDirectory.walk()
+ .filterNot { it.isDirectory }
+ .filter { it.extension == "csv" || it.extension == "txt" }
+ .toList()
+ .forEachIndexed { idx, vmFile ->
+ println(vmFile)
+
+ var vmId = ""
+ var maxCores = -1
+ var requiredMemory = -1L
+ var cores = -1
+ var minTime = Long.MAX_VALUE
+
+ val flopsFragments = sequence {
+ var last: Fragment? = null
+
+ BufferedReader(FileReader(vmFile)).use { reader ->
+ reader.lineSequence()
+ .chunked(128)
+ .forEach { lines ->
+ for (line in lines) {
+ // Ignore comments in the trace
+ if (line.startsWith("#") || line.isBlank()) {
+ continue
+ }
+
+ val values = line.split(" ")
+
+ vmId = vmFile.name
+
+ // Check if VM in topology
+ val clusterName = vmPlacements[vmId]
+ if (clusterName == null || !clusters.contains(clusterName)) {
+ continue
+ }
+
+ val timestamp = (values[timestampCol].trim().toLong() - 5 * 60) * 1000L - minTimestamp
+ if (begin > timestamp || timestamp > end) {
+ continue
+ }
+
+ cores = values[coreCol].trim().toInt()
+ requiredMemory = max(requiredMemory, values[provisionedMemoryCol].trim().toLong())
+ maxCores = max(maxCores, cores)
+ minTime = min(minTime, timestamp)
+ val cpuUsage = values[cpuUsageCol].trim().toDouble() // MHz
+ requiredMemory = max(requiredMemory, values[provisionedMemoryCol].trim().toLong())
+ maxCores = max(maxCores, cores)
+
+ val flops: Long = (cpuUsage * 5 * 60).toLong()
+
+ last = if (last != null && last!!.flops == 0L && flops == 0L) {
+ val oldFragment = last!!
+ Fragment(
+ vmId,
+ oldFragment.tick,
+ oldFragment.flops + flops,
+ oldFragment.duration + traceInterval,
+ cpuUsage,
+ cores
+ )
+ } else {
+ val fragment =
+ Fragment(
+ vmId,
+ timestamp,
+ flops,
+ traceInterval,
+ cpuUsage,
+ cores
+ )
+ if (last != null) {
+ yield(last!!)
+ }
+ fragment
+ }
+ }
+ }
+ }
+
+ if (last != null) {
+ yield(last!!)
+ }
+ }
+
+ var maxTime = Long.MIN_VALUE
+ flopsFragments.filter { it.tick in begin until end }.forEach { fragment ->
+ allFragments.add(fragment)
+ maxTime = max(maxTime, fragment.tick)
+ }
+
+ if (minTime in begin until end) {
+ val metaRecord = GenericData.Record(metaSchema)
+ metaRecord.put("id", vmId)
+ metaRecord.put("submissionTime", minTime)
+ metaRecord.put("endTime", maxTime)
+ metaRecord.put("maxCores", maxCores)
+ metaRecord.put("requiredMemory", requiredMemory)
+ metaWriter.write(metaRecord)
+ }
+ }
+
+ return allFragments
+}
+
+/**
+ * Reads the Azure cloud trace.
+ *
+ * See https://github.com/Azure/AzurePublicDataset/ for a definition of the trace.
+ */
+fun readAzureTrace(
+ traceDirectory: File,
+ metaSchema: Schema,
+ metaWriter: ParquetWriter<GenericData.Record>,
+ seed: Long
+): MutableList<Fragment> {
+ val random = Random(seed)
+ val fraction = 0.01
+
+ // Read VM table
+ val vmIdTableCol = 0
+ val coreTableCol = 9
+ val provisionedMemoryTableCol = 10
+
+ var vmId: String
+ var cores: Int
+ var requiredMemory: Long
+
+ val vmIds = mutableSetOf<String>()
+ val vmIdToMetadata = mutableMapOf<String, VmInfo>()
+
+ BufferedReader(FileReader(File(traceDirectory, "vmtable.csv"))).use { reader ->
+ reader.lineSequence()
+ .chunked(1024)
+ .forEach { lines ->
+ for (line in lines) {
+ // Ignore comments in the trace
+ if (line.startsWith("#") || line.isBlank()) {
+ continue
+ }
+ // Sample only a fraction of the VMs
+ if (random.nextDouble() > fraction) {
+ continue
+ }
+
+ val values = line.split(",")
+
+ // Exclude VMs with a large number of cores (not specified exactly)
+ if (values[coreTableCol].contains(">")) {
+ continue
+ }
+
+ vmId = values[vmIdTableCol].trim()
+ cores = values[coreTableCol].trim().toInt()
+ requiredMemory = values[provisionedMemoryTableCol].trim().toInt() * 1_000L // GB -> MB
+
+ vmIds.add(vmId)
+ vmIdToMetadata[vmId] = VmInfo(cores, requiredMemory, Long.MAX_VALUE, -1L)
+ }
+ }
+ }
+
+ // Read VM metric reading files
+ val timestampCol = 0
+ val vmIdCol = 1
+ val cpuUsageCol = 4
+ val traceInterval = 5 * 60 * 1000L
+
+ val vmIdToFragments = mutableMapOf<String, MutableList<Fragment>>()
+ val vmIdToLastFragment = mutableMapOf<String, Fragment?>()
+ val allFragments = mutableListOf<Fragment>()
+
+ for (i in ProgressBar.wrap((1..195).toList(), "Reading Trace")) {
+ val readingsFile = File(File(traceDirectory, "readings"), "readings-$i.csv")
+ var timestamp: Long
+ var cpuUsage: Double
+
+ BufferedReader(FileReader(readingsFile)).use { reader ->
+ reader.lineSequence()
+ .chunked(128)
+ .forEach { lines ->
+ for (line in lines) {
+ // Ignore comments in the trace
+ if (line.startsWith("#") || line.isBlank()) {
+ continue
+ }
+
+ val values = line.split(",")
+ vmId = values[vmIdCol].trim()
+
+ // Ignore readings for VMs not in the sample
+ if (!vmIds.contains(vmId)) {
+ continue
+ }
+
+ timestamp = values[timestampCol].trim().toLong() * 1000L
+ vmIdToMetadata[vmId]!!.minTime = min(vmIdToMetadata[vmId]!!.minTime, timestamp)
+ cpuUsage = values[cpuUsageCol].trim().toDouble() * 3_000 // MHz
+ vmIdToMetadata[vmId]!!.maxTime = max(vmIdToMetadata[vmId]!!.maxTime, timestamp)
+
+ val flops: Long = (cpuUsage * 5 * 60).toLong()
+ val lastFragment = vmIdToLastFragment[vmId]
+
+ vmIdToLastFragment[vmId] =
+ if (lastFragment != null && lastFragment.flops == 0L && flops == 0L) {
+ Fragment(
+ vmId,
+ lastFragment.tick,
+ lastFragment.flops + flops,
+ lastFragment.duration + traceInterval,
+ cpuUsage,
+ vmIdToMetadata[vmId]!!.cores
+ )
+ } else {
+ val fragment =
+ Fragment(
+ vmId,
+ timestamp,
+ flops,
+ traceInterval,
+ cpuUsage,
+ vmIdToMetadata[vmId]!!.cores
+ )
+ if (lastFragment != null) {
+ if (vmIdToFragments[vmId] == null) {
+ vmIdToFragments[vmId] = mutableListOf()
+ }
+ vmIdToFragments[vmId]!!.add(lastFragment)
+ allFragments.add(lastFragment)
+ }
+ fragment
+ }
+ }
+ }
+ }
+ }
+
+ for (entry in vmIdToLastFragment) {
+ if (entry.value != null) {
+ if (vmIdToFragments[entry.key] == null) {
+ vmIdToFragments[entry.key] = mutableListOf()
+ }
+ vmIdToFragments[entry.key]!!.add(entry.value!!)
+ }
+ }
+
+ println("Read ${vmIdToLastFragment.size} VMs")
+
+ for (entry in vmIdToMetadata) {
+ val metaRecord = GenericData.Record(metaSchema)
+ metaRecord.put("id", entry.key)
+ metaRecord.put("submissionTime", entry.value.minTime)
+ metaRecord.put("endTime", entry.value.maxTime)
+ println("${entry.value.minTime} - ${entry.value.maxTime}")
+ metaRecord.put("maxCores", entry.value.cores)
+ metaRecord.put("requiredMemory", entry.value.requiredMemory)
+ metaWriter.write(metaRecord)
+ }
+
+ return allFragments
+}
+
+class VmInfo(val cores: Int, val requiredMemory: Long, var minTime: Long, var maxTime: Long)
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt
new file mode 100644
index 00000000..dd70d4f1
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/trace/WorkloadSampler.kt
@@ -0,0 +1,85 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20.trace
+
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.experiments.sc20.experiment.model.CompositeWorkload
+import com.atlarge.opendc.experiments.sc20.experiment.model.Workload
+import com.atlarge.opendc.format.trace.TraceEntry
+import mu.KotlinLogging
+import kotlin.random.Random
+
+private val logger = KotlinLogging.logger {}
+
+/**
+ * Sample the workload for the specified [run].
+ */
+fun sampleWorkload(
+ trace: List<TraceEntry<VmWorkload>>,
+ workload: Workload,
+ subWorkload: Workload,
+ seed: Int
+): List<TraceEntry<VmWorkload>> {
+ return if (workload is CompositeWorkload) {
+ sampleRegularWorkload(trace, workload, subWorkload, seed)
+ } else {
+ sampleRegularWorkload(trace, workload, workload, seed)
+ }
+}
+
+/**
+ * Sample a regular (non-HPC) workload.
+ */
+fun sampleRegularWorkload(
+ trace: List<TraceEntry<VmWorkload>>,
+ workload: Workload,
+ subWorkload: Workload,
+ seed: Int
+): List<TraceEntry<VmWorkload>> {
+ val fraction = subWorkload.fraction
+
+ val shuffled = trace.shuffled(Random(seed))
+ val res = mutableListOf<TraceEntry<VmWorkload>>()
+ val totalLoad = if (workload is CompositeWorkload) {
+ workload.totalLoad
+ } else {
+ shuffled.sumByDouble { it.workload.image.tags.getValue("total-load") as Double }
+ }
+ var currentLoad = 0.0
+
+ for (entry in shuffled) {
+ val entryLoad = entry.workload.image.tags.getValue("total-load") as Double
+ if ((currentLoad + entryLoad) / totalLoad > fraction) {
+ break
+ }
+
+ currentLoad += entryLoad
+ res += entry
+ }
+
+ logger.info { "Sampled ${trace.size} VMs (fraction $fraction) into subset of ${res.size} VMs" }
+
+ return res
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/main/resources/log4j2.xml b/simulator/opendc/opendc-experiments-sc20/src/main/resources/log4j2.xml
new file mode 100644
index 00000000..f47a6da8
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/main/resources/log4j2.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ MIT License
+ ~
+ ~ Copyright (c) 2020 atlarge-research
+ ~
+ ~ Permission is hereby granted, free of charge, to any person obtaining a copy
+ ~ of this software and associated documentation files (the "Software"), to deal
+ ~ in the Software without restriction, including without limitation the rights
+ ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ ~ copies of the Software, and to permit persons to whom the Software is
+ ~ furnished to do so, subject to the following conditions:
+ ~
+ ~ The above copyright notice and this permission notice shall be included in all
+ ~ copies or substantial portions of the Software.
+ ~
+ ~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ ~ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ ~ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ ~ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ ~ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ ~ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ ~ SOFTWARE.
+ -->
+
+<Configuration status="WARN">
+ <Appenders>
+ <Console name="Console" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d{HH:mm:ss.SSS} [%highlight{%-5level}] %logger{36} - %msg%n" disableAnsi="false" />
+ </Console>
+ </Appenders>
+ <Loggers>
+ <Logger name="com.atlarge.odcsim" level="info" additivity="false">
+ <AppenderRef ref="Console"/>
+ </Logger>
+ <Logger name="com.atlarge.opendc" level="warn" additivity="false">
+ <AppenderRef ref="Console"/>
+ </Logger>
+ <Logger name="com.atlarge.opendc.experiments.sc20" level="info" additivity="false">
+ <AppenderRef ref="Console"/>
+ </Logger>
+ <Logger name="org.apache.hadoop" level="warn" additivity="false">
+ <AppenderRef ref="Console"/>
+ </Logger>
+ <Root level="error">
+ <AppenderRef ref="Console"/>
+ </Root>
+ </Loggers>
+</Configuration>
diff --git a/simulator/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt b/simulator/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt
new file mode 100644
index 00000000..5ecf7605
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/test/kotlin/com/atlarge/opendc/experiments/sc20/Sc20IntegrationTest.kt
@@ -0,0 +1,248 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.experiments.sc20
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.odcsim.SimulationEngine
+import com.atlarge.odcsim.SimulationEngineProvider
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.compute.virt.service.SimpleVirtProvisioningService
+import com.atlarge.opendc.compute.virt.service.allocation.AvailableCoreMemoryAllocationPolicy
+import com.atlarge.opendc.experiments.sc20.experiment.attachMonitor
+import com.atlarge.opendc.experiments.sc20.experiment.createFailureDomain
+import com.atlarge.opendc.experiments.sc20.experiment.createProvisioner
+import com.atlarge.opendc.experiments.sc20.experiment.model.Workload
+import com.atlarge.opendc.experiments.sc20.experiment.monitor.ExperimentMonitor
+import com.atlarge.opendc.experiments.sc20.experiment.processTrace
+import com.atlarge.opendc.experiments.sc20.trace.Sc20ParquetTraceReader
+import com.atlarge.opendc.experiments.sc20.trace.Sc20RawParquetTraceReader
+import com.atlarge.opendc.format.environment.EnvironmentReader
+import com.atlarge.opendc.format.environment.sc20.Sc20ClusterEnvironmentReader
+import com.atlarge.opendc.format.trace.TraceReader
+import kotlinx.coroutines.cancel
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import org.junit.jupiter.api.AfterEach
+import org.junit.jupiter.api.Assertions.assertAll
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.assertAll
+import java.io.File
+import java.util.ServiceLoader
+
+/**
+ * An integration test suite for the SC20 experiments.
+ */
+class Sc20IntegrationTest {
+ /**
+ * The simulation engine to use.
+ */
+ private lateinit var simulationEngine: SimulationEngine
+
+ /**
+ * The root simulation domain to run in.
+ */
+ private lateinit var root: Domain
+
+ /**
+ * The monitor used to keep track of the metrics.
+ */
+ private lateinit var monitor: TestExperimentReporter
+
+ /**
+ * Setup the experimental environment.
+ */
+ @BeforeEach
+ fun setUp() {
+ val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+ simulationEngine = provider("test")
+ root = simulationEngine.newDomain("root")
+ monitor = TestExperimentReporter()
+ }
+
+ /**
+ * Tear down the experimental environment.
+ */
+ @AfterEach
+ fun tearDown() = runBlocking {
+ simulationEngine.terminate()
+ }
+
+ @Test
+ fun smoke() {
+ val failures = false
+ val seed = 0
+ val chan = Channel<Unit>(Channel.CONFLATED)
+ val allocationPolicy = AvailableCoreMemoryAllocationPolicy()
+ val traceReader = createTestTraceReader()
+ val environmentReader = createTestEnvironmentReader()
+ lateinit var scheduler: SimpleVirtProvisioningService
+
+ root.launch {
+ val res = createProvisioner(
+ root,
+ environmentReader,
+ allocationPolicy
+ )
+ val bareMetalProvisioner = res.first
+ scheduler = res.second
+
+ val failureDomain = if (failures) {
+ println("ENABLING failures")
+ createFailureDomain(
+ seed,
+ 24.0 * 7,
+ bareMetalProvisioner,
+ chan
+ )
+ } else {
+ null
+ }
+
+ attachMonitor(scheduler, monitor)
+ processTrace(
+ traceReader,
+ scheduler,
+ chan,
+ monitor
+ )
+
+ println("Finish SUBMIT=${scheduler.submittedVms} FAIL=${scheduler.unscheduledVms} QUEUE=${scheduler.queuedVms} RUNNING=${scheduler.runningVms} FINISH=${scheduler.finishedVms}")
+
+ failureDomain?.cancel()
+ scheduler.terminate()
+ monitor.close()
+ }
+
+ runSimulation()
+
+ // Note that these values have been verified beforehand
+ assertEquals(50, scheduler.submittedVms, "The trace contains 50 VMs")
+ assertEquals(50, scheduler.finishedVms, "All VMs should finish after a run")
+ assertEquals(207379117949, monitor.totalRequestedBurst)
+ assertEquals(203388071813, monitor.totalGrantedBurst)
+ assertEquals(3991046136, monitor.totalOvercommissionedBurst)
+ assertEquals(0, monitor.totalInterferedBurst)
+ }
+
+ @Test
+ fun small() {
+ val seed = 1
+ val chan = Channel<Unit>(Channel.CONFLATED)
+ val allocationPolicy = AvailableCoreMemoryAllocationPolicy()
+ val traceReader = createTestTraceReader(0.5, seed)
+ val environmentReader = createTestEnvironmentReader("single")
+ lateinit var scheduler: SimpleVirtProvisioningService
+
+ root.launch {
+ val res = createProvisioner(
+ root,
+ environmentReader,
+ allocationPolicy
+ )
+ scheduler = res.second
+
+ attachMonitor(scheduler, monitor)
+ processTrace(
+ traceReader,
+ scheduler,
+ chan,
+ monitor
+ )
+
+ println("Finish SUBMIT=${scheduler.submittedVms} FAIL=${scheduler.unscheduledVms} QUEUE=${scheduler.queuedVms} RUNNING=${scheduler.runningVms} FINISH=${scheduler.finishedVms}")
+
+ scheduler.terminate()
+ monitor.close()
+ }
+
+ runSimulation()
+
+ // Note that these values have been verified beforehand
+ assertAll(
+ { assertEquals(96344114723, monitor.totalRequestedBurst) },
+ { assertEquals(96324378235, monitor.totalGrantedBurst) },
+ { assertEquals(19736424, monitor.totalOvercommissionedBurst) },
+ { assertEquals(0, monitor.totalInterferedBurst) }
+ )
+ }
+
+ /**
+ * Run the simulation.
+ */
+ private fun runSimulation() = runBlocking {
+ simulationEngine.run()
+ }
+
+ /**
+ * Obtain the trace reader for the test.
+ */
+ private fun createTestTraceReader(fraction: Double = 1.0, seed: Int = 0): TraceReader<VmWorkload> {
+ return Sc20ParquetTraceReader(
+ listOf(Sc20RawParquetTraceReader(File("src/test/resources/trace"))),
+ emptyMap(),
+ Workload("test", fraction),
+ seed
+ )
+ }
+
+ /**
+ * Obtain the environment reader for the test.
+ */
+ private fun createTestEnvironmentReader(name: String = "topology"): EnvironmentReader {
+ val stream = object {}.javaClass.getResourceAsStream("/env/$name.txt")
+ return Sc20ClusterEnvironmentReader(stream)
+ }
+
+ class TestExperimentReporter : ExperimentMonitor {
+ var totalRequestedBurst = 0L
+ var totalGrantedBurst = 0L
+ var totalOvercommissionedBurst = 0L
+ var totalInterferedBurst = 0L
+
+ override fun reportHostSlice(
+ time: Long,
+ requestedBurst: Long,
+ grantedBurst: Long,
+ overcommissionedBurst: Long,
+ interferedBurst: Long,
+ cpuUsage: Double,
+ cpuDemand: Double,
+ numberOfDeployedImages: Int,
+ hostServer: Server,
+ duration: Long
+ ) {
+ totalRequestedBurst += requestedBurst
+ totalGrantedBurst += grantedBurst
+ totalOvercommissionedBurst += overcommissionedBurst
+ totalInterferedBurst += interferedBurst
+ }
+
+ override fun close() {}
+ }
+}
diff --git a/simulator/opendc/opendc-experiments-sc20/src/test/resources/env/single.txt b/simulator/opendc/opendc-experiments-sc20/src/test/resources/env/single.txt
new file mode 100644
index 00000000..53b3c2d7
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/test/resources/env/single.txt
@@ -0,0 +1,3 @@
+ClusterID;ClusterName;Cores;Speed;Memory;numberOfHosts;memoryCapacityPerHost;coreCountPerHost
+A01;A01;8;3.2;64;1;64;8
+
diff --git a/simulator/opendc/opendc-experiments-sc20/src/test/resources/env/topology.txt b/simulator/opendc/opendc-experiments-sc20/src/test/resources/env/topology.txt
new file mode 100644
index 00000000..6b347bff
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/test/resources/env/topology.txt
@@ -0,0 +1,5 @@
+ClusterID;ClusterName;Cores;Speed;Memory;numberOfHosts;memoryCapacityPerHost;coreCountPerHost
+A01;A01;32;3.2;2048;1;256;32
+B01;B01;48;2.93;1256;6;64;8
+C01;C01;32;3.2;2048;2;128;16
+
diff --git a/simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/meta.parquet b/simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/meta.parquet
new file mode 100644
index 00000000..ce7a812c
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/meta.parquet
Binary files differ
diff --git a/simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/trace.parquet b/simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/trace.parquet
new file mode 100644
index 00000000..1d7ce882
--- /dev/null
+++ b/simulator/opendc/opendc-experiments-sc20/src/test/resources/trace/trace.parquet
Binary files differ
diff --git a/simulator/opendc/opendc-format/build.gradle.kts b/simulator/opendc/opendc-format/build.gradle.kts
new file mode 100644
index 00000000..21b0dc57
--- /dev/null
+++ b/simulator/opendc/opendc-format/build.gradle.kts
@@ -0,0 +1,43 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Library for reading common data formats for datacenter simulation"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+}
+
+dependencies {
+ api(project(":opendc:opendc-core"))
+ api(project(":opendc:opendc-compute"))
+ api(project(":opendc:opendc-workflows"))
+ api("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8")
+ implementation(kotlin("stdlib"))
+ implementation(kotlin("reflect"))
+
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt
new file mode 100644
index 00000000..42551f43
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/EnvironmentReader.kt
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.environment
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.opendc.core.Environment
+import java.io.Closeable
+
+/**
+ * An interface for reading descriptions of datacenter environments into memory as [Environment].
+ */
+interface EnvironmentReader : Closeable {
+ /**
+ * Construct an [Environment] in the specified domain.
+ */
+ suspend fun construct(dom: Domain): Environment
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Model.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Model.kt
new file mode 100644
index 00000000..7afe9253
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Model.kt
@@ -0,0 +1,44 @@
+package com.atlarge.opendc.format.environment.sc18
+
+import com.fasterxml.jackson.annotation.JsonSubTypes
+import com.fasterxml.jackson.annotation.JsonTypeInfo
+
+/**
+ * A datacenter setup.
+ *
+ * @property name The name of the setup.
+ * @property rooms The rooms in the datacenter.
+ */
+internal data class Setup(val name: String, val rooms: List<Room>)
+
+/**
+ * A room in a datacenter.
+ *
+ * @property type The type of room in the datacenter.
+ * @property objects The objects in the room.
+ */
+internal data class Room(val type: String, val objects: List<RoomObject>)
+
+/**
+ * An object in a [Room].
+ *
+ * @property type The type of the room object.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
+@JsonSubTypes(value = [JsonSubTypes.Type(name = "RACK", value = RoomObject.Rack::class)])
+internal sealed class RoomObject(val type: String) {
+ /**
+ * A rack in a server room.
+ *
+ * @property machines The machines in the rack.
+ */
+ internal data class Rack(val machines: List<Machine>) : RoomObject("RACK")
+}
+
+/**
+ * A machine in the setup that consists of the specified CPU's represented as
+ * integer identifiers and ethernet speed.
+ *
+ * @property cpus The CPUs in the machine represented as integer identifiers.
+ */
+internal data class Machine(val cpus: List<Int>)
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt
new file mode 100644
index 00000000..6f6aa616
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc18/Sc18EnvironmentReader.kt
@@ -0,0 +1,110 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.environment.sc18
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.core.MemoryUnit
+import com.atlarge.opendc.compute.core.ProcessingNode
+import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.compute.metal.service.SimpleProvisioningService
+import com.atlarge.opendc.core.Environment
+import com.atlarge.opendc.core.Platform
+import com.atlarge.opendc.core.Zone
+import com.atlarge.opendc.core.services.ServiceRegistry
+import com.atlarge.opendc.format.environment.EnvironmentReader
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.fasterxml.jackson.module.kotlin.readValue
+import java.io.InputStream
+import java.util.UUID
+
+/**
+ * A parser for the JSON experiment setup files used for the SC18 paper: "A Reference Architecture for Datacenter
+ * Schedulers".
+ *
+ * @param input The input stream to read from.
+ * @param mapper The Jackson object mapper to use.
+ */
+class Sc18EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonObjectMapper()) : EnvironmentReader {
+ /**
+ * The environment that was read from the file.
+ */
+ private val setup: Setup = mapper.readValue(input)
+
+ override suspend fun construct(dom: Domain): Environment {
+ val provisioningDomain = dom.newDomain("provisioner")
+
+ var counter = 0
+ val nodes = setup.rooms.flatMap { room ->
+ room.objects.flatMap { roomObject ->
+ when (roomObject) {
+ is RoomObject.Rack -> {
+ roomObject.machines.map { machine ->
+ val cores = machine.cpus.flatMap { id ->
+ when (id) {
+ 1 -> {
+ val node = ProcessingNode("Intel", "Core(TM) i7-6920HQ", "amd64", 4)
+ List(node.coreCount) { ProcessingUnit(node, it, 4100.0) }
+ }
+ 2 -> {
+ val node = ProcessingNode("Intel", "Core(TM) i7-6920HQ", "amd64", 2)
+ List(node.coreCount) { ProcessingUnit(node, it, 3500.0) }
+ }
+ else -> throw IllegalArgumentException("The cpu id $id is not recognized")
+ }
+ }
+ SimpleBareMetalDriver(
+ dom.newDomain("node-$counter"),
+ UUID.randomUUID(),
+ "node-${counter++}",
+ emptyMap(),
+ cores,
+ listOf(MemoryUnit("", "", 2300.0, 16000))
+ )
+ }
+ }
+ }
+ }
+ }
+
+ val provisioningService = SimpleProvisioningService(provisioningDomain)
+ for (node in nodes) {
+ provisioningService.create(node)
+ }
+
+ val serviceRegistry = ServiceRegistry().put(ProvisioningService, provisioningService)
+ val platform = Platform(
+ UUID.randomUUID(), "sc18-platform", listOf(
+ Zone(UUID.randomUUID(), "zone", serviceRegistry)
+ )
+ )
+
+ return Environment(setup.name, null, listOf(platform))
+ }
+
+ override fun close() {}
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Model.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Model.kt
new file mode 100644
index 00000000..3ef1d9eb
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Model.kt
@@ -0,0 +1,45 @@
+package com.atlarge.opendc.format.environment.sc20
+
+import com.fasterxml.jackson.annotation.JsonSubTypes
+import com.fasterxml.jackson.annotation.JsonTypeInfo
+
+/**
+ * A datacenter setup.
+ *
+ * @property name The name of the setup.
+ * @property rooms The rooms in the datacenter.
+ */
+internal data class Setup(val name: String, val rooms: List<Room>)
+
+/**
+ * A room in a datacenter.
+ *
+ * @property type The type of room in the datacenter.
+ * @property objects The objects in the room.
+ */
+internal data class Room(val type: String, val objects: List<RoomObject>)
+
+/**
+ * An object in a [Room].
+ *
+ * @property type The type of the room object.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
+@JsonSubTypes(value = [JsonSubTypes.Type(name = "RACK", value = RoomObject.Rack::class)])
+internal sealed class RoomObject(val type: String) {
+ /**
+ * A rack in a server room.
+ *
+ * @property machines The machines in the rack.
+ */
+ internal data class Rack(val machines: List<Machine>) : RoomObject("RACK")
+}
+
+/**
+ * A machine in the setup that consists of the specified CPU's represented as
+ * integer identifiers and ethernet speed.
+ *
+ * @property cpus The CPUs in the machine represented as integer identifiers.
+ * @property memories The memories in the machine represented as integer identifiers.
+ */
+internal data class Machine(val cpus: List<Int>, val memories: List<Int>)
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt
new file mode 100644
index 00000000..e34ee2dc
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt
@@ -0,0 +1,143 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.environment.sc20
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.opendc.compute.core.MemoryUnit
+import com.atlarge.opendc.compute.core.ProcessingNode
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.metal.NODE_CLUSTER
+import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
+import com.atlarge.opendc.compute.metal.power.LinearLoadPowerModel
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.compute.metal.service.SimpleProvisioningService
+import com.atlarge.opendc.core.Environment
+import com.atlarge.opendc.core.Platform
+import com.atlarge.opendc.core.Zone
+import com.atlarge.opendc.core.services.ServiceRegistry
+import com.atlarge.opendc.format.environment.EnvironmentReader
+import java.io.File
+import java.io.FileInputStream
+import java.io.InputStream
+import java.util.Random
+import java.util.UUID
+
+/**
+ * A [EnvironmentReader] for the internal environment format.
+ *
+ * @param environmentFile The file describing the physical cluster.
+ */
+class Sc20ClusterEnvironmentReader(
+ private val input: InputStream
+) : EnvironmentReader {
+
+ constructor(file: File) : this(FileInputStream(file))
+
+ @Suppress("BlockingMethodInNonBlockingContext")
+ override suspend fun construct(dom: Domain): Environment {
+ var clusterIdCol = 0
+ var speedCol = 0
+ var numberOfHostsCol = 0
+ var memoryPerHostCol = 0
+ var coresPerHostCol = 0
+
+ var clusterIdx: Int = 0
+ var clusterId: String
+ var speed: Double
+ var numberOfHosts: Int
+ var memoryPerHost: Long
+ var coresPerHost: Int
+
+ val nodes = mutableListOf<SimpleBareMetalDriver>()
+ val random = Random(0)
+
+ input.bufferedReader().use { reader ->
+ reader.lineSequence()
+ .filter { line ->
+ // Ignore comments in the file
+ !line.startsWith("#") && line.isNotBlank()
+ }
+ .forEachIndexed { idx, line ->
+ val values = line.split(";")
+
+ if (idx == 0) {
+ val header = values.mapIndexed { col, name -> Pair(name.trim(), col) }.toMap()
+ clusterIdCol = header["ClusterID"]!!
+ speedCol = header["Speed"]!!
+ numberOfHostsCol = header["numberOfHosts"]!!
+ memoryPerHostCol = header["memoryCapacityPerHost"]!!
+ coresPerHostCol = header["coreCountPerHost"]!!
+ return@forEachIndexed
+ }
+
+ clusterIdx++
+ clusterId = values[clusterIdCol].trim()
+ speed = values[speedCol].trim().toDouble() * 1000.0
+ numberOfHosts = values[numberOfHostsCol].trim().toInt()
+ memoryPerHost = values[memoryPerHostCol].trim().toLong() * 1000L
+ coresPerHost = values[coresPerHostCol].trim().toInt()
+
+ val unknownProcessingNode = ProcessingNode("unknown", "unknown", "unknown", coresPerHost)
+ val unknownMemoryUnit = MemoryUnit("unknown", "unknown", -1.0, memoryPerHost)
+
+ repeat(numberOfHosts) {
+ nodes.add(
+ SimpleBareMetalDriver(
+ dom.newDomain("node-$clusterId-$it"),
+ UUID(random.nextLong(), random.nextLong()),
+ "node-$clusterId-$it",
+ mapOf(NODE_CLUSTER to clusterId),
+ List(coresPerHost) { coreId ->
+ ProcessingUnit(unknownProcessingNode, coreId, speed)
+ },
+ // For now we assume a simple linear load model with an idle draw of ~200W and a maximum
+ // power draw of 350W.
+ // Source: https://stackoverflow.com/questions/6128960
+ listOf(unknownMemoryUnit),
+ LinearLoadPowerModel(200.0, 350.0)
+ )
+ )
+ }
+ }
+ }
+
+ val provisioningService = SimpleProvisioningService(dom.newDomain("provisioner"))
+ for (node in nodes) {
+ provisioningService.create(node)
+ }
+
+ val serviceRegistry = ServiceRegistry().put(ProvisioningService, provisioningService)
+
+ val platform = Platform(
+ UUID.randomUUID(), "sc20-platform", listOf(
+ Zone(UUID.randomUUID(), "zone", serviceRegistry)
+ )
+ )
+
+ return Environment("SC20 Environment", null, listOf(platform))
+ }
+
+ override fun close() {}
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt
new file mode 100644
index 00000000..4b5d6fb7
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20EnvironmentReader.kt
@@ -0,0 +1,119 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.environment.sc20
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.opendc.compute.core.MemoryUnit
+import com.atlarge.opendc.compute.core.ProcessingNode
+import com.atlarge.opendc.compute.core.ProcessingUnit
+import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
+import com.atlarge.opendc.compute.metal.power.LinearLoadPowerModel
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.compute.metal.service.SimpleProvisioningService
+import com.atlarge.opendc.core.Environment
+import com.atlarge.opendc.core.Platform
+import com.atlarge.opendc.core.Zone
+import com.atlarge.opendc.core.services.ServiceRegistry
+import com.atlarge.opendc.format.environment.EnvironmentReader
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.fasterxml.jackson.module.kotlin.readValue
+import java.io.InputStream
+import java.util.UUID
+
+/**
+ * A parser for the JSON experiment setup files used for the SC20 paper.
+ *
+ * @param input The input stream to read from.
+ * @param mapper The Jackson object mapper to use.
+ */
+class Sc20EnvironmentReader(input: InputStream, mapper: ObjectMapper = jacksonObjectMapper()) : EnvironmentReader {
+ /**
+ * The environment that was read from the file.
+ */
+ private val setup: Setup = mapper.readValue(input)
+
+ override suspend fun construct(dom: Domain): Environment {
+ var counter = 0
+ val nodes = setup.rooms.flatMap { room ->
+ room.objects.flatMap { roomObject ->
+ when (roomObject) {
+ is RoomObject.Rack -> {
+ roomObject.machines.map { machine ->
+ val cores = machine.cpus.flatMap { id ->
+ when (id) {
+ 1 -> {
+ val node = ProcessingNode("Intel", "Core(TM) i7-6920HQ", "amd64", 4)
+ List(node.coreCount) { ProcessingUnit(node, it, 4100.0) }
+ }
+ 2 -> {
+ val node = ProcessingNode("Intel", "Core(TM) i7-6920HQ", "amd64", 2)
+ List(node.coreCount) { ProcessingUnit(node, it, 3500.0) }
+ }
+ else -> throw IllegalArgumentException("The cpu id $id is not recognized")
+ }
+ }
+ val memories = machine.memories.map { id ->
+ when (id) {
+ 1 -> MemoryUnit("Samsung", "PC DRAM K4A4G045WD", 1600.0, 4_000L)
+ else -> throw IllegalArgumentException("The cpu id $id is not recognized")
+ }
+ }
+ SimpleBareMetalDriver(
+ dom.newDomain("node-$counter"),
+ UUID.randomUUID(),
+ "node-${counter++}",
+ emptyMap(),
+ cores,
+ // For now we assume a simple linear load model with an idle draw of ~200W and a maximum
+ // power draw of 350W.
+ // Source: https://stackoverflow.com/questions/6128960
+ memories,
+ LinearLoadPowerModel(200.0, 350.0)
+ )
+ }
+ }
+ }
+ }
+ }
+
+ val provisioningService = SimpleProvisioningService(dom.newDomain("provisioner"))
+ for (node in nodes) {
+ provisioningService.create(node)
+ }
+
+ val serviceRegistry = ServiceRegistry().put(ProvisioningService, provisioningService)
+
+ val platform = Platform(
+ UUID.randomUUID(), "sc20-platform", listOf(
+ Zone(UUID.randomUUID(), "zone", serviceRegistry)
+ )
+ )
+
+ return Environment(setup.name, null, listOf(platform))
+ }
+
+ override fun close() {}
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt
new file mode 100644
index 00000000..407bc0b4
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/PerformanceInterferenceModelReader.kt
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace
+
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import java.io.Closeable
+import kotlin.random.Random
+
+/**
+ * An interface for reading descriptions of performance interference models into memory.
+ */
+interface PerformanceInterferenceModelReader : Closeable {
+ /**
+ * Construct a [PerformanceInterferenceModel].
+ */
+ fun construct(random: Random): Map<String, PerformanceInterferenceModel>
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceEntry.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceEntry.kt
new file mode 100644
index 00000000..d4ad33f7
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceEntry.kt
@@ -0,0 +1,54 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace
+
+import com.atlarge.opendc.core.workload.Workload
+
+/**
+ * An entry in a workload trace.
+ *
+ * @param T The shape of the workload in this entry.
+ */
+interface TraceEntry<T : Workload> {
+ /**
+ * The time of submission of the workload.
+ */
+ val submissionTime: Long
+
+ /**
+ * The workload in this trace entry.
+ */
+ val workload: T
+
+ /**
+ * Extract the submission time from this entry.
+ */
+ operator fun component1() = submissionTime
+
+ /**
+ * Extract the workload from this entry.
+ */
+ operator fun component2() = workload
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceReader.kt
new file mode 100644
index 00000000..6d29cdb4
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceReader.kt
@@ -0,0 +1,37 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace
+
+import com.atlarge.opendc.core.workload.Workload
+import java.io.Closeable
+
+/**
+ * An interface for reading [Workload]s into memory.
+ *
+ * This interface must guarantee that the entries are delivered in order of submission time.
+ *
+ * @param T The shape of the workloads supported by this reader.
+ */
+interface TraceReader<T : Workload> : Iterator<TraceEntry<T>>, Closeable
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceWriter.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceWriter.kt
new file mode 100644
index 00000000..94ee6f31
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/TraceWriter.kt
@@ -0,0 +1,45 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace
+
+import com.atlarge.opendc.core.workload.Workload
+import java.io.Closeable
+
+/**
+ * An interface for persisting workload traces (e.g. to disk).
+ *
+ * @param T The type of [Workload] supported by this writer.
+ */
+interface TraceWriter<T : Workload> : Closeable {
+ /**
+ * Write an entry to the trace.
+ *
+ * Entries must be written in order of submission time. Failing to do so results in a [IllegalArgumentException].
+ *
+ * @param submissionTime The time of submission of the workload.
+ * @param workload The workload to write to the trace.
+ */
+ fun write(submissionTime: Long, workload: T)
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/VmPlacementReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/VmPlacementReader.kt
new file mode 100644
index 00000000..7caebb76
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/VmPlacementReader.kt
@@ -0,0 +1,37 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace
+
+import java.io.Closeable
+
+/**
+ * An interface for reading VM placement data into memory.
+ */
+interface VmPlacementReader : Closeable {
+ /**
+ * Construct a map of VMs to clusters.
+ */
+ fun construct(): Map<String, String>
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
new file mode 100644
index 00000000..2a8fefeb
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/bitbrains/BitbrainsTraceReader.kt
@@ -0,0 +1,173 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace.bitbrains
+
+import com.atlarge.opendc.compute.core.image.FlopsHistoryFragment
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.compute.core.workload.IMAGE_PERF_INTERFERENCE_MODEL
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import com.atlarge.opendc.format.trace.TraceEntry
+import com.atlarge.opendc.format.trace.TraceReader
+import java.io.BufferedReader
+import java.io.File
+import java.io.FileReader
+import java.util.UUID
+
+/**
+ * A [TraceReader] for the public VM workload trace format.
+ *
+ * @param traceDirectory The directory of the traces.
+ * @param performanceInterferenceModel The performance model covering the workload in the VM trace.
+ */
+class BitbrainsTraceReader(
+ traceDirectory: File,
+ performanceInterferenceModel: PerformanceInterferenceModel
+) : TraceReader<VmWorkload> {
+ /**
+ * The internal iterator to use for this reader.
+ */
+ private val iterator: Iterator<TraceEntry<VmWorkload>>
+
+ /**
+ * Initialize the reader.
+ */
+ init {
+ val entries = mutableMapOf<Long, TraceEntry<VmWorkload>>()
+
+ var timestampCol = 0
+ var coreCol = 0
+ var cpuUsageCol = 0
+ var provisionedMemoryCol = 0
+ val traceInterval = 5 * 60 * 1000L
+
+ traceDirectory.walk()
+ .filterNot { it.isDirectory }
+ .forEach { vmFile ->
+ println(vmFile)
+ val flopsHistory = mutableListOf<FlopsHistoryFragment>()
+ var vmId = -1L
+ var cores = -1
+ var requiredMemory = -1L
+
+ BufferedReader(FileReader(vmFile)).use { reader ->
+ reader.lineSequence()
+ .filter { line ->
+ // Ignore comments in the trace
+ !line.startsWith("#") && line.isNotBlank()
+ }
+ .forEachIndexed { idx, line ->
+ val values = line.split(";\t")
+
+ // Parse GWF header
+ if (idx == 0) {
+ val header = values.mapIndexed { col, name -> Pair(name.trim(), col) }.toMap()
+ timestampCol = header["Timestamp [ms]"]!!
+ coreCol = header["CPU cores"]!!
+ cpuUsageCol = header["CPU usage [MHZ]"]!!
+ provisionedMemoryCol = header["Memory capacity provisioned [KB]"]!!
+ return@forEachIndexed
+ }
+
+ vmId = vmFile.nameWithoutExtension.trim().toLong()
+ val timestamp = values[timestampCol].trim().toLong() - 5 * 60
+ cores = values[coreCol].trim().toInt()
+ val cpuUsage = values[cpuUsageCol].trim().toDouble() // MHz
+ requiredMemory = (values[provisionedMemoryCol].trim().toDouble() / 1000).toLong()
+
+ val flops: Long = (cpuUsage * 5 * 60 * cores).toLong()
+
+ if (flopsHistory.isEmpty()) {
+ flopsHistory.add(FlopsHistoryFragment(timestamp, flops, traceInterval, cpuUsage, cores))
+ } else {
+ if (flopsHistory.last().flops != flops) {
+ flopsHistory.add(FlopsHistoryFragment(timestamp, flops, traceInterval, cpuUsage, cores))
+ } else {
+ val oldFragment = flopsHistory.removeAt(flopsHistory.size - 1)
+ flopsHistory.add(
+ FlopsHistoryFragment(
+ oldFragment.tick,
+ oldFragment.flops + flops,
+ oldFragment.duration + traceInterval,
+ cpuUsage,
+ cores
+ )
+ )
+ }
+ }
+ }
+ }
+
+ val uuid = UUID(0L, vmId)
+
+ val relevantPerformanceInterferenceModelItems =
+ PerformanceInterferenceModel(
+ performanceInterferenceModel.items.filter { it.workloadNames.contains(vmId.toString()) }.toSortedSet()
+ )
+
+ val vmWorkload = VmWorkload(
+ uuid, "VM Workload $vmId", UnnamedUser,
+ VmImage(
+ uuid,
+ vmId.toString(),
+ mapOf(IMAGE_PERF_INTERFERENCE_MODEL to relevantPerformanceInterferenceModelItems),
+ flopsHistory.asSequence(),
+ cores,
+ requiredMemory
+ )
+ )
+ entries[vmId] = TraceEntryImpl(
+ flopsHistory.firstOrNull()?.tick ?: -1,
+ vmWorkload
+ )
+ }
+
+ // Create the entry iterator
+ iterator = entries.values.sortedBy { it.submissionTime }.iterator()
+ }
+
+ override fun hasNext(): Boolean = iterator.hasNext()
+
+ override fun next(): TraceEntry<VmWorkload> = iterator.next()
+
+ override fun close() {}
+
+ /**
+ * An unnamed user.
+ */
+ private object UnnamedUser : User {
+ override val name: String = "<unnamed>"
+ override val uid: UUID = UUID.randomUUID()
+ }
+
+ /**
+ * An entry in the trace.
+ */
+ private data class TraceEntryImpl(
+ override var submissionTime: Long,
+ override val workload: VmWorkload
+ ) : TraceEntry<VmWorkload>
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt
new file mode 100644
index 00000000..3a4e2e89
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/gwf/GwfTraceReader.kt
@@ -0,0 +1,169 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace.gwf
+
+import com.atlarge.opendc.compute.core.image.FlopsApplicationImage
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.format.trace.TraceEntry
+import com.atlarge.opendc.format.trace.TraceReader
+import com.atlarge.opendc.workflows.workload.Job
+import com.atlarge.opendc.workflows.workload.Task
+import com.atlarge.opendc.workflows.workload.WORKFLOW_TASK_DEADLINE
+import java.io.BufferedReader
+import java.io.File
+import java.io.InputStream
+import java.util.UUID
+import kotlin.math.max
+import kotlin.math.min
+
+/**
+ * A [TraceReader] for the Grid Workload Format. See the Grid Workloads Archive (http://gwa.ewi.tudelft.nl/) for more
+ * information about the format.
+ *
+ * Be aware that in the Grid Workload Format, workflows are not required to be ordered by submission time and therefore
+ * this reader needs to read the whole trace into memory before an entry can be read. Consider converting the trace to a
+ * different format for better performance.
+ *
+ * @param reader The buffered reader to read the trace with.
+ */
+class GwfTraceReader(reader: BufferedReader) : TraceReader<Job> {
+ /**
+ * The internal iterator to use for this reader.
+ */
+ private val iterator: Iterator<TraceEntry<Job>>
+
+ /**
+ * Create a [GwfTraceReader] instance from the specified [File].
+ *
+ * @param file The file to read from.
+ */
+ constructor(file: File) : this(file.bufferedReader())
+
+ /**
+ * Create a [GwfTraceReader] instance from the specified [InputStream].
+ *
+ * @param input The input stream to read from.
+ */
+ constructor(input: InputStream) : this(input.bufferedReader())
+
+ /**
+ * Initialize the reader.
+ */
+ init {
+ val entries = mutableMapOf<Long, TraceEntryImpl>()
+ val tasks = mutableMapOf<Long, Task>()
+ val taskDependencies = mutableMapOf<Task, List<Long>>()
+
+ var workflowIdCol = 0
+ var taskIdCol = 0
+ var submitTimeCol = 0
+ var runtimeCol = 0
+ var coreCol = 0
+ var dependencyCol = 0
+
+ try {
+ reader.lineSequence()
+ .filter { line ->
+ // Ignore comments in the trace
+ !line.startsWith("#") && line.isNotBlank()
+ }
+ .forEachIndexed { idx, line ->
+ val values = line.split(",")
+
+ // Parse GWF header
+ if (idx == 0) {
+ val header = values.mapIndexed { col, name -> Pair(name.trim(), col) }.toMap()
+ workflowIdCol = header["WorkflowID"]!!
+ taskIdCol = header["JobID"]!!
+ submitTimeCol = header["SubmitTime"]!!
+ runtimeCol = header["RunTime"]!!
+ coreCol = header["NProcs"]!!
+ dependencyCol = header["Dependencies"]!!
+ return@forEachIndexed
+ }
+
+ val workflowId = values[workflowIdCol].trim().toLong()
+ val taskId = values[taskIdCol].trim().toLong()
+ val submitTime = values[submitTimeCol].trim().toLong()
+ val runtime = max(0, values[runtimeCol].trim().toLong())
+ val cores = values[coreCol].trim().toInt()
+ val dependencies = values[dependencyCol].split(" ")
+ .filter { it.isNotEmpty() }
+ .map { it.trim().toLong() }
+
+ val flops: Long = 4000 * runtime * cores
+
+ val entry = entries.getOrPut(workflowId) {
+ TraceEntryImpl(submitTime, Job(UUID(0L, taskId), "<unnamed>", UnnamedUser, HashSet()))
+ }
+ val workflow = entry.workload
+ val task = Task(
+ UUID(0L, taskId), "<unnamed>",
+ FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), flops, cores),
+ HashSet(),
+ mapOf(WORKFLOW_TASK_DEADLINE to runtime)
+ )
+ entry.submissionTime = min(entry.submissionTime, submitTime)
+ (workflow.tasks as MutableSet<Task>).add(task)
+ tasks[taskId] = task
+ taskDependencies[task] = dependencies
+ }
+ } finally {
+ reader.close()
+ }
+
+ // Fix dependencies and dependents for all tasks
+ taskDependencies.forEach { (task, dependencies) ->
+ (task.dependencies as MutableSet<Task>).addAll(dependencies.map { taskId ->
+ tasks[taskId] ?: throw IllegalArgumentException("Dependency task with id $taskId not found")
+ })
+ }
+
+ // Create the entry iterator
+ iterator = entries.values.sortedBy { it.submissionTime }.iterator()
+ }
+
+ override fun hasNext(): Boolean = iterator.hasNext()
+
+ override fun next(): TraceEntry<Job> = iterator.next()
+
+ override fun close() {}
+
+ /**
+ * An unnamed user.
+ */
+ private object UnnamedUser : User {
+ override val name: String = "<unnamed>"
+ override val uid: UUID = UUID.randomUUID()
+ }
+
+ /**
+ * An entry in the trace.
+ */
+ private data class TraceEntryImpl(
+ override var submissionTime: Long,
+ override val workload: Job
+ ) : TraceEntry<Job>
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/PerformanceInterferenceEntry.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/PerformanceInterferenceEntry.kt
new file mode 100644
index 00000000..ade47e1b
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/PerformanceInterferenceEntry.kt
@@ -0,0 +1,7 @@
+package com.atlarge.opendc.format.trace.sc20
+
+internal data class PerformanceInterferenceEntry(
+ val vms: List<String>,
+ val minServerLoad: Double,
+ val performanceScore: Double
+)
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt
new file mode 100644
index 00000000..0e8e1fd2
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20PerformanceInterferenceReader.kt
@@ -0,0 +1,68 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace.sc20
+
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModelItem
+import com.atlarge.opendc.format.trace.PerformanceInterferenceModelReader
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.fasterxml.jackson.module.kotlin.readValue
+import java.io.InputStream
+import java.util.TreeSet
+import kotlin.random.Random
+
+/**
+ * A parser for the JSON performance interference setup files used for the SC20 paper.
+ *
+ * @param input The input stream to read from.
+ * @param mapper The Jackson object mapper to use.
+ */
+class Sc20PerformanceInterferenceReader(input: InputStream, mapper: ObjectMapper = jacksonObjectMapper()) :
+ PerformanceInterferenceModelReader {
+ /**
+ * The computed value from the file.
+ */
+ private val items: Map<String, TreeSet<PerformanceInterferenceModelItem>>
+
+ init {
+ val entries: List<PerformanceInterferenceEntry> = mapper.readValue(input)
+ val res = mutableMapOf<String, TreeSet<PerformanceInterferenceModelItem>>()
+ for (entry in entries) {
+ val item = PerformanceInterferenceModelItem(TreeSet(entry.vms), entry.minServerLoad, entry.performanceScore)
+ for (workload in entry.vms) {
+ res.computeIfAbsent(workload) { TreeSet() }.add(item)
+ }
+ }
+
+ items = res
+ }
+
+ override fun construct(random: Random): Map<String, PerformanceInterferenceModel> {
+ return items.mapValues { PerformanceInterferenceModel(it.value, Random(random.nextInt())) }
+ }
+
+ override fun close() {}
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt
new file mode 100644
index 00000000..076274d5
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20TraceReader.kt
@@ -0,0 +1,208 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace.sc20
+
+import com.atlarge.opendc.compute.core.image.FlopsHistoryFragment
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.compute.core.workload.IMAGE_PERF_INTERFERENCE_MODEL
+import com.atlarge.opendc.compute.core.workload.PerformanceInterferenceModel
+import com.atlarge.opendc.format.trace.TraceEntry
+import com.atlarge.opendc.format.trace.TraceReader
+import java.io.BufferedReader
+import java.io.File
+import java.io.FileReader
+import java.util.UUID
+import kotlin.math.max
+import kotlin.math.min
+import kotlin.random.Random
+
+/**
+ * A [TraceReader] for the internal VM workload trace format.
+ *
+ * @param traceDirectory The directory of the traces.
+ * @param performanceInterferenceModel The performance model covering the workload in the VM trace.
+ */
+class Sc20TraceReader(
+ traceDirectory: File,
+ performanceInterferenceModel: PerformanceInterferenceModel,
+ selectedVms: List<String>,
+ random: Random
+) : TraceReader<VmWorkload> {
+ /**
+ * The internal iterator to use for this reader.
+ */
+ private val iterator: Iterator<TraceEntry<VmWorkload>>
+
+ /**
+ * Initialize the reader.
+ */
+ init {
+ val entries = mutableMapOf<UUID, TraceEntry<VmWorkload>>()
+
+ val timestampCol = 0
+ val cpuUsageCol = 1
+ val coreCol = 12
+ val vmIdCol = 19
+ val provisionedMemoryCol = 20
+ val traceInterval = 5 * 60 * 1000L
+
+ val vms = if (selectedVms.isEmpty()) {
+ traceDirectory.walk()
+ .filterNot { it.isDirectory }
+ .filter { it.extension == "csv" || it.extension == "txt" }
+ .toList()
+ } else {
+ selectedVms.map {
+ File(traceDirectory, it)
+ }
+ }
+
+ vms
+ .forEachIndexed { idx, vmFile ->
+ println(vmFile)
+
+ var vmId = ""
+ var maxCores = -1
+ var requiredMemory = -1L
+ var timestamp = -1L
+ var cores = -1
+ var minTime = Long.MAX_VALUE
+
+ BufferedReader(FileReader(vmFile)).use { reader ->
+ reader.lineSequence()
+ .filter { line ->
+ // Ignore comments in the trace
+ !line.startsWith("#") && line.isNotBlank()
+ }
+ .forEach { line ->
+ val values = line.split(" ")
+
+ vmId = vmFile.name
+ timestamp = (values[timestampCol].trim().toLong() - 5 * 60) * 1000L
+ cores = values[coreCol].trim().toInt()
+ requiredMemory = max(requiredMemory, values[provisionedMemoryCol].trim().toLong())
+ maxCores = max(maxCores, cores)
+ minTime = min(minTime, timestamp)
+ }
+ }
+
+ val flopsFragments = sequence {
+ var last: FlopsHistoryFragment? = null
+
+ BufferedReader(FileReader(vmFile)).use { reader ->
+ reader.lineSequence()
+ .chunked(128)
+ .forEach { lines ->
+ for (line in lines) {
+ // Ignore comments in the trace
+ if (line.startsWith("#") || line.isBlank()) {
+ continue
+ }
+
+ val values = line.split(" ")
+ val cpuUsage = values[cpuUsageCol].trim().toDouble() // MHz
+ requiredMemory = max(requiredMemory, values[provisionedMemoryCol].trim().toLong())
+ maxCores = max(maxCores, cores)
+
+ val flops: Long = (cpuUsage * 5 * 60).toLong()
+
+ last = if (last != null && last!!.flops == 0L && flops == 0L) {
+ val oldFragment = last!!
+ FlopsHistoryFragment(
+ oldFragment.tick,
+ oldFragment.flops + flops,
+ oldFragment.duration + traceInterval,
+ cpuUsage,
+ cores
+ )
+ } else {
+ val fragment =
+ FlopsHistoryFragment(timestamp, flops, traceInterval, cpuUsage, cores)
+ if (last != null) {
+ yield(last!!)
+ }
+ fragment
+ }
+ }
+ }
+
+ if (last != null) {
+ yield(last!!)
+ }
+ }
+ }
+
+ val uuid = UUID(0, idx.toLong())
+
+ val relevantPerformanceInterferenceModelItems =
+ PerformanceInterferenceModel(
+ performanceInterferenceModel.items.filter { it.workloadNames.contains(vmId) }.toSortedSet(),
+ Random(random.nextInt())
+ )
+ val vmWorkload = VmWorkload(
+ uuid, "VM Workload $vmId", UnnamedUser,
+ VmImage(
+ uuid,
+ vmId,
+ mapOf(IMAGE_PERF_INTERFERENCE_MODEL to relevantPerformanceInterferenceModelItems),
+ flopsFragments.asSequence(),
+ maxCores,
+ requiredMemory
+ )
+ )
+ entries[uuid] = TraceEntryImpl(
+ minTime,
+ vmWorkload
+ )
+ }
+
+ // Create the entry iterator
+ iterator = entries.values.sortedBy { it.submissionTime }.iterator()
+ }
+
+ override fun hasNext(): Boolean = iterator.hasNext()
+
+ override fun next(): TraceEntry<VmWorkload> = iterator.next()
+
+ override fun close() {}
+
+ /**
+ * An unnamed user.
+ */
+ private object UnnamedUser : User {
+ override val name: String = "<unnamed>"
+ override val uid: UUID = UUID.randomUUID()
+ }
+
+ /**
+ * An entry in the trace.
+ */
+ private data class TraceEntryImpl(
+ override var submissionTime: Long,
+ override val workload: VmWorkload
+ ) : TraceEntry<VmWorkload>
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20VmPlacementReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20VmPlacementReader.kt
new file mode 100644
index 00000000..5295ae03
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/sc20/Sc20VmPlacementReader.kt
@@ -0,0 +1,53 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace.sc20
+
+import com.atlarge.opendc.format.trace.VmPlacementReader
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.fasterxml.jackson.module.kotlin.readValue
+import java.io.InputStream
+
+/**
+ * A parser for the JSON VM placement data files used for the SC20 paper.
+ *
+ * @param input The input stream to read from.
+ * @param mapper The Jackson object mapper to use.
+ */
+class Sc20VmPlacementReader(input: InputStream, mapper: ObjectMapper = jacksonObjectMapper()) :
+ VmPlacementReader {
+ /**
+ * The environment that was read from the file.
+ */
+ private val placements = mapper.readValue<Map<String, String>>(input)
+
+ override fun construct(): Map<String, String> {
+ return placements
+ .mapKeys { "vm__workload__${it.key}.txt" }
+ .mapValues { it.value.split("/")[1] } // Clusters have format XX0 / X00
+ }
+
+ override fun close() {}
+}
diff --git a/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReader.kt b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReader.kt
new file mode 100644
index 00000000..2f6ce238
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReader.kt
@@ -0,0 +1,196 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.format.trace.swf
+
+import com.atlarge.opendc.compute.core.image.FlopsHistoryFragment
+import com.atlarge.opendc.compute.core.image.VmImage
+import com.atlarge.opendc.compute.core.workload.VmWorkload
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.format.trace.TraceEntry
+import com.atlarge.opendc.format.trace.TraceReader
+import java.io.BufferedReader
+import java.io.File
+import java.io.FileReader
+import java.util.UUID
+
+/**
+ * A [TraceReader] for reading SWF traces into VM-modeled workloads.
+ *
+ * The standard is defined by the PWA, see here: https://www.cse.huji.ac.il/labs/parallel/workload/swf.html
+ *
+ * @param file The trace file.
+ */
+class SwfTraceReader(
+ file: File,
+ maxNumCores: Int = -1
+) : TraceReader<VmWorkload> {
+ /**
+ * The internal iterator to use for this reader.
+ */
+ private val iterator: Iterator<TraceEntry<VmWorkload>>
+
+ /**
+ * Initialize the reader.
+ */
+ init {
+ val entries = mutableMapOf<Long, TraceEntry<VmWorkload>>()
+
+ val jobNumberCol = 0
+ val submitTimeCol = 1 // seconds (begin of trace is 0)
+ val waitTimeCol = 2 // seconds
+ val runTimeCol = 3 // seconds
+ val numAllocatedCoresCol = 4 // We assume that single-core processors were used at the time
+ val requestedMemoryCol = 9 // KB per processor/core (-1 if not specified)
+
+ val sliceDuration = 5 * 60L
+
+ var jobNumber = -1L
+ var submitTime = -1L
+ var waitTime = -1L
+ var runTime = -1L
+ var cores = -1
+ var memory = -1L
+ var slicedWaitTime = -1L
+ var flopsPerSecond = -1L
+ var flopsPartialSlice = -1L
+ var flopsFullSlice = -1L
+ var runtimePartialSliceRemainder = -1L
+
+ BufferedReader(FileReader(file)).use { reader ->
+ reader.lineSequence()
+ .filter { line ->
+ // Ignore comments in the trace
+ !line.startsWith(";") && line.isNotBlank()
+ }
+ .forEach { line ->
+ val values = line.trim().split("\\s+".toRegex())
+
+ jobNumber = values[jobNumberCol].trim().toLong()
+ submitTime = values[submitTimeCol].trim().toLong()
+ waitTime = values[waitTimeCol].trim().toLong()
+ runTime = values[runTimeCol].trim().toLong()
+ cores = values[numAllocatedCoresCol].trim().toInt()
+ memory = values[requestedMemoryCol].trim().toLong()
+
+ if (maxNumCores != -1 && cores > maxNumCores) {
+ println("Skipped a task due to processor count ($cores > $maxNumCores).")
+ return@forEach
+ }
+
+ if (memory == -1L) {
+ memory = 1000L * cores // assume 1GB of memory per processor if not specified
+ } else {
+ memory /= 1000 // convert KB to MB
+ }
+
+ val flopsHistory = mutableListOf<FlopsHistoryFragment>()
+
+ // Insert waiting time slices
+
+ // We ignore wait time remainders under one
+ slicedWaitTime = 0L
+ if (waitTime >= sliceDuration) {
+ for (tick in submitTime until (submitTime + waitTime - sliceDuration) step sliceDuration) {
+ flopsHistory.add(
+ FlopsHistoryFragment(
+ tick * 1000L, 0L, sliceDuration * 1000L, 0.0, cores
+ )
+ )
+ slicedWaitTime += sliceDuration
+ }
+ }
+
+ // Insert run time slices
+
+ flopsPerSecond = 4_000L * cores
+ runtimePartialSliceRemainder = runTime % sliceDuration
+ flopsPartialSlice = flopsPerSecond * runtimePartialSliceRemainder
+ flopsFullSlice = flopsPerSecond * runTime - flopsPartialSlice
+
+ for (tick in (submitTime + slicedWaitTime)
+ until (submitTime + slicedWaitTime + runTime - sliceDuration)
+ step sliceDuration) {
+ flopsHistory.add(
+ FlopsHistoryFragment(
+ tick * 1000L, flopsFullSlice / sliceDuration, sliceDuration * 1000L, 1.0, cores
+ )
+ )
+ }
+
+ if (runtimePartialSliceRemainder > 0) {
+ flopsHistory.add(
+ FlopsHistoryFragment(
+ submitTime + (slicedWaitTime + runTime - runtimePartialSliceRemainder),
+ flopsPartialSlice,
+ sliceDuration,
+ runtimePartialSliceRemainder / sliceDuration.toDouble(),
+ cores
+ )
+ )
+ }
+
+ val uuid = UUID(0L, jobNumber)
+ val vmWorkload = VmWorkload(
+ uuid, "SWF Workload $jobNumber", UnnamedUser,
+ VmImage(
+ uuid,
+ jobNumber.toString(),
+ emptyMap(),
+ flopsHistory.asSequence(),
+ cores,
+ memory
+ )
+ )
+
+ entries[jobNumber] = TraceEntryImpl(submitTime, vmWorkload)
+ }
+ }
+
+ // Create the entry iterator
+ iterator = entries.values.sortedBy { it.submissionTime }.iterator()
+ }
+
+ override fun hasNext(): Boolean = iterator.hasNext()
+
+ override fun next(): TraceEntry<VmWorkload> = iterator.next()
+
+ override fun close() {}
+
+ /**
+ * An unnamed user.
+ */
+ private object UnnamedUser : User {
+ override val name: String = "<unnamed>"
+ override val uid: UUID = UUID.randomUUID()
+ }
+
+ /**
+ * An entry in the trace.
+ */
+ private data class TraceEntryImpl(
+ override var submissionTime: Long,
+ override val workload: VmWorkload
+ ) : TraceEntry<VmWorkload>
+}
diff --git a/simulator/opendc/opendc-format/src/test/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReaderTest.kt b/simulator/opendc/opendc-format/src/test/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReaderTest.kt
new file mode 100644
index 00000000..41ad8aba
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/test/kotlin/com/atlarge/opendc/format/trace/swf/SwfTraceReaderTest.kt
@@ -0,0 +1,23 @@
+package com.atlarge.opendc.format.trace.swf
+
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Test
+import java.io.File
+
+class SwfTraceReaderTest {
+ @Test
+ internal fun testParseSwf() {
+ val reader = SwfTraceReader(File(SwfTraceReaderTest::class.java.getResource("/swf_trace.txt").toURI()))
+ var entry = reader.next()
+ assertEquals(0, entry.submissionTime)
+ // 1961 slices for waiting, 3 full and 1 partial running slices
+ assertEquals(1965, entry.workload.image.flopsHistory.toList().size)
+
+ entry = reader.next()
+ assertEquals(164472, entry.submissionTime)
+ // 1188 slices for waiting, 0 full and 1 partial running slices
+ assertEquals(1189, entry.workload.image.flopsHistory.toList().size)
+ assertEquals(5_100_000L, entry.workload.image.flopsHistory.toList().last().flops)
+ assertEquals(0.25, entry.workload.image.flopsHistory.toList().last().usage)
+ }
+}
diff --git a/simulator/opendc/opendc-format/src/test/resources/swf_trace.txt b/simulator/opendc/opendc-format/src/test/resources/swf_trace.txt
new file mode 100644
index 00000000..c3ecf890
--- /dev/null
+++ b/simulator/opendc/opendc-format/src/test/resources/swf_trace.txt
@@ -0,0 +1,6 @@
+; Excerpt from the PWA: CTC-SP2-1996-3.1-cln.swf
+ 1 0 588530 937 306 142.00 -1 -1 35100 -1 1 97 -1 307 3 -1 -1 -1
+ 2 164472 356587 75 17 2.00 -1 -1 300 -1 1 81 -1 195 3 -1 -1 -1
+ 3 197154 459987 35268 306 32792 -1 -1 35100 -1 0 97 -1 307 3 -1 -1 -1
+ 4 310448 50431 29493 64 28745 -1 -1 64800 -1 1 38 -1 38 1 -1 -1 -1
+ 5 310541 50766 29063 64 28191 -1 -1 64800 -1 1 38 -1 69 1 -1 -1 -1
diff --git a/simulator/opendc/opendc-workflows/build.gradle.kts b/simulator/opendc/opendc-workflows/build.gradle.kts
new file mode 100644
index 00000000..7a5e2067
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/build.gradle.kts
@@ -0,0 +1,42 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Workflow service for OpenDC"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-convention`
+}
+
+dependencies {
+ api(project(":opendc:opendc-core"))
+ api(project(":opendc:opendc-compute"))
+ implementation(kotlin("stdlib"))
+
+ testRuntimeOnly(project(":odcsim:odcsim-engine-omega"))
+ testImplementation(project(":opendc:opendc-format"))
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/JobState.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/JobState.kt
new file mode 100644
index 00000000..1cb2de97
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/JobState.kt
@@ -0,0 +1,41 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+import com.atlarge.opendc.workflows.workload.Job
+
+class JobState(val job: Job, val submittedAt: Long) {
+ /**
+ * A flag to indicate whether this job is finished.
+ */
+ val isFinished: Boolean
+ get() = tasks.isEmpty()
+
+ val tasks: MutableSet<TaskState> = mutableSetOf()
+
+ override fun equals(other: Any?): Boolean = other is JobState && other.job == job
+
+ override fun hashCode(): Int = job.hashCode()
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerListener.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerListener.kt
new file mode 100644
index 00000000..73c3e752
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerListener.kt
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+interface StageWorkflowSchedulerListener {
+ fun cycleStarted(scheduler: StageWorkflowService) {}
+ fun cycleFinished(scheduler: StageWorkflowService) {}
+
+ fun jobSubmitted(job: JobState) {}
+ fun jobStarted(job: JobState) {}
+ fun jobFinished(job: JobState) {}
+
+ fun taskReady(task: TaskState) {}
+ fun taskAssigned(task: TaskState) {}
+ fun taskStarted(task: TaskState) {}
+ fun taskFinished(task: TaskState) {}
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowService.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowService.kt
new file mode 100644
index 00000000..7a20363c
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowService.kt
@@ -0,0 +1,361 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+import com.atlarge.odcsim.Domain
+import com.atlarge.odcsim.flow.EventFlow
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.ServerEvent
+import com.atlarge.opendc.compute.core.ServerState
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.workflows.service.stage.job.JobAdmissionPolicy
+import com.atlarge.opendc.workflows.service.stage.job.JobOrderPolicy
+import com.atlarge.opendc.workflows.service.stage.resource.ResourceFilterPolicy
+import com.atlarge.opendc.workflows.service.stage.resource.ResourceSelectionPolicy
+import com.atlarge.opendc.workflows.service.stage.task.TaskEligibilityPolicy
+import com.atlarge.opendc.workflows.service.stage.task.TaskOrderPolicy
+import com.atlarge.opendc.workflows.workload.Job
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import java.util.PriorityQueue
+import java.util.Queue
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+
+/**
+ * A [WorkflowService] that distributes work through a multi-stage process based on the Reference Architecture for
+ * Datacenter Scheduling.
+ */
+class StageWorkflowService(
+ private val domain: Domain,
+ private val provisioningService: ProvisioningService,
+ mode: WorkflowSchedulerMode,
+ jobAdmissionPolicy: JobAdmissionPolicy,
+ jobOrderPolicy: JobOrderPolicy,
+ taskEligibilityPolicy: TaskEligibilityPolicy,
+ taskOrderPolicy: TaskOrderPolicy,
+ resourceFilterPolicy: ResourceFilterPolicy,
+ resourceSelectionPolicy: ResourceSelectionPolicy
+) : WorkflowService, CoroutineScope by domain {
+
+ /**
+ * The incoming jobs ready to be processed by the scheduler.
+ */
+ internal val incomingJobs: MutableSet<JobState> = linkedSetOf()
+
+ /**
+ * The incoming tasks ready to be processed by the scheduler.
+ */
+ internal val incomingTasks: MutableSet<TaskState> = linkedSetOf()
+
+ /**
+ * The job queue.
+ */
+ internal val jobQueue: Queue<JobState>
+
+ /**
+ * The task queue.
+ */
+ internal val taskQueue: Queue<TaskState>
+
+ /**
+ * The active jobs in the system.
+ */
+ internal val activeJobs: MutableSet<JobState> = mutableSetOf()
+
+ /**
+ * The active tasks in the system.
+ */
+ internal val activeTasks: MutableSet<TaskState> = mutableSetOf()
+
+ /**
+ * The running tasks by [Server].
+ */
+ internal val taskByServer = mutableMapOf<Server, TaskState>()
+
+ /**
+ * The nodes that are controlled by the service.
+ */
+ internal lateinit var nodes: List<Node>
+
+ /**
+ * The available nodes.
+ */
+ internal val available: MutableSet<Node> = mutableSetOf()
+
+ /**
+ * The maximum number of incoming jobs.
+ */
+ private val throttleLimit: Int = 20000
+
+ /**
+ * The load of the system.
+ */
+ internal val load: Double
+ get() = (available.size / nodes.size.toDouble())
+
+ /**
+ * The root listener of this scheduler.
+ */
+ private val rootListener = object : StageWorkflowSchedulerListener {
+ /**
+ * The listeners to delegate to.
+ */
+ val listeners = mutableSetOf<StageWorkflowSchedulerListener>()
+
+ override fun cycleStarted(scheduler: StageWorkflowService) {
+ listeners.forEach { it.cycleStarted(scheduler) }
+ }
+
+ override fun cycleFinished(scheduler: StageWorkflowService) {
+ listeners.forEach { it.cycleFinished(scheduler) }
+ }
+
+ override fun jobSubmitted(job: JobState) {
+ listeners.forEach { it.jobSubmitted(job) }
+ }
+
+ override fun jobStarted(job: JobState) {
+ listeners.forEach { it.jobStarted(job) }
+ }
+
+ override fun jobFinished(job: JobState) {
+ listeners.forEach { it.jobFinished(job) }
+ }
+
+ override fun taskReady(task: TaskState) {
+ listeners.forEach { it.taskReady(task) }
+ }
+
+ override fun taskAssigned(task: TaskState) {
+ listeners.forEach { it.taskAssigned(task) }
+ }
+
+ override fun taskStarted(task: TaskState) {
+ listeners.forEach { it.taskStarted(task) }
+ }
+
+ override fun taskFinished(task: TaskState) {
+ listeners.forEach { it.taskFinished(task) }
+ }
+ }
+
+ private val mode: WorkflowSchedulerMode.Logic
+ private val jobAdmissionPolicy: JobAdmissionPolicy.Logic
+ private val taskEligibilityPolicy: TaskEligibilityPolicy.Logic
+ private val resourceFilterPolicy: ResourceFilterPolicy.Logic
+ private val resourceSelectionPolicy: Comparator<Node>
+ private val eventFlow = EventFlow<WorkflowEvent>()
+
+ init {
+ domain.launch {
+ nodes = provisioningService.nodes().toList()
+ available.addAll(nodes)
+ }
+
+ this.mode = mode(this)
+ this.jobAdmissionPolicy = jobAdmissionPolicy(this)
+ this.jobQueue = PriorityQueue(100, jobOrderPolicy(this).thenBy { it.job.uid })
+ this.taskEligibilityPolicy = taskEligibilityPolicy(this)
+ this.taskQueue = PriorityQueue(1000, taskOrderPolicy(this).thenBy { it.task.uid })
+ this.resourceFilterPolicy = resourceFilterPolicy(this)
+ this.resourceSelectionPolicy = resourceSelectionPolicy(this)
+ }
+
+ override val events: Flow<WorkflowEvent> = eventFlow
+
+ override suspend fun submit(job: Job) = withContext(domain.coroutineContext) {
+ // J1 Incoming Jobs
+ val jobInstance = JobState(job, simulationContext.clock.millis())
+ val instances = job.tasks.associateWith {
+ TaskState(jobInstance, it)
+ }
+
+ for ((task, instance) in instances) {
+ instance.dependencies.addAll(task.dependencies.map { instances[it]!! })
+ task.dependencies.forEach {
+ instances[it]!!.dependents.add(instance)
+ }
+
+ // If the task has no dependency, it is a root task and can immediately be evaluated
+ if (instance.isRoot) {
+ instance.state = TaskStatus.READY
+ }
+ }
+
+ instances.values.toCollection(jobInstance.tasks)
+ incomingJobs += jobInstance
+ rootListener.jobSubmitted(jobInstance)
+
+ requestCycle()
+ }
+
+ /**
+ * Indicate to the scheduler that a scheduling cycle is needed.
+ */
+ private suspend fun requestCycle() = mode.requestCycle()
+
+ /**
+ * Perform a scheduling cycle immediately.
+ */
+ @OptIn(ExperimentalCoroutinesApi::class)
+ internal suspend fun schedule() {
+ // J2 Create list of eligible jobs
+ val iterator = incomingJobs.iterator()
+ while (iterator.hasNext()) {
+ val jobInstance = iterator.next()
+ val advice = jobAdmissionPolicy(jobInstance)
+ if (advice.stop) {
+ break
+ } else if (!advice.admit) {
+ continue
+ }
+
+ iterator.remove()
+ jobQueue.add(jobInstance)
+ activeJobs += jobInstance
+ eventFlow.emit(WorkflowEvent.JobStarted(this, jobInstance.job, simulationContext.clock.millis()))
+ rootListener.jobStarted(jobInstance)
+ }
+
+ // J4 Per job
+ while (jobQueue.isNotEmpty()) {
+ val jobInstance = jobQueue.poll()
+
+ // Edge-case: job has no tasks
+ if (jobInstance.isFinished) {
+ finishJob(jobInstance)
+ }
+
+ // Add job roots to the scheduling queue
+ for (task in jobInstance.tasks) {
+ if (task.state != TaskStatus.READY) {
+ continue
+ }
+
+ incomingTasks += task
+ rootListener.taskReady(task)
+ }
+ }
+
+ // T1 Create list of eligible tasks
+ val taskIterator = incomingTasks.iterator()
+ while (taskIterator.hasNext()) {
+ val taskInstance = taskIterator.next()
+ val advice = taskEligibilityPolicy(taskInstance)
+ if (advice.stop) {
+ break
+ } else if (!advice.admit) {
+ continue
+ }
+
+ taskIterator.remove()
+ taskQueue.add(taskInstance)
+ }
+
+ // T3 Per task
+ while (taskQueue.isNotEmpty()) {
+ val instance = taskQueue.peek()
+ val host: Node? = available.firstOrNull()
+
+ if (host != null) {
+ // T4 Submit task to machine
+ available -= host
+ instance.state = TaskStatus.ACTIVE
+ val newHost = provisioningService.deploy(host, instance.task.image)
+ val server = newHost.server!!
+ instance.host = newHost
+ taskByServer[server] = instance
+ server.events
+ .onEach { event -> if (event is ServerEvent.StateChanged) stateChanged(event.server) }
+ .launchIn(this)
+
+ activeTasks += instance
+ taskQueue.poll()
+ rootListener.taskAssigned(instance)
+ } else {
+ break
+ }
+ }
+ }
+
+ private suspend fun stateChanged(server: Server) {
+ when (server.state) {
+ ServerState.ACTIVE -> {
+ val task = taskByServer.getValue(server)
+ task.startedAt = simulationContext.clock.millis()
+ eventFlow.emit(WorkflowEvent.TaskStarted(this@StageWorkflowService, task.job.job, task.task, simulationContext.clock.millis()))
+ rootListener.taskStarted(task)
+ }
+ ServerState.SHUTOFF, ServerState.ERROR -> {
+ val task = taskByServer.remove(server) ?: throw IllegalStateException()
+ val job = task.job
+ task.state = TaskStatus.FINISHED
+ task.finishedAt = simulationContext.clock.millis()
+ job.tasks.remove(task)
+ available += task.host!!
+ activeTasks -= task
+ eventFlow.emit(WorkflowEvent.TaskFinished(this@StageWorkflowService, task.job.job, task.task, simulationContext.clock.millis()))
+ rootListener.taskFinished(task)
+
+ // Add job roots to the scheduling queue
+ for (dependent in task.dependents) {
+ if (dependent.state != TaskStatus.READY) {
+ continue
+ }
+
+ incomingTasks += dependent
+ rootListener.taskReady(dependent)
+ }
+
+ if (job.isFinished) {
+ finishJob(job)
+ }
+
+ requestCycle()
+ }
+ else -> throw IllegalStateException()
+ }
+ }
+
+ private suspend fun finishJob(job: JobState) {
+ activeJobs -= job
+ eventFlow.emit(WorkflowEvent.JobFinished(this, job.job, simulationContext.clock.millis()))
+ rootListener.jobFinished(job)
+ }
+
+ fun addListener(listener: StageWorkflowSchedulerListener) {
+ rootListener.listeners += listener
+ }
+
+ fun removeListener(listener: StageWorkflowSchedulerListener) {
+ rootListener.listeners -= listener
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskState.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskState.kt
new file mode 100644
index 00000000..acd5731b
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskState.kt
@@ -0,0 +1,85 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.workflows.workload.Task
+
+class TaskState(val job: JobState, val task: Task) {
+ /**
+ * The moment in time the task was started.
+ */
+ var startedAt: Long = Long.MIN_VALUE
+
+ /**
+ * The moment in time the task was finished.
+ */
+ var finishedAt: Long = Long.MIN_VALUE
+
+ /**
+ * The dependencies of this task.
+ */
+ val dependencies = HashSet<TaskState>()
+
+ /**
+ * The dependents of this task.
+ */
+ val dependents = HashSet<TaskState>()
+
+ /**
+ * A flag to indicate whether this workflow task instance is a workflow root.
+ */
+ val isRoot: Boolean
+ get() = dependencies.isEmpty()
+
+ var state: TaskStatus = TaskStatus.CREATED
+ set(value) {
+ field = value
+
+ // Mark the process as terminated in the graph
+ if (value == TaskStatus.FINISHED) {
+ markTerminated()
+ }
+ }
+
+ var host: Node? = null
+
+ /**
+ * Mark the specified [TaskView] as terminated.
+ */
+ private fun markTerminated() {
+ for (dependent in dependents) {
+ dependent.dependencies.remove(this)
+
+ if (dependent.isRoot) {
+ dependent.state = TaskStatus.READY
+ }
+ }
+ }
+
+ override fun equals(other: Any?): Boolean = other is TaskState && other.job == job && other.task == task
+
+ override fun hashCode(): Int = task.hashCode()
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskStatus.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskStatus.kt
new file mode 100644
index 00000000..c53c6171
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/TaskStatus.kt
@@ -0,0 +1,35 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+/**
+ * The state of a workflow task.
+ */
+public enum class TaskStatus {
+ CREATED,
+ READY,
+ ACTIVE,
+ FINISHED
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowEvent.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowEvent.kt
new file mode 100644
index 00000000..2ca5a19d
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowEvent.kt
@@ -0,0 +1,76 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+import com.atlarge.opendc.workflows.workload.Job
+import com.atlarge.opendc.workflows.workload.Task
+
+/**
+ * An event emitted by the [WorkflowService].
+ */
+public sealed class WorkflowEvent {
+ /**
+ * The [WorkflowService] that emitted the event.
+ */
+ public abstract val service: WorkflowService
+
+ /**
+ * This event is emitted when a job has become active.
+ */
+ public data class JobStarted(
+ override val service: WorkflowService,
+ public val job: Job,
+ public val time: Long
+ ) : WorkflowEvent()
+
+ /**
+ * This event is emitted when a job has finished processing.
+ */
+ public data class JobFinished(
+ override val service: WorkflowService,
+ public val job: Job,
+ public val time: Long
+ ) : WorkflowEvent()
+
+ /**
+ * This event is emitted when a task of a job has started processing.
+ */
+ public data class TaskStarted(
+ override val service: WorkflowService,
+ public val job: Job,
+ public val task: Task,
+ public val time: Long
+ ) : WorkflowEvent()
+
+ /**
+ * This event is emitted when a task of a job has started processing.
+ */
+ public data class TaskFinished(
+ override val service: WorkflowService,
+ public val job: Job,
+ public val task: Task,
+ public val time: Long
+ ) : WorkflowEvent()
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowSchedulerMode.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowSchedulerMode.kt
new file mode 100644
index 00000000..776f0b07
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowSchedulerMode.kt
@@ -0,0 +1,112 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.workflows.service.stage.StagePolicy
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.yield
+
+/**
+ * The operating mode of a workflow scheduler.
+ */
+sealed class WorkflowSchedulerMode : StagePolicy<WorkflowSchedulerMode.Logic> {
+ /**
+ * The logic for operating the cycles of a workflow scheduler.
+ */
+ interface Logic {
+ /**
+ * Request a new scheduling cycle to be performed.
+ */
+ suspend fun requestCycle()
+ }
+
+ /**
+ * An interactive scheduler immediately triggers a new scheduling cycle when a workflow is received.
+ */
+ object Interactive : WorkflowSchedulerMode() {
+ override fun invoke(scheduler: StageWorkflowService): Logic = object : Logic {
+ override suspend fun requestCycle() {
+ yield()
+ scheduler.schedule()
+ }
+ }
+
+ override fun toString(): String = "Interactive"
+ }
+
+ /**
+ * A batch scheduler triggers a scheduling cycle every time quantum if needed.
+ */
+ data class Batch(val quantum: Long) : WorkflowSchedulerMode() {
+ private var next: kotlinx.coroutines.Job? = null
+
+ override fun invoke(scheduler: StageWorkflowService): Logic = object : Logic {
+ override suspend fun requestCycle() {
+ val ctx = simulationContext
+ if (next == null) {
+ // In batch mode, we assume that the scheduler runs at a fixed slot every time
+ // quantum (e.g t=0, t=60, t=120). We calculate here the delay until the next scheduling slot.
+ val delay = quantum - (ctx.clock.millis() % quantum)
+
+ val job = ctx.domain.launch {
+ delay(delay)
+ next = null
+ scheduler.schedule()
+ }
+ next = job
+ }
+ }
+ }
+
+ override fun toString(): String = "Batch($quantum)"
+ }
+
+ /**
+ * A scheduling cycle is triggered at a random point in time.
+ */
+ data class Random(private val random: java.util.Random = java.util.Random(123)) : WorkflowSchedulerMode() {
+ private var next: kotlinx.coroutines.Job? = null
+
+ override fun invoke(scheduler: StageWorkflowService): Logic = object : Logic {
+ override suspend fun requestCycle() {
+ val ctx = simulationContext
+ if (next == null) {
+ val delay = random.nextInt(200).toLong()
+
+ val job = ctx.domain.launch {
+ delay(delay)
+ next = null
+ scheduler.schedule()
+ }
+ next = job
+ }
+ }
+ }
+
+ override fun toString(): String = "Random"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowService.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowService.kt
new file mode 100644
index 00000000..38ea49c4
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/WorkflowService.kt
@@ -0,0 +1,52 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+import com.atlarge.opendc.core.services.AbstractServiceKey
+import com.atlarge.opendc.workflows.workload.Job
+import kotlinx.coroutines.flow.Flow
+import java.util.UUID
+
+/**
+ * A service for cloud workflow management.
+ *
+ * The workflow scheduler is modelled after the Reference Architecture for Datacenter Scheduling by Andreadis et al.
+ */
+public interface WorkflowService {
+ /**
+ * Thie events emitted by the workflow scheduler.
+ */
+ public val events: Flow<WorkflowEvent>
+
+ /**
+ * Submit the specified [Job] to the workflow service for scheduling.
+ */
+ public suspend fun submit(job: Job)
+
+ /**
+ * The service key for the workflow scheduler.
+ */
+ companion object Key : AbstractServiceKey<WorkflowService>(UUID.randomUUID(), "workflows")
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/StagePolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/StagePolicy.kt
new file mode 100644
index 00000000..c7cc3d84
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/StagePolicy.kt
@@ -0,0 +1,38 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import java.io.Serializable
+
+/**
+ * A scheduling stage policy.
+ */
+interface StagePolicy<T : Any> : Serializable {
+ /**
+ * Build the logic of the stage policy.
+ */
+ operator fun invoke(scheduler: StageWorkflowService): T
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/DurationJobOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/DurationJobOrderPolicy.kt
new file mode 100644
index 00000000..bbdb9f71
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/DurationJobOrderPolicy.kt
@@ -0,0 +1,102 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.workload.Job
+import com.atlarge.opendc.workflows.workload.Task
+import com.atlarge.opendc.workflows.workload.WORKFLOW_TASK_DEADLINE
+
+/**
+ * A [JobOrderPolicy] that orders jobs based on its critical path length.
+ */
+data class DurationJobOrderPolicy(val ascending: Boolean = true) : JobOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService): Comparator<JobState> =
+ object : Comparator<JobState>, StageWorkflowSchedulerListener {
+ private val results = HashMap<Job, Long>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ private val Job.duration: Long
+ get() = results[this]!!
+
+ override fun jobSubmitted(job: JobState) {
+ results[job.job] = job.job.toposort().map { task ->
+ val estimable = task.metadata[WORKFLOW_TASK_DEADLINE] as? Long?
+ estimable ?: Long.MAX_VALUE
+ }.sum()
+ }
+
+ override fun jobFinished(job: JobState) {
+ results.remove(job.job)
+ }
+
+ override fun compare(o1: JobState, o2: JobState): Int {
+ return compareValuesBy(o1, o2) { it.job.duration }.let { if (ascending) it else -it }
+ }
+ }
+
+ override fun toString(): String {
+ return "Job-Duration(${if (ascending) "asc" else "desc"})"
+ }
+}
+
+/**
+ * Create a topological sorting of the tasks in a job.
+ *
+ * @return The list of tasks within the job topologically sorted.
+ */
+fun Job.toposort(): List<Task> {
+ val res = mutableListOf<Task>()
+ val visited = mutableSetOf<Task>()
+ val adjacent = mutableMapOf<Task, MutableList<Task>>()
+
+ for (task in tasks) {
+ for (dependency in task.dependencies) {
+ adjacent.getOrPut(dependency) { mutableListOf() }.add(task)
+ }
+ }
+
+ fun visit(task: Task) {
+ visited.add(task)
+
+ adjacent[task] ?: emptyList<Task>()
+ .asSequence()
+ .filter { it !in visited }
+ .forEach { visit(it) }
+
+ res.add(task)
+ }
+
+ tasks
+ .asSequence()
+ .filter { it !in visited }
+ .forEach { visit(it) }
+ return res
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobAdmissionPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobAdmissionPolicy.kt
new file mode 100644
index 00000000..535d7792
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobAdmissionPolicy.kt
@@ -0,0 +1,72 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.stage.StagePolicy
+
+/**
+ * A policy interface for admitting [JobState]s to a scheduling cycle.
+ */
+interface JobAdmissionPolicy : StagePolicy<JobAdmissionPolicy.Logic> {
+ interface Logic {
+ /**
+ * Determine whether the specified [JobState] should be admitted to the scheduling cycle.
+ *
+ * @param job The workflow that has been submitted.
+ * @return The advice for admitting the job.
+ */
+ operator fun invoke(job: JobState): Advice
+ }
+
+ /**
+ * The advice given to the scheduler by an admission policy.
+ *
+ * @property admit A flag to indicate to the scheduler that the job should be admitted.
+ * @property stop A flag to indicate the scheduler should immediately stop admitting jobs to the scheduling queue and wait
+ * for the next scheduling cycle.
+ */
+ enum class Advice(val admit: Boolean, val stop: Boolean) {
+ /**
+ * Admit the current job to the scheduling queue and continue admitting jobs.
+ */
+ ADMIT(true, false),
+
+ /**
+ * Admit the current job to the scheduling queue and stop admitting jobs.
+ */
+ ADMIT_LAST(true, true),
+
+ /**
+ * Deny the current job, but continue admitting jobs.
+ */
+ DENY(false, false),
+
+ /**
+ * Deny the current job and also stop admitting jobs.
+ */
+ STOP(false, true)
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobOrderPolicy.kt
new file mode 100644
index 00000000..ba57f064
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/JobOrderPolicy.kt
@@ -0,0 +1,33 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.stage.StagePolicy
+
+/**
+ * A policy interface for ordering admitted workflows in the scheduling queue.
+ */
+interface JobOrderPolicy : StagePolicy<Comparator<JobState>>
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LimitJobAdmissionPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LimitJobAdmissionPolicy.kt
new file mode 100644
index 00000000..6b1faf20
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LimitJobAdmissionPolicy.kt
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+
+/**
+ * A [JobAdmissionPolicy] that limits the amount of active jobs in the system.
+ *
+ * @property limit The maximum number of concurrent jobs in the system.
+ */
+data class LimitJobAdmissionPolicy(val limit: Int) : JobAdmissionPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : JobAdmissionPolicy.Logic {
+ override fun invoke(
+ job: JobState
+ ): JobAdmissionPolicy.Advice =
+ if (scheduler.activeJobs.size < limit)
+ JobAdmissionPolicy.Advice.ADMIT
+ else
+ JobAdmissionPolicy.Advice.STOP
+ }
+
+ override fun toString(): String = "Limit-Active($limit)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LoadJobAdmissionPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LoadJobAdmissionPolicy.kt
new file mode 100644
index 00000000..e1c27472
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/LoadJobAdmissionPolicy.kt
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+
+/**
+ * A [JobAdmissionPolicy] that limits the amount of jobs based on the average system load.
+ *
+ * @property limit The maximum load before stopping admission.
+ */
+data class LoadJobAdmissionPolicy(val limit: Double) : JobAdmissionPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : JobAdmissionPolicy.Logic {
+ override fun invoke(
+ job: JobState
+ ): JobAdmissionPolicy.Advice =
+ if (scheduler.load < limit)
+ JobAdmissionPolicy.Advice.ADMIT
+ else
+ JobAdmissionPolicy.Advice.STOP
+ }
+
+ override fun toString(): String = "Limit-Load($limit)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/NullJobAdmissionPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/NullJobAdmissionPolicy.kt
new file mode 100644
index 00000000..46888467
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/NullJobAdmissionPolicy.kt
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+
+/**
+ * A [JobAdmissionPolicy] that admits all jobs.
+ */
+object NullJobAdmissionPolicy : JobAdmissionPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : JobAdmissionPolicy.Logic {
+ override fun invoke(job: JobState): JobAdmissionPolicy.Advice = JobAdmissionPolicy.Advice.ADMIT
+ }
+
+ override fun toString(): String = "Always"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/RandomJobOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/RandomJobOrderPolicy.kt
new file mode 100644
index 00000000..14a3d98d
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/RandomJobOrderPolicy.kt
@@ -0,0 +1,62 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.workload.Job
+import java.util.Random
+
+/**
+ * A [JobOrderPolicy] that randomly orders jobs.
+ */
+object RandomJobOrderPolicy : JobOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService): Comparator<JobState> =
+ object : Comparator<JobState>, StageWorkflowSchedulerListener {
+ private val random = Random(123)
+ private val ids = HashMap<Job, Int>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun jobSubmitted(job: JobState) {
+ ids[job.job] = random.nextInt()
+ }
+
+ override fun jobFinished(job: JobState) {
+ ids.remove(job.job)
+ }
+
+ override fun compare(o1: JobState, o2: JobState): Int {
+ return compareValuesBy(o1, o2) { ids.getValue(it.job) }
+ }
+ }
+
+ override fun toString(): String {
+ return "Random"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SizeJobOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SizeJobOrderPolicy.kt
new file mode 100644
index 00000000..3bce43cf
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SizeJobOrderPolicy.kt
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+
+/**
+ * A [SizeJobOrderPolicy] that orders jobs based on the number of tasks it has.
+ */
+data class SizeJobOrderPolicy(val ascending: Boolean = true) : JobOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService) =
+ compareBy<JobState> { it.tasks.size.let { if (ascending) it else -it } }
+
+ override fun toString(): String {
+ return "Job-Size(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SubmissionTimeJobOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SubmissionTimeJobOrderPolicy.kt
new file mode 100644
index 00000000..d6e24b2b
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/job/SubmissionTimeJobOrderPolicy.kt
@@ -0,0 +1,40 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.job
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+
+/**
+ * A [JobOrderPolicy] orders jobs in FIFO order.
+ */
+data class SubmissionTimeJobOrderPolicy(val ascending: Boolean = true) : JobOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService) =
+ compareBy<JobState> { it.submittedAt.let { if (ascending) it else -it } }
+
+ override fun toString(): String {
+ return "Submission-Time(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FirstFitResourceSelectionPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FirstFitResourceSelectionPolicy.kt
new file mode 100644
index 00000000..a5671d45
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FirstFitResourceSelectionPolicy.kt
@@ -0,0 +1,39 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.resource
+
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+
+/**
+ * A [ResourceSelectionPolicy] that selects the first machine that is available.
+ */
+object FirstFitResourceSelectionPolicy : ResourceSelectionPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : Comparator<Node> {
+ override fun compare(o1: Node, o2: Node): Int = 1
+ }
+
+ override fun toString(): String = "First-Fit"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FunctionalResourceFilterPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FunctionalResourceFilterPolicy.kt
new file mode 100644
index 00000000..0e83d8d7
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/FunctionalResourceFilterPolicy.kt
@@ -0,0 +1,43 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.resource
+
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [ResourceFilterPolicy] based on the amount of cores available on the machine and the cores required for
+ * the task.
+ */
+object FunctionalResourceFilterPolicy : ResourceFilterPolicy {
+ override fun invoke(scheduler: StageWorkflowService): ResourceFilterPolicy.Logic =
+ object : ResourceFilterPolicy.Logic {
+ override fun invoke(hosts: Sequence<Node>, task: TaskState): Sequence<Node> =
+ hosts.filter { it in scheduler.available }
+ }
+
+ override fun toString(): String = "functional"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/RandomResourceSelectionPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/RandomResourceSelectionPolicy.kt
new file mode 100644
index 00000000..9b05cbac
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/RandomResourceSelectionPolicy.kt
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.resource
+
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import java.util.Random
+
+/**
+ * A [ResourceSelectionPolicy] that randomly orders the machines.
+ */
+object RandomResourceSelectionPolicy : ResourceSelectionPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : Comparator<Node> {
+ private val ids: Map<Node, Long>
+
+ init {
+ val random = Random(123)
+ ids = scheduler.nodes.associateWith { random.nextLong() }
+ }
+
+ override fun compare(o1: Node, o2: Node): Int = compareValuesBy(o1, o2) { ids[it] }
+ }
+
+ override fun toString(): String = "Random"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceFilterPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceFilterPolicy.kt
new file mode 100644
index 00000000..28ef970f
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceFilterPolicy.kt
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.resource
+
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.workflows.service.TaskState
+import com.atlarge.opendc.workflows.service.stage.StagePolicy
+
+/**
+ * This interface represents stages **R2**, **R3** and **R4** stage of the Reference Architecture for Schedulers and
+ * acts as a filter yielding a list of resources with sufficient resource-capacities, based on fixed or dynamic
+ * requirements, and on predicted or monitored information about processing unit availability, memory occupancy, etc.
+ */
+interface ResourceFilterPolicy : StagePolicy<ResourceFilterPolicy.Logic> {
+ interface Logic {
+ /**
+ * Filter the list of machines based on dynamic information.
+ *
+ * @param hosts The hosts to filter.
+ * @param task The task that is to be scheduled.
+ * @return The machines on which the task can be scheduled.
+ */
+ operator fun invoke(hosts: Sequence<Node>, task: TaskState): Sequence<Node>
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceSelectionPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceSelectionPolicy.kt
new file mode 100644
index 00000000..43053097
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/resource/ResourceSelectionPolicy.kt
@@ -0,0 +1,34 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.resource
+
+import com.atlarge.opendc.compute.metal.Node
+import com.atlarge.opendc.workflows.service.stage.StagePolicy
+
+/**
+ * This interface represents the **R5** stage of the Reference Architecture for Schedulers and matches the the selected
+ * task with a (set of) resource(s), using policies such as First-Fit, Worst-Fit, and Best-Fit.
+ */
+interface ResourceSelectionPolicy : StagePolicy<Comparator<Node>>
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/ActiveTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/ActiveTaskOrderPolicy.kt
new file mode 100644
index 00000000..b084d26c
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/ActiveTaskOrderPolicy.kt
@@ -0,0 +1,70 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskOrderPolicy] that orders tasks based on the number of active relative tasks (w.r.t. its job) in the system.
+ */
+data class ActiveTaskOrderPolicy(val ascending: Boolean = true) : TaskOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService): Comparator<TaskState> =
+ object : Comparator<TaskState>, StageWorkflowSchedulerListener {
+ private val active = mutableMapOf<JobState, Int>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun jobStarted(job: JobState) {
+ active[job] = 0
+ }
+
+ override fun jobFinished(job: JobState) {
+ active.remove(job)
+ }
+
+ override fun taskAssigned(task: TaskState) {
+ active.merge(task.job, 1, Int::plus)
+ }
+
+ override fun taskFinished(task: TaskState) {
+ active.merge(task.job, -1, Int::plus)
+ }
+
+ override fun compare(o1: TaskState, o2: TaskState): Int {
+ return compareValuesBy(o1, o2) { active.getValue(it.job) }.let {
+ if (ascending) it else -it
+ }
+ }
+ }
+
+ override fun toString(): String {
+ return "Active-Per-Job(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/BalancingTaskEligibilityPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/BalancingTaskEligibilityPolicy.kt
new file mode 100644
index 00000000..2255d40c
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/BalancingTaskEligibilityPolicy.kt
@@ -0,0 +1,78 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+import kotlin.math.max
+
+/**
+ * A [TaskEligibilityPolicy] that balances the tasks based on their job, e.g. do not allow a single job to claim all
+ * resources of the system.
+ *
+ * @property tolerance The maximum difference from the average number of tasks per job in the system as a fraction of
+ * the average.
+ */
+data class BalancingTaskEligibilityPolicy(val tolerance: Double = 1.5) : TaskEligibilityPolicy {
+ override fun invoke(scheduler: StageWorkflowService): TaskEligibilityPolicy.Logic =
+ object : TaskEligibilityPolicy.Logic, StageWorkflowSchedulerListener {
+ private val active = mutableMapOf<JobState, Int>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun jobStarted(job: JobState) {
+ active[job] = 0
+ }
+
+ override fun jobFinished(job: JobState) {
+ active.remove(job)
+ }
+
+ override fun taskAssigned(task: TaskState) {
+ active.merge(task.job, 1, Int::plus)
+ }
+
+ override fun taskFinished(task: TaskState) {
+ active.merge(task.job, -1, Int::plus)
+ }
+
+ override fun invoke(task: TaskState): TaskEligibilityPolicy.Advice {
+ val activeJobs = scheduler.activeJobs.size
+ val activeTasks = scheduler.activeTasks.size
+ val baseline = max(activeTasks / activeJobs.toDouble(), 1.0)
+ val activeForJob = active[task.job]!!
+ return if ((activeForJob + 1) / baseline < tolerance)
+ TaskEligibilityPolicy.Advice.ADMIT
+ else
+ TaskEligibilityPolicy.Advice.DENY
+ }
+ }
+
+ override fun toString(): String = "Job-Balance($tolerance)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/CompletionTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/CompletionTaskOrderPolicy.kt
new file mode 100644
index 00000000..d0cf1374
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/CompletionTaskOrderPolicy.kt
@@ -0,0 +1,66 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskOrderPolicy] that orders tasks based on the number of completed relative tasks.
+ */
+data class CompletionTaskOrderPolicy(val ascending: Boolean = true) : TaskOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService): Comparator<TaskState> =
+ object : Comparator<TaskState>, StageWorkflowSchedulerListener {
+ private val finished = mutableMapOf<JobState, Int>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun jobStarted(job: JobState) {
+ finished[job] = 0
+ }
+
+ override fun jobFinished(job: JobState) {
+ finished.remove(job)
+ }
+
+ override fun taskFinished(task: TaskState) {
+ finished.merge(task.job, 1, Int::plus)
+ }
+
+ override fun compare(o1: TaskState, o2: TaskState): Int {
+ return compareValuesBy(o1, o2) { finished.getValue(it.job) / it.job.tasks.size.toDouble() }.let {
+ if (ascending) it else -it
+ }
+ }
+ }
+
+ override fun toString(): String {
+ return "Job-Completion(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependenciesTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependenciesTaskOrderPolicy.kt
new file mode 100644
index 00000000..73d83d21
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependenciesTaskOrderPolicy.kt
@@ -0,0 +1,41 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskOrderPolicy] that orders tasks based on the number of dependency tasks it has.
+ */
+data class DependenciesTaskOrderPolicy(val ascending: Boolean = true) : TaskOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = compareBy<TaskState> {
+ it.task.dependencies.size.let { if (ascending) it else -it }
+ }
+
+ override fun toString(): String {
+ return "Task-Dependencies(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependentsTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependentsTaskOrderPolicy.kt
new file mode 100644
index 00000000..85b3543f
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DependentsTaskOrderPolicy.kt
@@ -0,0 +1,41 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskOrderPolicy] that orders tasks based on the number of dependent tasks it has.
+ */
+data class DependentsTaskOrderPolicy(val ascending: Boolean = true) : TaskOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = compareBy<TaskState> {
+ it.dependents.size.let { if (ascending) it else -it }
+ }
+
+ override fun toString(): String {
+ return "Task-Dependents(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationHistoryTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationHistoryTaskOrderPolicy.kt
new file mode 100644
index 00000000..426a76a4
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationHistoryTaskOrderPolicy.kt
@@ -0,0 +1,72 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskOrderPolicy] that orders tasks based on the average duration of the preceding tasks in the job.
+ */
+data class DurationHistoryTaskOrderPolicy(val ascending: Boolean = true) : TaskOrderPolicy {
+
+ override fun invoke(scheduler: StageWorkflowService): Comparator<TaskState> =
+ object : Comparator<TaskState>, StageWorkflowSchedulerListener {
+ private val results = HashMap<JobState, MutableList<Long>>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun jobStarted(job: JobState) {
+ results[job] = mutableListOf()
+ }
+
+ override fun jobFinished(job: JobState) {
+ results.remove(job)
+ }
+
+ override fun taskFinished(task: TaskState) {
+ results.getValue(task.job) += task.finishedAt - task.startedAt
+ }
+
+ override fun compare(o1: TaskState, o2: TaskState): Int {
+ return compareValuesBy(o1, o2) { key ->
+ val history = results.getValue(key.job)
+ if (history.isEmpty()) {
+ Long.MAX_VALUE
+ } else {
+ history.average()
+ }
+ }.let { if (ascending) it else -it }
+ }
+ }
+
+ override fun toString(): String {
+ return "Task-Duration-History(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationTaskOrderPolicy.kt
new file mode 100644
index 00000000..23b47891
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/DurationTaskOrderPolicy.kt
@@ -0,0 +1,68 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+import com.atlarge.opendc.workflows.workload.WORKFLOW_TASK_DEADLINE
+import java.util.UUID
+
+/**
+ * A [TaskOrderPolicy] orders tasks based on the pre-specified (approximate) duration of the task.
+ */
+data class DurationTaskOrderPolicy(val ascending: Boolean = true) : TaskOrderPolicy {
+
+ override fun invoke(scheduler: StageWorkflowService): Comparator<TaskState> =
+ object : Comparator<TaskState>, StageWorkflowSchedulerListener {
+ private val results = HashMap<UUID, Long>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun taskReady(task: TaskState) {
+ val deadline = task.task.metadata[WORKFLOW_TASK_DEADLINE] as? Long?
+ results[task.task.uid] = deadline ?: Long.MAX_VALUE
+ }
+
+ override fun taskFinished(task: TaskState) {
+ results -= task.task.uid
+ }
+
+ private val TaskState.duration: Long
+ get() = results.getValue(task.uid)
+
+ override fun compare(o1: TaskState, o2: TaskState): Int {
+ return compareValuesBy(o1, o2) { state -> state.duration }.let {
+ if (ascending) it else -it
+ }
+ }
+ }
+
+ override fun toString(): String {
+ return "Task-Duration(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitPerJobTaskEligibilityPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitPerJobTaskEligibilityPolicy.kt
new file mode 100644
index 00000000..c039bf6f
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitPerJobTaskEligibilityPolicy.kt
@@ -0,0 +1,70 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.JobState
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskEligibilityPolicy] that limits the number of active tasks of a job in the system.
+ */
+data class LimitPerJobTaskEligibilityPolicy(val limit: Int) : TaskEligibilityPolicy {
+ override fun invoke(scheduler: StageWorkflowService): TaskEligibilityPolicy.Logic =
+ object : TaskEligibilityPolicy.Logic, StageWorkflowSchedulerListener {
+ private val active = mutableMapOf<JobState, Int>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun jobStarted(job: JobState) {
+ active[job] = 0
+ }
+
+ override fun jobFinished(job: JobState) {
+ active.remove(job)
+ }
+
+ override fun taskAssigned(task: TaskState) {
+ active.merge(task.job, 1, Int::plus)
+ }
+
+ override fun taskFinished(task: TaskState) {
+ active.merge(task.job, -1, Int::plus)
+ }
+
+ override fun invoke(task: TaskState): TaskEligibilityPolicy.Advice {
+ val activeForJob = active[task.job]!!
+ return if (activeForJob <= limit)
+ TaskEligibilityPolicy.Advice.ADMIT
+ else
+ TaskEligibilityPolicy.Advice.DENY
+ }
+ }
+
+ override fun toString(): String = "Limit-Active-Job($limit)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitTaskEligibilityPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitTaskEligibilityPolicy.kt
new file mode 100644
index 00000000..75322ef5
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LimitTaskEligibilityPolicy.kt
@@ -0,0 +1,45 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskEligibilityPolicy] that limits the total number of active tasks in the system.
+ */
+data class LimitTaskEligibilityPolicy(val limit: Int) : TaskEligibilityPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : TaskEligibilityPolicy.Logic {
+ override fun invoke(
+ task: TaskState
+ ): TaskEligibilityPolicy.Advice =
+ if (scheduler.activeTasks.size < limit)
+ TaskEligibilityPolicy.Advice.ADMIT
+ else
+ TaskEligibilityPolicy.Advice.STOP
+ }
+
+ override fun toString(): String = "Limit-Active($limit)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LoadTaskEligibilityPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LoadTaskEligibilityPolicy.kt
new file mode 100644
index 00000000..090f7be7
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/LoadTaskEligibilityPolicy.kt
@@ -0,0 +1,45 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskEligibilityPolicy] that limits the number of active tasks in the system based on the average system load.
+ */
+data class LoadTaskEligibilityPolicy(val limit: Double) : TaskEligibilityPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : TaskEligibilityPolicy.Logic {
+ override fun invoke(
+ task: TaskState
+ ): TaskEligibilityPolicy.Advice =
+ if (scheduler.load < limit)
+ TaskEligibilityPolicy.Advice.ADMIT
+ else
+ TaskEligibilityPolicy.Advice.STOP
+ }
+
+ override fun toString(): String = "Limit-Load($limit)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/NullTaskEligibilityPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/NullTaskEligibilityPolicy.kt
new file mode 100644
index 00000000..889f2ab5
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/NullTaskEligibilityPolicy.kt
@@ -0,0 +1,43 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskEligibilityPolicy] that always allows new tasks to enter.
+ */
+object NullTaskEligibilityPolicy : TaskEligibilityPolicy {
+ override fun invoke(scheduler: StageWorkflowService): TaskEligibilityPolicy.Logic = Logic
+
+ private object Logic : TaskEligibilityPolicy.Logic {
+ override fun invoke(
+ task: TaskState
+ ): TaskEligibilityPolicy.Advice = TaskEligibilityPolicy.Advice.ADMIT
+ }
+
+ override fun toString(): String = "Always"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskEligibilityPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskEligibilityPolicy.kt
new file mode 100644
index 00000000..d6f49d14
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskEligibilityPolicy.kt
@@ -0,0 +1,47 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+import java.util.Random
+
+/**
+ * A [TaskEligibilityPolicy] that randomly accepts tasks in the system with some [probability].
+ */
+data class RandomTaskEligibilityPolicy(val probability: Double = 0.5) : TaskEligibilityPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = object : TaskEligibilityPolicy.Logic {
+ val random = Random(123)
+
+ override fun invoke(task: TaskState): TaskEligibilityPolicy.Advice =
+ if (random.nextDouble() <= probability || scheduler.activeTasks.isEmpty())
+ TaskEligibilityPolicy.Advice.ADMIT
+ else {
+ TaskEligibilityPolicy.Advice.DENY
+ }
+ }
+
+ override fun toString(): String = "Random($probability)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskOrderPolicy.kt
new file mode 100644
index 00000000..4c309085
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/RandomTaskOrderPolicy.kt
@@ -0,0 +1,62 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowSchedulerListener
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+import com.atlarge.opendc.workflows.workload.Task
+import kotlin.random.Random
+
+/**
+ * A [TaskOrderPolicy] that orders the tasks randomly.
+ */
+object RandomTaskOrderPolicy : TaskOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService): Comparator<TaskState> =
+ object : Comparator<TaskState>, StageWorkflowSchedulerListener {
+ private val random = Random(123)
+ private val ids = HashMap<Task, Int>()
+
+ init {
+ scheduler.addListener(this)
+ }
+
+ override fun taskReady(task: TaskState) {
+ ids[task.task] = random.nextInt()
+ }
+
+ override fun taskFinished(task: TaskState) {
+ ids.remove(task.task)
+ }
+
+ override fun compare(o1: TaskState, o2: TaskState): Int {
+ return compareValuesBy(o1, o2) { ids.getValue(it.task) }
+ }
+ }
+
+ override fun toString(): String {
+ return "Random"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/SubmissionTimeTaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/SubmissionTimeTaskOrderPolicy.kt
new file mode 100644
index 00000000..a261965f
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/SubmissionTimeTaskOrderPolicy.kt
@@ -0,0 +1,41 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.StageWorkflowService
+import com.atlarge.opendc.workflows.service.TaskState
+
+/**
+ * A [TaskOrderPolicy] that orders tasks based on the order of arrival in the queue.
+ */
+data class SubmissionTimeTaskOrderPolicy(val ascending: Boolean = true) : TaskOrderPolicy {
+ override fun invoke(scheduler: StageWorkflowService) = compareBy<TaskState> {
+ it.job.submittedAt.let { if (ascending) it else -it }
+ }
+
+ override fun toString(): String {
+ return "Submission-Time(${if (ascending) "asc" else "desc"})"
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskEligibilityPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskEligibilityPolicy.kt
new file mode 100644
index 00000000..72a7fdd0
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskEligibilityPolicy.kt
@@ -0,0 +1,72 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.TaskState
+import com.atlarge.opendc.workflows.service.stage.StagePolicy
+
+/**
+ * A policy interface for determining the eligibility of tasks in a scheduling cycle.
+ */
+interface TaskEligibilityPolicy : StagePolicy<TaskEligibilityPolicy.Logic> {
+ interface Logic {
+ /**
+ * Determine whether the specified [TaskState] is eligible to be scheduled.
+ *
+ * @param task The task instance to schedule.
+ * @return The advice for marking the task.
+ */
+ operator fun invoke(task: TaskState): Advice
+ }
+
+ /**
+ * The advice given to the scheduler by an admission policy.
+ *
+ * @property admit A flag to indicate to the scheduler that the job should be admitted.
+ * @property stop A flag to indicate the scheduler should immediately stop admitting jobs to the scheduling queue and wait
+ * for the next scheduling cycle.
+ */
+ enum class Advice(val admit: Boolean, val stop: Boolean) {
+ /**
+ * Admit the current job to the scheduling queue and continue admitting jobs.
+ */
+ ADMIT(true, false),
+
+ /**
+ * Admit the current job to the scheduling queue and stop admitting jobs.
+ */
+ ADMIT_LAST(true, true),
+
+ /**
+ * Deny the current job, but continue admitting jobs.
+ */
+ DENY(false, false),
+
+ /**
+ * Deny the current job and also stop admitting jobs.
+ */
+ STOP(false, true)
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskOrderPolicy.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskOrderPolicy.kt
new file mode 100644
index 00000000..bfdc7924
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/service/stage/task/TaskOrderPolicy.kt
@@ -0,0 +1,34 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service.stage.task
+
+import com.atlarge.opendc.workflows.service.TaskState
+import com.atlarge.opendc.workflows.service.stage.StagePolicy
+
+/**
+ * This interface represents the **T2** stage of the Reference Architecture for Datacenter Schedulers and provides the
+ * scheduler with a sorted list of tasks to schedule.
+ */
+interface TaskOrderPolicy : StagePolicy<Comparator<TaskState>>
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Job.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Job.kt
new file mode 100644
index 00000000..02969d8a
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Job.kt
@@ -0,0 +1,52 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.workload
+
+import com.atlarge.opendc.core.User
+import com.atlarge.opendc.core.workload.Workload
+import java.util.UUID
+
+/**
+ * A workload that represents a directed acyclic graph (DAG) of tasks with control and data dependencies between tasks.
+ *
+ * @property uid A unique identified of this workflow.
+ * @property name The name of this workflow.
+ * @property owner The owner of the workflow.
+ * @property tasks The tasks that are part of this workflow.
+ * @property metadata Additional metadata for the job.
+ */
+data class Job(
+ override val uid: UUID,
+ override val name: String,
+ override val owner: User,
+ val tasks: Set<Task>,
+ val metadata: Map<String, Any> = emptyMap()
+) : Workload {
+ override fun equals(other: Any?): Boolean = other is Job && uid == other.uid
+
+ override fun hashCode(): Int = uid.hashCode()
+
+ override fun toString(): String = "Job(uid=$uid, name=$name, tasks=${tasks.size}, metadata=$metadata)"
+}
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Metadata.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Metadata.kt
new file mode 100644
index 00000000..067f1179
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Metadata.kt
@@ -0,0 +1,30 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.workload
+
+/**
+ * Meta-data key for the deadline of a task.
+ */
+const val WORKFLOW_TASK_DEADLINE = "workflow:task:deadline"
diff --git a/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Task.kt b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Task.kt
new file mode 100644
index 00000000..82521faa
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/main/kotlin/com/atlarge/opendc/workflows/workload/Task.kt
@@ -0,0 +1,50 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2019 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.workload
+
+import com.atlarge.opendc.compute.core.image.Image
+import com.atlarge.opendc.core.Identity
+import java.util.UUID
+
+/**
+ * A stage of a [Job].
+ *
+ * @property uid A unique identified of this task.
+ * @property name The name of this task.
+ * @property image The application image to run as part of this workflow task.
+ * @property dependencies The dependencies of this task in order for it to execute.
+ * @property metadata Additional metadata for this task.
+ */
+data class Task(
+ override val uid: UUID,
+ override val name: String,
+ val image: Image,
+ val dependencies: Set<Task>,
+ val metadata: Map<String, Any> = emptyMap()
+) : Identity {
+ override fun equals(other: Any?): Boolean = other is Task && uid == other.uid
+
+ override fun hashCode(): Int = uid.hashCode()
+}
diff --git a/simulator/opendc/opendc-workflows/src/test/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerIntegrationTest.kt b/simulator/opendc/opendc-workflows/src/test/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerIntegrationTest.kt
new file mode 100644
index 00000000..5ee6d5e6
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/test/kotlin/com/atlarge/opendc/workflows/service/StageWorkflowSchedulerIntegrationTest.kt
@@ -0,0 +1,125 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2020 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package com.atlarge.opendc.workflows.service
+
+import com.atlarge.odcsim.SimulationEngineProvider
+import com.atlarge.odcsim.simulationContext
+import com.atlarge.opendc.compute.metal.service.ProvisioningService
+import com.atlarge.opendc.format.environment.sc18.Sc18EnvironmentReader
+import com.atlarge.opendc.format.trace.gwf.GwfTraceReader
+import com.atlarge.opendc.workflows.service.stage.job.NullJobAdmissionPolicy
+import com.atlarge.opendc.workflows.service.stage.job.SubmissionTimeJobOrderPolicy
+import com.atlarge.opendc.workflows.service.stage.resource.FirstFitResourceSelectionPolicy
+import com.atlarge.opendc.workflows.service.stage.resource.FunctionalResourceFilterPolicy
+import com.atlarge.opendc.workflows.service.stage.task.NullTaskEligibilityPolicy
+import com.atlarge.opendc.workflows.service.stage.task.SubmissionTimeTaskOrderPolicy
+import kotlinx.coroutines.async
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.DisplayName
+import org.junit.jupiter.api.Test
+import java.util.ServiceLoader
+import kotlin.math.max
+
+/**
+ * Integration test suite for the [StageWorkflowService].
+ */
+@DisplayName("StageWorkflowService")
+internal class StageWorkflowSchedulerIntegrationTest {
+ /**
+ * A large integration test where we check whether all tasks in some trace are executed correctly.
+ */
+ @Test
+ fun `should execute all tasks in trace`() {
+ var jobsSubmitted = 0L
+ var jobsStarted = 0L
+ var jobsFinished = 0L
+ var tasksStarted = 0L
+ var tasksFinished = 0L
+
+ val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
+ val system = provider(name = "sim")
+
+ val schedulerDomain = system.newDomain(name = "scheduler")
+ val schedulerAsync = schedulerDomain.async {
+ val environment = Sc18EnvironmentReader(object {}.javaClass.getResourceAsStream("/environment.json"))
+ .use { it.construct(system.newDomain("topology")) }
+
+ StageWorkflowService(
+ schedulerDomain,
+ environment.platforms[0].zones[0].services[ProvisioningService],
+ mode = WorkflowSchedulerMode.Batch(100),
+ jobAdmissionPolicy = NullJobAdmissionPolicy,
+ jobOrderPolicy = SubmissionTimeJobOrderPolicy(),
+ taskEligibilityPolicy = NullTaskEligibilityPolicy,
+ taskOrderPolicy = SubmissionTimeTaskOrderPolicy(),
+ resourceFilterPolicy = FunctionalResourceFilterPolicy,
+ resourceSelectionPolicy = FirstFitResourceSelectionPolicy
+ )
+ }
+
+ val broker = system.newDomain(name = "broker")
+
+ broker.launch {
+ val scheduler = schedulerAsync.await()
+ scheduler.events
+ .onEach { event ->
+ when (event) {
+ is WorkflowEvent.JobStarted -> jobsStarted++
+ is WorkflowEvent.JobFinished -> jobsFinished++
+ is WorkflowEvent.TaskStarted -> tasksStarted++
+ is WorkflowEvent.TaskFinished -> tasksFinished++
+ }
+ }
+ .collect()
+ }
+
+ broker.launch {
+ val ctx = simulationContext
+ val reader = GwfTraceReader(object {}.javaClass.getResourceAsStream("/trace.gwf"))
+ val scheduler = schedulerAsync.await()
+
+ while (reader.hasNext()) {
+ val (time, job) = reader.next()
+ jobsSubmitted++
+ delay(max(0, time * 1000 - ctx.clock.millis()))
+ scheduler.submit(job)
+ }
+ }
+
+ runBlocking {
+ system.run()
+ system.terminate()
+ }
+
+ assertEquals(jobsSubmitted, jobsStarted, "Not all submitted jobs started")
+ assertEquals(jobsSubmitted, jobsFinished, "Not all started jobs finished")
+ assertEquals(tasksStarted, tasksFinished, "Not all started tasks finished")
+ }
+}
diff --git a/simulator/opendc/opendc-workflows/src/test/resources/environment.json b/simulator/opendc/opendc-workflows/src/test/resources/environment.json
new file mode 100644
index 00000000..0965b250
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/test/resources/environment.json
@@ -0,0 +1,36 @@
+{
+ "name": "Experimental Setup 2",
+ "rooms": [
+ {
+ "type": "SERVER",
+ "objects": [
+ {
+ "type": "RACK",
+ "machines": [
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]},
+ { "cpus": [2] }, { "cpus": [2]}
+ ]
+ },
+ {
+ "type": "RACK",
+ "machines": [
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]},
+ { "cpus": [1] }, { "cpus": [1]}
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/simulator/opendc/opendc-workflows/src/test/resources/trace.gwf b/simulator/opendc/opendc-workflows/src/test/resources/trace.gwf
new file mode 100644
index 00000000..d264b9c3
--- /dev/null
+++ b/simulator/opendc/opendc-workflows/src/test/resources/trace.gwf
@@ -0,0 +1,30747 @@
+WorkflowID, JobID , SubmitTime, RunTime , NProcs , ReqNProcs , Dependencies
+0 , 1 , 16 , 11 , 1 , 1 ,
+0 , 2 , 40 , 11 , 1 , 1 , 1
+0 , 3 , 40 , 11 , 1 , 1 , 1
+0 , 4 , 64 , 11 , 1 , 1 , 2
+0 , 5 , 63 , 11 , 1 , 1 , 3
+0 , 6 , 64 , 11 , 1 , 1 , 3
+0 , 7 , 87 , 11 , 1 , 1 , 4 5 6
+1 , 8 , 4 , 11 , 1 , 1 ,
+1 , 9 , 15 , 11 , 1 , 1 , 8
+1 , 10 , 15 , 11 , 1 , 1 , 8
+1 , 11 , 27 , 11 , 1 , 1 , 9
+1 , 12 , 27 , 11 , 1 , 1 , 10
+1 , 13 , 27 , 11 , 1 , 1 , 10
+1 , 14 , 38 , 11 , 1 , 1 , 12 11 13
+2 , 15 , 3 , 11 , 1 , 1 ,
+2 , 16 , 27 , 11 , 1 , 1 , 15
+2 , 17 , 27 , 11 , 1 , 1 , 15
+2 , 18 , 52 , 11 , 1 , 1 , 16
+2 , 19 , 51 , 11 , 1 , 1 , 17
+2 , 20 , 51 , 11 , 1 , 1 , 17
+2 , 21 , 75 , 11 , 1 , 1 , 20 18 19
+3 , 22 , 3 , 11 , 1 , 1 ,
+3 , 23 , 27 , 11 , 1 , 1 , 22
+3 , 24 , 27 , 11 , 1 , 1 , 22
+3 , 25 , 51 , 11 , 1 , 1 , 23
+3 , 26 , 50 , 11 , 1 , 1 , 24
+3 , 27 , 51 , 11 , 1 , 1 , 24
+3 , 28 , 75 , 11 , 1 , 1 , 25 27 26
+4 , 29 , 3 , 11 , 1 , 1 ,
+4 , 30 , 27 , 11 , 1 , 1 , 29
+4 , 31 , 27 , 11 , 1 , 1 , 29
+4 , 32 , 50 , 11 , 1 , 1 , 30
+4 , 33 , 50 , 11 , 1 , 1 , 31
+4 , 34 , 51 , 11 , 1 , 1 , 31
+4 , 35 , 74 , 11 , 1 , 1 , 33 32 34
+5 , 36 , 3 , 11 , 1 , 1 ,
+5 , 37 , 27 , 11 , 1 , 1 , 36
+5 , 38 , 26 , 11 , 1 , 1 , 36
+5 , 39 , 51 , 11 , 1 , 1 , 37
+5 , 40 , 50 , 11 , 1 , 1 , 38
+5 , 41 , 50 , 11 , 1 , 1 , 38
+5 , 42 , 74 , 11 , 1 , 1 , 39 40 41
+6 , 43 , 4 , 11 , 1 , 1 ,
+6 , 44 , 27 , 11 , 1 , 1 , 43
+6 , 45 , 27 , 11 , 1 , 1 , 43
+6 , 46 , 51 , 11 , 1 , 1 , 44
+6 , 47 , 51 , 11 , 1 , 1 , 45
+6 , 48 , 51 , 11 , 1 , 1 , 45
+6 , 49 , 75 , 11 , 1 , 1 , 46 47 48
+7 , 50 , 3 , 0 , 1 , 1 ,
+7 , 51 , 17 , 0 , 1 , 1 , 50
+7 , 52 , 17 , 0 , 1 , 1 , 50
+7 , 53 , 30 , 0 , 1 , 1 , 51
+7 , 54 , 30 , 0 , 1 , 1 , 52
+7 , 55 , 31 , 0 , 1 , 1 , 52
+7 , 56 , 44 , 0 , 1 , 1 , 55 54 53
+8 , 57 , 3 , 11 , 1 , 1 ,
+8 , 58 , 26 , 11 , 1 , 1 , 57
+8 , 59 , 27 , 11 , 1 , 1 , 57
+8 , 60 , 50 , 11 , 1 , 1 , 58
+8 , 61 , 51 , 11 , 1 , 1 , 59
+8 , 62 , 50 , 11 , 1 , 1 , 59
+8 , 63 , 74 , 11 , 1 , 1 , 62 61 60
+9 , 64 , 3 , 11 , 1 , 1 ,
+9 , 65 , 27 , 11 , 1 , 1 , 64
+9 , 66 , 27 , 11 , 1 , 1 , 64
+9 , 67 , 51 , 11 , 1 , 1 , 65
+9 , 68 , 50 , 11 , 1 , 1 , 66
+9 , 69 , 51 , 11 , 1 , 1 , 66
+9 , 70 , 74 , 11 , 1 , 1 , 68 69 67
+10 , 71 , 6 , 11 , 1 , 1 ,
+10 , 72 , 30 , 11 , 1 , 1 , 71
+10 , 73 , 29 , 11 , 1 , 1 , 71
+10 , 74 , 54 , 11 , 1 , 1 , 72
+10 , 75 , 53 , 11 , 1 , 1 , 73
+10 , 76 , 53 , 11 , 1 , 1 , 73
+10 , 77 , 77 , 11 , 1 , 1 , 75 76 74
+11 , 78 , 5 , 10 , 1 , 1 ,
+11 , 79 , 29 , 11 , 1 , 1 , 78
+11 , 80 , 29 , 11 , 1 , 1 , 78
+11 , 81 , 53 , 11 , 1 , 1 , 79
+11 , 82 , 53 , 11 , 1 , 1 , 80
+11 , 83 , 53 , 11 , 1 , 1 , 80
+11 , 84 , 77 , 11 , 1 , 1 , 83 82 81
+12 , 85 , 10 , 0 , 1 , 1 ,
+12 , 86 , 29 , 0 , 1 , 1 , 85
+12 , 87 , 28 , 0 , 1 , 1 , 85
+12 , 88 , 54 , 0 , 1 , 1 , 86
+12 , 89 , 52 , 0 , 1 , 1 , 87
+12 , 90 , 47 , 0 , 1 , 1 , 87
+12 , 91 , 69 , 0 , 1 , 1 , 88 90 89
+13 , 92 , 5 , 0 , 1 , 1 ,
+13 , 93 , 18 , 0 , 1 , 1 , 92
+13 , 94 , 17 , 0 , 1 , 1 , 92
+13 , 95 , 31 , 0 , 1 , 1 , 93
+13 , 96 , 31 , 0 , 1 , 1 , 94
+13 , 97 , 30 , 0 , 1 , 1 , 94
+13 , 98 , 44 , 0 , 1 , 1 , 97 95 96
+14 , 99 , 4 , 0 , 1 , 1 ,
+14 , 100 , 17 , 0 , 1 , 1 , 99
+14 , 101 , 16 , 0 , 1 , 1 , 99
+14 , 102 , 30 , 0 , 1 , 1 , 100
+14 , 103 , 29 , 0 , 1 , 1 , 101
+14 , 104 , 28 , 0 , 1 , 1 , 101
+14 , 105 , 42 , 0 , 1 , 1 , 102 104 103
+15 , 106 , 5 , 0 , 1 , 1 ,
+15 , 107 , 18 , 0 , 1 , 1 , 106
+15 , 108 , 17 , 0 , 1 , 1 , 106
+15 , 109 , 31 , 0 , 1 , 1 , 107
+15 , 110 , 30 , 0 , 1 , 1 , 108
+15 , 111 , 29 , 0 , 1 , 1 , 108
+15 , 112 , 43 , 0 , 1 , 1 , 110 111 109
+16 , 113 , 5 , 11 , 1 , 1 ,
+16 , 114 , 29 , 11 , 1 , 1 , 113
+16 , 115 , 28 , 11 , 1 , 1 , 113
+16 , 116 , 53 , 11 , 1 , 1 , 114
+16 , 117 , 52 , 11 , 1 , 1 , 115
+16 , 118 , 52 , 11 , 1 , 1 , 115
+16 , 119 , 76 , 11 , 1 , 1 , 118 116 117
+17 , 120 , 8 , 11 , 1 , 1 ,
+17 , 121 , 8 , 11 , 1 , 1 ,
+17 , 122 , 7 , 11 , 1 , 1 ,
+17 , 123 , 6 , 11 , 1 , 1 ,
+17 , 124 , 6 , 11 , 1 , 1 ,
+17 , 125 , 5 , 21 , 1 , 1 ,
+18 , 126 , 10 , 11 , 1 , 1 ,
+18 , 127 , 9 , 11 , 1 , 1 ,
+18 , 128 , 8 , 11 , 1 , 1 ,
+18 , 129 , 7 , 11 , 1 , 1 ,
+18 , 130 , 6 , 11 , 1 , 1 ,
+18 , 131 , 5 , 11 , 1 , 1 ,
+19 , 132 , 32 , 11 , 1 , 1 ,
+19 , 133 , 30 , 11 , 1 , 1 ,
+19 , 134 , 29 , 11 , 1 , 1 ,
+19 , 135 , 28 , 11 , 1 , 1 ,
+19 , 136 , 27 , 11 , 1 , 1 ,
+19 , 137 , 22 , 11 , 1 , 1 ,
+19 , 138 , 21 , 11 , 1 , 1 ,
+19 , 139 , 20 , 11 , 1 , 1 ,
+19 , 140 , 18 , 11 , 1 , 1 ,
+19 , 141 , 17 , 11 , 1 , 1 ,
+19 , 142 , 25 , 11 , 1 , 1 ,
+19 , 143 , 16 , 11 , 1 , 1 ,
+19 , 144 , 15 , 11 , 1 , 1 ,
+19 , 145 , 24 , 11 , 1 , 1 ,
+19 , 146 , 13 , 11 , 1 , 1 ,
+19 , 147 , 11 , 11 , 1 , 1 ,
+19 , 148 , 10 , 11 , 1 , 1 ,
+19 , 149 , 9 , 11 , 1 , 1 ,
+19 , 150 , 8 , 11 , 1 , 1 ,
+19 , 151 , 7 , 11 , 1 , 1 ,
+19 , 152 , 6 , 11 , 1 , 1 ,
+20 , 153 , 11 , 11 , 1 , 1 ,
+20 , 154 , 10 , 11 , 1 , 1 ,
+20 , 155 , 9 , 11 , 1 , 1 ,
+20 , 156 , 8 , 11 , 1 , 1 ,
+20 , 157 , 7 , 11 , 1 , 1 ,
+20 , 158 , 6 , 21 , 1 , 1 ,
+20 , 159 , 5 , 11 , 1 , 1 ,
+21 , 160 , 11 , 11 , 1 , 1 ,
+21 , 161 , 10 , 11 , 1 , 1 ,
+21 , 162 , 9 , 11 , 1 , 1 ,
+21 , 163 , 8 , 11 , 1 , 1 ,
+21 , 164 , 7 , 11 , 1 , 1 ,
+21 , 165 , 6 , 11 , 1 , 1 ,
+21 , 166 , 5 , 11 , 1 , 1 ,
+22 , 167 , 11 , 11 , 1 , 1 ,
+22 , 168 , 10 , 11 , 1 , 1 ,
+22 , 169 , 9 , 11 , 1 , 1 ,
+22 , 170 , 8 , 11 , 1 , 1 ,
+22 , 171 , 7 , 11 , 1 , 1 ,
+22 , 172 , 5 , 11 , 1 , 1 ,
+22 , 173 , 6 , 11 , 1 , 1 ,
+23 , 174 , 12 , 11 , 1 , 1 ,
+23 , 175 , 11 , 11 , 1 , 1 ,
+23 , 176 , 10 , 11 , 1 , 1 ,
+23 , 177 , 9 , 11 , 1 , 1 ,
+23 , 178 , 8 , 11 , 1 , 1 ,
+23 , 179 , 7 , 11 , 1 , 1 ,
+23 , 180 , 6 , 11 , 1 , 1 ,
+24 , 181 , 10 , 11 , 1 , 1 ,
+24 , 182 , 9 , 11 , 1 , 1 ,
+24 , 183 , 8 , 11 , 1 , 1 ,
+24 , 184 , 7 , 11 , 1 , 1 ,
+24 , 185 , 7 , 11 , 1 , 1 ,
+24 , 186 , 6 , 11 , 1 , 1 ,
+24 , 187 , 5 , 11 , 1 , 1 ,
+25 , 188 , 10 , 11 , 1 , 1 ,
+25 , 189 , 9 , 11 , 1 , 1 ,
+25 , 190 , 8 , 11 , 1 , 1 ,
+25 , 191 , 8 , 11 , 1 , 1 ,
+25 , 192 , 7 , 11 , 1 , 1 ,
+25 , 193 , 6 , 11 , 1 , 1 ,
+25 , 194 , 6 , 11 , 1 , 1 ,
+26 , 195 , 9 , 11 , 1 , 1 ,
+26 , 196 , 8 , 11 , 1 , 1 ,
+26 , 197 , 7 , 11 , 1 , 1 ,
+26 , 198 , 7 , 11 , 1 , 1 ,
+26 , 199 , 6 , 11 , 1 , 1 ,
+26 , 200 , 5 , 11 , 1 , 1 ,
+26 , 201 , 4 , 21 , 1 , 1 ,
+27 , 202 , 5 , 11 , 1 , 1 ,
+27 , 203 , 53 , 11 , 1 , 1 , 202
+28 , 204 , 5 , 11 , 1 , 1 ,
+28 , 205 , 53 , 11 , 1 , 1 , 204
+29 , 206 , 5 , 11 , 1 , 1 ,
+29 , 207 , 55 , 11 , 1 , 1 , 206
+29 , 208 , 54 , 11 , 1 , 1 , 206
+29 , 209 , 53 , 11 , 1 , 1 , 206
+29 , 210 , 51 , 11 , 1 , 1 , 206
+29 , 211 , 50 , 11 , 1 , 1 , 206
+29 , 212 , 47 , 11 , 1 , 1 , 206
+29 , 213 , 46 , 11 , 1 , 1 , 206
+29 , 214 , 45 , 11 , 1 , 1 , 206
+29 , 215 , 43 , 11 , 1 , 1 , 206
+29 , 216 , 41 , 11 , 1 , 1 , 206
+29 , 217 , 40 , 11 , 1 , 1 , 206
+29 , 218 , 38 , 11 , 1 , 1 , 206
+29 , 219 , 37 , 11 , 1 , 1 , 206
+29 , 220 , 35 , 11 , 1 , 1 , 206
+29 , 221 , 34 , 21 , 1 , 1 , 206
+29 , 222 , 33 , 11 , 1 , 1 , 206
+29 , 223 , 32 , 11 , 1 , 1 , 206
+29 , 224 , 30 , 11 , 1 , 1 , 206
+29 , 225 , 30 , 11 , 1 , 1 , 206
+29 , 226 , 29 , 21 , 1 , 1 , 206
+29 , 227 , 27 , 11 , 1 , 1 , 206
+30 , 228 , 5 , 11 , 1 , 1 ,
+30 , 229 , 52 , 11 , 1 , 1 , 228
+30 , 230 , 51 , 11 , 1 , 1 , 228
+30 , 231 , 50 , 11 , 1 , 1 , 228
+30 , 232 , 48 , 11 , 1 , 1 , 228
+30 , 233 , 47 , 11 , 1 , 1 , 228
+30 , 234 , 46 , 11 , 1 , 1 , 228
+30 , 235 , 44 , 21 , 1 , 1 , 228
+30 , 236 , 43 , 11 , 1 , 1 , 228
+30 , 237 , 42 , 11 , 1 , 1 , 228
+30 , 238 , 41 , 11 , 1 , 1 , 228
+30 , 239 , 39 , 11 , 1 , 1 , 228
+30 , 240 , 38 , 21 , 1 , 1 , 228
+30 , 241 , 36 , 11 , 1 , 1 , 228
+30 , 242 , 35 , 11 , 1 , 1 , 228
+30 , 243 , 32 , 11 , 1 , 1 , 228
+30 , 244 , 33 , 11 , 1 , 1 , 228
+30 , 245 , 31 , 11 , 1 , 1 , 228
+30 , 246 , 30 , 21 , 1 , 1 , 228
+30 , 247 , 29 , 11 , 1 , 1 , 228
+30 , 248 , 29 , 21 , 1 , 1 , 228
+30 , 249 , 28 , 11 , 1 , 1 , 228
+31 , 250 , 5 , 11 , 1 , 1 ,
+31 , 251 , 53 , 11 , 1 , 1 , 250
+31 , 252 , 51 , 11 , 1 , 1 , 250
+31 , 253 , 50 , 11 , 1 , 1 , 250
+31 , 254 , 48 , 11 , 1 , 1 , 250
+31 , 255 , 47 , 21 , 1 , 1 , 250
+31 , 256 , 46 , 11 , 1 , 1 , 250
+31 , 257 , 45 , 11 , 1 , 1 , 250
+31 , 258 , 43 , 11 , 1 , 1 , 250
+31 , 259 , 42 , 11 , 1 , 1 , 250
+31 , 260 , 41 , 11 , 1 , 1 , 250
+31 , 261 , 40 , 11 , 1 , 1 , 250
+31 , 262 , 39 , 11 , 1 , 1 , 250
+31 , 263 , 38 , 11 , 1 , 1 , 250
+31 , 264 , 36 , 11 , 1 , 1 , 250
+31 , 265 , 34 , 11 , 1 , 1 , 250
+31 , 266 , 32 , 11 , 1 , 1 , 250
+31 , 267 , 31 , 21 , 1 , 1 , 250
+31 , 268 , 31 , 11 , 1 , 1 , 250
+31 , 269 , 30 , 21 , 1 , 1 , 250
+31 , 270 , 29 , 11 , 1 , 1 , 250
+31 , 271 , 27 , 11 , 1 , 1 , 250
+32 , 272 , 5 , 11 , 1 , 1 ,
+32 , 273 , 55 , 11 , 1 , 1 , 272
+32 , 274 , 52 , 11 , 1 , 1 , 272
+32 , 275 , 51 , 11 , 1 , 1 , 272
+32 , 276 , 50 , 11 , 1 , 1 , 272
+32 , 277 , 49 , 11 , 1 , 1 , 272
+32 , 278 , 47 , 11 , 1 , 1 , 272
+32 , 279 , 45 , 11 , 1 , 1 , 272
+32 , 280 , 43 , 11 , 1 , 1 , 272
+32 , 281 , 53 , 11 , 1 , 1 , 272
+32 , 282 , 42 , 21 , 1 , 1 , 272
+32 , 283 , 40 , 11 , 1 , 1 , 272
+32 , 284 , 38 , 11 , 1 , 1 , 272
+32 , 285 , 37 , 11 , 1 , 1 , 272
+32 , 286 , 36 , 11 , 1 , 1 , 272
+32 , 287 , 34 , 11 , 1 , 1 , 272
+32 , 288 , 32 , 11 , 1 , 1 , 272
+32 , 289 , 31 , 11 , 1 , 1 , 272
+32 , 290 , 30 , 11 , 1 , 1 , 272
+32 , 291 , 29 , 21 , 1 , 1 , 272
+32 , 292 , 28 , 11 , 1 , 1 , 272
+32 , 293 , 27 , 11 , 1 , 1 , 272
+33 , 294 , 4 , 11 , 1 , 1 ,
+33 , 295 , 52 , 11 , 1 , 1 , 294
+33 , 296 , 49 , 11 , 1 , 1 , 294
+33 , 297 , 48 , 11 , 1 , 1 , 294
+33 , 298 , 46 , 11 , 1 , 1 , 294
+33 , 299 , 45 , 11 , 1 , 1 , 294
+33 , 300 , 44 , 11 , 1 , 1 , 294
+33 , 301 , 43 , 11 , 1 , 1 , 294
+33 , 302 , 42 , 11 , 1 , 1 , 294
+33 , 303 , 51 , 11 , 1 , 1 , 294
+33 , 304 , 40 , 11 , 1 , 1 , 294
+33 , 305 , 39 , 11 , 1 , 1 , 294
+33 , 306 , 38 , 11 , 1 , 1 , 294
+33 , 307 , 37 , 11 , 1 , 1 , 294
+33 , 308 , 35 , 11 , 1 , 1 , 294
+33 , 309 , 33 , 11 , 1 , 1 , 294
+33 , 310 , 32 , 11 , 1 , 1 , 294
+33 , 311 , 30 , 11 , 1 , 1 , 294
+33 , 312 , 29 , 11 , 1 , 1 , 294
+33 , 313 , 28 , 11 , 1 , 1 , 294
+33 , 314 , 28 , 21 , 1 , 1 , 294
+33 , 315 , 27 , 11 , 1 , 1 , 294
+34 , 316 , 5 , 11 , 1 , 1 ,
+34 , 317 , 54 , 11 , 1 , 1 , 316
+34 , 318 , 51 , 11 , 1 , 1 , 316
+34 , 319 , 50 , 11 , 1 , 1 , 316
+34 , 320 , 49 , 11 , 1 , 1 , 316
+34 , 321 , 47 , 11 , 1 , 1 , 316
+34 , 322 , 46 , 11 , 1 , 1 , 316
+34 , 323 , 45 , 11 , 1 , 1 , 316
+34 , 324 , 43 , 11 , 1 , 1 , 316
+34 , 325 , 53 , 11 , 1 , 1 , 316
+34 , 326 , 41 , 11 , 1 , 1 , 316
+34 , 327 , 39 , 11 , 1 , 1 , 316
+34 , 328 , 40 , 21 , 1 , 1 , 316
+34 , 329 , 38 , 11 , 1 , 1 , 316
+34 , 330 , 36 , 11 , 1 , 1 , 316
+34 , 331 , 35 , 11 , 1 , 1 , 316
+34 , 332 , 33 , 11 , 1 , 1 , 316
+34 , 333 , 31 , 11 , 1 , 1 , 316
+34 , 334 , 30 , 11 , 1 , 1 , 316
+34 , 335 , 29 , 11 , 1 , 1 , 316
+34 , 336 , 29 , 11 , 1 , 1 , 316
+34 , 337 , 28 , 11 , 1 , 1 , 316
+35 , 338 , 4 , 11 , 1 , 1 ,
+35 , 339 , 52 , 11 , 1 , 1 , 338
+35 , 340 , 51 , 11 , 1 , 1 , 338
+35 , 341 , 49 , 11 , 1 , 1 , 338
+35 , 342 , 48 , 11 , 1 , 1 , 338
+35 , 343 , 47 , 11 , 1 , 1 , 338
+35 , 344 , 45 , 11 , 1 , 1 , 338
+35 , 345 , 44 , 11 , 1 , 1 , 338
+35 , 346 , 53 , 11 , 1 , 1 , 338
+35 , 347 , 42 , 11 , 1 , 1 , 338
+35 , 348 , 41 , 21 , 1 , 1 , 338
+35 , 349 , 40 , 11 , 1 , 1 , 338
+35 , 350 , 39 , 11 , 1 , 1 , 338
+35 , 351 , 36 , 11 , 1 , 1 , 338
+35 , 352 , 37 , 11 , 1 , 1 , 338
+35 , 353 , 34 , 11 , 1 , 1 , 338
+35 , 354 , 33 , 11 , 1 , 1 , 338
+35 , 355 , 31 , 11 , 1 , 1 , 338
+35 , 356 , 30 , 11 , 1 , 1 , 338
+35 , 357 , 29 , 11 , 1 , 1 , 338
+35 , 358 , 28 , 11 , 1 , 1 , 338
+35 , 359 , 27 , 11 , 1 , 1 , 338
+36 , 360 , 5 , 11 , 1 , 1 ,
+36 , 361 , 53 , 11 , 1 , 1 , 360
+36 , 362 , 50 , 11 , 1 , 1 , 360
+36 , 363 , 51 , 11 , 1 , 1 , 360
+36 , 364 , 48 , 21 , 1 , 1 , 360
+36 , 365 , 47 , 11 , 1 , 1 , 360
+36 , 366 , 45 , 11 , 1 , 1 , 360
+36 , 367 , 44 , 11 , 1 , 1 , 360
+36 , 368 , 43 , 11 , 1 , 1 , 360
+36 , 369 , 54 , 11 , 1 , 1 , 360
+36 , 370 , 41 , 11 , 1 , 1 , 360
+36 , 371 , 40 , 11 , 1 , 1 , 360
+36 , 372 , 39 , 11 , 1 , 1 , 360
+36 , 373 , 37 , 11 , 1 , 1 , 360
+36 , 374 , 36 , 11 , 1 , 1 , 360
+36 , 375 , 35 , 11 , 1 , 1 , 360
+36 , 376 , 33 , 11 , 1 , 1 , 360
+36 , 377 , 31 , 11 , 1 , 1 , 360
+36 , 378 , 30 , 11 , 1 , 1 , 360
+36 , 379 , 29 , 11 , 1 , 1 , 360
+36 , 380 , 28 , 11 , 1 , 1 , 360
+36 , 381 , 27 , 11 , 1 , 1 , 360
+37 , 382 , 6 , 11 , 1 , 1 ,
+37 , 383 , 48 , 11 , 1 , 1 , 382
+37 , 384 , 47 , 11 , 1 , 1 , 382
+37 , 385 , 46 , 11 , 1 , 1 , 382
+37 , 386 , 50 , 11 , 1 , 1 , 382
+37 , 387 , 49 , 11 , 1 , 1 , 382
+37 , 388 , 53 , 11 , 1 , 1 , 382
+37 , 389 , 52 , 11 , 1 , 1 , 382
+37 , 390 , 45 , 11 , 1 , 1 , 382
+37 , 391 , 43 , 11 , 1 , 1 , 382
+37 , 392 , 42 , 11 , 1 , 1 , 382
+37 , 393 , 41 , 11 , 1 , 1 , 382
+37 , 394 , 39 , 11 , 1 , 1 , 382
+37 , 395 , 38 , 21 , 1 , 1 , 382
+37 , 396 , 36 , 11 , 1 , 1 , 382
+37 , 397 , 35 , 11 , 1 , 1 , 382
+37 , 398 , 34 , 11 , 1 , 1 , 382
+37 , 399 , 32 , 11 , 1 , 1 , 382
+37 , 400 , 31 , 11 , 1 , 1 , 382
+37 , 401 , 30 , 21 , 1 , 1 , 382
+37 , 402 , 29 , 11 , 1 , 1 , 382
+37 , 403 , 28 , 21 , 1 , 1 , 382
+38 , 404 , 5 , 11 , 1 , 1 ,
+38 , 405 , 51 , 11 , 1 , 1 , 404
+38 , 406 , 50 , 11 , 1 , 1 , 404
+38 , 407 , 53 , 11 , 1 , 1 , 404
+38 , 408 , 54 , 11 , 1 , 1 , 404
+38 , 409 , 48 , 11 , 1 , 1 , 404
+38 , 410 , 47 , 11 , 1 , 1 , 404
+38 , 411 , 46 , 21 , 1 , 1 , 404
+38 , 412 , 44 , 11 , 1 , 1 , 404
+38 , 413 , 43 , 21 , 1 , 1 , 404
+38 , 414 , 41 , 11 , 1 , 1 , 404
+38 , 415 , 40 , 11 , 1 , 1 , 404
+38 , 416 , 39 , 11 , 1 , 1 , 404
+38 , 417 , 38 , 11 , 1 , 1 , 404
+38 , 418 , 36 , 11 , 1 , 1 , 404
+38 , 419 , 35 , 11 , 1 , 1 , 404
+38 , 420 , 32 , 11 , 1 , 1 , 404
+38 , 421 , 34 , 11 , 1 , 1 , 404
+38 , 422 , 30 , 11 , 1 , 1 , 404
+38 , 423 , 29 , 11 , 1 , 1 , 404
+38 , 424 , 28 , 11 , 1 , 1 , 404
+38 , 425 , 27 , 11 , 1 , 1 , 404
+39 , 426 , 17 , 143 , 1 , 1 ,
+39 , 427 , 10 , 164 , 1 , 1 ,
+39 , 428 , 13 , 184 , 1 , 1 ,
+39 , 429 , 7 , 41 , 1 , 1 ,
+39 , 430 , 6 , 154 , 1 , 1 ,
+39 , 431 , 15 , 143 , 1 , 1 ,
+39 , 432 , 9 , 154 , 1 , 1 ,
+39 , 433 , 11 , 143 , 1 , 1 ,
+39 , 434 , 210 , 21 , 1 , 1 , 433 429 426 430 432 427 431 428
+40 , 435 , 15 , 72 , 1 , 1 ,
+40 , 436 , 11 , 82 , 1 , 1 ,
+40 , 437 , 13 , 92 , 1 , 1 ,
+40 , 438 , 7 , 82 , 1 , 1 ,
+40 , 439 , 17 , 72 , 1 , 1 ,
+40 , 440 , 16 , 82 , 1 , 1 ,
+40 , 441 , 12 , 82 , 1 , 1 ,
+40 , 442 , 11 , 72 , 1 , 1 ,
+40 , 443 , 119 , 11 , 1 , 1 , 437 442 438 435 441 440 439 436
+41 , 444 , 15 , 72 , 1 , 1 ,
+41 , 445 , 13 , 82 , 1 , 1 ,
+41 , 446 , 11 , 92 , 1 , 1 ,
+41 , 447 , 9 , 92 , 1 , 1 ,
+41 , 448 , 14 , 72 , 1 , 1 ,
+41 , 449 , 16 , 82 , 1 , 1 ,
+41 , 450 , 8 , 92 , 1 , 1 ,
+41 , 451 , 7 , 82 , 1 , 1 ,
+41 , 452 , 117 , 21 , 1 , 1 , 446 451 447 450 449 445 444 448
+42 , 453 , 16 , 72 , 1 , 1 ,
+42 , 454 , 13 , 82 , 1 , 1 ,
+42 , 455 , 6 , 82 , 1 , 1 ,
+42 , 456 , 11 , 92 , 1 , 1 ,
+42 , 457 , 14 , 82 , 1 , 1 ,
+42 , 458 , 8 , 92 , 1 , 1 ,
+42 , 459 , 15 , 82 , 1 , 1 ,
+42 , 460 , 10 , 72 , 1 , 1 ,
+42 , 461 , 117 , 11 , 1 , 1 , 459 455 453 460 457 454 456 458
+43 , 462 , 18 , 72 , 1 , 1 ,
+43 , 463 , 17 , 82 , 1 , 1 ,
+43 , 464 , 16 , 82 , 1 , 1 ,
+43 , 465 , 15 , 82 , 1 , 1 ,
+43 , 466 , 14 , 82 , 1 , 1 ,
+43 , 467 , 12 , 72 , 1 , 1 ,
+43 , 468 , 9 , 82 , 1 , 1 ,
+43 , 469 , 11 , 82 , 1 , 1 ,
+43 , 470 , 112 , 11 , 1 , 1 , 462 463 465 466 467 469 464 468
+44 , 471 , 17 , 72 , 1 , 1 ,
+44 , 472 , 13 , 82 , 1 , 1 ,
+44 , 473 , 12 , 92 , 1 , 1 ,
+44 , 474 , 8 , 92 , 1 , 1 ,
+44 , 475 , 7 , 82 , 1 , 1 ,
+44 , 476 , 16 , 83 , 1 , 1 ,
+44 , 477 , 11 , 82 , 1 , 1 ,
+44 , 478 , 10 , 82 , 1 , 1 ,
+44 , 479 , 727 , 11 , 1 , 1 , 477 471 478 476 473 472 474 475
+45 , 480 , 16 , 62 , 1 , 1 ,
+45 , 481 , 14 , 82 , 1 , 1 ,
+45 , 482 , 10 , 82 , 1 , 1 ,
+45 , 483 , 18 , 82 , 1 , 1 ,
+45 , 484 , 12 , 82 , 1 , 1 ,
+45 , 485 , 7 , 82 , 1 , 1 ,
+45 , 486 , 10 , 92 , 1 , 1 ,
+45 , 487 , 13 , 72 , 1 , 1 ,
+45 , 488 , 115 , 11 , 1 , 1 , 484 486 481 482 485 487 480 483
+46 , 489 , 15 , 72 , 1 , 1 ,
+46 , 490 , 12 , 82 , 1 , 1 ,
+46 , 491 , 13 , 92 , 1 , 1 ,
+46 , 492 , 11 , 82 , 1 , 1 ,
+46 , 493 , 9 , 82 , 1 , 1 ,
+46 , 494 , 10 , 82 , 1 , 1 ,
+46 , 495 , 6 , 82 , 1 , 1 ,
+46 , 496 , 8 , 82 , 1 , 1 ,
+46 , 497 , 119 , 11 , 1 , 1 , 495 493 491 494 492 489 496 490
+47 , 498 , 16 , 72 , 1 , 1 ,
+47 , 499 , 15 , 82 , 1 , 1 ,
+47 , 500 , 13 , 92 , 1 , 1 ,
+47 , 501 , 7 , 92 , 1 , 1 ,
+47 , 502 , 11 , 82 , 1 , 1 ,
+47 , 503 , 9 , 82 , 1 , 1 ,
+47 , 504 , 12 , 82 , 1 , 1 ,
+47 , 505 , 10 , 82 , 1 , 1 ,
+47 , 506 , 119 , 11 , 1 , 1 , 503 499 498 505 502 504 500 501
+48 , 507 , 12 , 72 , 1 , 1 ,
+48 , 508 , 11 , 82 , 1 , 1 ,
+48 , 509 , 13 , 92 , 1 , 1 ,
+48 , 510 , 7 , 82 , 1 , 1 ,
+48 , 511 , 10 , 82 , 1 , 1 ,
+48 , 512 , 15 , 82 , 1 , 1 ,
+48 , 513 , 9 , 82 , 1 , 1 ,
+48 , 514 , 8 , 72 , 1 , 1 ,
+48 , 515 , 119 , 11 , 1 , 1 , 514 507 511 510 512 509 508 513
+49 , 516 , 12 , 72 , 1 , 1 ,
+49 , 517 , 14 , 72 , 1 , 1 ,
+49 , 518 , 13 , 92 , 1 , 1 ,
+49 , 519 , 15 , 92 , 1 , 1 ,
+49 , 520 , 16 , 82 , 1 , 1 ,
+49 , 521 , 7 , 82 , 1 , 1 ,
+49 , 522 , 10 , 82 , 1 , 1 ,
+49 , 523 , 9 , 82 , 1 , 1 ,
+49 , 524 , 122 , 11 , 1 , 1 , 523 522 520 517 519 518 516 521
+50 , 525 , 14 , 72 , 1 , 1 ,
+50 , 526 , 12 , 72 , 1 , 1 ,
+50 , 527 , 13 , 92 , 1 , 1 ,
+50 , 528 , 11 , 82 , 1 , 1 ,
+50 , 529 , 7 , 82 , 1 , 1 ,
+50 , 530 , 18 , 82 , 1 , 1 ,
+50 , 531 , 16 , 82 , 1 , 1 ,
+50 , 532 , 15 , 82 , 1 , 1 ,
+50 , 533 , 117 , 11 , 1 , 1 , 531 528 525 526 532 529 530 527
+51 , 534 , 8 , 72 , 1 , 1 ,
+51 , 535 , 8 , 72 , 1 , 1 ,
+51 , 536 , 7 , 92 , 1 , 1 ,
+51 , 537 , 7 , 82 , 1 , 1 ,
+51 , 538 , 7 , 82 , 1 , 1 ,
+51 , 539 , 6 , 72 , 1 , 1 ,
+51 , 540 , 5 , 83 , 1 , 1 ,
+51 , 541 , 4 , 82 , 1 , 1 ,
+51 , 542 , 112 , 11 , 1 , 1 , 539 535 538 541 536 540 534 537
+52 , 543 , 18 , 72 , 1 , 1 ,
+52 , 544 , 17 , 62 , 1 , 1 ,
+52 , 545 , 17 , 72 , 1 , 1 ,
+52 , 546 , 16 , 72 , 1 , 1 ,
+52 , 547 , 16 , 72 , 1 , 1 ,
+52 , 548 , 16 , 72 , 1 , 1 ,
+52 , 549 , 15 , 92 , 1 , 1 ,
+52 , 550 , 15 , 92 , 1 , 1 ,
+52 , 551 , 15 , 82 , 1 , 1 ,
+52 , 552 , 14 , 82 , 1 , 1 ,
+52 , 553 , 14 , 103 , 1 , 1 ,
+52 , 554 , 14 , 92 , 1 , 1 ,
+52 , 555 , 13 , 92 , 1 , 1 ,
+52 , 556 , 13 , 82 , 1 , 1 ,
+52 , 557 , 12 , 82 , 1 , 1 ,
+52 , 558 , 12 , 82 , 1 , 1 ,
+52 , 559 , 11 , 82 , 1 , 1 ,
+52 , 560 , 11 , 82 , 1 , 1 ,
+52 , 561 , 11 , 82 , 1 , 1 ,
+52 , 562 , 10 , 82 , 1 , 1 ,
+52 , 563 , 10 , 82 , 1 , 1 ,
+52 , 564 , 9 , 82 , 1 , 1 ,
+52 , 565 , 9 , 92 , 1 , 1 ,
+52 , 566 , 8 , 92 , 1 , 1 ,
+52 , 567 , 8 , 92 , 1 , 1 ,
+52 , 568 , 8 , 92 , 1 , 1 ,
+52 , 569 , 7 , 72 , 1 , 1 ,
+52 , 570 , 7 , 82 , 1 , 1 ,
+52 , 571 , 6 , 82 , 1 , 1 ,
+52 , 572 , 5 , 82 , 1 , 1 ,
+52 , 573 , 138 , 31 , 1 , 1 , 554 568 555 553 561 544 564 566 567 545 550 569 559 551 572 560 562 570 543 565 556 563 548 558 547 546 549 571 552 557
+53 , 574 , 45 , 194 , 1 , 1 ,
+53 , 575 , 45 , 174 , 1 , 1 ,
+53 , 576 , 44 , 194 , 1 , 1 ,
+53 , 577 , 44 , 184 , 1 , 1 ,
+53 , 578 , 44 , 164 , 1 , 1 ,
+53 , 579 , 43 , 174 , 1 , 1 ,
+53 , 580 , 43 , 184 , 1 , 1 ,
+53 , 581 , 43 , 174 , 1 , 1 ,
+53 , 582 , 42 , 184 , 1 , 1 ,
+53 , 583 , 42 , 194 , 1 , 1 ,
+53 , 584 , 42 , 194 , 1 , 1 ,
+53 , 585 , 41 , 194 , 1 , 1 ,
+53 , 586 , 41 , 184 , 1 , 1 ,
+53 , 587 , 40 , 194 , 1 , 1 ,
+53 , 588 , 40 , 184 , 1 , 1 ,
+53 , 589 , 40 , 205 , 1 , 1 ,
+53 , 590 , 39 , 194 , 1 , 1 ,
+53 , 591 , 39 , 215 , 1 , 1 ,
+53 , 592 , 38 , 215 , 1 , 1 ,
+53 , 593 , 38 , 205 , 1 , 1 ,
+53 , 594 , 38 , 225 , 1 , 1 ,
+53 , 595 , 37 , 235 , 1 , 1 ,
+53 , 596 , 37 , 215 , 1 , 1 ,
+53 , 597 , 37 , 235 , 1 , 1 ,
+53 , 598 , 36 , 235 , 1 , 1 ,
+53 , 599 , 36 , 225 , 1 , 1 ,
+53 , 600 , 35 , 225 , 1 , 1 ,
+53 , 601 , 35 , 235 , 1 , 1 ,
+53 , 602 , 35 , 235 , 1 , 1 ,
+53 , 603 , 34 , 245 , 1 , 1 ,
+53 , 604 , 34 , 256 , 1 , 1 ,
+53 , 605 , 34 , 256 , 1 , 1 ,
+53 , 606 , 33 , 256 , 1 , 1 ,
+53 , 607 , 33 , 276 , 1 , 1 ,
+53 , 608 , 32 , 286 , 1 , 1 ,
+53 , 609 , 32 , 286 , 1 , 1 ,
+53 , 610 , 32 , 276 , 1 , 1 ,
+53 , 611 , 31 , 266 , 1 , 1 ,
+53 , 612 , 31 , 256 , 1 , 1 ,
+53 , 613 , 31 , 256 , 1 , 1 ,
+53 , 614 , 30 , 245 , 1 , 1 ,
+53 , 615 , 30 , 235 , 1 , 1 ,
+53 , 616 , 30 , 235 , 1 , 1 ,
+53 , 617 , 29 , 225 , 1 , 1 ,
+53 , 618 , 29 , 215 , 1 , 1 ,
+53 , 619 , 29 , 215 , 1 , 1 ,
+53 , 620 , 28 , 225 , 1 , 1 ,
+53 , 621 , 27 , 225 , 1 , 1 ,
+53 , 622 , 27 , 215 , 1 , 1 ,
+53 , 623 , 26 , 215 , 1 , 1 ,
+53 , 624 , 26 , 205 , 1 , 1 ,
+53 , 625 , 26 , 215 , 1 , 1 ,
+53 , 626 , 25 , 205 , 1 , 1 ,
+53 , 627 , 25 , 194 , 1 , 1 ,
+53 , 628 , 24 , 215 , 1 , 1 ,
+53 , 629 , 24 , 225 , 1 , 1 ,
+53 , 630 , 24 , 215 , 1 , 1 ,
+53 , 631 , 23 , 215 , 1 , 1 ,
+53 , 632 , 23 , 205 , 1 , 1 ,
+53 , 633 , 23 , 194 , 1 , 1 ,
+53 , 634 , 22 , 215 , 1 , 1 ,
+53 , 635 , 22 , 205 , 1 , 1 ,
+53 , 636 , 22 , 205 , 1 , 1 ,
+53 , 637 , 21 , 205 , 1 , 1 ,
+53 , 638 , 21 , 225 , 1 , 1 ,
+53 , 639 , 21 , 235 , 1 , 1 ,
+53 , 640 , 20 , 245 , 1 , 1 ,
+53 , 641 , 20 , 245 , 1 , 1 ,
+53 , 642 , 20 , 225 , 1 , 1 ,
+53 , 643 , 19 , 225 , 1 , 1 ,
+53 , 644 , 19 , 225 , 1 , 1 ,
+53 , 645 , 18 , 225 , 1 , 1 ,
+53 , 646 , 17 , 205 , 1 , 1 ,
+53 , 647 , 17 , 225 , 1 , 1 ,
+53 , 648 , 17 , 225 , 1 , 1 ,
+53 , 649 , 16 , 225 , 1 , 1 ,
+53 , 650 , 16 , 215 , 1 , 1 ,
+53 , 651 , 15 , 225 , 1 , 1 ,
+53 , 652 , 15 , 235 , 1 , 1 ,
+53 , 653 , 14 , 235 , 1 , 1 ,
+53 , 654 , 14 , 215 , 1 , 1 ,
+53 , 655 , 14 , 245 , 1 , 1 ,
+53 , 656 , 13 , 235 , 1 , 1 ,
+53 , 657 , 13 , 235 , 1 , 1 ,
+53 , 658 , 12 , 215 , 1 , 1 ,
+53 , 659 , 12 , 215 , 1 , 1 ,
+53 , 660 , 12 , 205 , 1 , 1 ,
+53 , 661 , 11 , 194 , 1 , 1 ,
+53 , 662 , 11 , 194 , 1 , 1 ,
+53 , 663 , 11 , 194 , 1 , 1 ,
+53 , 664 , 11 , 194 , 1 , 1 ,
+53 , 665 , 10 , 215 , 1 , 1 ,
+53 , 666 , 10 , 215 , 1 , 1 ,
+53 , 667 , 10 , 215 , 1 , 1 ,
+53 , 668 , 10 , 225 , 1 , 1 ,
+53 , 669 , 9 , 225 , 1 , 1 ,
+53 , 670 , 9 , 205 , 1 , 1 ,
+53 , 671 , 9 , 205 , 1 , 1 ,
+53 , 672 , 8 , 194 , 1 , 1 ,
+53 , 673 , 7 , 194 , 1 , 1 ,
+53 , 674 , 467 , 409 , 1 , 1 , 612 649 652 668 658 639 592 615 667 578 627 654 655 620 606 671 659 575 595 662 597 608 653 588 669 617 651 593 634 632 638 664 579 585 590 611 598 594 584 576 645 604 596 650 648 616 613 635 589 623 647 656 622 574 581 633 630 599 587 637 666 628 619 580 609 621 665 673 602 643 591 607 577 644 603 661 626 610 614 605 660 641 618 625 601 670 629 636 640 672 657 600 624 642 583 631 586 663 646 582
+54 , 675 , 35 , 92 , 1 , 1 ,
+54 , 676 , 35 , 93 , 1 , 1 ,
+54 , 677 , 34 , 92 , 1 , 1 ,
+54 , 678 , 34 , 92 , 1 , 1 ,
+54 , 679 , 33 , 92 , 1 , 1 ,
+54 , 680 , 33 , 92 , 1 , 1 ,
+54 , 681 , 33 , 92 , 1 , 1 ,
+54 , 682 , 32 , 103 , 1 , 1 ,
+54 , 683 , 32 , 92 , 1 , 1 ,
+54 , 684 , 31 , 92 , 1 , 1 ,
+54 , 685 , 31 , 103 , 1 , 1 ,
+54 , 686 , 30 , 103 , 1 , 1 ,
+54 , 687 , 30 , 103 , 1 , 1 ,
+54 , 688 , 30 , 103 , 1 , 1 ,
+54 , 689 , 29 , 113 , 1 , 1 ,
+54 , 690 , 29 , 113 , 1 , 1 ,
+54 , 691 , 29 , 123 , 1 , 1 ,
+54 , 692 , 28 , 123 , 1 , 1 ,
+54 , 693 , 27 , 123 , 1 , 1 ,
+54 , 694 , 27 , 113 , 1 , 1 ,
+54 , 695 , 27 , 113 , 1 , 1 ,
+54 , 696 , 26 , 113 , 1 , 1 ,
+54 , 697 , 26 , 123 , 1 , 1 ,
+54 , 698 , 25 , 133 , 1 , 1 ,
+54 , 699 , 25 , 133 , 1 , 1 ,
+54 , 700 , 25 , 134 , 1 , 1 ,
+54 , 701 , 24 , 123 , 1 , 1 ,
+54 , 702 , 24 , 123 , 1 , 1 ,
+54 , 703 , 23 , 113 , 1 , 1 ,
+54 , 704 , 23 , 113 , 1 , 1 ,
+54 , 705 , 23 , 113 , 1 , 1 ,
+54 , 706 , 22 , 103 , 1 , 1 ,
+54 , 707 , 22 , 113 , 1 , 1 ,
+54 , 708 , 22 , 113 , 1 , 1 ,
+54 , 709 , 21 , 103 , 1 , 1 ,
+54 , 710 , 21 , 103 , 1 , 1 ,
+54 , 711 , 20 , 103 , 1 , 1 ,
+54 , 712 , 20 , 103 , 1 , 1 ,
+54 , 713 , 19 , 103 , 1 , 1 ,
+54 , 714 , 18 , 113 , 1 , 1 ,
+54 , 715 , 18 , 102 , 1 , 1 ,
+54 , 716 , 18 , 103 , 1 , 1 ,
+54 , 717 , 17 , 92 , 1 , 1 ,
+54 , 718 , 17 , 103 , 1 , 1 ,
+54 , 719 , 16 , 103 , 1 , 1 ,
+54 , 720 , 16 , 113 , 1 , 1 ,
+54 , 721 , 16 , 113 , 1 , 1 ,
+54 , 722 , 15 , 113 , 1 , 1 ,
+54 , 723 , 15 , 113 , 1 , 1 ,
+54 , 724 , 14 , 103 , 1 , 1 ,
+54 , 725 , 14 , 103 , 1 , 1 ,
+54 , 726 , 13 , 103 , 1 , 1 ,
+54 , 727 , 13 , 113 , 1 , 1 ,
+54 , 728 , 13 , 113 , 1 , 1 ,
+54 , 729 , 12 , 103 , 1 , 1 ,
+54 , 730 , 12 , 113 , 1 , 1 ,
+54 , 731 , 11 , 113 , 1 , 1 ,
+54 , 732 , 11 , 113 , 1 , 1 ,
+54 , 733 , 10 , 103 , 1 , 1 ,
+54 , 734 , 10 , 92 , 1 , 1 ,
+54 , 735 , 10 , 103 , 1 , 1 ,
+54 , 736 , 10 , 103 , 1 , 1 ,
+54 , 737 , 9 , 103 , 1 , 1 ,
+54 , 738 , 9 , 103 , 1 , 1 ,
+54 , 739 , 9 , 103 , 1 , 1 ,
+54 , 740 , 8 , 103 , 1 , 1 ,
+54 , 741 , 8 , 103 , 1 , 1 ,
+54 , 742 , 8 , 103 , 1 , 1 ,
+54 , 743 , 7 , 103 , 1 , 1 ,
+54 , 744 , 6 , 92 , 1 , 1 ,
+54 , 745 , 169 , 103 , 1 , 1 , 726 722 705 729 694 689 697 675 685 703 699 727 735 677 707 723 740 710 695 742 721 716 719 683 676 678 732 688 691 711 739 700 712 717 679 706 702 713 733 744 690 731 730 681 692 718 686 725 743 736 680 715 687 704 714 720 738 737 741 734 708 724 684 709 698 701 696 693 728 682
+55 , 746 , 7 , 164 , 1 , 1 ,
+55 , 747 , 7 , 225 , 1 , 1 ,
+55 , 748 , 6 , 194 , 1 , 1 ,
+55 , 749 , 6 , 194 , 1 , 1 ,
+55 , 750 , 5 , 184 , 1 , 1 ,
+55 , 751 , 243 , 21 , 1 , 1 , 748 750 747 746 749
+56 , 752 , 78 , 173 , 1 , 1 ,
+56 , 753 , 74 , 21 , 1 , 1 ,
+56 , 754 , 73 , 84 , 1 , 1 ,
+56 , 755 , 77 , 173 , 1 , 1 ,
+56 , 756 , 73 , 21 , 1 , 1 ,
+56 , 757 , 72 , 84 , 1 , 1 ,
+56 , 758 , 77 , 162 , 1 , 1 ,
+56 , 759 , 72 , 21 , 1 , 1 ,
+56 , 760 , 71 , 53 , 1 , 1 ,
+56 , 761 , 77 , 152 , 1 , 1 ,
+56 , 762 , 70 , 21 , 1 , 1 ,
+56 , 763 , 69 , 53 , 1 , 1 ,
+56 , 764 , 76 , 152 , 1 , 1 ,
+56 , 765 , 69 , 21 , 1 , 1 ,
+56 , 766 , 68 , 53 , 1 , 1 ,
+56 , 767 , 76 , 152 , 1 , 1 ,
+56 , 768 , 68 , 21 , 1 , 1 ,
+56 , 769 , 67 , 53 , 1 , 1 ,
+56 , 770 , 76 , 142 , 1 , 1 ,
+56 , 771 , 67 , 21 , 1 , 1 ,
+56 , 772 , 66 , 53 , 1 , 1 ,
+56 , 773 , 76 , 142 , 1 , 1 ,
+56 , 774 , 65 , 31 , 1 , 1 ,
+56 , 775 , 64 , 42 , 1 , 1 ,
+56 , 776 , 75 , 142 , 1 , 1 ,
+56 , 777 , 64 , 21 , 1 , 1 ,
+56 , 778 , 63 , 42 , 1 , 1 ,
+56 , 779 , 75 , 132 , 1 , 1 ,
+56 , 780 , 63 , 31 , 1 , 1 ,
+56 , 781 , 62 , 42 , 1 , 1 ,
+56 , 782 , 75 , 142 , 1 , 1 ,
+56 , 783 , 62 , 21 , 1 , 1 ,
+56 , 784 , 61 , 63 , 1 , 1 ,
+56 , 785 , 75 , 142 , 1 , 1 ,
+56 , 786 , 60 , 31 , 1 , 1 ,
+56 , 787 , 60 , 74 , 1 , 1 ,
+56 , 788 , 74 , 142 , 1 , 1 ,
+56 , 789 , 59 , 31 , 1 , 1 ,
+56 , 790 , 54 , 74 , 1 , 1 ,
+56 , 791 , 59 , 31 , 1 , 1 ,
+56 , 792 , 53 , 94 , 1 , 1 ,
+56 , 793 , 59 , 31 , 1 , 1 ,
+56 , 794 , 52 , 105 , 1 , 1 ,
+56 , 795 , 59 , 31 , 1 , 1 ,
+56 , 796 , 51 , 94 , 1 , 1 ,
+56 , 797 , 58 , 21 , 1 , 1 ,
+56 , 798 , 50 , 105 , 1 , 1 ,
+56 , 799 , 58 , 31 , 1 , 1 ,
+56 , 800 , 49 , 115 , 1 , 1 ,
+56 , 801 , 58 , 21 , 1 , 1 ,
+56 , 802 , 48 , 105 , 1 , 1 ,
+56 , 803 , 58 , 21 , 1 , 1 ,
+56 , 804 , 47 , 116 , 1 , 1 ,
+56 , 805 , 57 , 21 , 1 , 1 ,
+56 , 806 , 46 , 95 , 1 , 1 ,
+56 , 807 , 57 , 21 , 1 , 1 ,
+56 , 808 , 45 , 94 , 1 , 1 ,
+56 , 809 , 57 , 21 , 1 , 1 ,
+56 , 810 , 44 , 74 , 1 , 1 ,
+56 , 811 , 56 , 31 , 1 , 1 ,
+56 , 812 , 44 , 74 , 1 , 1 ,
+56 , 813 , 56 , 21 , 1 , 1 ,
+56 , 814 , 43 , 53 , 1 , 1 ,
+56 , 815 , 56 , 21 , 1 , 1 ,
+56 , 816 , 42 , 53 , 1 , 1 ,
+56 , 817 , 55 , 31 , 1 , 1 ,
+56 , 818 , 41 , 53 , 1 , 1 ,
+56 , 819 , 40 , 42 , 1 , 1 ,
+56 , 820 , 39 , 53 , 1 , 1 ,
+56 , 821 , 38 , 53 , 1 , 1 ,
+56 , 822 , 37 , 53 , 1 , 1 ,
+56 , 823 , 36 , 42 , 1 , 1 ,
+56 , 824 , 35 , 42 , 1 , 1 ,
+56 , 825 , 34 , 42 , 1 , 1 ,
+56 , 826 , 33 , 42 , 1 , 1 ,
+56 , 827 , 32 , 42 , 1 , 1 ,
+56 , 828 , 32 , 43 , 1 , 1 ,
+56 , 829 , 31 , 42 , 1 , 1 ,
+56 , 830 , 30 , 53 , 1 , 1 ,
+56 , 831 , 29 , 53 , 1 , 1 ,
+56 , 832 , 28 , 53 , 1 , 1 ,
+56 , 833 , 27 , 53 , 1 , 1 ,
+56 , 834 , 26 , 53 , 1 , 1 ,
+56 , 835 , 25 , 53 , 1 , 1 ,
+56 , 836 , 24 , 53 , 1 , 1 ,
+56 , 837 , 23 , 63 , 1 , 1 ,
+56 , 838 , 22 , 63 , 1 , 1 ,
+56 , 839 , 21 , 63 , 1 , 1 ,
+56 , 840 , 20 , 64 , 1 , 1 ,
+56 , 841 , 19 , 63 , 1 , 1 ,
+56 , 842 , 19 , 74 , 1 , 1 ,
+56 , 843 , 17 , 84 , 1 , 1 ,
+56 , 844 , 17 , 85 , 1 , 1 ,
+56 , 845 , 16 , 95 , 1 , 1 ,
+56 , 846 , 15 , 95 , 1 , 1 ,
+56 , 847 , 14 , 95 , 1 , 1 ,
+56 , 848 , 13 , 95 , 1 , 1 ,
+56 , 849 , 12 , 105 , 1 , 1 ,
+56 , 850 , 11 , 95 , 1 , 1 ,
+56 , 851 , 10 , 84 , 1 , 1 ,
+56 , 852 , 333 , 74 , 1 , 1 , 783 805 792 787 759 834 786 833 796 766 772 828 822 774 755 842 752 793 801 808 763 843 835 813 823 767 769 775 817 824 848 816 840 847 780 851 762 812 776 850 818 753 820 797 782 794 806 802 829 804 758 791 825 768 757 827 838 773 781 832 841 788 839 799 770 846 810 819 844 765 795 814 784 830 785 777 771 815 831 798 754 790 756 836 849 778 760 803 809 807 821 845 779 764 800 811 837 789 761 826
+57 , 853 , 76 , 74 , 1 , 1 ,
+57 , 854 , 75 , 74 , 1 , 1 ,
+57 , 855 , 81 , 92 , 1 , 1 ,
+57 , 856 , 74 , 73 , 1 , 1 ,
+57 , 857 , 73 , 74 , 1 , 1 ,
+57 , 858 , 81 , 193 , 1 , 1 ,
+57 , 859 , 73 , 21 , 1 , 1 ,
+57 , 860 , 72 , 63 , 1 , 1 ,
+57 , 861 , 81 , 183 , 1 , 1 ,
+57 , 862 , 71 , 21 , 1 , 1 ,
+57 , 863 , 70 , 63 , 1 , 1 ,
+57 , 864 , 80 , 173 , 1 , 1 ,
+57 , 865 , 70 , 21 , 1 , 1 ,
+57 , 866 , 69 , 53 , 1 , 1 ,
+57 , 867 , 80 , 173 , 1 , 1 ,
+57 , 868 , 69 , 21 , 1 , 1 ,
+57 , 869 , 68 , 42 , 1 , 1 ,
+57 , 870 , 80 , 173 , 1 , 1 ,
+57 , 871 , 67 , 21 , 1 , 1 ,
+57 , 872 , 66 , 53 , 1 , 1 ,
+57 , 873 , 79 , 173 , 1 , 1 ,
+57 , 874 , 66 , 21 , 1 , 1 ,
+57 , 875 , 65 , 53 , 1 , 1 ,
+57 , 876 , 79 , 162 , 1 , 1 ,
+57 , 877 , 65 , 21 , 1 , 1 ,
+57 , 878 , 64 , 53 , 1 , 1 ,
+57 , 879 , 79 , 173 , 1 , 1 ,
+57 , 880 , 64 , 21 , 1 , 1 ,
+57 , 881 , 63 , 42 , 1 , 1 ,
+57 , 882 , 79 , 173 , 1 , 1 ,
+57 , 883 , 63 , 21 , 1 , 1 ,
+57 , 884 , 62 , 42 , 1 , 1 ,
+57 , 885 , 78 , 185 , 1 , 1 ,
+57 , 886 , 61 , 21 , 1 , 1 ,
+57 , 887 , 60 , 63 , 1 , 1 ,
+57 , 888 , 78 , 196 , 1 , 1 ,
+57 , 889 , 60 , 31 , 1 , 1 ,
+57 , 890 , 59 , 74 , 1 , 1 ,
+57 , 891 , 78 , 196 , 1 , 1 ,
+57 , 892 , 59 , 31 , 1 , 1 ,
+57 , 893 , 58 , 95 , 1 , 1 ,
+57 , 894 , 77 , 203 , 1 , 1 ,
+57 , 895 , 58 , 21 , 1 , 1 ,
+57 , 896 , 57 , 94 , 1 , 1 ,
+57 , 897 , 77 , 203 , 1 , 1 ,
+57 , 898 , 57 , 21 , 1 , 1 ,
+57 , 899 , 56 , 105 , 1 , 1 ,
+57 , 900 , 77 , 213 , 1 , 1 ,
+57 , 901 , 56 , 21 , 1 , 1 ,
+57 , 902 , 55 , 105 , 1 , 1 ,
+57 , 903 , 77 , 193 , 1 , 1 ,
+57 , 904 , 54 , 21 , 1 , 1 ,
+57 , 905 , 53 , 115 , 1 , 1 ,
+57 , 906 , 52 , 105 , 1 , 1 ,
+57 , 907 , 51 , 105 , 1 , 1 ,
+57 , 908 , 50 , 94 , 1 , 1 ,
+57 , 909 , 49 , 94 , 1 , 1 ,
+57 , 910 , 49 , 94 , 1 , 1 ,
+57 , 911 , 48 , 84 , 1 , 1 ,
+57 , 912 , 47 , 74 , 1 , 1 ,
+57 , 913 , 46 , 63 , 1 , 1 ,
+57 , 914 , 45 , 63 , 1 , 1 ,
+57 , 915 , 44 , 63 , 1 , 1 ,
+57 , 916 , 43 , 63 , 1 , 1 ,
+57 , 917 , 42 , 53 , 1 , 1 ,
+57 , 918 , 41 , 42 , 1 , 1 ,
+57 , 919 , 40 , 53 , 1 , 1 ,
+57 , 920 , 39 , 42 , 1 , 1 ,
+57 , 921 , 38 , 53 , 1 , 1 ,
+57 , 922 , 37 , 53 , 1 , 1 ,
+57 , 923 , 36 , 42 , 1 , 1 ,
+57 , 924 , 35 , 42 , 1 , 1 ,
+57 , 925 , 34 , 42 , 1 , 1 ,
+57 , 926 , 34 , 42 , 1 , 1 ,
+57 , 927 , 33 , 42 , 1 , 1 ,
+57 , 928 , 32 , 42 , 1 , 1 ,
+57 , 929 , 31 , 53 , 1 , 1 ,
+57 , 930 , 30 , 42 , 1 , 1 ,
+57 , 931 , 29 , 53 , 1 , 1 ,
+57 , 932 , 28 , 53 , 1 , 1 ,
+57 , 933 , 27 , 53 , 1 , 1 ,
+57 , 934 , 26 , 53 , 1 , 1 ,
+57 , 935 , 25 , 53 , 1 , 1 ,
+57 , 936 , 24 , 53 , 1 , 1 ,
+57 , 937 , 23 , 53 , 1 , 1 ,
+57 , 938 , 22 , 63 , 1 , 1 ,
+57 , 939 , 21 , 53 , 1 , 1 ,
+57 , 940 , 20 , 63 , 1 , 1 ,
+57 , 941 , 19 , 63 , 1 , 1 ,
+57 , 942 , 18 , 63 , 1 , 1 ,
+57 , 943 , 17 , 74 , 1 , 1 ,
+57 , 944 , 16 , 84 , 1 , 1 ,
+57 , 945 , 15 , 84 , 1 , 1 ,
+57 , 946 , 15 , 95 , 1 , 1 ,
+57 , 947 , 14 , 95 , 1 , 1 ,
+57 , 948 , 13 , 95 , 1 , 1 ,
+57 , 949 , 12 , 95 , 1 , 1 ,
+57 , 950 , 11 , 105 , 1 , 1 ,
+57 , 951 , 10 , 95 , 1 , 1 ,
+57 , 952 , 9 , 84 , 1 , 1 ,
+57 , 953 , 353 , 94 , 1 , 1 , 861 860 867 890 923 917 854 930 898 927 858 916 857 863 877 935 928 886 926 876 894 911 939 909 869 936 919 901 888 896 859 904 855 881 943 918 921 929 887 892 948 865 893 878 872 947 889 880 908 882 913 900 871 873 905 946 884 924 870 912 879 949 853 883 938 934 862 903 951 937 931 914 907 944 856 933 874 941 899 864 922 952 925 902 910 895 868 942 945 906 940 891 885 866 915 875 920 897 950 932
+58 , 954 , 41 , 162 , 1 , 1 ,
+58 , 955 , 41 , 21 , 1 , 1 ,
+58 , 956 , 54 , 84 , 1 , 1 ,
+58 , 957 , 41 , 162 , 1 , 1 ,
+58 , 958 , 41 , 31 , 1 , 1 ,
+58 , 959 , 53 , 73 , 1 , 1 ,
+58 , 960 , 40 , 152 , 1 , 1 ,
+58 , 961 , 40 , 21 , 1 , 1 ,
+58 , 962 , 52 , 63 , 1 , 1 ,
+58 , 963 , 40 , 162 , 1 , 1 ,
+58 , 964 , 39 , 31 , 1 , 1 ,
+58 , 965 , 52 , 63 , 1 , 1 ,
+58 , 966 , 39 , 152 , 1 , 1 ,
+58 , 967 , 39 , 21 , 1 , 1 ,
+58 , 968 , 51 , 53 , 1 , 1 ,
+58 , 969 , 39 , 142 , 1 , 1 ,
+58 , 970 , 38 , 21 , 1 , 1 ,
+58 , 971 , 49 , 53 , 1 , 1 ,
+58 , 972 , 38 , 143 , 1 , 1 ,
+58 , 973 , 38 , 31 , 1 , 1 ,
+58 , 974 , 48 , 53 , 1 , 1 ,
+58 , 975 , 37 , 133 , 1 , 1 ,
+58 , 976 , 37 , 31 , 1 , 1 ,
+58 , 977 , 47 , 53 , 1 , 1 ,
+58 , 978 , 37 , 133 , 1 , 1 ,
+58 , 979 , 37 , 31 , 1 , 1 ,
+58 , 980 , 47 , 53 , 1 , 1 ,
+58 , 981 , 36 , 144 , 1 , 1 ,
+58 , 982 , 36 , 31 , 1 , 1 ,
+58 , 983 , 46 , 54 , 1 , 1 ,
+58 , 984 , 36 , 132 , 1 , 1 ,
+58 , 985 , 36 , 31 , 1 , 1 ,
+58 , 986 , 45 , 55 , 1 , 1 ,
+58 , 987 , 35 , 135 , 1 , 1 ,
+58 , 988 , 35 , 31 , 1 , 1 ,
+58 , 989 , 43 , 77 , 1 , 1 ,
+58 , 990 , 35 , 142 , 1 , 1 ,
+58 , 991 , 33 , 31 , 1 , 1 ,
+58 , 992 , 43 , 84 , 1 , 1 ,
+58 , 993 , 33 , 122 , 1 , 1 ,
+58 , 994 , 32 , 31 , 1 , 1 ,
+58 , 995 , 42 , 95 , 1 , 1 ,
+58 , 996 , 32 , 122 , 1 , 1 ,
+58 , 997 , 32 , 31 , 1 , 1 ,
+58 , 998 , 31 , 31 , 1 , 1 ,
+58 , 999 , 31 , 31 , 1 , 1 ,
+58 , 1000 , 31 , 31 , 1 , 1 ,
+58 , 1001 , 30 , 31 , 1 , 1 ,
+58 , 1002 , 30 , 31 , 1 , 1 ,
+58 , 1003 , 30 , 31 , 1 , 1 ,
+58 , 1004 , 29 , 31 , 1 , 1 ,
+58 , 1005 , 29 , 31 , 1 , 1 ,
+58 , 1006 , 29 , 31 , 1 , 1 ,
+58 , 1007 , 28 , 31 , 1 , 1 ,
+58 , 1008 , 28 , 31 , 1 , 1 ,
+58 , 1009 , 28 , 31 , 1 , 1 ,
+58 , 1010 , 27 , 31 , 1 , 1 ,
+58 , 1011 , 27 , 31 , 1 , 1 ,
+58 , 1012 , 25 , 21 , 1 , 1 ,
+58 , 1013 , 25 , 31 , 1 , 1 ,
+58 , 1014 , 25 , 31 , 1 , 1 ,
+58 , 1015 , 24 , 31 , 1 , 1 ,
+58 , 1016 , 24 , 31 , 1 , 1 ,
+58 , 1017 , 24 , 31 , 1 , 1 ,
+58 , 1018 , 23 , 31 , 1 , 1 ,
+58 , 1019 , 23 , 31 , 1 , 1 ,
+58 , 1020 , 22 , 31 , 1 , 1 ,
+58 , 1021 , 22 , 32 , 1 , 1 ,
+58 , 1022 , 22 , 31 , 1 , 1 ,
+58 , 1023 , 21 , 31 , 1 , 1 ,
+58 , 1024 , 21 , 31 , 1 , 1 ,
+58 , 1025 , 20 , 31 , 1 , 1 ,
+58 , 1026 , 20 , 31 , 1 , 1 ,
+58 , 1027 , 20 , 31 , 1 , 1 ,
+58 , 1028 , 19 , 31 , 1 , 1 ,
+58 , 1029 , 19 , 31 , 1 , 1 ,
+58 , 1030 , 19 , 31 , 1 , 1 ,
+58 , 1031 , 18 , 31 , 1 , 1 ,
+58 , 1032 , 18 , 31 , 1 , 1 ,
+58 , 1033 , 18 , 31 , 1 , 1 ,
+58 , 1034 , 17 , 31 , 1 , 1 ,
+58 , 1035 , 17 , 31 , 1 , 1 ,
+58 , 1036 , 16 , 31 , 1 , 1 ,
+58 , 1037 , 16 , 31 , 1 , 1 ,
+58 , 1038 , 16 , 31 , 1 , 1 ,
+58 , 1039 , 15 , 31 , 1 , 1 ,
+58 , 1040 , 15 , 31 , 1 , 1 ,
+58 , 1041 , 14 , 31 , 1 , 1 ,
+58 , 1042 , 14 , 31 , 1 , 1 ,
+58 , 1043 , 14 , 31 , 1 , 1 ,
+58 , 1044 , 13 , 31 , 1 , 1 ,
+58 , 1045 , 13 , 31 , 1 , 1 ,
+58 , 1046 , 12 , 31 , 1 , 1 ,
+58 , 1047 , 12 , 31 , 1 , 1 ,
+58 , 1048 , 11 , 31 , 1 , 1 ,
+58 , 1049 , 10 , 31 , 1 , 1 ,
+58 , 1050 , 9 , 31 , 1 , 1 ,
+58 , 1051 , 9 , 31 , 1 , 1 ,
+58 , 1052 , 8 , 31 , 1 , 1 ,
+58 , 1053 , 7 , 21 , 1 , 1 ,
+58 , 1054 , 222 , 31 , 1 , 1 , 988 957 1027 1017 1042 1051 1048 962 1026 985 973 1012 996 1024 1008 1043 1001 990 974 1047 966 959 1033 969 963 968 1003 975 1045 993 972 961 1000 1034 989 1053 1050 1005 994 1021 1036 1015 997 982 1040 1020 976 978 983 1052 999 984 1007 954 1022 971 1029 980 1010 1044 955 958 970 1049 1004 1023 1041 1037 956 1028 1032 998 979 965 1035 1031 1038 1019 981 995 1011 991 964 1006 1009 1016 967 1030 1002 986 1039 1013 1046 992 1014 1018 960 987 977 1025
+59 , 1055 , 52 , 31 , 1 , 1 ,
+59 , 1056 , 52 , 31 , 1 , 1 ,
+59 , 1057 , 51 , 31 , 1 , 1 ,
+59 , 1058 , 51 , 31 , 1 , 1 ,
+59 , 1059 , 51 , 31 , 1 , 1 ,
+59 , 1060 , 51 , 31 , 1 , 1 ,
+59 , 1061 , 50 , 31 , 1 , 1 ,
+59 , 1062 , 50 , 31 , 1 , 1 ,
+59 , 1063 , 50 , 31 , 1 , 1 ,
+59 , 1064 , 49 , 31 , 1 , 1 ,
+59 , 1065 , 49 , 31 , 1 , 1 ,
+59 , 1066 , 48 , 31 , 1 , 1 ,
+59 , 1067 , 48 , 31 , 1 , 1 ,
+59 , 1068 , 47 , 31 , 1 , 1 ,
+59 , 1069 , 47 , 41 , 1 , 1 ,
+59 , 1070 , 47 , 41 , 1 , 1 ,
+59 , 1071 , 46 , 41 , 1 , 1 ,
+59 , 1072 , 46 , 41 , 1 , 1 ,
+59 , 1073 , 46 , 41 , 1 , 1 ,
+59 , 1074 , 45 , 41 , 1 , 1 ,
+59 , 1075 , 45 , 41 , 1 , 1 ,
+59 , 1076 , 45 , 41 , 1 , 1 ,
+59 , 1077 , 44 , 41 , 1 , 1 ,
+59 , 1078 , 44 , 52 , 1 , 1 ,
+59 , 1079 , 43 , 41 , 1 , 1 ,
+59 , 1080 , 43 , 41 , 1 , 1 ,
+59 , 1081 , 42 , 52 , 1 , 1 ,
+59 , 1082 , 42 , 52 , 1 , 1 ,
+59 , 1083 , 42 , 41 , 1 , 1 ,
+59 , 1084 , 41 , 52 , 1 , 1 ,
+59 , 1085 , 41 , 41 , 1 , 1 ,
+59 , 1086 , 41 , 41 , 1 , 1 ,
+59 , 1087 , 41 , 41 , 1 , 1 ,
+59 , 1088 , 40 , 52 , 1 , 1 ,
+59 , 1089 , 40 , 41 , 1 , 1 ,
+59 , 1090 , 40 , 41 , 1 , 1 ,
+59 , 1091 , 39 , 52 , 1 , 1 ,
+59 , 1092 , 39 , 41 , 1 , 1 ,
+59 , 1093 , 38 , 52 , 1 , 1 ,
+59 , 1094 , 38 , 52 , 1 , 1 ,
+59 , 1095 , 38 , 52 , 1 , 1 ,
+59 , 1096 , 37 , 41 , 1 , 1 ,
+59 , 1097 , 37 , 41 , 1 , 1 ,
+59 , 1098 , 37 , 41 , 1 , 1 ,
+59 , 1099 , 36 , 52 , 1 , 1 ,
+59 , 1100 , 36 , 41 , 1 , 1 ,
+59 , 1101 , 35 , 41 , 1 , 1 ,
+59 , 1102 , 35 , 41 , 1 , 1 ,
+59 , 1103 , 34 , 41 , 1 , 1 ,
+59 , 1104 , 34 , 41 , 1 , 1 ,
+59 , 1105 , 33 , 41 , 1 , 1 ,
+59 , 1106 , 33 , 41 , 1 , 1 ,
+59 , 1107 , 33 , 41 , 1 , 1 ,
+59 , 1108 , 32 , 41 , 1 , 1 ,
+59 , 1109 , 32 , 41 , 1 , 1 ,
+59 , 1110 , 32 , 41 , 1 , 1 ,
+59 , 1111 , 31 , 41 , 1 , 1 ,
+59 , 1112 , 31 , 42 , 1 , 1 ,
+59 , 1113 , 30 , 31 , 1 , 1 ,
+59 , 1114 , 30 , 31 , 1 , 1 ,
+59 , 1115 , 30 , 41 , 1 , 1 ,
+59 , 1116 , 29 , 41 , 1 , 1 ,
+59 , 1117 , 29 , 41 , 1 , 1 ,
+59 , 1118 , 28 , 41 , 1 , 1 ,
+59 , 1119 , 28 , 41 , 1 , 1 ,
+59 , 1120 , 27 , 31 , 1 , 1 ,
+59 , 1121 , 27 , 31 , 1 , 1 ,
+59 , 1122 , 27 , 31 , 1 , 1 ,
+59 , 1123 , 26 , 41 , 1 , 1 ,
+59 , 1124 , 26 , 41 , 1 , 1 ,
+59 , 1125 , 26 , 41 , 1 , 1 ,
+59 , 1126 , 25 , 41 , 1 , 1 ,
+59 , 1127 , 25 , 41 , 1 , 1 ,
+59 , 1128 , 25 , 41 , 1 , 1 ,
+59 , 1129 , 24 , 31 , 1 , 1 ,
+59 , 1130 , 24 , 31 , 1 , 1 ,
+59 , 1131 , 24 , 31 , 1 , 1 ,
+59 , 1132 , 24 , 31 , 1 , 1 ,
+59 , 1133 , 23 , 31 , 1 , 1 ,
+59 , 1134 , 22 , 31 , 1 , 1 ,
+59 , 1135 , 22 , 31 , 1 , 1 ,
+59 , 1136 , 21 , 31 , 1 , 1 ,
+59 , 1137 , 20 , 41 , 1 , 1 ,
+59 , 1138 , 19 , 41 , 1 , 1 ,
+59 , 1139 , 18 , 41 , 1 , 1 ,
+59 , 1140 , 16 , 41 , 1 , 1 ,
+59 , 1141 , 15 , 31 , 1 , 1 ,
+59 , 1142 , 14 , 31 , 1 , 1 ,
+59 , 1143 , 14 , 31 , 1 , 1 ,
+59 , 1144 , 13 , 31 , 1 , 1 ,
+59 , 1145 , 12 , 41 , 1 , 1 ,
+59 , 1146 , 11 , 31 , 1 , 1 ,
+59 , 1147 , 11 , 31 , 1 , 1 ,
+59 , 1148 , 10 , 41 , 1 , 1 ,
+59 , 1149 , 10 , 41 , 1 , 1 ,
+59 , 1150 , 10 , 31 , 1 , 1 ,
+59 , 1151 , 9 , 31 , 1 , 1 ,
+59 , 1152 , 8 , 31 , 1 , 1 ,
+59 , 1153 , 7 , 31 , 1 , 1 ,
+59 , 1154 , 6 , 31 , 1 , 1 ,
+59 , 1155 , 106 , 31 , 1 , 1 , 1067 1085 1090 1133 1083 1070 1134 1137 1071 1122 1118 1139 1117 1095 1084 1060 1132 1063 1089 1064 1145 1111 1147 1152 1055 1143 1088 1114 1078 1086 1149 1100 1087 1066 1074 1120 1096 1103 1136 1105 1115 1153 1072 1116 1107 1129 1058 1123 1125 1092 1073 1081 1069 1093 1065 1062 1113 1142 1077 1101 1102 1109 1124 1127 1119 1080 1097 1056 1068 1104 1099 1075 1059 1082 1057 1110 1130 1076 1108 1138 1121 1106 1154 1135 1144 1091 1131 1128 1112 1150 1126 1148 1146 1140 1098 1151 1141 1094 1079 1061
+60 , 1156 , 46 , 173 , 1 , 1 ,
+60 , 1157 , 46 , 163 , 1 , 1 ,
+60 , 1158 , 46 , 164 , 1 , 1 ,
+60 , 1159 , 45 , 164 , 1 , 1 ,
+60 , 1160 , 45 , 174 , 1 , 1 ,
+60 , 1161 , 45 , 154 , 1 , 1 ,
+60 , 1162 , 45 , 154 , 1 , 1 ,
+60 , 1163 , 44 , 155 , 1 , 1 ,
+60 , 1164 , 44 , 145 , 1 , 1 ,
+60 , 1165 , 44 , 135 , 1 , 1 ,
+60 , 1166 , 44 , 135 , 1 , 1 ,
+60 , 1167 , 43 , 132 , 1 , 1 ,
+60 , 1168 , 61 , 63 , 1 , 1 ,
+60 , 1169 , 60 , 53 , 1 , 1 ,
+60 , 1170 , 59 , 53 , 1 , 1 ,
+60 , 1171 , 58 , 53 , 1 , 1 ,
+60 , 1172 , 57 , 53 , 1 , 1 ,
+60 , 1173 , 56 , 53 , 1 , 1 ,
+60 , 1174 , 55 , 53 , 1 , 1 ,
+60 , 1175 , 54 , 53 , 1 , 1 ,
+60 , 1176 , 53 , 53 , 1 , 1 ,
+60 , 1177 , 52 , 53 , 1 , 1 ,
+60 , 1178 , 52 , 53 , 1 , 1 ,
+60 , 1179 , 51 , 53 , 1 , 1 ,
+60 , 1180 , 50 , 55 , 1 , 1 ,
+60 , 1181 , 49 , 55 , 1 , 1 ,
+60 , 1182 , 48 , 53 , 1 , 1 ,
+60 , 1183 , 47 , 53 , 1 , 1 ,
+60 , 1184 , 42 , 31 , 1 , 1 ,
+60 , 1185 , 42 , 41 , 1 , 1 ,
+60 , 1186 , 41 , 41 , 1 , 1 ,
+60 , 1187 , 41 , 41 , 1 , 1 ,
+60 , 1188 , 41 , 41 , 1 , 1 ,
+60 , 1189 , 40 , 41 , 1 , 1 ,
+60 , 1190 , 39 , 41 , 1 , 1 ,
+60 , 1191 , 39 , 41 , 1 , 1 ,
+60 , 1192 , 39 , 41 , 1 , 1 ,
+60 , 1193 , 38 , 41 , 1 , 1 ,
+60 , 1194 , 38 , 41 , 1 , 1 ,
+60 , 1195 , 37 , 41 , 1 , 1 ,
+60 , 1196 , 37 , 41 , 1 , 1 ,
+60 , 1197 , 37 , 41 , 1 , 1 ,
+60 , 1198 , 36 , 42 , 1 , 1 ,
+60 , 1199 , 36 , 43 , 1 , 1 ,
+60 , 1200 , 35 , 32 , 1 , 1 ,
+60 , 1201 , 35 , 42 , 1 , 1 ,
+60 , 1202 , 34 , 42 , 1 , 1 ,
+60 , 1203 , 34 , 42 , 1 , 1 ,
+60 , 1204 , 34 , 42 , 1 , 1 ,
+60 , 1205 , 33 , 41 , 1 , 1 ,
+60 , 1206 , 33 , 31 , 1 , 1 ,
+60 , 1207 , 32 , 31 , 1 , 1 ,
+60 , 1208 , 32 , 31 , 1 , 1 ,
+60 , 1209 , 31 , 32 , 1 , 1 ,
+60 , 1210 , 31 , 31 , 1 , 1 ,
+60 , 1211 , 30 , 31 , 1 , 1 ,
+60 , 1212 , 30 , 31 , 1 , 1 ,
+60 , 1213 , 30 , 31 , 1 , 1 ,
+60 , 1214 , 29 , 31 , 1 , 1 ,
+60 , 1215 , 29 , 31 , 1 , 1 ,
+60 , 1216 , 28 , 31 , 1 , 1 ,
+60 , 1217 , 27 , 31 , 1 , 1 ,
+60 , 1218 , 27 , 32 , 1 , 1 ,
+60 , 1219 , 26 , 32 , 1 , 1 ,
+60 , 1220 , 26 , 32 , 1 , 1 ,
+60 , 1221 , 26 , 32 , 1 , 1 ,
+60 , 1222 , 25 , 32 , 1 , 1 ,
+60 , 1223 , 25 , 32 , 1 , 1 ,
+60 , 1224 , 24 , 32 , 1 , 1 ,
+60 , 1225 , 24 , 31 , 1 , 1 ,
+60 , 1226 , 24 , 31 , 1 , 1 ,
+60 , 1227 , 23 , 31 , 1 , 1 ,
+60 , 1228 , 23 , 31 , 1 , 1 ,
+60 , 1229 , 23 , 31 , 1 , 1 ,
+60 , 1230 , 22 , 31 , 1 , 1 ,
+60 , 1231 , 22 , 31 , 1 , 1 ,
+60 , 1232 , 21 , 31 , 1 , 1 ,
+60 , 1233 , 21 , 31 , 1 , 1 ,
+60 , 1234 , 21 , 31 , 1 , 1 ,
+60 , 1235 , 20 , 31 , 1 , 1 ,
+60 , 1236 , 19 , 31 , 1 , 1 ,
+60 , 1237 , 19 , 31 , 1 , 1 ,
+60 , 1238 , 19 , 32 , 1 , 1 ,
+60 , 1239 , 18 , 31 , 1 , 1 ,
+60 , 1240 , 18 , 31 , 1 , 1 ,
+60 , 1241 , 17 , 31 , 1 , 1 ,
+60 , 1242 , 17 , 31 , 1 , 1 ,
+60 , 1243 , 16 , 32 , 1 , 1 ,
+60 , 1244 , 16 , 32 , 1 , 1 ,
+60 , 1245 , 15 , 32 , 1 , 1 ,
+60 , 1246 , 15 , 31 , 1 , 1 ,
+60 , 1247 , 15 , 31 , 1 , 1 ,
+60 , 1248 , 14 , 31 , 1 , 1 ,
+60 , 1249 , 13 , 31 , 1 , 1 ,
+60 , 1250 , 12 , 21 , 1 , 1 ,
+60 , 1251 , 12 , 31 , 1 , 1 ,
+60 , 1252 , 11 , 31 , 1 , 1 ,
+60 , 1253 , 10 , 31 , 1 , 1 ,
+60 , 1254 , 10 , 31 , 1 , 1 ,
+60 , 1255 , 8 , 21 , 1 , 1 ,
+60 , 1256 , 228 , 31 , 1 , 1 , 1225 1193 1183 1217 1224 1229 1252 1216 1207 1250 1163 1157 1210 1233 1247 1176 1184 1199 1200 1171 1177 1230 1231 1211 1181 1212 1220 1245 1242 1251 1167 1172 1204 1191 1162 1218 1243 1186 1159 1248 1188 1175 1185 1170 1241 1215 1182 1219 1223 1228 1190 1238 1178 1192 1208 1206 1173 1195 1227 1244 1165 1189 1232 1198 1187 1221 1169 1254 1166 1205 1194 1214 1201 1156 1249 1174 1213 1222 1234 1158 1235 1196 1197 1161 1236 1255 1164 1180 1179 1237 1226 1240 1246 1239 1168 1202 1160 1209 1253 1203
+61 , 1257 , 39 , 0 , 1 , 1 ,
+61 , 1258 , 39 , 0 , 1 , 1 ,
+61 , 1259 , 38 , 0 , 1 , 1 ,
+61 , 1260 , 38 , 0 , 1 , 1 ,
+61 , 1261 , 38 , 0 , 1 , 1 ,
+61 , 1262 , 37 , 0 , 1 , 1 ,
+61 , 1263 , 37 , 0 , 1 , 1 ,
+61 , 1264 , 37 , 0 , 1 , 1 ,
+61 , 1265 , 37 , 0 , 1 , 1 ,
+61 , 1266 , 36 , 0 , 1 , 1 ,
+61 , 1267 , 36 , 0 , 1 , 1 ,
+61 , 1268 , 36 , 0 , 1 , 1 ,
+61 , 1269 , 36 , 0 , 1 , 1 ,
+61 , 1270 , 35 , 0 , 1 , 1 ,
+61 , 1271 , 53 , 53 , 1 , 1 ,
+61 , 1272 , 52 , 53 , 1 , 1 ,
+61 , 1273 , 51 , 53 , 1 , 1 ,
+61 , 1274 , 50 , 53 , 1 , 1 ,
+61 , 1275 , 49 , 53 , 1 , 1 ,
+61 , 1276 , 48 , 53 , 1 , 1 ,
+61 , 1277 , 47 , 53 , 1 , 1 ,
+61 , 1278 , 46 , 53 , 1 , 1 ,
+61 , 1279 , 46 , 53 , 1 , 1 ,
+61 , 1280 , 45 , 53 , 1 , 1 ,
+61 , 1281 , 44 , 54 , 1 , 1 ,
+61 , 1282 , 43 , 55 , 1 , 1 ,
+61 , 1283 , 42 , 46 , 1 , 1 ,
+61 , 1284 , 41 , 53 , 1 , 1 ,
+61 , 1285 , 40 , 53 , 1 , 1 ,
+61 , 1286 , 39 , 53 , 1 , 1 ,
+61 , 1287 , 34 , 41 , 1 , 1 ,
+61 , 1288 , 34 , 41 , 1 , 1 ,
+61 , 1289 , 33 , 41 , 1 , 1 ,
+61 , 1290 , 33 , 41 , 1 , 1 ,
+61 , 1291 , 33 , 41 , 1 , 1 ,
+61 , 1292 , 32 , 31 , 1 , 1 ,
+61 , 1293 , 32 , 41 , 1 , 1 ,
+61 , 1294 , 32 , 41 , 1 , 1 ,
+61 , 1295 , 31 , 41 , 1 , 1 ,
+61 , 1296 , 31 , 41 , 1 , 1 ,
+61 , 1297 , 30 , 42 , 1 , 1 ,
+61 , 1298 , 30 , 31 , 1 , 1 ,
+61 , 1299 , 30 , 31 , 1 , 1 ,
+61 , 1300 , 29 , 31 , 1 , 1 ,
+61 , 1301 , 29 , 31 , 1 , 1 ,
+61 , 1302 , 28 , 31 , 1 , 1 ,
+61 , 1303 , 28 , 31 , 1 , 1 ,
+61 , 1304 , 27 , 31 , 1 , 1 ,
+61 , 1305 , 27 , 31 , 1 , 1 ,
+61 , 1306 , 27 , 31 , 1 , 1 ,
+61 , 1307 , 26 , 21 , 1 , 1 ,
+61 , 1308 , 26 , 21 , 1 , 1 ,
+61 , 1309 , 25 , 32 , 1 , 1 ,
+61 , 1310 , 25 , 31 , 1 , 1 ,
+61 , 1311 , 25 , 31 , 1 , 1 ,
+61 , 1312 , 24 , 31 , 1 , 1 ,
+61 , 1313 , 24 , 31 , 1 , 1 ,
+61 , 1314 , 24 , 31 , 1 , 1 ,
+61 , 1315 , 23 , 31 , 1 , 1 ,
+61 , 1316 , 23 , 31 , 1 , 1 ,
+61 , 1317 , 23 , 31 , 1 , 1 ,
+61 , 1318 , 22 , 31 , 1 , 1 ,
+61 , 1319 , 22 , 31 , 1 , 1 ,
+61 , 1320 , 22 , 31 , 1 , 1 ,
+61 , 1321 , 21 , 31 , 1 , 1 ,
+61 , 1322 , 21 , 31 , 1 , 1 ,
+61 , 1323 , 20 , 31 , 1 , 1 ,
+61 , 1324 , 20 , 31 , 1 , 1 ,
+61 , 1325 , 19 , 31 , 1 , 1 ,
+61 , 1326 , 19 , 31 , 1 , 1 ,
+61 , 1327 , 19 , 31 , 1 , 1 ,
+61 , 1328 , 18 , 31 , 1 , 1 ,
+61 , 1329 , 18 , 31 , 1 , 1 ,
+61 , 1330 , 17 , 31 , 1 , 1 ,
+61 , 1331 , 17 , 31 , 1 , 1 ,
+61 , 1332 , 17 , 31 , 1 , 1 ,
+61 , 1333 , 16 , 31 , 1 , 1 ,
+61 , 1334 , 16 , 31 , 1 , 1 ,
+61 , 1335 , 16 , 32 , 1 , 1 ,
+61 , 1336 , 15 , 32 , 1 , 1 ,
+61 , 1337 , 15 , 31 , 1 , 1 ,
+61 , 1338 , 14 , 31 , 1 , 1 ,
+61 , 1339 , 14 , 31 , 1 , 1 ,
+61 , 1340 , 13 , 31 , 1 , 1 ,
+61 , 1341 , 13 , 31 , 1 , 1 ,
+61 , 1342 , 13 , 31 , 1 , 1 ,
+61 , 1343 , 12 , 31 , 1 , 1 ,
+61 , 1344 , 12 , 31 , 1 , 1 ,
+61 , 1345 , 11 , 31 , 1 , 1 ,
+61 , 1346 , 11 , 31 , 1 , 1 ,
+61 , 1347 , 10 , 31 , 1 , 1 ,
+61 , 1348 , 10 , 32 , 1 , 1 ,
+61 , 1349 , 9 , 31 , 1 , 1 ,
+61 , 1350 , 9 , 31 , 1 , 1 ,
+61 , 1351 , 9 , 31 , 1 , 1 ,
+61 , 1352 , 9 , 31 , 1 , 1 ,
+61 , 1353 , 8 , 31 , 1 , 1 ,
+61 , 1354 , 8 , 31 , 1 , 1 ,
+61 , 1355 , 7 , 31 , 1 , 1 ,
+61 , 1356 , 6 , 31 , 1 , 1 ,
+61 , 1357 , 116 , 31 , 1 , 1 , 1338 1301 1268 1259 1288 1284 1336 1327 1299 1329 1258 1310 1294 1315 1283 1325 1333 1342 1274 1347 1324 1307 1279 1334 1276 1331 1290 1313 1296 1344 1317 1298 1330 1353 1308 1271 1273 1306 1262 1292 1337 1332 1281 1318 1312 1303 1293 1280 1287 1263 1341 1272 1264 1319 1346 1260 1309 1275 1311 1328 1340 1266 1304 1261 1269 1355 1321 1323 1282 1350 1356 1295 1316 1267 1270 1322 1278 1339 1345 1285 1326 1354 1286 1257 1291 1348 1297 1265 1349 1300 1320 1302 1343 1314 1351 1289 1335 1352 1277 1305
+62 , 1358 , 38 , 0 , 1 , 1 ,
+62 , 1359 , 38 , 0 , 1 , 1 ,
+62 , 1360 , 38 , 0 , 1 , 1 ,
+62 , 1361 , 37 , 0 , 1 , 1 ,
+62 , 1362 , 37 , 0 , 1 , 1 ,
+62 , 1363 , 37 , 0 , 1 , 1 ,
+62 , 1364 , 37 , 0 , 1 , 1 ,
+62 , 1365 , 36 , 0 , 1 , 1 ,
+62 , 1366 , 36 , 0 , 1 , 1 ,
+62 , 1367 , 36 , 0 , 1 , 1 ,
+62 , 1368 , 35 , 0 , 1 , 1 ,
+62 , 1369 , 35 , 0 , 1 , 1 ,
+62 , 1370 , 35 , 0 , 1 , 1 ,
+62 , 1371 , 35 , 0 , 1 , 1 ,
+62 , 1372 , 34 , 0 , 1 , 1 ,
+62 , 1373 , 34 , 11 , 1 , 1 ,
+62 , 1374 , 53 , 53 , 1 , 1 ,
+62 , 1375 , 52 , 53 , 1 , 1 ,
+62 , 1376 , 51 , 53 , 1 , 1 ,
+62 , 1377 , 50 , 53 , 1 , 1 ,
+62 , 1378 , 49 , 53 , 1 , 1 ,
+62 , 1379 , 48 , 53 , 1 , 1 ,
+62 , 1380 , 47 , 53 , 1 , 1 ,
+62 , 1381 , 46 , 54 , 1 , 1 ,
+62 , 1382 , 45 , 55 , 1 , 1 ,
+62 , 1383 , 45 , 66 , 1 , 1 ,
+62 , 1384 , 44 , 53 , 1 , 1 ,
+62 , 1385 , 43 , 53 , 1 , 1 ,
+62 , 1386 , 42 , 53 , 1 , 1 ,
+62 , 1387 , 40 , 53 , 1 , 1 ,
+62 , 1388 , 39 , 53 , 1 , 1 ,
+62 , 1389 , 39 , 53 , 1 , 1 ,
+62 , 1390 , 32 , 31 , 1 , 1 ,
+62 , 1391 , 32 , 31 , 1 , 1 ,
+62 , 1392 , 32 , 31 , 1 , 1 ,
+62 , 1393 , 31 , 41 , 1 , 1 ,
+62 , 1394 , 31 , 41 , 1 , 1 ,
+62 , 1395 , 31 , 41 , 1 , 1 ,
+62 , 1396 , 30 , 41 , 1 , 1 ,
+62 , 1397 , 30 , 41 , 1 , 1 ,
+62 , 1398 , 29 , 41 , 1 , 1 ,
+62 , 1399 , 29 , 41 , 1 , 1 ,
+62 , 1400 , 29 , 31 , 1 , 1 ,
+62 , 1401 , 28 , 31 , 1 , 1 ,
+62 , 1402 , 28 , 31 , 1 , 1 ,
+62 , 1403 , 28 , 31 , 1 , 1 ,
+62 , 1404 , 27 , 31 , 1 , 1 ,
+62 , 1405 , 27 , 31 , 1 , 1 ,
+62 , 1406 , 27 , 31 , 1 , 1 ,
+62 , 1407 , 26 , 31 , 1 , 1 ,
+62 , 1408 , 26 , 31 , 1 , 1 ,
+62 , 1409 , 26 , 31 , 1 , 1 ,
+62 , 1410 , 25 , 41 , 1 , 1 ,
+62 , 1411 , 25 , 41 , 1 , 1 ,
+62 , 1412 , 24 , 41 , 1 , 1 ,
+62 , 1413 , 24 , 41 , 1 , 1 ,
+62 , 1414 , 23 , 42 , 1 , 1 ,
+62 , 1415 , 23 , 41 , 1 , 1 ,
+62 , 1416 , 23 , 41 , 1 , 1 ,
+62 , 1417 , 22 , 41 , 1 , 1 ,
+62 , 1418 , 22 , 41 , 1 , 1 ,
+62 , 1419 , 22 , 41 , 1 , 1 ,
+62 , 1420 , 21 , 41 , 1 , 1 ,
+62 , 1421 , 21 , 41 , 1 , 1 ,
+62 , 1422 , 21 , 41 , 1 , 1 ,
+62 , 1423 , 21 , 41 , 1 , 1 ,
+62 , 1424 , 20 , 41 , 1 , 1 ,
+62 , 1425 , 20 , 41 , 1 , 1 ,
+62 , 1426 , 19 , 31 , 1 , 1 ,
+62 , 1427 , 19 , 31 , 1 , 1 ,
+62 , 1428 , 18 , 31 , 1 , 1 ,
+62 , 1429 , 18 , 31 , 1 , 1 ,
+62 , 1430 , 17 , 31 , 1 , 1 ,
+62 , 1431 , 17 , 31 , 1 , 1 ,
+62 , 1432 , 16 , 31 , 1 , 1 ,
+62 , 1433 , 16 , 31 , 1 , 1 ,
+62 , 1434 , 16 , 31 , 1 , 1 ,
+62 , 1435 , 15 , 31 , 1 , 1 ,
+62 , 1436 , 15 , 31 , 1 , 1 ,
+62 , 1437 , 15 , 31 , 1 , 1 ,
+62 , 1438 , 14 , 31 , 1 , 1 ,
+62 , 1439 , 14 , 31 , 1 , 1 ,
+62 , 1440 , 14 , 31 , 1 , 1 ,
+62 , 1441 , 13 , 32 , 1 , 1 ,
+62 , 1442 , 13 , 32 , 1 , 1 ,
+62 , 1443 , 12 , 31 , 1 , 1 ,
+62 , 1444 , 12 , 31 , 1 , 1 ,
+62 , 1445 , 11 , 31 , 1 , 1 ,
+62 , 1446 , 11 , 31 , 1 , 1 ,
+62 , 1447 , 11 , 31 , 1 , 1 ,
+62 , 1448 , 10 , 31 , 1 , 1 ,
+62 , 1449 , 10 , 31 , 1 , 1 ,
+62 , 1450 , 10 , 31 , 1 , 1 ,
+62 , 1451 , 9 , 31 , 1 , 1 ,
+62 , 1452 , 9 , 31 , 1 , 1 ,
+62 , 1453 , 9 , 31 , 1 , 1 ,
+62 , 1454 , 8 , 31 , 1 , 1 ,
+62 , 1455 , 8 , 31 , 1 , 1 ,
+62 , 1456 , 7 , 31 , 1 , 1 ,
+62 , 1457 , 6 , 31 , 1 , 1 ,
+62 , 1458 , 119 , 31 , 1 , 1 , 1409 1379 1435 1418 1452 1416 1423 1454 1389 1433 1381 1419 1372 1382 1451 1358 1373 1386 1446 1374 1380 1385 1437 1407 1383 1410 1455 1406 1422 1388 1400 1444 1368 1420 1411 1442 1413 1364 1359 1426 1443 1402 1362 1412 1397 1365 1425 1369 1417 1436 1401 1431 1371 1393 1361 1408 1394 1438 1363 1448 1403 1405 1378 1449 1367 1396 1434 1395 1414 1366 1399 1384 1429 1456 1370 1421 1430 1440 1427 1441 1447 1404 1391 1377 1387 1376 1439 1432 1375 1424 1398 1360 1415 1450 1457 1390 1453 1428 1445 1392
+63 , 1459 , 37 , 193 , 1 , 1 ,
+63 , 1460 , 37 , 183 , 1 , 1 ,
+63 , 1461 , 37 , 183 , 1 , 1 ,
+63 , 1462 , 36 , 183 , 1 , 1 ,
+63 , 1463 , 36 , 183 , 1 , 1 ,
+63 , 1464 , 36 , 183 , 1 , 1 ,
+63 , 1465 , 35 , 183 , 1 , 1 ,
+63 , 1466 , 35 , 173 , 1 , 1 ,
+63 , 1467 , 35 , 173 , 1 , 1 ,
+63 , 1468 , 35 , 173 , 1 , 1 ,
+63 , 1469 , 34 , 173 , 1 , 1 ,
+63 , 1470 , 34 , 173 , 1 , 1 ,
+63 , 1471 , 34 , 163 , 1 , 1 ,
+63 , 1472 , 34 , 143 , 1 , 1 ,
+63 , 1473 , 33 , 143 , 1 , 1 ,
+63 , 1474 , 51 , 53 , 1 , 1 ,
+63 , 1475 , 50 , 53 , 1 , 1 ,
+63 , 1476 , 49 , 53 , 1 , 1 ,
+63 , 1477 , 48 , 53 , 1 , 1 ,
+63 , 1478 , 47 , 53 , 1 , 1 ,
+63 , 1479 , 46 , 53 , 1 , 1 ,
+63 , 1480 , 45 , 53 , 1 , 1 ,
+63 , 1481 , 44 , 53 , 1 , 1 ,
+63 , 1482 , 43 , 53 , 1 , 1 ,
+63 , 1483 , 43 , 53 , 1 , 1 ,
+63 , 1484 , 42 , 53 , 1 , 1 ,
+63 , 1485 , 41 , 53 , 1 , 1 ,
+63 , 1486 , 40 , 53 , 1 , 1 ,
+63 , 1487 , 39 , 53 , 1 , 1 ,
+63 , 1488 , 38 , 53 , 1 , 1 ,
+63 , 1489 , 37 , 53 , 1 , 1 ,
+63 , 1490 , 32 , 31 , 1 , 1 ,
+63 , 1491 , 32 , 41 , 1 , 1 ,
+63 , 1492 , 31 , 41 , 1 , 1 ,
+63 , 1493 , 31 , 41 , 1 , 1 ,
+63 , 1494 , 31 , 31 , 1 , 1 ,
+63 , 1495 , 30 , 41 , 1 , 1 ,
+63 , 1496 , 30 , 41 , 1 , 1 ,
+63 , 1497 , 29 , 41 , 1 , 1 ,
+63 , 1498 , 29 , 41 , 1 , 1 ,
+63 , 1499 , 29 , 41 , 1 , 1 ,
+63 , 1500 , 28 , 41 , 1 , 1 ,
+63 , 1501 , 28 , 31 , 1 , 1 ,
+63 , 1502 , 28 , 31 , 1 , 1 ,
+63 , 1503 , 27 , 41 , 1 , 1 ,
+63 , 1504 , 27 , 41 , 1 , 1 ,
+63 , 1505 , 27 , 41 , 1 , 1 ,
+63 , 1506 , 26 , 41 , 1 , 1 ,
+63 , 1507 , 26 , 41 , 1 , 1 ,
+63 , 1508 , 25 , 41 , 1 , 1 ,
+63 , 1509 , 25 , 31 , 1 , 1 ,
+63 , 1510 , 25 , 31 , 1 , 1 ,
+63 , 1511 , 24 , 41 , 1 , 1 ,
+63 , 1512 , 24 , 41 , 1 , 1 ,
+63 , 1513 , 23 , 32 , 1 , 1 ,
+63 , 1514 , 23 , 32 , 1 , 1 ,
+63 , 1515 , 23 , 31 , 1 , 1 ,
+63 , 1516 , 22 , 31 , 1 , 1 ,
+63 , 1517 , 22 , 31 , 1 , 1 ,
+63 , 1518 , 22 , 31 , 1 , 1 ,
+63 , 1519 , 22 , 41 , 1 , 1 ,
+63 , 1520 , 21 , 31 , 1 , 1 ,
+63 , 1521 , 21 , 31 , 1 , 1 ,
+63 , 1522 , 21 , 31 , 1 , 1 ,
+63 , 1523 , 20 , 31 , 1 , 1 ,
+63 , 1524 , 20 , 31 , 1 , 1 ,
+63 , 1525 , 19 , 31 , 1 , 1 ,
+63 , 1526 , 19 , 31 , 1 , 1 ,
+63 , 1527 , 19 , 41 , 1 , 1 ,
+63 , 1528 , 18 , 31 , 1 , 1 ,
+63 , 1529 , 18 , 31 , 1 , 1 ,
+63 , 1530 , 18 , 31 , 1 , 1 ,
+63 , 1531 , 17 , 31 , 1 , 1 ,
+63 , 1532 , 16 , 31 , 1 , 1 ,
+63 , 1533 , 16 , 31 , 1 , 1 ,
+63 , 1534 , 16 , 31 , 1 , 1 ,
+63 , 1535 , 15 , 31 , 1 , 1 ,
+63 , 1536 , 15 , 31 , 1 , 1 ,
+63 , 1537 , 14 , 31 , 1 , 1 ,
+63 , 1538 , 13 , 31 , 1 , 1 ,
+63 , 1539 , 13 , 32 , 1 , 1 ,
+63 , 1540 , 13 , 31 , 1 , 1 ,
+63 , 1541 , 12 , 31 , 1 , 1 ,
+63 , 1542 , 12 , 31 , 1 , 1 ,
+63 , 1543 , 11 , 31 , 1 , 1 ,
+63 , 1544 , 11 , 31 , 1 , 1 ,
+63 , 1545 , 11 , 31 , 1 , 1 ,
+63 , 1546 , 10 , 31 , 1 , 1 ,
+63 , 1547 , 10 , 31 , 1 , 1 ,
+63 , 1548 , 10 , 31 , 1 , 1 ,
+63 , 1549 , 10 , 31 , 1 , 1 ,
+63 , 1550 , 9 , 31 , 1 , 1 ,
+63 , 1551 , 9 , 31 , 1 , 1 ,
+63 , 1552 , 9 , 31 , 1 , 1 ,
+63 , 1553 , 9 , 31 , 1 , 1 ,
+63 , 1554 , 8 , 31 , 1 , 1 ,
+63 , 1555 , 8 , 31 , 1 , 1 ,
+63 , 1556 , 7 , 31 , 1 , 1 ,
+63 , 1557 , 7 , 31 , 1 , 1 ,
+63 , 1558 , 6 , 31 , 1 , 1 ,
+63 , 1559 , 240 , 31 , 1 , 1 , 1504 1530 1484 1468 1481 1473 1523 1540 1545 1552 1501 1498 1474 1467 1466 1470 1515 1503 1483 1505 1509 1519 1472 1462 1492 1521 1531 1500 1557 1471 1514 1526 1535 1475 1524 1482 1529 1547 1534 1518 1544 1459 1517 1486 1476 1469 1543 1549 1546 1532 1463 1551 1533 1528 1464 1490 1525 1522 1506 1520 1558 1510 1487 1542 1465 1502 1491 1489 1556 1527 1495 1479 1512 1539 1548 1478 1513 1497 1516 1550 1555 1460 1508 1494 1499 1536 1507 1480 1488 1511 1485 1477 1537 1554 1553 1493 1496 1541 1461 1538
+64 , 1560 , 40 , 154 , 1 , 1 ,
+64 , 1561 , 40 , 165 , 1 , 1 ,
+64 , 1562 , 40 , 155 , 1 , 1 ,
+64 , 1563 , 39 , 155 , 1 , 1 ,
+64 , 1564 , 39 , 152 , 1 , 1 ,
+64 , 1565 , 39 , 152 , 1 , 1 ,
+64 , 1566 , 39 , 152 , 1 , 1 ,
+64 , 1567 , 38 , 142 , 1 , 1 ,
+64 , 1568 , 38 , 142 , 1 , 1 ,
+64 , 1569 , 38 , 132 , 1 , 1 ,
+64 , 1570 , 38 , 132 , 1 , 1 ,
+64 , 1571 , 37 , 132 , 1 , 1 ,
+64 , 1572 , 55 , 67 , 1 , 1 ,
+64 , 1573 , 54 , 53 , 1 , 1 ,
+64 , 1574 , 53 , 53 , 1 , 1 ,
+64 , 1575 , 52 , 53 , 1 , 1 ,
+64 , 1576 , 51 , 53 , 1 , 1 ,
+64 , 1577 , 50 , 53 , 1 , 1 ,
+64 , 1578 , 49 , 54 , 1 , 1 ,
+64 , 1579 , 48 , 55 , 1 , 1 ,
+64 , 1580 , 47 , 56 , 1 , 1 ,
+64 , 1581 , 46 , 53 , 1 , 1 ,
+64 , 1582 , 45 , 54 , 1 , 1 ,
+64 , 1583 , 44 , 44 , 1 , 1 ,
+64 , 1584 , 43 , 56 , 1 , 1 ,
+64 , 1585 , 42 , 53 , 1 , 1 ,
+64 , 1586 , 42 , 53 , 1 , 1 ,
+64 , 1587 , 41 , 53 , 1 , 1 ,
+64 , 1588 , 36 , 31 , 1 , 1 ,
+64 , 1589 , 36 , 41 , 1 , 1 ,
+64 , 1590 , 35 , 31 , 1 , 1 ,
+64 , 1591 , 35 , 31 , 1 , 1 ,
+64 , 1592 , 35 , 31 , 1 , 1 ,
+64 , 1593 , 34 , 31 , 1 , 1 ,
+64 , 1594 , 34 , 41 , 1 , 1 ,
+64 , 1595 , 33 , 41 , 1 , 1 ,
+64 , 1596 , 33 , 41 , 1 , 1 ,
+64 , 1597 , 33 , 41 , 1 , 1 ,
+64 , 1598 , 32 , 41 , 1 , 1 ,
+64 , 1599 , 32 , 41 , 1 , 1 ,
+64 , 1600 , 31 , 41 , 1 , 1 ,
+64 , 1601 , 31 , 41 , 1 , 1 ,
+64 , 1602 , 31 , 41 , 1 , 1 ,
+64 , 1603 , 30 , 31 , 1 , 1 ,
+64 , 1604 , 30 , 41 , 1 , 1 ,
+64 , 1605 , 30 , 31 , 1 , 1 ,
+64 , 1606 , 30 , 42 , 1 , 1 ,
+64 , 1607 , 29 , 41 , 1 , 1 ,
+64 , 1608 , 29 , 41 , 1 , 1 ,
+64 , 1609 , 28 , 41 , 1 , 1 ,
+64 , 1610 , 27 , 41 , 1 , 1 ,
+64 , 1611 , 27 , 41 , 1 , 1 ,
+64 , 1612 , 27 , 41 , 1 , 1 ,
+64 , 1613 , 26 , 41 , 1 , 1 ,
+64 , 1614 , 26 , 31 , 1 , 1 ,
+64 , 1615 , 25 , 41 , 1 , 1 ,
+64 , 1616 , 25 , 31 , 1 , 1 ,
+64 , 1617 , 25 , 41 , 1 , 1 ,
+64 , 1618 , 24 , 41 , 1 , 1 ,
+64 , 1619 , 24 , 41 , 1 , 1 ,
+64 , 1620 , 24 , 31 , 1 , 1 ,
+64 , 1621 , 23 , 31 , 1 , 1 ,
+64 , 1622 , 23 , 31 , 1 , 1 ,
+64 , 1623 , 23 , 41 , 1 , 1 ,
+64 , 1624 , 22 , 41 , 1 , 1 ,
+64 , 1625 , 22 , 41 , 1 , 1 ,
+64 , 1626 , 21 , 41 , 1 , 1 ,
+64 , 1627 , 21 , 41 , 1 , 1 ,
+64 , 1628 , 21 , 41 , 1 , 1 ,
+64 , 1629 , 20 , 41 , 1 , 1 ,
+64 , 1630 , 20 , 41 , 1 , 1 ,
+64 , 1631 , 20 , 32 , 1 , 1 ,
+64 , 1632 , 19 , 32 , 1 , 1 ,
+64 , 1633 , 19 , 41 , 1 , 1 ,
+64 , 1634 , 18 , 41 , 1 , 1 ,
+64 , 1635 , 17 , 41 , 1 , 1 ,
+64 , 1636 , 17 , 41 , 1 , 1 ,
+64 , 1637 , 16 , 41 , 1 , 1 ,
+64 , 1638 , 16 , 41 , 1 , 1 ,
+64 , 1639 , 16 , 41 , 1 , 1 ,
+64 , 1640 , 15 , 41 , 1 , 1 ,
+64 , 1641 , 15 , 52 , 1 , 1 ,
+64 , 1642 , 14 , 52 , 1 , 1 ,
+64 , 1643 , 14 , 41 , 1 , 1 ,
+64 , 1644 , 14 , 41 , 1 , 1 ,
+64 , 1645 , 13 , 31 , 1 , 1 ,
+64 , 1646 , 13 , 41 , 1 , 1 ,
+64 , 1647 , 12 , 31 , 1 , 1 ,
+64 , 1648 , 12 , 41 , 1 , 1 ,
+64 , 1649 , 11 , 31 , 1 , 1 ,
+64 , 1650 , 11 , 31 , 1 , 1 ,
+64 , 1651 , 11 , 31 , 1 , 1 ,
+64 , 1652 , 10 , 31 , 1 , 1 ,
+64 , 1653 , 10 , 31 , 1 , 1 ,
+64 , 1654 , 10 , 31 , 1 , 1 ,
+64 , 1655 , 9 , 32 , 1 , 1 ,
+64 , 1656 , 9 , 32 , 1 , 1 ,
+64 , 1657 , 9 , 32 , 1 , 1 ,
+64 , 1658 , 8 , 41 , 1 , 1 ,
+64 , 1659 , 7 , 31 , 1 , 1 ,
+64 , 1660 , 213 , 31 , 1 , 1 , 1614 1567 1638 1578 1592 1635 1637 1640 1625 1561 1613 1627 1645 1617 1581 1632 1586 1612 1593 1643 1600 1605 1631 1602 1599 1587 1654 1628 1570 1634 1615 1610 1601 1574 1650 1647 1575 1633 1565 1618 1566 1622 1658 1590 1623 1571 1588 1583 1609 1630 1636 1611 1644 1657 1563 1651 1608 1656 1584 1652 1606 1594 1604 1639 1596 1569 1573 1619 1626 1580 1589 1577 1562 1582 1655 1649 1579 1591 1653 1560 1603 1648 1595 1659 1620 1646 1598 1642 1607 1572 1629 1616 1597 1576 1568 1621 1585 1624 1641 1564
+65 , 1661 , 252 , 41 , 1 , 1 ,
+65 , 1662 , 252 , 41 , 1 , 1 ,
+65 , 1663 , 257 , 41 , 1 , 1 ,
+65 , 1664 , 257 , 41 , 1 , 1 ,
+65 , 1665 , 257 , 41 , 1 , 1 ,
+65 , 1666 , 257 , 41 , 1 , 1 ,
+65 , 1667 , 257 , 41 , 1 , 1 ,
+65 , 1668 , 257 , 41 , 1 , 1 ,
+65 , 1669 , 257 , 41 , 1 , 1 ,
+65 , 1670 , 255 , 41 , 1 , 1 ,
+65 , 1671 , 246 , 132 , 1 , 1 ,
+65 , 1672 , 246 , 132 , 1 , 1 ,
+65 , 1673 , 246 , 132 , 1 , 1 ,
+65 , 1674 , 246 , 122 , 1 , 1 ,
+65 , 1675 , 244 , 122 , 1 , 1 ,
+65 , 1676 , 243 , 136 , 1 , 1 ,
+65 , 1677 , 226 , 126 , 1 , 1 ,
+65 , 1678 , 226 , 126 , 1 , 1 ,
+65 , 1679 , 226 , 126 , 1 , 1 ,
+65 , 1680 , 226 , 126 , 1 , 1 ,
+65 , 1681 , 215 , 126 , 1 , 1 ,
+65 , 1682 , 215 , 126 , 1 , 1 ,
+65 , 1683 , 206 , 126 , 1 , 1 ,
+65 , 1684 , 206 , 116 , 1 , 1 ,
+65 , 1685 , 206 , 116 , 1 , 1 ,
+65 , 1686 , 206 , 105 , 1 , 1 ,
+65 , 1687 , 206 , 105 , 1 , 1 ,
+65 , 1688 , 206 , 105 , 1 , 1 ,
+65 , 1689 , 205 , 105 , 1 , 1 ,
+65 , 1690 , 205 , 95 , 1 , 1 ,
+65 , 1691 , 205 , 105 , 1 , 1 ,
+65 , 1692 , 205 , 41 , 1 , 1 ,
+65 , 1693 , 205 , 42 , 1 , 1 ,
+65 , 1694 , 205 , 41 , 1 , 1 ,
+65 , 1695 , 197 , 52 , 1 , 1 ,
+65 , 1696 , 197 , 52 , 1 , 1 ,
+65 , 1697 , 197 , 52 , 1 , 1 ,
+65 , 1698 , 197 , 52 , 1 , 1 ,
+65 , 1699 , 197 , 62 , 1 , 1 ,
+65 , 1700 , 197 , 41 , 1 , 1 ,
+65 , 1701 , 197 , 52 , 1 , 1 ,
+65 , 1702 , 197 , 52 , 1 , 1 ,
+65 , 1703 , 197 , 52 , 1 , 1 ,
+65 , 1704 , 197 , 51 , 1 , 1 ,
+65 , 1705 , 196 , 52 , 1 , 1 ,
+65 , 1706 , 196 , 52 , 1 , 1 ,
+65 , 1707 , 196 , 52 , 1 , 1 ,
+65 , 1708 , 196 , 52 , 1 , 1 ,
+65 , 1709 , 196 , 52 , 1 , 1 ,
+65 , 1710 , 196 , 52 , 1 , 1 ,
+65 , 1711 , 196 , 52 , 1 , 1 ,
+65 , 1712 , 196 , 52 , 1 , 1 ,
+65 , 1713 , 196 , 52 , 1 , 1 ,
+65 , 1714 , 196 , 52 , 1 , 1 ,
+65 , 1715 , 194 , 52 , 1 , 1 ,
+65 , 1716 , 194 , 52 , 1 , 1 ,
+65 , 1717 , 194 , 41 , 1 , 1 ,
+65 , 1718 , 194 , 41 , 1 , 1 ,
+65 , 1719 , 187 , 52 , 1 , 1 ,
+65 , 1720 , 187 , 52 , 1 , 1 ,
+65 , 1721 , 187 , 41 , 1 , 1 ,
+65 , 1722 , 187 , 52 , 1 , 1 ,
+65 , 1723 , 186 , 52 , 1 , 1 ,
+65 , 1724 , 186 , 52 , 1 , 1 ,
+65 , 1725 , 186 , 52 , 1 , 1 ,
+65 , 1726 , 186 , 52 , 1 , 1 ,
+65 , 1727 , 186 , 52 , 1 , 1 ,
+65 , 1728 , 186 , 52 , 1 , 1 ,
+65 , 1729 , 186 , 51 , 1 , 1 ,
+65 , 1730 , 186 , 51 , 1 , 1 ,
+65 , 1731 , 185 , 52 , 1 , 1 ,
+65 , 1732 , 185 , 52 , 1 , 1 ,
+65 , 1733 , 164 , 52 , 1 , 1 ,
+65 , 1734 , 164 , 52 , 1 , 1 ,
+65 , 1735 , 153 , 41 , 1 , 1 ,
+65 , 1736 , 153 , 51 , 1 , 1 ,
+65 , 1737 , 143 , 52 , 1 , 1 ,
+65 , 1738 , 143 , 41 , 1 , 1 ,
+65 , 1739 , 143 , 52 , 1 , 1 ,
+65 , 1740 , 143 , 52 , 1 , 1 ,
+65 , 1741 , 143 , 52 , 1 , 1 ,
+65 , 1742 , 143 , 52 , 1 , 1 ,
+65 , 1743 , 142 , 41 , 1 , 1 ,
+65 , 1744 , 142 , 41 , 1 , 1 ,
+65 , 1745 , 132 , 52 , 1 , 1 ,
+65 , 1746 , 132 , 41 , 1 , 1 ,
+65 , 1747 , 132 , 41 , 1 , 1 ,
+65 , 1748 , 132 , 52 , 1 , 1 ,
+65 , 1749 , 132 , 52 , 1 , 1 ,
+65 , 1750 , 132 , 52 , 1 , 1 ,
+65 , 1751 , 132 , 41 , 1 , 1 ,
+65 , 1752 , 132 , 41 , 1 , 1 ,
+65 , 1753 , 132 , 41 , 1 , 1 ,
+65 , 1754 , 132 , 52 , 1 , 1 ,
+65 , 1755 , 131 , 41 , 1 , 1 ,
+65 , 1756 , 131 , 52 , 1 , 1 ,
+65 , 1757 , 131 , 41 , 1 , 1 ,
+65 , 1758 , 131 , 52 , 1 , 1 ,
+65 , 1759 , 131 , 52 , 1 , 1 ,
+65 , 1760 , 131 , 52 , 1 , 1 ,
+65 , 1761 , 255 , 41 , 1 , 1 ,
+65 , 1762 , 253 , 41 , 1 , 1 ,
+65 , 1763 , 253 , 41 , 1 , 1 ,
+65 , 1764 , 253 , 41 , 1 , 1 ,
+65 , 1765 , 253 , 41 , 1 , 1 ,
+65 , 1766 , 253 , 41 , 1 , 1 ,
+65 , 1767 , 253 , 41 , 1 , 1 ,
+65 , 1768 , 253 , 41 , 1 , 1 ,
+65 , 1769 , 253 , 41 , 1 , 1 ,
+65 , 1770 , 253 , 52 , 1 , 1 ,
+65 , 1771 , 253 , 52 , 1 , 1 ,
+65 , 1772 , 253 , 52 , 1 , 1 ,
+65 , 1773 , 253 , 52 , 1 , 1 ,
+65 , 1774 , 252 , 52 , 1 , 1 ,
+65 , 1775 , 252 , 52 , 1 , 1 ,
+65 , 1776 , 252 , 41 , 1 , 1 ,
+65 , 1777 , 252 , 41 , 1 , 1 ,
+65 , 1778 , 25 , 136 , 1 , 1 ,
+65 , 1779 , 25 , 137 , 1 , 1 ,
+65 , 1780 , 25 , 137 , 1 , 1 ,
+65 , 1781 , 25 , 126 , 1 , 1 ,
+65 , 1782 , 25 , 116 , 1 , 1 ,
+65 , 1783 , 24 , 116 , 1 , 1 ,
+65 , 1784 , 24 , 115 , 1 , 1 ,
+65 , 1785 , 24 , 116 , 1 , 1 ,
+65 , 1786 , 24 , 105 , 1 , 1 ,
+65 , 1787 , 24 , 105 , 1 , 1 ,
+65 , 1788 , 24 , 105 , 1 , 1 ,
+65 , 1789 , 23 , 105 , 1 , 1 ,
+65 , 1790 , 23 , 105 , 1 , 1 ,
+65 , 1791 , 23 , 105 , 1 , 1 ,
+65 , 1792 , 23 , 105 , 1 , 1 ,
+65 , 1793 , 23 , 105 , 1 , 1 ,
+65 , 1794 , 23 , 62 , 1 , 1 ,
+65 , 1795 , 23 , 62 , 1 , 1 ,
+65 , 1796 , 23 , 62 , 1 , 1 ,
+65 , 1797 , 23 , 62 , 1 , 1 ,
+65 , 1798 , 23 , 62 , 1 , 1 ,
+65 , 1799 , 22 , 62 , 1 , 1 ,
+65 , 1800 , 22 , 62 , 1 , 1 ,
+65 , 1801 , 16 , 72 , 1 , 1 ,
+65 , 1802 , 16 , 62 , 1 , 1 ,
+65 , 1803 , 16 , 72 , 1 , 1 ,
+65 , 1804 , 16 , 62 , 1 , 1 ,
+65 , 1805 , 16 , 62 , 1 , 1 ,
+65 , 1806 , 16 , 62 , 1 , 1 ,
+65 , 1807 , 15 , 62 , 1 , 1 ,
+65 , 1808 , 15 , 62 , 1 , 1 ,
+65 , 1809 , 15 , 62 , 1 , 1 ,
+65 , 1810 , 15 , 62 , 1 , 1 ,
+65 , 1811 , 15 , 62 , 1 , 1 ,
+65 , 1812 , 15 , 62 , 1 , 1 ,
+65 , 1813 , 15 , 62 , 1 , 1 ,
+65 , 1814 , 15 , 62 , 1 , 1 ,
+65 , 1815 , 15 , 62 , 1 , 1 ,
+65 , 1816 , 15 , 62 , 1 , 1 ,
+65 , 1817 , 15 , 62 , 1 , 1 ,
+65 , 1818 , 15 , 72 , 1 , 1 ,
+65 , 1819 , 15 , 62 , 1 , 1 ,
+65 , 1820 , 15 , 62 , 1 , 1 ,
+65 , 1821 , 15 , 72 , 1 , 1 ,
+65 , 1822 , 15 , 72 , 1 , 1 ,
+65 , 1823 , 14 , 62 , 1 , 1 ,
+65 , 1824 , 14 , 72 , 1 , 1 ,
+65 , 1825 , 14 , 72 , 1 , 1 ,
+65 , 1826 , 14 , 72 , 1 , 1 ,
+65 , 1827 , 14 , 72 , 1 , 1 ,
+65 , 1828 , 14 , 72 , 1 , 1 ,
+65 , 1829 , 14 , 72 , 1 , 1 ,
+65 , 1830 , 14 , 62 , 1 , 1 ,
+65 , 1831 , 8 , 72 , 1 , 1 ,
+65 , 1832 , 8 , 72 , 1 , 1 ,
+65 , 1833 , 8 , 72 , 1 , 1 ,
+65 , 1834 , 8 , 72 , 1 , 1 ,
+65 , 1835 , 8 , 62 , 1 , 1 ,
+65 , 1836 , 8 , 72 , 1 , 1 ,
+65 , 1837 , 8 , 72 , 1 , 1 ,
+65 , 1838 , 8 , 72 , 1 , 1 ,
+65 , 1839 , 8 , 62 , 1 , 1 ,
+65 , 1840 , 8 , 62 , 1 , 1 ,
+65 , 1841 , 8 , 72 , 1 , 1 ,
+65 , 1842 , 8 , 62 , 1 , 1 ,
+65 , 1843 , 8 , 72 , 1 , 1 ,
+65 , 1844 , 8 , 72 , 1 , 1 ,
+65 , 1845 , 8 , 72 , 1 , 1 ,
+65 , 1846 , 8 , 72 , 1 , 1 ,
+65 , 1847 , 8 , 72 , 1 , 1 ,
+65 , 1848 , 8 , 72 , 1 , 1 ,
+65 , 1849 , 8 , 72 , 1 , 1 ,
+65 , 1850 , 8 , 62 , 1 , 1 ,
+65 , 1851 , 8 , 62 , 1 , 1 ,
+65 , 1852 , 8 , 62 , 1 , 1 ,
+65 , 1853 , 8 , 72 , 1 , 1 ,
+65 , 1854 , 8 , 72 , 1 , 1 ,
+65 , 1855 , 8 , 62 , 1 , 1 ,
+65 , 1856 , 8 , 72 , 1 , 1 ,
+65 , 1857 , 8 , 72 , 1 , 1 ,
+65 , 1858 , 8 , 62 , 1 , 1 ,
+65 , 1859 , 8 , 62 , 1 , 1 ,
+65 , 1860 , 8 , 62 , 1 , 1 ,
+65 , 1861 , 414 , 123 , 1 , 1 , 1736 1783 1819 1812 1756 1854 1754 1855 1748 1664 1661 1747 1684 1680 1734 1666 1797 1821 1791 1715 1823 1828 1847 1768 1663 1776 1782 1810 1744 1694 1852 1848 1766 1714 1713 1825 1779 1725 1749 1803 1670 1778 1809 1669 1692 1703 1706 1845 1697 1679 1781 1805 1693 1702 1731 1832 1765 1788 1711 1716 1804 1830 1673 1789 1829 1707 1839 1710 1746 1806 1737 1840 1704 1676 1727 1771 1836 1858 1733 1759 1689 1753 1721 1755 1719 1802 1844 1849 1850 1838 1683 1796 1790 1685 1723 1674 1770 1752 1667 1696 1686 1739 1841 1732 1780 1691 1743 1677 1701 1824 1675 1690 1807 1662 1728 1777 1815 1851 1792 1772 1837 1785 1775 1808 1853 1709 1827 1688 1859 1717 1811 1769 1682 1801 1726 1787 1712 1722 1773 1818 1860 1750 1762 1833 1718 1767 1729 1820 1738 1793 1665 1800 1763 1698 1784 1835 1843 1745 1671 1695 1699 1681 1842 1826 1735 1730 1751 1705 1795 1794 1856 1764 1813 1678 1834 1814 1761 1774 1822 1720 1708 1857 1672 1742 1757 1760 1740 1687 1724 1831 1816 1799 1668 1817 1798 1700 1758 1741 1846 1786
+66 , 1862 , 544 , 41 , 1 , 1 ,
+66 , 1863 , 543 , 41 , 1 , 1 ,
+66 , 1864 , 533 , 31 , 1 , 1 ,
+66 , 1865 , 523 , 31 , 1 , 1 ,
+66 , 1866 , 523 , 31 , 1 , 1 ,
+66 , 1867 , 513 , 41 , 1 , 1 ,
+66 , 1868 , 502 , 31 , 1 , 1 ,
+66 , 1869 , 502 , 31 , 1 , 1 ,
+66 , 1870 , 491 , 31 , 1 , 1 ,
+66 , 1871 , 481 , 31 , 1 , 1 ,
+66 , 1872 , 481 , 31 , 1 , 1 ,
+66 , 1873 , 471 , 31 , 1 , 1 ,
+66 , 1874 , 450 , 41 , 1 , 1 ,
+66 , 1875 , 450 , 41 , 1 , 1 ,
+66 , 1876 , 450 , 31 , 1 , 1 ,
+66 , 1877 , 439 , 31 , 1 , 1 ,
+66 , 1878 , 430 , 41 , 1 , 1 ,
+66 , 1879 , 430 , 31 , 1 , 1 ,
+66 , 1880 , 398 , 41 , 1 , 1 ,
+66 , 1881 , 398 , 41 , 1 , 1 ,
+66 , 1882 , 397 , 41 , 1 , 1 ,
+66 , 1883 , 388 , 41 , 1 , 1 ,
+66 , 1884 , 378 , 41 , 1 , 1 ,
+66 , 1885 , 378 , 41 , 1 , 1 ,
+66 , 1886 , 346 , 41 , 1 , 1 ,
+66 , 1887 , 346 , 41 , 1 , 1 ,
+66 , 1888 , 345 , 41 , 1 , 1 ,
+66 , 1889 , 336 , 41 , 1 , 1 ,
+66 , 1890 , 326 , 41 , 1 , 1 ,
+66 , 1891 , 326 , 41 , 1 , 1 ,
+66 , 1892 , 294 , 41 , 1 , 1 ,
+66 , 1893 , 294 , 41 , 1 , 1 ,
+66 , 1894 , 294 , 41 , 1 , 1 ,
+66 , 1895 , 284 , 41 , 1 , 1 ,
+66 , 1896 , 274 , 41 , 1 , 1 ,
+66 , 1897 , 274 , 41 , 1 , 1 ,
+66 , 1898 , 243 , 41 , 1 , 1 ,
+66 , 1899 , 242 , 41 , 1 , 1 ,
+66 , 1900 , 242 , 41 , 1 , 1 ,
+66 , 1901 , 232 , 41 , 1 , 1 ,
+66 , 1902 , 222 , 41 , 1 , 1 ,
+66 , 1903 , 211 , 52 , 1 , 1 ,
+66 , 1904 , 180 , 52 , 1 , 1 ,
+66 , 1905 , 128 , 41 , 1 , 1 ,
+66 , 1906 , 1219 , 41 , 1 , 1 ,
+66 , 1907 , 1209 , 41 , 1 , 1 ,
+66 , 1908 , 1188 , 52 , 1 , 1 ,
+66 , 1909 , 1178 , 41 , 1 , 1 ,
+66 , 1910 , 1177 , 41 , 1 , 1 ,
+66 , 1911 , 1176 , 41 , 1 , 1 ,
+66 , 1912 , 1167 , 41 , 1 , 1 ,
+66 , 1913 , 1157 , 41 , 1 , 1 ,
+66 , 1914 , 1136 , 41 , 1 , 1 ,
+66 , 1915 , 1126 , 41 , 1 , 1 ,
+66 , 1916 , 1125 , 41 , 1 , 1 ,
+66 , 1917 , 1124 , 41 , 1 , 1 ,
+66 , 1918 , 1115 , 41 , 1 , 1 ,
+66 , 1919 , 1095 , 52 , 1 , 1 ,
+66 , 1920 , 1084 , 41 , 1 , 1 ,
+66 , 1921 , 1074 , 41 , 1 , 1 ,
+66 , 1922 , 1063 , 41 , 1 , 1 ,
+66 , 1923 , 1063 , 52 , 1 , 1 ,
+66 , 1924 , 1062 , 52 , 1 , 1 ,
+66 , 1925 , 1043 , 41 , 1 , 1 ,
+66 , 1926 , 1022 , 41 , 1 , 1 ,
+66 , 1927 , 1022 , 52 , 1 , 1 ,
+66 , 1928 , 1001 , 52 , 1 , 1 ,
+66 , 1929 , 1001 , 52 , 1 , 1 ,
+66 , 1930 , 1000 , 52 , 1 , 1 ,
+66 , 1931 , 981 , 52 , 1 , 1 ,
+66 , 1932 , 960 , 52 , 1 , 1 ,
+66 , 1933 , 960 , 52 , 1 , 1 ,
+66 , 1934 , 938 , 52 , 1 , 1 ,
+66 , 1935 , 938 , 52 , 1 , 1 ,
+66 , 1936 , 938 , 52 , 1 , 1 ,
+66 , 1937 , 929 , 41 , 1 , 1 ,
+66 , 1938 , 908 , 41 , 1 , 1 ,
+66 , 1939 , 908 , 41 , 1 , 1 ,
+66 , 1940 , 887 , 41 , 1 , 1 ,
+66 , 1941 , 886 , 41 , 1 , 1 ,
+66 , 1942 , 876 , 41 , 1 , 1 ,
+66 , 1943 , 876 , 52 , 1 , 1 ,
+66 , 1944 , 856 , 41 , 1 , 1 ,
+66 , 1945 , 856 , 41 , 1 , 1 ,
+66 , 1946 , 835 , 41 , 1 , 1 ,
+66 , 1947 , 834 , 41 , 1 , 1 ,
+66 , 1948 , 825 , 41 , 1 , 1 ,
+66 , 1949 , 825 , 41 , 1 , 1 ,
+66 , 1950 , 804 , 41 , 1 , 1 ,
+66 , 1951 , 804 , 41 , 1 , 1 ,
+66 , 1952 , 783 , 41 , 1 , 1 ,
+66 , 1953 , 782 , 41 , 1 , 1 ,
+66 , 1954 , 773 , 41 , 1 , 1 ,
+66 , 1955 , 773 , 41 , 1 , 1 ,
+66 , 1956 , 752 , 41 , 1 , 1 ,
+66 , 1957 , 751 , 42 , 1 , 1 ,
+66 , 1958 , 741 , 31 , 1 , 1 ,
+66 , 1959 , 730 , 41 , 1 , 1 ,
+66 , 1960 , 721 , 41 , 1 , 1 ,
+66 , 1961 , 720 , 41 , 1 , 1 ,
+66 , 1962 , 710 , 31 , 1 , 1 ,
+66 , 1963 , 699 , 31 , 1 , 1 ,
+66 , 1964 , 699 , 41 , 1 , 1 ,
+66 , 1965 , 678 , 41 , 1 , 1 ,
+66 , 1966 , 669 , 41 , 1 , 1 ,
+66 , 1967 , 669 , 41 , 1 , 1 ,
+66 , 1968 , 668 , 31 , 1 , 1 ,
+66 , 1969 , 648 , 41 , 1 , 1 ,
+66 , 1970 , 648 , 41 , 1 , 1 ,
+66 , 1971 , 627 , 41 , 1 , 1 ,
+66 , 1972 , 617 , 41 , 1 , 1 ,
+66 , 1973 , 617 , 41 , 1 , 1 ,
+66 , 1974 , 616 , 41 , 1 , 1 ,
+66 , 1975 , 596 , 41 , 1 , 1 ,
+66 , 1976 , 595 , 41 , 1 , 1 ,
+66 , 1977 , 575 , 41 , 1 , 1 ,
+66 , 1978 , 565 , 41 , 1 , 1 ,
+66 , 1979 , 565 , 41 , 1 , 1 ,
+66 , 1980 , 565 , 41 , 1 , 1 ,
+66 , 1981 , 9 , 126 , 1 , 1 ,
+66 , 1982 , 9 , 126 , 1 , 1 ,
+66 , 1983 , 9 , 115 , 1 , 1 ,
+66 , 1984 , 9 , 105 , 1 , 1 ,
+66 , 1985 , 9 , 115 , 1 , 1 ,
+66 , 1986 , 9 , 95 , 1 , 1 ,
+66 , 1987 , 8 , 105 , 1 , 1 ,
+66 , 1988 , 8 , 105 , 1 , 1 ,
+66 , 1989 , 8 , 105 , 1 , 1 ,
+66 , 1990 , 8 , 105 , 1 , 1 ,
+66 , 1991 , 8 , 105 , 1 , 1 ,
+66 , 1992 , 8 , 105 , 1 , 1 ,
+66 , 1993 , 8 , 105 , 1 , 1 ,
+66 , 1994 , 8 , 105 , 1 , 1 ,
+66 , 1995 , 8 , 95 , 1 , 1 ,
+66 , 1996 , 8 , 105 , 1 , 1 ,
+66 , 1997 , 25 , 52 , 1 , 1 ,
+66 , 1998 , 25 , 52 , 1 , 1 ,
+66 , 1999 , 25 , 52 , 1 , 1 ,
+66 , 2000 , 25 , 62 , 1 , 1 ,
+66 , 2001 , 25 , 52 , 1 , 1 ,
+66 , 2002 , 23 , 62 , 1 , 1 ,
+66 , 2003 , 22 , 52 , 1 , 1 ,
+66 , 2004 , 22 , 52 , 1 , 1 ,
+66 , 2005 , 22 , 52 , 1 , 1 ,
+66 , 2006 , 22 , 62 , 1 , 1 ,
+66 , 2007 , 22 , 52 , 1 , 1 ,
+66 , 2008 , 22 , 52 , 1 , 1 ,
+66 , 2009 , 21 , 52 , 1 , 1 ,
+66 , 2010 , 21 , 62 , 1 , 1 ,
+66 , 2011 , 21 , 52 , 1 , 1 ,
+66 , 2012 , 19 , 62 , 1 , 1 ,
+66 , 2013 , 19 , 52 , 1 , 1 ,
+66 , 2014 , 19 , 62 , 1 , 1 ,
+66 , 2015 , 18 , 62 , 1 , 1 ,
+66 , 2016 , 18 , 62 , 1 , 1 ,
+66 , 2017 , 18 , 62 , 1 , 1 ,
+66 , 2018 , 18 , 62 , 1 , 1 ,
+66 , 2019 , 18 , 62 , 1 , 1 ,
+66 , 2020 , 18 , 62 , 1 , 1 ,
+66 , 2021 , 18 , 62 , 1 , 1 ,
+66 , 2022 , 15 , 62 , 1 , 1 ,
+66 , 2023 , 15 , 62 , 1 , 1 ,
+66 , 2024 , 15 , 62 , 1 , 1 ,
+66 , 2025 , 15 , 62 , 1 , 1 ,
+66 , 2026 , 15 , 62 , 1 , 1 ,
+66 , 2027 , 14 , 62 , 1 , 1 ,
+66 , 2028 , 14 , 62 , 1 , 1 ,
+66 , 2029 , 14 , 62 , 1 , 1 ,
+66 , 2030 , 14 , 62 , 1 , 1 ,
+66 , 2031 , 14 , 62 , 1 , 1 ,
+66 , 2032 , 11 , 62 , 1 , 1 ,
+66 , 2033 , 11 , 62 , 1 , 1 ,
+66 , 2034 , 11 , 62 , 1 , 1 ,
+66 , 2035 , 11 , 62 , 1 , 1 ,
+66 , 2036 , 11 , 52 , 1 , 1 ,
+66 , 2037 , 11 , 62 , 1 , 1 ,
+66 , 2038 , 11 , 52 , 1 , 1 ,
+66 , 2039 , 11 , 62 , 1 , 1 ,
+66 , 2040 , 10 , 62 , 1 , 1 ,
+66 , 2041 , 10 , 52 , 1 , 1 ,
+66 , 2042 , 8 , 62 , 1 , 1 ,
+66 , 2043 , 8 , 62 , 1 , 1 ,
+66 , 2044 , 8 , 62 , 1 , 1 ,
+66 , 2045 , 8 , 62 , 1 , 1 ,
+66 , 2046 , 8 , 62 , 1 , 1 ,
+66 , 2047 , 8 , 62 , 1 , 1 ,
+66 , 2048 , 8 , 62 , 1 , 1 ,
+66 , 2049 , 8 , 62 , 1 , 1 ,
+66 , 2050 , 8 , 62 , 1 , 1 ,
+66 , 2051 , 8 , 52 , 1 , 1 ,
+66 , 2052 , 5 , 52 , 1 , 1 ,
+66 , 2053 , 5 , 52 , 1 , 1 ,
+66 , 2054 , 5 , 52 , 1 , 1 ,
+66 , 2055 , 5 , 41 , 1 , 1 ,
+66 , 2056 , 5 , 52 , 1 , 1 ,
+66 , 2057 , 5 , 52 , 1 , 1 ,
+66 , 2058 , 5 , 52 , 1 , 1 ,
+66 , 2059 , 5 , 52 , 1 , 1 ,
+66 , 2060 , 5 , 52 , 1 , 1 ,
+66 , 2061 , 5 , 52 , 1 , 1 ,
+66 , 2062 , 1276 , 123 , 1 , 1 , 2005 1922 1943 2019 1880 1961 2047 2054 1931 1936 1897 1892 2009 2021 1981 2058 1866 1978 1991 1947 1923 1967 1974 1988 2050 1873 1905 1985 1999 1893 1977 1864 1879 1869 1915 1938 2032 1953 1913 1903 2015 1925 1912 1891 2000 1898 2061 1896 1870 1888 2014 1949 2008 1958 1889 1917 2017 1986 1987 2004 2039 1932 1930 1933 2057 1934 1895 1906 1955 2052 2060 1973 2022 1966 1972 1874 1989 1916 1862 1919 1970 1902 2013 2040 1965 1968 1900 1942 2003 1941 2002 1867 1956 1863 1881 1954 2023 1971 1945 2043 2025 2012 1924 2045 1921 2018 1984 1975 1976 1998 1960 2056 1908 2035 1901 1983 2016 1995 1914 1907 2024 1940 1964 2006 1920 2030 1887 2059 2053 1935 1868 1877 2031 1871 1997 1944 2011 1890 1990 1952 1963 2037 1911 1951 1950 2027 1876 2020 1993 1878 1959 2007 2044 2041 1994 1962 2055 1946 1928 2046 1910 2049 2036 2038 1884 2042 1883 2028 1882 1872 2051 1980 1939 1885 1996 2029 1948 2010 1969 1894 1918 2001 1979 1937 1929 1899 2034 1875 1926 2026 2048 1992 1957 1886 1865 1904 1909 2033 1927 1982
+67 , 2063 , 145 , 52 , 1 , 1 ,
+67 , 2064 , 145 , 52 , 1 , 1 ,
+67 , 2065 , 145 , 52 , 1 , 1 ,
+67 , 2066 , 144 , 52 , 1 , 1 ,
+67 , 2067 , 144 , 52 , 1 , 1 ,
+67 , 2068 , 144 , 52 , 1 , 1 ,
+67 , 2069 , 144 , 52 , 1 , 1 ,
+67 , 2070 , 144 , 52 , 1 , 1 ,
+67 , 2071 , 144 , 41 , 1 , 1 ,
+67 , 2072 , 144 , 41 , 1 , 1 ,
+67 , 2073 , 141 , 52 , 1 , 1 ,
+67 , 2074 , 141 , 52 , 1 , 1 ,
+67 , 2075 , 141 , 52 , 1 , 1 ,
+67 , 2076 , 141 , 52 , 1 , 1 ,
+67 , 2077 , 141 , 52 , 1 , 1 ,
+67 , 2078 , 141 , 52 , 1 , 1 ,
+67 , 2079 , 141 , 52 , 1 , 1 ,
+67 , 2080 , 141 , 52 , 1 , 1 ,
+67 , 2081 , 141 , 52 , 1 , 1 ,
+67 , 2082 , 141 , 62 , 1 , 1 ,
+67 , 2083 , 138 , 62 , 1 , 1 ,
+67 , 2084 , 137 , 62 , 1 , 1 ,
+67 , 2085 , 137 , 62 , 1 , 1 ,
+67 , 2086 , 137 , 62 , 1 , 1 ,
+67 , 2087 , 137 , 52 , 1 , 1 ,
+67 , 2088 , 137 , 52 , 1 , 1 ,
+67 , 2089 , 137 , 52 , 1 , 1 ,
+67 , 2090 , 137 , 62 , 1 , 1 ,
+67 , 2091 , 137 , 62 , 1 , 1 ,
+67 , 2092 , 137 , 62 , 1 , 1 ,
+67 , 2093 , 134 , 62 , 1 , 1 ,
+67 , 2094 , 134 , 62 , 1 , 1 ,
+67 , 2095 , 134 , 62 , 1 , 1 ,
+67 , 2096 , 134 , 62 , 1 , 1 ,
+67 , 2097 , 133 , 62 , 1 , 1 ,
+67 , 2098 , 133 , 62 , 1 , 1 ,
+67 , 2099 , 133 , 62 , 1 , 1 ,
+67 , 2100 , 133 , 62 , 1 , 1 ,
+67 , 2101 , 133 , 62 , 1 , 1 ,
+67 , 2102 , 133 , 72 , 1 , 1 ,
+67 , 2103 , 131 , 72 , 1 , 1 ,
+67 , 2104 , 131 , 72 , 1 , 1 ,
+67 , 2105 , 131 , 62 , 1 , 1 ,
+67 , 2106 , 131 , 72 , 1 , 1 ,
+67 , 2107 , 131 , 72 , 1 , 1 ,
+67 , 2108 , 131 , 62 , 1 , 1 ,
+67 , 2109 , 131 , 72 , 1 , 1 ,
+67 , 2110 , 131 , 52 , 1 , 1 ,
+67 , 2111 , 131 , 52 , 1 , 1 ,
+67 , 2112 , 131 , 62 , 1 , 1 ,
+67 , 2113 , 129 , 62 , 1 , 1 ,
+67 , 2114 , 129 , 52 , 1 , 1 ,
+67 , 2115 , 129 , 52 , 1 , 1 ,
+67 , 2116 , 129 , 52 , 1 , 1 ,
+67 , 2117 , 129 , 52 , 1 , 1 ,
+67 , 2118 , 129 , 52 , 1 , 1 ,
+67 , 2119 , 129 , 52 , 1 , 1 ,
+67 , 2120 , 129 , 62 , 1 , 1 ,
+67 , 2121 , 129 , 52 , 1 , 1 ,
+67 , 2122 , 129 , 52 , 1 , 1 ,
+67 , 2123 , 276 , 52 , 1 , 1 ,
+67 , 2124 , 276 , 52 , 1 , 1 ,
+67 , 2125 , 276 , 41 , 1 , 1 ,
+67 , 2126 , 276 , 52 , 1 , 1 ,
+67 , 2127 , 276 , 52 , 1 , 1 ,
+67 , 2128 , 276 , 52 , 1 , 1 ,
+67 , 2129 , 276 , 52 , 1 , 1 ,
+67 , 2130 , 278 , 52 , 1 , 1 ,
+67 , 2131 , 278 , 52 , 1 , 1 ,
+67 , 2132 , 278 , 51 , 1 , 1 ,
+67 , 2133 , 278 , 51 , 1 , 1 ,
+67 , 2134 , 278 , 51 , 1 , 1 ,
+67 , 2135 , 278 , 52 , 1 , 1 ,
+67 , 2136 , 278 , 52 , 1 , 1 ,
+67 , 2137 , 276 , 52 , 1 , 1 ,
+67 , 2138 , 276 , 52 , 1 , 1 ,
+67 , 2139 , 276 , 52 , 1 , 1 ,
+67 , 2140 , 130 , 168 , 1 , 1 ,
+67 , 2141 , 130 , 178 , 1 , 1 ,
+67 , 2142 , 130 , 179 , 1 , 1 ,
+67 , 2143 , 130 , 189 , 1 , 1 ,
+67 , 2144 , 130 , 190 , 1 , 1 ,
+67 , 2145 , 130 , 189 , 1 , 1 ,
+67 , 2146 , 129 , 189 , 1 , 1 ,
+67 , 2147 , 129 , 209 , 1 , 1 ,
+67 , 2148 , 129 , 199 , 1 , 1 ,
+67 , 2149 , 129 , 199 , 1 , 1 ,
+67 , 2150 , 129 , 199 , 1 , 1 ,
+67 , 2151 , 129 , 199 , 1 , 1 ,
+67 , 2152 , 129 , 200 , 1 , 1 ,
+67 , 2153 , 129 , 199 , 1 , 1 ,
+67 , 2154 , 129 , 209 , 1 , 1 ,
+67 , 2155 , 129 , 210 , 1 , 1 ,
+67 , 2156 , 148 , 52 , 1 , 1 ,
+67 , 2157 , 148 , 52 , 1 , 1 ,
+67 , 2158 , 148 , 52 , 1 , 1 ,
+67 , 2159 , 148 , 52 , 1 , 1 ,
+67 , 2160 , 148 , 52 , 1 , 1 ,
+67 , 2161 , 147 , 52 , 1 , 1 ,
+67 , 2162 , 147 , 52 , 1 , 1 ,
+67 , 2163 , 147 , 41 , 1 , 1 ,
+67 , 2164 , 16 , 325 , 1 , 1 ,
+67 , 2165 , 15 , 336 , 1 , 1 ,
+67 , 2166 , 15 , 336 , 1 , 1 ,
+67 , 2167 , 15 , 346 , 1 , 1 ,
+67 , 2168 , 15 , 336 , 1 , 1 ,
+67 , 2169 , 15 , 336 , 1 , 1 ,
+67 , 2170 , 15 , 328 , 1 , 1 ,
+67 , 2171 , 15 , 326 , 1 , 1 ,
+67 , 2172 , 15 , 336 , 1 , 1 ,
+67 , 2173 , 15 , 316 , 1 , 1 ,
+67 , 2174 , 15 , 326 , 1 , 1 ,
+67 , 2175 , 15 , 305 , 1 , 1 ,
+67 , 2176 , 15 , 295 , 1 , 1 ,
+67 , 2177 , 15 , 284 , 1 , 1 ,
+67 , 2178 , 11 , 157 , 1 , 1 ,
+67 , 2179 , 11 , 157 , 1 , 1 ,
+67 , 2180 , 11 , 147 , 1 , 1 ,
+67 , 2181 , 11 , 137 , 1 , 1 ,
+67 , 2182 , 11 , 136 , 1 , 1 ,
+67 , 2183 , 11 , 126 , 1 , 1 ,
+67 , 2184 , 10 , 126 , 1 , 1 ,
+67 , 2185 , 10 , 105 , 1 , 1 ,
+67 , 2186 , 10 , 116 , 1 , 1 ,
+67 , 2187 , 10 , 116 , 1 , 1 ,
+67 , 2188 , 10 , 105 , 1 , 1 ,
+67 , 2189 , 10 , 105 , 1 , 1 ,
+67 , 2190 , 10 , 105 , 1 , 1 ,
+67 , 2191 , 10 , 105 , 1 , 1 ,
+67 , 2192 , 10 , 105 , 1 , 1 ,
+67 , 2193 , 10 , 105 , 1 , 1 ,
+67 , 2194 , 28 , 62 , 1 , 1 ,
+67 , 2195 , 28 , 52 , 1 , 1 ,
+67 , 2196 , 27 , 62 , 1 , 1 ,
+67 , 2197 , 27 , 52 , 1 , 1 ,
+67 , 2198 , 27 , 62 , 1 , 1 ,
+67 , 2199 , 27 , 52 , 1 , 1 ,
+67 , 2200 , 27 , 52 , 1 , 1 ,
+67 , 2201 , 26 , 52 , 1 , 1 ,
+67 , 2202 , 26 , 62 , 1 , 1 ,
+67 , 2203 , 24 , 52 , 1 , 1 ,
+67 , 2204 , 24 , 52 , 1 , 1 ,
+67 , 2205 , 24 , 52 , 1 , 1 ,
+67 , 2206 , 24 , 62 , 1 , 1 ,
+67 , 2207 , 23 , 52 , 1 , 1 ,
+67 , 2208 , 23 , 62 , 1 , 1 ,
+67 , 2209 , 23 , 52 , 1 , 1 ,
+67 , 2210 , 23 , 52 , 1 , 1 ,
+67 , 2211 , 23 , 62 , 1 , 1 ,
+67 , 2212 , 23 , 62 , 1 , 1 ,
+67 , 2213 , 21 , 62 , 1 , 1 ,
+67 , 2214 , 21 , 62 , 1 , 1 ,
+67 , 2215 , 20 , 52 , 1 , 1 ,
+67 , 2216 , 20 , 62 , 1 , 1 ,
+67 , 2217 , 20 , 62 , 1 , 1 ,
+67 , 2218 , 20 , 62 , 1 , 1 ,
+67 , 2219 , 20 , 62 , 1 , 1 ,
+67 , 2220 , 20 , 62 , 1 , 1 ,
+67 , 2221 , 20 , 62 , 1 , 1 ,
+67 , 2222 , 20 , 52 , 1 , 1 ,
+67 , 2223 , 17 , 62 , 1 , 1 ,
+67 , 2224 , 16 , 62 , 1 , 1 ,
+67 , 2225 , 16 , 62 , 1 , 1 ,
+67 , 2226 , 16 , 72 , 1 , 1 ,
+67 , 2227 , 16 , 62 , 1 , 1 ,
+67 , 2228 , 16 , 62 , 1 , 1 ,
+67 , 2229 , 16 , 62 , 1 , 1 ,
+67 , 2230 , 16 , 62 , 1 , 1 ,
+67 , 2231 , 16 , 62 , 1 , 1 ,
+67 , 2232 , 16 , 62 , 1 , 1 ,
+67 , 2233 , 12 , 62 , 1 , 1 ,
+67 , 2234 , 12 , 62 , 1 , 1 ,
+67 , 2235 , 12 , 62 , 1 , 1 ,
+67 , 2236 , 12 , 62 , 1 , 1 ,
+67 , 2237 , 12 , 62 , 1 , 1 ,
+67 , 2238 , 12 , 52 , 1 , 1 ,
+67 , 2239 , 12 , 52 , 1 , 1 ,
+67 , 2240 , 12 , 62 , 1 , 1 ,
+67 , 2241 , 11 , 62 , 1 , 1 ,
+67 , 2242 , 11 , 62 , 1 , 1 ,
+67 , 2243 , 9 , 62 , 1 , 1 ,
+67 , 2244 , 9 , 62 , 1 , 1 ,
+67 , 2245 , 9 , 62 , 1 , 1 ,
+67 , 2246 , 9 , 52 , 1 , 1 ,
+67 , 2247 , 9 , 52 , 1 , 1 ,
+67 , 2248 , 9 , 52 , 1 , 1 ,
+67 , 2249 , 9 , 52 , 1 , 1 ,
+67 , 2250 , 9 , 62 , 1 , 1 ,
+67 , 2251 , 9 , 62 , 1 , 1 ,
+67 , 2252 , 9 , 52 , 1 , 1 ,
+67 , 2253 , 6 , 52 , 1 , 1 ,
+67 , 2254 , 6 , 52 , 1 , 1 ,
+67 , 2255 , 6 , 41 , 1 , 1 ,
+67 , 2256 , 6 , 52 , 1 , 1 ,
+67 , 2257 , 6 , 41 , 1 , 1 ,
+67 , 2258 , 6 , 52 , 1 , 1 ,
+67 , 2259 , 6 , 41 , 1 , 1 ,
+67 , 2260 , 6 , 41 , 1 , 1 ,
+67 , 2261 , 6 , 41 , 1 , 1 ,
+67 , 2262 , 6 , 52 , 1 , 1 ,
+67 , 2263 , 459 , 154 , 1 , 1 , 2120 2080 2260 2248 2168 2171 2187 2244 2078 2180 2164 2191 2225 2063 2209 2235 2072 2183 2212 2148 2123 2258 2241 2162 2227 2231 2086 2201 2142 2157 2200 2087 2207 2237 2242 2256 2240 2077 2211 2100 2124 2118 2136 2104 2193 2185 2073 2228 2112 2188 2232 2088 2196 2202 2190 2134 2117 2111 2127 2076 2083 2121 2229 2181 2220 2094 2205 2194 2106 2154 2172 2210 2067 2198 2214 2068 2261 2107 2177 2137 2069 2253 2138 2128 2064 2095 2234 2144 2119 2081 2093 2158 2161 2249 2132 2149 2126 2223 2255 2163 2152 2160 2208 2239 2082 2113 2129 2090 2221 2114 2147 2071 2116 2184 2066 2250 2089 2097 2179 2215 2096 2139 2092 2173 2262 2226 2146 2236 2192 2101 2245 2109 2122 2169 2070 2145 2178 2130 2203 2156 2233 2151 2074 2176 2257 2143 2182 2230 2251 2141 2115 2105 2103 2125 2186 2247 2131 2224 2102 2135 2091 2206 2189 2140 2170 2259 2085 2110 2199 2075 2099 2222 2133 2098 2175 2216 2065 2195 2166 2213 2219 2108 2197 2254 2155 2159 2084 2079 2165 2150 2174 2246 2218 2217 2153 2204 2167 2252 2238 2243
+68 , 2264 , 87 , 62 , 1 , 1 ,
+68 , 2265 , 87 , 62 , 1 , 1 ,
+68 , 2266 , 81 , 51 , 1 , 1 ,
+68 , 2267 , 85 , 62 , 1 , 1 ,
+68 , 2268 , 84 , 52 , 1 , 1 ,
+68 , 2269 , 84 , 62 , 1 , 1 ,
+68 , 2270 , 84 , 62 , 1 , 1 ,
+68 , 2271 , 84 , 52 , 1 , 1 ,
+68 , 2272 , 99 , 52 , 1 , 1 ,
+68 , 2273 , 88 , 52 , 1 , 1 ,
+68 , 2274 , 88 , 52 , 1 , 1 ,
+68 , 2275 , 88 , 52 , 1 , 1 ,
+68 , 2276 , 88 , 52 , 1 , 1 ,
+68 , 2277 , 81 , 62 , 1 , 1 ,
+68 , 2278 , 95 , 52 , 1 , 1 ,
+68 , 2279 , 94 , 52 , 1 , 1 ,
+68 , 2280 , 93 , 52 , 1 , 1 ,
+68 , 2281 , 92 , 52 , 1 , 1 ,
+68 , 2282 , 92 , 62 , 1 , 1 ,
+68 , 2283 , 136 , 41 , 1 , 1 ,
+68 , 2284 , 136 , 41 , 1 , 1 ,
+68 , 2285 , 134 , 52 , 1 , 1 ,
+68 , 2286 , 134 , 52 , 1 , 1 ,
+68 , 2287 , 134 , 41 , 1 , 1 ,
+68 , 2288 , 134 , 41 , 1 , 1 ,
+68 , 2289 , 134 , 41 , 1 , 1 ,
+68 , 2290 , 134 , 41 , 1 , 1 ,
+68 , 2291 , 83 , 52 , 1 , 1 ,
+68 , 2292 , 97 , 52 , 1 , 1 ,
+68 , 2293 , 96 , 62 , 1 , 1 ,
+68 , 2294 , 133 , 41 , 1 , 1 ,
+68 , 2295 , 133 , 41 , 1 , 1 ,
+68 , 2296 , 133 , 41 , 1 , 1 ,
+68 , 2297 , 133 , 41 , 1 , 1 ,
+68 , 2298 , 81 , 52 , 1 , 1 ,
+68 , 2299 , 132 , 41 , 1 , 1 ,
+68 , 2300 , 132 , 41 , 1 , 1 ,
+68 , 2301 , 83 , 62 , 1 , 1 ,
+68 , 2302 , 83 , 62 , 1 , 1 ,
+68 , 2303 , 81 , 62 , 1 , 1 ,
+68 , 2304 , 131 , 41 , 1 , 1 ,
+68 , 2305 , 131 , 41 , 1 , 1 ,
+68 , 2306 , 131 , 41 , 1 , 1 ,
+68 , 2307 , 131 , 52 , 1 , 1 ,
+68 , 2308 , 81 , 62 , 1 , 1 ,
+68 , 2309 , 131 , 41 , 1 , 1 ,
+68 , 2310 , 81 , 62 , 1 , 1 ,
+68 , 2311 , 96 , 62 , 1 , 1 ,
+68 , 2312 , 96 , 62 , 1 , 1 ,
+68 , 2313 , 118 , 95 , 1 , 1 ,
+68 , 2314 , 131 , 52 , 1 , 1 ,
+68 , 2315 , 131 , 52 , 1 , 1 ,
+68 , 2316 , 131 , 52 , 1 , 1 ,
+68 , 2317 , 129 , 52 , 1 , 1 ,
+68 , 2318 , 129 , 52 , 1 , 1 ,
+68 , 2319 , 102 , 52 , 1 , 1 ,
+68 , 2320 , 100 , 62 , 1 , 1 ,
+68 , 2321 , 129 , 52 , 1 , 1 ,
+68 , 2322 , 129 , 52 , 1 , 1 ,
+68 , 2323 , 102 , 52 , 1 , 1 ,
+68 , 2324 , 102 , 62 , 1 , 1 ,
+68 , 2325 , 102 , 62 , 1 , 1 ,
+68 , 2326 , 102 , 62 , 1 , 1 ,
+68 , 2327 , 92 , 62 , 1 , 1 ,
+68 , 2328 , 92 , 72 , 1 , 1 ,
+68 , 2329 , 129 , 52 , 1 , 1 ,
+68 , 2330 , 95 , 62 , 1 , 1 ,
+68 , 2331 , 129 , 52 , 1 , 1 ,
+68 , 2332 , 84 , 72 , 1 , 1 ,
+68 , 2333 , 84 , 62 , 1 , 1 ,
+68 , 2334 , 129 , 52 , 1 , 1 ,
+68 , 2335 , 129 , 52 , 1 , 1 ,
+68 , 2336 , 129 , 52 , 1 , 1 ,
+68 , 2337 , 129 , 52 , 1 , 1 ,
+68 , 2338 , 118 , 157 , 1 , 1 ,
+68 , 2339 , 137 , 52 , 1 , 1 ,
+68 , 2340 , 92 , 72 , 1 , 1 ,
+68 , 2341 , 91 , 72 , 1 , 1 ,
+68 , 2342 , 91 , 62 , 1 , 1 ,
+68 , 2343 , 89 , 72 , 1 , 1 ,
+68 , 2344 , 88 , 72 , 1 , 1 ,
+68 , 2345 , 92 , 62 , 1 , 1 ,
+68 , 2346 , 137 , 52 , 1 , 1 ,
+68 , 2347 , 137 , 52 , 1 , 1 ,
+68 , 2348 , 118 , 199 , 1 , 1 ,
+68 , 2349 , 137 , 52 , 1 , 1 ,
+68 , 2350 , 137 , 41 , 1 , 1 ,
+68 , 2351 , 118 , 199 , 1 , 1 ,
+68 , 2352 , 118 , 199 , 1 , 1 ,
+68 , 2353 , 109 , 52 , 1 , 1 ,
+68 , 2354 , 109 , 52 , 1 , 1 ,
+68 , 2355 , 105 , 52 , 1 , 1 ,
+68 , 2356 , 105 , 52 , 1 , 1 ,
+68 , 2357 , 105 , 52 , 1 , 1 ,
+68 , 2358 , 102 , 52 , 1 , 1 ,
+68 , 2359 , 88 , 62 , 1 , 1 ,
+68 , 2360 , 118 , 220 , 1 , 1 ,
+68 , 2361 , 99 , 52 , 1 , 1 ,
+68 , 2362 , 98 , 52 , 1 , 1 ,
+68 , 2363 , 98 , 62 , 1 , 1 ,
+68 , 2364 , 97 , 52 , 1 , 1 ,
+68 , 2365 , 136 , 41 , 1 , 1 ,
+68 , 2366 , 136 , 41 , 1 , 1 ,
+68 , 2367 , 136 , 41 , 1 , 1 ,
+68 , 2368 , 100 , 52 , 1 , 1 ,
+68 , 2369 , 99 , 52 , 1 , 1 ,
+68 , 2370 , 88 , 62 , 1 , 1 ,
+68 , 2371 , 81 , 52 , 1 , 1 ,
+68 , 2372 , 13 , 305 , 1 , 1 ,
+68 , 2373 , 13 , 315 , 1 , 1 ,
+68 , 2374 , 13 , 315 , 1 , 1 ,
+68 , 2375 , 13 , 315 , 1 , 1 ,
+68 , 2376 , 12 , 295 , 1 , 1 ,
+68 , 2377 , 12 , 294 , 1 , 1 ,
+68 , 2378 , 12 , 284 , 1 , 1 ,
+68 , 2379 , 12 , 274 , 1 , 1 ,
+68 , 2380 , 12 , 265 , 1 , 1 ,
+68 , 2381 , 12 , 265 , 1 , 1 ,
+68 , 2382 , 12 , 254 , 1 , 1 ,
+68 , 2383 , 12 , 254 , 1 , 1 ,
+68 , 2384 , 12 , 244 , 1 , 1 ,
+68 , 2385 , 12 , 235 , 1 , 1 ,
+68 , 2386 , 11 , 105 , 1 , 1 ,
+68 , 2387 , 11 , 105 , 1 , 1 ,
+68 , 2388 , 11 , 94 , 1 , 1 ,
+68 , 2389 , 11 , 95 , 1 , 1 ,
+68 , 2390 , 11 , 95 , 1 , 1 ,
+68 , 2391 , 11 , 95 , 1 , 1 ,
+68 , 2392 , 10 , 105 , 1 , 1 ,
+68 , 2393 , 10 , 95 , 1 , 1 ,
+68 , 2394 , 10 , 105 , 1 , 1 ,
+68 , 2395 , 10 , 116 , 1 , 1 ,
+68 , 2396 , 10 , 106 , 1 , 1 ,
+68 , 2397 , 10 , 95 , 1 , 1 ,
+68 , 2398 , 10 , 95 , 1 , 1 ,
+68 , 2399 , 10 , 95 , 1 , 1 ,
+68 , 2400 , 10 , 105 , 1 , 1 ,
+68 , 2401 , 10 , 95 , 1 , 1 ,
+68 , 2402 , 26 , 62 , 1 , 1 ,
+68 , 2403 , 25 , 62 , 1 , 1 ,
+68 , 2404 , 23 , 62 , 1 , 1 ,
+68 , 2405 , 23 , 72 , 1 , 1 ,
+68 , 2406 , 23 , 62 , 1 , 1 ,
+68 , 2407 , 23 , 52 , 1 , 1 ,
+68 , 2408 , 23 , 62 , 1 , 1 ,
+68 , 2409 , 23 , 52 , 1 , 1 ,
+68 , 2410 , 23 , 72 , 1 , 1 ,
+68 , 2411 , 22 , 62 , 1 , 1 ,
+68 , 2412 , 22 , 62 , 1 , 1 ,
+68 , 2413 , 22 , 62 , 1 , 1 ,
+68 , 2414 , 20 , 62 , 1 , 1 ,
+68 , 2415 , 20 , 62 , 1 , 1 ,
+68 , 2416 , 20 , 72 , 1 , 1 ,
+68 , 2417 , 20 , 52 , 1 , 1 ,
+68 , 2418 , 19 , 62 , 1 , 1 ,
+68 , 2419 , 19 , 62 , 1 , 1 ,
+68 , 2420 , 19 , 62 , 1 , 1 ,
+68 , 2421 , 19 , 72 , 1 , 1 ,
+68 , 2422 , 19 , 72 , 1 , 1 ,
+68 , 2423 , 19 , 62 , 1 , 1 ,
+68 , 2424 , 16 , 62 , 1 , 1 ,
+68 , 2425 , 16 , 62 , 1 , 1 ,
+68 , 2426 , 16 , 72 , 1 , 1 ,
+68 , 2427 , 16 , 72 , 1 , 1 ,
+68 , 2428 , 16 , 72 , 1 , 1 ,
+68 , 2429 , 16 , 72 , 1 , 1 ,
+68 , 2430 , 15 , 72 , 1 , 1 ,
+68 , 2431 , 15 , 72 , 1 , 1 ,
+68 , 2432 , 15 , 62 , 1 , 1 ,
+68 , 2433 , 15 , 62 , 1 , 1 ,
+68 , 2434 , 11 , 62 , 1 , 1 ,
+68 , 2435 , 11 , 62 , 1 , 1 ,
+68 , 2436 , 11 , 62 , 1 , 1 ,
+68 , 2437 , 11 , 62 , 1 , 1 ,
+68 , 2438 , 11 , 62 , 1 , 1 ,
+68 , 2439 , 11 , 62 , 1 , 1 ,
+68 , 2440 , 11 , 62 , 1 , 1 ,
+68 , 2441 , 11 , 62 , 1 , 1 ,
+68 , 2442 , 11 , 72 , 1 , 1 ,
+68 , 2443 , 11 , 62 , 1 , 1 ,
+68 , 2444 , 9 , 62 , 1 , 1 ,
+68 , 2445 , 9 , 62 , 1 , 1 ,
+68 , 2446 , 9 , 62 , 1 , 1 ,
+68 , 2447 , 9 , 62 , 1 , 1 ,
+68 , 2448 , 9 , 62 , 1 , 1 ,
+68 , 2449 , 9 , 62 , 1 , 1 ,
+68 , 2450 , 9 , 62 , 1 , 1 ,
+68 , 2451 , 9 , 62 , 1 , 1 ,
+68 , 2452 , 9 , 62 , 1 , 1 ,
+68 , 2453 , 8 , 72 , 1 , 1 ,
+68 , 2454 , 6 , 72 , 1 , 1 ,
+68 , 2455 , 6 , 72 , 1 , 1 ,
+68 , 2456 , 6 , 72 , 1 , 1 ,
+68 , 2457 , 6 , 62 , 1 , 1 ,
+68 , 2458 , 6 , 62 , 1 , 1 ,
+68 , 2459 , 6 , 62 , 1 , 1 ,
+68 , 2460 , 6 , 62 , 1 , 1 ,
+68 , 2461 , 6 , 62 , 1 , 1 ,
+68 , 2462 , 6 , 62 , 1 , 1 ,
+68 , 2463 , 6 , 62 , 1 , 1 ,
+68 , 2464 , 425 , 133 , 1 , 1 , 2347 2309 2380 2334 2405 2360 2409 2383 2393 2394 2451 2397 2271 2332 2275 2362 2439 2284 2407 2371 2402 2333 2340 2307 2338 2435 2300 2415 2320 2450 2454 2436 2417 2385 2339 2299 2336 2322 2286 2440 2345 2432 2329 2292 2381 2298 2453 2315 2387 2423 2433 2441 2438 2273 2388 2403 2305 2406 2420 2325 2449 2290 2357 2445 2279 2277 2424 2331 2447 2372 2461 2323 2446 2264 2278 2413 2289 2379 2352 2342 2276 2293 2448 2288 2378 2396 2434 2382 2270 2296 2421 2344 2442 2353 2335 2412 2389 2272 2455 2370 2304 2341 2398 2350 2316 2459 2422 2462 2374 2266 2368 2376 2358 2337 2291 2366 2348 2399 2410 2359 2327 2274 2408 2443 2361 2400 2425 2328 2308 2365 2349 2430 2452 2312 2384 2314 2404 2419 2392 2367 2369 2364 2437 2283 2390 2326 2311 2377 2431 2418 2427 2303 2401 2306 2313 2429 2373 2294 2297 2426 2302 2267 2269 2386 2375 2285 2281 2458 2391 2295 2395 2355 2265 2346 2318 2356 2463 2354 2321 2280 2414 2330 2310 2282 2444 2343 2460 2351 2268 2301 2456 2363 2324 2287 2411 2416 2457 2319 2317 2428
+69 , 2465 , 101 , 52 , 1 , 1 ,
+69 , 2466 , 101 , 52 , 1 , 1 ,
+69 , 2467 , 100 , 62 , 1 , 1 ,
+69 , 2468 , 87 , 52 , 1 , 1 ,
+69 , 2469 , 87 , 52 , 1 , 1 ,
+69 , 2470 , 87 , 62 , 1 , 1 ,
+69 , 2471 , 86 , 52 , 1 , 1 ,
+69 , 2472 , 86 , 52 , 1 , 1 ,
+69 , 2473 , 85 , 62 , 1 , 1 ,
+69 , 2474 , 85 , 72 , 1 , 1 ,
+69 , 2475 , 84 , 62 , 1 , 1 ,
+69 , 2476 , 100 , 52 , 1 , 1 ,
+69 , 2477 , 98 , 62 , 1 , 1 ,
+69 , 2478 , 97 , 62 , 1 , 1 ,
+69 , 2479 , 97 , 52 , 1 , 1 ,
+69 , 2480 , 94 , 62 , 1 , 1 ,
+69 , 2481 , 94 , 62 , 1 , 1 ,
+69 , 2482 , 93 , 52 , 1 , 1 ,
+69 , 2483 , 91 , 62 , 1 , 1 ,
+69 , 2484 , 91 , 62 , 1 , 1 ,
+69 , 2485 , 90 , 52 , 1 , 1 ,
+69 , 2486 , 89 , 62 , 1 , 1 ,
+69 , 2487 , 87 , 62 , 1 , 1 ,
+69 , 2488 , 87 , 73 , 1 , 1 ,
+69 , 2489 , 87 , 52 , 1 , 1 ,
+69 , 2490 , 87 , 52 , 1 , 1 ,
+69 , 2491 , 84 , 62 , 1 , 1 ,
+69 , 2492 , 83 , 62 , 1 , 1 ,
+69 , 2493 , 83 , 52 , 1 , 1 ,
+69 , 2494 , 83 , 52 , 1 , 1 ,
+69 , 2495 , 83 , 52 , 1 , 1 ,
+69 , 2496 , 81 , 62 , 1 , 1 ,
+69 , 2497 , 81 , 62 , 1 , 1 ,
+69 , 2498 , 103 , 62 , 1 , 1 ,
+69 , 2499 , 101 , 62 , 1 , 1 ,
+69 , 2500 , 157 , 41 , 1 , 1 ,
+69 , 2501 , 157 , 41 , 1 , 1 ,
+69 , 2502 , 81 , 62 , 1 , 1 ,
+69 , 2503 , 81 , 52 , 1 , 1 ,
+69 , 2504 , 157 , 41 , 1 , 1 ,
+69 , 2505 , 155 , 41 , 1 , 1 ,
+69 , 2506 , 154 , 41 , 1 , 1 ,
+69 , 2507 , 153 , 41 , 1 , 1 ,
+69 , 2508 , 152 , 41 , 1 , 1 ,
+69 , 2509 , 152 , 41 , 1 , 1 ,
+69 , 2510 , 152 , 41 , 1 , 1 ,
+69 , 2511 , 152 , 41 , 1 , 1 ,
+69 , 2512 , 150 , 95 , 1 , 1 ,
+69 , 2513 , 150 , 41 , 1 , 1 ,
+69 , 2514 , 150 , 41 , 1 , 1 ,
+69 , 2515 , 149 , 41 , 1 , 1 ,
+69 , 2516 , 149 , 41 , 1 , 1 ,
+69 , 2517 , 149 , 41 , 1 , 1 ,
+69 , 2518 , 147 , 52 , 1 , 1 ,
+69 , 2519 , 146 , 41 , 1 , 1 ,
+69 , 2520 , 146 , 41 , 1 , 1 ,
+69 , 2521 , 143 , 41 , 1 , 1 ,
+69 , 2522 , 140 , 95 , 1 , 1 ,
+69 , 2523 , 139 , 105 , 1 , 1 ,
+69 , 2524 , 139 , 105 , 1 , 1 ,
+69 , 2525 , 133 , 41 , 1 , 1 ,
+69 , 2526 , 129 , 105 , 1 , 1 ,
+69 , 2527 , 119 , 105 , 1 , 1 ,
+69 , 2528 , 119 , 105 , 1 , 1 ,
+69 , 2529 , 119 , 105 , 1 , 1 ,
+69 , 2530 , 118 , 126 , 1 , 1 ,
+69 , 2531 , 118 , 126 , 1 , 1 ,
+69 , 2532 , 118 , 127 , 1 , 1 ,
+69 , 2533 , 118 , 137 , 1 , 1 ,
+69 , 2534 , 114 , 62 , 1 , 1 ,
+69 , 2535 , 111 , 62 , 1 , 1 ,
+69 , 2536 , 111 , 62 , 1 , 1 ,
+69 , 2537 , 111 , 52 , 1 , 1 ,
+69 , 2538 , 111 , 62 , 1 , 1 ,
+69 , 2539 , 111 , 52 , 1 , 1 ,
+69 , 2540 , 111 , 62 , 1 , 1 ,
+69 , 2541 , 111 , 62 , 1 , 1 ,
+69 , 2542 , 111 , 62 , 1 , 1 ,
+69 , 2543 , 110 , 62 , 1 , 1 ,
+69 , 2544 , 110 , 62 , 1 , 1 ,
+69 , 2545 , 110 , 62 , 1 , 1 ,
+69 , 2546 , 109 , 62 , 1 , 1 ,
+69 , 2547 , 108 , 52 , 1 , 1 ,
+69 , 2548 , 108 , 62 , 1 , 1 ,
+69 , 2549 , 108 , 62 , 1 , 1 ,
+69 , 2550 , 108 , 52 , 1 , 1 ,
+69 , 2551 , 108 , 62 , 1 , 1 ,
+69 , 2552 , 107 , 52 , 1 , 1 ,
+69 , 2553 , 107 , 62 , 1 , 1 ,
+69 , 2554 , 104 , 52 , 1 , 1 ,
+69 , 2555 , 104 , 52 , 1 , 1 ,
+69 , 2556 , 104 , 62 , 1 , 1 ,
+69 , 2557 , 104 , 52 , 1 , 1 ,
+69 , 2558 , 104 , 52 , 1 , 1 ,
+69 , 2559 , 104 , 62 , 1 , 1 ,
+69 , 2560 , 103 , 62 , 1 , 1 ,
+69 , 2561 , 81 , 52 , 1 , 1 ,
+69 , 2562 , 81 , 52 , 1 , 1 ,
+69 , 2563 , 81 , 62 , 1 , 1 ,
+69 , 2564 , 81 , 52 , 1 , 1 ,
+69 , 2565 , 71 , 52 , 1 , 1 ,
+69 , 2566 , 13 , 365 , 1 , 1 ,
+69 , 2567 , 13 , 315 , 1 , 1 ,
+69 , 2568 , 13 , 376 , 1 , 1 ,
+69 , 2569 , 13 , 386 , 1 , 1 ,
+69 , 2570 , 12 , 375 , 1 , 1 ,
+69 , 2571 , 12 , 375 , 1 , 1 ,
+69 , 2572 , 12 , 376 , 1 , 1 ,
+69 , 2573 , 12 , 335 , 1 , 1 ,
+69 , 2574 , 12 , 347 , 1 , 1 ,
+69 , 2575 , 12 , 366 , 1 , 1 ,
+69 , 2576 , 12 , 366 , 1 , 1 ,
+69 , 2577 , 12 , 366 , 1 , 1 ,
+69 , 2578 , 12 , 294 , 1 , 1 ,
+69 , 2579 , 12 , 285 , 1 , 1 ,
+69 , 2580 , 11 , 157 , 1 , 1 ,
+69 , 2581 , 11 , 157 , 1 , 1 ,
+69 , 2582 , 11 , 147 , 1 , 1 ,
+69 , 2583 , 11 , 136 , 1 , 1 ,
+69 , 2584 , 11 , 137 , 1 , 1 ,
+69 , 2585 , 11 , 126 , 1 , 1 ,
+69 , 2586 , 10 , 126 , 1 , 1 ,
+69 , 2587 , 10 , 116 , 1 , 1 ,
+69 , 2588 , 10 , 105 , 1 , 1 ,
+69 , 2589 , 10 , 105 , 1 , 1 ,
+69 , 2590 , 10 , 95 , 1 , 1 ,
+69 , 2591 , 10 , 95 , 1 , 1 ,
+69 , 2592 , 10 , 95 , 1 , 1 ,
+69 , 2593 , 10 , 105 , 1 , 1 ,
+69 , 2594 , 10 , 106 , 1 , 1 ,
+69 , 2595 , 10 , 95 , 1 , 1 ,
+69 , 2596 , 26 , 72 , 1 , 1 ,
+69 , 2597 , 25 , 62 , 1 , 1 ,
+69 , 2598 , 25 , 62 , 1 , 1 ,
+69 , 2599 , 25 , 72 , 1 , 1 ,
+69 , 2600 , 25 , 72 , 1 , 1 ,
+69 , 2601 , 25 , 72 , 1 , 1 ,
+69 , 2602 , 25 , 62 , 1 , 1 ,
+69 , 2603 , 25 , 72 , 1 , 1 ,
+69 , 2604 , 25 , 62 , 1 , 1 ,
+69 , 2605 , 22 , 73 , 1 , 1 ,
+69 , 2606 , 22 , 72 , 1 , 1 ,
+69 , 2607 , 22 , 62 , 1 , 1 ,
+69 , 2608 , 22 , 72 , 1 , 1 ,
+69 , 2609 , 22 , 72 , 1 , 1 ,
+69 , 2610 , 21 , 62 , 1 , 1 ,
+69 , 2611 , 21 , 72 , 1 , 1 ,
+69 , 2612 , 21 , 72 , 1 , 1 ,
+69 , 2613 , 21 , 73 , 1 , 1 ,
+69 , 2614 , 21 , 52 , 1 , 1 ,
+69 , 2615 , 18 , 72 , 1 , 1 ,
+69 , 2616 , 18 , 62 , 1 , 1 ,
+69 , 2617 , 18 , 72 , 1 , 1 ,
+69 , 2618 , 18 , 72 , 1 , 1 ,
+69 , 2619 , 18 , 72 , 1 , 1 ,
+69 , 2620 , 18 , 72 , 1 , 1 ,
+69 , 2621 , 18 , 72 , 1 , 1 ,
+69 , 2622 , 18 , 82 , 1 , 1 ,
+69 , 2623 , 18 , 72 , 1 , 1 ,
+69 , 2624 , 17 , 72 , 1 , 1 ,
+69 , 2625 , 15 , 62 , 1 , 1 ,
+69 , 2626 , 15 , 82 , 1 , 1 ,
+69 , 2627 , 14 , 82 , 1 , 1 ,
+69 , 2628 , 14 , 82 , 1 , 1 ,
+69 , 2629 , 14 , 82 , 1 , 1 ,
+69 , 2630 , 14 , 72 , 1 , 1 ,
+69 , 2631 , 14 , 82 , 1 , 1 ,
+69 , 2632 , 14 , 82 , 1 , 1 ,
+69 , 2633 , 14 , 62 , 1 , 1 ,
+69 , 2634 , 14 , 62 , 1 , 1 ,
+69 , 2635 , 11 , 72 , 1 , 1 ,
+69 , 2636 , 11 , 82 , 1 , 1 ,
+69 , 2637 , 11 , 62 , 1 , 1 ,
+69 , 2638 , 11 , 62 , 1 , 1 ,
+69 , 2639 , 11 , 62 , 1 , 1 ,
+69 , 2640 , 11 , 62 , 1 , 1 ,
+69 , 2641 , 11 , 62 , 1 , 1 ,
+69 , 2642 , 11 , 62 , 1 , 1 ,
+69 , 2643 , 11 , 62 , 1 , 1 ,
+69 , 2644 , 11 , 62 , 1 , 1 ,
+69 , 2645 , 9 , 72 , 1 , 1 ,
+69 , 2646 , 9 , 62 , 1 , 1 ,
+69 , 2647 , 9 , 62 , 1 , 1 ,
+69 , 2648 , 9 , 62 , 1 , 1 ,
+69 , 2649 , 9 , 62 , 1 , 1 ,
+69 , 2650 , 9 , 62 , 1 , 1 ,
+69 , 2651 , 9 , 62 , 1 , 1 ,
+69 , 2652 , 9 , 62 , 1 , 1 ,
+69 , 2653 , 8 , 62 , 1 , 1 ,
+69 , 2654 , 8 , 72 , 1 , 1 ,
+69 , 2655 , 6 , 72 , 1 , 1 ,
+69 , 2656 , 6 , 62 , 1 , 1 ,
+69 , 2657 , 6 , 62 , 1 , 1 ,
+69 , 2658 , 6 , 62 , 1 , 1 ,
+69 , 2659 , 6 , 52 , 1 , 1 ,
+69 , 2660 , 6 , 62 , 1 , 1 ,
+69 , 2661 , 6 , 62 , 1 , 1 ,
+69 , 2662 , 6 , 62 , 1 , 1 ,
+69 , 2663 , 6 , 62 , 1 , 1 ,
+69 , 2664 , 6 , 62 , 1 , 1 ,
+69 , 2665 , 422 , 164 , 1 , 1 , 2612 2617 2563 2538 2573 2639 2581 2502 2592 2537 2489 2598 2626 2614 2533 2511 2597 2567 2657 2632 2535 2476 2613 2542 2641 2484 2536 2648 2551 2616 2630 2519 2465 2473 2663 2652 2605 2503 2516 2540 2622 2653 2627 2496 2559 2660 2555 2522 2466 2530 2611 2584 2593 2658 2483 2553 2590 2629 2636 2599 2651 2575 2594 2649 2474 2468 2647 2528 2501 2470 2467 2507 2635 2620 2477 2500 2521 2523 2527 2520 2566 2628 2596 2569 2655 2548 2515 2472 2513 2506 2638 2588 2591 2602 2565 2603 2556 2471 2498 2532 2531 2541 2488 2517 2514 2571 2557 2642 2615 2643 2654 2604 2539 2595 2646 2493 2572 2544 2589 2645 2659 2606 2560 2518 2550 2576 2661 2656 2624 2586 2508 2494 2574 2618 2554 2587 2631 2579 2545 2650 2534 2524 2621 2482 2479 2564 2644 2619 2582 2529 2491 2497 2610 2633 2600 2492 2509 2510 2495 2634 2583 2499 2608 2547 2585 2526 2577 2570 2601 2487 2525 2505 2607 2664 2475 2580 2469 2662 2543 2568 2480 2485 2481 2558 2546 2562 2490 2637 2478 2486 2640 2623 2561 2552 2504 2512 2549 2609 2625 2578
+70 , 2666 , 174 , 52 , 1 , 1 ,
+70 , 2667 , 174 , 52 , 1 , 1 ,
+70 , 2668 , 172 , 41 , 1 , 1 ,
+70 , 2669 , 189 , 41 , 1 , 1 ,
+70 , 2670 , 89 , 62 , 1 , 1 ,
+70 , 2671 , 112 , 62 , 1 , 1 ,
+70 , 2672 , 112 , 52 , 1 , 1 ,
+70 , 2673 , 112 , 62 , 1 , 1 ,
+70 , 2674 , 112 , 41 , 1 , 1 ,
+70 , 2675 , 112 , 52 , 1 , 1 ,
+70 , 2676 , 111 , 52 , 1 , 1 ,
+70 , 2677 , 111 , 52 , 1 , 1 ,
+70 , 2678 , 109 , 52 , 1 , 1 ,
+70 , 2679 , 109 , 52 , 1 , 1 ,
+70 , 2680 , 108 , 52 , 1 , 1 ,
+70 , 2681 , 108 , 52 , 1 , 1 ,
+70 , 2682 , 108 , 52 , 1 , 1 ,
+70 , 2683 , 108 , 72 , 1 , 1 ,
+70 , 2684 , 189 , 41 , 1 , 1 ,
+70 , 2685 , 172 , 52 , 1 , 1 ,
+70 , 2686 , 172 , 52 , 1 , 1 ,
+70 , 2687 , 172 , 52 , 1 , 1 ,
+70 , 2688 , 188 , 42 , 1 , 1 ,
+70 , 2689 , 83 , 52 , 1 , 1 ,
+70 , 2690 , 83 , 62 , 1 , 1 ,
+70 , 2691 , 172 , 52 , 1 , 1 ,
+70 , 2692 , 105 , 52 , 1 , 1 ,
+70 , 2693 , 104 , 62 , 1 , 1 ,
+70 , 2694 , 171 , 52 , 1 , 1 ,
+70 , 2695 , 167 , 52 , 1 , 1 ,
+70 , 2696 , 166 , 52 , 1 , 1 ,
+70 , 2697 , 165 , 52 , 1 , 1 ,
+70 , 2698 , 165 , 62 , 1 , 1 ,
+70 , 2699 , 86 , 62 , 1 , 1 ,
+70 , 2700 , 85 , 62 , 1 , 1 ,
+70 , 2701 , 85 , 62 , 1 , 1 ,
+70 , 2702 , 85 , 62 , 1 , 1 ,
+70 , 2703 , 165 , 52 , 1 , 1 ,
+70 , 2704 , 165 , 52 , 1 , 1 ,
+70 , 2705 , 104 , 82 , 1 , 1 ,
+70 , 2706 , 103 , 72 , 1 , 1 ,
+70 , 2707 , 165 , 62 , 1 , 1 ,
+70 , 2708 , 164 , 62 , 1 , 1 ,
+70 , 2709 , 164 , 62 , 1 , 1 ,
+70 , 2710 , 164 , 62 , 1 , 1 ,
+70 , 2711 , 162 , 62 , 1 , 1 ,
+70 , 2712 , 162 , 52 , 1 , 1 ,
+70 , 2713 , 162 , 52 , 1 , 1 ,
+70 , 2714 , 162 , 62 , 1 , 1 ,
+70 , 2715 , 161 , 62 , 1 , 1 ,
+70 , 2716 , 161 , 62 , 1 , 1 ,
+70 , 2717 , 161 , 62 , 1 , 1 ,
+70 , 2718 , 159 , 52 , 1 , 1 ,
+70 , 2719 , 112 , 72 , 1 , 1 ,
+70 , 2720 , 159 , 52 , 1 , 1 ,
+70 , 2721 , 151 , 41 , 1 , 1 ,
+70 , 2722 , 148 , 41 , 1 , 1 ,
+70 , 2723 , 148 , 41 , 1 , 1 ,
+70 , 2724 , 147 , 41 , 1 , 1 ,
+70 , 2725 , 146 , 41 , 1 , 1 ,
+70 , 2726 , 134 , 52 , 1 , 1 ,
+70 , 2727 , 125 , 52 , 1 , 1 ,
+70 , 2728 , 123 , 62 , 1 , 1 ,
+70 , 2729 , 103 , 62 , 1 , 1 ,
+70 , 2730 , 102 , 82 , 1 , 1 ,
+70 , 2731 , 102 , 82 , 1 , 1 ,
+70 , 2732 , 101 , 82 , 1 , 1 ,
+70 , 2733 , 99 , 83 , 1 , 1 ,
+70 , 2734 , 119 , 62 , 1 , 1 ,
+70 , 2735 , 98 , 82 , 1 , 1 ,
+70 , 2736 , 95 , 82 , 1 , 1 ,
+70 , 2737 , 95 , 82 , 1 , 1 ,
+70 , 2738 , 93 , 82 , 1 , 1 ,
+70 , 2739 , 92 , 82 , 1 , 1 ,
+70 , 2740 , 92 , 62 , 1 , 1 ,
+70 , 2741 , 90 , 72 , 1 , 1 ,
+70 , 2742 , 90 , 62 , 1 , 1 ,
+70 , 2743 , 89 , 62 , 1 , 1 ,
+70 , 2744 , 89 , 72 , 1 , 1 ,
+70 , 2745 , 89 , 62 , 1 , 1 ,
+70 , 2746 , 89 , 62 , 1 , 1 ,
+70 , 2747 , 116 , 62 , 1 , 1 ,
+70 , 2748 , 115 , 62 , 1 , 1 ,
+70 , 2749 , 115 , 62 , 1 , 1 ,
+70 , 2750 , 115 , 62 , 1 , 1 ,
+70 , 2751 , 99 , 82 , 1 , 1 ,
+70 , 2752 , 98 , 62 , 1 , 1 ,
+70 , 2753 , 113 , 52 , 1 , 1 ,
+70 , 2754 , 88 , 62 , 1 , 1 ,
+70 , 2755 , 86 , 62 , 1 , 1 ,
+70 , 2756 , 86 , 62 , 1 , 1 ,
+70 , 2757 , 85 , 52 , 1 , 1 ,
+70 , 2758 , 83 , 62 , 1 , 1 ,
+70 , 2759 , 113 , 62 , 1 , 1 ,
+70 , 2760 , 113 , 62 , 1 , 1 ,
+70 , 2761 , 83 , 62 , 1 , 1 ,
+70 , 2762 , 113 , 62 , 1 , 1 ,
+70 , 2763 , 112 , 62 , 1 , 1 ,
+70 , 2764 , 158 , 41 , 1 , 1 ,
+70 , 2765 , 86 , 62 , 1 , 1 ,
+70 , 2766 , 156 , 41 , 1 , 1 ,
+70 , 2767 , 151 , 41 , 1 , 1 ,
+70 , 2768 , 188 , 42 , 1 , 1 ,
+70 , 2769 , 188 , 41 , 1 , 1 ,
+70 , 2770 , 188 , 41 , 1 , 1 ,
+70 , 2771 , 89 , 62 , 1 , 1 ,
+70 , 2772 , 85 , 52 , 1 , 1 ,
+70 , 2773 , 108 , 72 , 1 , 1 ,
+70 , 2774 , 105 , 72 , 1 , 1 ,
+70 , 2775 , 188 , 41 , 1 , 1 ,
+70 , 2776 , 187 , 41 , 1 , 1 ,
+70 , 2777 , 187 , 41 , 1 , 1 ,
+70 , 2778 , 187 , 41 , 1 , 1 ,
+70 , 2779 , 187 , 41 , 1 , 1 ,
+70 , 2780 , 187 , 41 , 1 , 1 ,
+70 , 2781 , 185 , 41 , 1 , 1 ,
+70 , 2782 , 178 , 52 , 1 , 1 ,
+70 , 2783 , 177 , 52 , 1 , 1 ,
+70 , 2784 , 177 , 52 , 1 , 1 ,
+70 , 2785 , 176 , 52 , 1 , 1 ,
+70 , 2786 , 175 , 52 , 1 , 1 ,
+70 , 2787 , 175 , 52 , 1 , 1 ,
+70 , 2788 , 174 , 52 , 1 , 1 ,
+70 , 2789 , 83 , 52 , 1 , 1 ,
+70 , 2790 , 82 , 52 , 1 , 1 ,
+70 , 2791 , 82 , 62 , 1 , 1 ,
+70 , 2792 , 82 , 52 , 1 , 1 ,
+70 , 2793 , 82 , 41 , 1 , 1 ,
+70 , 2794 , 29 , 62 , 1 , 1 ,
+70 , 2795 , 28 , 72 , 1 , 1 ,
+70 , 2796 , 27 , 52 , 1 , 1 ,
+70 , 2797 , 26 , 72 , 1 , 1 ,
+70 , 2798 , 26 , 72 , 1 , 1 ,
+70 , 2799 , 26 , 72 , 1 , 1 ,
+70 , 2800 , 26 , 72 , 1 , 1 ,
+70 , 2801 , 26 , 62 , 1 , 1 ,
+70 , 2802 , 26 , 72 , 1 , 1 ,
+70 , 2803 , 26 , 72 , 1 , 1 ,
+70 , 2804 , 25 , 72 , 1 , 1 ,
+70 , 2805 , 25 , 52 , 1 , 1 ,
+70 , 2806 , 23 , 72 , 1 , 1 ,
+70 , 2807 , 23 , 72 , 1 , 1 ,
+70 , 2808 , 23 , 82 , 1 , 1 ,
+70 , 2809 , 22 , 62 , 1 , 1 ,
+70 , 2810 , 22 , 72 , 1 , 1 ,
+70 , 2811 , 22 , 72 , 1 , 1 ,
+70 , 2812 , 22 , 72 , 1 , 1 ,
+70 , 2813 , 22 , 72 , 1 , 1 ,
+70 , 2814 , 22 , 62 , 1 , 1 ,
+70 , 2815 , 22 , 73 , 1 , 1 ,
+70 , 2816 , 20 , 82 , 1 , 1 ,
+70 , 2817 , 20 , 82 , 1 , 1 ,
+70 , 2818 , 20 , 62 , 1 , 1 ,
+70 , 2819 , 20 , 82 , 1 , 1 ,
+70 , 2820 , 20 , 72 , 1 , 1 ,
+70 , 2821 , 20 , 72 , 1 , 1 ,
+70 , 2822 , 20 , 92 , 1 , 1 ,
+70 , 2823 , 20 , 82 , 1 , 1 ,
+70 , 2824 , 19 , 72 , 1 , 1 ,
+70 , 2825 , 19 , 72 , 1 , 1 ,
+70 , 2826 , 17 , 82 , 1 , 1 ,
+70 , 2827 , 16 , 82 , 1 , 1 ,
+70 , 2828 , 16 , 72 , 1 , 1 ,
+70 , 2829 , 16 , 82 , 1 , 1 ,
+70 , 2830 , 16 , 82 , 1 , 1 ,
+70 , 2831 , 16 , 72 , 1 , 1 ,
+70 , 2832 , 16 , 93 , 1 , 1 ,
+70 , 2833 , 16 , 82 , 1 , 1 ,
+70 , 2834 , 16 , 72 , 1 , 1 ,
+70 , 2835 , 16 , 62 , 1 , 1 ,
+70 , 2836 , 13 , 62 , 1 , 1 ,
+70 , 2837 , 13 , 72 , 1 , 1 ,
+70 , 2838 , 13 , 72 , 1 , 1 ,
+70 , 2839 , 13 , 62 , 1 , 1 ,
+70 , 2840 , 13 , 62 , 1 , 1 ,
+70 , 2841 , 13 , 62 , 1 , 1 ,
+70 , 2842 , 13 , 62 , 1 , 1 ,
+70 , 2843 , 13 , 62 , 1 , 1 ,
+70 , 2844 , 13 , 62 , 1 , 1 ,
+70 , 2845 , 13 , 62 , 1 , 1 ,
+70 , 2846 , 10 , 62 , 1 , 1 ,
+70 , 2847 , 10 , 62 , 1 , 1 ,
+70 , 2848 , 10 , 72 , 1 , 1 ,
+70 , 2849 , 10 , 62 , 1 , 1 ,
+70 , 2850 , 10 , 62 , 1 , 1 ,
+70 , 2851 , 10 , 62 , 1 , 1 ,
+70 , 2852 , 10 , 62 , 1 , 1 ,
+70 , 2853 , 10 , 62 , 1 , 1 ,
+70 , 2854 , 10 , 62 , 1 , 1 ,
+70 , 2855 , 10 , 62 , 1 , 1 ,
+70 , 2856 , 8 , 62 , 1 , 1 ,
+70 , 2857 , 8 , 62 , 1 , 1 ,
+70 , 2858 , 8 , 62 , 1 , 1 ,
+70 , 2859 , 8 , 72 , 1 , 1 ,
+70 , 2860 , 8 , 62 , 1 , 1 ,
+70 , 2861 , 8 , 62 , 1 , 1 ,
+70 , 2862 , 8 , 62 , 1 , 1 ,
+70 , 2863 , 8 , 62 , 1 , 1 ,
+70 , 2864 , 8 , 62 , 1 , 1 ,
+70 , 2865 , 8 , 62 , 1 , 1 ,
+70 , 2866 , 243 , 113 , 1 , 1 , 2790 2843 2669 2707 2840 2713 2776 2793 2795 2768 2748 2734 2673 2754 2742 2715 2831 2815 2805 2761 2717 2703 2826 2696 2692 2809 2806 2808 2762 2689 2678 2720 2835 2684 2699 2719 2730 2728 2685 2714 2846 2864 2798 2726 2693 2695 2816 2851 2708 2833 2838 2686 2767 2777 2855 2799 2775 2764 2839 2794 2834 2770 2670 2824 2753 2737 2681 2704 2792 2698 2773 2736 2667 2676 2671 2697 2779 2802 2822 2837 2750 2818 2830 2756 2817 2759 2751 2733 2674 2856 2825 2729 2679 2788 2828 2804 2785 2683 2844 2836 2755 2774 2859 2672 2668 2769 2745 2711 2757 2746 2727 2712 2724 2783 2861 2810 2760 2732 2744 2858 2700 2735 2849 2841 2743 2803 2771 2709 2842 2739 2766 2666 2789 2763 2716 2691 2797 2860 2687 2706 2796 2780 2814 2752 2847 2800 2782 2823 2747 2848 2721 2694 2701 2811 2784 2850 2741 2829 2821 2812 2787 2832 2702 2807 2857 2723 2791 2690 2765 2688 2682 2827 2675 2819 2801 2813 2725 2781 2772 2862 2758 2731 2705 2710 2786 2854 2845 2852 2863 2722 2677 2820 2853 2718 2865 2738 2680 2778 2740 2749
+71 , 2867 , 111 , 41 , 1 , 1 ,
+71 , 2868 , 111 , 41 , 1 , 1 ,
+71 , 2869 , 111 , 41 , 1 , 1 ,
+71 , 2870 , 111 , 52 , 1 , 1 ,
+71 , 2871 , 111 , 52 , 1 , 1 ,
+71 , 2872 , 179 , 41 , 1 , 1 ,
+71 , 2873 , 178 , 41 , 1 , 1 ,
+71 , 2874 , 177 , 41 , 1 , 1 ,
+71 , 2875 , 176 , 41 , 1 , 1 ,
+71 , 2876 , 176 , 41 , 1 , 1 ,
+71 , 2877 , 176 , 41 , 1 , 1 ,
+71 , 2878 , 176 , 41 , 1 , 1 ,
+71 , 2879 , 176 , 41 , 1 , 1 ,
+71 , 2880 , 176 , 32 , 1 , 1 ,
+71 , 2881 , 176 , 41 , 1 , 1 ,
+71 , 2882 , 83 , 52 , 1 , 1 ,
+71 , 2883 , 82 , 41 , 1 , 1 ,
+71 , 2884 , 81 , 52 , 1 , 1 ,
+71 , 2885 , 175 , 41 , 1 , 1 ,
+71 , 2886 , 175 , 41 , 1 , 1 ,
+71 , 2887 , 174 , 41 , 1 , 1 ,
+71 , 2888 , 173 , 41 , 1 , 1 ,
+71 , 2889 , 173 , 41 , 1 , 1 ,
+71 , 2890 , 171 , 52 , 1 , 1 ,
+71 , 2891 , 171 , 52 , 1 , 1 ,
+71 , 2892 , 171 , 41 , 1 , 1 ,
+71 , 2893 , 170 , 41 , 1 , 1 ,
+71 , 2894 , 170 , 41 , 1 , 1 ,
+71 , 2895 , 169 , 41 , 1 , 1 ,
+71 , 2896 , 169 , 52 , 1 , 1 ,
+71 , 2897 , 168 , 52 , 1 , 1 ,
+71 , 2898 , 168 , 41 , 1 , 1 ,
+71 , 2899 , 167 , 41 , 1 , 1 ,
+71 , 2900 , 167 , 52 , 1 , 1 ,
+71 , 2901 , 166 , 41 , 1 , 1 ,
+71 , 2902 , 100 , 62 , 1 , 1 ,
+71 , 2903 , 98 , 62 , 1 , 1 ,
+71 , 2904 , 98 , 62 , 1 , 1 ,
+71 , 2905 , 98 , 62 , 1 , 1 ,
+71 , 2906 , 166 , 42 , 1 , 1 ,
+71 , 2907 , 166 , 52 , 1 , 1 ,
+71 , 2908 , 166 , 52 , 1 , 1 ,
+71 , 2909 , 165 , 41 , 1 , 1 ,
+71 , 2910 , 164 , 52 , 1 , 1 ,
+71 , 2911 , 160 , 41 , 1 , 1 ,
+71 , 2912 , 105 , 52 , 1 , 1 ,
+71 , 2913 , 159 , 41 , 1 , 1 ,
+71 , 2914 , 158 , 41 , 1 , 1 ,
+71 , 2915 , 158 , 41 , 1 , 1 ,
+71 , 2916 , 158 , 41 , 1 , 1 ,
+71 , 2917 , 157 , 52 , 1 , 1 ,
+71 , 2918 , 157 , 41 , 1 , 1 ,
+71 , 2919 , 155 , 41 , 1 , 1 ,
+71 , 2920 , 105 , 62 , 1 , 1 ,
+71 , 2921 , 104 , 62 , 1 , 1 ,
+71 , 2922 , 102 , 62 , 1 , 1 ,
+71 , 2923 , 83 , 52 , 1 , 1 ,
+71 , 2924 , 83 , 62 , 1 , 1 ,
+71 , 2925 , 83 , 62 , 1 , 1 ,
+71 , 2926 , 102 , 62 , 1 , 1 ,
+71 , 2927 , 101 , 62 , 1 , 1 ,
+71 , 2928 , 101 , 62 , 1 , 1 ,
+71 , 2929 , 101 , 62 , 1 , 1 ,
+71 , 2930 , 100 , 62 , 1 , 1 ,
+71 , 2931 , 153 , 41 , 1 , 1 ,
+71 , 2932 , 153 , 52 , 1 , 1 ,
+71 , 2933 , 151 , 52 , 1 , 1 ,
+71 , 2934 , 151 , 52 , 1 , 1 ,
+71 , 2935 , 151 , 41 , 1 , 1 ,
+71 , 2936 , 151 , 52 , 1 , 1 ,
+71 , 2937 , 111 , 62 , 1 , 1 ,
+71 , 2938 , 111 , 62 , 1 , 1 ,
+71 , 2939 , 110 , 62 , 1 , 1 ,
+71 , 2940 , 108 , 62 , 1 , 1 ,
+71 , 2941 , 108 , 52 , 1 , 1 ,
+71 , 2942 , 108 , 62 , 1 , 1 ,
+71 , 2943 , 108 , 62 , 1 , 1 ,
+71 , 2944 , 83 , 62 , 1 , 1 ,
+71 , 2945 , 107 , 62 , 1 , 1 ,
+71 , 2946 , 107 , 62 , 1 , 1 ,
+71 , 2947 , 105 , 62 , 1 , 1 ,
+71 , 2948 , 81 , 63 , 1 , 1 ,
+71 , 2949 , 150 , 41 , 1 , 1 ,
+71 , 2950 , 150 , 41 , 1 , 1 ,
+71 , 2951 , 150 , 41 , 1 , 1 ,
+71 , 2952 , 150 , 41 , 1 , 1 ,
+71 , 2953 , 148 , 41 , 1 , 1 ,
+71 , 2954 , 147 , 41 , 1 , 1 ,
+71 , 2955 , 147 , 41 , 1 , 1 ,
+71 , 2956 , 147 , 41 , 1 , 1 ,
+71 , 2957 , 145 , 41 , 1 , 1 ,
+71 , 2958 , 145 , 41 , 1 , 1 ,
+71 , 2959 , 143 , 42 , 1 , 1 ,
+71 , 2960 , 97 , 62 , 1 , 1 ,
+71 , 2961 , 97 , 52 , 1 , 1 ,
+71 , 2962 , 97 , 52 , 1 , 1 ,
+71 , 2963 , 95 , 62 , 1 , 1 ,
+71 , 2964 , 91 , 52 , 1 , 1 ,
+71 , 2965 , 87 , 52 , 1 , 1 ,
+71 , 2966 , 86 , 52 , 1 , 1 ,
+71 , 2967 , 86 , 52 , 1 , 1 ,
+71 , 2968 , 86 , 52 , 1 , 1 ,
+71 , 2969 , 86 , 52 , 1 , 1 ,
+71 , 2970 , 86 , 52 , 1 , 1 ,
+71 , 2971 , 86 , 52 , 1 , 1 ,
+71 , 2972 , 86 , 52 , 1 , 1 ,
+71 , 2973 , 81 , 52 , 1 , 1 ,
+71 , 2974 , 80 , 52 , 1 , 1 ,
+71 , 2975 , 80 , 62 , 1 , 1 ,
+71 , 2976 , 71 , 41 , 1 , 1 ,
+71 , 2977 , 71 , 52 , 1 , 1 ,
+71 , 2978 , 70 , 52 , 1 , 1 ,
+71 , 2979 , 83 , 62 , 1 , 1 ,
+71 , 2980 , 82 , 52 , 1 , 1 ,
+71 , 2981 , 83 , 62 , 1 , 1 ,
+71 , 2982 , 138 , 41 , 1 , 1 ,
+71 , 2983 , 133 , 41 , 1 , 1 ,
+71 , 2984 , 105 , 52 , 1 , 1 ,
+71 , 2985 , 133 , 41 , 1 , 1 ,
+71 , 2986 , 100 , 62 , 1 , 1 ,
+71 , 2987 , 133 , 41 , 1 , 1 ,
+71 , 2988 , 83 , 52 , 1 , 1 ,
+71 , 2989 , 123 , 31 , 1 , 1 ,
+71 , 2990 , 100 , 52 , 1 , 1 ,
+71 , 2991 , 115 , 41 , 1 , 1 ,
+71 , 2992 , 105 , 52 , 1 , 1 ,
+71 , 2993 , 105 , 52 , 1 , 1 ,
+71 , 2994 , 114 , 41 , 1 , 1 ,
+71 , 2995 , 112 , 52 , 1 , 1 ,
+71 , 2996 , 111 , 52 , 1 , 1 ,
+71 , 2997 , 70 , 52 , 1 , 1 ,
+71 , 2998 , 26 , 62 , 1 , 1 ,
+71 , 2999 , 26 , 72 , 1 , 1 ,
+71 , 3000 , 26 , 62 , 1 , 1 ,
+71 , 3001 , 26 , 72 , 1 , 1 ,
+71 , 3002 , 25 , 72 , 1 , 1 ,
+71 , 3003 , 25 , 72 , 1 , 1 ,
+71 , 3004 , 25 , 62 , 1 , 1 ,
+71 , 3005 , 25 , 72 , 1 , 1 ,
+71 , 3006 , 25 , 72 , 1 , 1 ,
+71 , 3007 , 22 , 72 , 1 , 1 ,
+71 , 3008 , 22 , 62 , 1 , 1 ,
+71 , 3009 , 22 , 62 , 1 , 1 ,
+71 , 3010 , 22 , 72 , 1 , 1 ,
+71 , 3011 , 22 , 72 , 1 , 1 ,
+71 , 3012 , 22 , 72 , 1 , 1 ,
+71 , 3013 , 22 , 62 , 1 , 1 ,
+71 , 3014 , 22 , 62 , 1 , 1 ,
+71 , 3015 , 22 , 72 , 1 , 1 ,
+71 , 3016 , 22 , 62 , 1 , 1 ,
+71 , 3017 , 18 , 72 , 1 , 1 ,
+71 , 3018 , 18 , 72 , 1 , 1 ,
+71 , 3019 , 18 , 72 , 1 , 1 ,
+71 , 3020 , 18 , 72 , 1 , 1 ,
+71 , 3021 , 18 , 83 , 1 , 1 ,
+71 , 3022 , 18 , 62 , 1 , 1 ,
+71 , 3023 , 18 , 73 , 1 , 1 ,
+71 , 3024 , 18 , 73 , 1 , 1 ,
+71 , 3025 , 18 , 72 , 1 , 1 ,
+71 , 3026 , 17 , 83 , 1 , 1 ,
+71 , 3027 , 15 , 72 , 1 , 1 ,
+71 , 3028 , 14 , 72 , 1 , 1 ,
+71 , 3029 , 14 , 82 , 1 , 1 ,
+71 , 3030 , 14 , 82 , 1 , 1 ,
+71 , 3031 , 14 , 82 , 1 , 1 ,
+71 , 3032 , 14 , 82 , 1 , 1 ,
+71 , 3033 , 14 , 72 , 1 , 1 ,
+71 , 3034 , 14 , 72 , 1 , 1 ,
+71 , 3035 , 14 , 72 , 1 , 1 ,
+71 , 3036 , 14 , 72 , 1 , 1 ,
+71 , 3037 , 11 , 62 , 1 , 1 ,
+71 , 3038 , 11 , 72 , 1 , 1 ,
+71 , 3039 , 11 , 82 , 1 , 1 ,
+71 , 3040 , 11 , 62 , 1 , 1 ,
+71 , 3041 , 11 , 62 , 1 , 1 ,
+71 , 3042 , 10 , 62 , 1 , 1 ,
+71 , 3043 , 10 , 62 , 1 , 1 ,
+71 , 3044 , 10 , 62 , 1 , 1 ,
+71 , 3045 , 10 , 62 , 1 , 1 ,
+71 , 3046 , 10 , 62 , 1 , 1 ,
+71 , 3047 , 9 , 62 , 1 , 1 ,
+71 , 3048 , 8 , 62 , 1 , 1 ,
+71 , 3049 , 8 , 62 , 1 , 1 ,
+71 , 3050 , 8 , 62 , 1 , 1 ,
+71 , 3051 , 8 , 62 , 1 , 1 ,
+71 , 3052 , 8 , 62 , 1 , 1 ,
+71 , 3053 , 8 , 62 , 1 , 1 ,
+71 , 3054 , 8 , 62 , 1 , 1 ,
+71 , 3055 , 8 , 62 , 1 , 1 ,
+71 , 3056 , 8 , 62 , 1 , 1 ,
+71 , 3057 , 6 , 52 , 1 , 1 ,
+71 , 3058 , 6 , 72 , 1 , 1 ,
+71 , 3059 , 6 , 62 , 1 , 1 ,
+71 , 3060 , 6 , 62 , 1 , 1 ,
+71 , 3061 , 6 , 62 , 1 , 1 ,
+71 , 3062 , 6 , 52 , 1 , 1 ,
+71 , 3063 , 6 , 62 , 1 , 1 ,
+71 , 3064 , 6 , 52 , 1 , 1 ,
+71 , 3065 , 6 , 52 , 1 , 1 ,
+71 , 3066 , 6 , 62 , 1 , 1 ,
+71 , 3067 , 234 , 103 , 1 , 1 , 2995 3030 3023 2953 2867 3061 3036 3066 2994 2958 2899 3043 3035 3050 2941 3046 2944 2956 2996 3034 2976 2931 2874 2990 2871 3039 2912 3064 2926 2935 2897 3065 2970 3059 3006 3040 2942 2883 3031 2959 3001 2984 2925 3027 2972 2974 2932 2987 2975 2890 2915 3062 3008 2964 3025 3052 2966 2983 2960 2904 2905 3037 3019 2952 3010 2923 3012 3004 2937 2929 2986 2928 2989 3048 2914 2999 3000 2872 2888 3016 2993 2909 3032 3049 2875 2982 3051 2954 2907 2940 2973 3038 2979 3041 2895 3047 3003 3020 3013 2951 2998 2948 2898 2957 2943 2906 3002 3011 3055 2934 2885 2880 2961 2980 2955 3045 2917 2919 2927 2884 2922 2900 2992 2946 2971 3015 3029 2886 2911 2908 2962 2939 2896 2968 2997 3017 2936 2981 2918 3018 2991 2921 2893 2920 2988 2977 3021 2916 2947 3058 2933 2963 2949 2876 2878 3044 3022 2870 2965 2930 3005 2879 3028 3042 2892 2887 2969 2894 2950 3054 3033 2924 3053 2938 2868 2891 2901 3026 3060 2873 3014 2903 2910 2967 2882 2902 2913 3007 2869 3009 3063 3024 3057 2978 3056 2889 2881 2877 2985 2945
+72 , 3068 , 75 , 52 , 1 , 1 ,
+72 , 3069 , 74 , 41 , 1 , 1 ,
+72 , 3070 , 105 , 41 , 1 , 1 ,
+72 , 3071 , 105 , 41 , 1 , 1 ,
+72 , 3072 , 102 , 31 , 1 , 1 ,
+72 , 3073 , 102 , 41 , 1 , 1 ,
+72 , 3074 , 101 , 31 , 1 , 1 ,
+72 , 3075 , 74 , 52 , 1 , 1 ,
+72 , 3076 , 71 , 41 , 1 , 1 ,
+72 , 3077 , 101 , 41 , 1 , 1 ,
+72 , 3078 , 101 , 42 , 1 , 1 ,
+72 , 3079 , 101 , 42 , 1 , 1 ,
+72 , 3080 , 101 , 41 , 1 , 1 ,
+72 , 3081 , 101 , 41 , 1 , 1 ,
+72 , 3082 , 101 , 41 , 1 , 1 ,
+72 , 3083 , 99 , 41 , 1 , 1 ,
+72 , 3084 , 99 , 41 , 1 , 1 ,
+72 , 3085 , 99 , 41 , 1 , 1 ,
+72 , 3086 , 99 , 41 , 1 , 1 ,
+72 , 3087 , 98 , 41 , 1 , 1 ,
+72 , 3088 , 98 , 41 , 1 , 1 ,
+72 , 3089 , 98 , 52 , 1 , 1 ,
+72 , 3090 , 95 , 52 , 1 , 1 ,
+72 , 3091 , 95 , 52 , 1 , 1 ,
+72 , 3092 , 92 , 52 , 1 , 1 ,
+72 , 3093 , 91 , 52 , 1 , 1 ,
+72 , 3094 , 88 , 52 , 1 , 1 ,
+72 , 3095 , 88 , 52 , 1 , 1 ,
+72 , 3096 , 88 , 52 , 1 , 1 ,
+72 , 3097 , 85 , 62 , 1 , 1 ,
+72 , 3098 , 82 , 52 , 1 , 1 ,
+72 , 3099 , 81 , 52 , 1 , 1 ,
+72 , 3100 , 81 , 52 , 1 , 1 ,
+72 , 3101 , 81 , 52 , 1 , 1 ,
+72 , 3102 , 81 , 52 , 1 , 1 ,
+72 , 3103 , 81 , 62 , 1 , 1 ,
+72 , 3104 , 81 , 52 , 1 , 1 ,
+72 , 3105 , 81 , 62 , 1 , 1 ,
+72 , 3106 , 78 , 52 , 1 , 1 ,
+72 , 3107 , 78 , 52 , 1 , 1 ,
+72 , 3108 , 78 , 62 , 1 , 1 ,
+72 , 3109 , 78 , 62 , 1 , 1 ,
+72 , 3110 , 77 , 62 , 1 , 1 ,
+72 , 3111 , 74 , 72 , 1 , 1 ,
+72 , 3112 , 74 , 72 , 1 , 1 ,
+72 , 3113 , 74 , 62 , 1 , 1 ,
+72 , 3114 , 74 , 62 , 1 , 1 ,
+72 , 3115 , 74 , 62 , 1 , 1 ,
+72 , 3116 , 71 , 52 , 1 , 1 ,
+72 , 3117 , 71 , 52 , 1 , 1 ,
+72 , 3118 , 71 , 52 , 1 , 1 ,
+72 , 3119 , 71 , 41 , 1 , 1 ,
+72 , 3120 , 71 , 41 , 1 , 1 ,
+72 , 3121 , 64 , 41 , 1 , 1 ,
+72 , 3122 , 61 , 41 , 1 , 1 ,
+72 , 3123 , 60 , 41 , 1 , 1 ,
+72 , 3124 , 60 , 41 , 1 , 1 ,
+72 , 3125 , 27 , 62 , 1 , 1 ,
+72 , 3126 , 27 , 62 , 1 , 1 ,
+72 , 3127 , 26 , 62 , 1 , 1 ,
+72 , 3128 , 26 , 62 , 1 , 1 ,
+72 , 3129 , 26 , 62 , 1 , 1 ,
+72 , 3130 , 26 , 62 , 1 , 1 ,
+72 , 3131 , 26 , 62 , 1 , 1 ,
+72 , 3132 , 26 , 52 , 1 , 1 ,
+72 , 3133 , 23 , 62 , 1 , 1 ,
+72 , 3134 , 23 , 62 , 1 , 1 ,
+72 , 3135 , 23 , 62 , 1 , 1 ,
+72 , 3136 , 23 , 62 , 1 , 1 ,
+72 , 3137 , 23 , 72 , 1 , 1 ,
+72 , 3138 , 23 , 72 , 1 , 1 ,
+72 , 3139 , 23 , 72 , 1 , 1 ,
+72 , 3140 , 23 , 62 , 1 , 1 ,
+72 , 3141 , 23 , 62 , 1 , 1 ,
+72 , 3142 , 22 , 62 , 1 , 1 ,
+72 , 3143 , 20 , 72 , 1 , 1 ,
+72 , 3144 , 20 , 52 , 1 , 1 ,
+72 , 3145 , 19 , 62 , 1 , 1 ,
+72 , 3146 , 19 , 62 , 1 , 1 ,
+72 , 3147 , 19 , 72 , 1 , 1 ,
+72 , 3148 , 19 , 72 , 1 , 1 ,
+72 , 3149 , 19 , 72 , 1 , 1 ,
+72 , 3150 , 19 , 72 , 1 , 1 ,
+72 , 3151 , 19 , 72 , 1 , 1 ,
+72 , 3152 , 19 , 72 , 1 , 1 ,
+72 , 3153 , 16 , 52 , 1 , 1 ,
+72 , 3154 , 16 , 72 , 1 , 1 ,
+72 , 3155 , 16 , 62 , 1 , 1 ,
+72 , 3156 , 16 , 52 , 1 , 1 ,
+72 , 3157 , 16 , 52 , 1 , 1 ,
+72 , 3158 , 16 , 72 , 1 , 1 ,
+72 , 3159 , 16 , 52 , 1 , 1 ,
+72 , 3160 , 15 , 52 , 1 , 1 ,
+72 , 3161 , 15 , 52 , 1 , 1 ,
+72 , 3162 , 15 , 52 , 1 , 1 ,
+72 , 3163 , 13 , 82 , 1 , 1 ,
+72 , 3164 , 13 , 52 , 1 , 1 ,
+72 , 3165 , 12 , 52 , 1 , 1 ,
+72 , 3166 , 12 , 62 , 1 , 1 ,
+72 , 3167 , 12 , 52 , 1 , 1 ,
+72 , 3168 , 12 , 52 , 1 , 1 ,
+72 , 3169 , 12 , 82 , 1 , 1 ,
+72 , 3170 , 12 , 62 , 1 , 1 ,
+72 , 3171 , 12 , 62 , 1 , 1 ,
+72 , 3172 , 12 , 52 , 1 , 1 ,
+72 , 3173 , 9 , 52 , 1 , 1 ,
+72 , 3174 , 9 , 82 , 1 , 1 ,
+72 , 3175 , 8 , 52 , 1 , 1 ,
+72 , 3176 , 8 , 52 , 1 , 1 ,
+72 , 3177 , 8 , 52 , 1 , 1 ,
+72 , 3178 , 8 , 41 , 1 , 1 ,
+72 , 3179 , 8 , 52 , 1 , 1 ,
+72 , 3180 , 8 , 52 , 1 , 1 ,
+72 , 3181 , 8 , 52 , 1 , 1 ,
+72 , 3182 , 8 , 52 , 1 , 1 ,
+72 , 3183 , 6 , 41 , 1 , 1 ,
+72 , 3184 , 6 , 62 , 1 , 1 ,
+72 , 3185 , 6 , 52 , 1 , 1 ,
+72 , 3186 , 6 , 52 , 1 , 1 ,
+72 , 3187 , 6 , 52 , 1 , 1 ,
+72 , 3188 , 6 , 52 , 1 , 1 ,
+72 , 3189 , 6 , 52 , 1 , 1 ,
+72 , 3190 , 6 , 41 , 1 , 1 ,
+72 , 3191 , 6 , 52 , 1 , 1 ,
+72 , 3192 , 6 , 41 , 1 , 1 ,
+72 , 3193 , 160 , 72 , 1 , 1 , 3151 3114 3162 3157 3088 3077 3085 3145 3143 3102 3148 3146 3075 3149 3107 3136 3159 3083 3133 3097 3131 3189 3122 3169 3168 3068 3132 3108 3154 3174 3166 3129 3191 3161 3183 3109 3099 3192 3172 3091 3127 3165 3134 3105 3170 3092 3158 3135 3164 3116 3130 3093 3072 3179 3176 3187 3111 3117 3112 3163 3150 3120 3098 3089 3126 3141 3087 3139 3094 3156 3069 3103 3144 3175 3081 3167 3073 3110 3188 3100 3160 3101 3177 3171 3071 3121 3086 3078 3185 3076 3173 3095 3090 3074 3119 3096 3184 3147 3118 3137 3181 3079 3070 3182 3125 3142 3153 3080 3124 3113 3155 3140 3152 3123 3178 3190 3082 3186 3084 3138 3106 3128 3180 3115 3104
+73 , 3194 , 20 , 184 , 1 , 1 ,
+73 , 3195 , 20 , 174 , 1 , 1 ,
+73 , 3196 , 20 , 174 , 1 , 1 ,
+73 , 3197 , 20 , 174 , 1 , 1 ,
+73 , 3198 , 20 , 164 , 1 , 1 ,
+73 , 3199 , 20 , 184 , 1 , 1 ,
+73 , 3200 , 19 , 194 , 1 , 1 ,
+73 , 3201 , 19 , 194 , 1 , 1 ,
+73 , 3202 , 19 , 194 , 1 , 1 ,
+73 , 3203 , 19 , 194 , 1 , 1 ,
+73 , 3204 , 17 , 195 , 1 , 1 ,
+73 , 3205 , 17 , 215 , 1 , 1 ,
+73 , 3206 , 17 , 215 , 1 , 1 ,
+73 , 3207 , 17 , 205 , 1 , 1 ,
+73 , 3208 , 17 , 225 , 1 , 1 ,
+73 , 3209 , 17 , 225 , 1 , 1 ,
+73 , 3210 , 17 , 225 , 1 , 1 ,
+73 , 3211 , 16 , 225 , 1 , 1 ,
+73 , 3212 , 16 , 225 , 1 , 1 ,
+73 , 3213 , 16 , 225 , 1 , 1 ,
+73 , 3214 , 13 , 256 , 1 , 1 ,
+73 , 3215 , 13 , 256 , 1 , 1 ,
+73 , 3216 , 13 , 225 , 1 , 1 ,
+73 , 3217 , 13 , 245 , 1 , 1 ,
+73 , 3218 , 13 , 225 , 1 , 1 ,
+73 , 3219 , 13 , 215 , 1 , 1 ,
+73 , 3220 , 12 , 205 , 1 , 1 ,
+73 , 3221 , 12 , 205 , 1 , 1 ,
+73 , 3222 , 12 , 205 , 1 , 1 ,
+73 , 3223 , 12 , 194 , 1 , 1 ,
+73 , 3224 , 10 , 184 , 1 , 1 ,
+73 , 3225 , 10 , 205 , 1 , 1 ,
+73 , 3226 , 10 , 215 , 1 , 1 ,
+73 , 3227 , 10 , 225 , 1 , 1 ,
+73 , 3228 , 10 , 215 , 1 , 1 ,
+73 , 3229 , 10 , 215 , 1 , 1 ,
+73 , 3230 , 10 , 205 , 1 , 1 ,
+73 , 3231 , 10 , 184 , 1 , 1 ,
+73 , 3232 , 10 , 194 , 1 , 1 ,
+73 , 3233 , 9 , 215 , 1 , 1 ,
+73 , 3234 , 8 , 235 , 1 , 1 ,
+73 , 3235 , 8 , 225 , 1 , 1 ,
+73 , 3236 , 8 , 215 , 1 , 1 ,
+73 , 3237 , 7 , 215 , 1 , 1 ,
+73 , 3238 , 7 , 215 , 1 , 1 ,
+73 , 3239 , 7 , 225 , 1 , 1 ,
+73 , 3240 , 7 , 215 , 1 , 1 ,
+73 , 3241 , 7 , 225 , 1 , 1 ,
+73 , 3242 , 7 , 215 , 1 , 1 ,
+73 , 3243 , 7 , 215 , 1 , 1 ,
+73 , 3244 , 5 , 225 , 1 , 1 ,
+73 , 3245 , 5 , 205 , 1 , 1 ,
+73 , 3246 , 5 , 205 , 1 , 1 ,
+73 , 3247 , 5 , 194 , 1 , 1 ,
+73 , 3248 , 5 , 205 , 1 , 1 ,
+73 , 3249 , 5 , 205 , 1 , 1 ,
+73 , 3250 , 5 , 194 , 1 , 1 ,
+73 , 3251 , 5 , 215 , 1 , 1 ,
+73 , 3252 , 5 , 194 , 1 , 1 ,
+73 , 3253 , 5 , 194 , 1 , 1 ,
+73 , 3254 , 284 , 174 , 1 , 1 , 3245 3234 3217 3239 3222 3202 3230 3251 3212 3198 3223 3224 3219 3197 3210 3203 3215 3200 3240 3249 3248 3221 3205 3244 3199 3220 3196 3195 3211 3231 3201 3233 3252 3243 3218 3232 3235 3225 3229 3237 3194 3206 3250 3227 3247 3204 3253 3214 3208 3238 3241 3226 3213 3209 3246 3236 3216 3242 3228 3207
+74 , 3255 , 22 , 184 , 1 , 1 ,
+74 , 3256 , 22 , 184 , 1 , 1 ,
+74 , 3257 , 21 , 174 , 1 , 1 ,
+74 , 3258 , 21 , 174 , 1 , 1 ,
+74 , 3259 , 21 , 174 , 1 , 1 ,
+74 , 3260 , 21 , 184 , 1 , 1 ,
+74 , 3261 , 21 , 194 , 1 , 1 ,
+74 , 3262 , 20 , 184 , 1 , 1 ,
+74 , 3263 , 20 , 184 , 1 , 1 ,
+74 , 3264 , 20 , 194 , 1 , 1 ,
+74 , 3265 , 18 , 205 , 1 , 1 ,
+74 , 3266 , 18 , 215 , 1 , 1 ,
+74 , 3267 , 18 , 215 , 1 , 1 ,
+74 , 3268 , 17 , 205 , 1 , 1 ,
+74 , 3269 , 17 , 225 , 1 , 1 ,
+74 , 3270 , 17 , 205 , 1 , 1 ,
+74 , 3271 , 17 , 215 , 1 , 1 ,
+74 , 3272 , 17 , 225 , 1 , 1 ,
+74 , 3273 , 17 , 205 , 1 , 1 ,
+74 , 3274 , 16 , 235 , 1 , 1 ,
+74 , 3275 , 14 , 256 , 1 , 1 ,
+74 , 3276 , 14 , 256 , 1 , 1 ,
+74 , 3277 , 14 , 225 , 1 , 1 ,
+74 , 3278 , 14 , 235 , 1 , 1 ,
+74 , 3279 , 14 , 215 , 1 , 1 ,
+74 , 3280 , 14 , 225 , 1 , 1 ,
+74 , 3281 , 13 , 205 , 1 , 1 ,
+74 , 3282 , 13 , 194 , 1 , 1 ,
+74 , 3283 , 13 , 194 , 1 , 1 ,
+74 , 3284 , 13 , 205 , 1 , 1 ,
+74 , 3285 , 10 , 184 , 1 , 1 ,
+74 , 3286 , 10 , 194 , 1 , 1 ,
+74 , 3287 , 10 , 205 , 1 , 1 ,
+74 , 3288 , 10 , 205 , 1 , 1 ,
+74 , 3289 , 10 , 205 , 1 , 1 ,
+74 , 3290 , 10 , 205 , 1 , 1 ,
+74 , 3291 , 10 , 184 , 1 , 1 ,
+74 , 3292 , 9 , 194 , 1 , 1 ,
+74 , 3293 , 9 , 205 , 1 , 1 ,
+74 , 3294 , 9 , 194 , 1 , 1 ,
+74 , 3295 , 7 , 225 , 1 , 1 ,
+74 , 3296 , 7 , 215 , 1 , 1 ,
+74 , 3297 , 7 , 205 , 1 , 1 ,
+74 , 3298 , 7 , 205 , 1 , 1 ,
+74 , 3299 , 7 , 194 , 1 , 1 ,
+74 , 3300 , 7 , 215 , 1 , 1 ,
+74 , 3301 , 7 , 194 , 1 , 1 ,
+74 , 3302 , 7 , 215 , 1 , 1 ,
+74 , 3303 , 7 , 205 , 1 , 1 ,
+74 , 3304 , 7 , 225 , 1 , 1 ,
+74 , 3305 , 5 , 205 , 1 , 1 ,
+74 , 3306 , 5 , 195 , 1 , 1 ,
+74 , 3307 , 5 , 184 , 1 , 1 ,
+74 , 3308 , 5 , 174 , 1 , 1 ,
+74 , 3309 , 5 , 194 , 1 , 1 ,
+74 , 3310 , 5 , 184 , 1 , 1 ,
+74 , 3311 , 5 , 205 , 1 , 1 ,
+74 , 3312 , 5 , 194 , 1 , 1 ,
+74 , 3313 , 5 , 194 , 1 , 1 ,
+74 , 3314 , 5 , 174 , 1 , 1 ,
+74 , 3315 , 284 , 174 , 1 , 1 , 3291 3256 3296 3283 3314 3309 3257 3304 3299 3278 3260 3261 3280 3281 3270 3285 3313 3265 3301 3310 3302 3279 3286 3255 3312 3273 3259 3295 3311 3275 3308 3292 3272 3297 3300 3287 3284 3282 3266 3288 3306 3277 3264 3258 3305 3289 3263 3269 3294 3267 3290 3276 3262 3303 3268 3307 3298 3293 3274 3271
+75 , 3316 , 20 , 31 , 1 , 1 ,
+75 , 3317 , 20 , 41 , 1 , 1 ,
+75 , 3318 , 18 , 41 , 1 , 1 ,
+75 , 3319 , 18 , 31 , 1 , 1 ,
+75 , 3320 , 18 , 52 , 1 , 1 ,
+75 , 3321 , 18 , 62 , 1 , 1 ,
+75 , 3322 , 18 , 52 , 1 , 1 ,
+75 , 3323 , 18 , 41 , 1 , 1 ,
+75 , 3324 , 18 , 31 , 1 , 1 ,
+75 , 3325 , 18 , 52 , 1 , 1 ,
+75 , 3326 , 17 , 41 , 1 , 1 ,
+75 , 3327 , 15 , 52 , 1 , 1 ,
+75 , 3328 , 15 , 41 , 1 , 1 ,
+75 , 3329 , 15 , 52 , 1 , 1 ,
+75 , 3330 , 15 , 52 , 1 , 1 ,
+75 , 3331 , 13 , 52 , 1 , 1 ,
+75 , 3332 , 93 , 11 , 1 , 1 , 3324 3316 3327 3325 3330 3320 3326 3331 3318 3329 3319 3322 3328 3323 3317 3321
+76 , 3333 , 17 , 41 , 1 , 1 ,
+76 , 3334 , 15 , 21 , 1 , 1 ,
+76 , 3335 , 15 , 41 , 1 , 1 ,
+76 , 3336 , 15 , 52 , 1 , 1 ,
+76 , 3337 , 15 , 51 , 1 , 1 ,
+76 , 3338 , 15 , 31 , 1 , 1 ,
+76 , 3339 , 15 , 31 , 1 , 1 ,
+76 , 3340 , 13 , 31 , 1 , 1 ,
+76 , 3341 , 13 , 52 , 1 , 1 ,
+76 , 3342 , 13 , 31 , 1 , 1 ,
+76 , 3343 , 13 , 31 , 1 , 1 ,
+76 , 3344 , 13 , 31 , 1 , 1 ,
+76 , 3345 , 13 , 31 , 1 , 1 ,
+76 , 3346 , 13 , 52 , 1 , 1 ,
+76 , 3347 , 13 , 31 , 1 , 1 ,
+76 , 3348 , 13 , 31 , 1 , 1 ,
+76 , 3349 , 59 , 0 , 1 , 1 , 3337 3334 3348 3333 3344 3341 3335 3347 3336 3338 3345 3340 3339 3343 3346 3342
+77 , 3359 , 6 , 143 , 1 , 1 ,
+77 , 3360 , 6 , 164 , 1 , 1 ,
+77 , 3361 , 5 , 174 , 1 , 1 ,
+77 , 3362 , 5 , 154 , 1 , 1 ,
+77 , 3363 , 5 , 153 , 1 , 1 ,
+77 , 3364 , 4 , 164 , 1 , 1 ,
+77 , 3365 , 3 , 164 , 1 , 1 ,
+77 , 3366 , 2 , 143 , 1 , 1 ,
+77 , 3367 , 190 , 21 , 1 , 1 , 3360 3362 3363 3366 3361 3364 3365 3359
+78 , 3368 , 19 , 143 , 1 , 1 ,
+78 , 3369 , 19 , 164 , 1 , 1 ,
+78 , 3370 , 18 , 184 , 1 , 1 ,
+78 , 3371 , 18 , 164 , 1 , 1 ,
+78 , 3372 , 18 , 154 , 1 , 1 ,
+78 , 3373 , 17 , 164 , 1 , 1 ,
+78 , 3374 , 17 , 164 , 1 , 1 ,
+78 , 3375 , 16 , 154 , 1 , 1 ,
+78 , 3376 , 213 , 21 , 1 , 1 , 3370 3375 3372 3368 3374 3371 3373 3369
+79 , 3377 , 3 , 143 , 1 , 1 ,
+79 , 3378 , 3 , 164 , 1 , 1 ,
+79 , 3379 , 3 , 184 , 1 , 1 ,
+79 , 3380 , 3 , 174 , 1 , 1 ,
+79 , 3381 , 3 , 143 , 1 , 1 ,
+79 , 3382 , 3 , 164 , 1 , 1 ,
+79 , 3383 , 3 , 164 , 1 , 1 ,
+79 , 3384 , 3 , 154 , 1 , 1 ,
+79 , 3385 , 200 , 21 , 1 , 1 , 3382 3381 3383 3379 3384 3378 3380 3377
+80 , 3463 , 3 , 143 , 1 , 1 ,
+80 , 3464 , 3 , 164 , 1 , 1 ,
+80 , 3465 , 3 , 174 , 1 , 1 ,
+80 , 3466 , 3 , 154 , 1 , 1 ,
+80 , 3467 , 3 , 154 , 1 , 1 ,
+80 , 3468 , 3 , 154 , 1 , 1 ,
+80 , 3469 , 3 , 164 , 1 , 1 ,
+80 , 3470 , 3 , 143 , 1 , 1 ,
+80 , 3471 , 190 , 31 , 1 , 1 , 3467 3463 3468 3465 3466 3464 3470 3469
+81 , 3481 , 3 , 133 , 1 , 1 ,
+81 , 3482 , 3 , 164 , 1 , 1 ,
+81 , 3483 , 3 , 164 , 1 , 1 ,
+81 , 3484 , 3 , 164 , 1 , 1 ,
+81 , 3485 , 3 , 154 , 1 , 1 ,
+81 , 3486 , 3 , 143 , 1 , 1 ,
+81 , 3487 , 3 , 164 , 1 , 1 ,
+81 , 3488 , 3 , 154 , 1 , 1 ,
+81 , 3489 , 180 , 21 , 1 , 1 , 3488 3483 3487 3485 3484 3482 3481 3486
+82 , 3499 , 3 , 143 , 1 , 1 ,
+82 , 3500 , 3 , 154 , 1 , 1 ,
+82 , 3501 , 3 , 184 , 1 , 1 ,
+82 , 3502 , 3 , 164 , 1 , 1 ,
+82 , 3503 , 3 , 154 , 1 , 1 ,
+82 , 3504 , 3 , 164 , 1 , 1 ,
+82 , 3505 , 3 , 154 , 1 , 1 ,
+82 , 3506 , 3 , 154 , 1 , 1 ,
+82 , 3507 , 200 , 21 , 1 , 1 , 3504 3505 3506 3503 3502 3501 3500 3499
+83 , 3508 , 1 , 92 , 1 , 1 ,
+83 , 3509 , 1 , 103 , 1 , 1 ,
+83 , 3510 , 1 , 113 , 1 , 1 ,
+83 , 3511 , 1 , 103 , 1 , 1 ,
+83 , 3512 , 1 , 113 , 1 , 1 ,
+83 , 3513 , 1 , 103 , 1 , 1 ,
+83 , 3514 , 1 , 164 , 1 , 1 ,
+83 , 3515 , 1 , 92 , 1 , 1 ,
+83 , 3516 , 105 , 21 , 1 , 1 , 3511 3509 3508 3515 3514 3513 3512 3510
+84 , 3517 , 1 , 143 , 1 , 1 ,
+84 , 3518 , 1 , 154 , 1 , 1 ,
+84 , 3519 , 1 , 143 , 1 , 1 ,
+84 , 3520 , 1 , 143 , 1 , 1 ,
+84 , 3521 , 1 , 154 , 1 , 1 ,
+84 , 3522 , 1 , 143 , 1 , 1 ,
+84 , 3523 , 1 , 143 , 1 , 1 ,
+84 , 3524 , 1 , 143 , 1 , 1 ,
+84 , 3525 , 156 , 21 , 1 , 1 , 3523 3519 3521 3517 3524 3520 3518 3522
+85 , 3562 , 3 , 133 , 1 , 1 ,
+85 , 3563 , 3 , 164 , 1 , 1 ,
+85 , 3564 , 3 , 184 , 1 , 1 ,
+85 , 3565 , 3 , 164 , 1 , 1 ,
+85 , 3566 , 3 , 143 , 1 , 1 ,
+85 , 3567 , 3 , 164 , 1 , 1 ,
+85 , 3568 , 3 , 164 , 1 , 1 ,
+85 , 3569 , 3 , 154 , 1 , 1 ,
+85 , 3570 , 200 , 21 , 1 , 1 , 3565 3563 3569 3566 3568 3562 3564 3567
+86 , 3580 , 3 , 143 , 1 , 1 ,
+86 , 3581 , 3 , 154 , 1 , 1 ,
+86 , 3582 , 3 , 174 , 1 , 1 ,
+86 , 3583 , 3 , 154 , 1 , 1 ,
+86 , 3584 , 3 , 154 , 1 , 1 ,
+86 , 3585 , 3 , 154 , 1 , 1 ,
+86 , 3586 , 3 , 164 , 1 , 1 ,
+86 , 3587 , 3 , 154 , 1 , 1 ,
+86 , 3588 , 190 , 21 , 1 , 1 , 3584 3582 3581 3583 3586 3587 3580 3585
+87 , 3589 , 3 , 143 , 1 , 1 ,
+87 , 3590 , 3 , 164 , 1 , 1 ,
+87 , 3591 , 3 , 184 , 1 , 1 ,
+87 , 3592 , 3 , 174 , 1 , 1 ,
+87 , 3593 , 3 , 154 , 1 , 1 ,
+87 , 3594 , 3 , 164 , 1 , 1 ,
+87 , 3595 , 3 , 164 , 1 , 1 ,
+87 , 3596 , 3 , 143 , 1 , 1 ,
+87 , 3597 , 200 , 21 , 1 , 1 , 3593 3591 3592 3589 3595 3596 3594 3590
+88 , 3598 , 3 , 143 , 1 , 1 ,
+88 , 3599 , 3 , 154 , 1 , 1 ,
+88 , 3600 , 3 , 184 , 1 , 1 ,
+88 , 3601 , 3 , 164 , 1 , 1 ,
+88 , 3602 , 3 , 154 , 1 , 1 ,
+88 , 3603 , 3 , 154 , 1 , 1 ,
+88 , 3604 , 3 , 164 , 1 , 1 ,
+88 , 3605 , 3 , 143 , 1 , 1 ,
+88 , 3606 , 200 , 21 , 1 , 1 , 3599 3604 3598 3603 3605 3601 3602 3600
+89 , 3616 , 2 , 143 , 1 , 1 ,
+89 , 3617 , 2 , 164 , 1 , 1 ,
+89 , 3618 , 2 , 184 , 1 , 1 ,
+89 , 3619 , 2 , 154 , 1 , 1 ,
+89 , 3620 , 2 , 143 , 1 , 1 ,
+89 , 3621 , 2 , 154 , 1 , 1 ,
+89 , 3622 , 2 , 164 , 1 , 1 ,
+89 , 3623 , 2 , 154 , 1 , 1 ,
+89 , 3624 , 200 , 0 , 1 , 1 , 3616 3617 3623 3619 3618 3621 3622 3620
+90 , 3634 , 4 , 143 , 1 , 1 ,
+90 , 3635 , 4 , 164 , 1 , 1 ,
+90 , 3636 , 4 , 174 , 1 , 1 ,
+90 , 3637 , 4 , 154 , 1 , 1 ,
+90 , 3638 , 4 , 154 , 1 , 1 ,
+90 , 3639 , 4 , 164 , 1 , 1 ,
+90 , 3640 , 4 , 164 , 1 , 1 ,
+90 , 3641 , 4 , 154 , 1 , 1 ,
+90 , 3642 , 191 , 21 , 1 , 1 , 3638 3636 3639 3637 3641 3635 3634 3640
+91 , 3652 , 3 , 143 , 1 , 1 ,
+91 , 3653 , 3 , 164 , 1 , 1 ,
+91 , 3654 , 3 , 184 , 1 , 1 ,
+91 , 3655 , 3 , 164 , 1 , 1 ,
+91 , 3656 , 2 , 154 , 1 , 1 ,
+91 , 3657 , 2 , 164 , 1 , 1 ,
+91 , 3658 , 2 , 154 , 1 , 1 ,
+91 , 3659 , 2 , 154 , 1 , 1 ,
+91 , 3660 , 200 , 21 , 1 , 1 , 3652 3657 3656 3659 3654 3653 3655 3658
+92 , 3661 , 3 , 72 , 1 , 1 ,
+92 , 3662 , 3 , 82 , 1 , 1 ,
+92 , 3663 , 3 , 72 , 1 , 1 ,
+92 , 3664 , 3 , 72 , 1 , 1 ,
+92 , 3665 , 3 , 82 , 1 , 1 ,
+92 , 3666 , 3 , 83 , 1 , 1 ,
+92 , 3667 , 3 , 83 , 1 , 1 ,
+92 , 3668 , 3 , 72 , 1 , 1 ,
+92 , 3669 , 98 , 0 , 1 , 1 , 3661 3667 3664 3663 3668 3665 3662 3666
+93 , 3673 , 3 , 133 , 1 , 1 ,
+93 , 3674 , 3 , 164 , 1 , 1 ,
+93 , 3675 , 3 , 184 , 1 , 1 ,
+93 , 3676 , 3 , 174 , 1 , 1 ,
+93 , 3677 , 3 , 154 , 1 , 1 ,
+93 , 3678 , 3 , 154 , 1 , 1 ,
+93 , 3679 , 3 , 164 , 1 , 1 ,
+93 , 3680 , 3 , 154 , 1 , 1 ,
+93 , 3681 , 200 , 21 , 1 , 1 , 3677 3680 3679 3678 3676 3674 3675 3673
+94 , 3682 , 2 , 143 , 1 , 1 ,
+94 , 3683 , 2 , 154 , 1 , 1 ,
+94 , 3684 , 2 , 184 , 1 , 1 ,
+94 , 3685 , 2 , 164 , 1 , 1 ,
+94 , 3686 , 2 , 143 , 1 , 1 ,
+94 , 3687 , 2 , 164 , 1 , 1 ,
+94 , 3688 , 2 , 154 , 1 , 1 ,
+94 , 3689 , 2 , 154 , 1 , 1 ,
+94 , 3690 , 199 , 21 , 1 , 1 , 3686 3682 3684 3689 3683 3687 3685 3688
+95 , 3691 , 2 , 133 , 1 , 1 ,
+95 , 3692 , 2 , 164 , 1 , 1 ,
+95 , 3693 , 2 , 184 , 1 , 1 ,
+95 , 3694 , 2 , 174 , 1 , 1 ,
+95 , 3695 , 2 , 143 , 1 , 1 ,
+95 , 3696 , 2 , 164 , 1 , 1 ,
+95 , 3697 , 2 , 164 , 1 , 1 ,
+95 , 3698 , 2 , 154 , 1 , 1 ,
+95 , 3699 , 200 , 21 , 1 , 1 , 3698 3694 3693 3695 3691 3697 3696 3692
+96 , 4103 , 3 , 143 , 1 , 1 ,
+96 , 4104 , 3 , 164 , 1 , 1 ,
+96 , 4105 , 3 , 174 , 1 , 1 ,
+96 , 4106 , 3 , 174 , 1 , 1 ,
+96 , 4107 , 3 , 154 , 1 , 1 ,
+96 , 4108 , 3 , 164 , 1 , 1 ,
+96 , 4109 , 3 , 164 , 1 , 1 ,
+96 , 4110 , 3 , 143 , 1 , 1 ,
+96 , 4111 , 190 , 21 , 1 , 1 , 4109 4110 4106 4107 4108 4104 4103 4105
+97 , 4112 , 3 , 133 , 1 , 1 ,
+97 , 4113 , 3 , 164 , 1 , 1 ,
+97 , 4114 , 3 , 184 , 1 , 1 ,
+97 , 4115 , 3 , 164 , 1 , 1 ,
+97 , 4116 , 3 , 164 , 1 , 1 ,
+97 , 4117 , 3 , 164 , 1 , 1 ,
+97 , 4118 , 3 , 154 , 1 , 1 ,
+97 , 4119 , 3 , 154 , 1 , 1 ,
+97 , 4120 , 200 , 21 , 1 , 1 , 4115 4114 4119 4112 4116 4118 4113 4117
+98 , 4154 , 4 , 11 , 1 , 1 ,
+98 , 4155 , 27 , 31 , 1 , 1 , 4154
+98 , 4156 , 27 , 31 , 1 , 1 , 4154
+98 , 4157 , 27 , 31 , 1 , 1 , 4154
+98 , 4158 , 27 , 21 , 1 , 1 , 4154
+98 , 4159 , 71 , 0 , 1 , 1 , 4158 4156 4157 4155
+98 , 4160 , 84 , 0 , 1 , 1 , 4159
+98 , 4161 , 84 , 0 , 1 , 1 , 4159
+98 , 4162 , 84 , 0 , 1 , 1 , 4159
+98 , 4163 , 84 , 0 , 1 , 1 , 4159
+98 , 4164 , 107 , 0 , 1 , 1 , 4163 4160 4161 4162
+99 , 4165 , 6 , 11 , 1 , 1 ,
+99 , 4166 , 31 , 174 , 1 , 1 , 4165
+99 , 4167 , 31 , 194 , 1 , 1 , 4165
+99 , 4168 , 31 , 164 , 1 , 1 , 4165
+99 , 4169 , 31 , 174 , 1 , 1 , 4165
+99 , 4170 , 31 , 174 , 1 , 1 , 4165
+99 , 4171 , 31 , 174 , 1 , 1 , 4165
+99 , 4172 , 30 , 184 , 1 , 1 , 4165
+99 , 4173 , 30 , 194 , 1 , 1 , 4165
+99 , 4174 , 30 , 184 , 1 , 1 , 4165
+99 , 4175 , 29 , 174 , 1 , 1 , 4165
+99 , 4176 , 29 , 184 , 1 , 1 , 4165
+99 , 4177 , 29 , 184 , 1 , 1 , 4165
+99 , 4178 , 29 , 184 , 1 , 1 , 4165
+99 , 4179 , 29 , 184 , 1 , 1 , 4165
+99 , 4180 , 29 , 194 , 1 , 1 , 4165
+99 , 4181 , 29 , 184 , 1 , 1 , 4165
+99 , 4182 , 29 , 194 , 1 , 1 , 4165
+99 , 4183 , 29 , 194 , 1 , 1 , 4165
+99 , 4184 , 29 , 185 , 1 , 1 , 4165
+99 , 4185 , 239 , 0 , 1 , 1 , 4178 4180 4181 4173 4175 4177 4167 4168 4171 4182 4183 4172 4184 4179 4170 4169 4176 4166 4174
+99 , 4186 , 255 , 31 , 1 , 1 , 4185
+99 , 4187 , 255 , 21 , 1 , 1 , 4185
+99 , 4188 , 255 , 11 , 1 , 1 , 4185
+99 , 4189 , 255 , 21 , 1 , 1 , 4185
+99 , 4190 , 255 , 11 , 1 , 1 , 4185
+99 , 4191 , 255 , 21 , 1 , 1 , 4185
+99 , 4192 , 255 , 21 , 1 , 1 , 4185
+99 , 4193 , 255 , 21 , 1 , 1 , 4185
+99 , 4194 , 255 , 21 , 1 , 1 , 4185
+99 , 4195 , 253 , 31 , 1 , 1 , 4185
+99 , 4196 , 253 , 21 , 1 , 1 , 4185
+99 , 4197 , 253 , 31 , 1 , 1 , 4185
+99 , 4198 , 253 , 11 , 1 , 1 , 4185
+99 , 4199 , 253 , 21 , 1 , 1 , 4185
+99 , 4200 , 253 , 11 , 1 , 1 , 4185
+99 , 4201 , 253 , 11 , 1 , 1 , 4185
+99 , 4202 , 253 , 31 , 1 , 1 , 4185
+99 , 4203 , 253 , 0 , 1 , 1 , 4185
+99 , 4204 , 253 , 0 , 1 , 1 , 4185
+99 , 4205 , 301 , 0 , 1 , 1 , 4194 4199 4192 4191 4203 4189 4188 4196 4187 4204 4200 4190 4198 4201 4186 4197 4202 4193 4195
+100 , 4206 , 2 , 143 , 1 , 1 ,
+100 , 4207 , 2 , 154 , 1 , 1 ,
+100 , 4208 , 2 , 184 , 1 , 1 ,
+100 , 4209 , 2 , 154 , 1 , 1 ,
+100 , 4210 , 2 , 154 , 1 , 1 ,
+100 , 4211 , 2 , 143 , 1 , 1 ,
+100 , 4212 , 2 , 164 , 1 , 1 ,
+100 , 4213 , 2 , 154 , 1 , 1 ,
+100 , 4214 , 200 , 21 , 1 , 1 , 4210 4208 4212 4213 4206 4211 4207 4209
+101 , 4215 , 3 , 144 , 1 , 1 ,
+101 , 4216 , 3 , 164 , 1 , 1 ,
+101 , 4217 , 3 , 185 , 1 , 1 ,
+101 , 4218 , 3 , 164 , 1 , 1 ,
+101 , 4219 , 3 , 143 , 1 , 1 ,
+101 , 4220 , 3 , 164 , 1 , 1 ,
+101 , 4221 , 3 , 174 , 1 , 1 ,
+101 , 4222 , 3 , 143 , 1 , 1 ,
+101 , 4223 , 201 , 21 , 1 , 1 , 4221 4222 4220 4218 4217 4219 4216 4215
+102 , 4224 , 3 , 143 , 1 , 1 ,
+102 , 4225 , 3 , 154 , 1 , 1 ,
+102 , 4226 , 3 , 184 , 1 , 1 ,
+102 , 4227 , 3 , 164 , 1 , 1 ,
+102 , 4228 , 3 , 143 , 1 , 1 ,
+102 , 4229 , 3 , 154 , 1 , 1 ,
+102 , 4230 , 3 , 154 , 1 , 1 ,
+102 , 4231 , 3 , 154 , 1 , 1 ,
+102 , 4232 , 200 , 21 , 1 , 1 , 4230 4229 4226 4231 4225 4228 4227 4224
+103 , 4233 , 3 , 72 , 1 , 1 ,
+103 , 4234 , 3 , 82 , 1 , 1 ,
+103 , 4235 , 3 , 92 , 1 , 1 ,
+103 , 4236 , 3 , 82 , 1 , 1 ,
+103 , 4237 , 3 , 72 , 1 , 1 ,
+103 , 4238 , 3 , 82 , 1 , 1 ,
+103 , 4239 , 3 , 92 , 1 , 1 ,
+103 , 4240 , 3 , 72 , 1 , 1 ,
+103 , 4241 , 108 , 11 , 1 , 1 , 4240 4236 4234 4239 4238 4235 4233 4237
+104 , 4242 , 3 , 72 , 1 , 1 ,
+104 , 4243 , 3 , 82 , 1 , 1 ,
+104 , 4244 , 3 , 92 , 1 , 1 ,
+104 , 4245 , 3 , 82 , 1 , 1 ,
+104 , 4246 , 3 , 72 , 1 , 1 ,
+104 , 4247 , 3 , 82 , 1 , 1 ,
+104 , 4248 , 3 , 82 , 1 , 1 ,
+104 , 4249 , 3 , 82 , 1 , 1 ,
+104 , 4250 , 108 , 11 , 1 , 1 , 4248 4243 4246 4249 4242 4247 4244 4245
+105 , 4251 , 3 , 72 , 1 , 1 ,
+105 , 4252 , 3 , 82 , 1 , 1 ,
+105 , 4253 , 3 , 92 , 1 , 1 ,
+105 , 4254 , 3 , 92 , 1 , 1 ,
+105 , 4255 , 3 , 72 , 1 , 1 ,
+105 , 4256 , 3 , 82 , 1 , 1 ,
+105 , 4257 , 3 , 82 , 1 , 1 ,
+105 , 4258 , 3 , 82 , 1 , 1 ,
+105 , 4259 , 108 , 11 , 1 , 1 , 4252 4258 4251 4255 4257 4254 4253 4256
+106 , 4260 , 3 , 72 , 1 , 1 ,
+106 , 4261 , 3 , 82 , 1 , 1 ,
+106 , 4262 , 3 , 82 , 1 , 1 ,
+106 , 4263 , 3 , 82 , 1 , 1 ,
+106 , 4264 , 3 , 82 , 1 , 1 ,
+106 , 4265 , 3 , 82 , 1 , 1 ,
+106 , 4266 , 3 , 82 , 1 , 1 ,
+106 , 4267 , 3 , 72 , 1 , 1 ,
+106 , 4268 , 99 , 11 , 1 , 1 , 4267 4266 4263 4261 4265 4264 4262 4260
+107 , 4269 , 3 , 72 , 1 , 1 ,
+107 , 4270 , 3 , 82 , 1 , 1 ,
+107 , 4271 , 3 , 82 , 1 , 1 ,
+107 , 4272 , 3 , 82 , 1 , 1 ,
+107 , 4273 , 3 , 82 , 1 , 1 ,
+107 , 4274 , 3 , 82 , 1 , 1 ,
+107 , 4275 , 3 , 82 , 1 , 1 ,
+107 , 4276 , 3 , 82 , 1 , 1 ,
+107 , 4277 , 98 , 11 , 1 , 1 , 4276 4274 4273 4275 4272 4270 4269 4271
+108 , 4278 , 6 , 11 , 1 , 1 ,
+108 , 4279 , 31 , 184 , 1 , 1 , 4278
+108 , 4280 , 31 , 174 , 1 , 1 , 4278
+108 , 4281 , 31 , 174 , 1 , 1 , 4278
+108 , 4282 , 31 , 184 , 1 , 1 , 4278
+108 , 4283 , 31 , 184 , 1 , 1 , 4278
+108 , 4284 , 31 , 184 , 1 , 1 , 4278
+108 , 4285 , 31 , 174 , 1 , 1 , 4278
+108 , 4286 , 29 , 174 , 1 , 1 , 4278
+108 , 4287 , 29 , 194 , 1 , 1 , 4278
+108 , 4288 , 29 , 215 , 1 , 1 , 4278
+108 , 4289 , 29 , 194 , 1 , 1 , 4278
+108 , 4290 , 29 , 215 , 1 , 1 , 4278
+108 , 4291 , 29 , 194 , 1 , 1 , 4278
+108 , 4292 , 29 , 184 , 1 , 1 , 4278
+108 , 4293 , 29 , 184 , 1 , 1 , 4278
+108 , 4294 , 29 , 194 , 1 , 1 , 4278
+108 , 4295 , 29 , 215 , 1 , 1 , 4278
+108 , 4296 , 29 , 194 , 1 , 1 , 4278
+108 , 4297 , 29 , 174 , 1 , 1 , 4278
+108 , 4298 , 258 , 0 , 1 , 1 , 4293 4290 4295 4287 4291 4289 4297 4284 4279 4283 4280 4281 4286 4288 4296 4292 4294 4282 4285
+108 , 4299 , 274 , 21 , 1 , 1 , 4298
+108 , 4300 , 274 , 21 , 1 , 1 , 4298
+108 , 4301 , 274 , 21 , 1 , 1 , 4298
+108 , 4302 , 274 , 21 , 1 , 1 , 4298
+108 , 4303 , 274 , 21 , 1 , 1 , 4298
+108 , 4304 , 274 , 21 , 1 , 1 , 4298
+108 , 4305 , 274 , 21 , 1 , 1 , 4298
+108 , 4306 , 274 , 21 , 1 , 1 , 4298
+108 , 4307 , 274 , 21 , 1 , 1 , 4298
+108 , 4308 , 272 , 21 , 1 , 1 , 4298
+108 , 4309 , 272 , 11 , 1 , 1 , 4298
+108 , 4310 , 272 , 21 , 1 , 1 , 4298
+108 , 4311 , 272 , 21 , 1 , 1 , 4298
+108 , 4312 , 272 , 11 , 1 , 1 , 4298
+108 , 4313 , 272 , 21 , 1 , 1 , 4298
+108 , 4314 , 272 , 21 , 1 , 1 , 4298
+108 , 4315 , 272 , 21 , 1 , 1 , 4298
+108 , 4316 , 272 , 21 , 1 , 1 , 4298
+108 , 4317 , 272 , 21 , 1 , 1 , 4298
+108 , 4318 , 309 , 0 , 1 , 1 , 4313 4306 4305 4303 4307 4315 4317 4314 4310 4316 4302 4299 4304 4308 4309 4311 4300 4301 4312
+109 , 4319 , 8 , 52 , 1 , 1 ,
+109 , 4320 , 8 , 52 , 1 , 1 ,
+109 , 4321 , 8 , 41 , 1 , 1 ,
+109 , 4322 , 8 , 41 , 1 , 1 ,
+109 , 4323 , 8 , 52 , 1 , 1 ,
+109 , 4324 , 8 , 52 , 1 , 1 ,
+109 , 4325 , 5 , 52 , 1 , 1 ,
+109 , 4326 , 5 , 52 , 1 , 1 ,
+109 , 4327 , 5 , 41 , 1 , 1 ,
+109 , 4328 , 5 , 52 , 1 , 1 ,
+109 , 4329 , 5 , 52 , 1 , 1 ,
+109 , 4330 , 5 , 52 , 1 , 1 ,
+109 , 4331 , 5 , 41 , 1 , 1 ,
+109 , 4332 , 5 , 52 , 1 , 1 ,
+109 , 4333 , 5 , 52 , 1 , 1 ,
+109 , 4334 , 5 , 52 , 1 , 1 ,
+109 , 4335 , 72 , 11 , 1 , 1 , 4333 4324 4328 4325 4329 4321 4330 4326 4320 4319 4332 4331 4327 4334 4322 4323
+110 , 4336 , 6 , 21 , 1 , 1 ,
+110 , 4337 , 42 , 184 , 1 , 1 , 4336
+110 , 4338 , 42 , 194 , 1 , 1 , 4336
+110 , 4339 , 42 , 184 , 1 , 1 , 4336
+110 , 4340 , 42 , 184 , 1 , 1 , 4336
+110 , 4341 , 41 , 194 , 1 , 1 , 4336
+110 , 4342 , 40 , 194 , 1 , 1 , 4336
+110 , 4343 , 40 , 194 , 1 , 1 , 4336
+110 , 4344 , 40 , 174 , 1 , 1 , 4336
+110 , 4345 , 40 , 184 , 1 , 1 , 4336
+110 , 4346 , 40 , 205 , 1 , 1 , 4336
+110 , 4347 , 40 , 205 , 1 , 1 , 4336
+110 , 4348 , 39 , 194 , 1 , 1 , 4336
+110 , 4349 , 39 , 184 , 1 , 1 , 4336
+110 , 4350 , 39 , 184 , 1 , 1 , 4336
+110 , 4351 , 39 , 184 , 1 , 1 , 4336
+110 , 4352 , 39 , 174 , 1 , 1 , 4336
+110 , 4353 , 39 , 184 , 1 , 1 , 4336
+110 , 4354 , 39 , 194 , 1 , 1 , 4336
+110 , 4355 , 39 , 205 , 1 , 1 , 4336
+110 , 4356 , 258 , 0 , 1 , 1 , 4339 4351 4342 4340 4349 4350 4345 4344 4343 4352 4348 4347 4353 4337 4341 4355 4354 4346 4338
+110 , 4357 , 274 , 31 , 1 , 1 , 4356
+110 , 4358 , 274 , 31 , 1 , 1 , 4356
+110 , 4359 , 274 , 21 , 1 , 1 , 4356
+110 , 4360 , 274 , 31 , 1 , 1 , 4356
+110 , 4361 , 274 , 31 , 1 , 1 , 4356
+110 , 4362 , 274 , 31 , 1 , 1 , 4356
+110 , 4363 , 274 , 21 , 1 , 1 , 4356
+110 , 4364 , 274 , 11 , 1 , 1 , 4356
+110 , 4365 , 274 , 31 , 1 , 1 , 4356
+110 , 4366 , 272 , 41 , 1 , 1 , 4356
+110 , 4367 , 272 , 31 , 1 , 1 , 4356
+110 , 4368 , 272 , 31 , 1 , 1 , 4356
+110 , 4369 , 272 , 31 , 1 , 1 , 4356
+110 , 4370 , 272 , 21 , 1 , 1 , 4356
+110 , 4371 , 272 , 41 , 1 , 1 , 4356
+110 , 4372 , 272 , 21 , 1 , 1 , 4356
+110 , 4373 , 272 , 21 , 1 , 1 , 4356
+110 , 4374 , 272 , 42 , 1 , 1 , 4356
+110 , 4375 , 272 , 21 , 1 , 1 , 4356
+110 , 4376 , 328 , 0 , 1 , 1 , 4358 4370 4368 4375 4371 4364 4360 4367 4357 4363 4373 4365 4372 4359 4374 4362 4361 4369 4366
+111 , 4377 , 9 , 41 , 1 , 1 ,
+111 , 4378 , 9 , 41 , 1 , 1 ,
+111 , 4379 , 9 , 52 , 1 , 1 ,
+111 , 4380 , 9 , 52 , 1 , 1 ,
+111 , 4381 , 9 , 52 , 1 , 1 ,
+111 , 4382 , 9 , 52 , 1 , 1 ,
+111 , 4383 , 6 , 52 , 1 , 1 ,
+111 , 4384 , 6 , 41 , 1 , 1 ,
+111 , 4385 , 6 , 52 , 1 , 1 ,
+111 , 4386 , 6 , 52 , 1 , 1 ,
+111 , 4387 , 6 , 52 , 1 , 1 ,
+111 , 4388 , 6 , 52 , 1 , 1 ,
+111 , 4389 , 6 , 52 , 1 , 1 ,
+111 , 4390 , 6 , 52 , 1 , 1 ,
+111 , 4391 , 6 , 41 , 1 , 1 ,
+111 , 4392 , 6 , 52 , 1 , 1 ,
+111 , 4393 , 73 , 11 , 1 , 1 , 4385 4390 4387 4377 4382 4389 4391 4381 4378 4388 4384 4386 4392 4380 4379 4383
+112 , 4394 , 7 , 21 , 1 , 1 ,
+112 , 4395 , 45 , 184 , 1 , 1 , 4394
+112 , 4396 , 45 , 194 , 1 , 1 , 4394
+112 , 4397 , 45 , 184 , 1 , 1 , 4394
+112 , 4398 , 45 , 184 , 1 , 1 , 4394
+112 , 4399 , 45 , 184 , 1 , 1 , 4394
+112 , 4400 , 45 , 184 , 1 , 1 , 4394
+112 , 4401 , 45 , 205 , 1 , 1 , 4394
+112 , 4402 , 45 , 194 , 1 , 1 , 4394
+112 , 4403 , 42 , 205 , 1 , 1 , 4394
+112 , 4404 , 42 , 215 , 1 , 1 , 4394
+112 , 4405 , 42 , 194 , 1 , 1 , 4394
+112 , 4406 , 42 , 215 , 1 , 1 , 4394
+112 , 4407 , 42 , 205 , 1 , 1 , 4394
+112 , 4408 , 42 , 194 , 1 , 1 , 4394
+112 , 4409 , 42 , 184 , 1 , 1 , 4394
+112 , 4410 , 42 , 184 , 1 , 1 , 4394
+112 , 4411 , 42 , 194 , 1 , 1 , 4394
+112 , 4412 , 42 , 184 , 1 , 1 , 4394
+112 , 4413 , 42 , 194 , 1 , 1 , 4394
+112 , 4414 , 272 , 0 , 1 , 1 , 4411 4407 4406 4410 4405 4403 4399 4408 4398 4401 4400 4412 4396 4397 4404 4409 4395 4402 4413
+112 , 4415 , 299 , 31 , 1 , 1 , 4414
+112 , 4416 , 299 , 21 , 1 , 1 , 4414
+112 , 4417 , 299 , 21 , 1 , 1 , 4414
+112 , 4418 , 299 , 21 , 1 , 1 , 4414
+112 , 4419 , 299 , 31 , 1 , 1 , 4414
+112 , 4420 , 299 , 21 , 1 , 1 , 4414
+112 , 4421 , 299 , 21 , 1 , 1 , 4414
+112 , 4422 , 299 , 21 , 1 , 1 , 4414
+112 , 4423 , 299 , 21 , 1 , 1 , 4414
+112 , 4424 , 297 , 21 , 1 , 1 , 4414
+112 , 4425 , 297 , 21 , 1 , 1 , 4414
+112 , 4426 , 297 , 31 , 1 , 1 , 4414
+112 , 4427 , 297 , 11 , 1 , 1 , 4414
+112 , 4428 , 297 , 31 , 1 , 1 , 4414
+112 , 4429 , 297 , 11 , 1 , 1 , 4414
+112 , 4430 , 297 , 21 , 1 , 1 , 4414
+112 , 4431 , 297 , 31 , 1 , 1 , 4414
+112 , 4432 , 297 , 11 , 1 , 1 , 4414
+112 , 4433 , 296 , 11 , 1 , 1 , 4414
+112 , 4434 , 346 , 11 , 1 , 1 , 4422 4427 4420 4433 4428 4423 4432 4431 4418 4429 4419 4424 4430 4425 4417 4421 4415 4426 4416
+113 , 4435 , 12 , 41 , 1 , 1 ,
+113 , 4436 , 12 , 41 , 1 , 1 ,
+113 , 4437 , 12 , 41 , 1 , 1 ,
+113 , 4438 , 12 , 52 , 1 , 1 ,
+113 , 4439 , 12 , 52 , 1 , 1 ,
+113 , 4440 , 11 , 52 , 1 , 1 ,
+113 , 4441 , 8 , 52 , 1 , 1 ,
+113 , 4442 , 8 , 41 , 1 , 1 ,
+113 , 4443 , 8 , 41 , 1 , 1 ,
+113 , 4444 , 8 , 41 , 1 , 1 ,
+113 , 4445 , 8 , 52 , 1 , 1 ,
+113 , 4446 , 8 , 52 , 1 , 1 ,
+113 , 4447 , 8 , 41 , 1 , 1 ,
+113 , 4448 , 8 , 52 , 1 , 1 ,
+113 , 4449 , 8 , 41 , 1 , 1 ,
+113 , 4450 , 8 , 41 , 1 , 1 ,
+113 , 4451 , 76 , 11 , 1 , 1 , 4449 4436 4447 4438 4437 4435 4448 4445 4450 4443 4441 4444 4439 4440 4442 4446
+114 , 4452 , 5 , 11 , 1 , 1 ,
+114 , 4453 , 32 , 205 , 1 , 1 , 4452
+114 , 4454 , 32 , 235 , 1 , 1 , 4452
+114 , 4455 , 32 , 205 , 1 , 1 , 4452
+114 , 4456 , 32 , 174 , 1 , 1 , 4452
+114 , 4457 , 32 , 194 , 1 , 1 , 4452
+114 , 4458 , 32 , 205 , 1 , 1 , 4452
+114 , 4459 , 32 , 235 , 1 , 1 , 4452
+114 , 4460 , 32 , 215 , 1 , 1 , 4452
+114 , 4461 , 31 , 235 , 1 , 1 , 4452
+114 , 4462 , 28 , 245 , 1 , 1 , 4452
+114 , 4463 , 28 , 235 , 1 , 1 , 4452
+114 , 4464 , 28 , 184 , 1 , 1 , 4452
+114 , 4465 , 28 , 225 , 1 , 1 , 4452
+114 , 4466 , 28 , 235 , 1 , 1 , 4452
+114 , 4467 , 28 , 235 , 1 , 1 , 4452
+114 , 4468 , 28 , 184 , 1 , 1 , 4452
+114 , 4469 , 28 , 194 , 1 , 1 , 4452
+114 , 4470 , 28 , 194 , 1 , 1 , 4452
+114 , 4471 , 28 , 184 , 1 , 1 , 4452
+114 , 4472 , 289 , 0 , 1 , 1 , 4470 4461 4471 4462 4459 4458 4464 4465 4456 4453 4463 4469 4468 4455 4460 4467 4466 4454 4457
+114 , 4473 , 306 , 21 , 1 , 1 , 4472
+114 , 4474 , 306 , 32 , 1 , 1 , 4472
+114 , 4475 , 306 , 32 , 1 , 1 , 4472
+114 , 4476 , 306 , 32 , 1 , 1 , 4472
+114 , 4477 , 306 , 32 , 1 , 1 , 4472
+114 , 4478 , 306 , 31 , 1 , 1 , 4472
+114 , 4479 , 306 , 31 , 1 , 1 , 4472
+114 , 4480 , 306 , 21 , 1 , 1 , 4472
+114 , 4481 , 306 , 22 , 1 , 1 , 4472
+114 , 4482 , 303 , 31 , 1 , 1 , 4472
+114 , 4483 , 303 , 31 , 1 , 1 , 4472
+114 , 4484 , 303 , 31 , 1 , 1 , 4472
+114 , 4485 , 303 , 31 , 1 , 1 , 4472
+114 , 4486 , 303 , 31 , 1 , 1 , 4472
+114 , 4487 , 303 , 22 , 1 , 1 , 4472
+114 , 4488 , 303 , 42 , 1 , 1 , 4472
+114 , 4489 , 303 , 22 , 1 , 1 , 4472
+114 , 4490 , 303 , 21 , 1 , 1 , 4472
+114 , 4491 , 303 , 22 , 1 , 1 , 4472
+114 , 4492 , 360 , 0 , 1 , 1 , 4489 4477 4482 4485 4481 4483 4486 4491 4490 4474 4487 4488 4479 4480 4473 4484 4478 4475 4476
+115 , 4534 , 9 , 11 , 1 , 1 ,
+115 , 4535 , 43 , 215 , 1 , 1 , 4534
+115 , 4536 , 43 , 184 , 1 , 1 , 4534
+115 , 4537 , 43 , 194 , 1 , 1 , 4534
+115 , 4538 , 43 , 205 , 1 , 1 , 4534
+115 , 4539 , 43 , 215 , 1 , 1 , 4534
+115 , 4540 , 42 , 215 , 1 , 1 , 4534
+115 , 4541 , 41 , 205 , 1 , 1 , 4534
+115 , 4542 , 41 , 194 , 1 , 1 , 4534
+115 , 4543 , 39 , 205 , 1 , 1 , 4534
+115 , 4544 , 39 , 215 , 1 , 1 , 4534
+115 , 4545 , 39 , 194 , 1 , 1 , 4534
+115 , 4546 , 39 , 205 , 1 , 1 , 4534
+115 , 4547 , 39 , 205 , 1 , 1 , 4534
+115 , 4548 , 39 , 205 , 1 , 1 , 4534
+115 , 4549 , 39 , 194 , 1 , 1 , 4534
+115 , 4550 , 39 , 194 , 1 , 1 , 4534
+115 , 4551 , 38 , 205 , 1 , 1 , 4534
+115 , 4552 , 38 , 215 , 1 , 1 , 4534
+115 , 4553 , 36 , 194 , 1 , 1 , 4534
+115 , 4554 , 273 , 0 , 1 , 1 , 4548 4547 4536 4550 4535 4543 4553 4537 4542 4552 4541 4545 4539 4538 4549 4546 4540 4551 4544
+115 , 4555 , 290 , 41 , 1 , 1 , 4554
+115 , 4556 , 290 , 41 , 1 , 1 , 4554
+115 , 4557 , 290 , 41 , 1 , 1 , 4554
+115 , 4558 , 290 , 31 , 1 , 1 , 4554
+115 , 4559 , 290 , 41 , 1 , 1 , 4554
+115 , 4560 , 290 , 41 , 1 , 1 , 4554
+115 , 4561 , 290 , 21 , 1 , 1 , 4554
+115 , 4562 , 290 , 21 , 1 , 1 , 4554
+115 , 4563 , 290 , 42 , 1 , 1 , 4554
+115 , 4564 , 287 , 32 , 1 , 1 , 4554
+115 , 4565 , 287 , 32 , 1 , 1 , 4554
+115 , 4566 , 287 , 22 , 1 , 1 , 4554
+115 , 4567 , 287 , 22 , 1 , 1 , 4554
+115 , 4568 , 287 , 11 , 1 , 1 , 4554
+115 , 4569 , 287 , 11 , 1 , 1 , 4554
+115 , 4570 , 287 , 11 , 1 , 1 , 4554
+115 , 4571 , 287 , 11 , 1 , 1 , 4554
+115 , 4572 , 287 , 22 , 1 , 1 , 4554
+115 , 4573 , 287 , 22 , 1 , 1 , 4554
+115 , 4574 , 346 , 0 , 1 , 1 , 4569 4564 4561 4563 4555 4567 4559 4570 4572 4560 4565 4571 4556 4566 4568 4558 4573 4557 4562
+116 , 4575 , 5 , 11 , 1 , 1 ,
+116 , 4576 , 34 , 195 , 1 , 1 , 4575
+116 , 4577 , 33 , 205 , 1 , 1 , 4575
+116 , 4578 , 33 , 184 , 1 , 1 , 4575
+116 , 4579 , 33 , 194 , 1 , 1 , 4575
+116 , 4580 , 33 , 215 , 1 , 1 , 4575
+116 , 4581 , 33 , 205 , 1 , 1 , 4575
+116 , 4582 , 33 , 298 , 1 , 1 , 4575
+116 , 4583 , 33 , 184 , 1 , 1 , 4575
+116 , 4584 , 32 , 205 , 1 , 1 , 4575
+116 , 4585 , 30 , 225 , 1 , 1 , 4575
+116 , 4586 , 30 , 225 , 1 , 1 , 4575
+116 , 4587 , 30 , 205 , 1 , 1 , 4575
+116 , 4588 , 30 , 235 , 1 , 1 , 4575
+116 , 4589 , 30 , 194 , 1 , 1 , 4575
+116 , 4590 , 29 , 225 , 1 , 1 , 4575
+116 , 4591 , 29 , 215 , 1 , 1 , 4575
+116 , 4592 , 29 , 205 , 1 , 1 , 4575
+116 , 4593 , 28 , 225 , 1 , 1 , 4575
+116 , 4594 , 28 , 307 , 1 , 1 , 4575
+116 , 4595 , 350 , 0 , 1 , 1 , 4589 4594 4591 4577 4579 4576 4588 4583 4582 4585 4590 4581 4593 4587 4578 4584 4592 4586 4580
+116 , 4596 , 367 , 31 , 1 , 1 , 4595
+116 , 4597 , 367 , 21 , 1 , 1 , 4595
+116 , 4598 , 367 , 21 , 1 , 1 , 4595
+116 , 4599 , 367 , 21 , 1 , 1 , 4595
+116 , 4600 , 366 , 31 , 1 , 1 , 4595
+116 , 4601 , 366 , 21 , 1 , 1 , 4595
+116 , 4602 , 366 , 31 , 1 , 1 , 4595
+116 , 4603 , 366 , 21 , 1 , 1 , 4595
+116 , 4604 , 366 , 21 , 1 , 1 , 4595
+116 , 4605 , 364 , 21 , 1 , 1 , 4595
+116 , 4606 , 364 , 31 , 1 , 1 , 4595
+116 , 4607 , 364 , 31 , 1 , 1 , 4595
+116 , 4608 , 364 , 11 , 1 , 1 , 4595
+116 , 4609 , 364 , 31 , 1 , 1 , 4595
+116 , 4610 , 364 , 11 , 1 , 1 , 4595
+116 , 4611 , 364 , 21 , 1 , 1 , 4595
+116 , 4612 , 364 , 21 , 1 , 1 , 4595
+116 , 4613 , 364 , 31 , 1 , 1 , 4595
+116 , 4614 , 364 , 31 , 1 , 1 , 4595
+116 , 4615 , 412 , 0 , 1 , 1 , 4599 4609 4601 4605 4612 4603 4600 4596 4602 4608 4598 4606 4604 4613 4607 4614 4610 4597 4611
+117 , 4616 , 7 , 11 , 1 , 1 ,
+117 , 4617 , 251 , 175 , 1 , 1 , 4616
+117 , 4618 , 249 , 187 , 1 , 1 , 4616
+117 , 4619 , 249 , 166 , 1 , 1 , 4616
+117 , 4620 , 249 , 177 , 1 , 1 , 4616
+117 , 4621 , 249 , 208 , 1 , 1 , 4616
+117 , 4622 , 249 , 185 , 1 , 1 , 4616
+117 , 4623 , 249 , 184 , 1 , 1 , 4616
+117 , 4624 , 239 , 195 , 1 , 1 , 4616
+117 , 4625 , 239 , 185 , 1 , 1 , 4616
+117 , 4626 , 238 , 216 , 1 , 1 , 4616
+117 , 4627 , 238 , 216 , 1 , 1 , 4616
+117 , 4628 , 236 , 196 , 1 , 1 , 4616
+117 , 4629 , 235 , 205 , 1 , 1 , 4616
+117 , 4630 , 231 , 217 , 1 , 1 , 4616
+117 , 4631 , 229 , 164 , 1 , 1 , 4616
+117 , 4632 , 228 , 176 , 1 , 1 , 4616
+117 , 4633 , 228 , 206 , 1 , 1 , 4616
+117 , 4634 , 227 , 217 , 1 , 1 , 4616
+117 , 4635 , 218 , 206 , 1 , 1 , 4616
+117 , 4636 , 471 , 0 , 1 , 1 , 4635 4633 4634 4631 4618 4628 4630 4617 4629 4632 4619 4623 4620 4621 4624 4625 4626 4627 4622
+117 , 4637 , 487 , 31 , 1 , 1 , 4636
+117 , 4638 , 487 , 41 , 1 , 1 , 4636
+117 , 4639 , 487 , 31 , 1 , 1 , 4636
+117 , 4640 , 487 , 31 , 1 , 1 , 4636
+117 , 4641 , 487 , 31 , 1 , 1 , 4636
+117 , 4642 , 487 , 31 , 1 , 1 , 4636
+117 , 4643 , 487 , 41 , 1 , 1 , 4636
+117 , 4644 , 487 , 31 , 1 , 1 , 4636
+117 , 4645 , 487 , 21 , 1 , 1 , 4636
+117 , 4646 , 484 , 24 , 1 , 1 , 4636
+117 , 4647 , 484 , 34 , 1 , 1 , 4636
+117 , 4648 , 484 , 34 , 1 , 1 , 4636
+117 , 4649 , 484 , 34 , 1 , 1 , 4636
+117 , 4650 , 484 , 44 , 1 , 1 , 4636
+117 , 4651 , 484 , 24 , 1 , 1 , 4636
+117 , 4652 , 484 , 31 , 1 , 1 , 4636
+117 , 4653 , 484 , 11 , 1 , 1 , 4636
+117 , 4654 , 484 , 21 , 1 , 1 , 4636
+117 , 4655 , 484 , 21 , 1 , 1 , 4636
+117 , 4656 , 544 , 0 , 1 , 1 , 4647 4639 4644 4652 4649 4640 4648 4646 4643 4651 4642 4650 4637 4638 4655 4641 4645 4654 4653
+118 , 4657 , 4 , 11 , 1 , 1 ,
+118 , 4658 , 215 , 186 , 1 , 1 , 4657
+118 , 4659 , 215 , 176 , 1 , 1 , 4657
+118 , 4660 , 209 , 155 , 1 , 1 , 4657
+118 , 4661 , 42 , 187 , 1 , 1 , 4657
+118 , 4662 , 42 , 215 , 1 , 1 , 4657
+118 , 4663 , 41 , 205 , 1 , 1 , 4657
+118 , 4664 , 41 , 215 , 1 , 1 , 4657
+118 , 4665 , 39 , 194 , 1 , 1 , 4657
+118 , 4666 , 39 , 215 , 1 , 1 , 4657
+118 , 4667 , 39 , 194 , 1 , 1 , 4657
+118 , 4668 , 39 , 194 , 1 , 1 , 4657
+118 , 4669 , 39 , 205 , 1 , 1 , 4657
+118 , 4670 , 39 , 205 , 1 , 1 , 4657
+118 , 4671 , 39 , 194 , 1 , 1 , 4657
+118 , 4672 , 38 , 184 , 1 , 1 , 4657
+118 , 4673 , 38 , 184 , 1 , 1 , 4657
+118 , 4674 , 37 , 215 , 1 , 1 , 4657
+118 , 4675 , 36 , 194 , 1 , 1 , 4657
+118 , 4676 , 36 , 215 , 1 , 1 , 4657
+118 , 4677 , 413 , 0 , 1 , 1 , 4669 4662 4667 4665 4670 4673 4675 4671 4661 4672 4666 4663 4660 4674 4676 4668 4658 4664 4659
+118 , 4678 , 441 , 31 , 1 , 1 , 4677
+118 , 4679 , 441 , 31 , 1 , 1 , 4677
+118 , 4680 , 440 , 31 , 1 , 1 , 4677
+118 , 4681 , 440 , 21 , 1 , 1 , 4677
+118 , 4682 , 440 , 21 , 1 , 1 , 4677
+118 , 4683 , 440 , 41 , 1 , 1 , 4677
+118 , 4684 , 440 , 31 , 1 , 1 , 4677
+118 , 4685 , 440 , 31 , 1 , 1 , 4677
+118 , 4686 , 440 , 41 , 1 , 1 , 4677
+118 , 4687 , 437 , 21 , 1 , 1 , 4677
+118 , 4688 , 437 , 21 , 1 , 1 , 4677
+118 , 4689 , 437 , 11 , 1 , 1 , 4677
+118 , 4690 , 437 , 31 , 1 , 1 , 4677
+118 , 4691 , 437 , 21 , 1 , 1 , 4677
+118 , 4692 , 437 , 21 , 1 , 1 , 4677
+118 , 4693 , 437 , 21 , 1 , 1 , 4677
+118 , 4694 , 437 , 11 , 1 , 1 , 4677
+118 , 4695 , 437 , 41 , 1 , 1 , 4677
+118 , 4696 , 437 , 21 , 1 , 1 , 4677
+118 , 4697 , 496 , 22 , 1 , 1 , 4679 4681 4695 4696 4683 4678 4685 4689 4684 4694 4682 4686 4690 4680 4693 4691 4687 4688 4692
+119 , 4848 , 6 , 11 , 1 , 1 ,
+119 , 4849 , 32 , 307 , 1 , 1 , 4848
+119 , 4850 , 32 , 235 , 1 , 1 , 4848
+119 , 4851 , 32 , 195 , 1 , 1 , 4848
+119 , 4852 , 32 , 235 , 1 , 1 , 4848
+119 , 4853 , 32 , 215 , 1 , 1 , 4848
+119 , 4854 , 32 , 215 , 1 , 1 , 4848
+119 , 4855 , 32 , 195 , 1 , 1 , 4848
+119 , 4856 , 32 , 194 , 1 , 1 , 4848
+119 , 4857 , 32 , 184 , 1 , 1 , 4848
+119 , 4858 , 29 , 195 , 1 , 1 , 4848
+119 , 4859 , 29 , 205 , 1 , 1 , 4848
+119 , 4860 , 29 , 205 , 1 , 1 , 4848
+119 , 4861 , 29 , 195 , 1 , 1 , 4848
+119 , 4862 , 29 , 286 , 1 , 1 , 4848
+119 , 4863 , 29 , 195 , 1 , 1 , 4848
+119 , 4864 , 29 , 236 , 1 , 1 , 4848
+119 , 4865 , 29 , 205 , 1 , 1 , 4848
+119 , 4866 , 29 , 195 , 1 , 1 , 4848
+119 , 4867 , 29 , 205 , 1 , 1 , 4848
+119 , 4868 , 354 , 0 , 1 , 1 , 4854 4867 4849 4853 4863 4851 4859 4864 4850 4858 4855 4856 4862 4865 4860 4866 4861 4852 4857
+119 , 4869 , 370 , 22 , 1 , 1 , 4868
+119 , 4870 , 370 , 52 , 1 , 1 , 4868
+119 , 4871 , 370 , 42 , 1 , 1 , 4868
+119 , 4872 , 370 , 52 , 1 , 1 , 4868
+119 , 4873 , 370 , 22 , 1 , 1 , 4868
+119 , 4874 , 370 , 31 , 1 , 1 , 4868
+119 , 4875 , 370 , 22 , 1 , 1 , 4868
+119 , 4876 , 370 , 42 , 1 , 1 , 4868
+119 , 4877 , 370 , 22 , 1 , 1 , 4868
+119 , 4878 , 367 , 43 , 1 , 1 , 4868
+119 , 4879 , 367 , 11 , 1 , 1 , 4868
+119 , 4880 , 367 , 65 , 1 , 1 , 4868
+119 , 4881 , 367 , 44 , 1 , 1 , 4868
+119 , 4882 , 367 , 55 , 1 , 1 , 4868
+119 , 4883 , 367 , 44 , 1 , 1 , 4868
+119 , 4884 , 367 , 11 , 1 , 1 , 4868
+119 , 4885 , 367 , 11 , 1 , 1 , 4868
+119 , 4886 , 367 , 62 , 1 , 1 , 4868
+119 , 4887 , 367 , 11 , 1 , 1 , 4868
+119 , 4888 , 447 , 21 , 1 , 1 , 4880 4870 4879 4884 4878 4871 4875 4885 4873 4887 4886 4882 4872 4874 4881 4883 4876 4877 4869
+120 , 4889 , 4 , 11 , 1 , 1 ,
+120 , 4890 , 36 , 338 , 1 , 1 , 4889
+120 , 4891 , 36 , 195 , 1 , 1 , 4889
+120 , 4892 , 36 , 205 , 1 , 1 , 4889
+120 , 4893 , 36 , 194 , 1 , 1 , 4889
+120 , 4894 , 36 , 225 , 1 , 1 , 4889
+120 , 4895 , 36 , 215 , 1 , 1 , 4889
+120 , 4896 , 35 , 215 , 1 , 1 , 4889
+120 , 4897 , 35 , 205 , 1 , 1 , 4889
+120 , 4898 , 33 , 245 , 1 , 1 , 4889
+120 , 4899 , 33 , 215 , 1 , 1 , 4889
+120 , 4900 , 32 , 215 , 1 , 1 , 4889
+120 , 4901 , 32 , 307 , 1 , 1 , 4889
+120 , 4902 , 32 , 205 , 1 , 1 , 4889
+120 , 4903 , 32 , 225 , 1 , 1 , 4889
+120 , 4904 , 32 , 205 , 1 , 1 , 4889
+120 , 4905 , 32 , 246 , 1 , 1 , 4889
+120 , 4906 , 32 , 235 , 1 , 1 , 4889
+120 , 4907 , 32 , 235 , 1 , 1 , 4889
+120 , 4908 , 29 , 205 , 1 , 1 , 4889
+120 , 4909 , 389 , 21 , 1 , 1 , 4904 4893 4899 4900 4907 4892 4894 4897 4890 4895 4908 4901 4905 4898 4906 4896 4903 4891 4902
+120 , 4910 , 428 , 43 , 1 , 1 , 4909
+120 , 4911 , 428 , 43 , 1 , 1 , 4909
+120 , 4912 , 428 , 53 , 1 , 1 , 4909
+120 , 4913 , 428 , 22 , 1 , 1 , 4909
+120 , 4914 , 428 , 43 , 1 , 1 , 4909
+120 , 4915 , 428 , 43 , 1 , 1 , 4909
+120 , 4916 , 428 , 43 , 1 , 1 , 4909
+120 , 4917 , 428 , 54 , 1 , 1 , 4909
+120 , 4918 , 428 , 44 , 1 , 1 , 4909
+120 , 4919 , 424 , 32 , 1 , 1 , 4909
+120 , 4920 , 424 , 11 , 1 , 1 , 4909
+120 , 4921 , 424 , 11 , 1 , 1 , 4909
+120 , 4922 , 424 , 53 , 1 , 1 , 4909
+120 , 4923 , 424 , 22 , 1 , 1 , 4909
+120 , 4924 , 424 , 52 , 1 , 1 , 4909
+120 , 4925 , 424 , 52 , 1 , 1 , 4909
+120 , 4926 , 424 , 43 , 1 , 1 , 4909
+120 , 4927 , 424 , 43 , 1 , 1 , 4909
+120 , 4928 , 424 , 42 , 1 , 1 , 4909
+120 , 4929 , 507 , 21 , 1 , 1 , 4926 4922 4928 4924 4923 4912 4913 4925 4916 4918 4915 4927 4919 4914 4920 4910 4911 4917 4921
+121 , 4930 , 4 , 11 , 1 , 1 ,
+121 , 4931 , 41 , 215 , 1 , 1 , 4930
+121 , 4932 , 41 , 205 , 1 , 1 , 4930
+121 , 4933 , 40 , 194 , 1 , 1 , 4930
+121 , 4934 , 40 , 194 , 1 , 1 , 4930
+121 , 4935 , 40 , 205 , 1 , 1 , 4930
+121 , 4936 , 40 , 205 , 1 , 1 , 4930
+121 , 4937 , 40 , 205 , 1 , 1 , 4930
+121 , 4938 , 37 , 205 , 1 , 1 , 4930
+121 , 4939 , 37 , 205 , 1 , 1 , 4930
+121 , 4940 , 37 , 225 , 1 , 1 , 4930
+121 , 4941 , 37 , 194 , 1 , 1 , 4930
+121 , 4942 , 37 , 307 , 1 , 1 , 4930
+121 , 4943 , 37 , 235 , 1 , 1 , 4930
+121 , 4944 , 37 , 205 , 1 , 1 , 4930
+121 , 4945 , 37 , 215 , 1 , 1 , 4930
+121 , 4946 , 37 , 246 , 1 , 1 , 4930
+121 , 4947 , 37 , 215 , 1 , 1 , 4930
+121 , 4948 , 34 , 215 , 1 , 1 , 4930
+121 , 4949 , 34 , 236 , 1 , 1 , 4930
+121 , 4950 , 359 , 0 , 1 , 1 , 4944 4932 4942 4939 4945 4938 4941 4946 4943 4933 4936 4931 4935 4949 4934 4948 4947 4940 4937
+121 , 4951 , 376 , 32 , 1 , 1 , 4950
+121 , 4952 , 376 , 31 , 1 , 1 , 4950
+121 , 4953 , 376 , 52 , 1 , 1 , 4950
+121 , 4954 , 376 , 31 , 1 , 1 , 4950
+121 , 4955 , 376 , 42 , 1 , 1 , 4950
+121 , 4956 , 376 , 52 , 1 , 1 , 4950
+121 , 4957 , 376 , 32 , 1 , 1 , 4950
+121 , 4958 , 376 , 32 , 1 , 1 , 4950
+121 , 4959 , 376 , 32 , 1 , 1 , 4950
+121 , 4960 , 372 , 22 , 1 , 1 , 4950
+121 , 4961 , 372 , 54 , 1 , 1 , 4950
+121 , 4962 , 372 , 22 , 1 , 1 , 4950
+121 , 4963 , 372 , 11 , 1 , 1 , 4950
+121 , 4964 , 372 , 54 , 1 , 1 , 4950
+121 , 4965 , 372 , 33 , 1 , 1 , 4950
+121 , 4966 , 372 , 11 , 1 , 1 , 4950
+121 , 4967 , 372 , 43 , 1 , 1 , 4950
+121 , 4968 , 372 , 22 , 1 , 1 , 4950
+121 , 4969 , 372 , 11 , 1 , 1 , 4950
+121 , 4970 , 446 , 0 , 1 , 1 , 4951 4954 4963 4967 4965 4955 4959 4962 4953 4964 4960 4961 4952 4957 4958 4956 4966 4968 4969
+122 , 4971 , 8 , 21 , 1 , 1 ,
+122 , 4972 , 244 , 186 , 1 , 1 , 4971
+122 , 4973 , 244 , 197 , 1 , 1 , 4971
+122 , 4974 , 241 , 187 , 1 , 1 , 4971
+122 , 4975 , 241 , 187 , 1 , 1 , 4971
+122 , 4976 , 241 , 209 , 1 , 1 , 4971
+122 , 4977 , 241 , 198 , 1 , 1 , 4971
+122 , 4978 , 247 , 195 , 1 , 1 , 4971
+122 , 4979 , 241 , 176 , 1 , 1 , 4971
+122 , 4980 , 241 , 197 , 1 , 1 , 4971
+122 , 4981 , 240 , 185 , 1 , 1 , 4971
+122 , 4982 , 233 , 187 , 1 , 1 , 4971
+122 , 4983 , 233 , 197 , 1 , 1 , 4971
+122 , 4984 , 232 , 185 , 1 , 1 , 4971
+122 , 4985 , 231 , 219 , 1 , 1 , 4971
+122 , 4986 , 231 , 198 , 1 , 1 , 4971
+122 , 4987 , 230 , 186 , 1 , 1 , 4971
+122 , 4988 , 230 , 188 , 1 , 1 , 4971
+122 , 4989 , 222 , 218 , 1 , 1 , 4971
+122 , 4990 , 54 , 187 , 1 , 1 , 4971
+122 , 4991 , 473 , 0 , 1 , 1 , 4983 4978 4972 4975 4981 4984 4979 4985 4986 4982 4977 4987 4989 4980 4990 4974 4973 4976 4988
+122 , 4992 , 503 , 31 , 1 , 1 , 4991
+122 , 4993 , 502 , 31 , 1 , 1 , 4991
+122 , 4994 , 502 , 41 , 1 , 1 , 4991
+122 , 4995 , 502 , 41 , 1 , 1 , 4991
+122 , 4996 , 502 , 41 , 1 , 1 , 4991
+122 , 4997 , 502 , 21 , 1 , 1 , 4991
+122 , 4998 , 502 , 41 , 1 , 1 , 4991
+122 , 4999 , 502 , 41 , 1 , 1 , 4991
+122 , 5000 , 499 , 41 , 1 , 1 , 4991
+122 , 5001 , 499 , 41 , 1 , 1 , 4991
+122 , 5002 , 499 , 41 , 1 , 1 , 4991
+122 , 5003 , 499 , 21 , 1 , 1 , 4991
+122 , 5004 , 499 , 21 , 1 , 1 , 4991
+122 , 5005 , 499 , 41 , 1 , 1 , 4991
+122 , 5006 , 499 , 41 , 1 , 1 , 4991
+122 , 5007 , 499 , 41 , 1 , 1 , 4991
+122 , 5008 , 499 , 21 , 1 , 1 , 4991
+122 , 5009 , 499 , 41 , 1 , 1 , 4991
+122 , 5010 , 496 , 21 , 1 , 1 , 4991
+122 , 5011 , 559 , 0 , 1 , 1 , 4996 5000 5002 5007 5005 4997 5008 5004 5001 4998 5003 4995 4993 4994 4999 4992 5009 5006 5010
+123 , 5012 , 4 , 11 , 1 , 1 ,
+123 , 5013 , 44 , 186 , 1 , 1 , 5012
+123 , 5014 , 43 , 196 , 1 , 1 , 5012
+123 , 5015 , 43 , 206 , 1 , 1 , 5012
+123 , 5016 , 43 , 196 , 1 , 1 , 5012
+123 , 5017 , 43 , 194 , 1 , 1 , 5012
+123 , 5018 , 43 , 195 , 1 , 1 , 5012
+123 , 5019 , 41 , 205 , 1 , 1 , 5012
+123 , 5020 , 41 , 205 , 1 , 1 , 5012
+123 , 5021 , 41 , 205 , 1 , 1 , 5012
+123 , 5022 , 41 , 205 , 1 , 1 , 5012
+123 , 5023 , 40 , 205 , 1 , 1 , 5012
+123 , 5024 , 40 , 185 , 1 , 1 , 5012
+123 , 5025 , 40 , 339 , 1 , 1 , 5012
+123 , 5026 , 40 , 235 , 1 , 1 , 5012
+123 , 5027 , 40 , 194 , 1 , 1 , 5012
+123 , 5028 , 39 , 205 , 1 , 1 , 5012
+123 , 5029 , 37 , 205 , 1 , 1 , 5012
+123 , 5030 , 37 , 225 , 1 , 1 , 5012
+123 , 5031 , 37 , 215 , 1 , 1 , 5012
+123 , 5032 , 428 , 11 , 1 , 1 , 5019 5026 5015 5031 5027 5013 5028 5021 5014 5016 5025 5030 5024 5023 5018 5029 5017 5020 5022
+123 , 5033 , 459 , 31 , 1 , 1 , 5032
+123 , 5034 , 459 , 31 , 1 , 1 , 5032
+123 , 5035 , 455 , 31 , 1 , 1 , 5032
+123 , 5036 , 455 , 41 , 1 , 1 , 5032
+123 , 5037 , 455 , 31 , 1 , 1 , 5032
+123 , 5038 , 455 , 31 , 1 , 1 , 5032
+123 , 5039 , 455 , 31 , 1 , 1 , 5032
+123 , 5040 , 455 , 31 , 1 , 1 , 5032
+123 , 5041 , 455 , 31 , 1 , 1 , 5032
+123 , 5042 , 452 , 31 , 1 , 1 , 5032
+123 , 5043 , 452 , 21 , 1 , 1 , 5032
+123 , 5044 , 452 , 21 , 1 , 1 , 5032
+123 , 5045 , 452 , 31 , 1 , 1 , 5032
+123 , 5046 , 452 , 21 , 1 , 1 , 5032
+123 , 5047 , 452 , 42 , 1 , 1 , 5032
+123 , 5048 , 452 , 32 , 1 , 1 , 5032
+123 , 5049 , 452 , 32 , 1 , 1 , 5032
+123 , 5050 , 452 , 32 , 1 , 1 , 5032
+123 , 5051 , 452 , 31 , 1 , 1 , 5032
+123 , 5052 , 513 , 10 , 1 , 1 , 5048 5033 5049 5047 5046 5044 5039 5041 5037 5034 5036 5035 5051 5040 5042 5050 5038 5043 5045
+124 , 5053 , 5 , 11 , 1 , 1 ,
+124 , 5054 , 50 , 187 , 1 , 1 , 5053
+124 , 5055 , 50 , 197 , 1 , 1 , 5053
+124 , 5056 , 50 , 176 , 1 , 1 , 5053
+124 , 5057 , 50 , 187 , 1 , 1 , 5053
+124 , 5058 , 50 , 196 , 1 , 1 , 5053
+124 , 5059 , 50 , 230 , 1 , 1 , 5053
+124 , 5060 , 50 , 187 , 1 , 1 , 5053
+124 , 5061 , 50 , 197 , 1 , 1 , 5053
+124 , 5062 , 47 , 196 , 1 , 1 , 5053
+124 , 5063 , 47 , 186 , 1 , 1 , 5053
+124 , 5064 , 47 , 206 , 1 , 1 , 5053
+124 , 5065 , 47 , 206 , 1 , 1 , 5053
+124 , 5066 , 47 , 227 , 1 , 1 , 5053
+124 , 5067 , 47 , 217 , 1 , 1 , 5053
+124 , 5068 , 47 , 207 , 1 , 1 , 5053
+124 , 5069 , 47 , 186 , 1 , 1 , 5053
+124 , 5070 , 47 , 196 , 1 , 1 , 5053
+124 , 5071 , 47 , 215 , 1 , 1 , 5053
+124 , 5072 , 42 , 207 , 1 , 1 , 5053
+124 , 5073 , 470 , 0 , 1 , 1 , 5064 5072 5065 5055 5060 5063 5071 5054 5066 5057 5059 5069 5056 5062 5058 5067 5061 5070 5068
+124 , 5074 , 492 , 21 , 1 , 1 , 5073
+124 , 5075 , 492 , 21 , 1 , 1 , 5073
+124 , 5076 , 491 , 21 , 1 , 1 , 5073
+124 , 5077 , 491 , 31 , 1 , 1 , 5073
+124 , 5078 , 491 , 21 , 1 , 1 , 5073
+124 , 5079 , 491 , 21 , 1 , 1 , 5073
+124 , 5080 , 491 , 21 , 1 , 1 , 5073
+124 , 5081 , 491 , 21 , 1 , 1 , 5073
+124 , 5082 , 491 , 21 , 1 , 1 , 5073
+124 , 5083 , 487 , 21 , 1 , 1 , 5073
+124 , 5084 , 487 , 21 , 1 , 1 , 5073
+124 , 5085 , 487 , 21 , 1 , 1 , 5073
+124 , 5086 , 487 , 21 , 1 , 1 , 5073
+124 , 5087 , 487 , 11 , 1 , 1 , 5073
+124 , 5088 , 487 , 22 , 1 , 1 , 5073
+124 , 5089 , 487 , 22 , 1 , 1 , 5073
+124 , 5090 , 487 , 11 , 1 , 1 , 5073
+124 , 5091 , 487 , 21 , 1 , 1 , 5073
+124 , 5092 , 487 , 11 , 1 , 1 , 5073
+124 , 5093 , 538 , 0 , 1 , 1 , 5081 5090 5089 5083 5087 5077 5079 5080 5078 5085 5076 5086 5074 5084 5082 5092 5088 5075 5091
+125 , 5510 , 7 , 41 , 1 , 1 ,
+125 , 5511 , 7 , 41 , 1 , 1 ,
+125 , 5512 , 7 , 41 , 1 , 1 ,
+125 , 5513 , 7 , 41 , 1 , 1 ,
+125 , 5514 , 7 , 52 , 1 , 1 ,
+125 , 5515 , 7 , 52 , 1 , 1 ,
+125 , 5516 , 5 , 52 , 1 , 1 ,
+125 , 5517 , 5 , 41 , 1 , 1 ,
+125 , 5518 , 5 , 41 , 1 , 1 ,
+125 , 5519 , 5 , 41 , 1 , 1 ,
+125 , 5520 , 5 , 41 , 1 , 1 ,
+125 , 5521 , 5 , 41 , 1 , 1 ,
+125 , 5522 , 5 , 41 , 1 , 1 ,
+125 , 5523 , 5 , 41 , 1 , 1 ,
+125 , 5524 , 5 , 41 , 1 , 1 ,
+125 , 5525 , 5 , 41 , 1 , 1 ,
+125 , 5526 , 71 , 11 , 1 , 1 , 5521 5522 5517 5524 5523 5525 5511 5518 5512 5516 5519 5510 5520 5514 5515 5513
+126 , 5572 , 3 , 82 , 1 , 1 ,
+126 , 5573 , 3 , 82 , 1 , 1 ,
+126 , 5574 , 3 , 92 , 1 , 1 ,
+126 , 5575 , 3 , 82 , 1 , 1 ,
+126 , 5576 , 3 , 82 , 1 , 1 ,
+126 , 5577 , 3 , 82 , 1 , 1 ,
+126 , 5578 , 3 , 92 , 1 , 1 ,
+126 , 5579 , 3 , 82 , 1 , 1 ,
+126 , 5580 , 109 , 11 , 1 , 1 , 5572 5578 5574 5576 5575 5579 5573 5577
+127 , 5617 , 3 , 72 , 1 , 1 ,
+127 , 5618 , 3 , 92 , 1 , 1 ,
+127 , 5619 , 3 , 92 , 1 , 1 ,
+127 , 5620 , 3 , 82 , 1 , 1 ,
+127 , 5621 , 3 , 82 , 1 , 1 ,
+127 , 5622 , 3 , 82 , 1 , 1 ,
+127 , 5623 , 3 , 92 , 1 , 1 ,
+127 , 5624 , 3 , 72 , 1 , 1 ,
+127 , 5625 , 108 , 11 , 1 , 1 , 5617 5623 5622 5619 5621 5624 5620 5618
+128 , 5626 , 3 , 82 , 1 , 1 ,
+128 , 5627 , 3 , 82 , 1 , 1 ,
+128 , 5628 , 3 , 92 , 1 , 1 ,
+128 , 5629 , 3 , 92 , 1 , 1 ,
+128 , 5630 , 3 , 72 , 1 , 1 ,
+128 , 5631 , 3 , 72 , 1 , 1 ,
+128 , 5632 , 3 , 82 , 1 , 1 ,
+128 , 5633 , 3 , 82 , 1 , 1 ,
+128 , 5634 , 108 , 11 , 1 , 1 , 5631 5633 5628 5626 5630 5629 5627 5632
+129 , 5635 , 3 , 82 , 1 , 1 ,
+129 , 5636 , 3 , 82 , 1 , 1 ,
+129 , 5637 , 3 , 92 , 1 , 1 ,
+129 , 5638 , 3 , 92 , 1 , 1 ,
+129 , 5639 , 3 , 82 , 1 , 1 ,
+129 , 5640 , 3 , 82 , 1 , 1 ,
+129 , 5641 , 3 , 82 , 1 , 1 ,
+129 , 5642 , 3 , 82 , 1 , 1 ,
+129 , 5643 , 108 , 21 , 1 , 1 , 5636 5638 5641 5640 5635 5637 5642 5639
+130 , 5644 , 4 , 72 , 1 , 1 ,
+130 , 5645 , 4 , 82 , 1 , 1 ,
+130 , 5646 , 4 , 92 , 1 , 1 ,
+130 , 5647 , 4 , 92 , 1 , 1 ,
+130 , 5648 , 4 , 82 , 1 , 1 ,
+130 , 5649 , 4 , 82 , 1 , 1 ,
+130 , 5650 , 4 , 82 , 1 , 1 ,
+130 , 5651 , 4 , 82 , 1 , 1 ,
+130 , 5652 , 109 , 11 , 1 , 1 , 5647 5644 5651 5650 5649 5648 5646 5645
+131 , 5653 , 2 , 72 , 1 , 1 ,
+131 , 5654 , 2 , 82 , 1 , 1 ,
+131 , 5655 , 2 , 92 , 1 , 1 ,
+131 , 5656 , 2 , 92 , 1 , 1 ,
+131 , 5657 , 2 , 82 , 1 , 1 ,
+131 , 5658 , 2 , 72 , 1 , 1 ,
+131 , 5659 , 2 , 82 , 1 , 1 ,
+131 , 5660 , 2 , 82 , 1 , 1 ,
+131 , 5661 , 107 , 11 , 1 , 1 , 5656 5653 5659 5655 5660 5658 5657 5654
+132 , 5671 , 2 , 72 , 1 , 1 ,
+132 , 5672 , 2 , 82 , 1 , 1 ,
+132 , 5673 , 2 , 92 , 1 , 1 ,
+132 , 5674 , 2 , 82 , 1 , 1 ,
+132 , 5675 , 2 , 82 , 1 , 1 ,
+132 , 5676 , 2 , 72 , 1 , 1 ,
+132 , 5677 , 2 , 82 , 1 , 1 ,
+132 , 5678 , 2 , 82 , 1 , 1 ,
+132 , 5679 , 107 , 11 , 1 , 1 , 5676 5673 5672 5678 5671 5677 5674 5675
+133 , 5680 , 1 , 72 , 1 , 1 ,
+133 , 5681 , 1 , 82 , 1 , 1 ,
+133 , 5682 , 1 , 92 , 1 , 1 ,
+133 , 5683 , 1 , 92 , 1 , 1 ,
+133 , 5684 , 1 , 82 , 1 , 1 ,
+133 , 5685 , 1 , 82 , 1 , 1 ,
+133 , 5686 , 1 , 82 , 1 , 1 ,
+133 , 5687 , 1 , 82 , 1 , 1 ,
+133 , 5688 , 107 , 11 , 1 , 1 , 5685 5686 5684 5681 5680 5682 5683 5687
+134 , 5689 , 2 , 72 , 1 , 1 ,
+134 , 5690 , 2 , 82 , 1 , 1 ,
+134 , 5691 , 2 , 92 , 1 , 1 ,
+134 , 5692 , 2 , 82 , 1 , 1 ,
+134 , 5693 , 2 , 72 , 1 , 1 ,
+134 , 5694 , 2 , 82 , 1 , 1 ,
+134 , 5695 , 2 , 82 , 1 , 1 ,
+134 , 5696 , 2 , 72 , 1 , 1 ,
+134 , 5697 , 108 , 11 , 1 , 1 , 5696 5690 5695 5689 5693 5692 5694 5691
+135 , 5698 , 7 , 41 , 1 , 1 ,
+135 , 5699 , 7 , 41 , 1 , 1 ,
+135 , 5700 , 7 , 41 , 1 , 1 ,
+135 , 5701 , 7 , 41 , 1 , 1 ,
+135 , 5702 , 7 , 52 , 1 , 1 ,
+135 , 5703 , 7 , 52 , 1 , 1 ,
+135 , 5704 , 5 , 52 , 1 , 1 ,
+135 , 5705 , 5 , 52 , 1 , 1 ,
+135 , 5706 , 5 , 41 , 1 , 1 ,
+135 , 5707 , 5 , 41 , 1 , 1 ,
+135 , 5708 , 5 , 41 , 1 , 1 ,
+135 , 5709 , 5 , 41 , 1 , 1 ,
+135 , 5710 , 5 , 52 , 1 , 1 ,
+135 , 5711 , 5 , 52 , 1 , 1 ,
+135 , 5712 , 5 , 41 , 1 , 1 ,
+135 , 5713 , 5 , 52 , 1 , 1 ,
+135 , 5714 , 71 , 11 , 1 , 1 , 5710 5704 5713 5701 5702 5698 5705 5707 5712 5706 5711 5699 5708 5703 5700 5709
+136 , 5715 , 3 , 72 , 1 , 1 ,
+136 , 5716 , 3 , 82 , 1 , 1 ,
+136 , 5717 , 3 , 92 , 1 , 1 ,
+136 , 5718 , 3 , 92 , 1 , 1 ,
+136 , 5719 , 3 , 82 , 1 , 1 ,
+136 , 5720 , 3 , 82 , 1 , 1 ,
+136 , 5721 , 3 , 92 , 1 , 1 ,
+136 , 5722 , 3 , 72 , 1 , 1 ,
+136 , 5723 , 108 , 11 , 1 , 1 , 5720 5719 5716 5718 5717 5721 5722 5715
+137 , 5724 , 3 , 72 , 1 , 1 ,
+137 , 5725 , 3 , 82 , 1 , 1 ,
+137 , 5726 , 3 , 92 , 1 , 1 ,
+137 , 5727 , 3 , 82 , 1 , 1 ,
+137 , 5728 , 3 , 82 , 1 , 1 ,
+137 , 5729 , 3 , 82 , 1 , 1 ,
+137 , 5730 , 3 , 82 , 1 , 1 ,
+137 , 5731 , 3 , 72 , 1 , 1 ,
+137 , 5732 , 108 , 11 , 1 , 1 , 5729 5730 5725 5728 5727 5724 5731 5726
+138 , 5733 , 2 , 72 , 1 , 1 ,
+138 , 5734 , 2 , 82 , 1 , 1 ,
+138 , 5735 , 2 , 92 , 1 , 1 ,
+138 , 5736 , 2 , 92 , 1 , 1 ,
+138 , 5737 , 2 , 72 , 1 , 1 ,
+138 , 5738 , 2 , 72 , 1 , 1 ,
+138 , 5739 , 2 , 92 , 1 , 1 ,
+138 , 5740 , 2 , 82 , 1 , 1 ,
+138 , 5741 , 107 , 11 , 1 , 1 , 5738 5736 5737 5733 5734 5739 5735 5740
+139 , 5742 , 1 , 72 , 1 , 1 ,
+139 , 5743 , 1 , 82 , 1 , 1 ,
+139 , 5744 , 1 , 92 , 1 , 1 ,
+139 , 5745 , 1 , 82 , 1 , 1 ,
+139 , 5746 , 1 , 82 , 1 , 1 ,
+139 , 5747 , 1 , 82 , 1 , 1 ,
+139 , 5748 , 1 , 82 , 1 , 1 ,
+139 , 5749 , 1 , 82 , 1 , 1 ,
+139 , 5750 , 106 , 21 , 1 , 1 , 5749 5743 5747 5744 5745 5748 5742 5746
+140 , 5751 , 3 , 72 , 1 , 1 ,
+140 , 5752 , 3 , 82 , 1 , 1 ,
+140 , 5753 , 3 , 92 , 1 , 1 ,
+140 , 5754 , 3 , 82 , 1 , 1 ,
+140 , 5755 , 3 , 82 , 1 , 1 ,
+140 , 5756 , 3 , 82 , 1 , 1 ,
+140 , 5757 , 3 , 92 , 1 , 1 ,
+140 , 5758 , 3 , 72 , 1 , 1 ,
+140 , 5759 , 108 , 11 , 1 , 1 , 5756 5751 5753 5754 5758 5755 5757 5752
+141 , 5760 , 3 , 82 , 1 , 1 ,
+141 , 5761 , 3 , 92 , 1 , 1 ,
+141 , 5762 , 3 , 92 , 1 , 1 ,
+141 , 5763 , 3 , 82 , 1 , 1 ,
+141 , 5764 , 3 , 82 , 1 , 1 ,
+141 , 5765 , 3 , 82 , 1 , 1 ,
+141 , 5766 , 3 , 92 , 1 , 1 ,
+141 , 5767 , 3 , 82 , 1 , 1 ,
+141 , 5768 , 108 , 11 , 1 , 1 , 5767 5762 5763 5761 5760 5766 5765 5764
+142 , 5769 , 2 , 72 , 1 , 1 ,
+142 , 5770 , 2 , 82 , 1 , 1 ,
+142 , 5771 , 2 , 92 , 1 , 1 ,
+142 , 5772 , 2 , 82 , 1 , 1 ,
+142 , 5773 , 2 , 82 , 1 , 1 ,
+142 , 5774 , 2 , 82 , 1 , 1 ,
+142 , 5775 , 2 , 82 , 1 , 1 ,
+142 , 5776 , 2 , 72 , 1 , 1 ,
+142 , 5777 , 106 , 11 , 1 , 1 , 5776 5770 5775 5774 5773 5772 5769 5771
+143 , 5778 , 2 , 72 , 1 , 1 ,
+143 , 5779 , 2 , 82 , 1 , 1 ,
+143 , 5780 , 2 , 92 , 1 , 1 ,
+143 , 5781 , 2 , 82 , 1 , 1 ,
+143 , 5782 , 2 , 82 , 1 , 1 ,
+143 , 5783 , 2 , 82 , 1 , 1 ,
+143 , 5784 , 2 , 82 , 1 , 1 ,
+143 , 5785 , 2 , 72 , 1 , 1 ,
+143 , 5786 , 107 , 11 , 1 , 1 , 5784 5779 5785 5781 5780 5783 5782 5778
+144 , 5787 , 3 , 72 , 1 , 1 ,
+144 , 5788 , 3 , 82 , 1 , 1 ,
+144 , 5789 , 3 , 92 , 1 , 1 ,
+144 , 5790 , 3 , 82 , 1 , 1 ,
+144 , 5791 , 3 , 82 , 1 , 1 ,
+144 , 5792 , 3 , 82 , 1 , 1 ,
+144 , 5793 , 3 , 92 , 1 , 1 ,
+144 , 5794 , 3 , 82 , 1 , 1 ,
+144 , 5795 , 108 , 11 , 1 , 1 , 5788 5791 5787 5792 5790 5789 5794 5793
+145 , 5796 , 2 , 72 , 1 , 1 ,
+145 , 5797 , 2 , 72 , 1 , 1 ,
+145 , 5798 , 2 , 92 , 1 , 1 ,
+145 , 5799 , 2 , 92 , 1 , 1 ,
+145 , 5800 , 2 , 72 , 1 , 1 ,
+145 , 5801 , 2 , 82 , 1 , 1 ,
+145 , 5802 , 2 , 82 , 1 , 1 ,
+145 , 5803 , 2 , 72 , 1 , 1 ,
+145 , 5804 , 108 , 11 , 1 , 1 , 5799 5803 5798 5797 5802 5800 5796 5801
+146 , 5805 , 2 , 72 , 1 , 1 ,
+146 , 5806 , 2 , 82 , 1 , 1 ,
+146 , 5807 , 2 , 92 , 1 , 1 ,
+146 , 5808 , 2 , 82 , 1 , 1 ,
+146 , 5809 , 2 , 72 , 1 , 1 ,
+146 , 5810 , 2 , 72 , 1 , 1 ,
+146 , 5811 , 2 , 82 , 1 , 1 ,
+146 , 5812 , 2 , 82 , 1 , 1 ,
+146 , 5813 , 106 , 11 , 1 , 1 , 5811 5805 5809 5808 5806 5812 5810 5807
+147 , 5814 , 3 , 72 , 1 , 1 ,
+147 , 5815 , 3 , 82 , 1 , 1 ,
+147 , 5816 , 3 , 92 , 1 , 1 ,
+147 , 5817 , 3 , 92 , 1 , 1 ,
+147 , 5818 , 3 , 82 , 1 , 1 ,
+147 , 5819 , 3 , 82 , 1 , 1 ,
+147 , 5820 , 3 , 82 , 1 , 1 ,
+147 , 5821 , 3 , 82 , 1 , 1 ,
+147 , 5822 , 108 , 11 , 1 , 1 , 5821 5814 5819 5818 5816 5820 5817 5815
+148 , 5823 , 2 , 72 , 1 , 1 ,
+148 , 5824 , 2 , 82 , 1 , 1 ,
+148 , 5825 , 2 , 92 , 1 , 1 ,
+148 , 5826 , 2 , 92 , 1 , 1 ,
+148 , 5827 , 2 , 72 , 1 , 1 ,
+148 , 5828 , 2 , 82 , 1 , 1 ,
+148 , 5829 , 2 , 72 , 1 , 1 ,
+148 , 5830 , 2 , 82 , 1 , 1 ,
+148 , 5831 , 108 , 11 , 1 , 1 , 5827 5829 5825 5824 5823 5828 5826 5830
+149 , 5888 , 8 , 11 , 1 , 1 ,
+149 , 5889 , 31 , 184 , 1 , 1 , 5888
+149 , 5890 , 30 , 184 , 1 , 1 , 5888
+149 , 5891 , 30 , 225 , 1 , 1 , 5888
+149 , 5892 , 30 , 185 , 1 , 1 , 5888
+149 , 5893 , 273 , 0 , 1 , 1 , 5890 5892 5889 5891
+149 , 5894 , 287 , 11 , 1 , 1 , 5893
+149 , 5895 , 287 , 11 , 1 , 1 , 5893
+149 , 5896 , 287 , 11 , 1 , 1 , 5893
+149 , 5897 , 287 , 11 , 1 , 1 , 5893
+149 , 5898 , 311 , 0 , 1 , 1 , 5896 5897 5894 5895
+150 , 5899 , 4 , 72 , 1 , 1 ,
+150 , 5900 , 4 , 82 , 1 , 1 ,
+150 , 5901 , 4 , 93 , 1 , 1 ,
+150 , 5902 , 4 , 82 , 1 , 1 ,
+150 , 5903 , 4 , 83 , 1 , 1 ,
+150 , 5904 , 4 , 83 , 1 , 1 ,
+150 , 5905 , 4 , 83 , 1 , 1 ,
+150 , 5906 , 4 , 82 , 1 , 1 ,
+150 , 5907 , 109 , 11 , 1 , 1 , 5903 5902 5901 5904 5906 5899 5905 5900
+151 , 5908 , 2 , 72 , 1 , 1 ,
+151 , 5909 , 2 , 82 , 1 , 1 ,
+151 , 5910 , 2 , 93 , 1 , 1 ,
+151 , 5911 , 2 , 82 , 1 , 1 ,
+151 , 5912 , 2 , 82 , 1 , 1 ,
+151 , 5913 , 2 , 82 , 1 , 1 ,
+151 , 5914 , 2 , 93 , 1 , 1 ,
+151 , 5915 , 2 , 72 , 1 , 1 ,
+151 , 5916 , 107 , 11 , 1 , 1 , 5909 5913 5911 5912 5910 5908 5914 5915
+152 , 5917 , 2 , 144 , 1 , 1 ,
+152 , 5918 , 2 , 154 , 1 , 1 ,
+152 , 5919 , 2 , 185 , 1 , 1 ,
+152 , 5920 , 2 , 165 , 1 , 1 ,
+152 , 5921 , 2 , 154 , 1 , 1 ,
+152 , 5922 , 2 , 154 , 1 , 1 ,
+152 , 5923 , 2 , 164 , 1 , 1 ,
+152 , 5924 , 2 , 154 , 1 , 1 ,
+152 , 5925 , 200 , 21 , 1 , 1 , 5924 5920 5918 5919 5921 5923 5917 5922
+153 , 5926 , 2 , 72 , 1 , 1 ,
+153 , 5927 , 2 , 83 , 1 , 1 ,
+153 , 5928 , 2 , 93 , 1 , 1 ,
+153 , 5929 , 2 , 83 , 1 , 1 ,
+153 , 5930 , 2 , 83 , 1 , 1 ,
+153 , 5931 , 2 , 83 , 1 , 1 ,
+153 , 5932 , 2 , 83 , 1 , 1 ,
+153 , 5933 , 2 , 72 , 1 , 1 ,
+153 , 5934 , 109 , 11 , 1 , 1 , 5928 5926 5931 5930 5932 5929 5927 5933
+154 , 5935 , 3 , 82 , 1 , 1 ,
+154 , 5936 , 3 , 82 , 1 , 1 ,
+154 , 5937 , 3 , 92 , 1 , 1 ,
+154 , 5938 , 3 , 82 , 1 , 1 ,
+154 , 5939 , 3 , 83 , 1 , 1 ,
+154 , 5940 , 3 , 82 , 1 , 1 ,
+154 , 5941 , 3 , 93 , 1 , 1 ,
+154 , 5942 , 3 , 82 , 1 , 1 ,
+154 , 5943 , 109 , 21 , 1 , 1 , 5935 5938 5937 5936 5941 5942 5940 5939
+155 , 5944 , 3 , 72 , 1 , 1 ,
+155 , 5945 , 3 , 83 , 1 , 1 ,
+155 , 5946 , 3 , 82 , 1 , 1 ,
+155 , 5947 , 3 , 82 , 1 , 1 ,
+155 , 5948 , 3 , 82 , 1 , 1 ,
+155 , 5949 , 3 , 82 , 1 , 1 ,
+155 , 5950 , 3 , 82 , 1 , 1 ,
+155 , 5951 , 3 , 72 , 1 , 1 ,
+155 , 5952 , 99 , 11 , 1 , 1 , 5950 5945 5948 5947 5949 5946 5951 5944
+156 , 5953 , 2 , 72 , 1 , 1 ,
+156 , 5954 , 2 , 83 , 1 , 1 ,
+156 , 5955 , 2 , 94 , 1 , 1 ,
+156 , 5956 , 2 , 83 , 1 , 1 ,
+156 , 5957 , 2 , 82 , 1 , 1 ,
+156 , 5958 , 2 , 82 , 1 , 1 ,
+156 , 5959 , 2 , 82 , 1 , 1 ,
+156 , 5960 , 2 , 82 , 1 , 1 ,
+156 , 5961 , 109 , 21 , 1 , 1 , 5954 5959 5958 5953 5960 5957 5956 5955
+157 , 5962 , 2 , 72 , 1 , 1 ,
+157 , 5963 , 2 , 82 , 1 , 1 ,
+157 , 5964 , 2 , 93 , 1 , 1 ,
+157 , 5965 , 2 , 93 , 1 , 1 ,
+157 , 5966 , 2 , 72 , 1 , 1 ,
+157 , 5967 , 2 , 82 , 1 , 1 ,
+157 , 5968 , 2 , 82 , 1 , 1 ,
+157 , 5969 , 2 , 82 , 1 , 1 ,
+157 , 5970 , 108 , 11 , 1 , 1 , 5962 5967 5966 5963 5965 5969 5964 5968
+158 , 5971 , 2 , 72 , 1 , 1 ,
+158 , 5972 , 2 , 72 , 1 , 1 ,
+158 , 5973 , 2 , 93 , 1 , 1 ,
+158 , 5974 , 2 , 82 , 1 , 1 ,
+158 , 5975 , 2 , 82 , 1 , 1 ,
+158 , 5976 , 2 , 82 , 1 , 1 ,
+158 , 5977 , 2 , 82 , 1 , 1 ,
+158 , 5978 , 2 , 72 , 1 , 1 ,
+158 , 5979 , 107 , 21 , 1 , 1 , 5978 5977 5975 5974 5971 5976 5972 5973
+159 , 5980 , 3 , 72 , 1 , 1 ,
+159 , 5981 , 3 , 72 , 1 , 1 ,
+159 , 5982 , 3 , 93 , 1 , 1 ,
+159 , 5983 , 3 , 83 , 1 , 1 ,
+159 , 5984 , 3 , 82 , 1 , 1 ,
+159 , 5985 , 3 , 72 , 1 , 1 ,
+159 , 5986 , 3 , 82 , 1 , 1 ,
+159 , 5987 , 3 , 82 , 1 , 1 ,
+159 , 5988 , 109 , 11 , 1 , 1 , 5984 5987 5986 5981 5980 5985 5982 5983
+160 , 6037 , 19 , 184 , 1 , 1 ,
+160 , 6038 , 19 , 195 , 1 , 1 ,
+160 , 6039 , 19 , 174 , 1 , 1 ,
+160 , 6040 , 19 , 164 , 1 , 1 ,
+160 , 6041 , 19 , 174 , 1 , 1 ,
+160 , 6042 , 19 , 174 , 1 , 1 ,
+160 , 6043 , 19 , 194 , 1 , 1 ,
+160 , 6044 , 19 , 194 , 1 , 1 ,
+160 , 6045 , 19 , 194 , 1 , 1 ,
+160 , 6046 , 18 , 194 , 1 , 1 ,
+160 , 6047 , 16 , 205 , 1 , 1 ,
+160 , 6048 , 16 , 215 , 1 , 1 ,
+160 , 6049 , 16 , 205 , 1 , 1 ,
+160 , 6050 , 15 , 205 , 1 , 1 ,
+160 , 6051 , 15 , 225 , 1 , 1 ,
+160 , 6052 , 15 , 225 , 1 , 1 ,
+160 , 6053 , 15 , 225 , 1 , 1 ,
+160 , 6054 , 15 , 225 , 1 , 1 ,
+160 , 6055 , 15 , 225 , 1 , 1 ,
+160 , 6056 , 15 , 235 , 1 , 1 ,
+160 , 6057 , 12 , 256 , 1 , 1 ,
+160 , 6058 , 12 , 245 , 1 , 1 ,
+160 , 6059 , 12 , 225 , 1 , 1 ,
+160 , 6060 , 12 , 245 , 1 , 1 ,
+160 , 6061 , 12 , 225 , 1 , 1 ,
+160 , 6062 , 12 , 225 , 1 , 1 ,
+160 , 6063 , 12 , 205 , 1 , 1 ,
+160 , 6064 , 12 , 205 , 1 , 1 ,
+160 , 6065 , 11 , 215 , 1 , 1 ,
+160 , 6066 , 11 , 205 , 1 , 1 ,
+160 , 6067 , 9 , 184 , 1 , 1 ,
+160 , 6068 , 9 , 194 , 1 , 1 ,
+160 , 6069 , 9 , 205 , 1 , 1 ,
+160 , 6070 , 9 , 225 , 1 , 1 ,
+160 , 6071 , 9 , 205 , 1 , 1 ,
+160 , 6072 , 9 , 205 , 1 , 1 ,
+160 , 6073 , 9 , 205 , 1 , 1 ,
+160 , 6074 , 9 , 194 , 1 , 1 ,
+160 , 6075 , 8 , 205 , 1 , 1 ,
+160 , 6076 , 8 , 225 , 1 , 1 ,
+160 , 6077 , 7 , 215 , 1 , 1 ,
+160 , 6078 , 6 , 225 , 1 , 1 ,
+160 , 6079 , 6 , 215 , 1 , 1 ,
+160 , 6080 , 6 , 225 , 1 , 1 ,
+160 , 6081 , 6 , 195 , 1 , 1 ,
+160 , 6082 , 6 , 205 , 1 , 1 ,
+160 , 6083 , 6 , 215 , 1 , 1 ,
+160 , 6084 , 6 , 215 , 1 , 1 ,
+160 , 6085 , 6 , 225 , 1 , 1 ,
+160 , 6086 , 6 , 225 , 1 , 1 ,
+160 , 6087 , 4 , 215 , 1 , 1 ,
+160 , 6088 , 4 , 205 , 1 , 1 ,
+160 , 6089 , 4 , 194 , 1 , 1 ,
+160 , 6090 , 4 , 194 , 1 , 1 ,
+160 , 6091 , 4 , 194 , 1 , 1 ,
+160 , 6092 , 4 , 205 , 1 , 1 ,
+160 , 6093 , 4 , 205 , 1 , 1 ,
+160 , 6094 , 4 , 205 , 1 , 1 ,
+160 , 6095 , 4 , 205 , 1 , 1 ,
+160 , 6096 , 4 , 194 , 1 , 1 ,
+160 , 6097 , 282 , 174 , 1 , 1 , 6044 6056 6071 6076 6090 6042 6050 6095 6093 6038 6045 6088 6037 6089 6064 6072 6074 6081 6057 6062 6058 6084 6048 6043 6069 6053 6047 6087 6046 6079 6085 6059 6070 6091 6060 6080 6075 6052 6041 6092 6077 6040 6082 6063 6083 6054 6068 6067 6065 6096 6086 6094 6061 6073 6039 6055 6051 6078 6049 6066
+161 , 6098 , 22 , 184 , 1 , 1 ,
+161 , 6099 , 21 , 184 , 1 , 1 ,
+161 , 6100 , 21 , 174 , 1 , 1 ,
+161 , 6101 , 21 , 174 , 1 , 1 ,
+161 , 6102 , 21 , 174 , 1 , 1 ,
+161 , 6103 , 21 , 184 , 1 , 1 ,
+161 , 6104 , 20 , 194 , 1 , 1 ,
+161 , 6105 , 20 , 194 , 1 , 1 ,
+161 , 6106 , 20 , 184 , 1 , 1 ,
+161 , 6107 , 20 , 195 , 1 , 1 ,
+161 , 6108 , 18 , 205 , 1 , 1 ,
+161 , 6109 , 17 , 215 , 1 , 1 ,
+161 , 6110 , 17 , 225 , 1 , 1 ,
+161 , 6111 , 17 , 225 , 1 , 1 ,
+161 , 6112 , 17 , 225 , 1 , 1 ,
+161 , 6113 , 17 , 225 , 1 , 1 ,
+161 , 6114 , 17 , 225 , 1 , 1 ,
+161 , 6115 , 16 , 225 , 1 , 1 ,
+161 , 6116 , 16 , 225 , 1 , 1 ,
+161 , 6117 , 16 , 235 , 1 , 1 ,
+161 , 6118 , 14 , 256 , 1 , 1 ,
+161 , 6119 , 13 , 235 , 1 , 1 ,
+161 , 6120 , 13 , 246 , 1 , 1 ,
+161 , 6121 , 13 , 225 , 1 , 1 ,
+161 , 6122 , 13 , 225 , 1 , 1 ,
+161 , 6123 , 13 , 215 , 1 , 1 ,
+161 , 6124 , 13 , 184 , 1 , 1 ,
+161 , 6125 , 13 , 184 , 1 , 1 ,
+161 , 6126 , 13 , 205 , 1 , 1 ,
+161 , 6127 , 12 , 205 , 1 , 1 ,
+161 , 6128 , 10 , 195 , 1 , 1 ,
+161 , 6129 , 10 , 195 , 1 , 1 ,
+161 , 6130 , 10 , 195 , 1 , 1 ,
+161 , 6131 , 10 , 205 , 1 , 1 ,
+161 , 6132 , 10 , 216 , 1 , 1 ,
+161 , 6133 , 10 , 205 , 1 , 1 ,
+161 , 6134 , 10 , 205 , 1 , 1 ,
+161 , 6135 , 10 , 174 , 1 , 1 ,
+161 , 6136 , 9 , 184 , 1 , 1 ,
+161 , 6137 , 9 , 215 , 1 , 1 ,
+161 , 6138 , 7 , 225 , 1 , 1 ,
+161 , 6139 , 7 , 215 , 1 , 1 ,
+161 , 6140 , 7 , 205 , 1 , 1 ,
+161 , 6141 , 7 , 194 , 1 , 1 ,
+161 , 6142 , 7 , 215 , 1 , 1 ,
+161 , 6143 , 7 , 205 , 1 , 1 ,
+161 , 6144 , 7 , 205 , 1 , 1 ,
+161 , 6145 , 7 , 205 , 1 , 1 ,
+161 , 6146 , 7 , 215 , 1 , 1 ,
+161 , 6147 , 7 , 225 , 1 , 1 ,
+161 , 6148 , 4 , 215 , 1 , 1 ,
+161 , 6149 , 4 , 184 , 1 , 1 ,
+161 , 6150 , 4 , 195 , 1 , 1 ,
+161 , 6151 , 4 , 174 , 1 , 1 ,
+161 , 6152 , 4 , 195 , 1 , 1 ,
+161 , 6153 , 4 , 195 , 1 , 1 ,
+161 , 6154 , 4 , 195 , 1 , 1 ,
+161 , 6155 , 4 , 194 , 1 , 1 ,
+161 , 6156 , 4 , 205 , 1 , 1 ,
+161 , 6157 , 4 , 194 , 1 , 1 ,
+161 , 6158 , 284 , 174 , 1 , 1 , 6102 6101 6110 6137 6147 6123 6099 6140 6113 6108 6100 6156 6155 6153 6122 6138 6131 6105 6133 6118 6120 6142 6145 6132 6154 6149 6104 6136 6146 6126 6151 6127 6141 6106 6111 6107 6116 6129 6139 6121 6125 6143 6114 6117 6130 6148 6103 6150 6128 6124 6112 6144 6119 6157 6109 6135 6098 6134 6115 6152
+162 , 6159 , 2 , 41 , 1 , 1 ,
+162 , 6160 , 2 , 41 , 1 , 1 ,
+162 , 6161 , 2 , 52 , 1 , 1 ,
+162 , 6162 , 65 , 0 , 1 , 1 , 6160 6159 6161
+163 , 6163 , 1 , 41 , 1 , 1 ,
+163 , 6164 , 1 , 52 , 1 , 1 ,
+163 , 6165 , 1 , 41 , 1 , 1 ,
+163 , 6166 , 64 , 0 , 1 , 1 , 6163 6164 6165
+164 , 6167 , 2 , 41 , 1 , 1 ,
+164 , 6168 , 2 , 52 , 1 , 1 ,
+164 , 6169 , 2 , 41 , 1 , 1 ,
+164 , 6170 , 65 , 0 , 1 , 1 , 6167 6169 6168
+165 , 6171 , 1 , 41 , 1 , 1 ,
+165 , 6172 , 1 , 41 , 1 , 1 ,
+165 , 6173 , 1 , 41 , 1 , 1 ,
+165 , 6174 , 54 , 0 , 1 , 1 , 6172 6173 6171
+166 , 6175 , 2 , 52 , 1 , 1 ,
+166 , 6176 , 2 , 52 , 1 , 1 ,
+166 , 6177 , 2 , 52 , 1 , 1 ,
+166 , 6178 , 65 , 0 , 1 , 1 , 6176 6177 6175
+167 , 6179 , 4 , 41 , 1 , 1 ,
+167 , 6180 , 4 , 41 , 1 , 1 ,
+167 , 6181 , 4 , 41 , 1 , 1 ,
+167 , 6182 , 57 , 0 , 1 , 1 , 6180 6179 6181
+168 , 6183 , 5 , 41 , 1 , 1 ,
+168 , 6184 , 5 , 41 , 1 , 1 ,
+168 , 6185 , 5 , 52 , 1 , 1 ,
+168 , 6186 , 68 , 0 , 1 , 1 , 6185 6184 6183
+169 , 6187 , 5 , 41 , 1 , 1 ,
+169 , 6188 , 5 , 51 , 1 , 1 ,
+169 , 6189 , 5 , 52 , 1 , 1 ,
+169 , 6190 , 70 , 0 , 1 , 1 , 6187 6189 6188
+170 , 6191 , 8 , 41 , 1 , 1 ,
+170 , 6192 , 8 , 41 , 1 , 1 ,
+170 , 6193 , 8 , 41 , 1 , 1 ,
+170 , 6194 , 63 , 0 , 1 , 1 , 6191 6193 6192
+171 , 6195 , 7 , 41 , 1 , 1 ,
+171 , 6196 , 7 , 41 , 1 , 1 ,
+171 , 6197 , 7 , 41 , 1 , 1 ,
+171 , 6198 , 60 , 0 , 1 , 1 , 6197 6196 6195
+172 , 6199 , 9 , 41 , 1 , 1 ,
+172 , 6200 , 9 , 41 , 1 , 1 ,
+172 , 6201 , 9 , 42 , 1 , 1 ,
+172 , 6202 , 64 , 0 , 1 , 1 , 6200 6201 6199
+173 , 6203 , 12 , 41 , 1 , 1 ,
+173 , 6204 , 12 , 41 , 1 , 1 ,
+173 , 6205 , 12 , 41 , 1 , 1 ,
+173 , 6206 , 67 , 0 , 1 , 1 , 6205 6203 6204
+174 , 6207 , 18 , 41 , 1 , 1 ,
+174 , 6208 , 18 , 52 , 1 , 1 ,
+174 , 6209 , 18 , 41 , 1 , 1 ,
+174 , 6210 , 82 , 0 , 1 , 1 , 6209 6207 6208
+175 , 6211 , 15 , 41 , 1 , 1 ,
+175 , 6212 , 15 , 52 , 1 , 1 ,
+175 , 6213 , 15 , 52 , 1 , 1 ,
+175 , 6214 , 80 , 0 , 1 , 1 , 6212 6211 6213
+176 , 6215 , 28 , 41 , 1 , 1 ,
+176 , 6216 , 28 , 52 , 1 , 1 ,
+176 , 6217 , 28 , 51 , 1 , 1 ,
+176 , 6218 , 92 , 0 , 1 , 1 , 6217 6215 6216
+177 , 6219 , 19 , 42 , 1 , 1 ,
+177 , 6220 , 19 , 41 , 1 , 1 ,
+177 , 6221 , 19 , 41 , 1 , 1 ,
+177 , 6222 , 75 , 0 , 1 , 1 , 6221 6219 6220
+178 , 6223 , 21 , 41 , 1 , 1 ,
+178 , 6224 , 21 , 52 , 1 , 1 ,
+178 , 6225 , 21 , 41 , 1 , 1 ,
+178 , 6226 , 85 , 0 , 1 , 1 , 6225 6223 6224
+179 , 6227 , 26 , 41 , 1 , 1 ,
+179 , 6228 , 26 , 52 , 1 , 1 ,
+179 , 6229 , 26 , 52 , 1 , 1 ,
+179 , 6230 , 91 , 0 , 1 , 1 , 6227 6229 6228
+180 , 6231 , 30 , 52 , 1 , 1 ,
+180 , 6232 , 30 , 52 , 1 , 1 ,
+180 , 6233 , 30 , 52 , 1 , 1 ,
+180 , 6234 , 97 , 0 , 1 , 1 , 6233 6232 6231
+181 , 6235 , 29 , 52 , 1 , 1 ,
+181 , 6236 , 29 , 52 , 1 , 1 ,
+181 , 6237 , 29 , 52 , 1 , 1 ,
+181 , 6238 , 96 , 11 , 1 , 1 , 6235 6236 6237
+182 , 6239 , 35 , 42 , 1 , 1 ,
+182 , 6240 , 35 , 52 , 1 , 1 ,
+182 , 6241 , 35 , 52 , 1 , 1 ,
+182 , 6242 , 101 , 0 , 1 , 1 , 6239 6240 6241
+183 , 6243 , 30 , 41 , 1 , 1 ,
+183 , 6244 , 30 , 52 , 1 , 1 ,
+183 , 6245 , 30 , 52 , 1 , 1 ,
+183 , 6246 , 96 , 10 , 1 , 1 , 6244 6245 6243
+184 , 6247 , 34 , 42 , 1 , 1 ,
+184 , 6248 , 34 , 52 , 1 , 1 ,
+184 , 6249 , 34 , 52 , 1 , 1 ,
+184 , 6250 , 100 , 0 , 1 , 1 , 6248 6249 6247
+185 , 6251 , 2 , 41 , 1 , 1 ,
+185 , 6252 , 2 , 52 , 1 , 1 ,
+185 , 6253 , 2 , 41 , 1 , 1 ,
+185 , 6254 , 65 , 0 , 1 , 1 , 6251 6252 6253
+186 , 6255 , 3 , 41 , 1 , 1 ,
+186 , 6256 , 3 , 41 , 1 , 1 ,
+186 , 6257 , 3 , 41 , 1 , 1 ,
+186 , 6258 , 55 , 0 , 1 , 1 , 6255 6257 6256
+187 , 6259 , 2 , 41 , 1 , 1 ,
+187 , 6260 , 2 , 41 , 1 , 1 ,
+187 , 6261 , 2 , 52 , 1 , 1 ,
+187 , 6262 , 65 , 0 , 1 , 1 , 6259 6261 6260
+188 , 6263 , 3 , 41 , 1 , 1 ,
+188 , 6264 , 3 , 41 , 1 , 1 ,
+188 , 6265 , 3 , 41 , 1 , 1 ,
+188 , 6266 , 56 , 0 , 1 , 1 , 6264 6265 6263
+189 , 6267 , 3 , 41 , 1 , 1 ,
+189 , 6268 , 3 , 41 , 1 , 1 ,
+189 , 6269 , 3 , 41 , 1 , 1 ,
+189 , 6270 , 56 , 0 , 1 , 1 , 6267 6268 6269
+190 , 6271 , 2 , 41 , 1 , 1 ,
+190 , 6272 , 2 , 52 , 1 , 1 ,
+190 , 6273 , 2 , 52 , 1 , 1 ,
+190 , 6274 , 65 , 0 , 1 , 1 , 6271 6273 6272
+191 , 6275 , 1 , 31 , 1 , 1 ,
+191 , 6276 , 1 , 41 , 1 , 1 ,
+191 , 6277 , 1 , 41 , 1 , 1 ,
+191 , 6278 , 54 , 0 , 1 , 1 , 6277 6276 6275
+192 , 6279 , 1 , 41 , 1 , 1 ,
+192 , 6280 , 1 , 41 , 1 , 1 ,
+192 , 6281 , 1 , 52 , 1 , 1 ,
+192 , 6282 , 64 , 0 , 1 , 1 , 6280 6279 6281
+193 , 6283 , 4 , 41 , 1 , 1 ,
+193 , 6284 , 4 , 41 , 1 , 1 ,
+193 , 6285 , 4 , 41 , 1 , 1 ,
+193 , 6286 , 57 , 0 , 1 , 1 , 6283 6285 6284
+194 , 6287 , 1 , 143 , 1 , 1 ,
+194 , 6288 , 1 , 154 , 1 , 1 ,
+194 , 6289 , 1 , 174 , 1 , 1 ,
+194 , 6290 , 1 , 164 , 1 , 1 ,
+194 , 6291 , 1 , 154 , 1 , 1 ,
+194 , 6292 , 1 , 164 , 1 , 1 ,
+194 , 6293 , 1 , 164 , 1 , 1 ,
+194 , 6294 , 1 , 154 , 1 , 1 ,
+194 , 6295 , 188 , 21 , 1 , 1 , 6287 6290 6289 6291 6293 6288 6292 6294
+195 , 6296 , 1 , 133 , 1 , 1 ,
+195 , 6297 , 1 , 164 , 1 , 1 ,
+195 , 6298 , 1 , 184 , 1 , 1 ,
+195 , 6299 , 1 , 164 , 1 , 1 ,
+195 , 6300 , 1 , 154 , 1 , 1 ,
+195 , 6301 , 1 , 164 , 1 , 1 ,
+195 , 6302 , 1 , 164 , 1 , 1 ,
+195 , 6303 , 1 , 154 , 1 , 1 ,
+195 , 6304 , 198 , 21 , 1 , 1 , 6299 6303 6300 6297 6296 6302 6301 6298
+196 , 6314 , 3 , 143 , 1 , 1 ,
+196 , 6315 , 3 , 164 , 1 , 1 ,
+196 , 6316 , 3 , 184 , 1 , 1 ,
+196 , 6317 , 3 , 164 , 1 , 1 ,
+196 , 6318 , 3 , 154 , 1 , 1 ,
+196 , 6319 , 3 , 164 , 1 , 1 ,
+196 , 6320 , 3 , 154 , 1 , 1 ,
+196 , 6321 , 3 , 143 , 1 , 1 ,
+196 , 6322 , 200 , 21 , 1 , 1 , 6317 6315 6318 6321 6320 6314 6319 6316
+197 , 6323 , 2 , 143 , 1 , 1 ,
+197 , 6324 , 2 , 164 , 1 , 1 ,
+197 , 6325 , 2 , 174 , 1 , 1 ,
+197 , 6326 , 2 , 164 , 1 , 1 ,
+197 , 6327 , 2 , 154 , 1 , 1 ,
+197 , 6328 , 2 , 164 , 1 , 1 ,
+197 , 6329 , 2 , 154 , 1 , 1 ,
+197 , 6330 , 2 , 143 , 1 , 1 ,
+197 , 6331 , 189 , 21 , 1 , 1 , 6329 6325 6330 6328 6327 6324 6323 6326
+198 , 6332 , 1 , 41 , 1 , 1 ,
+198 , 6333 , 1 , 41 , 1 , 1 ,
+198 , 6334 , 1 , 41 , 1 , 1 ,
+198 , 6335 , 55 , 0 , 1 , 1 , 6334 6332 6333
+199 , 6336 , 1 , 143 , 1 , 1 ,
+199 , 6337 , 1 , 164 , 1 , 1 ,
+199 , 6338 , 1 , 184 , 1 , 1 ,
+199 , 6339 , 1 , 164 , 1 , 1 ,
+199 , 6340 , 1 , 143 , 1 , 1 ,
+199 , 6341 , 1 , 154 , 1 , 1 ,
+199 , 6342 , 1 , 164 , 1 , 1 ,
+199 , 6343 , 1 , 143 , 1 , 1 ,
+199 , 6344 , 198 , 1 , 1 , 1 , 6337 6340 6342 6338 6343 6341 6339 6336
+200 , 6353 , 3 , 41 , 1 , 1 ,
+200 , 6354 , 3 , 41 , 1 , 1 ,
+200 , 6355 , 3 , 41 , 1 , 1 ,
+200 , 6356 , 56 , 0 , 1 , 1 , 6355 6354 6353
+201 , 6357 , 2 , 41 , 1 , 1 ,
+201 , 6358 , 2 , 41 , 1 , 1 ,
+201 , 6359 , 2 , 41 , 1 , 1 ,
+201 , 6360 , 55 , 0 , 1 , 1 , 6358 6357 6359
+202 , 6361 , 1 , 41 , 1 , 1 ,
+202 , 6362 , 1 , 41 , 1 , 1 ,
+202 , 6363 , 1 , 41 , 1 , 1 ,
+202 , 6364 , 54 , 0 , 1 , 1 , 6362 6361 6363
+203 , 6365 , 1 , 52 , 1 , 1 ,
+203 , 6366 , 1 , 52 , 1 , 1 ,
+203 , 6367 , 1 , 52 , 1 , 1 ,
+203 , 6368 , 64 , 0 , 1 , 1 , 6366 6367 6365
+204 , 6369 , 1 , 41 , 1 , 1 ,
+204 , 6370 , 1 , 41 , 1 , 1 ,
+204 , 6371 , 1 , 41 , 1 , 1 ,
+204 , 6372 , 55 , 0 , 1 , 1 , 6369 6370 6371
+205 , 6373 , 2 , 41 , 1 , 1 ,
+205 , 6374 , 2 , 41 , 1 , 1 ,
+205 , 6375 , 2 , 41 , 1 , 1 ,
+205 , 6376 , 55 , 0 , 1 , 1 , 6375 6374 6373
+206 , 6377 , 1 , 41 , 1 , 1 ,
+206 , 6378 , 1 , 52 , 1 , 1 ,
+206 , 6379 , 1 , 52 , 1 , 1 ,
+206 , 6380 , 64 , 0 , 1 , 1 , 6377 6379 6378
+207 , 6381 , 3 , 41 , 1 , 1 ,
+207 , 6382 , 3 , 41 , 1 , 1 ,
+207 , 6383 , 3 , 41 , 1 , 1 ,
+207 , 6384 , 56 , 0 , 1 , 1 , 6383 6381 6382
+208 , 6385 , 4 , 41 , 1 , 1 ,
+208 , 6386 , 4 , 52 , 1 , 1 ,
+208 , 6387 , 4 , 52 , 1 , 1 ,
+208 , 6388 , 68 , 0 , 1 , 1 , 6386 6385 6387
+209 , 6389 , 1 , 41 , 1 , 1 ,
+209 , 6390 , 1 , 41 , 1 , 1 ,
+209 , 6391 , 1 , 41 , 1 , 1 ,
+209 , 6392 , 54 , 0 , 1 , 1 , 6389 6391 6390
+210 , 6393 , 3 , 41 , 1 , 1 ,
+210 , 6394 , 3 , 52 , 1 , 1 ,
+210 , 6395 , 3 , 41 , 1 , 1 ,
+210 , 6396 , 65 , 0 , 1 , 1 , 6393 6395 6394
+211 , 6397 , 2 , 143 , 1 , 1 ,
+211 , 6398 , 2 , 154 , 1 , 1 ,
+211 , 6399 , 2 , 184 , 1 , 1 ,
+211 , 6400 , 2 , 154 , 1 , 1 ,
+211 , 6401 , 2 , 143 , 1 , 1 ,
+211 , 6402 , 2 , 164 , 1 , 1 ,
+211 , 6403 , 2 , 164 , 1 , 1 ,
+211 , 6404 , 2 , 154 , 1 , 1 ,
+211 , 6405 , 199 , 21 , 1 , 1 , 6397 6403 6402 6401 6400 6399 6404 6398
+212 , 6406 , 2 , 41 , 1 , 1 ,
+212 , 6407 , 2 , 41 , 1 , 1 ,
+212 , 6408 , 2 , 41 , 1 , 1 ,
+212 , 6409 , 55 , 0 , 1 , 1 , 6407 6406 6408
+213 , 6410 , 1 , 41 , 1 , 1 ,
+213 , 6411 , 1 , 41 , 1 , 1 ,
+213 , 6412 , 1 , 41 , 1 , 1 ,
+213 , 6413 , 54 , 0 , 1 , 1 , 6411 6412 6410
+214 , 6414 , 3 , 144 , 1 , 1 ,
+214 , 6415 , 3 , 164 , 1 , 1 ,
+214 , 6416 , 3 , 185 , 1 , 1 ,
+214 , 6417 , 3 , 164 , 1 , 1 ,
+214 , 6418 , 3 , 144 , 1 , 1 ,
+214 , 6419 , 3 , 144 , 1 , 1 ,
+214 , 6420 , 3 , 164 , 1 , 1 ,
+214 , 6421 , 3 , 154 , 1 , 1 ,
+214 , 6422 , 201 , 21 , 1 , 1 , 6417 6419 6416 6421 6418 6414 6415 6420
+215 , 6423 , 3 , 134 , 1 , 1 ,
+215 , 6424 , 3 , 144 , 1 , 1 ,
+215 , 6425 , 3 , 174 , 1 , 1 ,
+215 , 6426 , 3 , 164 , 1 , 1 ,
+215 , 6427 , 3 , 154 , 1 , 1 ,
+215 , 6428 , 3 , 164 , 1 , 1 ,
+215 , 6429 , 3 , 164 , 1 , 1 ,
+215 , 6430 , 3 , 154 , 1 , 1 ,
+215 , 6431 , 190 , 21 , 1 , 1 , 6429 6426 6428 6423 6424 6425 6430 6427
+216 , 6432 , 2 , 143 , 1 , 1 ,
+216 , 6433 , 2 , 164 , 1 , 1 ,
+216 , 6434 , 2 , 184 , 1 , 1 ,
+216 , 6435 , 2 , 154 , 1 , 1 ,
+216 , 6436 , 2 , 154 , 1 , 1 ,
+216 , 6437 , 2 , 154 , 1 , 1 ,
+216 , 6438 , 2 , 164 , 1 , 1 ,
+216 , 6439 , 2 , 143 , 1 , 1 ,
+216 , 6440 , 199 , 21 , 1 , 1 , 6432 6435 6437 6438 6436 6434 6439 6433
+217 , 6441 , 3 , 143 , 1 , 1 ,
+217 , 6442 , 3 , 164 , 1 , 1 ,
+217 , 6443 , 3 , 184 , 1 , 1 ,
+217 , 6444 , 3 , 154 , 1 , 1 ,
+217 , 6445 , 3 , 164 , 1 , 1 ,
+217 , 6446 , 3 , 164 , 1 , 1 ,
+217 , 6447 , 3 , 164 , 1 , 1 ,
+217 , 6448 , 3 , 144 , 1 , 1 ,
+217 , 6449 , 199 , 21 , 1 , 1 , 6444 6442 6445 6447 6441 6448 6446 6443
+218 , 6450 , 2 , 133 , 1 , 1 ,
+218 , 6451 , 2 , 143 , 1 , 1 ,
+218 , 6452 , 2 , 184 , 1 , 1 ,
+218 , 6453 , 2 , 164 , 1 , 1 ,
+218 , 6454 , 2 , 154 , 1 , 1 ,
+218 , 6455 , 2 , 154 , 1 , 1 ,
+218 , 6456 , 2 , 164 , 1 , 1 ,
+218 , 6457 , 2 , 154 , 1 , 1 ,
+218 , 6458 , 198 , 21 , 1 , 1 , 6452 6457 6453 6451 6450 6456 6454 6455
+219 , 6459 , 3 , 143 , 1 , 1 ,
+219 , 6460 , 3 , 143 , 1 , 1 ,
+219 , 6461 , 3 , 184 , 1 , 1 ,
+219 , 6462 , 3 , 174 , 1 , 1 ,
+219 , 6463 , 3 , 143 , 1 , 1 ,
+219 , 6464 , 3 , 164 , 1 , 1 ,
+219 , 6465 , 3 , 164 , 1 , 1 ,
+219 , 6466 , 3 , 154 , 1 , 1 ,
+219 , 6467 , 201 , 21 , 1 , 1 , 6464 6466 6462 6463 6465 6461 6460 6459
+220 , 6468 , 2 , 143 , 1 , 1 ,
+220 , 6469 , 2 , 164 , 1 , 1 ,
+220 , 6470 , 2 , 184 , 1 , 1 ,
+220 , 6471 , 2 , 164 , 1 , 1 ,
+220 , 6472 , 2 , 144 , 1 , 1 ,
+220 , 6473 , 2 , 154 , 1 , 1 ,
+220 , 6474 , 2 , 164 , 1 , 1 ,
+220 , 6475 , 2 , 154 , 1 , 1 ,
+220 , 6476 , 198 , 21 , 1 , 1 , 6473 6474 6475 6468 6470 6471 6472 6469
+221 , 6477 , 7 , 143 , 1 , 1 ,
+221 , 6478 , 7 , 154 , 1 , 1 ,
+221 , 6479 , 7 , 184 , 1 , 1 ,
+221 , 6480 , 7 , 164 , 1 , 1 ,
+221 , 6481 , 7 , 144 , 1 , 1 ,
+221 , 6482 , 7 , 164 , 1 , 1 ,
+221 , 6483 , 7 , 164 , 1 , 1 ,
+221 , 6484 , 7 , 154 , 1 , 1 ,
+221 , 6485 , 203 , 21 , 1 , 1 , 6480 6477 6478 6484 6481 6482 6483 6479
+222 , 6486 , 4 , 144 , 1 , 1 ,
+222 , 6487 , 4 , 143 , 1 , 1 ,
+222 , 6488 , 4 , 164 , 1 , 1 ,
+222 , 6489 , 4 , 164 , 1 , 1 ,
+222 , 6490 , 4 , 154 , 1 , 1 ,
+222 , 6491 , 4 , 154 , 1 , 1 ,
+222 , 6492 , 4 , 164 , 1 , 1 ,
+222 , 6493 , 4 , 154 , 1 , 1 ,
+222 , 6494 , 180 , 21 , 1 , 1 , 6493 6490 6489 6492 6488 6487 6491 6486
+223 , 6495 , 2 , 41 , 1 , 1 ,
+223 , 6496 , 2 , 41 , 1 , 1 ,
+223 , 6497 , 2 , 41 , 1 , 1 ,
+223 , 6498 , 55 , 0 , 1 , 1 , 6496 6497 6495
+224 , 6499 , 1 , 41 , 1 , 1 ,
+224 , 6500 , 1 , 41 , 1 , 1 ,
+224 , 6501 , 1 , 52 , 1 , 1 ,
+224 , 6502 , 64 , 0 , 1 , 1 , 6500 6501 6499
+225 , 6503 , 3 , 41 , 1 , 1 ,
+225 , 6504 , 3 , 41 , 1 , 1 ,
+225 , 6505 , 3 , 52 , 1 , 1 ,
+225 , 6506 , 66 , 0 , 1 , 1 , 6505 6503 6504
+226 , 6507 , 3 , 41 , 1 , 1 ,
+226 , 6508 , 3 , 41 , 1 , 1 ,
+226 , 6509 , 3 , 41 , 1 , 1 ,
+226 , 6510 , 56 , 0 , 1 , 1 , 6509 6508 6507
+227 , 6511 , 2 , 72 , 1 , 1 ,
+227 , 6512 , 2 , 72 , 1 , 1 ,
+227 , 6513 , 2 , 92 , 1 , 1 ,
+227 , 6514 , 2 , 92 , 1 , 1 ,
+227 , 6515 , 2 , 82 , 1 , 1 ,
+227 , 6516 , 2 , 82 , 1 , 1 ,
+227 , 6517 , 2 , 82 , 1 , 1 ,
+227 , 6518 , 2 , 82 , 1 , 1 ,
+227 , 6519 , 108 , 11 , 1 , 1 , 6513 6512 6514 6518 6517 6516 6515 6511
+228 , 6520 , 5 , 143 , 1 , 1 ,
+228 , 6521 , 5 , 164 , 1 , 1 ,
+228 , 6522 , 5 , 184 , 1 , 1 ,
+228 , 6523 , 5 , 164 , 1 , 1 ,
+228 , 6524 , 5 , 154 , 1 , 1 ,
+228 , 6525 , 5 , 154 , 1 , 1 ,
+228 , 6526 , 5 , 154 , 1 , 1 ,
+228 , 6527 , 5 , 154 , 1 , 1 ,
+228 , 6528 , 201 , 21 , 1 , 1 , 6526 6522 6525 6524 6521 6527 6523 6520
+229 , 6529 , 1 , 41 , 1 , 1 ,
+229 , 6530 , 1 , 41 , 1 , 1 ,
+229 , 6531 , 1 , 41 , 1 , 1 ,
+229 , 6532 , 54 , 0 , 1 , 1 , 6531 6529 6530
+230 , 6533 , 3 , 41 , 1 , 1 ,
+230 , 6534 , 3 , 41 , 1 , 1 ,
+230 , 6535 , 3 , 41 , 1 , 1 ,
+230 , 6536 , 55 , 0 , 1 , 1 , 6535 6533 6534
+231 , 6537 , 8 , 41 , 1 , 1 ,
+231 , 6538 , 8 , 52 , 1 , 1 ,
+231 , 6539 , 8 , 41 , 1 , 1 ,
+231 , 6540 , 70 , 0 , 1 , 1 , 6537 6538 6539
+232 , 6541 , 2 , 41 , 1 , 1 ,
+232 , 6542 , 2 , 41 , 1 , 1 ,
+232 , 6543 , 2 , 52 , 1 , 1 ,
+232 , 6544 , 70 , 0 , 1 , 1 , 6542 6543 6541
+233 , 6545 , 12 , 41 , 1 , 1 ,
+233 , 6546 , 12 , 41 , 1 , 1 ,
+233 , 6547 , 12 , 41 , 1 , 1 ,
+233 , 6548 , 64 , 0 , 1 , 1 , 6547 6545 6546
+234 , 6566 , 5 , 41 , 1 , 1 ,
+234 , 6567 , 5 , 41 , 1 , 1 ,
+234 , 6568 , 5 , 41 , 1 , 1 ,
+234 , 6569 , 58 , 0 , 1 , 1 , 6567 6568 6566
+235 , 6570 , 13 , 41 , 1 , 1 ,
+235 , 6571 , 13 , 41 , 1 , 1 ,
+235 , 6572 , 13 , 41 , 1 , 1 ,
+235 , 6573 , 66 , 0 , 1 , 1 , 6571 6572 6570
+236 , 6574 , 1 , 41 , 1 , 1 ,
+236 , 6575 , 1 , 41 , 1 , 1 ,
+236 , 6576 , 1 , 41 , 1 , 1 ,
+236 , 6577 , 54 , 0 , 1 , 1 , 6576 6575 6574
+237 , 6578 , 2 , 41 , 1 , 1 ,
+237 , 6579 , 2 , 41 , 1 , 1 ,
+237 , 6580 , 2 , 41 , 1 , 1 ,
+237 , 6581 , 56 , 0 , 1 , 1 , 6578 6580 6579
+238 , 6582 , 10 , 41 , 1 , 1 ,
+238 , 6583 , 10 , 41 , 1 , 1 ,
+238 , 6584 , 10 , 41 , 1 , 1 ,
+238 , 6585 , 62 , 0 , 1 , 1 , 6582 6583 6584
+239 , 6586 , 16 , 41 , 1 , 1 ,
+239 , 6587 , 16 , 41 , 1 , 1 ,
+239 , 6588 , 16 , 41 , 1 , 1 ,
+239 , 6589 , 69 , 0 , 1 , 1 , 6586 6588 6587
+240 , 6631 , 4 , 21 , 1 , 1 ,
+240 , 6632 , 39 , 31 , 1 , 1 , 6631
+240 , 6633 , 39 , 31 , 1 , 1 , 6631
+240 , 6634 , 39 , 31 , 1 , 1 , 6631
+240 , 6635 , 39 , 31 , 1 , 1 , 6631
+240 , 6636 , 38 , 31 , 1 , 1 , 6631
+240 , 6637 , 38 , 31 , 1 , 1 , 6631
+240 , 6638 , 38 , 31 , 1 , 1 , 6631
+240 , 6639 , 37 , 31 , 1 , 1 , 6631
+240 , 6640 , 37 , 31 , 1 , 1 , 6631
+240 , 6641 , 37 , 31 , 1 , 1 , 6631
+240 , 6642 , 37 , 31 , 1 , 1 , 6631
+240 , 6643 , 37 , 31 , 1 , 1 , 6631
+240 , 6644 , 37 , 31 , 1 , 1 , 6631
+240 , 6645 , 37 , 31 , 1 , 1 , 6631
+240 , 6646 , 37 , 31 , 1 , 1 , 6631
+240 , 6647 , 37 , 31 , 1 , 1 , 6631
+240 , 6648 , 37 , 31 , 1 , 1 , 6631
+240 , 6649 , 37 , 31 , 1 , 1 , 6631
+240 , 6650 , 37 , 31 , 1 , 1 , 6631
+240 , 6651 , 84 , 0 , 1 , 1 , 6634 6639 6644 6637 6650 6645 6649 6648 6646 6635 6641 6642 6643 6632 6647 6633 6640 6636 6638
+240 , 6652 , 98 , 11 , 1 , 1 , 6651
+240 , 6653 , 98 , 21 , 1 , 1 , 6651
+240 , 6654 , 98 , 21 , 1 , 1 , 6651
+240 , 6655 , 98 , 11 , 1 , 1 , 6651
+240 , 6656 , 98 , 21 , 1 , 1 , 6651
+240 , 6657 , 98 , 11 , 1 , 1 , 6651
+240 , 6658 , 98 , 21 , 1 , 1 , 6651
+240 , 6659 , 98 , 11 , 1 , 1 , 6651
+240 , 6660 , 98 , 11 , 1 , 1 , 6651
+240 , 6661 , 97 , 21 , 1 , 1 , 6651
+240 , 6662 , 97 , 11 , 1 , 1 , 6651
+240 , 6663 , 97 , 0 , 1 , 1 , 6651
+240 , 6664 , 97 , 11 , 1 , 1 , 6651
+240 , 6665 , 97 , 11 , 1 , 1 , 6651
+240 , 6666 , 97 , 11 , 1 , 1 , 6651
+240 , 6667 , 97 , 11 , 1 , 1 , 6651
+240 , 6668 , 97 , 0 , 1 , 1 , 6651
+240 , 6669 , 97 , 11 , 1 , 1 , 6651
+240 , 6670 , 97 , 0 , 1 , 1 , 6651
+240 , 6671 , 133 , 0 , 1 , 1 , 6658 6665 6663 6659 6670 6668 6652 6667 6661 6653 6656 6664 6669 6666 6662 6655 6657 6654 6660
+241 , 6672 , 2 , 41 , 1 , 1 ,
+241 , 6673 , 2 , 52 , 1 , 1 ,
+241 , 6674 , 2 , 52 , 1 , 1 ,
+241 , 6675 , 65 , 0 , 1 , 1 , 6672 6674 6673
+242 , 6705 , 3 , 11 , 1 , 1 ,
+243 , 6706 , 1 , 11 , 1 , 1 ,
+244 , 6707 , 2 , 11 , 1 , 1 ,
+245 , 6708 , 1 , 11 , 1 , 1 ,
+246 , 6709 , 1 , 11 , 1 , 1 ,
+247 , 6710 , 1 , 11 , 1 , 1 ,
+248 , 6711 , 5 , 11 , 1 , 1 ,
+249 , 6712 , 1 , 11 , 1 , 1 ,
+250 , 6713 , 4 , 11 , 1 , 1 ,
+251 , 6714 , 2 , 143 , 1 , 1 ,
+251 , 6715 , 2 , 164 , 1 , 1 ,
+251 , 6716 , 2 , 184 , 1 , 1 ,
+251 , 6717 , 2 , 154 , 1 , 1 ,
+251 , 6718 , 2 , 143 , 1 , 1 ,
+251 , 6719 , 2 , 164 , 1 , 1 ,
+251 , 6720 , 2 , 164 , 1 , 1 ,
+251 , 6721 , 2 , 154 , 1 , 1 ,
+251 , 6722 , 199 , 21 , 1 , 1 , 6716 6720 6714 6717 6721 6718 6715 6719
+252 , 6723 , 4 , 41 , 1 , 1 ,
+252 , 6724 , 4 , 41 , 1 , 1 ,
+252 , 6725 , 4 , 41 , 1 , 1 ,
+252 , 6726 , 57 , 0 , 1 , 1 , 6725 6723 6724
+253 , 6731 , 3 , 41 , 1 , 1 ,
+253 , 6732 , 3 , 52 , 1 , 1 ,
+253 , 6733 , 3 , 41 , 1 , 1 ,
+253 , 6734 , 66 , 0 , 1 , 1 , 6732 6733 6731
+254 , 6735 , 3 , 41 , 1 , 1 ,
+254 , 6736 , 3 , 41 , 1 , 1 ,
+254 , 6737 , 3 , 41 , 1 , 1 ,
+254 , 6738 , 56 , 0 , 1 , 1 , 6735 6737 6736
+255 , 6739 , 1 , 41 , 1 , 1 ,
+255 , 6740 , 1 , 41 , 1 , 1 ,
+255 , 6741 , 1 , 41 , 1 , 1 ,
+255 , 6742 , 54 , 0 , 1 , 1 , 6739 6740 6741
+256 , 6743 , 2 , 41 , 1 , 1 ,
+256 , 6744 , 2 , 41 , 1 , 1 ,
+256 , 6745 , 2 , 42 , 1 , 1 ,
+256 , 6746 , 55 , 0 , 1 , 1 , 6745 6744 6743
+257 , 6747 , 1 , 41 , 1 , 1 ,
+257 , 6748 , 1 , 41 , 1 , 1 ,
+257 , 6749 , 1 , 41 , 1 , 1 ,
+257 , 6750 , 54 , 0 , 1 , 1 , 6749 6747 6748
+258 , 6751 , 2 , 41 , 1 , 1 ,
+258 , 6752 , 1 , 52 , 1 , 1 ,
+258 , 6753 , 1 , 52 , 1 , 1 ,
+258 , 6754 , 64 , 0 , 1 , 1 , 6753 6751 6752
+259 , 6755 , 2 , 41 , 1 , 1 ,
+259 , 6756 , 2 , 41 , 1 , 1 ,
+259 , 6757 , 2 , 41 , 1 , 1 ,
+259 , 6758 , 55 , 0 , 1 , 1 , 6757 6756 6755
+260 , 6759 , 2 , 41 , 1 , 1 ,
+260 , 6760 , 2 , 52 , 1 , 1 ,
+260 , 6761 , 2 , 52 , 1 , 1 ,
+260 , 6762 , 65 , 0 , 1 , 1 , 6761 6759 6760
+261 , 6763 , 1 , 41 , 1 , 1 ,
+261 , 6764 , 1 , 52 , 1 , 1 ,
+261 , 6765 , 1 , 41 , 1 , 1 ,
+261 , 6766 , 64 , 0 , 1 , 1 , 6763 6765 6764
+262 , 6767 , 2 , 41 , 1 , 1 ,
+262 , 6768 , 2 , 52 , 1 , 1 ,
+262 , 6769 , 2 , 41 , 1 , 1 ,
+262 , 6770 , 64 , 0 , 1 , 1 , 6769 6768 6767
+263 , 6771 , 1 , 42 , 1 , 1 ,
+263 , 6772 , 1 , 42 , 1 , 1 ,
+263 , 6773 , 1 , 41 , 1 , 1 ,
+263 , 6774 , 54 , 0 , 1 , 1 , 6773 6772 6771
+264 , 6775 , 1 , 42 , 1 , 1 ,
+264 , 6776 , 1 , 42 , 1 , 1 ,
+264 , 6777 , 1 , 41 , 1 , 1 ,
+264 , 6778 , 55 , 0 , 1 , 1 , 6777 6775 6776
+265 , 6779 , 1 , 41 , 1 , 1 ,
+265 , 6780 , 1 , 41 , 1 , 1 ,
+265 , 6781 , 1 , 41 , 1 , 1 ,
+265 , 6782 , 55 , 0 , 1 , 1 , 6781 6780 6779
+266 , 6783 , 2 , 41 , 1 , 1 ,
+266 , 6784 , 2 , 41 , 1 , 1 ,
+266 , 6785 , 2 , 52 , 1 , 1 ,
+266 , 6786 , 65 , 0 , 1 , 1 , 6785 6784 6783
+267 , 6787 , 1 , 41 , 1 , 1 ,
+267 , 6788 , 1 , 52 , 1 , 1 ,
+267 , 6789 , 1 , 41 , 1 , 1 ,
+267 , 6790 , 65 , 0 , 1 , 1 , 6789 6788 6787
+268 , 6791 , 1 , 41 , 1 , 1 ,
+268 , 6792 , 1 , 41 , 1 , 1 ,
+268 , 6793 , 1 , 41 , 1 , 1 ,
+268 , 6794 , 54 , 0 , 1 , 1 , 6791 6793 6792
+269 , 6795 , 2 , 41 , 1 , 1 ,
+269 , 6796 , 1 , 41 , 1 , 1 ,
+269 , 6797 , 1 , 41 , 1 , 1 ,
+269 , 6798 , 54 , 0 , 1 , 1 , 6795 6797 6796
+270 , 6799 , 2 , 41 , 1 , 1 ,
+270 , 6800 , 2 , 41 , 1 , 1 ,
+270 , 6801 , 2 , 41 , 1 , 1 ,
+270 , 6802 , 55 , 0 , 1 , 1 , 6800 6799 6801
+271 , 6803 , 1 , 41 , 1 , 1 ,
+271 , 6804 , 1 , 41 , 1 , 1 ,
+271 , 6805 , 1 , 41 , 1 , 1 ,
+271 , 6806 , 54 , 0 , 1 , 1 , 6804 6803 6805
+272 , 6807 , 4 , 11 , 1 , 1 ,
+272 , 6808 , 27 , 174 , 1 , 1 , 6807
+272 , 6809 , 27 , 184 , 1 , 1 , 6807
+272 , 6810 , 27 , 184 , 1 , 1 , 6807
+272 , 6811 , 27 , 215 , 1 , 1 , 6807
+272 , 6812 , 253 , 0 , 1 , 1 , 6808 6809 6810 6811
+272 , 6813 , 266 , 11 , 1 , 1 , 6812
+272 , 6814 , 266 , 0 , 1 , 1 , 6812
+272 , 6815 , 266 , 0 , 1 , 1 , 6812
+272 , 6816 , 266 , 11 , 1 , 1 , 6812
+272 , 6817 , 289 , 0 , 1 , 1 , 6813 6814 6816 6815
+273 , 6818 , 4 , 11 , 1 , 1 ,
+273 , 6819 , 27 , 184 , 1 , 1 , 6818
+273 , 6820 , 27 , 184 , 1 , 1 , 6818
+273 , 6821 , 27 , 194 , 1 , 1 , 6818
+273 , 6822 , 27 , 184 , 1 , 1 , 6818
+273 , 6823 , 233 , 0 , 1 , 1 , 6822 6820 6821 6819
+273 , 6824 , 246 , 11 , 1 , 1 , 6823
+273 , 6825 , 246 , 0 , 1 , 1 , 6823
+273 , 6826 , 246 , 0 , 1 , 1 , 6823
+273 , 6827 , 246 , 0 , 1 , 1 , 6823
+273 , 6828 , 268 , 0 , 1 , 1 , 6827 6826 6825 6824
+274 , 6829 , 4 , 11 , 1 , 1 ,
+274 , 6830 , 27 , 184 , 1 , 1 , 6829
+274 , 6831 , 27 , 194 , 1 , 1 , 6829
+274 , 6832 , 27 , 215 , 1 , 1 , 6829
+274 , 6833 , 27 , 184 , 1 , 1 , 6829
+274 , 6834 , 253 , 0 , 1 , 1 , 6831 6830 6833 6832
+274 , 6835 , 266 , 11 , 1 , 1 , 6834
+274 , 6836 , 266 , 0 , 1 , 1 , 6834
+274 , 6837 , 266 , 11 , 1 , 1 , 6834
+274 , 6838 , 266 , 0 , 1 , 1 , 6834
+274 , 6839 , 289 , 0 , 1 , 1 , 6837 6835 6838 6836
+275 , 6840 , 4 , 11 , 1 , 1 ,
+275 , 6841 , 26 , 184 , 1 , 1 , 6840
+275 , 6842 , 26 , 194 , 1 , 1 , 6840
+275 , 6843 , 26 , 184 , 1 , 1 , 6840
+275 , 6844 , 26 , 194 , 1 , 1 , 6840
+275 , 6845 , 232 , 0 , 1 , 1 , 6842 6844 6841 6843
+275 , 6846 , 245 , 11 , 1 , 1 , 6845
+275 , 6847 , 245 , 0 , 1 , 1 , 6845
+275 , 6848 , 245 , 11 , 1 , 1 , 6845
+275 , 6849 , 245 , 11 , 1 , 1 , 6845
+275 , 6850 , 268 , 0 , 1 , 1 , 6847 6849 6848 6846
+276 , 6851 , 2 , 41 , 1 , 1 ,
+276 , 6852 , 2 , 41 , 1 , 1 ,
+276 , 6853 , 2 , 41 , 1 , 1 ,
+276 , 6854 , 55 , 0 , 1 , 1 , 6853 6852 6851
+277 , 6855 , 3 , 143 , 1 , 1 ,
+277 , 6856 , 3 , 164 , 1 , 1 ,
+277 , 6857 , 3 , 184 , 1 , 1 ,
+277 , 6858 , 3 , 154 , 1 , 1 ,
+277 , 6859 , 3 , 154 , 1 , 1 ,
+277 , 6860 , 3 , 164 , 1 , 1 ,
+277 , 6861 , 3 , 154 , 1 , 1 ,
+277 , 6862 , 3 , 154 , 1 , 1 ,
+277 , 6863 , 200 , 21 , 1 , 1 , 6855 6856 6859 6858 6862 6861 6860 6857
+278 , 6864 , 1 , 43 , 1 , 1 ,
+278 , 6865 , 1 , 43 , 1 , 1 ,
+278 , 6866 , 1 , 43 , 1 , 1 ,
+278 , 6867 , 56 , 0 , 1 , 1 , 6864 6866 6865
+279 , 6868 , 2 , 145 , 1 , 1 ,
+279 , 6869 , 2 , 156 , 1 , 1 ,
+279 , 6870 , 2 , 177 , 1 , 1 ,
+279 , 6871 , 2 , 166 , 1 , 1 ,
+279 , 6872 , 2 , 145 , 1 , 1 ,
+279 , 6873 , 2 , 166 , 1 , 1 ,
+279 , 6874 , 2 , 167 , 1 , 1 ,
+279 , 6875 , 2 , 156 , 1 , 1 ,
+279 , 6876 , 192 , 21 , 1 , 1 , 6871 6873 6872 6868 6870 6875 6874 6869
+280 , 6877 , 2 , 42 , 1 , 1 ,
+280 , 6878 , 2 , 42 , 1 , 1 ,
+280 , 6879 , 2 , 42 , 1 , 1 ,
+280 , 6880 , 56 , 0 , 1 , 1 , 6877 6878 6879
+281 , 6881 , 2 , 42 , 1 , 1 ,
+281 , 6882 , 2 , 42 , 1 , 1 ,
+281 , 6883 , 2 , 42 , 1 , 1 ,
+281 , 6884 , 55 , 0 , 1 , 1 , 6883 6881 6882
+282 , 6885 , 2 , 41 , 1 , 1 ,
+282 , 6886 , 2 , 41 , 1 , 1 ,
+282 , 6887 , 2 , 52 , 1 , 1 ,
+282 , 6888 , 65 , 0 , 1 , 1 , 6887 6885 6886
+283 , 6889 , 2 , 41 , 1 , 1 ,
+283 , 6890 , 2 , 41 , 1 , 1 ,
+283 , 6891 , 2 , 41 , 1 , 1 ,
+283 , 6892 , 54 , 0 , 1 , 1 , 6891 6890 6889
+284 , 6893 , 2 , 41 , 1 , 1 ,
+284 , 6894 , 2 , 41 , 1 , 1 ,
+284 , 6895 , 2 , 41 , 1 , 1 ,
+284 , 6896 , 55 , 0 , 1 , 1 , 6894 6895 6893
+285 , 6897 , 1 , 41 , 1 , 1 ,
+285 , 6898 , 1 , 41 , 1 , 1 ,
+285 , 6899 , 1 , 41 , 1 , 1 ,
+285 , 6900 , 54 , 0 , 1 , 1 , 6897 6899 6898
+286 , 6901 , 2 , 41 , 1 , 1 ,
+286 , 6902 , 2 , 41 , 1 , 1 ,
+286 , 6903 , 2 , 41 , 1 , 1 ,
+286 , 6904 , 55 , 0 , 1 , 1 , 6903 6902 6901
+287 , 6905 , 1 , 41 , 1 , 1 ,
+287 , 6906 , 1 , 41 , 1 , 1 ,
+287 , 6907 , 1 , 41 , 1 , 1 ,
+287 , 6908 , 54 , 0 , 1 , 1 , 6906 6907 6905
+288 , 6909 , 2 , 41 , 1 , 1 ,
+288 , 6910 , 2 , 41 , 1 , 1 ,
+288 , 6911 , 2 , 41 , 1 , 1 ,
+288 , 6912 , 54 , 0 , 1 , 1 , 6910 6909 6911
+289 , 6913 , 2 , 41 , 1 , 1 ,
+289 , 6914 , 2 , 52 , 1 , 1 ,
+289 , 6915 , 2 , 52 , 1 , 1 ,
+289 , 6916 , 64 , 0 , 1 , 1 , 6915 6914 6913
+290 , 6917 , 1 , 41 , 1 , 1 ,
+290 , 6918 , 1 , 41 , 1 , 1 ,
+290 , 6919 , 1 , 41 , 1 , 1 ,
+290 , 6920 , 54 , 0 , 1 , 1 , 6917 6919 6918
+291 , 6921 , 2 , 41 , 1 , 1 ,
+291 , 6922 , 2 , 41 , 1 , 1 ,
+291 , 6923 , 2 , 41 , 1 , 1 ,
+291 , 6924 , 54 , 0 , 1 , 1 , 6921 6923 6922
+292 , 6925 , 2 , 41 , 1 , 1 ,
+292 , 6926 , 2 , 41 , 1 , 1 ,
+292 , 6927 , 2 , 52 , 1 , 1 ,
+292 , 6928 , 65 , 0 , 1 , 1 , 6926 6927 6925
+293 , 6929 , 1 , 41 , 1 , 1 ,
+293 , 6930 , 1 , 41 , 1 , 1 ,
+293 , 6931 , 1 , 41 , 1 , 1 ,
+293 , 6932 , 54 , 0 , 1 , 1 , 6930 6931 6929
+294 , 6933 , 3 , 41 , 1 , 1 ,
+294 , 6934 , 3 , 41 , 1 , 1 ,
+294 , 6935 , 3 , 41 , 1 , 1 ,
+294 , 6936 , 56 , 0 , 1 , 1 , 6935 6934 6933
+295 , 6937 , 1 , 41 , 1 , 1 ,
+295 , 6938 , 1 , 52 , 1 , 1 ,
+295 , 6939 , 1 , 52 , 1 , 1 ,
+295 , 6940 , 64 , 0 , 1 , 1 , 6937 6939 6938
+296 , 6941 , 2 , 41 , 1 , 1 ,
+296 , 6942 , 2 , 41 , 1 , 1 ,
+296 , 6943 , 2 , 41 , 1 , 1 ,
+296 , 6944 , 54 , 0 , 1 , 1 , 6941 6943 6942
+297 , 6945 , 1 , 41 , 1 , 1 ,
+297 , 6946 , 1 , 41 , 1 , 1 ,
+297 , 6947 , 1 , 41 , 1 , 1 ,
+297 , 6948 , 54 , 0 , 1 , 1 , 6945 6946 6947
+298 , 6949 , 1 , 41 , 1 , 1 ,
+298 , 6950 , 1 , 41 , 1 , 1 ,
+298 , 6951 , 1 , 41 , 1 , 1 ,
+298 , 6952 , 54 , 0 , 1 , 1 , 6951 6950 6949
+299 , 6953 , 1 , 41 , 1 , 1 ,
+299 , 6954 , 1 , 41 , 1 , 1 ,
+299 , 6955 , 1 , 52 , 1 , 1 ,
+299 , 6956 , 64 , 0 , 1 , 1 , 6954 6955 6953
+300 , 6957 , 2 , 41 , 1 , 1 ,
+300 , 6958 , 2 , 52 , 1 , 1 ,
+300 , 6959 , 2 , 52 , 1 , 1 ,
+300 , 6960 , 65 , 0 , 1 , 1 , 6958 6957 6959
+301 , 7022 , 2 , 41 , 1 , 1 ,
+301 , 7023 , 2 , 41 , 1 , 1 ,
+301 , 7024 , 2 , 52 , 1 , 1 ,
+301 , 7025 , 65 , 0 , 1 , 1 , 7022 7024 7023
+302 , 7026 , 14 , 184 , 1 , 1 ,
+302 , 7027 , 14 , 195 , 1 , 1 ,
+302 , 7028 , 14 , 174 , 1 , 1 ,
+302 , 7029 , 14 , 174 , 1 , 1 ,
+302 , 7030 , 14 , 164 , 1 , 1 ,
+302 , 7031 , 13 , 174 , 1 , 1 ,
+302 , 7032 , 13 , 194 , 1 , 1 ,
+302 , 7033 , 13 , 194 , 1 , 1 ,
+302 , 7034 , 13 , 184 , 1 , 1 ,
+302 , 7035 , 12 , 205 , 1 , 1 ,
+302 , 7036 , 11 , 205 , 1 , 1 ,
+302 , 7037 , 11 , 215 , 1 , 1 ,
+302 , 7038 , 11 , 225 , 1 , 1 ,
+302 , 7039 , 11 , 205 , 1 , 1 ,
+302 , 7040 , 11 , 215 , 1 , 1 ,
+302 , 7041 , 11 , 225 , 1 , 1 ,
+302 , 7042 , 10 , 225 , 1 , 1 ,
+302 , 7043 , 10 , 225 , 1 , 1 ,
+302 , 7044 , 10 , 225 , 1 , 1 ,
+302 , 7045 , 10 , 246 , 1 , 1 ,
+302 , 7046 , 8 , 267 , 1 , 1 ,
+302 , 7047 , 8 , 267 , 1 , 1 ,
+302 , 7048 , 8 , 226 , 1 , 1 ,
+302 , 7049 , 8 , 227 , 1 , 1 ,
+302 , 7050 , 8 , 225 , 1 , 1 ,
+302 , 7051 , 8 , 225 , 1 , 1 ,
+302 , 7052 , 8 , 205 , 1 , 1 ,
+302 , 7053 , 8 , 205 , 1 , 1 ,
+302 , 7054 , 8 , 205 , 1 , 1 ,
+302 , 7055 , 7 , 205 , 1 , 1 ,
+302 , 7056 , 6 , 195 , 1 , 1 ,
+302 , 7057 , 6 , 184 , 1 , 1 ,
+302 , 7058 , 6 , 195 , 1 , 1 ,
+302 , 7059 , 5 , 225 , 1 , 1 ,
+302 , 7060 , 5 , 215 , 1 , 1 ,
+302 , 7061 , 5 , 205 , 1 , 1 ,
+302 , 7062 , 5 , 205 , 1 , 1 ,
+302 , 7063 , 5 , 195 , 1 , 1 ,
+302 , 7064 , 5 , 205 , 1 , 1 ,
+302 , 7065 , 5 , 215 , 1 , 1 ,
+302 , 7066 , 4 , 225 , 1 , 1 ,
+302 , 7067 , 3 , 225 , 1 , 1 ,
+302 , 7068 , 3 , 205 , 1 , 1 ,
+302 , 7069 , 3 , 215 , 1 , 1 ,
+302 , 7070 , 3 , 215 , 1 , 1 ,
+302 , 7071 , 3 , 215 , 1 , 1 ,
+302 , 7072 , 3 , 225 , 1 , 1 ,
+302 , 7073 , 3 , 225 , 1 , 1 ,
+302 , 7074 , 3 , 215 , 1 , 1 ,
+302 , 7075 , 3 , 225 , 1 , 1 ,
+302 , 7076 , 1 , 205 , 1 , 1 ,
+302 , 7077 , 1 , 205 , 1 , 1 ,
+302 , 7078 , 1 , 195 , 1 , 1 ,
+302 , 7079 , 1 , 205 , 1 , 1 ,
+302 , 7080 , 1 , 205 , 1 , 1 ,
+302 , 7081 , 1 , 205 , 1 , 1 ,
+302 , 7082 , 1 , 215 , 1 , 1 ,
+302 , 7083 , 1 , 215 , 1 , 1 ,
+302 , 7084 , 1 , 195 , 1 , 1 ,
+302 , 7085 , 1 , 184 , 1 , 1 ,
+302 , 7086 , 289 , 174 , 1 , 1 , 7046 7075 7061 7033 7071 7030 7044 7050 7062 7060 7083 7079 7069 7034 7043 7026 7045 7066 7073 7035 7049 7041 7080 7052 7084 7058 7040 7032 7028 7072 7037 7074 7078 7038 7064 7055 7036 7031 7027 7065 7070 7063 7051 7057 7056 7067 7076 7048 7047 7081 7053 7068 7059 7039 7082 7029 7042 7054 7085 7077
+303 , 7087 , 16 , 184 , 1 , 1 ,
+303 , 7088 , 16 , 184 , 1 , 1 ,
+303 , 7089 , 16 , 174 , 1 , 1 ,
+303 , 7090 , 16 , 164 , 1 , 1 ,
+303 , 7091 , 16 , 164 , 1 , 1 ,
+303 , 7092 , 16 , 184 , 1 , 1 ,
+303 , 7093 , 15 , 196 , 1 , 1 ,
+303 , 7094 , 15 , 196 , 1 , 1 ,
+303 , 7095 , 15 , 196 , 1 , 1 ,
+303 , 7096 , 15 , 196 , 1 , 1 ,
+303 , 7097 , 13 , 206 , 1 , 1 ,
+303 , 7098 , 13 , 216 , 1 , 1 ,
+303 , 7099 , 13 , 226 , 1 , 1 ,
+303 , 7100 , 13 , 206 , 1 , 1 ,
+303 , 7101 , 13 , 206 , 1 , 1 ,
+303 , 7102 , 12 , 229 , 1 , 1 ,
+303 , 7103 , 12 , 227 , 1 , 1 ,
+303 , 7104 , 12 , 227 , 1 , 1 ,
+303 , 7105 , 12 , 226 , 1 , 1 ,
+303 , 7106 , 12 , 236 , 1 , 1 ,
+303 , 7107 , 10 , 256 , 1 , 1 ,
+303 , 7108 , 10 , 256 , 1 , 1 ,
+303 , 7109 , 10 , 226 , 1 , 1 ,
+303 , 7110 , 10 , 226 , 1 , 1 ,
+303 , 7111 , 10 , 226 , 1 , 1 ,
+303 , 7112 , 9 , 215 , 1 , 1 ,
+303 , 7113 , 9 , 205 , 1 , 1 ,
+303 , 7114 , 9 , 205 , 1 , 1 ,
+303 , 7115 , 9 , 215 , 1 , 1 ,
+303 , 7116 , 9 , 195 , 1 , 1 ,
+303 , 7117 , 7 , 194 , 1 , 1 ,
+303 , 7118 , 7 , 205 , 1 , 1 ,
+303 , 7119 , 7 , 215 , 1 , 1 ,
+303 , 7120 , 7 , 205 , 1 , 1 ,
+303 , 7121 , 7 , 215 , 1 , 1 ,
+303 , 7122 , 7 , 215 , 1 , 1 ,
+303 , 7123 , 6 , 194 , 1 , 1 ,
+303 , 7124 , 6 , 205 , 1 , 1 ,
+303 , 7125 , 6 , 205 , 1 , 1 ,
+303 , 7126 , 6 , 225 , 1 , 1 ,
+303 , 7127 , 4 , 227 , 1 , 1 ,
+303 , 7128 , 4 , 227 , 1 , 1 ,
+303 , 7129 , 4 , 206 , 1 , 1 ,
+303 , 7130 , 4 , 216 , 1 , 1 ,
+303 , 7131 , 4 , 206 , 1 , 1 ,
+303 , 7132 , 4 , 217 , 1 , 1 ,
+303 , 7133 , 4 , 217 , 1 , 1 ,
+303 , 7134 , 4 , 216 , 1 , 1 ,
+303 , 7135 , 4 , 228 , 1 , 1 ,
+303 , 7136 , 4 , 228 , 1 , 1 ,
+303 , 7137 , 2 , 217 , 1 , 1 ,
+303 , 7138 , 2 , 208 , 1 , 1 ,
+303 , 7139 , 2 , 186 , 1 , 1 ,
+303 , 7140 , 2 , 196 , 1 , 1 ,
+303 , 7141 , 2 , 187 , 1 , 1 ,
+303 , 7142 , 2 , 209 , 1 , 1 ,
+303 , 7143 , 2 , 219 , 1 , 1 ,
+303 , 7144 , 2 , 187 , 1 , 1 ,
+303 , 7145 , 2 , 207 , 1 , 1 ,
+303 , 7146 , 2 , 197 , 1 , 1 ,
+303 , 7147 , 280 , 174 , 1 , 1 , 7127 7143 7137 7134 7135 7111 7130 7145 7088 7096 7108 7098 7114 7125 7104 7091 7100 7107 7092 7129 7097 7124 7144 7120 7131 7141 7126 7133 7146 7140 7139 7101 7089 7116 7106 7094 7115 7117 7122 7132 7110 7090 7112 7123 7102 7109 7128 7113 7142 7136 7099 7093 7138 7121 7087 7105 7118 7119 7103 7095
+304 , 7148 , 17 , 184 , 1 , 1 ,
+304 , 7149 , 17 , 184 , 1 , 1 ,
+304 , 7150 , 17 , 174 , 1 , 1 ,
+304 , 7151 , 17 , 164 , 1 , 1 ,
+304 , 7152 , 17 , 174 , 1 , 1 ,
+304 , 7153 , 17 , 185 , 1 , 1 ,
+304 , 7154 , 17 , 194 , 1 , 1 ,
+304 , 7155 , 16 , 194 , 1 , 1 ,
+304 , 7156 , 16 , 184 , 1 , 1 ,
+304 , 7157 , 15 , 195 , 1 , 1 ,
+304 , 7158 , 14 , 205 , 1 , 1 ,
+304 , 7159 , 14 , 215 , 1 , 1 ,
+304 , 7160 , 14 , 225 , 1 , 1 ,
+304 , 7161 , 14 , 225 , 1 , 1 ,
+304 , 7162 , 14 , 225 , 1 , 1 ,
+304 , 7163 , 13 , 225 , 1 , 1 ,
+304 , 7164 , 13 , 225 , 1 , 1 ,
+304 , 7165 , 13 , 225 , 1 , 1 ,
+304 , 7166 , 13 , 225 , 1 , 1 ,
+304 , 7167 , 13 , 235 , 1 , 1 ,
+304 , 7168 , 10 , 245 , 1 , 1 ,
+304 , 7169 , 10 , 235 , 1 , 1 ,
+304 , 7170 , 10 , 225 , 1 , 1 ,
+304 , 7171 , 10 , 235 , 1 , 1 ,
+304 , 7172 , 10 , 225 , 1 , 1 ,
+304 , 7173 , 10 , 194 , 1 , 1 ,
+304 , 7174 , 9 , 184 , 1 , 1 ,
+304 , 7175 , 9 , 205 , 1 , 1 ,
+304 , 7176 , 9 , 205 , 1 , 1 ,
+304 , 7177 , 9 , 205 , 1 , 1 ,
+304 , 7178 , 7 , 184 , 1 , 1 ,
+304 , 7179 , 7 , 184 , 1 , 1 ,
+304 , 7180 , 7 , 205 , 1 , 1 ,
+304 , 7181 , 7 , 215 , 1 , 1 ,
+304 , 7182 , 7 , 215 , 1 , 1 ,
+304 , 7183 , 6 , 205 , 1 , 1 ,
+304 , 7184 , 6 , 184 , 1 , 1 ,
+304 , 7185 , 6 , 184 , 1 , 1 ,
+304 , 7186 , 6 , 195 , 1 , 1 ,
+304 , 7187 , 5 , 215 , 1 , 1 ,
+304 , 7188 , 4 , 225 , 1 , 1 ,
+304 , 7189 , 4 , 205 , 1 , 1 ,
+304 , 7190 , 4 , 194 , 1 , 1 ,
+304 , 7191 , 4 , 205 , 1 , 1 ,
+304 , 7192 , 4 , 215 , 1 , 1 ,
+304 , 7193 , 4 , 215 , 1 , 1 ,
+304 , 7194 , 4 , 205 , 1 , 1 ,
+304 , 7195 , 4 , 205 , 1 , 1 ,
+304 , 7196 , 4 , 225 , 1 , 1 ,
+304 , 7197 , 4 , 225 , 1 , 1 ,
+304 , 7198 , 2 , 205 , 1 , 1 ,
+304 , 7199 , 2 , 184 , 1 , 1 ,
+304 , 7200 , 2 , 195 , 1 , 1 ,
+304 , 7201 , 2 , 184 , 1 , 1 ,
+304 , 7202 , 2 , 205 , 1 , 1 ,
+304 , 7203 , 2 , 205 , 1 , 1 ,
+304 , 7204 , 2 , 205 , 1 , 1 ,
+304 , 7205 , 2 , 195 , 1 , 1 ,
+304 , 7206 , 2 , 194 , 1 , 1 ,
+304 , 7207 , 2 , 174 , 1 , 1 ,
+304 , 7208 , 270 , 174 , 1 , 1 , 7179 7163 7181 7192 7194 7190 7173 7172 7198 7178 7197 7191 7169 7207 7195 7149 7202 7183 7158 7184 7188 7204 7171 7156 7205 7199 7160 7200 7174 7185 7196 7167 7203 7180 7170 7168 7206 7175 7148 7151 7176 7182 7189 7201 7162 7154 7155 7193 7166 7187 7164 7186 7150 7157 7177 7152 7161 7165 7159 7153
+305 , 7209 , 1 , 11 , 1 , 1 ,
+306 , 7210 , 226 , 52 , 1 , 1 ,
+306 , 7211 , 226 , 52 , 1 , 1 ,
+306 , 7212 , 226 , 52 , 1 , 1 ,
+306 , 7213 , 226 , 52 , 1 , 1 ,
+306 , 7214 , 226 , 52 , 1 , 1 ,
+306 , 7215 , 226 , 52 , 1 , 1 ,
+306 , 7216 , 226 , 52 , 1 , 1 ,
+306 , 7217 , 224 , 52 , 1 , 1 ,
+306 , 7218 , 224 , 62 , 1 , 1 ,
+306 , 7219 , 223 , 52 , 1 , 1 ,
+306 , 7220 , 78 , 41 , 1 , 1 ,
+306 , 7221 , 77 , 52 , 1 , 1 ,
+306 , 7222 , 77 , 42 , 1 , 1 ,
+306 , 7223 , 77 , 52 , 1 , 1 ,
+306 , 7224 , 77 , 52 , 1 , 1 ,
+306 , 7225 , 76 , 52 , 1 , 1 ,
+306 , 7226 , 76 , 41 , 1 , 1 ,
+306 , 7227 , 76 , 41 , 1 , 1 ,
+306 , 7228 , 223 , 52 , 1 , 1 ,
+306 , 7229 , 223 , 52 , 1 , 1 ,
+306 , 7230 , 223 , 52 , 1 , 1 ,
+306 , 7231 , 223 , 52 , 1 , 1 ,
+306 , 7232 , 223 , 52 , 1 , 1 ,
+306 , 7233 , 223 , 52 , 1 , 1 ,
+306 , 7234 , 222 , 62 , 1 , 1 ,
+306 , 7235 , 222 , 52 , 1 , 1 ,
+306 , 7236 , 222 , 62 , 1 , 1 ,
+306 , 7237 , 221 , 52 , 1 , 1 ,
+306 , 7238 , 221 , 63 , 1 , 1 ,
+306 , 7239 , 220 , 62 , 1 , 1 ,
+306 , 7240 , 219 , 52 , 1 , 1 ,
+306 , 7241 , 219 , 52 , 1 , 1 ,
+306 , 7242 , 218 , 62 , 1 , 1 ,
+306 , 7243 , 218 , 52 , 1 , 1 ,
+306 , 7244 , 218 , 62 , 1 , 1 ,
+306 , 7245 , 218 , 62 , 1 , 1 ,
+306 , 7246 , 82 , 52 , 1 , 1 ,
+306 , 7247 , 217 , 52 , 1 , 1 ,
+306 , 7248 , 217 , 62 , 1 , 1 ,
+306 , 7249 , 217 , 62 , 1 , 1 ,
+306 , 7250 , 217 , 62 , 1 , 1 ,
+306 , 7251 , 148 , 42 , 1 , 1 ,
+306 , 7252 , 147 , 41 , 1 , 1 ,
+306 , 7253 , 211 , 43 , 1 , 1 ,
+306 , 7254 , 210 , 31 , 1 , 1 ,
+306 , 7255 , 203 , 41 , 1 , 1 ,
+306 , 7256 , 201 , 43 , 1 , 1 ,
+306 , 7257 , 200 , 43 , 1 , 1 ,
+306 , 7258 , 200 , 43 , 1 , 1 ,
+306 , 7259 , 200 , 41 , 1 , 1 ,
+306 , 7260 , 199 , 41 , 1 , 1 ,
+306 , 7261 , 199 , 41 , 1 , 1 ,
+306 , 7262 , 196 , 52 , 1 , 1 ,
+306 , 7263 , 196 , 52 , 1 , 1 ,
+306 , 7264 , 196 , 52 , 1 , 1 ,
+306 , 7265 , 84 , 52 , 1 , 1 ,
+306 , 7266 , 195 , 52 , 1 , 1 ,
+306 , 7267 , 194 , 52 , 1 , 1 ,
+306 , 7268 , 194 , 41 , 1 , 1 ,
+306 , 7269 , 193 , 52 , 1 , 1 ,
+306 , 7270 , 192 , 52 , 1 , 1 ,
+306 , 7271 , 192 , 52 , 1 , 1 ,
+306 , 7272 , 191 , 53 , 1 , 1 ,
+306 , 7273 , 191 , 53 , 1 , 1 ,
+306 , 7274 , 282 , 41 , 1 , 1 ,
+306 , 7275 , 282 , 41 , 1 , 1 ,
+306 , 7276 , 281 , 41 , 1 , 1 ,
+306 , 7277 , 280 , 41 , 1 , 1 ,
+306 , 7278 , 264 , 41 , 1 , 1 ,
+306 , 7279 , 259 , 42 , 1 , 1 ,
+306 , 7280 , 259 , 42 , 1 , 1 ,
+306 , 7281 , 259 , 41 , 1 , 1 ,
+306 , 7282 , 258 , 41 , 1 , 1 ,
+306 , 7283 , 258 , 41 , 1 , 1 ,
+306 , 7284 , 255 , 41 , 1 , 1 ,
+306 , 7285 , 255 , 52 , 1 , 1 ,
+306 , 7286 , 255 , 41 , 1 , 1 ,
+306 , 7287 , 255 , 41 , 1 , 1 ,
+306 , 7288 , 254 , 52 , 1 , 1 ,
+306 , 7289 , 83 , 62 , 1 , 1 ,
+306 , 7290 , 83 , 62 , 1 , 1 ,
+306 , 7291 , 82 , 52 , 1 , 1 ,
+306 , 7292 , 82 , 52 , 1 , 1 ,
+306 , 7293 , 254 , 41 , 1 , 1 ,
+306 , 7294 , 254 , 52 , 1 , 1 ,
+306 , 7295 , 254 , 41 , 1 , 1 ,
+306 , 7296 , 254 , 52 , 1 , 1 ,
+306 , 7297 , 254 , 41 , 1 , 1 ,
+306 , 7298 , 252 , 41 , 1 , 1 ,
+306 , 7299 , 252 , 41 , 1 , 1 ,
+306 , 7300 , 229 , 51 , 1 , 1 ,
+306 , 7301 , 109 , 52 , 1 , 1 ,
+306 , 7302 , 109 , 52 , 1 , 1 ,
+306 , 7303 , 109 , 52 , 1 , 1 ,
+306 , 7304 , 108 , 52 , 1 , 1 ,
+306 , 7305 , 108 , 52 , 1 , 1 ,
+306 , 7306 , 108 , 52 , 1 , 1 ,
+306 , 7307 , 108 , 52 , 1 , 1 ,
+306 , 7308 , 107 , 52 , 1 , 1 ,
+306 , 7309 , 107 , 62 , 1 , 1 ,
+306 , 7310 , 107 , 62 , 1 , 1 ,
+306 , 7311 , 106 , 62 , 1 , 1 ,
+306 , 7312 , 82 , 62 , 1 , 1 ,
+306 , 7313 , 81 , 62 , 1 , 1 ,
+306 , 7314 , 81 , 62 , 1 , 1 ,
+306 , 7315 , 81 , 62 , 1 , 1 ,
+306 , 7316 , 81 , 62 , 1 , 1 ,
+306 , 7317 , 81 , 62 , 1 , 1 ,
+306 , 7318 , 81 , 62 , 1 , 1 ,
+306 , 7319 , 81 , 62 , 1 , 1 ,
+306 , 7320 , 81 , 52 , 1 , 1 ,
+306 , 7321 , 80 , 62 , 1 , 1 ,
+306 , 7322 , 79 , 62 , 1 , 1 ,
+306 , 7323 , 79 , 62 , 1 , 1 ,
+306 , 7324 , 78 , 62 , 1 , 1 ,
+306 , 7325 , 78 , 52 , 1 , 1 ,
+306 , 7326 , 78 , 62 , 1 , 1 ,
+306 , 7327 , 106 , 62 , 1 , 1 ,
+306 , 7328 , 106 , 52 , 1 , 1 ,
+306 , 7329 , 106 , 52 , 1 , 1 ,
+306 , 7330 , 106 , 52 , 1 , 1 ,
+306 , 7331 , 106 , 52 , 1 , 1 ,
+306 , 7332 , 106 , 41 , 1 , 1 ,
+306 , 7333 , 106 , 62 , 1 , 1 ,
+306 , 7334 , 106 , 52 , 1 , 1 ,
+306 , 7335 , 106 , 52 , 1 , 1 ,
+306 , 7336 , 102 , 41 , 1 , 1 ,
+306 , 7337 , 93 , 52 , 1 , 1 ,
+306 , 7338 , 228 , 52 , 1 , 1 ,
+306 , 7339 , 228 , 52 , 1 , 1 ,
+306 , 7340 , 228 , 52 , 1 , 1 ,
+306 , 7341 , 78 , 52 , 1 , 1 ,
+306 , 7342 , 191 , 53 , 1 , 1 ,
+306 , 7343 , 190 , 44 , 1 , 1 ,
+306 , 7344 , 183 , 52 , 1 , 1 ,
+306 , 7345 , 169 , 52 , 1 , 1 ,
+306 , 7346 , 147 , 42 , 1 , 1 ,
+306 , 7347 , 147 , 41 , 1 , 1 ,
+306 , 7348 , 144 , 41 , 1 , 1 ,
+306 , 7349 , 144 , 42 , 1 , 1 ,
+306 , 7350 , 144 , 41 , 1 , 1 ,
+306 , 7351 , 143 , 41 , 1 , 1 ,
+306 , 7352 , 142 , 41 , 1 , 1 ,
+306 , 7353 , 142 , 41 , 1 , 1 ,
+306 , 7354 , 141 , 41 , 1 , 1 ,
+306 , 7355 , 93 , 52 , 1 , 1 ,
+306 , 7356 , 92 , 41 , 1 , 1 ,
+306 , 7357 , 92 , 52 , 1 , 1 ,
+306 , 7358 , 92 , 41 , 1 , 1 ,
+306 , 7359 , 91 , 41 , 1 , 1 ,
+306 , 7360 , 91 , 52 , 1 , 1 ,
+306 , 7361 , 91 , 52 , 1 , 1 ,
+306 , 7362 , 85 , 41 , 1 , 1 ,
+306 , 7363 , 84 , 52 , 1 , 1 ,
+306 , 7364 , 84 , 52 , 1 , 1 ,
+306 , 7365 , 140 , 42 , 1 , 1 ,
+306 , 7366 , 169 , 42 , 1 , 1 ,
+306 , 7367 , 168 , 42 , 1 , 1 ,
+306 , 7368 , 168 , 52 , 1 , 1 ,
+306 , 7369 , 168 , 42 , 1 , 1 ,
+306 , 7370 , 168 , 41 , 1 , 1 ,
+306 , 7371 , 168 , 52 , 1 , 1 ,
+306 , 7372 , 168 , 52 , 1 , 1 ,
+306 , 7373 , 168 , 63 , 1 , 1 ,
+306 , 7374 , 166 , 62 , 1 , 1 ,
+306 , 7375 , 166 , 62 , 1 , 1 ,
+306 , 7376 , 166 , 62 , 1 , 1 ,
+306 , 7377 , 166 , 62 , 1 , 1 ,
+306 , 7378 , 166 , 52 , 1 , 1 ,
+306 , 7379 , 166 , 52 , 1 , 1 ,
+306 , 7380 , 166 , 62 , 1 , 1 ,
+306 , 7381 , 166 , 62 , 1 , 1 ,
+306 , 7382 , 166 , 62 , 1 , 1 ,
+306 , 7383 , 166 , 42 , 1 , 1 ,
+306 , 7384 , 166 , 62 , 1 , 1 ,
+306 , 7385 , 159 , 52 , 1 , 1 ,
+306 , 7386 , 158 , 52 , 1 , 1 ,
+306 , 7387 , 158 , 52 , 1 , 1 ,
+306 , 7388 , 157 , 52 , 1 , 1 ,
+306 , 7389 , 157 , 52 , 1 , 1 ,
+306 , 7390 , 156 , 52 , 1 , 1 ,
+306 , 7391 , 156 , 52 , 1 , 1 ,
+306 , 7392 , 156 , 52 , 1 , 1 ,
+306 , 7393 , 156 , 41 , 1 , 1 ,
+306 , 7394 , 155 , 52 , 1 , 1 ,
+306 , 7395 , 155 , 52 , 1 , 1 ,
+306 , 7396 , 155 , 41 , 1 , 1 ,
+306 , 7397 , 154 , 52 , 1 , 1 ,
+306 , 7398 , 140 , 42 , 1 , 1 ,
+306 , 7399 , 139 , 41 , 1 , 1 ,
+306 , 7400 , 138 , 41 , 1 , 1 ,
+306 , 7401 , 130 , 41 , 1 , 1 ,
+306 , 7402 , 130 , 42 , 1 , 1 ,
+306 , 7403 , 128 , 52 , 1 , 1 ,
+306 , 7404 , 128 , 52 , 1 , 1 ,
+306 , 7405 , 154 , 52 , 1 , 1 ,
+306 , 7406 , 154 , 52 , 1 , 1 ,
+306 , 7407 , 154 , 52 , 1 , 1 ,
+306 , 7408 , 154 , 52 , 1 , 1 ,
+306 , 7409 , 154 , 52 , 1 , 1 ,
+306 , 7410 , 153 , 52 , 1 , 1 ,
+306 , 7411 , 153 , 53 , 1 , 1 ,
+306 , 7412 , 82 , 62 , 1 , 1 ,
+306 , 7413 , 153 , 53 , 1 , 1 ,
+306 , 7414 , 228 , 52 , 1 , 1 ,
+306 , 7415 , 228 , 52 , 1 , 1 ,
+306 , 7416 , 228 , 51 , 1 , 1 ,
+306 , 7417 , 228 , 52 , 1 , 1 ,
+306 , 7418 , 228 , 52 , 1 , 1 ,
+306 , 7419 , 153 , 53 , 1 , 1 ,
+306 , 7420 , 151 , 42 , 1 , 1 ,
+306 , 7421 , 148 , 41 , 1 , 1 ,
+306 , 7422 , 148 , 42 , 1 , 1 ,
+306 , 7423 , 226 , 52 , 1 , 1 ,
+306 , 7424 , 226 , 52 , 1 , 1 ,
+306 , 7425 , 226 , 62 , 1 , 1 ,
+306 , 7426 , 226 , 52 , 1 , 1 ,
+306 , 7427 , 48 , 42 , 1 , 1 ,
+306 , 7428 , 47 , 42 , 1 , 1 ,
+306 , 7429 , 47 , 42 , 1 , 1 ,
+306 , 7430 , 47 , 42 , 1 , 1 ,
+306 , 7431 , 47 , 42 , 1 , 1 ,
+306 , 7432 , 47 , 42 , 1 , 1 ,
+306 , 7433 , 47 , 42 , 1 , 1 ,
+306 , 7434 , 47 , 42 , 1 , 1 ,
+306 , 7435 , 47 , 42 , 1 , 1 ,
+306 , 7436 , 46 , 42 , 1 , 1 ,
+306 , 7437 , 46 , 52 , 1 , 1 ,
+306 , 7438 , 46 , 52 , 1 , 1 ,
+306 , 7439 , 46 , 52 , 1 , 1 ,
+306 , 7440 , 46 , 52 , 1 , 1 ,
+306 , 7441 , 46 , 52 , 1 , 1 ,
+306 , 7442 , 46 , 52 , 1 , 1 ,
+306 , 7443 , 46 , 52 , 1 , 1 ,
+306 , 7444 , 46 , 52 , 1 , 1 ,
+306 , 7445 , 46 , 52 , 1 , 1 ,
+306 , 7446 , 46 , 52 , 1 , 1 ,
+306 , 7447 , 19 , 62 , 1 , 1 ,
+306 , 7448 , 18 , 62 , 1 , 1 ,
+306 , 7449 , 18 , 52 , 1 , 1 ,
+306 , 7450 , 17 , 52 , 1 , 1 ,
+306 , 7451 , 17 , 62 , 1 , 1 ,
+306 , 7452 , 17 , 52 , 1 , 1 ,
+306 , 7453 , 16 , 62 , 1 , 1 ,
+306 , 7454 , 16 , 62 , 1 , 1 ,
+306 , 7455 , 16 , 72 , 1 , 1 ,
+306 , 7456 , 16 , 62 , 1 , 1 ,
+306 , 7457 , 16 , 62 , 1 , 1 ,
+306 , 7458 , 15 , 62 , 1 , 1 ,
+306 , 7459 , 15 , 52 , 1 , 1 ,
+306 , 7460 , 14 , 53 , 1 , 1 ,
+306 , 7461 , 14 , 53 , 1 , 1 ,
+306 , 7462 , 14 , 53 , 1 , 1 ,
+306 , 7463 , 13 , 53 , 1 , 1 ,
+306 , 7464 , 13 , 52 , 1 , 1 ,
+306 , 7465 , 13 , 52 , 1 , 1 ,
+306 , 7466 , 13 , 52 , 1 , 1 ,
+306 , 7467 , 13 , 52 , 1 , 1 ,
+306 , 7468 , 12 , 52 , 1 , 1 ,
+306 , 7469 , 12 , 52 , 1 , 1 ,
+306 , 7470 , 11 , 52 , 1 , 1 ,
+306 , 7471 , 11 , 52 , 1 , 1 ,
+306 , 7472 , 11 , 52 , 1 , 1 ,
+306 , 7473 , 11 , 52 , 1 , 1 ,
+306 , 7474 , 10 , 52 , 1 , 1 ,
+306 , 7475 , 10 , 52 , 1 , 1 ,
+306 , 7476 , 10 , 52 , 1 , 1 ,
+306 , 7477 , 10 , 52 , 1 , 1 ,
+306 , 7478 , 10 , 52 , 1 , 1 ,
+306 , 7479 , 10 , 62 , 1 , 1 ,
+306 , 7480 , 7 , 52 , 1 , 1 ,
+306 , 7481 , 7 , 62 , 1 , 1 ,
+306 , 7482 , 7 , 52 , 1 , 1 ,
+306 , 7483 , 7 , 62 , 1 , 1 ,
+306 , 7484 , 6 , 62 , 1 , 1 ,
+306 , 7485 , 6 , 62 , 1 , 1 ,
+306 , 7486 , 6 , 52 , 1 , 1 ,
+306 , 7487 , 6 , 62 , 1 , 1 ,
+306 , 7488 , 5 , 62 , 1 , 1 ,
+306 , 7489 , 5 , 62 , 1 , 1 ,
+306 , 7490 , 4 , 63 , 1 , 1 ,
+306 , 7491 , 4 , 63 , 1 , 1 ,
+306 , 7492 , 4 , 63 , 1 , 1 ,
+306 , 7493 , 4 , 63 , 1 , 1 ,
+306 , 7494 , 4 , 62 , 1 , 1 ,
+306 , 7495 , 4 , 62 , 1 , 1 ,
+306 , 7496 , 4 , 62 , 1 , 1 ,
+306 , 7497 , 4 , 52 , 1 , 1 ,
+306 , 7498 , 4 , 52 , 1 , 1 ,
+306 , 7499 , 4 , 52 , 1 , 1 ,
+306 , 7500 , 2 , 52 , 1 , 1 ,
+306 , 7501 , 2 , 62 , 1 , 1 ,
+306 , 7502 , 2 , 52 , 1 , 1 ,
+306 , 7503 , 2 , 52 , 1 , 1 ,
+306 , 7504 , 2 , 62 , 1 , 1 ,
+306 , 7505 , 2 , 52 , 1 , 1 ,
+306 , 7506 , 2 , 52 , 1 , 1 ,
+306 , 7507 , 2 , 52 , 1 , 1 ,
+306 , 7508 , 2 , 52 , 1 , 1 ,
+306 , 7509 , 2 , 42 , 1 , 1 ,
+306 , 7510 , 336 , 174 , 1 , 1 , 7466 7358 7504 7469 7416 7264 7509 7485 7270 7253 7353 7282 7298 7334 7446 7430 7479 7473 7351 7363 7333 7267 7255 7283 7436 7489 7276 7308 7327 7431 7221 7404 7223 7217 7425 7323 7262 7254 7246 7252 7395 7457 7423 7299 7477 7447 7368 7219 7399 7366 7244 7444 7231 7232 7228 7401 7391 7501 7374 7245 7359 7301 7500 7313 7373 7375 7396 7419 7442 7343 7259 7397 7286 7476 7432 7237 7460 7337 7385 7272 7422 7212 7461 7307 7484 7285 7421 7329 7222 7482 7291 7214 7326 7408 7406 7328 7226 7225 7364 7348 7475 7340 7441 7271 7273 7216 7496 7318 7417 7279 7452 7378 7362 7290 7218 7331 7346 7294 7379 7412 7474 7238 7316 7312 7260 7380 7393 7439 7263 7239 7376 7483 7344 7220 7361 7287 7213 7454 7289 7387 7415 7499 7455 7402 7355 7440 7472 7381 7229 7470 7250 7332 7405 7247 7305 7311 7274 7409 7320 7456 7284 7382 7341 7418 7243 7459 7449 7241 7435 7426 7233 7280 7487 7336 7257 7420 7356 7434 7491 7310 7365 7443 7370 7389 7315 7251 7275 7480 7453 7293 7371 7297 7211 7357 7360 7424 7493 7486 7468 7451 7413 7508 7321 7258 7372 7309 7319 7265 7350 7478 7403 7242 7497 7335 7342 7437 7433 7268 7249 7471 7386 7394 7481 7465 7325 7345 7295 7248 7269 7330 7215 7502 7388 7296 7306 7488 7505 7490 7427 7349 7445 7338 7304 7288 7369 7383 7438 7462 7278 7390 7235 7240 7414 7261 7277 7303 7429 7256 7492 7236 7300 7367 7400 7314 7292 7428 7281 7407 7467 7224 7352 7234 7450 7322 7411 7448 7507 7392 7317 7377 7302 7354 7498 7506 7495 7494 7384 7339 7463 7227 7210 7410 7347 7458 7324 7503 7464 7266 7230 7398
+307 , 7511 , 18 , 184 , 1 , 1 ,
+307 , 7512 , 18 , 184 , 1 , 1 ,
+307 , 7513 , 16 , 164 , 1 , 1 ,
+307 , 7514 , 16 , 164 , 1 , 1 ,
+307 , 7515 , 14 , 175 , 1 , 1 ,
+307 , 7516 , 14 , 185 , 1 , 1 ,
+307 , 7517 , 14 , 195 , 1 , 1 ,
+307 , 7518 , 14 , 175 , 1 , 1 ,
+307 , 7519 , 13 , 185 , 1 , 1 ,
+307 , 7520 , 13 , 195 , 1 , 1 ,
+307 , 7521 , 13 , 205 , 1 , 1 ,
+307 , 7522 , 12 , 205 , 1 , 1 ,
+307 , 7523 , 12 , 215 , 1 , 1 ,
+307 , 7524 , 12 , 225 , 1 , 1 ,
+307 , 7525 , 11 , 225 , 1 , 1 ,
+307 , 7526 , 11 , 205 , 1 , 1 ,
+307 , 7527 , 10 , 225 , 1 , 1 ,
+307 , 7528 , 10 , 225 , 1 , 1 ,
+307 , 7529 , 10 , 225 , 1 , 1 ,
+307 , 7530 , 10 , 225 , 1 , 1 ,
+307 , 7531 , 9 , 256 , 1 , 1 ,
+307 , 7532 , 9 , 256 , 1 , 1 ,
+307 , 7533 , 9 , 246 , 1 , 1 ,
+307 , 7534 , 9 , 246 , 1 , 1 ,
+307 , 7535 , 8 , 215 , 1 , 1 ,
+307 , 7536 , 8 , 215 , 1 , 1 ,
+307 , 7537 , 8 , 205 , 1 , 1 ,
+307 , 7538 , 7 , 195 , 1 , 1 ,
+307 , 7539 , 7 , 205 , 1 , 1 ,
+307 , 7540 , 7 , 205 , 1 , 1 ,
+307 , 7541 , 7 , 195 , 1 , 1 ,
+307 , 7542 , 7 , 205 , 1 , 1 ,
+307 , 7543 , 7 , 194 , 1 , 1 ,
+307 , 7544 , 7 , 215 , 1 , 1 ,
+307 , 7545 , 6 , 215 , 1 , 1 ,
+307 , 7546 , 5 , 205 , 1 , 1 ,
+307 , 7547 , 5 , 185 , 1 , 1 ,
+307 , 7548 , 5 , 195 , 1 , 1 ,
+307 , 7549 , 5 , 205 , 1 , 1 ,
+307 , 7550 , 5 , 226 , 1 , 1 ,
+307 , 7551 , 4 , 205 , 1 , 1 ,
+307 , 7552 , 4 , 226 , 1 , 1 ,
+307 , 7553 , 4 , 215 , 1 , 1 ,
+307 , 7554 , 4 , 215 , 1 , 1 ,
+307 , 7555 , 4 , 205 , 1 , 1 ,
+307 , 7556 , 3 , 215 , 1 , 1 ,
+307 , 7557 , 3 , 215 , 1 , 1 ,
+307 , 7558 , 3 , 205 , 1 , 1 ,
+307 , 7559 , 3 , 225 , 1 , 1 ,
+307 , 7560 , 3 , 225 , 1 , 1 ,
+307 , 7561 , 1 , 215 , 1 , 1 ,
+307 , 7562 , 1 , 205 , 1 , 1 ,
+307 , 7563 , 1 , 185 , 1 , 1 ,
+307 , 7564 , 1 , 195 , 1 , 1 ,
+307 , 7565 , 1 , 195 , 1 , 1 ,
+307 , 7566 , 1 , 205 , 1 , 1 ,
+307 , 7567 , 1 , 195 , 1 , 1 ,
+307 , 7568 , 1 , 195 , 1 , 1 ,
+307 , 7569 , 1 , 205 , 1 , 1 ,
+307 , 7570 , 1 , 195 , 1 , 1 ,
+307 , 7571 , 279 , 176 , 1 , 1 , 7528 7553 7544 7570 7563 7546 7559 7545 7536 7556 7515 7550 7561 7540 7538 7542 7526 7548 7530 7529 7519 7521 7557 7514 7518 7533 7567 7543 7516 7566 7511 7568 7532 7535 7565 7524 7554 7569 7549 7539 7520 7523 7562 7534 7527 7517 7513 7531 7522 7512 7564 7555 7541 7537 7560 7525 7551 7552 7547 7558
+308 , 7572 , 1 , 41 , 1 , 1 ,
+308 , 7573 , 1 , 41 , 1 , 1 ,
+308 , 7574 , 1 , 42 , 1 , 1 ,
+308 , 7575 , 55 , 0 , 1 , 1 , 7572 7574 7573
+309 , 7576 , 1 , 41 , 1 , 1 ,
+309 , 7577 , 1 , 41 , 1 , 1 ,
+309 , 7578 , 1 , 41 , 1 , 1 ,
+309 , 7579 , 54 , 0 , 1 , 1 , 7577 7578 7576
+310 , 7580 , 2 , 41 , 1 , 1 ,
+310 , 7581 , 2 , 52 , 1 , 1 ,
+310 , 7582 , 2 , 41 , 1 , 1 ,
+310 , 7583 , 64 , 0 , 1 , 1 , 7580 7581 7582
+311 , 7584 , 2 , 41 , 1 , 1 ,
+311 , 7585 , 2 , 41 , 1 , 1 ,
+311 , 7586 , 2 , 52 , 1 , 1 ,
+311 , 7587 , 64 , 0 , 1 , 1 , 7586 7585 7584
+312 , 7588 , 1 , 41 , 1 , 1 ,
+312 , 7589 , 1 , 41 , 1 , 1 ,
+312 , 7590 , 1 , 41 , 1 , 1 ,
+312 , 7591 , 54 , 0 , 1 , 1 , 7589 7588 7590
+313 , 7592 , 1 , 41 , 1 , 1 ,
+313 , 7593 , 1 , 52 , 1 , 1 ,
+313 , 7594 , 1 , 41 , 1 , 1 ,
+313 , 7595 , 64 , 0 , 1 , 1 , 7594 7592 7593
+314 , 7596 , 2 , 41 , 1 , 1 ,
+314 , 7597 , 2 , 52 , 1 , 1 ,
+314 , 7598 , 2 , 41 , 1 , 1 ,
+314 , 7599 , 65 , 0 , 1 , 1 , 7596 7597 7598
+315 , 7600 , 2 , 41 , 1 , 1 ,
+315 , 7601 , 2 , 52 , 1 , 1 ,
+315 , 7602 , 2 , 42 , 1 , 1 ,
+315 , 7603 , 65 , 0 , 1 , 1 , 7601 7602 7600
+316 , 7604 , 7 , 41 , 1 , 1 ,
+316 , 7605 , 7 , 52 , 1 , 1 ,
+316 , 7606 , 7 , 41 , 1 , 1 ,
+316 , 7607 , 71 , 0 , 1 , 1 , 7605 7604 7606
+317 , 7608 , 3 , 42 , 1 , 1 ,
+317 , 7609 , 3 , 43 , 1 , 1 ,
+317 , 7610 , 3 , 41 , 1 , 1 ,
+317 , 7611 , 58 , 11 , 1 , 1 , 7610 7608 7609
+318 , 7612 , 19 , 186 , 1 , 1 ,
+318 , 7613 , 18 , 186 , 1 , 1 ,
+318 , 7614 , 18 , 175 , 1 , 1 ,
+318 , 7615 , 18 , 175 , 1 , 1 ,
+318 , 7616 , 17 , 175 , 1 , 1 ,
+318 , 7617 , 17 , 188 , 1 , 1 ,
+318 , 7618 , 17 , 206 , 1 , 1 ,
+318 , 7619 , 17 , 196 , 1 , 1 ,
+318 , 7620 , 16 , 197 , 1 , 1 ,
+318 , 7621 , 16 , 197 , 1 , 1 ,
+318 , 7622 , 16 , 207 , 1 , 1 ,
+318 , 7623 , 16 , 208 , 1 , 1 ,
+318 , 7624 , 15 , 217 , 1 , 1 ,
+318 , 7625 , 15 , 208 , 1 , 1 ,
+318 , 7626 , 15 , 219 , 1 , 1 ,
+318 , 7627 , 15 , 228 , 1 , 1 ,
+318 , 7628 , 14 , 227 , 1 , 1 ,
+318 , 7629 , 14 , 229 , 1 , 1 ,
+318 , 7630 , 14 , 226 , 1 , 1 ,
+318 , 7631 , 14 , 247 , 1 , 1 ,
+318 , 7632 , 13 , 257 , 1 , 1 ,
+318 , 7633 , 12 , 237 , 1 , 1 ,
+318 , 7634 , 12 , 238 , 1 , 1 ,
+318 , 7635 , 12 , 238 , 1 , 1 ,
+318 , 7636 , 12 , 227 , 1 , 1 ,
+318 , 7637 , 12 , 217 , 1 , 1 ,
+318 , 7638 , 11 , 207 , 1 , 1 ,
+318 , 7639 , 11 , 187 , 1 , 1 ,
+318 , 7640 , 11 , 206 , 1 , 1 ,
+318 , 7641 , 11 , 206 , 1 , 1 ,
+318 , 7642 , 10 , 196 , 1 , 1 ,
+318 , 7643 , 9 , 196 , 1 , 1 ,
+318 , 7644 , 9 , 206 , 1 , 1 ,
+318 , 7645 , 8 , 217 , 1 , 1 ,
+318 , 7646 , 8 , 197 , 1 , 1 ,
+318 , 7647 , 8 , 207 , 1 , 1 ,
+318 , 7648 , 8 , 196 , 1 , 1 ,
+318 , 7649 , 8 , 197 , 1 , 1 ,
+318 , 7650 , 7 , 206 , 1 , 1 ,
+318 , 7651 , 7 , 207 , 1 , 1 ,
+318 , 7652 , 7 , 227 , 1 , 1 ,
+318 , 7653 , 7 , 228 , 1 , 1 ,
+318 , 7654 , 6 , 207 , 1 , 1 ,
+318 , 7655 , 6 , 217 , 1 , 1 ,
+318 , 7656 , 6 , 227 , 1 , 1 ,
+318 , 7657 , 6 , 218 , 1 , 1 ,
+318 , 7658 , 6 , 218 , 1 , 1 ,
+318 , 7659 , 6 , 208 , 1 , 1 ,
+318 , 7660 , 5 , 206 , 1 , 1 ,
+318 , 7661 , 5 , 230 , 1 , 1 ,
+318 , 7662 , 3 , 219 , 1 , 1 ,
+318 , 7663 , 3 , 206 , 1 , 1 ,
+318 , 7664 , 3 , 177 , 1 , 1 ,
+318 , 7665 , 3 , 197 , 1 , 1 ,
+318 , 7666 , 3 , 197 , 1 , 1 ,
+318 , 7667 , 3 , 206 , 1 , 1 ,
+318 , 7668 , 3 , 217 , 1 , 1 ,
+318 , 7669 , 3 , 209 , 1 , 1 ,
+318 , 7670 , 3 , 187 , 1 , 1 ,
+318 , 7671 , 3 , 197 , 1 , 1 ,
+318 , 7672 , 283 , 154 , 1 , 1 , 7667 7619 7629 7612 7639 7616 7655 7626 7615 7644 7635 7657 7664 7630 7662 7624 7622 7665 7636 7632 7666 7614 7651 7625 7642 7640 7631 7620 7660 7621 7633 7634 7623 7654 7656 7658 7668 7649 7618 7652 7638 7670 7637 7653 7647 7669 7641 7650 7659 7643 7648 7646 7663 7627 7613 7617 7628 7671 7661 7645
+319 , 7673 , 4 , 42 , 1 , 1 ,
+319 , 7674 , 4 , 42 , 1 , 1 ,
+319 , 7675 , 4 , 42 , 1 , 1 ,
+319 , 7676 , 58 , 0 , 1 , 1 , 7673 7674 7675
+320 , 7677 , 5 , 41 , 1 , 1 ,
+320 , 7678 , 5 , 41 , 1 , 1 ,
+320 , 7679 , 5 , 41 , 1 , 1 ,
+320 , 7680 , 58 , 0 , 1 , 1 , 7677 7678 7679
+321 , 7681 , 6 , 41 , 1 , 1 ,
+321 , 7682 , 6 , 41 , 1 , 1 ,
+321 , 7683 , 6 , 41 , 1 , 1 ,
+321 , 7684 , 58 , 0 , 1 , 1 , 7682 7683 7681
+322 , 7685 , 1 , 41 , 1 , 1 ,
+322 , 7686 , 1 , 41 , 1 , 1 ,
+322 , 7687 , 1 , 41 , 1 , 1 ,
+322 , 7688 , 54 , 0 , 1 , 1 , 7686 7685 7687
+323 , 7689 , 2 , 31 , 1 , 1 ,
+323 , 7690 , 2 , 41 , 1 , 1 ,
+323 , 7691 , 2 , 41 , 1 , 1 ,
+323 , 7692 , 55 , 0 , 1 , 1 , 7690 7691 7689
+324 , 7693 , 6 , 41 , 1 , 1 ,
+324 , 7694 , 6 , 52 , 1 , 1 ,
+324 , 7695 , 6 , 41 , 1 , 1 ,
+324 , 7696 , 68 , 0 , 1 , 1 , 7695 7694 7693
+325 , 7697 , 3 , 41 , 1 , 1 ,
+325 , 7698 , 3 , 52 , 1 , 1 ,
+325 , 7699 , 3 , 41 , 1 , 1 ,
+325 , 7700 , 66 , 0 , 1 , 1 , 7699 7698 7697
+326 , 7701 , 2 , 41 , 1 , 1 ,
+326 , 7702 , 2 , 41 , 1 , 1 ,
+326 , 7703 , 2 , 52 , 1 , 1 ,
+326 , 7704 , 66 , 0 , 1 , 1 , 7701 7703 7702
+327 , 7705 , 6 , 42 , 1 , 1 ,
+327 , 7706 , 6 , 42 , 1 , 1 ,
+327 , 7707 , 6 , 42 , 1 , 1 ,
+327 , 7708 , 59 , 0 , 1 , 1 , 7705 7706 7707
+328 , 7709 , 7 , 61 , 1 , 1 ,
+328 , 7710 , 7 , 61 , 1 , 1 ,
+328 , 7711 , 7 , 46 , 1 , 1 ,
+328 , 7712 , 87 , 0 , 1 , 1 , 7711 7710 7709
+329 , 7713 , 17 , 185 , 1 , 1 ,
+329 , 7714 , 16 , 195 , 1 , 1 ,
+329 , 7715 , 16 , 174 , 1 , 1 ,
+329 , 7716 , 16 , 175 , 1 , 1 ,
+329 , 7717 , 16 , 175 , 1 , 1 ,
+329 , 7718 , 15 , 185 , 1 , 1 ,
+329 , 7719 , 15 , 206 , 1 , 1 ,
+329 , 7720 , 15 , 195 , 1 , 1 ,
+329 , 7721 , 15 , 195 , 1 , 1 ,
+329 , 7722 , 14 , 195 , 1 , 1 ,
+329 , 7723 , 14 , 205 , 1 , 1 ,
+329 , 7724 , 14 , 216 , 1 , 1 ,
+329 , 7725 , 13 , 227 , 1 , 1 ,
+329 , 7726 , 13 , 226 , 1 , 1 ,
+329 , 7727 , 13 , 227 , 1 , 1 ,
+329 , 7728 , 12 , 236 , 1 , 1 ,
+329 , 7729 , 12 , 235 , 1 , 1 ,
+329 , 7730 , 12 , 226 , 1 , 1 ,
+329 , 7731 , 12 , 225 , 1 , 1 ,
+329 , 7732 , 11 , 235 , 1 , 1 ,
+329 , 7733 , 11 , 256 , 1 , 1 ,
+329 , 7734 , 10 , 256 , 1 , 1 ,
+329 , 7735 , 10 , 246 , 1 , 1 ,
+329 , 7736 , 10 , 246 , 1 , 1 ,
+329 , 7737 , 10 , 225 , 1 , 1 ,
+329 , 7738 , 10 , 216 , 1 , 1 ,
+329 , 7739 , 10 , 206 , 1 , 1 ,
+329 , 7740 , 9 , 195 , 1 , 1 ,
+329 , 7741 , 9 , 205 , 1 , 1 ,
+329 , 7742 , 8 , 184 , 1 , 1 ,
+329 , 7743 , 8 , 194 , 1 , 1 ,
+329 , 7744 , 8 , 184 , 1 , 1 ,
+329 , 7745 , 8 , 206 , 1 , 1 ,
+329 , 7746 , 7 , 216 , 1 , 1 ,
+329 , 7747 , 7 , 195 , 1 , 1 ,
+329 , 7748 , 7 , 205 , 1 , 1 ,
+329 , 7749 , 7 , 185 , 1 , 1 ,
+329 , 7750 , 7 , 195 , 1 , 1 ,
+329 , 7751 , 6 , 184 , 1 , 1 ,
+329 , 7752 , 6 , 196 , 1 , 1 ,
+329 , 7753 , 5 , 206 , 1 , 1 ,
+329 , 7754 , 5 , 206 , 1 , 1 ,
+329 , 7755 , 5 , 216 , 1 , 1 ,
+329 , 7756 , 5 , 206 , 1 , 1 ,
+329 , 7757 , 5 , 205 , 1 , 1 ,
+329 , 7758 , 5 , 215 , 1 , 1 ,
+329 , 7759 , 5 , 206 , 1 , 1 ,
+329 , 7760 , 4 , 215 , 1 , 1 ,
+329 , 7761 , 4 , 206 , 1 , 1 ,
+329 , 7762 , 4 , 205 , 1 , 1 ,
+329 , 7763 , 3 , 185 , 1 , 1 ,
+329 , 7764 , 3 , 195 , 1 , 1 ,
+329 , 7765 , 3 , 175 , 1 , 1 ,
+329 , 7766 , 3 , 174 , 1 , 1 ,
+329 , 7767 , 3 , 196 , 1 , 1 ,
+329 , 7768 , 3 , 205 , 1 , 1 ,
+329 , 7769 , 3 , 184 , 1 , 1 ,
+329 , 7770 , 3 , 184 , 1 , 1 ,
+329 , 7771 , 3 , 185 , 1 , 1 ,
+329 , 7772 , 3 , 175 , 1 , 1 ,
+329 , 7773 , 280 , 174 , 1 , 1 , 7718 7758 7734 7727 7742 7747 7730 7723 7741 7759 7746 7760 7754 7749 7722 7744 7767 7729 7717 7770 7745 7766 7724 7763 7753 7762 7761 7765 7732 7733 7720 7743 7757 7748 7726 7737 7772 7713 7725 7771 7716 7736 7714 7750 7768 7719 7721 7740 7752 7715 7738 7751 7728 7735 7769 7731 7756 7739 7764 7755
+330 , 7774 , 16 , 186 , 1 , 1 ,
+330 , 7775 , 16 , 187 , 1 , 1 ,
+330 , 7776 , 16 , 176 , 1 , 1 ,
+330 , 7777 , 16 , 175 , 1 , 1 ,
+330 , 7778 , 15 , 176 , 1 , 1 ,
+330 , 7779 , 15 , 187 , 1 , 1 ,
+330 , 7780 , 15 , 196 , 1 , 1 ,
+330 , 7781 , 15 , 187 , 1 , 1 ,
+330 , 7782 , 14 , 185 , 1 , 1 ,
+330 , 7783 , 13 , 188 , 1 , 1 ,
+330 , 7784 , 12 , 197 , 1 , 1 ,
+330 , 7785 , 12 , 205 , 1 , 1 ,
+330 , 7786 , 12 , 215 , 1 , 1 ,
+330 , 7787 , 12 , 226 , 1 , 1 ,
+330 , 7788 , 12 , 205 , 1 , 1 ,
+330 , 7789 , 11 , 205 , 1 , 1 ,
+330 , 7790 , 11 , 215 , 1 , 1 ,
+330 , 7791 , 11 , 215 , 1 , 1 ,
+330 , 7792 , 11 , 225 , 1 , 1 ,
+330 , 7793 , 10 , 235 , 1 , 1 ,
+330 , 7794 , 10 , 235 , 1 , 1 ,
+330 , 7795 , 9 , 235 , 1 , 1 ,
+330 , 7796 , 9 , 246 , 1 , 1 ,
+330 , 7797 , 9 , 236 , 1 , 1 ,
+330 , 7798 , 9 , 226 , 1 , 1 ,
+330 , 7799 , 9 , 215 , 1 , 1 ,
+330 , 7800 , 8 , 184 , 1 , 1 ,
+330 , 7801 , 8 , 184 , 1 , 1 ,
+330 , 7802 , 8 , 205 , 1 , 1 ,
+330 , 7803 , 7 , 205 , 1 , 1 ,
+330 , 7804 , 6 , 196 , 1 , 1 ,
+330 , 7805 , 6 , 185 , 1 , 1 ,
+330 , 7806 , 6 , 206 , 1 , 1 ,
+330 , 7807 , 6 , 206 , 1 , 1 ,
+330 , 7808 , 6 , 216 , 1 , 1 ,
+330 , 7809 , 6 , 205 , 1 , 1 ,
+330 , 7810 , 5 , 196 , 1 , 1 ,
+330 , 7811 , 5 , 195 , 1 , 1 ,
+330 , 7812 , 5 , 186 , 1 , 1 ,
+330 , 7813 , 5 , 205 , 1 , 1 ,
+330 , 7814 , 4 , 226 , 1 , 1 ,
+330 , 7815 , 4 , 215 , 1 , 1 ,
+330 , 7816 , 4 , 216 , 1 , 1 ,
+330 , 7817 , 4 , 215 , 1 , 1 ,
+330 , 7818 , 4 , 195 , 1 , 1 ,
+330 , 7819 , 4 , 195 , 1 , 1 ,
+330 , 7820 , 3 , 205 , 1 , 1 ,
+330 , 7821 , 3 , 215 , 1 , 1 ,
+330 , 7822 , 3 , 215 , 1 , 1 ,
+330 , 7823 , 3 , 215 , 1 , 1 ,
+330 , 7824 , 1 , 195 , 1 , 1 ,
+330 , 7825 , 1 , 205 , 1 , 1 ,
+330 , 7826 , 1 , 195 , 1 , 1 ,
+330 , 7827 , 1 , 195 , 1 , 1 ,
+330 , 7828 , 1 , 195 , 1 , 1 ,
+330 , 7829 , 1 , 185 , 1 , 1 ,
+330 , 7830 , 1 , 195 , 1 , 1 ,
+330 , 7831 , 1 , 194 , 1 , 1 ,
+330 , 7832 , 1 , 205 , 1 , 1 ,
+330 , 7833 , 1 , 185 , 1 , 1 ,
+330 , 7834 , 269 , 184 , 1 , 1 , 7826 7816 7813 7777 7814 7798 7791 7831 7811 7793 7808 7810 7797 7796 7784 7829 7799 7780 7821 7786 7822 7774 7800 7820 7778 7794 7792 7824 7783 7833 7819 7781 7807 7817 7805 7806 7815 7825 7787 7779 7804 7802 7818 7775 7782 7828 7823 7785 7803 7832 7812 7789 7795 7790 7801 7809 7827 7788 7776 7830
+331 , 7835 , 16 , 185 , 1 , 1 ,
+331 , 7836 , 16 , 185 , 1 , 1 ,
+331 , 7837 , 16 , 174 , 1 , 1 ,
+331 , 7838 , 16 , 174 , 1 , 1 ,
+331 , 7839 , 16 , 174 , 1 , 1 ,
+331 , 7840 , 16 , 185 , 1 , 1 ,
+331 , 7841 , 16 , 194 , 1 , 1 ,
+331 , 7842 , 16 , 186 , 1 , 1 ,
+331 , 7843 , 14 , 195 , 1 , 1 ,
+331 , 7844 , 13 , 195 , 1 , 1 ,
+331 , 7845 , 12 , 205 , 1 , 1 ,
+331 , 7846 , 12 , 216 , 1 , 1 ,
+331 , 7847 , 12 , 226 , 1 , 1 ,
+331 , 7848 , 12 , 226 , 1 , 1 ,
+331 , 7849 , 11 , 215 , 1 , 1 ,
+331 , 7850 , 11 , 226 , 1 , 1 ,
+331 , 7851 , 11 , 215 , 1 , 1 ,
+331 , 7852 , 11 , 225 , 1 , 1 ,
+331 , 7853 , 11 , 226 , 1 , 1 ,
+331 , 7854 , 11 , 236 , 1 , 1 ,
+331 , 7855 , 9 , 236 , 1 , 1 ,
+331 , 7856 , 9 , 246 , 1 , 1 ,
+331 , 7857 , 9 , 226 , 1 , 1 ,
+331 , 7858 , 9 , 226 , 1 , 1 ,
+331 , 7859 , 8 , 215 , 1 , 1 ,
+331 , 7860 , 8 , 205 , 1 , 1 ,
+331 , 7861 , 8 , 184 , 1 , 1 ,
+331 , 7862 , 8 , 205 , 1 , 1 ,
+331 , 7863 , 8 , 205 , 1 , 1 ,
+331 , 7864 , 7 , 195 , 1 , 1 ,
+331 , 7865 , 6 , 195 , 1 , 1 ,
+331 , 7866 , 6 , 195 , 1 , 1 ,
+331 , 7867 , 6 , 205 , 1 , 1 ,
+331 , 7868 , 6 , 215 , 1 , 1 ,
+331 , 7869 , 5 , 195 , 1 , 1 ,
+331 , 7870 , 5 , 206 , 1 , 1 ,
+331 , 7871 , 5 , 195 , 1 , 1 ,
+331 , 7872 , 5 , 195 , 1 , 1 ,
+331 , 7873 , 5 , 185 , 1 , 1 ,
+331 , 7874 , 5 , 206 , 1 , 1 ,
+331 , 7875 , 4 , 225 , 1 , 1 ,
+331 , 7876 , 4 , 215 , 1 , 1 ,
+331 , 7877 , 4 , 195 , 1 , 1 ,
+331 , 7878 , 4 , 205 , 1 , 1 ,
+331 , 7879 , 4 , 195 , 1 , 1 ,
+331 , 7880 , 4 , 195 , 1 , 1 ,
+331 , 7881 , 4 , 205 , 1 , 1 ,
+331 , 7882 , 3 , 195 , 1 , 1 ,
+331 , 7883 , 3 , 195 , 1 , 1 ,
+331 , 7884 , 3 , 216 , 1 , 1 ,
+331 , 7885 , 2 , 205 , 1 , 1 ,
+331 , 7886 , 2 , 195 , 1 , 1 ,
+331 , 7887 , 2 , 185 , 1 , 1 ,
+331 , 7888 , 2 , 185 , 1 , 1 ,
+331 , 7889 , 2 , 195 , 1 , 1 ,
+331 , 7890 , 2 , 194 , 1 , 1 ,
+331 , 7891 , 2 , 195 , 1 , 1 ,
+331 , 7892 , 2 , 195 , 1 , 1 ,
+331 , 7893 , 2 , 185 , 1 , 1 ,
+331 , 7894 , 2 , 185 , 1 , 1 ,
+331 , 7895 , 270 , 165 , 1 , 1 , 7841 7893 7873 7864 7856 7837 7854 7850 7874 7889 7866 7879 7846 7869 7886 7871 7859 7881 7855 7887 7857 7842 7867 7883 7838 7894 7840 7868 7861 7862 7836 7853 7835 7847 7865 7843 7870 7852 7844 7890 7849 7877 7888 7875 7876 7880 7851 7839 7885 7845 7882 7863 7858 7878 7891 7872 7848 7860 7892 7884
+332 , 7896 , 5 , 11 , 1 , 1 ,
+332 , 7897 , 31 , 32 , 1 , 1 , 7896
+332 , 7898 , 31 , 32 , 1 , 1 , 7896
+332 , 7899 , 31 , 31 , 1 , 1 , 7896
+332 , 7900 , 31 , 21 , 1 , 1 , 7896
+332 , 7901 , 31 , 31 , 1 , 1 , 7896
+332 , 7902 , 31 , 31 , 1 , 1 , 7896
+332 , 7903 , 30 , 32 , 1 , 1 , 7896
+332 , 7904 , 30 , 31 , 1 , 1 , 7896
+332 , 7905 , 29 , 31 , 1 , 1 , 7896
+332 , 7906 , 29 , 31 , 1 , 1 , 7896
+332 , 7907 , 29 , 31 , 1 , 1 , 7896
+332 , 7908 , 29 , 31 , 1 , 1 , 7896
+332 , 7909 , 29 , 31 , 1 , 1 , 7896
+332 , 7910 , 29 , 31 , 1 , 1 , 7896
+332 , 7911 , 29 , 31 , 1 , 1 , 7896
+332 , 7912 , 29 , 31 , 1 , 1 , 7896
+332 , 7913 , 29 , 31 , 1 , 1 , 7896
+332 , 7914 , 29 , 31 , 1 , 1 , 7896
+332 , 7915 , 29 , 31 , 1 , 1 , 7896
+332 , 7916 , 79 , 0 , 1 , 1 , 7898 7907 7910 7901 7900 7897 7899 7909 7911 7903 7904 7906 7913 7908 7915 7902 7914 7912 7905
+332 , 7917 , 94 , 33 , 1 , 1 , 7916
+332 , 7918 , 93 , 34 , 1 , 1 , 7916
+332 , 7919 , 93 , 34 , 1 , 1 , 7916
+332 , 7920 , 93 , 34 , 1 , 1 , 7916
+332 , 7921 , 93 , 24 , 1 , 1 , 7916
+332 , 7922 , 93 , 24 , 1 , 1 , 7916
+332 , 7923 , 93 , 35 , 1 , 1 , 7916
+332 , 7924 , 93 , 12 , 1 , 1 , 7916
+332 , 7925 , 92 , 25 , 1 , 1 , 7916
+332 , 7926 , 92 , 33 , 1 , 1 , 7916
+332 , 7927 , 92 , 23 , 1 , 1 , 7916
+332 , 7928 , 92 , 0 , 1 , 1 , 7916
+332 , 7929 , 92 , 25 , 1 , 1 , 7916
+332 , 7930 , 92 , 0 , 1 , 1 , 7916
+332 , 7931 , 92 , 33 , 1 , 1 , 7916
+332 , 7932 , 92 , 0 , 1 , 1 , 7916
+332 , 7933 , 92 , 12 , 1 , 1 , 7916
+332 , 7934 , 92 , 11 , 1 , 1 , 7916
+332 , 7935 , 92 , 25 , 1 , 1 , 7916
+332 , 7936 , 146 , 0 , 1 , 1 , 7917 7924 7929 7935 7918 7919 7934 7927 7926 7922 7933 7928 7931 7921 7920 7925 7923 7932 7930
+333 , 7937 , 2 , 11 , 1 , 1 ,
+333 , 7938 , 127 , 242 , 1 , 1 , 7937
+333 , 7939 , 124 , 252 , 1 , 1 , 7937
+333 , 7940 , 111 , 239 , 1 , 1 , 7937
+333 , 7941 , 104 , 259 , 1 , 1 , 7937
+333 , 7942 , 101 , 250 , 1 , 1 , 7937
+333 , 7943 , 100 , 256 , 1 , 1 , 7937
+333 , 7944 , 96 , 276 , 1 , 1 , 7937
+333 , 7945 , 96 , 254 , 1 , 1 , 7937
+333 , 7946 , 96 , 208 , 1 , 1 , 7937
+333 , 7947 , 130 , 237 , 1 , 1 , 7937
+333 , 7948 , 130 , 207 , 1 , 1 , 7937
+333 , 7949 , 73 , 295 , 1 , 1 , 7937
+333 , 7950 , 72 , 305 , 1 , 1 , 7937
+333 , 7951 , 72 , 118 , 1 , 1 , 7937
+333 , 7952 , 72 , 194 , 1 , 1 , 7937
+333 , 7953 , 72 , 186 , 1 , 1 , 7937
+333 , 7954 , 72 , 305 , 1 , 1 , 7937
+333 , 7955 , 72 , 213 , 1 , 1 , 7937
+333 , 7956 , 72 , 152 , 1 , 1 , 7937
+333 , 7957 , 71 , 304 , 1 , 1 , 7937
+333 , 7958 , 71 , 273 , 1 , 1 , 7937
+333 , 7959 , 70 , 294 , 1 , 1 , 7937
+333 , 7960 , 70 , 279 , 1 , 1 , 7937
+333 , 7961 , 70 , 215 , 1 , 1 , 7937
+333 , 7962 , 70 , 295 , 1 , 1 , 7937
+333 , 7963 , 70 , 295 , 1 , 1 , 7937
+333 , 7964 , 70 , 302 , 1 , 1 , 7937
+333 , 7965 , 70 , 214 , 1 , 1 , 7937
+333 , 7966 , 70 , 265 , 1 , 1 , 7937
+333 , 7967 , 70 , 72 , 1 , 1 , 7937
+333 , 7968 , 70 , 280 , 1 , 1 , 7937
+333 , 7969 , 70 , 281 , 1 , 1 , 7937
+333 , 7970 , 70 , 87 , 1 , 1 , 7937
+333 , 7971 , 69 , 165 , 1 , 1 , 7937
+333 , 7972 , 42 , 56 , 1 , 1 , 7937
+333 , 7973 , 42 , 335 , 1 , 1 , 7937
+333 , 7974 , 42 , 339 , 1 , 1 , 7937
+333 , 7975 , 41 , 92 , 1 , 1 , 7937
+333 , 7976 , 41 , 337 , 1 , 1 , 7937
+333 , 7977 , 41 , 337 , 1 , 1 , 7937
+333 , 7978 , 40 , 74 , 1 , 1 , 7937
+333 , 7979 , 40 , 338 , 1 , 1 , 7937
+333 , 7980 , 40 , 330 , 1 , 1 , 7937
+333 , 7981 , 39 , 114 , 1 , 1 , 7937
+333 , 7982 , 39 , 274 , 1 , 1 , 7937
+333 , 7983 , 39 , 333 , 1 , 1 , 7937
+333 , 7984 , 39 , 332 , 1 , 1 , 7937
+333 , 7985 , 39 , 332 , 1 , 1 , 7937
+333 , 7986 , 38 , 333 , 1 , 1 , 7937
+333 , 7987 , 38 , 332 , 1 , 1 , 7937
+333 , 7988 , 37 , 328 , 1 , 1 , 7937
+333 , 7989 , 37 , 90 , 1 , 1 , 7937
+333 , 7990 , 37 , 335 , 1 , 1 , 7937
+333 , 7991 , 37 , 329 , 1 , 1 , 7937
+333 , 7992 , 37 , 329 , 1 , 1 , 7937
+333 , 7993 , 36 , 289 , 1 , 1 , 7937
+333 , 7994 , 36 , 313 , 1 , 1 , 7937
+333 , 7995 , 36 , 180 , 1 , 1 , 7937
+333 , 7996 , 35 , 42 , 1 , 1 , 7937
+333 , 7997 , 35 , 219 , 1 , 1 , 7937
+333 , 7998 , 34 , 331 , 1 , 1 , 7937
+333 , 7999 , 34 , 129 , 1 , 1 , 7937
+333 , 8000 , 34 , 337 , 1 , 1 , 7937
+333 , 8001 , 34 , 332 , 1 , 1 , 7937
+333 , 8002 , 34 , 123 , 1 , 1 , 7937
+333 , 8003 , 34 , 334 , 1 , 1 , 7937
+333 , 8004 , 33 , 54 , 1 , 1 , 7937
+333 , 8005 , 33 , 43 , 1 , 1 , 7937
+333 , 8006 , 32 , 44 , 1 , 1 , 7937
+333 , 8007 , 31 , 147 , 1 , 1 , 7937
+333 , 8008 , 31 , 45 , 1 , 1 , 7937
+333 , 8009 , 30 , 122 , 1 , 1 , 7937
+333 , 8010 , 30 , 56 , 1 , 1 , 7937
+333 , 8011 , 30 , 103 , 1 , 1 , 7937
+333 , 8012 , 30 , 141 , 1 , 1 , 7937
+333 , 8013 , 30 , 46 , 1 , 1 , 7937
+333 , 8014 , 30 , 60 , 1 , 1 , 7937
+333 , 8015 , 30 , 46 , 1 , 1 , 7937
+333 , 8016 , 29 , 125 , 1 , 1 , 7937
+333 , 8017 , 29 , 48 , 1 , 1 , 7937
+333 , 8018 , 28 , 48 , 1 , 1 , 7937
+333 , 8019 , 28 , 55 , 1 , 1 , 7937
+333 , 8020 , 28 , 44 , 1 , 1 , 7937
+333 , 8021 , 28 , 82 , 1 , 1 , 7937
+333 , 8022 , 28 , 55 , 1 , 1 , 7937
+333 , 8023 , 28 , 55 , 1 , 1 , 7937
+333 , 8024 , 28 , 41 , 1 , 1 , 7937
+333 , 8025 , 28 , 42 , 1 , 1 , 7937
+333 , 8026 , 27 , 42 , 1 , 1 , 7937
+333 , 8027 , 27 , 31 , 1 , 1 , 7937
+333 , 8028 , 26 , 31 , 1 , 1 , 7937
+333 , 8029 , 26 , 53 , 1 , 1 , 7937
+333 , 8030 , 26 , 42 , 1 , 1 , 7937
+333 , 8031 , 26 , 41 , 1 , 1 , 7937
+333 , 8032 , 26 , 31 , 1 , 1 , 7937
+333 , 8033 , 26 , 31 , 1 , 1 , 7937
+333 , 8034 , 26 , 52 , 1 , 1 , 7937
+333 , 8035 , 26 , 32 , 1 , 1 , 7937
+333 , 8036 , 26 , 31 , 1 , 1 , 7937
+333 , 8037 , 26 , 42 , 1 , 1 , 7937
+333 , 8038 , 396 , 11 , 1 , 1 , 8037 8022 7962 7998 7948 7953 8013 8036 7979 7992 8017 7946 7969 8014 7945 8032 8006 7940 8002 7983 7982 7990 7951 8023 7978 7942 8010 7993 8033 8007 7996 8035 7963 7987 8034 8026 8003 7984 8029 8009 7957 7995 7944 8025 7991 7961 8000 7972 8028 8011 7943 7997 8018 7966 7958 8001 7985 7977 7981 7967 8012 7968 7970 8016 7949 7988 7989 7994 8005 7950 8008 7947 8004 7975 7952 7974 8021 8027 7973 7971 8024 7959 7939 8015 8031 7964 7956 8020 7980 7986 7999 7965 7960 7954 8019 7976 7955 7938 7941 8030
+333 , 8039 , 610 , 630 , 1 , 1 , 8038
+333 , 8040 , 563 , 883 , 1 , 1 , 8038
+333 , 8041 , 563 , 607 , 1 , 1 , 8038
+333 , 8042 , 563 , 863 , 1 , 1 , 8038
+333 , 8043 , 563 , 705 , 1 , 1 , 8038
+333 , 8044 , 563 , 736 , 1 , 1 , 8038
+333 , 8045 , 563 , 954 , 1 , 1 , 8038
+333 , 8046 , 563 , 751 , 1 , 1 , 8038
+333 , 8047 , 563 , 889 , 1 , 1 , 8038
+333 , 8048 , 563 , 896 , 1 , 1 , 8038
+333 , 8049 , 562 , 877 , 1 , 1 , 8038
+333 , 8050 , 550 , 1137 , 1 , 1 , 8038
+333 , 8051 , 550 , 1072 , 1 , 1 , 8038
+333 , 8052 , 550 , 560 , 1 , 1 , 8038
+333 , 8053 , 550 , 700 , 1 , 1 , 8038
+333 , 8054 , 550 , 1082 , 1 , 1 , 8038
+333 , 8055 , 550 , 877 , 1 , 1 , 8038
+333 , 8056 , 550 , 1031 , 1 , 1 , 8038
+333 , 8057 , 550 , 838 , 1 , 1 , 8038
+333 , 8058 , 550 , 1006 , 1 , 1 , 8038
+333 , 8059 , 550 , 1243 , 1 , 1 , 8038
+333 , 8060 , 499 , 1270 , 1 , 1 , 8038
+333 , 8061 , 499 , 1270 , 1 , 1 , 8038
+333 , 8062 , 499 , 1331 , 1 , 1 , 8038
+333 , 8063 , 499 , 1271 , 1 , 1 , 8038
+333 , 8064 , 499 , 1208 , 1 , 1 , 8038
+333 , 8065 , 499 , 1187 , 1 , 1 , 8038
+333 , 8066 , 499 , 1193 , 1 , 1 , 8038
+333 , 8067 , 498 , 1332 , 1 , 1 , 8038
+333 , 8068 , 498 , 1062 , 1 , 1 , 8038
+333 , 8069 , 498 , 1308 , 1 , 1 , 8038
+333 , 8070 , 490 , 1384 , 1 , 1 , 8038
+333 , 8071 , 490 , 549 , 1 , 1 , 8038
+333 , 8072 , 490 , 740 , 1 , 1 , 8038
+333 , 8073 , 490 , 1030 , 1 , 1 , 8038
+333 , 8074 , 490 , 1327 , 1 , 1 , 8038
+333 , 8075 , 490 , 1328 , 1 , 1 , 8038
+333 , 8076 , 490 , 1033 , 1 , 1 , 8038
+333 , 8077 , 490 , 1210 , 1 , 1 , 8038
+333 , 8078 , 490 , 938 , 1 , 1 , 8038
+333 , 8079 , 490 , 1385 , 1 , 1 , 8038
+333 , 8080 , 610 , 838 , 1 , 1 , 8038
+333 , 8081 , 610 , 863 , 1 , 1 , 8038
+333 , 8082 , 433 , 1451 , 1 , 1 , 8038
+333 , 8083 , 433 , 380 , 1 , 1 , 8038
+333 , 8084 , 433 , 251 , 1 , 1 , 8038
+333 , 8085 , 433 , 1452 , 1 , 1 , 8038
+333 , 8086 , 433 , 1097 , 1 , 1 , 8038
+333 , 8087 , 433 , 847 , 1 , 1 , 8038
+333 , 8088 , 433 , 537 , 1 , 1 , 8038
+333 , 8089 , 432 , 1275 , 1 , 1 , 8038
+333 , 8090 , 432 , 266 , 1 , 1 , 8038
+333 , 8091 , 431 , 572 , 1 , 1 , 8038
+333 , 8092 , 431 , 447 , 1 , 1 , 8038
+333 , 8093 , 431 , 395 , 1 , 1 , 8038
+333 , 8094 , 431 , 1113 , 1 , 1 , 8038
+333 , 8095 , 431 , 214 , 1 , 1 , 8038
+333 , 8096 , 431 , 1307 , 1 , 1 , 8038
+333 , 8097 , 431 , 1434 , 1 , 1 , 8038
+333 , 8098 , 431 , 1434 , 1 , 1 , 8038
+333 , 8099 , 430 , 1381 , 1 , 1 , 8038
+333 , 8100 , 430 , 526 , 1 , 1 , 8038
+333 , 8101 , 430 , 1382 , 1 , 1 , 8038
+333 , 8102 , 428 , 1354 , 1 , 1 , 8038
+333 , 8103 , 428 , 940 , 1 , 1 , 8038
+333 , 8104 , 427 , 225 , 1 , 1 , 8038
+333 , 8105 , 427 , 359 , 1 , 1 , 8038
+333 , 8106 , 427 , 142 , 1 , 1 , 8038
+333 , 8107 , 426 , 1279 , 1 , 1 , 8038
+333 , 8108 , 426 , 1005 , 1 , 1 , 8038
+333 , 8109 , 425 , 1084 , 1 , 1 , 8038
+333 , 8110 , 425 , 1356 , 1 , 1 , 8038
+333 , 8111 , 425 , 491 , 1 , 1 , 8038
+333 , 8112 , 425 , 1106 , 1 , 1 , 8038
+333 , 8113 , 425 , 1284 , 1 , 1 , 8038
+333 , 8114 , 424 , 1106 , 1 , 1 , 8038
+333 , 8115 , 424 , 1216 , 1 , 1 , 8038
+333 , 8116 , 424 , 489 , 1 , 1 , 8038
+333 , 8117 , 423 , 670 , 1 , 1 , 8038
+333 , 8118 , 423 , 1140 , 1 , 1 , 8038
+333 , 8119 , 423 , 580 , 1 , 1 , 8038
+333 , 8120 , 423 , 1316 , 1 , 1 , 8038
+333 , 8121 , 423 , 671 , 1 , 1 , 8038
+333 , 8122 , 422 , 1287 , 1 , 1 , 8038
+333 , 8123 , 422 , 653 , 1 , 1 , 8038
+333 , 8124 , 422 , 476 , 1 , 1 , 8038
+333 , 8125 , 422 , 581 , 1 , 1 , 8038
+333 , 8126 , 422 , 580 , 1 , 1 , 8038
+333 , 8127 , 422 , 1288 , 1 , 1 , 8038
+333 , 8128 , 421 , 22 , 1 , 1 , 8038
+333 , 8129 , 421 , 282 , 1 , 1 , 8038
+333 , 8130 , 421 , 23 , 1 , 1 , 8038
+333 , 8131 , 421 , 722 , 1 , 1 , 8038
+333 , 8132 , 421 , 1285 , 1 , 1 , 8038
+333 , 8133 , 421 , 123 , 1 , 1 , 8038
+333 , 8134 , 421 , 655 , 1 , 1 , 8038
+333 , 8135 , 421 , 22 , 1 , 1 , 8038
+333 , 8136 , 421 , 102 , 1 , 1 , 8038
+333 , 8137 , 421 , 585 , 1 , 1 , 8038
+333 , 8138 , 421 , 66 , 1 , 1 , 8038
+333 , 8139 , 1912 , 21 , 1 , 1 , 8132 8067 8075 8097 8133 8060 8093 8107 8108 8084 8104 8065 8113 8125 8127 8079 8064 8118 8105 8123 8114 8066 8063 8094 8112 8069 8096 8087 8121 8088 8085 8049 8116 8039 8101 8083 8109 8092 8136 8070 8045 8040 8068 8080 8100 8077 8138 8044 8051 8111 8074 8124 8115 8095 8041 8098 8076 8042 8106 8089 8090 8072 8055 8043 8091 8103 8128 8129 8073 8137 8059 8119 8081 8110 8078 8086 8053 8102 8120 8082 8047 8052 8099 8046 8058 8071 8054 8134 8048 8126 8122 8117 8062 8057 8131 8061 8130 8050 8135 8056
+334 , 8140 , 3 , 41 , 1 , 1 ,
+334 , 8141 , 3 , 52 , 1 , 1 ,
+334 , 8142 , 3 , 52 , 1 , 1 ,
+334 , 8143 , 66 , 0 , 1 , 1 , 8140 8141 8142
+335 , 8144 , 1 , 41 , 1 , 1 ,
+335 , 8145 , 1 , 41 , 1 , 1 ,
+335 , 8146 , 1 , 41 , 1 , 1 ,
+335 , 8147 , 54 , 0 , 1 , 1 , 8145 8144 8146
+336 , 8148 , 2 , 41 , 1 , 1 ,
+336 , 8149 , 2 , 52 , 1 , 1 ,
+336 , 8150 , 2 , 41 , 1 , 1 ,
+336 , 8151 , 65 , 0 , 1 , 1 , 8149 8148 8150
+337 , 8152 , 2 , 41 , 1 , 1 ,
+337 , 8153 , 2 , 52 , 1 , 1 ,
+337 , 8154 , 2 , 52 , 1 , 1 ,
+337 , 8155 , 65 , 0 , 1 , 1 , 8154 8152 8153
+338 , 8156 , 2 , 41 , 1 , 1 ,
+338 , 8157 , 2 , 41 , 1 , 1 ,
+338 , 8158 , 2 , 52 , 1 , 1 ,
+338 , 8159 , 65 , 0 , 1 , 1 , 8158 8156 8157
+339 , 8160 , 1 , 41 , 1 , 1 ,
+339 , 8161 , 1 , 52 , 1 , 1 ,
+339 , 8162 , 1 , 52 , 1 , 1 ,
+339 , 8163 , 64 , 0 , 1 , 1 , 8160 8162 8161
+340 , 8164 , 2 , 41 , 1 , 1 ,
+340 , 8165 , 2 , 41 , 1 , 1 ,
+340 , 8166 , 2 , 52 , 1 , 1 ,
+340 , 8167 , 65 , 0 , 1 , 1 , 8165 8166 8164
+341 , 8168 , 2 , 41 , 1 , 1 ,
+341 , 8169 , 2 , 41 , 1 , 1 ,
+341 , 8170 , 2 , 52 , 1 , 1 ,
+341 , 8171 , 65 , 0 , 1 , 1 , 8169 8168 8170
+342 , 8172 , 2 , 41 , 1 , 1 ,
+342 , 8173 , 2 , 52 , 1 , 1 ,
+342 , 8174 , 2 , 41 , 1 , 1 ,
+342 , 8175 , 65 , 0 , 1 , 1 , 8172 8173 8174
+343 , 8176 , 1 , 41 , 1 , 1 ,
+343 , 8177 , 1 , 41 , 1 , 1 ,
+343 , 8178 , 1 , 41 , 1 , 1 ,
+343 , 8179 , 54 , 0 , 1 , 1 , 8178 8176 8177
+344 , 8241 , 2 , 41 , 1 , 1 ,
+344 , 8242 , 2 , 41 , 1 , 1 ,
+344 , 8243 , 2 , 41 , 1 , 1 ,
+344 , 8244 , 55 , 0 , 1 , 1 , 8243 8241 8242
+345 , 8245 , 8 , 52 , 1 , 1 ,
+345 , 8246 , 8 , 42 , 1 , 1 ,
+345 , 8247 , 7 , 41 , 1 , 1 ,
+345 , 8248 , 7 , 42 , 1 , 1 ,
+345 , 8249 , 7 , 42 , 1 , 1 ,
+345 , 8250 , 7 , 52 , 1 , 1 ,
+345 , 8251 , 7 , 52 , 1 , 1 ,
+345 , 8252 , 6 , 52 , 1 , 1 ,
+345 , 8253 , 6 , 52 , 1 , 1 ,
+345 , 8254 , 6 , 53 , 1 , 1 ,
+345 , 8255 , 5 , 53 , 1 , 1 ,
+345 , 8256 , 5 , 54 , 1 , 1 ,
+345 , 8257 , 5 , 54 , 1 , 1 ,
+345 , 8258 , 5 , 54 , 1 , 1 ,
+345 , 8259 , 5 , 54 , 1 , 1 ,
+345 , 8260 , 5 , 44 , 1 , 1 ,
+345 , 8261 , 5 , 52 , 1 , 1 ,
+345 , 8262 , 4 , 52 , 1 , 1 ,
+345 , 8263 , 4 , 52 , 1 , 1 ,
+345 , 8264 , 4 , 52 , 1 , 1 ,
+345 , 8265 , 3 , 52 , 1 , 1 ,
+345 , 8266 , 3 , 53 , 1 , 1 ,
+345 , 8267 , 3 , 52 , 1 , 1 ,
+345 , 8268 , 3 , 52 , 1 , 1 ,
+345 , 8269 , 3 , 52 , 1 , 1 ,
+345 , 8270 , 3 , 52 , 1 , 1 ,
+345 , 8271 , 3 , 52 , 1 , 1 ,
+345 , 8272 , 3 , 52 , 1 , 1 ,
+345 , 8273 , 3 , 52 , 1 , 1 ,
+345 , 8274 , 3 , 52 , 1 , 1 ,
+345 , 8275 , 73 , 21 , 1 , 1 , 8247 8265 8250 8261 8248 8252 8269 8262 8267 8274 8253 8254 8259 8271 8245 8266 8268 8249 8270 8258 8257 8263 8260 8264 8246 8272 8273 8255 8256 8251
+346 , 8276 , 8 , 41 , 1 , 1 ,
+346 , 8277 , 7 , 41 , 1 , 1 ,
+346 , 8278 , 7 , 41 , 1 , 1 ,
+346 , 8279 , 7 , 41 , 1 , 1 ,
+346 , 8280 , 7 , 52 , 1 , 1 ,
+346 , 8281 , 7 , 52 , 1 , 1 ,
+346 , 8282 , 7 , 52 , 1 , 1 ,
+346 , 8283 , 7 , 52 , 1 , 1 ,
+346 , 8284 , 7 , 52 , 1 , 1 ,
+346 , 8285 , 7 , 52 , 1 , 1 ,
+346 , 8286 , 5 , 62 , 1 , 1 ,
+346 , 8287 , 5 , 52 , 1 , 1 ,
+346 , 8288 , 5 , 52 , 1 , 1 ,
+346 , 8289 , 5 , 52 , 1 , 1 ,
+346 , 8290 , 5 , 52 , 1 , 1 ,
+346 , 8291 , 5 , 52 , 1 , 1 ,
+346 , 8292 , 5 , 52 , 1 , 1 ,
+346 , 8293 , 5 , 52 , 1 , 1 ,
+346 , 8294 , 5 , 52 , 1 , 1 ,
+346 , 8295 , 5 , 52 , 1 , 1 ,
+346 , 8296 , 3 , 52 , 1 , 1 ,
+346 , 8297 , 3 , 52 , 1 , 1 ,
+346 , 8298 , 3 , 52 , 1 , 1 ,
+346 , 8299 , 3 , 52 , 1 , 1 ,
+346 , 8300 , 3 , 52 , 1 , 1 ,
+346 , 8301 , 3 , 41 , 1 , 1 ,
+346 , 8302 , 3 , 41 , 1 , 1 ,
+346 , 8303 , 3 , 41 , 1 , 1 ,
+346 , 8304 , 3 , 52 , 1 , 1 ,
+346 , 8305 , 3 , 41 , 1 , 1 ,
+346 , 8306 , 80 , 21 , 1 , 1 , 8283 8284 8279 8291 8285 8300 8281 8295 8296 8286 8298 8302 8299 8289 8290 8294 8297 8305 8276 8288 8282 8278 8293 8303 8292 8301 8280 8277 8304 8287
+347 , 8368 , 15 , 11 , 1 , 1 ,
+347 , 8369 , 41 , 31 , 1 , 1 , 8368
+347 , 8370 , 41 , 31 , 1 , 1 , 8368
+347 , 8371 , 41 , 31 , 1 , 1 , 8368
+347 , 8372 , 40 , 31 , 1 , 1 , 8368
+347 , 8373 , 40 , 31 , 1 , 1 , 8368
+347 , 8374 , 40 , 31 , 1 , 1 , 8368
+347 , 8375 , 40 , 31 , 1 , 1 , 8368
+347 , 8376 , 40 , 31 , 1 , 1 , 8368
+347 , 8377 , 40 , 31 , 1 , 1 , 8368
+347 , 8378 , 39 , 32 , 1 , 1 , 8368
+347 , 8379 , 39 , 32 , 1 , 1 , 8368
+347 , 8380 , 39 , 31 , 1 , 1 , 8368
+347 , 8381 , 39 , 31 , 1 , 1 , 8368
+347 , 8382 , 39 , 31 , 1 , 1 , 8368
+347 , 8383 , 39 , 31 , 1 , 1 , 8368
+347 , 8384 , 39 , 31 , 1 , 1 , 8368
+347 , 8385 , 39 , 41 , 1 , 1 , 8368
+347 , 8386 , 39 , 31 , 1 , 1 , 8368
+347 , 8387 , 39 , 31 , 1 , 1 , 8368
+347 , 8388 , 93 , 21 , 1 , 1 , 8375 8376 8385 8380 8370 8384 8383 8377 8378 8379 8371 8387 8373 8374 8369 8372 8381 8382 8386
+347 , 8389 , 128 , 40 , 1 , 1 , 8388
+347 , 8390 , 128 , 20 , 1 , 1 , 8388
+347 , 8391 , 128 , 30 , 1 , 1 , 8388
+347 , 8392 , 128 , 20 , 1 , 1 , 8388
+347 , 8393 , 128 , 20 , 1 , 1 , 8388
+347 , 8394 , 128 , 91 , 1 , 1 , 8388
+347 , 8395 , 128 , 31 , 1 , 1 , 8388
+347 , 8396 , 128 , 41 , 1 , 1 , 8388
+347 , 8397 , 128 , 31 , 1 , 1 , 8388
+347 , 8398 , 126 , 11 , 1 , 1 , 8388
+347 , 8399 , 126 , 11 , 1 , 1 , 8388
+347 , 8400 , 126 , 21 , 1 , 1 , 8388
+347 , 8401 , 126 , 103 , 1 , 1 , 8388
+347 , 8402 , 126 , 11 , 1 , 1 , 8388
+347 , 8403 , 126 , 41 , 1 , 1 , 8388
+347 , 8404 , 126 , 11 , 1 , 1 , 8388
+347 , 8405 , 126 , 92 , 1 , 1 , 8388
+347 , 8406 , 126 , 41 , 1 , 1 , 8388
+347 , 8407 , 126 , 21 , 1 , 1 , 8388
+347 , 8408 , 243 , 0 , 1 , 1 , 8403 8399 8401 8389 8396 8392 8404 8405 8390 8394 8400 8402 8398 8393 8395 8397 8407 8391 8406
+348 , 8409 , 3 , 41 , 1 , 1 ,
+348 , 8410 , 3 , 41 , 1 , 1 ,
+348 , 8411 , 3 , 52 , 1 , 1 ,
+348 , 8412 , 66 , 0 , 1 , 1 , 8410 8411 8409
+349 , 8413 , 2 , 41 , 1 , 1 ,
+349 , 8414 , 2 , 52 , 1 , 1 ,
+349 , 8415 , 2 , 41 , 1 , 1 ,
+349 , 8416 , 65 , 0 , 1 , 1 , 8414 8415 8413
+350 , 8417 , 1 , 31 , 1 , 1 ,
+350 , 8418 , 1 , 52 , 1 , 1 ,
+350 , 8419 , 1 , 41 , 1 , 1 ,
+350 , 8420 , 64 , 0 , 1 , 1 , 8418 8419 8417
+351 , 8421 , 3 , 41 , 1 , 1 ,
+351 , 8422 , 3 , 41 , 1 , 1 ,
+351 , 8423 , 3 , 41 , 1 , 1 ,
+351 , 8424 , 56 , 0 , 1 , 1 , 8423 8421 8422
+352 , 8425 , 2 , 41 , 1 , 1 ,
+352 , 8426 , 2 , 52 , 1 , 1 ,
+352 , 8427 , 2 , 41 , 1 , 1 ,
+352 , 8428 , 65 , 0 , 1 , 1 , 8426 8425 8427
+353 , 8438 , 3 , 82 , 1 , 1 ,
+353 , 8439 , 3 , 82 , 1 , 1 ,
+353 , 8440 , 3 , 82 , 1 , 1 ,
+353 , 8441 , 3 , 92 , 1 , 1 ,
+353 , 8442 , 3 , 72 , 1 , 1 ,
+353 , 8443 , 3 , 82 , 1 , 1 ,
+353 , 8444 , 3 , 82 , 1 , 1 ,
+353 , 8445 , 3 , 82 , 1 , 1 ,
+353 , 8446 , 109 , 11 , 1 , 1 , 8444 8440 8443 8438 8442 8445 8441 8439
+354 , 8447 , 3 , 41 , 1 , 1 ,
+354 , 8448 , 3 , 41 , 1 , 1 ,
+354 , 8449 , 3 , 41 , 1 , 1 ,
+354 , 8450 , 56 , 0 , 1 , 1 , 8447 8448 8449
+355 , 8451 , 3 , 72 , 1 , 1 ,
+355 , 8452 , 3 , 72 , 1 , 1 ,
+355 , 8453 , 3 , 92 , 1 , 1 ,
+355 , 8454 , 3 , 82 , 1 , 1 ,
+355 , 8455 , 3 , 82 , 1 , 1 ,
+355 , 8456 , 3 , 82 , 1 , 1 ,
+355 , 8457 , 3 , 82 , 1 , 1 ,
+355 , 8458 , 3 , 82 , 1 , 1 ,
+355 , 8459 , 108 , 11 , 1 , 1 , 8451 8455 8457 8454 8458 8453 8452 8456
+356 , 8460 , 3 , 41 , 1 , 1 ,
+356 , 8461 , 2 , 52 , 1 , 1 ,
+356 , 8462 , 2 , 41 , 1 , 1 ,
+356 , 8463 , 65 , 0 , 1 , 1 , 8462 8461 8460
+357 , 8464 , 2 , 41 , 1 , 1 ,
+357 , 8465 , 2 , 41 , 1 , 1 ,
+357 , 8466 , 2 , 52 , 1 , 1 ,
+357 , 8467 , 65 , 0 , 1 , 1 , 8464 8465 8466
+358 , 8468 , 1 , 41 , 1 , 1 ,
+358 , 8469 , 1 , 52 , 1 , 1 ,
+358 , 8470 , 1 , 52 , 1 , 1 ,
+358 , 8471 , 64 , 0 , 1 , 1 , 8469 8468 8470
+359 , 8472 , 1 , 31 , 1 , 1 ,
+359 , 8473 , 1 , 41 , 1 , 1 ,
+359 , 8474 , 1 , 41 , 1 , 1 ,
+359 , 8475 , 54 , 0 , 1 , 1 , 8474 8472 8473
+360 , 8476 , 1 , 41 , 1 , 1 ,
+360 , 8477 , 1 , 41 , 1 , 1 ,
+360 , 8478 , 1 , 41 , 1 , 1 ,
+360 , 8479 , 54 , 0 , 1 , 1 , 8477 8476 8478
+361 , 8480 , 1 , 72 , 1 , 1 ,
+361 , 8481 , 1 , 82 , 1 , 1 ,
+361 , 8482 , 1 , 92 , 1 , 1 ,
+361 , 8483 , 1 , 92 , 1 , 1 ,
+361 , 8484 , 1 , 82 , 1 , 1 ,
+361 , 8485 , 1 , 82 , 1 , 1 ,
+361 , 8486 , 1 , 82 , 1 , 1 ,
+361 , 8487 , 1 , 82 , 1 , 1 ,
+361 , 8488 , 107 , 11 , 1 , 1 , 8480 8484 8483 8485 8486 8487 8482 8481
+362 , 8489 , 2 , 41 , 1 , 1 ,
+362 , 8490 , 2 , 41 , 1 , 1 ,
+362 , 8491 , 2 , 52 , 1 , 1 ,
+362 , 8492 , 65 , 0 , 1 , 1 , 8491 8489 8490
+363 , 8554 , 3 , 72 , 1 , 1 ,
+363 , 8555 , 3 , 72 , 1 , 1 ,
+363 , 8556 , 3 , 93 , 1 , 1 ,
+363 , 8557 , 3 , 93 , 1 , 1 ,
+363 , 8558 , 3 , 82 , 1 , 1 ,
+363 , 8559 , 3 , 82 , 1 , 1 ,
+363 , 8560 , 3 , 82 , 1 , 1 ,
+363 , 8561 , 3 , 72 , 1 , 1 ,
+363 , 8562 , 108 , 11 , 1 , 1 , 8554 8556 8561 8560 8558 8559 8557 8555
+364 , 8563 , 1 , 72 , 1 , 1 ,
+364 , 8564 , 1 , 82 , 1 , 1 ,
+364 , 8565 , 1 , 92 , 1 , 1 ,
+364 , 8566 , 1 , 82 , 1 , 1 ,
+364 , 8567 , 1 , 82 , 1 , 1 ,
+364 , 8568 , 1 , 72 , 1 , 1 ,
+364 , 8569 , 1 , 82 , 1 , 1 ,
+364 , 8570 , 1 , 82 , 1 , 1 ,
+364 , 8571 , 106 , 11 , 1 , 1 , 8568 8565 8567 8563 8569 8566 8570 8564
+365 , 8572 , 1 , 72 , 1 , 1 ,
+365 , 8573 , 1 , 82 , 1 , 1 ,
+365 , 8574 , 1 , 92 , 1 , 1 ,
+365 , 8575 , 1 , 82 , 1 , 1 ,
+365 , 8576 , 1 , 82 , 1 , 1 ,
+365 , 8577 , 1 , 82 , 1 , 1 ,
+365 , 8578 , 1 , 92 , 1 , 1 ,
+365 , 8579 , 1 , 82 , 1 , 1 ,
+365 , 8580 , 106 , 11 , 1 , 1 , 8579 8574 8578 8572 8577 8576 8575 8573
+366 , 8581 , 2 , 72 , 1 , 1 ,
+366 , 8582 , 2 , 92 , 1 , 1 ,
+366 , 8583 , 2 , 92 , 1 , 1 ,
+366 , 8584 , 2 , 92 , 1 , 1 ,
+366 , 8585 , 2 , 82 , 1 , 1 ,
+366 , 8586 , 2 , 82 , 1 , 1 ,
+366 , 8587 , 2 , 82 , 1 , 1 ,
+366 , 8588 , 2 , 82 , 1 , 1 ,
+366 , 8589 , 107 , 11 , 1 , 1 , 8581 8585 8586 8582 8584 8588 8587 8583
+367 , 8590 , 1 , 72 , 1 , 1 ,
+367 , 8591 , 1 , 83 , 1 , 1 ,
+367 , 8592 , 1 , 93 , 1 , 1 ,
+367 , 8593 , 1 , 82 , 1 , 1 ,
+367 , 8594 , 1 , 72 , 1 , 1 ,
+367 , 8595 , 1 , 82 , 1 , 1 ,
+367 , 8596 , 1 , 82 , 1 , 1 ,
+367 , 8597 , 1 , 83 , 1 , 1 ,
+367 , 8598 , 106 , 11 , 1 , 1 , 8593 8595 8591 8594 8596 8590 8597 8592
+368 , 8599 , 2 , 72 , 1 , 1 ,
+368 , 8600 , 2 , 82 , 1 , 1 ,
+368 , 8601 , 2 , 82 , 1 , 1 ,
+368 , 8602 , 2 , 82 , 1 , 1 ,
+368 , 8603 , 2 , 82 , 1 , 1 ,
+368 , 8604 , 2 , 82 , 1 , 1 ,
+368 , 8605 , 2 , 82 , 1 , 1 ,
+368 , 8606 , 2 , 82 , 1 , 1 ,
+368 , 8607 , 96 , 11 , 1 , 1 , 8602 8601 8600 8603 8606 8604 8605 8599
+369 , 8608 , 2 , 72 , 1 , 1 ,
+369 , 8609 , 2 , 82 , 1 , 1 ,
+369 , 8610 , 2 , 92 , 1 , 1 ,
+369 , 8611 , 2 , 82 , 1 , 1 ,
+369 , 8612 , 2 , 82 , 1 , 1 ,
+369 , 8613 , 2 , 82 , 1 , 1 ,
+369 , 8614 , 2 , 82 , 1 , 1 ,
+369 , 8615 , 2 , 83 , 1 , 1 ,
+369 , 8616 , 108 , 11 , 1 , 1 , 8615 8614 8610 8608 8613 8612 8609 8611
+370 , 8617 , 2 , 72 , 1 , 1 ,
+370 , 8618 , 2 , 72 , 1 , 1 ,
+370 , 8619 , 2 , 92 , 1 , 1 ,
+370 , 8620 , 2 , 82 , 1 , 1 ,
+370 , 8621 , 2 , 72 , 1 , 1 ,
+370 , 8622 , 2 , 82 , 1 , 1 ,
+370 , 8623 , 2 , 82 , 1 , 1 ,
+370 , 8624 , 2 , 82 , 1 , 1 ,
+370 , 8625 , 107 , 11 , 1 , 1 , 8623 8619 8620 8624 8617 8618 8621 8622
+371 , 8626 , 1 , 72 , 1 , 1 ,
+371 , 8627 , 1 , 82 , 1 , 1 ,
+371 , 8628 , 1 , 93 , 1 , 1 ,
+371 , 8629 , 1 , 82 , 1 , 1 ,
+371 , 8630 , 1 , 82 , 1 , 1 ,
+371 , 8631 , 1 , 82 , 1 , 1 ,
+371 , 8632 , 1 , 82 , 1 , 1 ,
+371 , 8633 , 1 , 72 , 1 , 1 ,
+371 , 8634 , 107 , 11 , 1 , 1 , 8629 8626 8631 8633 8628 8627 8632 8630
+372 , 8635 , 1 , 72 , 1 , 1 ,
+372 , 8636 , 1 , 83 , 1 , 1 ,
+372 , 8637 , 1 , 93 , 1 , 1 ,
+372 , 8638 , 1 , 82 , 1 , 1 ,
+372 , 8639 , 1 , 82 , 1 , 1 ,
+372 , 8640 , 1 , 72 , 1 , 1 ,
+372 , 8641 , 1 , 83 , 1 , 1 ,
+372 , 8642 , 1 , 72 , 1 , 1 ,
+372 , 8643 , 106 , 11 , 1 , 1 , 8642 8641 8640 8636 8638 8637 8635 8639
+373 , 8644 , 1 , 72 , 1 , 1 ,
+373 , 8645 , 1 , 82 , 1 , 1 ,
+373 , 8646 , 1 , 93 , 1 , 1 ,
+373 , 8647 , 1 , 82 , 1 , 1 ,
+373 , 8648 , 1 , 82 , 1 , 1 ,
+373 , 8649 , 1 , 82 , 1 , 1 ,
+373 , 8650 , 1 , 82 , 1 , 1 ,
+373 , 8651 , 1 , 72 , 1 , 1 ,
+373 , 8652 , 106 , 11 , 1 , 1 , 8645 8648 8647 8651 8650 8649 8646 8644
+374 , 8653 , 1 , 72 , 1 , 1 ,
+374 , 8654 , 1 , 82 , 1 , 1 ,
+374 , 8655 , 1 , 82 , 1 , 1 ,
+374 , 8656 , 1 , 83 , 1 , 1 ,
+374 , 8657 , 1 , 83 , 1 , 1 ,
+374 , 8658 , 1 , 83 , 1 , 1 ,
+374 , 8659 , 1 , 82 , 1 , 1 ,
+374 , 8660 , 1 , 82 , 1 , 1 ,
+374 , 8661 , 96 , 11 , 1 , 1 , 8654 8657 8660 8659 8656 8658 8655 8653
+375 , 8662 , 2 , 72 , 1 , 1 ,
+375 , 8663 , 2 , 82 , 1 , 1 ,
+375 , 8664 , 2 , 93 , 1 , 1 ,
+375 , 8665 , 2 , 82 , 1 , 1 ,
+375 , 8666 , 2 , 72 , 1 , 1 ,
+375 , 8667 , 2 , 82 , 1 , 1 ,
+375 , 8668 , 2 , 93 , 1 , 1 ,
+375 , 8669 , 2 , 83 , 1 , 1 ,
+375 , 8670 , 108 , 11 , 1 , 1 , 8666 8667 8662 8665 8664 8663 8668 8669
+376 , 8671 , 2 , 72 , 1 , 1 ,
+376 , 8672 , 2 , 82 , 1 , 1 ,
+376 , 8673 , 2 , 93 , 1 , 1 ,
+376 , 8674 , 2 , 83 , 1 , 1 ,
+376 , 8675 , 2 , 72 , 1 , 1 ,
+376 , 8676 , 2 , 83 , 1 , 1 ,
+376 , 8677 , 2 , 83 , 1 , 1 ,
+376 , 8678 , 2 , 72 , 1 , 1 ,
+376 , 8679 , 107 , 11 , 1 , 1 , 8676 8675 8673 8671 8678 8677 8672 8674
+377 , 8680 , 1 , 72 , 1 , 1 ,
+377 , 8681 , 1 , 83 , 1 , 1 ,
+377 , 8682 , 1 , 83 , 1 , 1 ,
+377 , 8683 , 1 , 83 , 1 , 1 ,
+377 , 8684 , 1 , 82 , 1 , 1 ,
+377 , 8685 , 1 , 82 , 1 , 1 ,
+377 , 8686 , 1 , 82 , 1 , 1 ,
+377 , 8687 , 1 , 73 , 1 , 1 ,
+377 , 8688 , 99 , 11 , 1 , 1 , 8686 8681 8687 8683 8684 8680 8685 8682
+378 , 8689 , 1 , 72 , 1 , 1 ,
+378 , 8690 , 1 , 83 , 1 , 1 ,
+378 , 8691 , 1 , 93 , 1 , 1 ,
+378 , 8692 , 1 , 83 , 1 , 1 ,
+378 , 8693 , 1 , 73 , 1 , 1 ,
+378 , 8694 , 1 , 82 , 1 , 1 ,
+378 , 8695 , 1 , 83 , 1 , 1 ,
+378 , 8696 , 1 , 82 , 1 , 1 ,
+378 , 8697 , 107 , 11 , 1 , 1 , 8692 8696 8695 8693 8691 8694 8690 8689
+379 , 8698 , 2 , 72 , 1 , 1 ,
+379 , 8699 , 2 , 82 , 1 , 1 ,
+379 , 8700 , 2 , 93 , 1 , 1 ,
+379 , 8701 , 2 , 93 , 1 , 1 ,
+379 , 8702 , 2 , 72 , 1 , 1 ,
+379 , 8703 , 2 , 72 , 1 , 1 ,
+379 , 8704 , 2 , 83 , 1 , 1 ,
+379 , 8705 , 2 , 83 , 1 , 1 ,
+379 , 8706 , 108 , 11 , 1 , 1 , 8702 8700 8699 8701 8698 8705 8704 8703
+380 , 8707 , 1 , 72 , 1 , 1 ,
+380 , 8708 , 1 , 82 , 1 , 1 ,
+380 , 8709 , 1 , 93 , 1 , 1 ,
+380 , 8710 , 1 , 93 , 1 , 1 ,
+380 , 8711 , 1 , 83 , 1 , 1 ,
+380 , 8712 , 1 , 83 , 1 , 1 ,
+380 , 8713 , 1 , 83 , 1 , 1 ,
+380 , 8714 , 1 , 83 , 1 , 1 ,
+380 , 8715 , 107 , 11 , 1 , 1 , 8709 8708 8713 8712 8711 8707 8710 8714
+381 , 8716 , 1 , 72 , 1 , 1 ,
+381 , 8717 , 1 , 83 , 1 , 1 ,
+381 , 8718 , 1 , 92 , 1 , 1 ,
+381 , 8719 , 1 , 82 , 1 , 1 ,
+381 , 8720 , 1 , 83 , 1 , 1 ,
+381 , 8721 , 1 , 82 , 1 , 1 ,
+381 , 8722 , 1 , 83 , 1 , 1 ,
+381 , 8723 , 1 , 72 , 1 , 1 ,
+381 , 8724 , 106 , 11 , 1 , 1 , 8720 8719 8723 8716 8718 8722 8721 8717
+382 , 8725 , 1 , 73 , 1 , 1 ,
+382 , 8726 , 1 , 83 , 1 , 1 ,
+382 , 8727 , 1 , 93 , 1 , 1 ,
+382 , 8728 , 1 , 83 , 1 , 1 ,
+382 , 8729 , 1 , 83 , 1 , 1 ,
+382 , 8730 , 1 , 83 , 1 , 1 ,
+382 , 8731 , 1 , 82 , 1 , 1 ,
+382 , 8732 , 1 , 73 , 1 , 1 ,
+382 , 8733 , 107 , 11 , 1 , 1 , 8729 8730 8725 8732 8728 8731 8727 8726
+383 , 8734 , 1 , 72 , 1 , 1 ,
+383 , 8735 , 1 , 82 , 1 , 1 ,
+383 , 8736 , 1 , 93 , 1 , 1 ,
+383 , 8737 , 1 , 83 , 1 , 1 ,
+383 , 8738 , 1 , 82 , 1 , 1 ,
+383 , 8739 , 1 , 72 , 1 , 1 ,
+383 , 8740 , 1 , 82 , 1 , 1 ,
+383 , 8741 , 1 , 72 , 1 , 1 ,
+383 , 8742 , 108 , 11 , 1 , 1 , 8738 8740 8739 8741 8735 8734 8737 8736
+384 , 8743 , 1 , 72 , 1 , 1 ,
+384 , 8744 , 1 , 82 , 1 , 1 ,
+384 , 8745 , 1 , 96 , 1 , 1 ,
+384 , 8746 , 1 , 82 , 1 , 1 ,
+384 , 8747 , 1 , 72 , 1 , 1 ,
+384 , 8748 , 1 , 83 , 1 , 1 ,
+384 , 8749 , 1 , 82 , 1 , 1 ,
+384 , 8750 , 1 , 72 , 1 , 1 ,
+384 , 8751 , 110 , 21 , 1 , 1 , 8745 8750 8743 8746 8749 8747 8748 8744
+385 , 8752 , 1 , 73 , 1 , 1 ,
+385 , 8753 , 1 , 73 , 1 , 1 ,
+385 , 8754 , 1 , 83 , 1 , 1 ,
+385 , 8755 , 1 , 83 , 1 , 1 ,
+385 , 8756 , 1 , 73 , 1 , 1 ,
+385 , 8757 , 1 , 82 , 1 , 1 ,
+385 , 8758 , 1 , 83 , 1 , 1 ,
+385 , 8759 , 1 , 83 , 1 , 1 ,
+385 , 8760 , 100 , 11 , 1 , 1 , 8755 8758 8756 8754 8757 8752 8759 8753
+386 , 8761 , 3 , 72 , 1 , 1 ,
+386 , 8762 , 3 , 82 , 1 , 1 ,
+386 , 8763 , 3 , 82 , 1 , 1 ,
+386 , 8764 , 3 , 92 , 1 , 1 ,
+386 , 8765 , 3 , 72 , 1 , 1 ,
+386 , 8766 , 3 , 82 , 1 , 1 ,
+386 , 8767 , 3 , 92 , 1 , 1 ,
+386 , 8768 , 2 , 82 , 1 , 1 ,
+386 , 8769 , 107 , 11 , 1 , 1 , 8766 8764 8761 8767 8763 8768 8762 8765
+387 , 8770 , 2 , 41 , 1 , 1 ,
+387 , 8771 , 2 , 41 , 1 , 1 ,
+387 , 8772 , 2 , 41 , 1 , 1 ,
+387 , 8773 , 55 , 0 , 1 , 1 , 8770 8771 8772
+388 , 8774 , 1 , 41 , 1 , 1 ,
+388 , 8775 , 1 , 52 , 1 , 1 ,
+388 , 8776 , 1 , 41 , 1 , 1 ,
+388 , 8777 , 64 , 0 , 1 , 1 , 8775 8774 8776
+389 , 8778 , 1 , 41 , 1 , 1 ,
+389 , 8779 , 1 , 41 , 1 , 1 ,
+389 , 8780 , 1 , 52 , 1 , 1 ,
+389 , 8781 , 64 , 0 , 1 , 1 , 8779 8778 8780
+390 , 8782 , 1 , 41 , 1 , 1 ,
+390 , 8783 , 1 , 41 , 1 , 1 ,
+390 , 8784 , 1 , 52 , 1 , 1 ,
+390 , 8785 , 1 , 52 , 1 , 1 ,
+390 , 8786 , 1 , 41 , 1 , 1 ,
+390 , 8787 , 1 , 41 , 1 , 1 ,
+390 , 8788 , 1 , 42 , 1 , 1 ,
+390 , 8789 , 1 , 41 , 1 , 1 ,
+390 , 8790 , 1 , 41 , 1 , 1 ,
+390 , 8791 , 1 , 41 , 1 , 1 ,
+390 , 8792 , 66 , 11 , 1 , 1 , 8790 8787 8783 8788 8784 8789 8782 8785 8786 8791
+391 , 8793 , 1 , 41 , 1 , 1 ,
+391 , 8794 , 1 , 42 , 1 , 1 ,
+391 , 8795 , 1 , 52 , 1 , 1 ,
+391 , 8796 , 1 , 52 , 1 , 1 ,
+391 , 8797 , 1 , 52 , 1 , 1 ,
+391 , 8798 , 1 , 42 , 1 , 1 ,
+391 , 8799 , 1 , 42 , 1 , 1 ,
+391 , 8800 , 1 , 52 , 1 , 1 ,
+391 , 8801 , 1 , 41 , 1 , 1 ,
+391 , 8802 , 1 , 41 , 1 , 1 ,
+391 , 8803 , 66 , 11 , 1 , 1 , 8793 8798 8802 8797 8796 8794 8800 8799 8795 8801
+392 , 8804 , 5 , 41 , 1 , 1 ,
+392 , 8805 , 5 , 41 , 1 , 1 ,
+392 , 8806 , 5 , 52 , 1 , 1 ,
+392 , 8807 , 5 , 52 , 1 , 1 ,
+392 , 8808 , 5 , 52 , 1 , 1 ,
+392 , 8809 , 5 , 42 , 1 , 1 ,
+392 , 8810 , 5 , 41 , 1 , 1 ,
+392 , 8811 , 5 , 52 , 1 , 1 ,
+392 , 8812 , 5 , 41 , 1 , 1 ,
+392 , 8813 , 5 , 41 , 1 , 1 ,
+392 , 8814 , 71 , 11 , 1 , 1 , 8808 8806 8804 8810 8809 8812 8805 8807 8811 8813
+393 , 8815 , 9 , 41 , 1 , 1 ,
+393 , 8816 , 9 , 41 , 1 , 1 ,
+393 , 8817 , 9 , 41 , 1 , 1 ,
+393 , 8818 , 9 , 52 , 1 , 1 ,
+393 , 8819 , 9 , 41 , 1 , 1 ,
+393 , 8820 , 9 , 41 , 1 , 1 ,
+393 , 8821 , 9 , 42 , 1 , 1 ,
+393 , 8822 , 9 , 41 , 1 , 1 ,
+393 , 8823 , 9 , 41 , 1 , 1 ,
+393 , 8824 , 9 , 42 , 1 , 1 ,
+393 , 8825 , 76 , 0 , 1 , 1 , 8821 8824 8818 8815 8822 8816 8817 8823 8820 8819
+394 , 8838 , 3 , 41 , 1 , 1 ,
+394 , 8839 , 3 , 41 , 1 , 1 ,
+394 , 8840 , 3 , 41 , 1 , 1 ,
+394 , 8841 , 56 , 0 , 1 , 1 , 8839 8838 8840
+395 , 8842 , 1 , 41 , 1 , 1 ,
+395 , 8843 , 1 , 52 , 1 , 1 ,
+395 , 8844 , 1 , 52 , 1 , 1 ,
+395 , 8845 , 64 , 0 , 1 , 1 , 8843 8844 8842
+396 , 8846 , 17 , 195 , 1 , 1 ,
+396 , 8847 , 16 , 195 , 1 , 1 ,
+396 , 8848 , 16 , 185 , 1 , 1 ,
+396 , 8849 , 16 , 175 , 1 , 1 ,
+396 , 8850 , 16 , 164 , 1 , 1 ,
+396 , 8851 , 16 , 175 , 1 , 1 ,
+396 , 8852 , 16 , 205 , 1 , 1 ,
+396 , 8853 , 16 , 196 , 1 , 1 ,
+396 , 8854 , 16 , 195 , 1 , 1 ,
+396 , 8855 , 14 , 196 , 1 , 1 ,
+396 , 8856 , 13 , 217 , 1 , 1 ,
+396 , 8857 , 13 , 216 , 1 , 1 ,
+396 , 8858 , 13 , 206 , 1 , 1 ,
+396 , 8859 , 13 , 206 , 1 , 1 ,
+396 , 8860 , 13 , 226 , 1 , 1 ,
+396 , 8861 , 13 , 226 , 1 , 1 ,
+396 , 8862 , 13 , 226 , 1 , 1 ,
+396 , 8863 , 13 , 227 , 1 , 1 ,
+396 , 8864 , 13 , 225 , 1 , 1 ,
+396 , 8865 , 12 , 246 , 1 , 1 ,
+396 , 8866 , 10 , 256 , 1 , 1 ,
+396 , 8867 , 10 , 246 , 1 , 1 ,
+396 , 8868 , 10 , 236 , 1 , 1 ,
+396 , 8869 , 10 , 246 , 1 , 1 ,
+396 , 8870 , 10 , 236 , 1 , 1 ,
+396 , 8871 , 10 , 226 , 1 , 1 ,
+396 , 8872 , 9 , 205 , 1 , 1 ,
+396 , 8873 , 9 , 205 , 1 , 1 ,
+396 , 8874 , 9 , 215 , 1 , 1 ,
+396 , 8875 , 9 , 217 , 1 , 1 ,
+396 , 8876 , 7 , 195 , 1 , 1 ,
+396 , 8877 , 7 , 195 , 1 , 1 ,
+396 , 8878 , 7 , 206 , 1 , 1 ,
+396 , 8879 , 7 , 227 , 1 , 1 ,
+396 , 8880 , 7 , 227 , 1 , 1 ,
+396 , 8881 , 7 , 216 , 1 , 1 ,
+396 , 8882 , 7 , 207 , 1 , 1 ,
+396 , 8883 , 7 , 207 , 1 , 1 ,
+396 , 8884 , 6 , 205 , 1 , 1 ,
+396 , 8885 , 6 , 206 , 1 , 1 ,
+396 , 8886 , 5 , 216 , 1 , 1 ,
+396 , 8887 , 5 , 227 , 1 , 1 ,
+396 , 8888 , 5 , 216 , 1 , 1 ,
+396 , 8889 , 5 , 227 , 1 , 1 ,
+396 , 8890 , 5 , 228 , 1 , 1 ,
+396 , 8891 , 5 , 216 , 1 , 1 ,
+396 , 8892 , 5 , 217 , 1 , 1 ,
+396 , 8893 , 5 , 227 , 1 , 1 ,
+396 , 8894 , 5 , 207 , 1 , 1 ,
+396 , 8895 , 5 , 217 , 1 , 1 ,
+396 , 8896 , 2 , 220 , 1 , 1 ,
+396 , 8897 , 2 , 208 , 1 , 1 ,
+396 , 8898 , 2 , 208 , 1 , 1 ,
+396 , 8899 , 2 , 197 , 1 , 1 ,
+396 , 8900 , 2 , 207 , 1 , 1 ,
+396 , 8901 , 2 , 208 , 1 , 1 ,
+396 , 8902 , 2 , 219 , 1 , 1 ,
+396 , 8903 , 2 , 208 , 1 , 1 ,
+396 , 8904 , 2 , 208 , 1 , 1 ,
+396 , 8905 , 2 , 187 , 1 , 1 ,
+396 , 8906 , 280 , 168 , 1 , 1 , 8901 8849 8900 8884 8866 8856 8864 8861 8869 8865 8886 8899 8874 8875 8880 8897 8847 8848 8862 8882 8860 8881 8857 8894 8883 8851 8892 8846 8904 8879 8868 8896 8855 8870 8867 8887 8905 8885 8895 8902 8854 8872 8898 8903 8863 8876 8853 8858 8859 8877 8878 8889 8891 8852 8890 8893 8850 8873 8871 8888
+397 , 8907 , 16 , 174 , 1 , 1 ,
+397 , 8908 , 16 , 175 , 1 , 1 ,
+397 , 8909 , 15 , 175 , 1 , 1 ,
+397 , 8910 , 15 , 164 , 1 , 1 ,
+397 , 8911 , 15 , 165 , 1 , 1 ,
+397 , 8912 , 15 , 184 , 1 , 1 ,
+397 , 8913 , 15 , 185 , 1 , 1 ,
+397 , 8914 , 14 , 174 , 1 , 1 ,
+397 , 8915 , 14 , 186 , 1 , 1 ,
+397 , 8916 , 14 , 194 , 1 , 1 ,
+397 , 8917 , 14 , 184 , 1 , 1 ,
+397 , 8918 , 14 , 195 , 1 , 1 ,
+397 , 8919 , 13 , 216 , 1 , 1 ,
+397 , 8920 , 13 , 216 , 1 , 1 ,
+397 , 8921 , 13 , 216 , 1 , 1 ,
+397 , 8922 , 13 , 215 , 1 , 1 ,
+397 , 8923 , 12 , 195 , 1 , 1 ,
+397 , 8924 , 11 , 215 , 1 , 1 ,
+397 , 8925 , 11 , 205 , 1 , 1 ,
+397 , 8926 , 11 , 225 , 1 , 1 ,
+397 , 8927 , 10 , 246 , 1 , 1 ,
+397 , 8928 , 10 , 246 , 1 , 1 ,
+397 , 8929 , 9 , 236 , 1 , 1 ,
+397 , 8930 , 9 , 215 , 1 , 1 ,
+397 , 8931 , 9 , 215 , 1 , 1 ,
+397 , 8932 , 9 , 205 , 1 , 1 ,
+397 , 8933 , 8 , 195 , 1 , 1 ,
+397 , 8934 , 8 , 175 , 1 , 1 ,
+397 , 8935 , 8 , 196 , 1 , 1 ,
+397 , 8936 , 7 , 196 , 1 , 1 ,
+397 , 8937 , 7 , 185 , 1 , 1 ,
+397 , 8938 , 6 , 185 , 1 , 1 ,
+397 , 8939 , 6 , 185 , 1 , 1 ,
+397 , 8940 , 6 , 215 , 1 , 1 ,
+397 , 8941 , 6 , 195 , 1 , 1 ,
+397 , 8942 , 6 , 195 , 1 , 1 ,
+397 , 8943 , 5 , 184 , 1 , 1 ,
+397 , 8944 , 5 , 185 , 1 , 1 ,
+397 , 8945 , 5 , 186 , 1 , 1 ,
+397 , 8946 , 5 , 206 , 1 , 1 ,
+397 , 8947 , 4 , 195 , 1 , 1 ,
+397 , 8948 , 4 , 195 , 1 , 1 ,
+397 , 8949 , 4 , 196 , 1 , 1 ,
+397 , 8950 , 4 , 185 , 1 , 1 ,
+397 , 8951 , 4 , 195 , 1 , 1 ,
+397 , 8952 , 4 , 205 , 1 , 1 ,
+397 , 8953 , 4 , 185 , 1 , 1 ,
+397 , 8954 , 4 , 195 , 1 , 1 ,
+397 , 8955 , 4 , 205 , 1 , 1 ,
+397 , 8956 , 4 , 206 , 1 , 1 ,
+397 , 8957 , 1 , 196 , 1 , 1 ,
+397 , 8958 , 1 , 185 , 1 , 1 ,
+397 , 8959 , 1 , 186 , 1 , 1 ,
+397 , 8960 , 1 , 185 , 1 , 1 ,
+397 , 8961 , 1 , 185 , 1 , 1 ,
+397 , 8962 , 1 , 176 , 1 , 1 ,
+397 , 8963 , 1 , 196 , 1 , 1 ,
+397 , 8964 , 1 , 176 , 1 , 1 ,
+397 , 8965 , 1 , 185 , 1 , 1 ,
+397 , 8966 , 1 , 176 , 1 , 1 ,
+397 , 8967 , 413 , 164 , 1 , 1 , 8909 8940 8907 8937 8929 8955 8911 8931 8945 8948 8927 8922 8954 8912 8965 8925 8915 8938 8921 8933 8966 8908 8910 8950 8961 8914 8941 8947 8926 8924 8952 8936 8956 8960 8919 8917 8946 8951 8928 8953 8959 8958 8943 8913 8934 8942 8939 8918 8949 8923 8916 8963 8962 8930 8964 8957 8935 8944 8920 8932
+398 , 9029 , 8 , 41 , 1 , 1 ,
+398 , 9030 , 7 , 41 , 1 , 1 ,
+398 , 9031 , 7 , 41 , 1 , 1 ,
+398 , 9032 , 7 , 41 , 1 , 1 ,
+398 , 9033 , 7 , 52 , 1 , 1 ,
+398 , 9034 , 7 , 51 , 1 , 1 ,
+398 , 9035 , 5 , 52 , 1 , 1 ,
+398 , 9036 , 5 , 41 , 1 , 1 ,
+398 , 9037 , 5 , 41 , 1 , 1 ,
+398 , 9038 , 5 , 52 , 1 , 1 ,
+398 , 9039 , 5 , 41 , 1 , 1 ,
+398 , 9040 , 5 , 41 , 1 , 1 ,
+398 , 9041 , 5 , 52 , 1 , 1 ,
+398 , 9042 , 5 , 52 , 1 , 1 ,
+398 , 9043 , 5 , 41 , 1 , 1 ,
+398 , 9044 , 5 , 52 , 1 , 1 ,
+398 , 9045 , 71 , 1 , 1 , 1 , 9029 9043 9042 9032 9036 9040 9034 9035 9038 9037 9041 9039 9044 9033 9030 9031
+399 , 9114 , 3 , 41 , 1 , 1 ,
+399 , 9115 , 3 , 41 , 1 , 1 ,
+399 , 9116 , 3 , 41 , 1 , 1 ,
+399 , 9117 , 56 , 0 , 1 , 1 , 9116 9115 9114
+400 , 9118 , 1 , 41 , 1 , 1 ,
+400 , 9119 , 1 , 41 , 1 , 1 ,
+400 , 9120 , 1 , 52 , 1 , 1 ,
+400 , 9121 , 64 , 0 , 1 , 1 , 9120 9118 9119
+401 , 9627 , 31 , 31 , 1 , 1 ,
+401 , 9628 , 30 , 31 , 1 , 1 ,
+401 , 9629 , 30 , 31 , 1 , 1 ,
+401 , 9630 , 30 , 31 , 1 , 1 ,
+401 , 9631 , 29 , 31 , 1 , 1 ,
+401 , 9632 , 29 , 31 , 1 , 1 ,
+401 , 9633 , 29 , 31 , 1 , 1 ,
+401 , 9634 , 29 , 31 , 1 , 1 ,
+401 , 9635 , 29 , 31 , 1 , 1 ,
+401 , 9636 , 29 , 31 , 1 , 1 ,
+401 , 9637 , 27 , 31 , 1 , 1 ,
+401 , 9638 , 26 , 31 , 1 , 1 ,
+401 , 9639 , 26 , 31 , 1 , 1 ,
+401 , 9640 , 26 , 31 , 1 , 1 ,
+401 , 9641 , 26 , 31 , 1 , 1 ,
+401 , 9642 , 25 , 21 , 1 , 1 ,
+401 , 9643 , 25 , 21 , 1 , 1 ,
+401 , 9644 , 25 , 31 , 1 , 1 ,
+401 , 9645 , 25 , 31 , 1 , 1 ,
+401 , 9646 , 25 , 31 , 1 , 1 ,
+401 , 9647 , 24 , 32 , 1 , 1 ,
+401 , 9648 , 23 , 31 , 1 , 1 ,
+401 , 9649 , 23 , 31 , 1 , 1 ,
+401 , 9650 , 23 , 31 , 1 , 1 ,
+401 , 9651 , 23 , 31 , 1 , 1 ,
+401 , 9652 , 23 , 31 , 1 , 1 ,
+401 , 9653 , 23 , 31 , 1 , 1 ,
+401 , 9654 , 23 , 31 , 1 , 1 ,
+401 , 9655 , 22 , 52 , 1 , 1 ,
+401 , 9656 , 22 , 52 , 1 , 1 ,
+401 , 9657 , 21 , 52 , 1 , 1 ,
+401 , 9658 , 20 , 52 , 1 , 1 ,
+401 , 9659 , 20 , 52 , 1 , 1 ,
+401 , 9660 , 20 , 52 , 1 , 1 ,
+401 , 9661 , 20 , 52 , 1 , 1 ,
+401 , 9662 , 20 , 52 , 1 , 1 ,
+401 , 9663 , 20 , 52 , 1 , 1 ,
+401 , 9664 , 20 , 52 , 1 , 1 ,
+401 , 9665 , 20 , 52 , 1 , 1 ,
+401 , 9666 , 19 , 52 , 1 , 1 ,
+401 , 9667 , 18 , 52 , 1 , 1 ,
+401 , 9668 , 18 , 52 , 1 , 1 ,
+401 , 9669 , 18 , 52 , 1 , 1 ,
+401 , 9670 , 18 , 52 , 1 , 1 ,
+401 , 9671 , 18 , 41 , 1 , 1 ,
+401 , 9672 , 18 , 52 , 1 , 1 ,
+401 , 9673 , 18 , 52 , 1 , 1 ,
+401 , 9674 , 18 , 52 , 1 , 1 ,
+401 , 9675 , 17 , 52 , 1 , 1 ,
+401 , 9676 , 17 , 52 , 1 , 1 ,
+401 , 9677 , 15 , 52 , 1 , 1 ,
+401 , 9678 , 15 , 52 , 1 , 1 ,
+401 , 9679 , 15 , 52 , 1 , 1 ,
+401 , 9680 , 15 , 41 , 1 , 1 ,
+401 , 9681 , 15 , 41 , 1 , 1 ,
+401 , 9682 , 15 , 52 , 1 , 1 ,
+401 , 9683 , 15 , 52 , 1 , 1 ,
+401 , 9684 , 15 , 52 , 1 , 1 ,
+401 , 9685 , 15 , 62 , 1 , 1 ,
+401 , 9686 , 14 , 41 , 1 , 1 ,
+401 , 9687 , 12 , 52 , 1 , 1 ,
+401 , 9688 , 12 , 62 , 1 , 1 ,
+401 , 9689 , 12 , 52 , 1 , 1 ,
+401 , 9690 , 11 , 41 , 1 , 1 ,
+401 , 9691 , 11 , 52 , 1 , 1 ,
+401 , 9692 , 11 , 52 , 1 , 1 ,
+401 , 9693 , 11 , 52 , 1 , 1 ,
+401 , 9694 , 11 , 62 , 1 , 1 ,
+401 , 9695 , 11 , 52 , 1 , 1 ,
+401 , 9696 , 10 , 62 , 1 , 1 ,
+401 , 9697 , 9 , 62 , 1 , 1 ,
+401 , 9698 , 9 , 62 , 1 , 1 ,
+401 , 9699 , 9 , 52 , 1 , 1 ,
+401 , 9700 , 8 , 52 , 1 , 1 ,
+401 , 9701 , 8 , 62 , 1 , 1 ,
+401 , 9702 , 8 , 62 , 1 , 1 ,
+401 , 9703 , 8 , 62 , 1 , 1 ,
+401 , 9704 , 8 , 62 , 1 , 1 ,
+401 , 9705 , 8 , 52 , 1 , 1 ,
+401 , 9706 , 8 , 62 , 1 , 1 ,
+401 , 9707 , 6 , 52 , 1 , 1 ,
+401 , 9708 , 6 , 52 , 1 , 1 ,
+401 , 9709 , 6 , 52 , 1 , 1 ,
+401 , 9710 , 6 , 52 , 1 , 1 ,
+401 , 9711 , 6 , 62 , 1 , 1 ,
+401 , 9712 , 6 , 52 , 1 , 1 ,
+401 , 9713 , 6 , 52 , 1 , 1 ,
+401 , 9714 , 6 , 52 , 1 , 1 ,
+401 , 9715 , 5 , 41 , 1 , 1 ,
+401 , 9716 , 5 , 52 , 1 , 1 ,
+401 , 9717 , 3 , 41 , 1 , 1 ,
+401 , 9718 , 3 , 52 , 1 , 1 ,
+401 , 9719 , 3 , 31 , 1 , 1 ,
+401 , 9720 , 3 , 41 , 1 , 1 ,
+401 , 9721 , 3 , 31 , 1 , 1 ,
+401 , 9722 , 3 , 41 , 1 , 1 ,
+401 , 9723 , 3 , 31 , 1 , 1 ,
+401 , 9724 , 3 , 41 , 1 , 1 ,
+401 , 9725 , 3 , 41 , 1 , 1 ,
+401 , 9726 , 3 , 41 , 1 , 1 ,
+401 , 9727 , 106 , 31 , 1 , 1 , 9722 9669 9657 9725 9695 9629 9680 9645 9642 9687 9720 9627 9719 9648 9653 9704 9690 9647 9639 9702 9726 9630 9641 9649 9668 9658 9661 9682 9692 9709 9699 9636 9643 9706 9666 9676 9717 9693 9698 9705 9724 9694 9696 9685 9628 9675 9723 9651 9673 9707 9638 9715 9718 9684 9665 9701 9655 9633 9700 9644 9650 9689 9671 9697 9679 9691 9703 9716 9672 9662 9659 9674 9714 9721 9711 9710 9646 9664 9640 9688 9663 9708 9631 9677 9683 9656 9660 9667 9654 9678 9686 9712 9634 9632 9681 9670 9652 9713 9635 9637
+402 , 10131 , 33 , 31 , 1 , 1 ,
+402 , 10132 , 33 , 31 , 1 , 1 ,
+402 , 10133 , 33 , 31 , 1 , 1 ,
+402 , 10134 , 32 , 31 , 1 , 1 ,
+402 , 10135 , 32 , 31 , 1 , 1 ,
+402 , 10136 , 32 , 31 , 1 , 1 ,
+402 , 10137 , 32 , 31 , 1 , 1 ,
+402 , 10138 , 32 , 31 , 1 , 1 ,
+402 , 10139 , 32 , 31 , 1 , 1 ,
+402 , 10140 , 29 , 31 , 1 , 1 ,
+402 , 10141 , 29 , 21 , 1 , 1 ,
+402 , 10142 , 28 , 31 , 1 , 1 ,
+402 , 10143 , 28 , 31 , 1 , 1 ,
+402 , 10144 , 28 , 31 , 1 , 1 ,
+402 , 10145 , 27 , 31 , 1 , 1 ,
+402 , 10146 , 27 , 31 , 1 , 1 ,
+402 , 10147 , 27 , 31 , 1 , 1 ,
+402 , 10148 , 27 , 31 , 1 , 1 ,
+402 , 10149 , 27 , 31 , 1 , 1 ,
+402 , 10150 , 26 , 31 , 1 , 1 ,
+402 , 10151 , 26 , 21 , 1 , 1 ,
+402 , 10152 , 25 , 31 , 1 , 1 ,
+402 , 10153 , 25 , 31 , 1 , 1 ,
+402 , 10154 , 25 , 31 , 1 , 1 ,
+402 , 10155 , 24 , 31 , 1 , 1 ,
+402 , 10156 , 24 , 31 , 1 , 1 ,
+402 , 10157 , 24 , 31 , 1 , 1 ,
+402 , 10158 , 23 , 31 , 1 , 1 ,
+402 , 10159 , 23 , 52 , 1 , 1 ,
+402 , 10160 , 22 , 52 , 1 , 1 ,
+402 , 10161 , 22 , 52 , 1 , 1 ,
+402 , 10162 , 22 , 52 , 1 , 1 ,
+402 , 10163 , 22 , 52 , 1 , 1 ,
+402 , 10164 , 21 , 52 , 1 , 1 ,
+402 , 10165 , 21 , 62 , 1 , 1 ,
+402 , 10166 , 21 , 62 , 1 , 1 ,
+402 , 10167 , 21 , 62 , 1 , 1 ,
+402 , 10168 , 20 , 62 , 1 , 1 ,
+402 , 10169 , 20 , 62 , 1 , 1 ,
+402 , 10170 , 20 , 62 , 1 , 1 ,
+402 , 10171 , 19 , 62 , 1 , 1 ,
+402 , 10172 , 19 , 62 , 1 , 1 ,
+402 , 10173 , 19 , 62 , 1 , 1 ,
+402 , 10174 , 19 , 52 , 1 , 1 ,
+402 , 10175 , 18 , 51 , 1 , 1 ,
+402 , 10176 , 18 , 52 , 1 , 1 ,
+402 , 10177 , 18 , 52 , 1 , 1 ,
+402 , 10178 , 18 , 52 , 1 , 1 ,
+402 , 10179 , 18 , 51 , 1 , 1 ,
+402 , 10180 , 17 , 62 , 1 , 1 ,
+402 , 10181 , 16 , 52 , 1 , 1 ,
+402 , 10182 , 16 , 52 , 1 , 1 ,
+402 , 10183 , 15 , 52 , 1 , 1 ,
+402 , 10184 , 15 , 52 , 1 , 1 ,
+402 , 10185 , 15 , 52 , 1 , 1 ,
+402 , 10186 , 15 , 62 , 1 , 1 ,
+402 , 10187 , 15 , 62 , 1 , 1 ,
+402 , 10188 , 15 , 62 , 1 , 1 ,
+402 , 10189 , 14 , 62 , 1 , 1 ,
+402 , 10190 , 14 , 62 , 1 , 1 ,
+402 , 10191 , 13 , 52 , 1 , 1 ,
+402 , 10192 , 13 , 62 , 1 , 1 ,
+402 , 10193 , 12 , 52 , 1 , 1 ,
+402 , 10194 , 12 , 52 , 1 , 1 ,
+402 , 10195 , 12 , 62 , 1 , 1 ,
+402 , 10196 , 12 , 62 , 1 , 1 ,
+402 , 10197 , 12 , 62 , 1 , 1 ,
+402 , 10198 , 12 , 62 , 1 , 1 ,
+402 , 10199 , 11 , 62 , 1 , 1 ,
+402 , 10200 , 11 , 63 , 1 , 1 ,
+402 , 10201 , 10 , 52 , 1 , 1 ,
+402 , 10202 , 10 , 62 , 1 , 1 ,
+402 , 10203 , 10 , 52 , 1 , 1 ,
+402 , 10204 , 10 , 62 , 1 , 1 ,
+402 , 10205 , 9 , 62 , 1 , 1 ,
+402 , 10206 , 9 , 52 , 1 , 1 ,
+402 , 10207 , 9 , 62 , 1 , 1 ,
+402 , 10208 , 9 , 62 , 1 , 1 ,
+402 , 10209 , 9 , 52 , 1 , 1 ,
+402 , 10210 , 8 , 52 , 1 , 1 ,
+402 , 10211 , 8 , 52 , 1 , 1 ,
+402 , 10212 , 7 , 52 , 1 , 1 ,
+402 , 10213 , 7 , 52 , 1 , 1 ,
+402 , 10214 , 7 , 52 , 1 , 1 ,
+402 , 10215 , 7 , 52 , 1 , 1 ,
+402 , 10216 , 7 , 52 , 1 , 1 ,
+402 , 10217 , 7 , 41 , 1 , 1 ,
+402 , 10218 , 7 , 41 , 1 , 1 ,
+402 , 10219 , 7 , 52 , 1 , 1 ,
+402 , 10220 , 7 , 41 , 1 , 1 ,
+402 , 10221 , 5 , 52 , 1 , 1 ,
+402 , 10222 , 5 , 52 , 1 , 1 ,
+402 , 10223 , 5 , 52 , 1 , 1 ,
+402 , 10224 , 5 , 52 , 1 , 1 ,
+402 , 10225 , 5 , 41 , 1 , 1 ,
+402 , 10226 , 5 , 52 , 1 , 1 ,
+402 , 10227 , 5 , 41 , 1 , 1 ,
+402 , 10228 , 5 , 41 , 1 , 1 ,
+402 , 10229 , 5 , 41 , 1 , 1 ,
+402 , 10230 , 5 , 41 , 1 , 1 ,
+402 , 10231 , 108 , 31 , 1 , 1 , 10143 10191 10151 10217 10192 10194 10149 10210 10224 10132 10138 10137 10180 10144 10145 10148 10209 10134 10220 10204 10161 10154 10207 10201 10221 10171 10142 10174 10183 10136 10172 10223 10182 10179 10155 10205 10195 10131 10185 10169 10167 10229 10219 10158 10157 10226 10160 10227 10165 10147 10184 10177 10153 10141 10186 10146 10176 10135 10152 10139 10164 10162 10168 10215 10188 10211 10187 10199 10189 10208 10140 10159 10133 10193 10178 10196 10197 10200 10156 10203 10212 10228 10166 10190 10198 10218 10230 10173 10181 10222 10175 10202 10216 10214 10170 10163 10213 10206 10150 10225
+403 , 10232 , 18 , 184 , 1 , 1 ,
+403 , 10233 , 17 , 184 , 1 , 1 ,
+403 , 10234 , 17 , 184 , 1 , 1 ,
+403 , 10235 , 17 , 174 , 1 , 1 ,
+403 , 10236 , 17 , 174 , 1 , 1 ,
+403 , 10237 , 17 , 174 , 1 , 1 ,
+403 , 10238 , 16 , 195 , 1 , 1 ,
+403 , 10239 , 16 , 195 , 1 , 1 ,
+403 , 10240 , 15 , 195 , 1 , 1 ,
+403 , 10241 , 15 , 194 , 1 , 1 ,
+403 , 10242 , 14 , 194 , 1 , 1 ,
+403 , 10243 , 14 , 215 , 1 , 1 ,
+403 , 10244 , 14 , 225 , 1 , 1 ,
+403 , 10245 , 14 , 225 , 1 , 1 ,
+403 , 10246 , 14 , 215 , 1 , 1 ,
+403 , 10247 , 13 , 225 , 1 , 1 ,
+403 , 10248 , 12 , 225 , 1 , 1 ,
+403 , 10249 , 12 , 225 , 1 , 1 ,
+403 , 10250 , 12 , 225 , 1 , 1 ,
+403 , 10251 , 12 , 225 , 1 , 1 ,
+403 , 10252 , 11 , 266 , 1 , 1 ,
+403 , 10253 , 11 , 266 , 1 , 1 ,
+403 , 10254 , 11 , 256 , 1 , 1 ,
+403 , 10255 , 10 , 226 , 1 , 1 ,
+403 , 10256 , 10 , 225 , 1 , 1 ,
+403 , 10257 , 10 , 215 , 1 , 1 ,
+403 , 10258 , 10 , 205 , 1 , 1 ,
+403 , 10259 , 10 , 205 , 1 , 1 ,
+403 , 10260 , 9 , 205 , 1 , 1 ,
+403 , 10261 , 9 , 215 , 1 , 1 ,
+403 , 10262 , 8 , 205 , 1 , 1 ,
+403 , 10263 , 8 , 205 , 1 , 1 ,
+403 , 10264 , 8 , 194 , 1 , 1 ,
+403 , 10265 , 8 , 215 , 1 , 1 ,
+403 , 10266 , 8 , 215 , 1 , 1 ,
+403 , 10267 , 8 , 215 , 1 , 1 ,
+403 , 10268 , 8 , 205 , 1 , 1 ,
+403 , 10269 , 7 , 194 , 1 , 1 ,
+403 , 10270 , 7 , 215 , 1 , 1 ,
+403 , 10271 , 7 , 226 , 1 , 1 ,
+403 , 10272 , 6 , 215 , 1 , 1 ,
+403 , 10273 , 6 , 225 , 1 , 1 ,
+403 , 10274 , 6 , 215 , 1 , 1 ,
+403 , 10275 , 6 , 215 , 1 , 1 ,
+403 , 10276 , 6 , 225 , 1 , 1 ,
+403 , 10277 , 6 , 215 , 1 , 1 ,
+403 , 10278 , 6 , 205 , 1 , 1 ,
+403 , 10279 , 5 , 225 , 1 , 1 ,
+403 , 10280 , 5 , 225 , 1 , 1 ,
+403 , 10281 , 5 , 225 , 1 , 1 ,
+403 , 10282 , 4 , 205 , 1 , 1 ,
+403 , 10283 , 4 , 205 , 1 , 1 ,
+403 , 10284 , 4 , 194 , 1 , 1 ,
+403 , 10285 , 4 , 205 , 1 , 1 ,
+403 , 10286 , 4 , 205 , 1 , 1 ,
+403 , 10287 , 4 , 205 , 1 , 1 ,
+403 , 10288 , 4 , 215 , 1 , 1 ,
+403 , 10289 , 4 , 205 , 1 , 1 ,
+403 , 10290 , 4 , 205 , 1 , 1 ,
+403 , 10291 , 4 , 184 , 1 , 1 ,
+403 , 10292 , 291 , 164 , 1 , 1 , 10244 10242 10238 10262 10252 10271 10264 10283 10263 10253 10267 10287 10233 10270 10248 10280 10257 10288 10241 10240 10246 10279 10282 10289 10250 10256 10236 10273 10286 10249 10277 10285 10255 10245 10260 10235 10284 10261 10291 10290 10275 10276 10259 10251 10232 10243 10265 10269 10234 10247 10237 10274 10254 10266 10239 10281 10258 10278 10268 10272
+404 , 10494 , 37 , 41 , 1 , 1 ,
+404 , 10495 , 37 , 41 , 1 , 1 ,
+404 , 10496 , 37 , 41 , 1 , 1 ,
+404 , 10497 , 37 , 41 , 1 , 1 ,
+404 , 10498 , 37 , 41 , 1 , 1 ,
+404 , 10499 , 37 , 41 , 1 , 1 ,
+404 , 10500 , 34 , 41 , 1 , 1 ,
+404 , 10501 , 34 , 41 , 1 , 1 ,
+404 , 10502 , 34 , 41 , 1 , 1 ,
+404 , 10503 , 34 , 31 , 1 , 1 ,
+404 , 10504 , 34 , 31 , 1 , 1 ,
+404 , 10505 , 34 , 31 , 1 , 1 ,
+404 , 10506 , 34 , 31 , 1 , 1 ,
+404 , 10507 , 34 , 31 , 1 , 1 ,
+404 , 10508 , 34 , 41 , 1 , 1 ,
+404 , 10509 , 34 , 31 , 1 , 1 ,
+404 , 10510 , 32 , 31 , 1 , 1 ,
+404 , 10511 , 32 , 41 , 1 , 1 ,
+404 , 10512 , 32 , 41 , 1 , 1 ,
+404 , 10513 , 31 , 41 , 1 , 1 ,
+404 , 10514 , 31 , 31 , 1 , 1 ,
+404 , 10515 , 31 , 41 , 1 , 1 ,
+404 , 10516 , 30 , 31 , 1 , 1 ,
+404 , 10517 , 30 , 41 , 1 , 1 ,
+404 , 10518 , 30 , 52 , 1 , 1 ,
+404 , 10519 , 30 , 41 , 1 , 1 ,
+404 , 10520 , 29 , 31 , 1 , 1 ,
+404 , 10521 , 28 , 31 , 1 , 1 ,
+404 , 10522 , 28 , 41 , 1 , 1 ,
+404 , 10523 , 28 , 31 , 1 , 1 ,
+404 , 10524 , 27 , 41 , 1 , 1 ,
+404 , 10525 , 27 , 41 , 1 , 1 ,
+404 , 10526 , 27 , 31 , 1 , 1 ,
+404 , 10527 , 27 , 31 , 1 , 1 ,
+404 , 10528 , 27 , 31 , 1 , 1 ,
+404 , 10529 , 26 , 31 , 1 , 1 ,
+404 , 10530 , 26 , 31 , 1 , 1 ,
+404 , 10531 , 25 , 31 , 1 , 1 ,
+404 , 10532 , 25 , 41 , 1 , 1 ,
+404 , 10533 , 25 , 41 , 1 , 1 ,
+404 , 10534 , 24 , 42 , 1 , 1 ,
+404 , 10535 , 24 , 42 , 1 , 1 ,
+404 , 10536 , 24 , 42 , 1 , 1 ,
+404 , 10537 , 24 , 31 , 1 , 1 ,
+404 , 10538 , 23 , 31 , 1 , 1 ,
+404 , 10539 , 23 , 31 , 1 , 1 ,
+404 , 10540 , 22 , 31 , 1 , 1 ,
+404 , 10541 , 22 , 31 , 1 , 1 ,
+404 , 10542 , 22 , 31 , 1 , 1 ,
+404 , 10543 , 22 , 31 , 1 , 1 ,
+404 , 10544 , 21 , 31 , 1 , 1 ,
+404 , 10545 , 21 , 31 , 1 , 1 ,
+404 , 10546 , 21 , 31 , 1 , 1 ,
+404 , 10547 , 21 , 31 , 1 , 1 ,
+404 , 10548 , 20 , 31 , 1 , 1 ,
+404 , 10549 , 20 , 31 , 1 , 1 ,
+404 , 10550 , 19 , 41 , 1 , 1 ,
+404 , 10551 , 19 , 52 , 1 , 1 ,
+404 , 10552 , 19 , 41 , 1 , 1 ,
+404 , 10553 , 19 , 51 , 1 , 1 ,
+404 , 10554 , 18 , 52 , 1 , 1 ,
+404 , 10555 , 18 , 41 , 1 , 1 ,
+404 , 10556 , 18 , 52 , 1 , 1 ,
+404 , 10557 , 18 , 52 , 1 , 1 ,
+404 , 10558 , 18 , 42 , 1 , 1 ,
+404 , 10559 , 17 , 53 , 1 , 1 ,
+404 , 10560 , 16 , 52 , 1 , 1 ,
+404 , 10561 , 16 , 52 , 1 , 1 ,
+404 , 10562 , 16 , 52 , 1 , 1 ,
+404 , 10563 , 16 , 62 , 1 , 1 ,
+404 , 10564 , 15 , 62 , 1 , 1 ,
+404 , 10565 , 14 , 62 , 1 , 1 ,
+404 , 10566 , 14 , 52 , 1 , 1 ,
+404 , 10567 , 14 , 52 , 1 , 1 ,
+404 , 10568 , 14 , 52 , 1 , 1 ,
+404 , 10569 , 14 , 52 , 1 , 1 ,
+404 , 10570 , 13 , 52 , 1 , 1 ,
+404 , 10571 , 13 , 52 , 1 , 1 ,
+404 , 10572 , 13 , 62 , 1 , 1 ,
+404 , 10573 , 13 , 62 , 1 , 1 ,
+404 , 10574 , 12 , 62 , 1 , 1 ,
+404 , 10575 , 12 , 62 , 1 , 1 ,
+404 , 10576 , 12 , 62 , 1 , 1 ,
+404 , 10577 , 12 , 62 , 1 , 1 ,
+404 , 10578 , 12 , 62 , 1 , 1 ,
+404 , 10579 , 12 , 62 , 1 , 1 ,
+404 , 10580 , 11 , 62 , 1 , 1 ,
+404 , 10581 , 11 , 52 , 1 , 1 ,
+404 , 10582 , 10 , 62 , 1 , 1 ,
+404 , 10583 , 10 , 52 , 1 , 1 ,
+404 , 10584 , 9 , 52 , 1 , 1 ,
+404 , 10585 , 9 , 62 , 1 , 1 ,
+404 , 10586 , 9 , 63 , 1 , 1 ,
+404 , 10587 , 9 , 63 , 1 , 1 ,
+404 , 10588 , 9 , 72 , 1 , 1 ,
+404 , 10589 , 9 , 62 , 1 , 1 ,
+404 , 10590 , 9 , 62 , 1 , 1 ,
+404 , 10591 , 8 , 52 , 1 , 1 ,
+404 , 10592 , 8 , 62 , 1 , 1 ,
+404 , 10593 , 8 , 63 , 1 , 1 ,
+404 , 10594 , 7 , 62 , 1 , 1 ,
+404 , 10595 , 7 , 52 , 1 , 1 ,
+404 , 10596 , 7 , 52 , 1 , 1 ,
+404 , 10597 , 7 , 72 , 1 , 1 ,
+404 , 10598 , 7 , 41 , 1 , 1 ,
+404 , 10599 , 7 , 41 , 1 , 1 ,
+404 , 10600 , 7 , 52 , 1 , 1 ,
+404 , 10601 , 7 , 52 , 1 , 1 ,
+404 , 10602 , 7 , 41 , 1 , 1 ,
+404 , 10603 , 7 , 52 , 1 , 1 ,
+404 , 10604 , 5 , 52 , 1 , 1 ,
+404 , 10605 , 5 , 52 , 1 , 1 ,
+404 , 10606 , 5 , 52 , 1 , 1 ,
+404 , 10607 , 5 , 72 , 1 , 1 ,
+404 , 10608 , 5 , 52 , 1 , 1 ,
+404 , 10609 , 5 , 42 , 1 , 1 ,
+404 , 10610 , 5 , 52 , 1 , 1 ,
+404 , 10611 , 5 , 52 , 1 , 1 ,
+404 , 10612 , 5 , 42 , 1 , 1 ,
+404 , 10613 , 5 , 42 , 1 , 1 ,
+404 , 10614 , 128 , 41 , 1 , 1 , 10522 10559 10549 10606 10584 10543 10568 10575 10495 10534 10571 10511 10604 10531 10496 10548 10552 10545 10586 10501 10499 10574 10516 10612 10553 10547 10579 10591 10517 10590 10503 10524 10529 10540 10567 10602 10578 10609 10530 10555 10611 10536 10546 10498 10521 10588 10542 10537 10613 10589 10598 10585 10558 10581 10557 10519 10583 10596 10600 10580 10570 10513 10541 10508 10597 10510 10592 10607 10593 10535 10556 10565 10520 10587 10523 10544 10554 10527 10514 10497 10505 10512 10610 10506 10550 10566 10599 10563 10564 10608 10551 10560 10562 10601 10577 10509 10594 10569 10533 10595 10525 10528 10572 10515 10538 10494 10561 10518 10576 10532 10507 10504 10603 10500 10605 10582 10573 10502 10539 10526
+405 , 10615 , 2 , 184 , 1 , 1 ,
+405 , 10616 , 2 , 225 , 1 , 1 ,
+405 , 10617 , 2 , 184 , 1 , 1 ,
+405 , 10618 , 2 , 184 , 1 , 1 ,
+405 , 10619 , 2 , 194 , 1 , 1 ,
+405 , 10620 , 239 , 21 , 1 , 1 , 10616 10615 10618 10619 10617
+406 , 10621 , 1 , 174 , 1 , 1 ,
+406 , 10622 , 1 , 205 , 1 , 1 ,
+406 , 10623 , 1 , 215 , 1 , 1 ,
+406 , 10624 , 1 , 174 , 1 , 1 ,
+406 , 10625 , 1 , 184 , 1 , 1 ,
+406 , 10626 , 1 , 184 , 1 , 1 ,
+406 , 10627 , 229 , 21 , 1 , 1 , 10621 10625 10623 10622 10626 10624
+407 , 10628 , 2 , 164 , 1 , 1 ,
+407 , 10629 , 2 , 215 , 1 , 1 ,
+407 , 10630 , 2 , 215 , 1 , 1 ,
+407 , 10631 , 2 , 174 , 1 , 1 ,
+407 , 10632 , 2 , 205 , 1 , 1 ,
+407 , 10633 , 2 , 184 , 1 , 1 ,
+407 , 10634 , 229 , 21 , 1 , 1 , 10632 10631 10629 10628 10633 10630
+408 , 10635 , 2 , 174 , 1 , 1 ,
+408 , 10636 , 2 , 215 , 1 , 1 ,
+408 , 10637 , 2 , 195 , 1 , 1 ,
+408 , 10638 , 2 , 195 , 1 , 1 ,
+408 , 10639 , 2 , 205 , 1 , 1 ,
+408 , 10640 , 2 , 174 , 1 , 1 ,
+408 , 10641 , 229 , 21 , 1 , 1 , 10639 10636 10637 10638 10635 10640
+409 , 10642 , 7 , 0 , 1 , 1 ,
+409 , 10643 , 7 , 0 , 1 , 1 ,
+409 , 10644 , 5 , 0 , 1 , 1 ,
+409 , 10645 , 5 , 0 , 1 , 1 ,
+409 , 10646 , 5 , 0 , 1 , 1 ,
+409 , 10647 , 5 , 0 , 1 , 1 ,
+409 , 10648 , 5 , 0 , 1 , 1 ,
+409 , 10649 , 5 , 0 , 1 , 1 ,
+409 , 10650 , 5 , 0 , 1 , 1 ,
+409 , 10651 , 5 , 0 , 1 , 1 ,
+409 , 10652 , 5 , 0 , 1 , 1 ,
+409 , 10653 , 5 , 0 , 1 , 1 ,
+409 , 10654 , 29 , 0 , 1 , 1 , 10652 10645 10649 10647 10653 10651 10650 10648 10643 10644 10646 10642
+410 , 10655 , 3 , 0 , 1 , 1 ,
+410 , 10656 , 3 , 0 , 1 , 1 ,
+410 , 10657 , 3 , 0 , 1 , 1 ,
+410 , 10658 , 3 , 0 , 1 , 1 ,
+410 , 10659 , 3 , 0 , 1 , 1 ,
+410 , 10660 , 3 , 0 , 1 , 1 ,
+410 , 10661 , 16 , 0 , 1 , 1 , 10658 10659 10657 10660 10655 10656
+411 , 10662 , 4 , 0 , 1 , 1 ,
+411 , 10663 , 4 , 0 , 1 , 1 ,
+411 , 10664 , 4 , 0 , 1 , 1 ,
+411 , 10665 , 4 , 0 , 1 , 1 ,
+411 , 10666 , 4 , 0 , 1 , 1 ,
+411 , 10667 , 4 , 0 , 1 , 1 ,
+411 , 10668 , 17 , 0 , 1 , 1 , 10667 10662 10666 10665 10664 10663
+412 , 10669 , 4 , 0 , 1 , 1 ,
+412 , 10670 , 4 , 0 , 1 , 1 ,
+412 , 10671 , 4 , 0 , 1 , 1 ,
+412 , 10672 , 4 , 0 , 1 , 1 ,
+412 , 10673 , 4 , 0 , 1 , 1 ,
+412 , 10674 , 4 , 0 , 1 , 1 ,
+412 , 10675 , 17 , 0 , 1 , 1 , 10674 10673 10669 10670 10672 10671
+413 , 10676 , 5 , 11 , 1 , 1 ,
+413 , 10677 , 5 , 11 , 1 , 1 ,
+413 , 10678 , 5 , 11 , 1 , 1 ,
+413 , 10679 , 5 , 11 , 1 , 1 ,
+413 , 10680 , 5 , 11 , 1 , 1 ,
+413 , 10681 , 5 , 11 , 1 , 1 ,
+413 , 10682 , 19 , 11 , 1 , 1 , 10678 10681 10680 10679 10677 10676
+414 , 10683 , 5 , 11 , 1 , 1 ,
+414 , 10684 , 5 , 11 , 1 , 1 ,
+414 , 10685 , 5 , 11 , 1 , 1 ,
+414 , 10686 , 5 , 11 , 1 , 1 ,
+414 , 10687 , 5 , 0 , 1 , 1 ,
+414 , 10688 , 5 , 11 , 1 , 1 ,
+414 , 10689 , 5 , 11 , 1 , 1 ,
+414 , 10690 , 5 , 11 , 1 , 1 ,
+414 , 10691 , 5 , 0 , 1 , 1 ,
+414 , 10692 , 5 , 11 , 1 , 1 ,
+414 , 10693 , 19 , 11 , 1 , 1 , 10683 10689 10684 10687 10685 10692 10688 10686 10691 10690
+415 , 10694 , 3 , 0 , 1 , 1 ,
+415 , 10695 , 3 , 11 , 1 , 1 ,
+415 , 10696 , 3 , 11 , 1 , 1 ,
+415 , 10697 , 3 , 11 , 1 , 1 ,
+415 , 10698 , 3 , 11 , 1 , 1 ,
+415 , 10699 , 3 , 11 , 1 , 1 ,
+415 , 10700 , 3 , 11 , 1 , 1 ,
+415 , 10701 , 3 , 11 , 1 , 1 ,
+415 , 10702 , 3 , 11 , 1 , 1 ,
+415 , 10703 , 3 , 11 , 1 , 1 ,
+415 , 10704 , 16 , 11 , 1 , 1 , 10698 10699 10694 10696 10703 10700 10697 10701 10702 10695
+416 , 10705 , 3 , 0 , 1 , 1 ,
+416 , 10706 , 3 , 0 , 1 , 1 ,
+416 , 10707 , 3 , 0 , 1 , 1 ,
+416 , 10708 , 3 , 0 , 1 , 1 ,
+416 , 10709 , 3 , 0 , 1 , 1 ,
+416 , 10710 , 3 , 0 , 1 , 1 ,
+416 , 10711 , 3 , 11 , 1 , 1 ,
+416 , 10712 , 3 , 0 , 1 , 1 ,
+416 , 10713 , 3 , 0 , 1 , 1 ,
+416 , 10714 , 3 , 11 , 1 , 1 ,
+416 , 10715 , 16 , 11 , 1 , 1 , 10710 10709 10711 10707 10714 10705 10712 10713 10708 10706
+417 , 10727 , 21 , 184 , 1 , 1 ,
+417 , 10728 , 21 , 174 , 1 , 1 ,
+417 , 10729 , 21 , 174 , 1 , 1 ,
+417 , 10730 , 21 , 174 , 1 , 1 ,
+417 , 10731 , 21 , 174 , 1 , 1 ,
+417 , 10732 , 21 , 174 , 1 , 1 ,
+417 , 10733 , 21 , 194 , 1 , 1 ,
+417 , 10734 , 20 , 194 , 1 , 1 ,
+417 , 10735 , 20 , 174 , 1 , 1 ,
+417 , 10736 , 20 , 194 , 1 , 1 ,
+417 , 10737 , 17 , 205 , 1 , 1 ,
+417 , 10738 , 17 , 215 , 1 , 1 ,
+417 , 10739 , 17 , 225 , 1 , 1 ,
+417 , 10740 , 17 , 205 , 1 , 1 ,
+417 , 10741 , 17 , 225 , 1 , 1 ,
+417 , 10742 , 17 , 225 , 1 , 1 ,
+417 , 10743 , 17 , 205 , 1 , 1 ,
+417 , 10744 , 16 , 225 , 1 , 1 ,
+417 , 10745 , 16 , 235 , 1 , 1 ,
+417 , 10746 , 16 , 235 , 1 , 1 ,
+417 , 10747 , 14 , 235 , 1 , 1 ,
+417 , 10748 , 14 , 256 , 1 , 1 ,
+417 , 10749 , 13 , 246 , 1 , 1 ,
+417 , 10750 , 13 , 225 , 1 , 1 ,
+417 , 10751 , 13 , 225 , 1 , 1 ,
+417 , 10752 , 13 , 225 , 1 , 1 ,
+417 , 10753 , 13 , 205 , 1 , 1 ,
+417 , 10754 , 13 , 205 , 1 , 1 ,
+417 , 10755 , 13 , 194 , 1 , 1 ,
+417 , 10756 , 13 , 205 , 1 , 1 ,
+417 , 10757 , 11 , 205 , 1 , 1 ,
+417 , 10758 , 10 , 194 , 1 , 1 ,
+417 , 10759 , 10 , 205 , 1 , 1 ,
+417 , 10760 , 10 , 225 , 1 , 1 ,
+417 , 10761 , 10 , 225 , 1 , 1 ,
+417 , 10762 , 10 , 205 , 1 , 1 ,
+417 , 10763 , 10 , 195 , 1 , 1 ,
+417 , 10764 , 10 , 194 , 1 , 1 ,
+417 , 10765 , 10 , 215 , 1 , 1 ,
+417 , 10766 , 9 , 225 , 1 , 1 ,
+417 , 10767 , 8 , 225 , 1 , 1 ,
+417 , 10768 , 8 , 235 , 1 , 1 ,
+417 , 10769 , 8 , 215 , 1 , 1 ,
+417 , 10770 , 8 , 225 , 1 , 1 ,
+417 , 10771 , 8 , 194 , 1 , 1 ,
+417 , 10772 , 8 , 205 , 1 , 1 ,
+417 , 10773 , 8 , 225 , 1 , 1 ,
+417 , 10774 , 8 , 225 , 1 , 1 ,
+417 , 10775 , 7 , 225 , 1 , 1 ,
+417 , 10776 , 7 , 225 , 1 , 1 ,
+417 , 10777 , 5 , 215 , 1 , 1 ,
+417 , 10778 , 5 , 216 , 1 , 1 ,
+417 , 10779 , 5 , 184 , 1 , 1 ,
+417 , 10780 , 5 , 205 , 1 , 1 ,
+417 , 10781 , 5 , 205 , 1 , 1 ,
+417 , 10782 , 5 , 205 , 1 , 1 ,
+417 , 10783 , 5 , 195 , 1 , 1 ,
+417 , 10784 , 5 , 205 , 1 , 1 ,
+417 , 10785 , 5 , 205 , 1 , 1 ,
+417 , 10786 , 5 , 194 , 1 , 1 ,
+417 , 10787 , 284 , 164 , 1 , 1 , 10758 10777 10746 10779 10783 10738 10753 10735 10737 10784 10761 10768 10756 10773 10751 10744 10736 10781 10778 10741 10728 10757 10742 10731 10750 10786 10739 10734 10780 10752 10771 10729 10776 10774 10775 10772 10763 10765 10770 10769 10733 10745 10747 10762 10730 10727 10767 10732 10782 10743 10766 10760 10785 10755 10740 10749 10759 10764 10748 10754
+418 , 10788 , 19 , 184 , 1 , 1 ,
+418 , 10789 , 19 , 194 , 1 , 1 ,
+418 , 10790 , 19 , 174 , 1 , 1 ,
+418 , 10791 , 19 , 174 , 1 , 1 ,
+418 , 10792 , 18 , 164 , 1 , 1 ,
+418 , 10793 , 18 , 184 , 1 , 1 ,
+418 , 10794 , 18 , 194 , 1 , 1 ,
+418 , 10795 , 18 , 194 , 1 , 1 ,
+418 , 10796 , 18 , 194 , 1 , 1 ,
+418 , 10797 , 17 , 184 , 1 , 1 ,
+418 , 10798 , 15 , 215 , 1 , 1 ,
+418 , 10799 , 15 , 205 , 1 , 1 ,
+418 , 10800 , 15 , 225 , 1 , 1 ,
+418 , 10801 , 15 , 225 , 1 , 1 ,
+418 , 10802 , 15 , 225 , 1 , 1 ,
+418 , 10803 , 15 , 225 , 1 , 1 ,
+418 , 10804 , 15 , 215 , 1 , 1 ,
+418 , 10805 , 14 , 235 , 1 , 1 ,
+418 , 10806 , 14 , 225 , 1 , 1 ,
+418 , 10807 , 13 , 236 , 1 , 1 ,
+418 , 10808 , 12 , 256 , 1 , 1 ,
+418 , 10809 , 12 , 266 , 1 , 1 ,
+418 , 10810 , 12 , 245 , 1 , 1 ,
+418 , 10811 , 12 , 225 , 1 , 1 ,
+418 , 10812 , 12 , 225 , 1 , 1 ,
+418 , 10813 , 11 , 205 , 1 , 1 ,
+418 , 10814 , 11 , 205 , 1 , 1 ,
+418 , 10815 , 11 , 205 , 1 , 1 ,
+418 , 10816 , 11 , 215 , 1 , 1 ,
+418 , 10817 , 11 , 215 , 1 , 1 ,
+418 , 10818 , 9 , 205 , 1 , 1 ,
+418 , 10819 , 9 , 194 , 1 , 1 ,
+418 , 10820 , 9 , 215 , 1 , 1 ,
+418 , 10821 , 8 , 215 , 1 , 1 ,
+418 , 10822 , 8 , 215 , 1 , 1 ,
+418 , 10823 , 8 , 215 , 1 , 1 ,
+418 , 10824 , 8 , 194 , 1 , 1 ,
+418 , 10825 , 8 , 205 , 1 , 1 ,
+418 , 10826 , 8 , 205 , 1 , 1 ,
+418 , 10827 , 8 , 225 , 1 , 1 ,
+418 , 10828 , 6 , 215 , 1 , 1 ,
+418 , 10829 , 6 , 225 , 1 , 1 ,
+418 , 10830 , 6 , 225 , 1 , 1 ,
+418 , 10831 , 6 , 225 , 1 , 1 ,
+418 , 10832 , 6 , 205 , 1 , 1 ,
+418 , 10833 , 6 , 225 , 1 , 1 ,
+418 , 10834 , 6 , 225 , 1 , 1 ,
+418 , 10835 , 6 , 225 , 1 , 1 ,
+418 , 10836 , 6 , 205 , 1 , 1 ,
+418 , 10837 , 6 , 215 , 1 , 1 ,
+418 , 10838 , 4 , 215 , 1 , 1 ,
+418 , 10839 , 4 , 215 , 1 , 1 ,
+418 , 10840 , 4 , 205 , 1 , 1 ,
+418 , 10841 , 4 , 205 , 1 , 1 ,
+418 , 10842 , 4 , 205 , 1 , 1 ,
+418 , 10843 , 4 , 205 , 1 , 1 ,
+418 , 10844 , 4 , 215 , 1 , 1 ,
+418 , 10845 , 4 , 205 , 1 , 1 ,
+418 , 10846 , 4 , 194 , 1 , 1 ,
+418 , 10847 , 4 , 174 , 1 , 1 ,
+418 , 10848 , 292 , 174 , 1 , 1 , 10840 10799 10822 10808 10792 10810 10797 10831 10847 10790 10830 10814 10789 10837 10845 10834 10809 10794 10824 10791 10827 10843 10801 10800 10839 10806 10846 10819 10813 10798 10793 10838 10828 10816 10802 10818 10823 10796 10807 10825 10788 10815 10844 10821 10829 10812 10811 10804 10826 10817 10842 10841 10833 10803 10805 10820 10795 10835 10832 10836
+419 , 10857 , 3 , 42 , 1 , 1 ,
+419 , 10858 , 3 , 42 , 1 , 1 ,
+419 , 10859 , 3 , 42 , 1 , 1 ,
+419 , 10860 , 57 , 0 , 1 , 1 , 10857 10858 10859
+420 , 10861 , 27 , 62 , 1 , 1 ,
+420 , 10862 , 27 , 62 , 1 , 1 ,
+420 , 10863 , 27 , 72 , 1 , 1 ,
+420 , 10864 , 27 , 62 , 1 , 1 ,
+420 , 10865 , 27 , 62 , 1 , 1 ,
+420 , 10866 , 27 , 62 , 1 , 1 ,
+420 , 10867 , 26 , 62 , 1 , 1 ,
+420 , 10868 , 26 , 62 , 1 , 1 ,
+420 , 10869 , 26 , 62 , 1 , 1 ,
+420 , 10870 , 25 , 62 , 1 , 1 ,
+420 , 10871 , 24 , 72 , 1 , 1 ,
+420 , 10872 , 24 , 72 , 1 , 1 ,
+420 , 10873 , 24 , 72 , 1 , 1 ,
+420 , 10874 , 24 , 62 , 1 , 1 ,
+420 , 10875 , 24 , 72 , 1 , 1 ,
+420 , 10876 , 24 , 72 , 1 , 1 ,
+420 , 10877 , 23 , 72 , 1 , 1 ,
+420 , 10878 , 23 , 72 , 1 , 1 ,
+420 , 10879 , 23 , 72 , 1 , 1 ,
+420 , 10880 , 23 , 62 , 1 , 1 ,
+420 , 10881 , 22 , 72 , 1 , 1 ,
+420 , 10882 , 22 , 72 , 1 , 1 ,
+420 , 10883 , 22 , 72 , 1 , 1 ,
+420 , 10884 , 22 , 72 , 1 , 1 ,
+420 , 10885 , 21 , 72 , 1 , 1 ,
+420 , 10886 , 21 , 62 , 1 , 1 ,
+420 , 10887 , 21 , 62 , 1 , 1 ,
+420 , 10888 , 21 , 72 , 1 , 1 ,
+420 , 10889 , 21 , 72 , 1 , 1 ,
+420 , 10890 , 20 , 72 , 1 , 1 ,
+420 , 10891 , 19 , 72 , 1 , 1 ,
+420 , 10892 , 19 , 72 , 1 , 1 ,
+420 , 10893 , 18 , 72 , 1 , 1 ,
+420 , 10894 , 18 , 72 , 1 , 1 ,
+420 , 10895 , 18 , 72 , 1 , 1 ,
+420 , 10896 , 18 , 72 , 1 , 1 ,
+420 , 10897 , 18 , 82 , 1 , 1 ,
+420 , 10898 , 17 , 82 , 1 , 1 ,
+420 , 10899 , 17 , 82 , 1 , 1 ,
+420 , 10900 , 17 , 82 , 1 , 1 ,
+420 , 10901 , 16 , 82 , 1 , 1 ,
+420 , 10902 , 16 , 82 , 1 , 1 ,
+420 , 10903 , 16 , 82 , 1 , 1 ,
+420 , 10904 , 15 , 72 , 1 , 1 ,
+420 , 10905 , 15 , 72 , 1 , 1 ,
+420 , 10906 , 15 , 72 , 1 , 1 ,
+420 , 10907 , 15 , 72 , 1 , 1 ,
+420 , 10908 , 15 , 72 , 1 , 1 ,
+420 , 10909 , 14 , 82 , 1 , 1 ,
+420 , 10910 , 14 , 72 , 1 , 1 ,
+420 , 10911 , 13 , 72 , 1 , 1 ,
+420 , 10912 , 12 , 82 , 1 , 1 ,
+420 , 10913 , 12 , 82 , 1 , 1 ,
+420 , 10914 , 12 , 72 , 1 , 1 ,
+420 , 10915 , 12 , 72 , 1 , 1 ,
+420 , 10916 , 11 , 92 , 1 , 1 ,
+420 , 10917 , 11 , 92 , 1 , 1 ,
+420 , 10918 , 11 , 92 , 1 , 1 ,
+420 , 10919 , 11 , 92 , 1 , 1 ,
+420 , 10920 , 11 , 82 , 1 , 1 ,
+420 , 10921 , 10 , 82 , 1 , 1 ,
+420 , 10922 , 9 , 82 , 1 , 1 ,
+420 , 10923 , 9 , 82 , 1 , 1 ,
+420 , 10924 , 9 , 82 , 1 , 1 ,
+420 , 10925 , 9 , 92 , 1 , 1 ,
+420 , 10926 , 8 , 92 , 1 , 1 ,
+420 , 10927 , 8 , 92 , 1 , 1 ,
+420 , 10928 , 8 , 92 , 1 , 1 ,
+420 , 10929 , 8 , 92 , 1 , 1 ,
+420 , 10930 , 8 , 92 , 1 , 1 ,
+420 , 10931 , 7 , 82 , 1 , 1 ,
+420 , 10932 , 7 , 82 , 1 , 1 ,
+420 , 10933 , 7 , 82 , 1 , 1 ,
+420 , 10934 , 7 , 92 , 1 , 1 ,
+420 , 10935 , 6 , 93 , 1 , 1 ,
+420 , 10936 , 6 , 82 , 1 , 1 ,
+420 , 10937 , 6 , 82 , 1 , 1 ,
+420 , 10938 , 6 , 82 , 1 , 1 ,
+420 , 10939 , 5 , 82 , 1 , 1 ,
+420 , 10940 , 5 , 82 , 1 , 1 ,
+420 , 10941 , 4 , 92 , 1 , 1 ,
+420 , 10942 , 4 , 92 , 1 , 1 ,
+420 , 10943 , 4 , 92 , 1 , 1 ,
+420 , 10944 , 4 , 92 , 1 , 1 ,
+420 , 10945 , 4 , 82 , 1 , 1 ,
+420 , 10946 , 4 , 82 , 1 , 1 ,
+420 , 10947 , 4 , 82 , 1 , 1 ,
+420 , 10948 , 4 , 72 , 1 , 1 ,
+420 , 10949 , 4 , 72 , 1 , 1 ,
+420 , 10950 , 4 , 72 , 1 , 1 ,
+420 , 10951 , 2 , 72 , 1 , 1 ,
+420 , 10952 , 2 , 72 , 1 , 1 ,
+420 , 10953 , 2 , 82 , 1 , 1 ,
+420 , 10954 , 2 , 72 , 1 , 1 ,
+420 , 10955 , 2 , 82 , 1 , 1 ,
+420 , 10956 , 2 , 82 , 1 , 1 ,
+420 , 10957 , 2 , 72 , 1 , 1 ,
+420 , 10958 , 2 , 72 , 1 , 1 ,
+420 , 10959 , 2 , 62 , 1 , 1 ,
+420 , 10960 , 2 , 72 , 1 , 1 ,
+420 , 10961 , 173 , 82 , 1 , 1 , 10959 10929 10878 10953 10874 10898 10892 10863 10870 10913 10905 10904 10918 10928 10950 10940 10901 10903 10958 10909 10908 10879 10864 10887 10957 10949 10899 10935 10945 10882 10925 10894 10937 10876 10907 10866 10932 10936 10900 10919 10915 10910 10956 10960 10954 10871 10941 10865 10911 10944 10893 10923 10880 10884 10896 10914 10875 10931 10952 10890 10916 10946 10891 10934 10948 10917 10906 10930 10873 10933 10939 10902 10883 10885 10867 10861 10926 10897 10947 10872 10862 10951 10943 10888 10869 10895 10920 10955 10921 10912 10924 10881 10942 10868 10886 10889 10927 10877 10922 10938
+421 , 10962 , 29 , 62 , 1 , 1 ,
+421 , 10963 , 29 , 62 , 1 , 1 ,
+421 , 10964 , 29 , 62 , 1 , 1 ,
+421 , 10965 , 29 , 62 , 1 , 1 ,
+421 , 10966 , 28 , 52 , 1 , 1 ,
+421 , 10967 , 28 , 52 , 1 , 1 ,
+421 , 10968 , 28 , 52 , 1 , 1 ,
+421 , 10969 , 28 , 62 , 1 , 1 ,
+421 , 10970 , 27 , 72 , 1 , 1 ,
+421 , 10971 , 26 , 62 , 1 , 1 ,
+421 , 10972 , 26 , 62 , 1 , 1 ,
+421 , 10973 , 26 , 72 , 1 , 1 ,
+421 , 10974 , 26 , 72 , 1 , 1 ,
+421 , 10975 , 26 , 72 , 1 , 1 ,
+421 , 10976 , 25 , 62 , 1 , 1 ,
+421 , 10977 , 25 , 72 , 1 , 1 ,
+421 , 10978 , 25 , 72 , 1 , 1 ,
+421 , 10979 , 25 , 72 , 1 , 1 ,
+421 , 10980 , 24 , 72 , 1 , 1 ,
+421 , 10981 , 24 , 72 , 1 , 1 ,
+421 , 10982 , 23 , 72 , 1 , 1 ,
+421 , 10983 , 23 , 72 , 1 , 1 ,
+421 , 10984 , 23 , 72 , 1 , 1 ,
+421 , 10985 , 23 , 72 , 1 , 1 ,
+421 , 10986 , 23 , 72 , 1 , 1 ,
+421 , 10987 , 23 , 62 , 1 , 1 ,
+421 , 10988 , 22 , 72 , 1 , 1 ,
+421 , 10989 , 22 , 72 , 1 , 1 ,
+421 , 10990 , 21 , 62 , 1 , 1 ,
+421 , 10991 , 21 , 72 , 1 , 1 ,
+421 , 10992 , 20 , 72 , 1 , 1 ,
+421 , 10993 , 20 , 72 , 1 , 1 ,
+421 , 10994 , 20 , 72 , 1 , 1 ,
+421 , 10995 , 20 , 72 , 1 , 1 ,
+421 , 10996 , 20 , 72 , 1 , 1 ,
+421 , 10997 , 20 , 72 , 1 , 1 ,
+421 , 10998 , 20 , 92 , 1 , 1 ,
+421 , 10999 , 19 , 82 , 1 , 1 ,
+421 , 11000 , 18 , 82 , 1 , 1 ,
+421 , 11001 , 18 , 92 , 1 , 1 ,
+421 , 11002 , 17 , 92 , 1 , 1 ,
+421 , 11003 , 17 , 92 , 1 , 1 ,
+421 , 11004 , 17 , 82 , 1 , 1 ,
+421 , 11005 , 17 , 82 , 1 , 1 ,
+421 , 11006 , 17 , 72 , 1 , 1 ,
+421 , 11007 , 16 , 72 , 1 , 1 ,
+421 , 11008 , 16 , 82 , 1 , 1 ,
+421 , 11009 , 16 , 82 , 1 , 1 ,
+421 , 11010 , 15 , 82 , 1 , 1 ,
+421 , 11011 , 15 , 82 , 1 , 1 ,
+421 , 11012 , 14 , 72 , 1 , 1 ,
+421 , 11013 , 14 , 82 , 1 , 1 ,
+421 , 11014 , 14 , 82 , 1 , 1 ,
+421 , 11015 , 14 , 72 , 1 , 1 ,
+421 , 11016 , 14 , 82 , 1 , 1 ,
+421 , 11017 , 14 , 92 , 1 , 1 ,
+421 , 11018 , 13 , 92 , 1 , 1 ,
+421 , 11019 , 13 , 92 , 1 , 1 ,
+421 , 11020 , 12 , 82 , 1 , 1 ,
+421 , 11021 , 12 , 82 , 1 , 1 ,
+421 , 11022 , 11 , 82 , 1 , 1 ,
+421 , 11023 , 11 , 82 , 1 , 1 ,
+421 , 11024 , 11 , 82 , 1 , 1 ,
+421 , 11025 , 11 , 82 , 1 , 1 ,
+421 , 11026 , 11 , 82 , 1 , 1 ,
+421 , 11027 , 11 , 92 , 1 , 1 ,
+421 , 11028 , 10 , 82 , 1 , 1 ,
+421 , 11029 , 10 , 92 , 1 , 1 ,
+421 , 11030 , 10 , 92 , 1 , 1 ,
+421 , 11031 , 10 , 82 , 1 , 1 ,
+421 , 11032 , 9 , 92 , 1 , 1 ,
+421 , 11033 , 9 , 93 , 1 , 1 ,
+421 , 11034 , 9 , 92 , 1 , 1 ,
+421 , 11035 , 9 , 92 , 1 , 1 ,
+421 , 11036 , 9 , 92 , 1 , 1 ,
+421 , 11037 , 8 , 92 , 1 , 1 ,
+421 , 11038 , 8 , 92 , 1 , 1 ,
+421 , 11039 , 8 , 82 , 1 , 1 ,
+421 , 11040 , 8 , 103 , 1 , 1 ,
+421 , 11041 , 8 , 92 , 1 , 1 ,
+421 , 11042 , 6 , 103 , 1 , 1 ,
+421 , 11043 , 6 , 103 , 1 , 1 ,
+421 , 11044 , 6 , 103 , 1 , 1 ,
+421 , 11045 , 6 , 82 , 1 , 1 ,
+421 , 11046 , 6 , 92 , 1 , 1 ,
+421 , 11047 , 6 , 82 , 1 , 1 ,
+421 , 11048 , 6 , 82 , 1 , 1 ,
+421 , 11049 , 6 , 82 , 1 , 1 ,
+421 , 11050 , 6 , 72 , 1 , 1 ,
+421 , 11051 , 6 , 82 , 1 , 1 ,
+421 , 11052 , 4 , 82 , 1 , 1 ,
+421 , 11053 , 4 , 82 , 1 , 1 ,
+421 , 11054 , 4 , 82 , 1 , 1 ,
+421 , 11055 , 4 , 82 , 1 , 1 ,
+421 , 11056 , 4 , 82 , 1 , 1 ,
+421 , 11057 , 4 , 82 , 1 , 1 ,
+421 , 11058 , 4 , 82 , 1 , 1 ,
+421 , 11059 , 4 , 82 , 1 , 1 ,
+421 , 11060 , 4 , 72 , 1 , 1 ,
+421 , 11061 , 4 , 72 , 1 , 1 ,
+421 , 11062 , 175 , 92 , 1 , 1 , 11060 11042 11052 11041 11006 11044 10969 10980 11002 11017 11019 10974 11034 11048 11027 10981 10985 11004 11055 11012 11045 10999 11003 10972 10978 11028 11030 10967 10971 11022 11007 10991 11038 11039 11033 10977 11057 10976 11053 10987 10983 11047 11043 11035 10995 10979 11051 11056 10964 11037 11046 10968 11016 11020 10992 11014 11001 11008 10998 11013 10965 11050 10982 11009 10994 10970 11018 10986 10989 11036 11040 10975 11015 11059 10990 11029 11021 11032 10973 11024 10966 11054 10993 10963 11025 11026 10996 11005 11031 11011 11010 11000 11023 10988 10962 11058 11049 11061 10997 10984
+422 , 11269 , 23 , 159 , 1 , 1 ,
+422 , 11270 , 6 , 193 , 1 , 1 ,
+422 , 11271 , 6 , 215 , 1 , 1 ,
+422 , 11272 , 6 , 237 , 1 , 1 ,
+422 , 11273 , 6 , 203 , 1 , 1 ,
+422 , 11274 , 6 , 394 , 1 , 1 ,
+422 , 11275 , 6 , 201 , 1 , 1 ,
+422 , 11276 , 6 , 394 , 1 , 1 ,
+422 , 11277 , 6 , 204 , 1 , 1 ,
+422 , 11278 , 6 , 194 , 1 , 1 ,
+422 , 11279 , 414 , 21 , 1 , 1 , 11275 11270 11273 11274 11272 11271 11277 11276 11278 11269
+423 , 11280 , 4 , 171 , 1 , 1 ,
+423 , 11281 , 4 , 191 , 1 , 1 ,
+423 , 11282 , 4 , 215 , 1 , 1 ,
+423 , 11283 , 4 , 237 , 1 , 1 ,
+423 , 11284 , 4 , 212 , 1 , 1 ,
+423 , 11285 , 4 , 383 , 1 , 1 ,
+423 , 11286 , 4 , 202 , 1 , 1 ,
+423 , 11287 , 4 , 394 , 1 , 1 ,
+423 , 11288 , 4 , 193 , 1 , 1 ,
+423 , 11289 , 4 , 181 , 1 , 1 ,
+423 , 11290 , 414 , 21 , 1 , 1 , 11285 11284 11280 11286 11287 11289 11283 11281 11282 11288
+424 , 11291 , 4 , 65 , 1 , 1 ,
+424 , 11292 , 4 , 75 , 1 , 1 ,
+424 , 11293 , 4 , 76 , 1 , 1 ,
+424 , 11294 , 86 , 0 , 1 , 1 , 11291 11293 11292
+425 , 11295 , 16 , 175 , 1 , 1 ,
+425 , 11296 , 16 , 196 , 1 , 1 ,
+425 , 11297 , 16 , 174 , 1 , 1 ,
+425 , 11298 , 16 , 165 , 1 , 1 ,
+425 , 11299 , 16 , 175 , 1 , 1 ,
+425 , 11300 , 15 , 186 , 1 , 1 ,
+425 , 11301 , 15 , 184 , 1 , 1 ,
+425 , 11302 , 15 , 195 , 1 , 1 ,
+425 , 11303 , 14 , 194 , 1 , 1 ,
+425 , 11304 , 14 , 205 , 1 , 1 ,
+425 , 11305 , 13 , 195 , 1 , 1 ,
+425 , 11306 , 13 , 215 , 1 , 1 ,
+425 , 11307 , 13 , 226 , 1 , 1 ,
+425 , 11308 , 13 , 205 , 1 , 1 ,
+425 , 11309 , 12 , 226 , 1 , 1 ,
+425 , 11310 , 12 , 215 , 1 , 1 ,
+425 , 11311 , 12 , 225 , 1 , 1 ,
+425 , 11312 , 12 , 225 , 1 , 1 ,
+425 , 11313 , 12 , 225 , 1 , 1 ,
+425 , 11314 , 11 , 246 , 1 , 1 ,
+425 , 11315 , 10 , 236 , 1 , 1 ,
+425 , 11316 , 10 , 247 , 1 , 1 ,
+425 , 11317 , 9 , 246 , 1 , 1 ,
+425 , 11318 , 9 , 247 , 1 , 1 ,
+425 , 11319 , 9 , 225 , 1 , 1 ,
+425 , 11320 , 9 , 215 , 1 , 1 ,
+425 , 11321 , 9 , 205 , 1 , 1 ,
+425 , 11322 , 9 , 205 , 1 , 1 ,
+425 , 11323 , 8 , 215 , 1 , 1 ,
+425 , 11324 , 8 , 216 , 1 , 1 ,
+425 , 11325 , 6 , 195 , 1 , 1 ,
+425 , 11326 , 6 , 195 , 1 , 1 ,
+425 , 11327 , 6 , 215 , 1 , 1 ,
+425 , 11328 , 6 , 225 , 1 , 1 ,
+425 , 11329 , 6 , 215 , 1 , 1 ,
+425 , 11330 , 6 , 205 , 1 , 1 ,
+425 , 11331 , 6 , 205 , 1 , 1 ,
+425 , 11332 , 5 , 195 , 1 , 1 ,
+425 , 11333 , 5 , 195 , 1 , 1 ,
+425 , 11334 , 5 , 205 , 1 , 1 ,
+425 , 11335 , 4 , 226 , 1 , 1 ,
+425 , 11336 , 4 , 226 , 1 , 1 ,
+425 , 11337 , 4 , 225 , 1 , 1 ,
+425 , 11338 , 4 , 215 , 1 , 1 ,
+425 , 11339 , 4 , 215 , 1 , 1 ,
+425 , 11340 , 4 , 215 , 1 , 1 ,
+425 , 11341 , 4 , 215 , 1 , 1 ,
+425 , 11342 , 4 , 205 , 1 , 1 ,
+425 , 11343 , 4 , 225 , 1 , 1 ,
+425 , 11344 , 4 , 235 , 1 , 1 ,
+425 , 11345 , 2 , 215 , 1 , 1 ,
+425 , 11346 , 2 , 205 , 1 , 1 ,
+425 , 11347 , 2 , 195 , 1 , 1 ,
+425 , 11348 , 2 , 195 , 1 , 1 ,
+425 , 11349 , 2 , 205 , 1 , 1 ,
+425 , 11350 , 2 , 195 , 1 , 1 ,
+425 , 11351 , 2 , 195 , 1 , 1 ,
+425 , 11352 , 2 , 205 , 1 , 1 ,
+425 , 11353 , 2 , 205 , 1 , 1 ,
+425 , 11354 , 2 , 194 , 1 , 1 ,
+425 , 11355 , 270 , 174 , 1 , 1 , 11298 11327 11315 11313 11321 11306 11329 11353 11308 11312 11297 11320 11309 11349 11314 11316 11311 11305 11336 11302 11331 11343 11319 11322 11345 11324 11338 11323 11325 11310 11347 11295 11330 11344 11352 11334 11300 11335 11307 11333 11342 11354 11326 11296 11318 11317 11303 11340 11348 11351 11299 11339 11346 11332 11341 11301 11328 11304 11337 11350
+426 , 11356 , 9 , 164 , 1 , 1 ,
+426 , 11357 , 9 , 184 , 1 , 1 ,
+426 , 11358 , 9 , 154 , 1 , 1 ,
+426 , 11359 , 8 , 154 , 1 , 1 ,
+426 , 11360 , 6 , 154 , 1 , 1 ,
+426 , 11361 , 6 , 164 , 1 , 1 ,
+426 , 11362 , 6 , 184 , 1 , 1 ,
+426 , 11363 , 6 , 184 , 1 , 1 ,
+426 , 11364 , 6 , 164 , 1 , 1 ,
+426 , 11365 , 6 , 195 , 1 , 1 ,
+426 , 11366 , 6 , 184 , 1 , 1 ,
+426 , 11367 , 6 , 215 , 1 , 1 ,
+426 , 11368 , 6 , 205 , 1 , 1 ,
+426 , 11369 , 5 , 195 , 1 , 1 ,
+426 , 11370 , 7 , 362 , 1 , 1 ,
+426 , 11371 , 7 , 354 , 1 , 1 ,
+426 , 11372 , 7 , 746 , 1 , 1 ,
+426 , 11373 , 7 , 350 , 1 , 1 ,
+426 , 11374 , 7 , 361 , 1 , 1 ,
+426 , 11375 , 7 , 393 , 1 , 1 ,
+426 , 11376 , 7 , 424 , 1 , 1 ,
+426 , 11377 , 7 , 815 , 1 , 1 ,
+426 , 11378 , 7 , 405 , 1 , 1 ,
+426 , 11379 , 7 , 384 , 1 , 1 ,
+426 , 11380 , 5 , 1066 , 1 , 1 ,
+426 , 11381 , 5 , 1157 , 1 , 1 ,
+426 , 11382 , 4 , 1146 , 1 , 1 ,
+426 , 11383 , 4 , 1166 , 1 , 1 ,
+426 , 11384 , 4 , 1277 , 1 , 1 ,
+426 , 11385 , 4 , 1197 , 1 , 1 ,
+426 , 11386 , 4 , 1127 , 1 , 1 ,
+426 , 11387 , 4 , 1218 , 1 , 1 ,
+426 , 11388 , 4 , 1126 , 1 , 1 ,
+426 , 11389 , 4 , 1115 , 1 , 1 ,
+426 , 11390 , 4 , 934 , 1 , 1 ,
+426 , 11391 , 4 , 822 , 1 , 1 ,
+426 , 11392 , 4 , 710 , 1 , 1 ,
+426 , 11393 , 4 , 675 , 1 , 1 ,
+426 , 11394 , 4 , 630 , 1 , 1 ,
+426 , 11395 , 4 , 660 , 1 , 1 ,
+426 , 11396 , 5 , 500 , 1 , 1 ,
+426 , 11397 , 5 , 448 , 1 , 1 ,
+426 , 11398 , 5 , 417 , 1 , 1 ,
+426 , 11399 , 5 , 408 , 1 , 1 ,
+426 , 11400 , 5 , 407 , 1 , 1 ,
+426 , 11401 , 5 , 407 , 1 , 1 ,
+426 , 11402 , 4 , 408 , 1 , 1 ,
+426 , 11403 , 4 , 429 , 1 , 1 ,
+426 , 11404 , 4 , 450 , 1 , 1 ,
+426 , 11405 , 4 , 491 , 1 , 1 ,
+426 , 11406 , 4 , 501 , 1 , 1 ,
+426 , 11407 , 4 , 523 , 1 , 1 ,
+426 , 11408 , 4 , 553 , 1 , 1 ,
+426 , 11409 , 4 , 626 , 1 , 1 ,
+426 , 11410 , 4 , 730 , 1 , 1 ,
+426 , 11411 , 4 , 815 , 1 , 1 ,
+426 , 11412 , 1 , 195 , 1 , 1 ,
+426 , 11413 , 1 , 195 , 1 , 1 ,
+426 , 11414 , 1 , 184 , 1 , 1 ,
+426 , 11415 , 1 , 174 , 1 , 1 ,
+426 , 11416 , 1307 , 235 , 1 , 1 , 11412 11359 11411 11386 11405 11358 11364 11392 11387 11373 11378 11362 11368 11379 11382 11397 11401 11385 11388 11400 11409 11357 11365 11356 11393 11394 11369 11366 11407 11399 11363 11383 11380 11410 11391 11402 11390 11389 11377 11375 11398 11413 11376 11371 11361 11406 11384 11396 11360 11370 11367 11381 11408 11403 11395 11414 11372 11374 11415 11404
+427 , 11417 , 16 , 188 , 1 , 1 ,
+427 , 11418 , 16 , 196 , 1 , 1 ,
+427 , 11419 , 16 , 178 , 1 , 1 ,
+427 , 11420 , 16 , 176 , 1 , 1 ,
+427 , 11421 , 16 , 165 , 1 , 1 ,
+427 , 11422 , 15 , 186 , 1 , 1 ,
+427 , 11423 , 15 , 186 , 1 , 1 ,
+427 , 11424 , 15 , 196 , 1 , 1 ,
+427 , 11425 , 15 , 196 , 1 , 1 ,
+427 , 11426 , 15 , 200 , 1 , 1 ,
+427 , 11427 , 13 , 208 , 1 , 1 ,
+427 , 11428 , 13 , 218 , 1 , 1 ,
+427 , 11429 , 13 , 208 , 1 , 1 ,
+427 , 11430 , 13 , 209 , 1 , 1 ,
+427 , 11431 , 13 , 230 , 1 , 1 ,
+427 , 11432 , 13 , 231 , 1 , 1 ,
+427 , 11433 , 12 , 220 , 1 , 1 ,
+427 , 11434 , 12 , 229 , 1 , 1 ,
+427 , 11435 , 12 , 210 , 1 , 1 ,
+427 , 11436 , 12 , 249 , 1 , 1 ,
+427 , 11437 , 10 , 243 , 1 , 1 ,
+427 , 11438 , 10 , 262 , 1 , 1 ,
+427 , 11439 , 10 , 252 , 1 , 1 ,
+427 , 11440 , 10 , 242 , 1 , 1 ,
+427 , 11441 , 10 , 223 , 1 , 1 ,
+427 , 11442 , 9 , 223 , 1 , 1 ,
+427 , 11443 , 9 , 212 , 1 , 1 ,
+427 , 11444 , 9 , 193 , 1 , 1 ,
+427 , 11445 , 9 , 224 , 1 , 1 ,
+427 , 11446 , 9 , 212 , 1 , 1 ,
+427 , 11447 , 7 , 206 , 1 , 1 ,
+427 , 11448 , 7 , 205 , 1 , 1 ,
+427 , 11449 , 7 , 216 , 1 , 1 ,
+427 , 11450 , 7 , 206 , 1 , 1 ,
+427 , 11451 , 7 , 206 , 1 , 1 ,
+427 , 11452 , 7 , 216 , 1 , 1 ,
+427 , 11453 , 7 , 206 , 1 , 1 ,
+427 , 11454 , 7 , 206 , 1 , 1 ,
+427 , 11455 , 7 , 206 , 1 , 1 ,
+427 , 11456 , 6 , 208 , 1 , 1 ,
+427 , 11457 , 5 , 238 , 1 , 1 ,
+427 , 11458 , 5 , 217 , 1 , 1 ,
+427 , 11459 , 5 , 218 , 1 , 1 ,
+427 , 11460 , 5 , 228 , 1 , 1 ,
+427 , 11461 , 5 , 218 , 1 , 1 ,
+427 , 11462 , 5 , 219 , 1 , 1 ,
+427 , 11463 , 5 , 219 , 1 , 1 ,
+427 , 11464 , 5 , 207 , 1 , 1 ,
+427 , 11465 , 5 , 228 , 1 , 1 ,
+427 , 11466 , 5 , 210 , 1 , 1 ,
+427 , 11467 , 3 , 220 , 1 , 1 ,
+427 , 11468 , 3 , 218 , 1 , 1 ,
+427 , 11469 , 3 , 189 , 1 , 1 ,
+427 , 11470 , 3 , 199 , 1 , 1 ,
+427 , 11471 , 3 , 197 , 1 , 1 ,
+427 , 11472 , 3 , 219 , 1 , 1 ,
+427 , 11473 , 3 , 219 , 1 , 1 ,
+427 , 11474 , 3 , 209 , 1 , 1 ,
+427 , 11475 , 3 , 218 , 1 , 1 ,
+427 , 11476 , 3 , 188 , 1 , 1 ,
+427 , 11477 , 286 , 170 , 1 , 1 , 11459 11433 11451 11438 11447 11468 11462 11446 11453 11460 11427 11442 11437 11432 11476 11463 11421 11434 11469 11450 11466 11439 11423 11443 11441 11474 11452 11420 11429 11444 11426 11445 11435 11454 11430 11475 11428 11464 11461 11418 11456 11424 11422 11465 11473 11472 11458 11467 11419 11436 11449 11455 11470 11431 11457 11425 11471 11417 11440 11448
+428 , 11489 , 27 , 62 , 1 , 1 ,
+428 , 11490 , 26 , 72 , 1 , 1 ,
+428 , 11491 , 26 , 72 , 1 , 1 ,
+428 , 11492 , 22 , 73 , 1 , 1 ,
+428 , 11493 , 22 , 73 , 1 , 1 ,
+428 , 11494 , 22 , 62 , 1 , 1 ,
+428 , 11495 , 22 , 73 , 1 , 1 ,
+428 , 11496 , 22 , 52 , 1 , 1 ,
+428 , 11497 , 22 , 73 , 1 , 1 ,
+428 , 11498 , 20 , 52 , 1 , 1 ,
+428 , 11499 , 113 , 11 , 1 , 1 , 11497 11498 11496 11489 11490 11495 11491 11494 11492 11493
+429 , 11500 , 34 , 62 , 1 , 1 ,
+429 , 11501 , 34 , 72 , 1 , 1 ,
+429 , 11502 , 34 , 83 , 1 , 1 ,
+429 , 11503 , 34 , 72 , 1 , 1 ,
+429 , 11504 , 34 , 72 , 1 , 1 ,
+429 , 11505 , 34 , 72 , 1 , 1 ,
+429 , 11506 , 34 , 72 , 1 , 1 ,
+429 , 11507 , 34 , 72 , 1 , 1 ,
+429 , 11508 , 33 , 72 , 1 , 1 ,
+429 , 11509 , 33 , 72 , 1 , 1 ,
+429 , 11510 , 131 , 11 , 1 , 1 , 11503 11504 11505 11509 11502 11506 11508 11501 11500 11507
+430 , 11511 , 30 , 205 , 1 , 1 ,
+430 , 11512 , 30 , 215 , 1 , 1 ,
+430 , 11513 , 29 , 205 , 1 , 1 ,
+430 , 11514 , 258 , 11 , 1 , 1 , 11511 11512 11513
+431 , 11515 , 14 , 52 , 1 , 1 ,
+431 , 11516 , 14 , 62 , 1 , 1 ,
+431 , 11517 , 14 , 62 , 1 , 1 ,
+431 , 11518 , 14 , 73 , 1 , 1 ,
+431 , 11519 , 14 , 73 , 1 , 1 ,
+431 , 11520 , 14 , 63 , 1 , 1 ,
+431 , 11521 , 10 , 62 , 1 , 1 ,
+431 , 11522 , 10 , 62 , 1 , 1 ,
+431 , 11523 , 10 , 62 , 1 , 1 ,
+431 , 11524 , 10 , 62 , 1 , 1 ,
+431 , 11525 , 101 , 11 , 1 , 1 , 11522 11515 11524 11516 11520 11523 11521 11518 11519 11517
+432 , 11526 , 6 , 62 , 1 , 1 ,
+432 , 11527 , 6 , 72 , 1 , 1 ,
+432 , 11528 , 6 , 62 , 1 , 1 ,
+432 , 11529 , 5 , 82 , 1 , 1 ,
+432 , 11530 , 5 , 72 , 1 , 1 ,
+432 , 11531 , 5 , 62 , 1 , 1 ,
+432 , 11532 , 5 , 62 , 1 , 1 ,
+432 , 11533 , 5 , 72 , 1 , 1 ,
+432 , 11534 , 5 , 62 , 1 , 1 ,
+432 , 11535 , 5 , 62 , 1 , 1 ,
+432 , 11536 , 102 , 11 , 1 , 1 , 11533 11532 11528 11534 11527 11535 11531 11526 11529 11530
+433 , 11537 , 22 , 52 , 1 , 1 ,
+433 , 11538 , 22 , 62 , 1 , 1 ,
+433 , 11539 , 22 , 72 , 1 , 1 ,
+433 , 11540 , 22 , 72 , 1 , 1 ,
+433 , 11541 , 10 , 72 , 1 , 1 ,
+433 , 11542 , 10 , 62 , 1 , 1 ,
+433 , 11543 , 10 , 72 , 1 , 1 ,
+433 , 11544 , 10 , 72 , 1 , 1 ,
+433 , 11545 , 10 , 62 , 1 , 1 ,
+433 , 11546 , 10 , 62 , 1 , 1 ,
+433 , 11547 , 110 , 11 , 1 , 1 , 11544 11537 11541 11540 11539 11538 11543 11542 11546 11545
+434 , 11548 , 29 , 72 , 1 , 1 ,
+434 , 11549 , 29 , 62 , 1 , 1 ,
+434 , 11550 , 29 , 83 , 1 , 1 ,
+434 , 11551 , 27 , 83 , 1 , 1 ,
+434 , 11552 , 27 , 72 , 1 , 1 ,
+434 , 11553 , 27 , 72 , 1 , 1 ,
+434 , 11554 , 27 , 62 , 1 , 1 ,
+434 , 11555 , 27 , 72 , 1 , 1 ,
+434 , 11556 , 27 , 72 , 1 , 1 ,
+434 , 11557 , 27 , 72 , 1 , 1 ,
+434 , 11558 , 125 , 11 , 1 , 1 , 11556 11555 11554 11548 11553 11552 11549 11557 11550 11551
+435 , 11559 , 31 , 240 , 1 , 1 ,
+435 , 11560 , 35 , 62 , 1 , 1 ,
+435 , 11561 , 35 , 72 , 1 , 1 ,
+435 , 11562 , 35 , 82 , 1 , 1 ,
+435 , 11563 , 35 , 72 , 1 , 1 ,
+435 , 11564 , 35 , 72 , 1 , 1 ,
+435 , 11565 , 35 , 72 , 1 , 1 ,
+435 , 11566 , 35 , 72 , 1 , 1 ,
+435 , 11567 , 35 , 72 , 1 , 1 ,
+435 , 11568 , 35 , 62 , 1 , 1 ,
+435 , 11569 , 274 , 11 , 1 , 1 , 11568 11563 11561 11567 11559 11565 11564 11560 11562 11566
+436 , 11570 , 34 , 230 , 1 , 1 ,
+436 , 11571 , 34 , 157 , 1 , 1 ,
+436 , 11572 , 34 , 136 , 1 , 1 ,
+436 , 11573 , 34 , 178 , 1 , 1 ,
+436 , 11574 , 34 , 302 , 1 , 1 ,
+436 , 11575 , 33 , 293 , 1 , 1 ,
+436 , 11576 , 33 , 157 , 1 , 1 ,
+436 , 11577 , 33 , 136 , 1 , 1 ,
+436 , 11578 , 33 , 147 , 1 , 1 ,
+436 , 11579 , 33 , 250 , 1 , 1 ,
+436 , 11580 , 342 , 21 , 1 , 1 , 11579 11575 11571 11577 11576 11573 11570 11574 11578 11572
+437 , 11581 , 37 , 235 , 1 , 1 ,
+437 , 11582 , 37 , 154 , 1 , 1 ,
+437 , 11583 , 37 , 132 , 1 , 1 ,
+437 , 11584 , 37 , 184 , 1 , 1 ,
+437 , 11585 , 37 , 307 , 1 , 1 ,
+437 , 11586 , 32 , 282 , 1 , 1 ,
+437 , 11587 , 32 , 157 , 1 , 1 ,
+437 , 11588 , 32 , 136 , 1 , 1 ,
+437 , 11589 , 32 , 157 , 1 , 1 ,
+437 , 11590 , 32 , 251 , 1 , 1 ,
+437 , 11591 , 359 , 21 , 1 , 1 , 11589 11584 11585 11586 11587 11590 11588 11582 11581 11583
+438 , 11592 , 37 , 296 , 1 , 1 ,
+438 , 11593 , 37 , 225 , 1 , 1 ,
+438 , 11594 , 37 , 215 , 1 , 1 ,
+438 , 11595 , 37 , 255 , 1 , 1 ,
+438 , 11596 , 37 , 387 , 1 , 1 ,
+438 , 11597 , 37 , 367 , 1 , 1 ,
+438 , 11598 , 37 , 235 , 1 , 1 ,
+438 , 11599 , 37 , 205 , 1 , 1 ,
+438 , 11600 , 37 , 225 , 1 , 1 ,
+438 , 11601 , 37 , 316 , 1 , 1 ,
+438 , 11602 , 439 , 21 , 1 , 1 , 11599 11598 11596 11594 11593 11600 11601 11592 11595 11597
+439 , 11603 , 13 , 88 , 1 , 1 ,
+439 , 11604 , 13 , 183 , 1 , 1 ,
+439 , 11605 , 13 , 109 , 1 , 1 ,
+439 , 11606 , 13 , 119 , 1 , 1 ,
+439 , 11607 , 13 , 107 , 1 , 1 ,
+439 , 11608 , 13 , 192 , 1 , 1 ,
+439 , 11609 , 13 , 97 , 1 , 1 ,
+439 , 11610 , 13 , 107 , 1 , 1 ,
+439 , 11611 , 13 , 108 , 1 , 1 ,
+439 , 11612 , 14 , 244 , 1 , 1 ,
+439 , 11613 , 274 , 11 , 1 , 1 , 11609 11610 11603 11606 11604 11605 11612 11608 11611 11607
+440 , 11614 , 22 , 31 , 1 , 1 ,
+440 , 11615 , 22 , 41 , 1 , 1 ,
+440 , 11616 , 21 , 31 , 1 , 1 ,
+440 , 11617 , 21 , 31 , 1 , 1 ,
+440 , 11618 , 21 , 31 , 1 , 1 ,
+440 , 11619 , 21 , 31 , 1 , 1 ,
+440 , 11620 , 21 , 41 , 1 , 1 ,
+440 , 11621 , 20 , 41 , 1 , 1 ,
+440 , 11622 , 20 , 42 , 1 , 1 ,
+440 , 11623 , 19 , 41 , 1 , 1 ,
+440 , 11624 , 17 , 41 , 1 , 1 ,
+440 , 11625 , 16 , 41 , 1 , 1 ,
+440 , 11626 , 16 , 41 , 1 , 1 ,
+440 , 11627 , 16 , 41 , 1 , 1 ,
+440 , 11628 , 16 , 41 , 1 , 1 ,
+440 , 11629 , 16 , 41 , 1 , 1 ,
+440 , 11630 , 15 , 41 , 1 , 1 ,
+440 , 11631 , 15 , 41 , 1 , 1 ,
+440 , 11632 , 14 , 52 , 1 , 1 ,
+440 , 11633 , 14 , 52 , 1 , 1 ,
+440 , 11634 , 12 , 52 , 1 , 1 ,
+440 , 11635 , 12 , 52 , 1 , 1 ,
+440 , 11636 , 11 , 52 , 1 , 1 ,
+440 , 11637 , 11 , 52 , 1 , 1 ,
+440 , 11638 , 11 , 52 , 1 , 1 ,
+440 , 11639 , 11 , 42 , 1 , 1 ,
+440 , 11640 , 11 , 52 , 1 , 1 ,
+440 , 11641 , 10 , 52 , 1 , 1 ,
+440 , 11642 , 10 , 52 , 1 , 1 ,
+440 , 11643 , 9 , 52 , 1 , 1 ,
+440 , 11644 , 7 , 52 , 1 , 1 ,
+440 , 11645 , 7 , 52 , 1 , 1 ,
+440 , 11646 , 7 , 52 , 1 , 1 ,
+440 , 11647 , 7 , 52 , 1 , 1 ,
+440 , 11648 , 7 , 52 , 1 , 1 ,
+440 , 11649 , 6 , 52 , 1 , 1 ,
+440 , 11650 , 6 , 52 , 1 , 1 ,
+440 , 11651 , 6 , 52 , 1 , 1 ,
+440 , 11652 , 5 , 52 , 1 , 1 ,
+440 , 11653 , 5 , 52 , 1 , 1 ,
+440 , 11654 , 5 , 52 , 1 , 1 ,
+440 , 11655 , 5 , 62 , 1 , 1 ,
+440 , 11656 , 4 , 52 , 1 , 1 ,
+440 , 11657 , 4 , 62 , 1 , 1 ,
+440 , 11658 , 4 , 52 , 1 , 1 ,
+440 , 11659 , 4 , 52 , 1 , 1 ,
+440 , 11660 , 4 , 62 , 1 , 1 ,
+440 , 11661 , 4 , 52 , 1 , 1 ,
+440 , 11662 , 4 , 62 , 1 , 1 ,
+440 , 11663 , 4 , 52 , 1 , 1 ,
+440 , 11664 , 2 , 52 , 1 , 1 ,
+440 , 11665 , 2 , 52 , 1 , 1 ,
+440 , 11666 , 2 , 52 , 1 , 1 ,
+440 , 11667 , 2 , 52 , 1 , 1 ,
+440 , 11668 , 2 , 62 , 1 , 1 ,
+440 , 11669 , 2 , 52 , 1 , 1 ,
+440 , 11670 , 2 , 52 , 1 , 1 ,
+440 , 11671 , 2 , 52 , 1 , 1 ,
+440 , 11672 , 2 , 52 , 1 , 1 ,
+440 , 11673 , 2 , 52 , 1 , 1 ,
+440 , 11674 , 82 , 21 , 1 , 1 , 11631 11646 11621 11624 11614 11640 11649 11636 11654 11615 11653 11660 11619 11627 11665 11647 11670 11642 11671 11661 11667 11650 11666 11645 11652 11633 11616 11623 11641 11637 11655 11618 11626 11639 11628 11663 11620 11630 11622 11659 11673 11625 11651 11662 11617 11672 11658 11638 11634 11644 11664 11632 11635 11656 11657 11669 11668 11643 11648 11629
+441 , 11675 , 1 , 62 , 1 , 1 ,
+441 , 11676 , 1 , 62 , 1 , 1 ,
+441 , 11677 , 1 , 62 , 1 , 1 ,
+441 , 11678 , 1 , 72 , 1 , 1 ,
+441 , 11679 , 1 , 62 , 1 , 1 ,
+441 , 11680 , 1 , 62 , 1 , 1 ,
+441 , 11681 , 1 , 62 , 1 , 1 ,
+441 , 11682 , 1 , 62 , 1 , 1 ,
+441 , 11683 , 1 , 62 , 1 , 1 ,
+441 , 11684 , 1 , 62 , 1 , 1 ,
+441 , 11685 , 89 , 11 , 1 , 1 , 11683 11678 11676 11675 11679 11681 11682 11677 11680 11684
+442 , 11686 , 2 , 144 , 1 , 1 ,
+442 , 11687 , 2 , 154 , 1 , 1 ,
+442 , 11688 , 2 , 185 , 1 , 1 ,
+442 , 11689 , 2 , 164 , 1 , 1 ,
+442 , 11690 , 2 , 154 , 1 , 1 ,
+442 , 11691 , 2 , 164 , 1 , 1 ,
+442 , 11692 , 2 , 164 , 1 , 1 ,
+442 , 11693 , 2 , 144 , 1 , 1 ,
+442 , 11694 , 199 , 31 , 1 , 1 , 11692 11688 11687 11691 11693 11686 11690 11689
+443 , 11695 , 2 , 144 , 1 , 1 ,
+443 , 11696 , 2 , 164 , 1 , 1 ,
+443 , 11697 , 2 , 184 , 1 , 1 ,
+443 , 11698 , 2 , 164 , 1 , 1 ,
+443 , 11699 , 2 , 143 , 1 , 1 ,
+443 , 11700 , 2 , 164 , 1 , 1 ,
+443 , 11701 , 2 , 164 , 1 , 1 ,
+443 , 11702 , 2 , 143 , 1 , 1 ,
+443 , 11703 , 199 , 21 , 1 , 1 , 11702 11695 11696 11701 11699 11698 11700 11697
+444 , 11704 , 2 , 144 , 1 , 1 ,
+444 , 11705 , 2 , 164 , 1 , 1 ,
+444 , 11706 , 2 , 185 , 1 , 1 ,
+444 , 11707 , 2 , 164 , 1 , 1 ,
+444 , 11708 , 2 , 154 , 1 , 1 ,
+444 , 11709 , 2 , 154 , 1 , 1 ,
+444 , 11710 , 2 , 164 , 1 , 1 ,
+444 , 11711 , 2 , 144 , 1 , 1 ,
+444 , 11712 , 199 , 21 , 1 , 1 , 11707 11711 11710 11704 11708 11709 11706 11705
+445 , 11713 , 2 , 144 , 1 , 1 ,
+445 , 11714 , 2 , 164 , 1 , 1 ,
+445 , 11715 , 2 , 184 , 1 , 1 ,
+445 , 11716 , 2 , 154 , 1 , 1 ,
+445 , 11717 , 2 , 154 , 1 , 1 ,
+445 , 11718 , 2 , 154 , 1 , 1 ,
+445 , 11719 , 2 , 164 , 1 , 1 ,
+445 , 11720 , 2 , 154 , 1 , 1 ,
+445 , 11721 , 199 , 21 , 1 , 1 , 11715 11718 11716 11719 11717 11713 11720 11714
+446 , 11722 , 1 , 144 , 1 , 1 ,
+446 , 11723 , 1 , 164 , 1 , 1 ,
+446 , 11724 , 1 , 174 , 1 , 1 ,
+446 , 11725 , 1 , 164 , 1 , 1 ,
+446 , 11726 , 1 , 154 , 1 , 1 ,
+446 , 11727 , 1 , 154 , 1 , 1 ,
+446 , 11728 , 1 , 154 , 1 , 1 ,
+446 , 11729 , 1 , 154 , 1 , 1 ,
+446 , 11730 , 189 , 21 , 1 , 1 , 11722 11728 11729 11724 11727 11725 11723 11726
+447 , 11731 , 16 , 185 , 1 , 1 ,
+447 , 11732 , 16 , 195 , 1 , 1 ,
+447 , 11733 , 15 , 185 , 1 , 1 ,
+447 , 11734 , 15 , 174 , 1 , 1 ,
+447 , 11735 , 14 , 174 , 1 , 1 ,
+447 , 11736 , 14 , 185 , 1 , 1 ,
+447 , 11737 , 14 , 185 , 1 , 1 ,
+447 , 11738 , 14 , 195 , 1 , 1 ,
+447 , 11739 , 13 , 195 , 1 , 1 ,
+447 , 11740 , 13 , 205 , 1 , 1 ,
+447 , 11741 , 13 , 195 , 1 , 1 ,
+447 , 11742 , 13 , 215 , 1 , 1 ,
+447 , 11743 , 12 , 226 , 1 , 1 ,
+447 , 11744 , 12 , 225 , 1 , 1 ,
+447 , 11745 , 12 , 235 , 1 , 1 ,
+447 , 11746 , 12 , 225 , 1 , 1 ,
+447 , 11747 , 12 , 215 , 1 , 1 ,
+447 , 11748 , 11 , 225 , 1 , 1 ,
+447 , 11749 , 11 , 215 , 1 , 1 ,
+447 , 11750 , 10 , 246 , 1 , 1 ,
+447 , 11751 , 10 , 256 , 1 , 1 ,
+447 , 11752 , 10 , 266 , 1 , 1 ,
+447 , 11753 , 10 , 256 , 1 , 1 ,
+447 , 11754 , 9 , 246 , 1 , 1 ,
+447 , 11755 , 9 , 235 , 1 , 1 ,
+447 , 11756 , 9 , 205 , 1 , 1 ,
+447 , 11757 , 9 , 205 , 1 , 1 ,
+447 , 11758 , 8 , 195 , 1 , 1 ,
+447 , 11759 , 7 , 215 , 1 , 1 ,
+447 , 11760 , 7 , 215 , 1 , 1 ,
+447 , 11761 , 6 , 205 , 1 , 1 ,
+447 , 11762 , 6 , 205 , 1 , 1 ,
+447 , 11763 , 6 , 215 , 1 , 1 ,
+447 , 11764 , 6 , 225 , 1 , 1 ,
+447 , 11765 , 6 , 205 , 1 , 1 ,
+447 , 11766 , 6 , 215 , 1 , 1 ,
+447 , 11767 , 6 , 205 , 1 , 1 ,
+447 , 11768 , 6 , 194 , 1 , 1 ,
+447 , 11769 , 6 , 205 , 1 , 1 ,
+447 , 11770 , 5 , 226 , 1 , 1 ,
+447 , 11771 , 4 , 226 , 1 , 1 ,
+447 , 11772 , 4 , 236 , 1 , 1 ,
+447 , 11773 , 4 , 205 , 1 , 1 ,
+447 , 11774 , 4 , 215 , 1 , 1 ,
+447 , 11775 , 4 , 215 , 1 , 1 ,
+447 , 11776 , 4 , 205 , 1 , 1 ,
+447 , 11777 , 4 , 225 , 1 , 1 ,
+447 , 11778 , 4 , 225 , 1 , 1 ,
+447 , 11779 , 4 , 225 , 1 , 1 ,
+447 , 11780 , 4 , 236 , 1 , 1 ,
+447 , 11781 , 2 , 205 , 1 , 1 ,
+447 , 11782 , 2 , 206 , 1 , 1 ,
+447 , 11783 , 2 , 185 , 1 , 1 ,
+447 , 11784 , 2 , 195 , 1 , 1 ,
+447 , 11785 , 2 , 205 , 1 , 1 ,
+447 , 11786 , 2 , 206 , 1 , 1 ,
+447 , 11787 , 2 , 215 , 1 , 1 ,
+447 , 11788 , 2 , 215 , 1 , 1 ,
+447 , 11789 , 2 , 206 , 1 , 1 ,
+447 , 11790 , 2 , 206 , 1 , 1 ,
+447 , 11791 , 290 , 154 , 1 , 1 , 11744 11789 11747 11735 11737 11753 11771 11755 11766 11782 11746 11748 11773 11736 11738 11757 11788 11762 11750 11768 11778 11767 11761 11758 11769 11775 11774 11745 11731 11754 11785 11733 11781 11742 11756 11772 11770 11739 11740 11777 11734 11741 11732 11776 11780 11760 11786 11743 11790 11787 11751 11784 11763 11752 11749 11765 11759 11783 11764 11779
+448 , 11792 , 13 , 52 , 1 , 1 ,
+448 , 11793 , 13 , 63 , 1 , 1 ,
+448 , 11794 , 13 , 62 , 1 , 1 ,
+448 , 11795 , 13 , 72 , 1 , 1 ,
+448 , 11796 , 13 , 62 , 1 , 1 ,
+448 , 11797 , 13 , 62 , 1 , 1 ,
+448 , 11798 , 13 , 62 , 1 , 1 ,
+448 , 11799 , 13 , 62 , 1 , 1 ,
+448 , 11800 , 13 , 62 , 1 , 1 ,
+448 , 11801 , 13 , 62 , 1 , 1 ,
+448 , 11802 , 99 , 11 , 1 , 1 , 11798 11795 11799 11796 11793 11792 11797 11794 11800 11801
+449 , 11803 , 6 , 52 , 1 , 1 ,
+449 , 11804 , 6 , 62 , 1 , 1 ,
+449 , 11805 , 6 , 62 , 1 , 1 ,
+449 , 11806 , 6 , 82 , 1 , 1 ,
+449 , 11807 , 6 , 72 , 1 , 1 ,
+449 , 11808 , 6 , 62 , 1 , 1 ,
+449 , 11809 , 6 , 62 , 1 , 1 ,
+449 , 11810 , 6 , 72 , 1 , 1 ,
+449 , 11811 , 6 , 72 , 1 , 1 ,
+449 , 11812 , 6 , 62 , 1 , 1 ,
+449 , 11813 , 102 , 11 , 1 , 1 , 11811 11807 11804 11809 11812 11810 11805 11806 11808 11803
+450 , 11836 , 4 , 62 , 1 , 1 ,
+450 , 11837 , 4 , 62 , 1 , 1 ,
+450 , 11838 , 4 , 72 , 1 , 1 ,
+450 , 11839 , 4 , 72 , 1 , 1 ,
+450 , 11840 , 4 , 72 , 1 , 1 ,
+450 , 11841 , 4 , 62 , 1 , 1 ,
+450 , 11842 , 4 , 72 , 1 , 1 ,
+450 , 11843 , 4 , 72 , 1 , 1 ,
+450 , 11844 , 4 , 72 , 1 , 1 ,
+450 , 11845 , 4 , 62 , 1 , 1 ,
+450 , 11846 , 90 , 21 , 1 , 1 , 11840 11836 11842 11839 11845 11841 11838 11837 11844 11843
+451 , 11847 , 3 , 62 , 1 , 1 ,
+451 , 11848 , 3 , 62 , 1 , 1 ,
+451 , 11849 , 3 , 72 , 1 , 1 ,
+451 , 11850 , 3 , 72 , 1 , 1 ,
+451 , 11851 , 3 , 72 , 1 , 1 ,
+451 , 11852 , 3 , 62 , 1 , 1 ,
+451 , 11853 , 3 , 62 , 1 , 1 ,
+451 , 11854 , 3 , 62 , 1 , 1 ,
+451 , 11855 , 3 , 62 , 1 , 1 ,
+451 , 11856 , 3 , 72 , 1 , 1 ,
+451 , 11857 , 89 , 11 , 1 , 1 , 11855 11847 11853 11849 11854 11852 11856 11851 11850 11848
+452 , 12045 , 10 , 62 , 1 , 1 ,
+452 , 12046 , 10 , 62 , 1 , 1 ,
+452 , 12047 , 10 , 72 , 1 , 1 ,
+452 , 12048 , 10 , 72 , 1 , 1 ,
+452 , 12049 , 10 , 62 , 1 , 1 ,
+452 , 12050 , 10 , 62 , 1 , 1 ,
+452 , 12051 , 9 , 62 , 1 , 1 ,
+452 , 12052 , 9 , 72 , 1 , 1 ,
+452 , 12053 , 9 , 62 , 1 , 1 ,
+452 , 12054 , 9 , 52 , 1 , 1 ,
+452 , 12055 , 114 , 21 , 1 , 1 , 12050 12051 12048 12047 12046 12045 12052 12049 12053 12054
+453 , 12056 , 11 , 52 , 1 , 1 ,
+453 , 12057 , 11 , 62 , 1 , 1 ,
+453 , 12058 , 11 , 62 , 1 , 1 ,
+453 , 12059 , 11 , 62 , 1 , 1 ,
+453 , 12060 , 11 , 62 , 1 , 1 ,
+453 , 12061 , 11 , 62 , 1 , 1 ,
+453 , 12062 , 11 , 52 , 1 , 1 ,
+453 , 12063 , 11 , 62 , 1 , 1 ,
+453 , 12064 , 11 , 62 , 1 , 1 ,
+453 , 12065 , 11 , 62 , 1 , 1 ,
+453 , 12066 , 101 , 11 , 1 , 1 , 12063 12060 12057 12062 12065 12061 12059 12056 12058 12064
+454 , 12067 , 18 , 52 , 1 , 1 ,
+454 , 12068 , 18 , 62 , 1 , 1 ,
+454 , 12069 , 18 , 72 , 1 , 1 ,
+454 , 12070 , 18 , 73 , 1 , 1 ,
+454 , 12071 , 18 , 62 , 1 , 1 ,
+454 , 12072 , 18 , 62 , 1 , 1 ,
+454 , 12073 , 18 , 72 , 1 , 1 ,
+454 , 12074 , 17 , 72 , 1 , 1 ,
+454 , 12075 , 17 , 62 , 1 , 1 ,
+454 , 12076 , 17 , 62 , 1 , 1 ,
+454 , 12077 , 102 , 11 , 1 , 1 , 12068 12067 12070 12073 12076 12071 12074 12072 12075 12069
+455 , 12089 , 16 , 62 , 1 , 1 ,
+455 , 12090 , 16 , 63 , 1 , 1 ,
+455 , 12091 , 16 , 73 , 1 , 1 ,
+455 , 12092 , 16 , 73 , 1 , 1 ,
+455 , 12093 , 16 , 63 , 1 , 1 ,
+455 , 12094 , 16 , 63 , 1 , 1 ,
+455 , 12095 , 16 , 63 , 1 , 1 ,
+455 , 12096 , 16 , 63 , 1 , 1 ,
+455 , 12097 , 16 , 63 , 1 , 1 ,
+455 , 12098 , 16 , 63 , 1 , 1 ,
+455 , 12099 , 105 , 11 , 1 , 1 , 12091 12095 12092 12089 12096 12097 12094 12098 12093 12090
+456 , 12100 , 4 , 63 , 1 , 1 ,
+456 , 12101 , 4 , 63 , 1 , 1 ,
+456 , 12102 , 4 , 74 , 1 , 1 ,
+456 , 12103 , 4 , 74 , 1 , 1 ,
+456 , 12104 , 4 , 64 , 1 , 1 ,
+456 , 12105 , 4 , 63 , 1 , 1 ,
+456 , 12106 , 4 , 73 , 1 , 1 ,
+456 , 12107 , 4 , 74 , 1 , 1 ,
+456 , 12108 , 4 , 63 , 1 , 1 ,
+456 , 12109 , 4 , 63 , 1 , 1 ,
+456 , 12110 , 94 , 11 , 1 , 1 , 12109 12107 12101 12104 12100 12105 12106 12102 12103 12108
+457 , 12111 , 2 , 52 , 1 , 1 ,
+457 , 12112 , 2 , 62 , 1 , 1 ,
+457 , 12113 , 2 , 72 , 1 , 1 ,
+457 , 12114 , 2 , 72 , 1 , 1 ,
+457 , 12115 , 2 , 62 , 1 , 1 ,
+457 , 12116 , 2 , 62 , 1 , 1 ,
+457 , 12117 , 2 , 62 , 1 , 1 ,
+457 , 12118 , 2 , 62 , 1 , 1 ,
+457 , 12119 , 2 , 62 , 1 , 1 ,
+457 , 12120 , 2 , 62 , 1 , 1 ,
+457 , 12121 , 87 , 11 , 1 , 1 , 12116 12114 12112 12119 12113 12111 12118 12115 12120 12117
+458 , 12246 , 7 , 52 , 1 , 1 ,
+458 , 12247 , 7 , 62 , 1 , 1 ,
+458 , 12248 , 7 , 72 , 1 , 1 ,
+458 , 12249 , 7 , 72 , 1 , 1 ,
+458 , 12250 , 7 , 62 , 1 , 1 ,
+458 , 12251 , 7 , 62 , 1 , 1 ,
+458 , 12252 , 7 , 62 , 1 , 1 ,
+458 , 12253 , 7 , 62 , 1 , 1 ,
+458 , 12254 , 6 , 62 , 1 , 1 ,
+458 , 12255 , 6 , 62 , 1 , 1 ,
+458 , 12256 , 91 , 21 , 1 , 1 , 12255 12247 12246 12253 12248 12252 12251 12254 12250 12249
+459 , 12257 , 6 , 92 , 1 , 1 ,
+459 , 12258 , 6 , 103 , 1 , 1 ,
+459 , 12259 , 6 , 103 , 1 , 1 ,
+459 , 12260 , 6 , 113 , 1 , 1 ,
+459 , 12261 , 6 , 123 , 1 , 1 ,
+459 , 12262 , 6 , 123 , 1 , 1 ,
+459 , 12263 , 6 , 123 , 1 , 1 ,
+459 , 12264 , 6 , 123 , 1 , 1 ,
+459 , 12265 , 6 , 123 , 1 , 1 ,
+459 , 12266 , 6 , 113 , 1 , 1 ,
+459 , 12267 , 3 , 103 , 1 , 1 ,
+459 , 12268 , 3 , 113 , 1 , 1 ,
+459 , 12269 , 3 , 114 , 1 , 1 ,
+459 , 12270 , 3 , 113 , 1 , 1 ,
+459 , 12271 , 3 , 113 , 1 , 1 ,
+459 , 12272 , 3 , 123 , 1 , 1 ,
+459 , 12273 , 3 , 114 , 1 , 1 ,
+459 , 12274 , 3 , 113 , 1 , 1 ,
+459 , 12275 , 3 , 103 , 1 , 1 ,
+459 , 12276 , 3 , 103 , 1 , 1 ,
+459 , 12277 , 143 , 31 , 1 , 1 , 12276 12257 12262 12269 12271 12260 12267 12258 12275 12273 12265 12259 12263 12270 12274 12272 12266 12261 12268 12264
+460 , 12278 , 10 , 62 , 1 , 1 ,
+460 , 12279 , 10 , 72 , 1 , 1 ,
+460 , 12280 , 9 , 72 , 1 , 1 ,
+460 , 12281 , 9 , 82 , 1 , 1 ,
+460 , 12282 , 9 , 62 , 1 , 1 ,
+460 , 12283 , 9 , 62 , 1 , 1 ,
+460 , 12284 , 9 , 62 , 1 , 1 ,
+460 , 12285 , 9 , 72 , 1 , 1 ,
+460 , 12286 , 9 , 72 , 1 , 1 ,
+460 , 12287 , 8 , 72 , 1 , 1 ,
+460 , 12288 , 109 , 11 , 1 , 1 , 12282 12284 12281 12278 12287 12283 12279 12280 12285 12286
+461 , 12289 , 2 , 62 , 1 , 1 ,
+461 , 12290 , 2 , 62 , 1 , 1 ,
+461 , 12291 , 2 , 72 , 1 , 1 ,
+461 , 12292 , 2 , 72 , 1 , 1 ,
+461 , 12293 , 2 , 72 , 1 , 1 ,
+461 , 12294 , 2 , 62 , 1 , 1 ,
+461 , 12295 , 2 , 62 , 1 , 1 ,
+461 , 12296 , 2 , 62 , 1 , 1 ,
+461 , 12297 , 2 , 62 , 1 , 1 ,
+461 , 12298 , 2 , 62 , 1 , 1 ,
+461 , 12299 , 89 , 11 , 1 , 1 , 12295 12293 12289 12294 12296 12290 12298 12292 12291 12297
+462 , 12300 , 5 , 52 , 1 , 1 ,
+462 , 12301 , 5 , 62 , 1 , 1 ,
+462 , 12302 , 5 , 73 , 1 , 1 ,
+462 , 12303 , 5 , 72 , 1 , 1 ,
+462 , 12304 , 5 , 63 , 1 , 1 ,
+462 , 12305 , 5 , 62 , 1 , 1 ,
+462 , 12306 , 5 , 62 , 1 , 1 ,
+462 , 12307 , 5 , 63 , 1 , 1 ,
+462 , 12308 , 5 , 63 , 1 , 1 ,
+462 , 12309 , 5 , 63 , 1 , 1 ,
+462 , 12310 , 91 , 11 , 1 , 1 , 12304 12305 12300 12301 12306 12307 12303 12309 12302 12308
+463 , 12311 , 3 , 62 , 1 , 1 ,
+463 , 12312 , 3 , 62 , 1 , 1 ,
+463 , 12313 , 3 , 72 , 1 , 1 ,
+463 , 12314 , 3 , 72 , 1 , 1 ,
+463 , 12315 , 3 , 72 , 1 , 1 ,
+463 , 12316 , 3 , 62 , 1 , 1 ,
+463 , 12317 , 3 , 62 , 1 , 1 ,
+463 , 12318 , 3 , 72 , 1 , 1 ,
+463 , 12319 , 3 , 72 , 1 , 1 ,
+463 , 12320 , 3 , 72 , 1 , 1 ,
+463 , 12321 , 89 , 11 , 1 , 1 , 12320 12312 12316 12318 12314 12311 12317 12313 12315 12319
+464 , 12322 , 15 , 52 , 1 , 1 ,
+464 , 12323 , 15 , 62 , 1 , 1 ,
+464 , 12324 , 15 , 62 , 1 , 1 ,
+464 , 12325 , 15 , 72 , 1 , 1 ,
+464 , 12326 , 15 , 72 , 1 , 1 ,
+464 , 12327 , 3 , 62 , 1 , 1 ,
+464 , 12328 , 3 , 62 , 1 , 1 ,
+464 , 12329 , 3 , 62 , 1 , 1 ,
+464 , 12330 , 3 , 62 , 1 , 1 ,
+464 , 12331 , 3 , 62 , 1 , 1 ,
+464 , 12332 , 99 , 11 , 1 , 1 , 12324 12326 12331 12323 12329 12327 12325 12330 12328 12322
+465 , 12333 , 4 , 52 , 1 , 1 ,
+465 , 12334 , 4 , 62 , 1 , 1 ,
+465 , 12335 , 4 , 72 , 1 , 1 ,
+465 , 12336 , 4 , 72 , 1 , 1 ,
+465 , 12337 , 4 , 72 , 1 , 1 ,
+465 , 12338 , 4 , 62 , 1 , 1 ,
+465 , 12339 , 4 , 62 , 1 , 1 ,
+465 , 12340 , 4 , 62 , 1 , 1 ,
+465 , 12341 , 4 , 62 , 1 , 1 ,
+465 , 12342 , 4 , 52 , 1 , 1 ,
+465 , 12343 , 90 , 11 , 1 , 1 , 12339 12342 12338 12334 12340 12335 12341 12337 12336 12333
+466 , 12344 , 101 , 82 , 1 , 1 ,
+466 , 12345 , 101 , 82 , 1 , 1 ,
+466 , 12346 , 100 , 72 , 1 , 1 ,
+466 , 12347 , 100 , 72 , 1 , 1 ,
+466 , 12348 , 100 , 72 , 1 , 1 ,
+466 , 12349 , 100 , 72 , 1 , 1 ,
+466 , 12350 , 100 , 92 , 1 , 1 ,
+466 , 12351 , 100 , 82 , 1 , 1 ,
+466 , 12352 , 100 , 93 , 1 , 1 ,
+466 , 12353 , 100 , 93 , 1 , 1 ,
+466 , 12354 , 97 , 103 , 1 , 1 ,
+466 , 12355 , 96 , 72 , 1 , 1 ,
+466 , 12356 , 96 , 92 , 1 , 1 ,
+466 , 12357 , 96 , 72 , 1 , 1 ,
+466 , 12358 , 96 , 82 , 1 , 1 ,
+466 , 12359 , 96 , 72 , 1 , 1 ,
+466 , 12360 , 96 , 92 , 1 , 1 ,
+466 , 12361 , 95 , 82 , 1 , 1 ,
+466 , 12362 , 95 , 82 , 1 , 1 ,
+466 , 12363 , 95 , 92 , 1 , 1 ,
+466 , 12364 , 92 , 105 , 1 , 1 ,
+466 , 12365 , 92 , 84 , 1 , 1 ,
+466 , 12366 , 92 , 84 , 1 , 1 ,
+466 , 12367 , 91 , 85 , 1 , 1 ,
+466 , 12368 , 91 , 85 , 1 , 1 ,
+466 , 12369 , 91 , 105 , 1 , 1 ,
+466 , 12370 , 91 , 74 , 1 , 1 ,
+466 , 12371 , 91 , 83 , 1 , 1 ,
+466 , 12372 , 91 , 82 , 1 , 1 ,
+466 , 12373 , 91 , 93 , 1 , 1 ,
+466 , 12374 , 88 , 73 , 1 , 1 ,
+466 , 12375 , 88 , 72 , 1 , 1 ,
+466 , 12376 , 88 , 72 , 1 , 1 ,
+466 , 12377 , 88 , 83 , 1 , 1 ,
+466 , 12378 , 88 , 83 , 1 , 1 ,
+466 , 12379 , 88 , 94 , 1 , 1 ,
+466 , 12380 , 88 , 93 , 1 , 1 ,
+466 , 12381 , 88 , 83 , 1 , 1 ,
+466 , 12382 , 88 , 73 , 1 , 1 ,
+466 , 12383 , 88 , 72 , 1 , 1 ,
+466 , 12384 , 127 , 63 , 1 , 1 ,
+466 , 12385 , 127 , 62 , 1 , 1 ,
+466 , 12386 , 127 , 62 , 1 , 1 ,
+466 , 12387 , 126 , 62 , 1 , 1 ,
+466 , 12388 , 126 , 52 , 1 , 1 ,
+466 , 12389 , 126 , 53 , 1 , 1 ,
+466 , 12390 , 117 , 83 , 1 , 1 ,
+466 , 12391 , 116 , 83 , 1 , 1 ,
+466 , 12392 , 115 , 84 , 1 , 1 ,
+466 , 12393 , 115 , 83 , 1 , 1 ,
+466 , 12394 , 115 , 82 , 1 , 1 ,
+466 , 12395 , 114 , 72 , 1 , 1 ,
+466 , 12396 , 112 , 82 , 1 , 1 ,
+466 , 12397 , 112 , 82 , 1 , 1 ,
+466 , 12398 , 112 , 82 , 1 , 1 ,
+466 , 12399 , 112 , 82 , 1 , 1 ,
+466 , 12400 , 112 , 82 , 1 , 1 ,
+466 , 12401 , 112 , 82 , 1 , 1 ,
+466 , 12402 , 109 , 73 , 1 , 1 ,
+466 , 12403 , 108 , 82 , 1 , 1 ,
+466 , 12404 , 108 , 73 , 1 , 1 ,
+466 , 12405 , 108 , 72 , 1 , 1 ,
+466 , 12406 , 108 , 72 , 1 , 1 ,
+466 , 12407 , 108 , 82 , 1 , 1 ,
+466 , 12408 , 108 , 83 , 1 , 1 ,
+466 , 12409 , 105 , 93 , 1 , 1 ,
+466 , 12410 , 105 , 93 , 1 , 1 ,
+466 , 12411 , 104 , 93 , 1 , 1 ,
+466 , 12412 , 104 , 83 , 1 , 1 ,
+466 , 12413 , 104 , 93 , 1 , 1 ,
+466 , 12414 , 104 , 93 , 1 , 1 ,
+466 , 12415 , 104 , 93 , 1 , 1 ,
+466 , 12416 , 104 , 93 , 1 , 1 ,
+466 , 12417 , 103 , 94 , 1 , 1 ,
+466 , 12418 , 103 , 94 , 1 , 1 ,
+466 , 12419 , 32 , 82 , 1 , 1 ,
+466 , 12420 , 32 , 72 , 1 , 1 ,
+466 , 12421 , 32 , 83 , 1 , 1 ,
+466 , 12422 , 31 , 82 , 1 , 1 ,
+466 , 12423 , 31 , 83 , 1 , 1 ,
+466 , 12424 , 31 , 82 , 1 , 1 ,
+466 , 12425 , 31 , 82 , 1 , 1 ,
+466 , 12426 , 31 , 82 , 1 , 1 ,
+466 , 12427 , 31 , 82 , 1 , 1 ,
+466 , 12428 , 31 , 72 , 1 , 1 ,
+466 , 12429 , 29 , 73 , 1 , 1 ,
+466 , 12430 , 29 , 62 , 1 , 1 ,
+466 , 12431 , 29 , 62 , 1 , 1 ,
+466 , 12432 , 29 , 62 , 1 , 1 ,
+466 , 12433 , 29 , 63 , 1 , 1 ,
+466 , 12434 , 29 , 62 , 1 , 1 ,
+466 , 12435 , 29 , 72 , 1 , 1 ,
+466 , 12436 , 29 , 73 , 1 , 1 ,
+466 , 12437 , 29 , 62 , 1 , 1 ,
+466 , 12438 , 29 , 73 , 1 , 1 ,
+466 , 12439 , 3 , 62 , 1 , 1 ,
+466 , 12440 , 3 , 52 , 1 , 1 ,
+466 , 12441 , 3 , 62 , 1 , 1 ,
+466 , 12442 , 3 , 52 , 1 , 1 ,
+466 , 12443 , 3 , 52 , 1 , 1 ,
+466 , 12444 , 244 , 82 , 1 , 1 , 12428 12392 12351 12434 12380 12387 12432 12395 12386 12357 12354 12440 12374 12383 12422 12345 12367 12429 12356 12417 12348 12410 12413 12408 12361 12412 12366 12385 12370 12362 12423 12359 12344 12407 12382 12381 12378 12402 12349 12418 12353 12363 12415 12405 12358 12426 12346 12404 12401 12375 12368 12406 12389 12350 12403 12411 12419 12393 12400 12437 12379 12398 12377 12369 12373 12431 12436 12414 12372 12409 12394 12424 12390 12425 12416 12430 12376 12399 12439 12442 12421 12443 12365 12435 12347 12384 12427 12441 12397 12420 12391 12352 12364 12360 12433 12438 12371 12355 12396 12388
+467 , 12445 , 74 , 248 , 1 , 1 ,
+467 , 12446 , 74 , 248 , 1 , 1 ,
+467 , 12447 , 74 , 248 , 1 , 1 ,
+467 , 12448 , 337 , 11 , 1 , 1 , 12447 12446 12445
+468 , 12449 , 15 , 72 , 1 , 1 ,
+468 , 12450 , 15 , 72 , 1 , 1 ,
+468 , 12451 , 15 , 83 , 1 , 1 ,
+468 , 12452 , 15 , 82 , 1 , 1 ,
+468 , 12453 , 15 , 72 , 1 , 1 ,
+468 , 12454 , 15 , 73 , 1 , 1 ,
+468 , 12455 , 15 , 72 , 1 , 1 ,
+468 , 12456 , 15 , 83 , 1 , 1 ,
+468 , 12457 , 3 , 72 , 1 , 1 ,
+468 , 12458 , 3 , 62 , 1 , 1 ,
+468 , 12459 , 141 , 11 , 1 , 1 , 12452 12451 12453 12458 12449 12455 12450 12456 12457 12454
+469 , 12460 , 20 , 103 , 1 , 1 ,
+469 , 12461 , 20 , 93 , 1 , 1 ,
+469 , 12462 , 20 , 104 , 1 , 1 ,
+469 , 12463 , 19 , 104 , 1 , 1 ,
+469 , 12464 , 18 , 113 , 1 , 1 ,
+469 , 12465 , 18 , 113 , 1 , 1 ,
+469 , 12466 , 16 , 113 , 1 , 1 ,
+469 , 12467 , 16 , 124 , 1 , 1 ,
+469 , 12468 , 8 , 124 , 1 , 1 ,
+469 , 12469 , 8 , 113 , 1 , 1 ,
+469 , 12470 , 4 , 93 , 1 , 1 ,
+469 , 12471 , 4 , 114 , 1 , 1 ,
+469 , 12472 , 4 , 113 , 1 , 1 ,
+469 , 12473 , 4 , 123 , 1 , 1 ,
+469 , 12474 , 4 , 113 , 1 , 1 ,
+469 , 12475 , 4 , 114 , 1 , 1 ,
+469 , 12476 , 4 , 103 , 1 , 1 ,
+469 , 12477 , 4 , 113 , 1 , 1 ,
+469 , 12478 , 4 , 113 , 1 , 1 ,
+469 , 12479 , 4 , 113 , 1 , 1 ,
+469 , 12480 , 152 , 31 , 1 , 1 , 12477 12469 12466 12474 12464 12478 12475 12465 12479 12473 12462 12470 12463 12468 12471 12461 12460 12467 12476 12472
+470 , 12481 , 3 , 53 , 1 , 1 ,
+470 , 12482 , 3 , 63 , 1 , 1 ,
+470 , 12483 , 3 , 64 , 1 , 1 ,
+470 , 12484 , 3 , 74 , 1 , 1 ,
+470 , 12485 , 3 , 63 , 1 , 1 ,
+470 , 12486 , 3 , 53 , 1 , 1 ,
+470 , 12487 , 3 , 63 , 1 , 1 ,
+470 , 12488 , 3 , 62 , 1 , 1 ,
+470 , 12489 , 3 , 62 , 1 , 1 ,
+470 , 12490 , 3 , 52 , 1 , 1 ,
+470 , 12491 , 91 , 11 , 1 , 1 , 12490 12488 12483 12485 12482 12481 12489 12487 12486 12484
+471 , 12492 , 2 , 53 , 1 , 1 ,
+471 , 12493 , 2 , 63 , 1 , 1 ,
+471 , 12494 , 2 , 63 , 1 , 1 ,
+471 , 12495 , 2 , 73 , 1 , 1 ,
+471 , 12496 , 2 , 63 , 1 , 1 ,
+471 , 12497 , 2 , 63 , 1 , 1 ,
+471 , 12498 , 2 , 63 , 1 , 1 ,
+471 , 12499 , 2 , 63 , 1 , 1 ,
+471 , 12500 , 2 , 62 , 1 , 1 ,
+471 , 12501 , 2 , 52 , 1 , 1 ,
+471 , 12502 , 90 , 11 , 1 , 1 , 12501 12498 12493 12492 12494 12495 12500 12497 12499 12496
+472 , 12503 , 2 , 103 , 1 , 1 ,
+472 , 12504 , 2 , 113 , 1 , 1 ,
+472 , 12505 , 2 , 134 , 1 , 1 ,
+472 , 12506 , 2 , 134 , 1 , 1 ,
+472 , 12507 , 2 , 123 , 1 , 1 ,
+472 , 12508 , 2 , 123 , 1 , 1 ,
+472 , 12509 , 2 , 123 , 1 , 1 ,
+472 , 12510 , 2 , 123 , 1 , 1 ,
+472 , 12511 , 2 , 113 , 1 , 1 ,
+472 , 12512 , 2 , 113 , 1 , 1 ,
+472 , 12513 , 150 , 21 , 1 , 1 , 12508 12505 12503 12506 12510 12504 12509 12512 12507 12511
+473 , 12514 , 2 , 62 , 1 , 1 ,
+473 , 12515 , 2 , 52 , 1 , 1 ,
+473 , 12516 , 2 , 72 , 1 , 1 ,
+473 , 12517 , 2 , 72 , 1 , 1 ,
+473 , 12518 , 2 , 72 , 1 , 1 ,
+473 , 12519 , 2 , 62 , 1 , 1 ,
+473 , 12520 , 2 , 62 , 1 , 1 ,
+473 , 12521 , 2 , 62 , 1 , 1 ,
+473 , 12522 , 2 , 62 , 1 , 1 ,
+473 , 12523 , 2 , 62 , 1 , 1 ,
+473 , 12524 , 88 , 11 , 1 , 1 , 12516 12515 12521 12520 12522 12523 12514 12518 12517 12519
+474 , 12525 , 2 , 62 , 1 , 1 ,
+474 , 12526 , 2 , 62 , 1 , 1 ,
+474 , 12527 , 2 , 62 , 1 , 1 ,
+474 , 12528 , 2 , 72 , 1 , 1 ,
+474 , 12529 , 2 , 62 , 1 , 1 ,
+474 , 12530 , 2 , 62 , 1 , 1 ,
+474 , 12531 , 2 , 62 , 1 , 1 ,
+474 , 12532 , 2 , 62 , 1 , 1 ,
+474 , 12533 , 2 , 62 , 1 , 1 ,
+474 , 12534 , 2 , 62 , 1 , 1 ,
+474 , 12535 , 89 , 11 , 1 , 1 , 12534 12527 12529 12526 12533 12530 12528 12532 12531 12525
+475 , 12536 , 3 , 144 , 1 , 1 ,
+475 , 12537 , 3 , 144 , 1 , 1 ,
+475 , 12538 , 3 , 185 , 1 , 1 ,
+475 , 12539 , 3 , 154 , 1 , 1 ,
+475 , 12540 , 3 , 154 , 1 , 1 ,
+475 , 12541 , 3 , 164 , 1 , 1 ,
+475 , 12542 , 3 , 164 , 1 , 1 ,
+475 , 12543 , 3 , 154 , 1 , 1 ,
+475 , 12544 , 201 , 21 , 1 , 1 , 12541 12539 12543 12536 12542 12538 12540 12537
+476 , 12577 , 5 , 11 , 1 , 1 ,
+476 , 12578 , 28 , 31 , 1 , 1 , 12577
+476 , 12579 , 28 , 31 , 1 , 1 , 12577
+476 , 12580 , 28 , 31 , 1 , 1 , 12577
+476 , 12581 , 28 , 21 , 1 , 1 , 12577
+476 , 12582 , 71 , 0 , 1 , 1 , 12578 12579 12581 12580
+476 , 12583 , 84 , 11 , 1 , 1 , 12582
+476 , 12584 , 84 , 0 , 1 , 1 , 12582
+476 , 12585 , 84 , 0 , 1 , 1 , 12582
+476 , 12586 , 84 , 0 , 1 , 1 , 12582
+476 , 12587 , 108 , 0 , 1 , 1 , 12586 12584 12585 12583
+477 , 12599 , 3 , 41 , 1 , 1 ,
+477 , 12600 , 3 , 41 , 1 , 1 ,
+477 , 12601 , 3 , 41 , 1 , 1 ,
+477 , 12602 , 56 , 0 , 1 , 1 , 12600 12601 12599
+478 , 12603 , 2 , 41 , 1 , 1 ,
+478 , 12604 , 2 , 41 , 1 , 1 ,
+478 , 12605 , 2 , 52 , 1 , 1 ,
+478 , 12606 , 65 , 0 , 1 , 1 , 12604 12603 12605
+479 , 12607 , 1 , 41 , 1 , 1 ,
+479 , 12608 , 1 , 52 , 1 , 1 ,
+479 , 12609 , 1 , 41 , 1 , 1 ,
+479 , 12610 , 64 , 0 , 1 , 1 , 12609 12607 12608
+480 , 12611 , 3 , 41 , 1 , 1 ,
+480 , 12612 , 3 , 41 , 1 , 1 ,
+480 , 12613 , 3 , 41 , 1 , 1 ,
+480 , 12614 , 56 , 0 , 1 , 1 , 12611 12612 12613
+481 , 12615 , 1 , 41 , 1 , 1 ,
+481 , 12616 , 1 , 52 , 1 , 1 ,
+481 , 12617 , 1 , 41 , 1 , 1 ,
+481 , 12618 , 65 , 0 , 1 , 1 , 12616 12617 12615
+482 , 12619 , 1 , 41 , 1 , 1 ,
+482 , 12620 , 1 , 52 , 1 , 1 ,
+482 , 12621 , 1 , 41 , 1 , 1 ,
+482 , 12622 , 64 , 0 , 1 , 1 , 12620 12621 12619
+483 , 12623 , 2 , 41 , 1 , 1 ,
+483 , 12624 , 1 , 52 , 1 , 1 ,
+483 , 12625 , 1 , 41 , 1 , 1 ,
+483 , 12626 , 64 , 0 , 1 , 1 , 12625 12624 12623
+484 , 12627 , 1 , 41 , 1 , 1 ,
+484 , 12628 , 1 , 41 , 1 , 1 ,
+484 , 12629 , 1 , 41 , 1 , 1 ,
+484 , 12630 , 54 , 0 , 1 , 1 , 12629 12628 12627
+485 , 12631 , 1 , 41 , 1 , 1 ,
+485 , 12632 , 1 , 42 , 1 , 1 ,
+485 , 12633 , 1 , 41 , 1 , 1 ,
+485 , 12634 , 55 , 0 , 1 , 1 , 12631 12633 12632
+486 , 12639 , 3 , 41 , 1 , 1 ,
+486 , 12640 , 3 , 52 , 1 , 1 ,
+486 , 12641 , 3 , 41 , 1 , 1 ,
+486 , 12642 , 66 , 0 , 1 , 1 , 12640 12641 12639
+487 , 12643 , 1 , 41 , 1 , 1 ,
+487 , 12644 , 1 , 52 , 1 , 1 ,
+487 , 12645 , 1 , 52 , 1 , 1 ,
+487 , 12646 , 64 , 0 , 1 , 1 , 12643 12644 12645
+488 , 12647 , 1 , 41 , 1 , 1 ,
+488 , 12648 , 1 , 41 , 1 , 1 ,
+488 , 12649 , 1 , 52 , 1 , 1 ,
+488 , 12650 , 64 , 0 , 1 , 1 , 12649 12648 12647
+489 , 12651 , 2 , 41 , 1 , 1 ,
+489 , 12652 , 2 , 41 , 1 , 1 ,
+489 , 12653 , 2 , 41 , 1 , 1 ,
+489 , 12654 , 55 , 0 , 1 , 1 , 12652 12653 12651
+490 , 12655 , 21 , 184 , 1 , 1 ,
+490 , 12656 , 20 , 194 , 1 , 1 ,
+490 , 12657 , 20 , 174 , 1 , 1 ,
+490 , 12658 , 20 , 164 , 1 , 1 ,
+490 , 12659 , 20 , 174 , 1 , 1 ,
+490 , 12660 , 20 , 184 , 1 , 1 ,
+490 , 12661 , 20 , 184 , 1 , 1 ,
+490 , 12662 , 19 , 195 , 1 , 1 ,
+490 , 12663 , 19 , 194 , 1 , 1 ,
+490 , 12664 , 19 , 205 , 1 , 1 ,
+490 , 12665 , 17 , 215 , 1 , 1 ,
+490 , 12666 , 17 , 225 , 1 , 1 ,
+490 , 12667 , 17 , 205 , 1 , 1 ,
+490 , 12668 , 17 , 225 , 1 , 1 ,
+490 , 12669 , 17 , 215 , 1 , 1 ,
+490 , 12670 , 17 , 225 , 1 , 1 ,
+490 , 12671 , 17 , 225 , 1 , 1 ,
+490 , 12672 , 16 , 225 , 1 , 1 ,
+490 , 12673 , 16 , 225 , 1 , 1 ,
+490 , 12674 , 16 , 246 , 1 , 1 ,
+490 , 12675 , 14 , 256 , 1 , 1 ,
+490 , 12676 , 14 , 245 , 1 , 1 ,
+490 , 12677 , 14 , 235 , 1 , 1 ,
+490 , 12678 , 14 , 235 , 1 , 1 ,
+490 , 12679 , 13 , 235 , 1 , 1 ,
+490 , 12680 , 13 , 225 , 1 , 1 ,
+490 , 12681 , 13 , 205 , 1 , 1 ,
+490 , 12682 , 13 , 205 , 1 , 1 ,
+490 , 12683 , 13 , 194 , 1 , 1 ,
+490 , 12684 , 11 , 205 , 1 , 1 ,
+490 , 12685 , 10 , 184 , 1 , 1 ,
+490 , 12686 , 9 , 205 , 1 , 1 ,
+490 , 12687 , 9 , 215 , 1 , 1 ,
+490 , 12688 , 9 , 225 , 1 , 1 ,
+490 , 12689 , 9 , 225 , 1 , 1 ,
+490 , 12690 , 8 , 215 , 1 , 1 ,
+490 , 12691 , 8 , 184 , 1 , 1 ,
+490 , 12692 , 8 , 184 , 1 , 1 ,
+490 , 12693 , 8 , 205 , 1 , 1 ,
+490 , 12694 , 7 , 215 , 1 , 1 ,
+490 , 12695 , 6 , 235 , 1 , 1 ,
+490 , 12696 , 6 , 235 , 1 , 1 ,
+490 , 12697 , 6 , 215 , 1 , 1 ,
+490 , 12698 , 6 , 205 , 1 , 1 ,
+490 , 12699 , 6 , 205 , 1 , 1 ,
+490 , 12700 , 5 , 225 , 1 , 1 ,
+490 , 12701 , 5 , 215 , 1 , 1 ,
+490 , 12702 , 5 , 215 , 1 , 1 ,
+490 , 12703 , 5 , 225 , 1 , 1 ,
+490 , 12704 , 5 , 235 , 1 , 1 ,
+490 , 12705 , 4 , 215 , 1 , 1 ,
+490 , 12706 , 4 , 194 , 1 , 1 ,
+490 , 12707 , 4 , 194 , 1 , 1 ,
+490 , 12708 , 4 , 215 , 1 , 1 ,
+490 , 12709 , 4 , 205 , 1 , 1 ,
+490 , 12710 , 4 , 215 , 1 , 1 ,
+490 , 12711 , 4 , 215 , 1 , 1 ,
+490 , 12712 , 4 , 194 , 1 , 1 ,
+490 , 12713 , 4 , 205 , 1 , 1 ,
+490 , 12714 , 4 , 205 , 1 , 1 ,
+490 , 12715 , 284 , 174 , 1 , 1 , 12686 12695 12667 12713 12665 12701 12664 12682 12705 12662 12671 12668 12658 12710 12679 12694 12693 12683 12672 12666 12681 12657 12663 12711 12709 12704 12661 12656 12676 12677 12660 12673 12703 12708 12706 12680 12687 12685 12692 12712 12655 12690 12698 12670 12688 12702 12707 12678 12697 12674 12659 12699 12669 12691 12714 12689 12696 12675 12684 12700
+491 , 12716 , 22 , 184 , 1 , 1 ,
+491 , 12717 , 22 , 195 , 1 , 1 ,
+491 , 12718 , 22 , 184 , 1 , 1 ,
+491 , 12719 , 21 , 174 , 1 , 1 ,
+491 , 12720 , 19 , 174 , 1 , 1 ,
+491 , 12721 , 19 , 195 , 1 , 1 ,
+491 , 12722 , 18 , 205 , 1 , 1 ,
+491 , 12723 , 18 , 184 , 1 , 1 ,
+491 , 12724 , 18 , 184 , 1 , 1 ,
+491 , 12725 , 17 , 205 , 1 , 1 ,
+491 , 12726 , 17 , 205 , 1 , 1 ,
+491 , 12727 , 17 , 215 , 1 , 1 ,
+491 , 12728 , 17 , 225 , 1 , 1 ,
+491 , 12729 , 14 , 225 , 1 , 1 ,
+491 , 12730 , 14 , 225 , 1 , 1 ,
+491 , 12731 , 14 , 215 , 1 , 1 ,
+491 , 12732 , 14 , 215 , 1 , 1 ,
+491 , 12733 , 13 , 225 , 1 , 1 ,
+491 , 12734 , 13 , 235 , 1 , 1 ,
+491 , 12735 , 13 , 245 , 1 , 1 ,
+491 , 12736 , 13 , 256 , 1 , 1 ,
+491 , 12737 , 13 , 246 , 1 , 1 ,
+491 , 12738 , 13 , 246 , 1 , 1 ,
+491 , 12739 , 12 , 235 , 1 , 1 ,
+491 , 12740 , 11 , 235 , 1 , 1 ,
+491 , 12741 , 11 , 225 , 1 , 1 ,
+491 , 12742 , 11 , 215 , 1 , 1 ,
+491 , 12743 , 11 , 215 , 1 , 1 ,
+491 , 12744 , 10 , 205 , 1 , 1 ,
+491 , 12745 , 10 , 205 , 1 , 1 ,
+491 , 12746 , 8 , 205 , 1 , 1 ,
+491 , 12747 , 8 , 205 , 1 , 1 ,
+491 , 12748 , 8 , 215 , 1 , 1 ,
+491 , 12749 , 8 , 235 , 1 , 1 ,
+491 , 12750 , 8 , 225 , 1 , 1 ,
+491 , 12751 , 8 , 215 , 1 , 1 ,
+491 , 12752 , 8 , 195 , 1 , 1 ,
+491 , 12753 , 7 , 194 , 1 , 1 ,
+491 , 12754 , 7 , 215 , 1 , 1 ,
+491 , 12755 , 7 , 225 , 1 , 1 ,
+491 , 12756 , 5 , 235 , 1 , 1 ,
+491 , 12757 , 5 , 235 , 1 , 1 ,
+491 , 12758 , 5 , 225 , 1 , 1 ,
+491 , 12759 , 5 , 205 , 1 , 1 ,
+491 , 12760 , 5 , 205 , 1 , 1 ,
+491 , 12761 , 5 , 225 , 1 , 1 ,
+491 , 12762 , 5 , 225 , 1 , 1 ,
+491 , 12763 , 5 , 225 , 1 , 1 ,
+491 , 12764 , 5 , 235 , 1 , 1 ,
+491 , 12765 , 5 , 235 , 1 , 1 ,
+491 , 12766 , 3 , 225 , 1 , 1 ,
+491 , 12767 , 3 , 215 , 1 , 1 ,
+491 , 12768 , 3 , 205 , 1 , 1 ,
+491 , 12769 , 3 , 205 , 1 , 1 ,
+491 , 12770 , 3 , 194 , 1 , 1 ,
+491 , 12771 , 3 , 205 , 1 , 1 ,
+491 , 12772 , 3 , 215 , 1 , 1 ,
+491 , 12773 , 3 , 205 , 1 , 1 ,
+491 , 12774 , 3 , 205 , 1 , 1 ,
+491 , 12775 , 3 , 194 , 1 , 1 ,
+491 , 12776 , 284 , 174 , 1 , 1 , 12737 12768 12757 12717 12771 12739 12727 12748 12731 12743 12761 12738 12759 12773 12720 12764 12740 12774 12751 12729 12756 12770 12765 12723 12746 12722 12755 12716 12769 12754 12763 12721 12752 12745 12749 12741 12760 12733 12734 12772 12719 12718 12775 12766 12747 12742 12725 12753 12724 12744 12758 12767 12728 12730 12762 12736 12750 12732 12735 12726
+492 , 12777 , 113 , 82 , 1 , 1 ,
+492 , 12778 , 112 , 82 , 1 , 1 ,
+492 , 12779 , 112 , 82 , 1 , 1 ,
+492 , 12780 , 112 , 82 , 1 , 1 ,
+492 , 12781 , 112 , 82 , 1 , 1 ,
+492 , 12782 , 112 , 82 , 1 , 1 ,
+492 , 12783 , 112 , 82 , 1 , 1 ,
+492 , 12784 , 112 , 72 , 1 , 1 ,
+492 , 12785 , 111 , 72 , 1 , 1 ,
+492 , 12786 , 111 , 72 , 1 , 1 ,
+492 , 12787 , 109 , 83 , 1 , 1 ,
+492 , 12788 , 109 , 72 , 1 , 1 ,
+492 , 12789 , 109 , 82 , 1 , 1 ,
+492 , 12790 , 109 , 72 , 1 , 1 ,
+492 , 12791 , 109 , 82 , 1 , 1 ,
+492 , 12792 , 109 , 82 , 1 , 1 ,
+492 , 12793 , 109 , 92 , 1 , 1 ,
+492 , 12794 , 109 , 92 , 1 , 1 ,
+492 , 12795 , 109 , 82 , 1 , 1 ,
+492 , 12796 , 109 , 82 , 1 , 1 ,
+492 , 12797 , 52 , 72 , 1 , 1 ,
+492 , 12798 , 52 , 72 , 1 , 1 ,
+492 , 12799 , 52 , 82 , 1 , 1 ,
+492 , 12800 , 52 , 82 , 1 , 1 ,
+492 , 12801 , 52 , 82 , 1 , 1 ,
+492 , 12802 , 52 , 82 , 1 , 1 ,
+492 , 12803 , 51 , 82 , 1 , 1 ,
+492 , 12804 , 51 , 82 , 1 , 1 ,
+492 , 12805 , 51 , 82 , 1 , 1 ,
+492 , 12806 , 50 , 83 , 1 , 1 ,
+492 , 12807 , 49 , 82 , 1 , 1 ,
+492 , 12808 , 49 , 82 , 1 , 1 ,
+492 , 12809 , 49 , 93 , 1 , 1 ,
+492 , 12810 , 49 , 82 , 1 , 1 ,
+492 , 12811 , 49 , 93 , 1 , 1 ,
+492 , 12812 , 49 , 92 , 1 , 1 ,
+492 , 12813 , 49 , 82 , 1 , 1 ,
+492 , 12814 , 49 , 82 , 1 , 1 ,
+492 , 12815 , 49 , 92 , 1 , 1 ,
+492 , 12816 , 49 , 82 , 1 , 1 ,
+492 , 12817 , 22 , 437 , 1 , 1 ,
+492 , 12818 , 22 , 426 , 1 , 1 ,
+492 , 12819 , 22 , 396 , 1 , 1 ,
+492 , 12820 , 22 , 396 , 1 , 1 ,
+492 , 12821 , 22 , 396 , 1 , 1 ,
+492 , 12822 , 22 , 426 , 1 , 1 ,
+492 , 12823 , 22 , 427 , 1 , 1 ,
+492 , 12824 , 22 , 436 , 1 , 1 ,
+492 , 12825 , 22 , 438 , 1 , 1 ,
+492 , 12826 , 22 , 437 , 1 , 1 ,
+492 , 12827 , 22 , 447 , 1 , 1 ,
+492 , 12828 , 22 , 458 , 1 , 1 ,
+492 , 12829 , 22 , 467 , 1 , 1 ,
+492 , 12830 , 22 , 477 , 1 , 1 ,
+492 , 12831 , 22 , 488 , 1 , 1 ,
+492 , 12832 , 22 , 498 , 1 , 1 ,
+492 , 12833 , 18 , 281 , 1 , 1 ,
+492 , 12834 , 18 , 292 , 1 , 1 ,
+492 , 12835 , 18 , 292 , 1 , 1 ,
+492 , 12836 , 18 , 292 , 1 , 1 ,
+492 , 12837 , 18 , 303 , 1 , 1 ,
+492 , 12838 , 18 , 313 , 1 , 1 ,
+492 , 12839 , 17 , 334 , 1 , 1 ,
+492 , 12840 , 17 , 356 , 1 , 1 ,
+492 , 12841 , 17 , 365 , 1 , 1 ,
+492 , 12842 , 17 , 365 , 1 , 1 ,
+492 , 12843 , 17 , 376 , 1 , 1 ,
+492 , 12844 , 17 , 407 , 1 , 1 ,
+492 , 12845 , 17 , 396 , 1 , 1 ,
+492 , 12846 , 17 , 386 , 1 , 1 ,
+492 , 12847 , 17 , 387 , 1 , 1 ,
+492 , 12848 , 17 , 386 , 1 , 1 ,
+492 , 12849 , 15 , 117 , 1 , 1 ,
+492 , 12850 , 15 , 152 , 1 , 1 ,
+492 , 12851 , 15 , 134 , 1 , 1 ,
+492 , 12852 , 15 , 124 , 1 , 1 ,
+492 , 12853 , 15 , 149 , 1 , 1 ,
+492 , 12854 , 15 , 125 , 1 , 1 ,
+492 , 12855 , 11 , 130 , 1 , 1 ,
+492 , 12856 , 11 , 128 , 1 , 1 ,
+492 , 12857 , 11 , 117 , 1 , 1 ,
+492 , 12858 , 11 , 128 , 1 , 1 ,
+492 , 12859 , 11 , 244 , 1 , 1 ,
+492 , 12860 , 11 , 256 , 1 , 1 ,
+492 , 12861 , 11 , 129 , 1 , 1 ,
+492 , 12862 , 11 , 128 , 1 , 1 ,
+492 , 12863 , 11 , 130 , 1 , 1 ,
+492 , 12864 , 11 , 132 , 1 , 1 ,
+492 , 12865 , 31 , 103 , 1 , 1 ,
+492 , 12866 , 30 , 103 , 1 , 1 ,
+492 , 12867 , 29 , 103 , 1 , 1 ,
+492 , 12868 , 29 , 103 , 1 , 1 ,
+492 , 12869 , 29 , 103 , 1 , 1 ,
+492 , 12870 , 29 , 103 , 1 , 1 ,
+492 , 12871 , 29 , 103 , 1 , 1 ,
+492 , 12872 , 28 , 93 , 1 , 1 ,
+492 , 12873 , 28 , 92 , 1 , 1 ,
+492 , 12874 , 28 , 93 , 1 , 1 ,
+492 , 12875 , 27 , 82 , 1 , 1 ,
+492 , 12876 , 26 , 93 , 1 , 1 ,
+492 , 12877 , 26 , 92 , 1 , 1 ,
+492 , 12878 , 25 , 82 , 1 , 1 ,
+492 , 12879 , 25 , 103 , 1 , 1 ,
+492 , 12880 , 25 , 103 , 1 , 1 ,
+492 , 12881 , 25 , 103 , 1 , 1 ,
+492 , 12882 , 25 , 113 , 1 , 1 ,
+492 , 12883 , 25 , 103 , 1 , 1 ,
+492 , 12884 , 24 , 113 , 1 , 1 ,
+492 , 12885 , 23 , 113 , 1 , 1 ,
+492 , 12886 , 22 , 103 , 1 , 1 ,
+492 , 12887 , 22 , 113 , 1 , 1 ,
+492 , 12888 , 21 , 113 , 1 , 1 ,
+492 , 12889 , 21 , 113 , 1 , 1 ,
+492 , 12890 , 21 , 103 , 1 , 1 ,
+492 , 12891 , 21 , 103 , 1 , 1 ,
+492 , 12892 , 21 , 113 , 1 , 1 ,
+492 , 12893 , 21 , 103 , 1 , 1 ,
+492 , 12894 , 20 , 103 , 1 , 1 ,
+492 , 12895 , 20 , 113 , 1 , 1 ,
+492 , 12896 , 19 , 113 , 1 , 1 ,
+492 , 12897 , 18 , 113 , 1 , 1 ,
+492 , 12898 , 18 , 103 , 1 , 1 ,
+492 , 12899 , 18 , 113 , 1 , 1 ,
+492 , 12900 , 18 , 113 , 1 , 1 ,
+492 , 12901 , 17 , 113 , 1 , 1 ,
+492 , 12902 , 17 , 113 , 1 , 1 ,
+492 , 12903 , 17 , 113 , 1 , 1 ,
+492 , 12904 , 16 , 113 , 1 , 1 ,
+492 , 12905 , 16 , 113 , 1 , 1 ,
+492 , 12906 , 14 , 113 , 1 , 1 ,
+492 , 12907 , 14 , 124 , 1 , 1 ,
+492 , 12908 , 13 , 124 , 1 , 1 ,
+492 , 12909 , 12 , 113 , 1 , 1 ,
+492 , 12910 , 12 , 113 , 1 , 1 ,
+492 , 12911 , 12 , 113 , 1 , 1 ,
+492 , 12912 , 12 , 113 , 1 , 1 ,
+492 , 12913 , 11 , 113 , 1 , 1 ,
+492 , 12914 , 10 , 92 , 1 , 1 ,
+492 , 12915 , 10 , 103 , 1 , 1 ,
+492 , 12916 , 9 , 93 , 1 , 1 ,
+492 , 12917 , 9 , 92 , 1 , 1 ,
+492 , 12918 , 8 , 103 , 1 , 1 ,
+492 , 12919 , 8 , 103 , 1 , 1 ,
+492 , 12920 , 8 , 92 , 1 , 1 ,
+492 , 12921 , 8 , 103 , 1 , 1 ,
+492 , 12922 , 8 , 92 , 1 , 1 ,
+492 , 12923 , 8 , 92 , 1 , 1 ,
+492 , 12924 , 8 , 92 , 1 , 1 ,
+492 , 12925 , 7 , 92 , 1 , 1 ,
+492 , 12926 , 7 , 92 , 1 , 1 ,
+492 , 12927 , 6 , 93 , 1 , 1 ,
+492 , 12928 , 6 , 103 , 1 , 1 ,
+492 , 12929 , 6 , 93 , 1 , 1 ,
+492 , 12930 , 6 , 103 , 1 , 1 ,
+492 , 12931 , 6 , 92 , 1 , 1 ,
+492 , 12932 , 6 , 93 , 1 , 1 ,
+492 , 12933 , 6 , 103 , 1 , 1 ,
+492 , 12934 , 6 , 92 , 1 , 1 ,
+492 , 12935 , 6 , 82 , 1 , 1 ,
+492 , 12936 , 6 , 72 , 1 , 1 ,
+492 , 12937 , 617 , 205 , 1 , 1 , 12853 12903 12856 12889 12922 12911 12802 12782 12926 12910 12805 12814 12884 12904 12822 12841 12801 12798 12892 12781 12907 12896 12842 12786 12834 12804 12858 12912 12829 12927 12840 12846 12799 12863 12887 12877 12818 12914 12843 12783 12865 12915 12808 12787 12900 12825 12868 12876 12796 12891 12869 12923 12789 12800 12890 12819 12882 12778 12817 12870 12885 12864 12901 12828 12845 12824 12928 12815 12847 12836 12785 12779 12806 12807 12909 12850 12916 12908 12812 12849 12791 12859 12862 12899 12820 12833 12792 12878 12813 12894 12810 12795 12932 12848 12930 12925 12821 12883 12920 12835 12935 12933 12809 12874 12811 12780 12816 12866 12880 12854 12873 12838 12898 12867 12906 12794 12832 12857 12897 12797 12931 12827 12790 12919 12895 12839 12913 12934 12886 12861 12924 12831 12902 12784 12793 12879 12929 12918 12837 12852 12888 12830 12881 12826 12905 12917 12875 12893 12871 12860 12803 12777 12823 12851 12788 12855 12844 12936 12921 12872
+493 , 12938 , 4 , 72 , 1 , 1 ,
+493 , 12939 , 4 , 72 , 1 , 1 ,
+493 , 12940 , 4 , 82 , 1 , 1 ,
+493 , 12941 , 4 , 92 , 1 , 1 ,
+493 , 12942 , 4 , 92 , 1 , 1 ,
+493 , 12943 , 3 , 103 , 1 , 1 ,
+493 , 12944 , 2 , 92 , 1 , 1 ,
+493 , 12945 , 2 , 82 , 1 , 1 ,
+493 , 12946 , 2 , 82 , 1 , 1 ,
+493 , 12947 , 2 , 82 , 1 , 1 ,
+493 , 12948 , 2 , 82 , 1 , 1 ,
+493 , 12949 , 2 , 92 , 1 , 1 ,
+493 , 12950 , 2 , 92 , 1 , 1 ,
+493 , 12951 , 2 , 82 , 1 , 1 ,
+493 , 12952 , 2 , 82 , 1 , 1 ,
+493 , 12953 , 2 , 82 , 1 , 1 ,
+493 , 12954 , 118 , 21 , 1 , 1 , 12942 12940 12951 12941 12947 12948 12939 12944 12945 12953 12946 12943 12949 12950 12938 12952
+494 , 12955 , 4 , 72 , 1 , 1 ,
+494 , 12956 , 4 , 82 , 1 , 1 ,
+494 , 12957 , 4 , 82 , 1 , 1 ,
+494 , 12958 , 4 , 92 , 1 , 1 ,
+494 , 12959 , 4 , 92 , 1 , 1 ,
+494 , 12960 , 4 , 103 , 1 , 1 ,
+494 , 12961 , 2 , 92 , 1 , 1 ,
+494 , 12962 , 2 , 82 , 1 , 1 ,
+494 , 12963 , 2 , 82 , 1 , 1 ,
+494 , 12964 , 2 , 82 , 1 , 1 ,
+494 , 12965 , 2 , 82 , 1 , 1 ,
+494 , 12966 , 2 , 82 , 1 , 1 ,
+494 , 12967 , 2 , 82 , 1 , 1 ,
+494 , 12968 , 2 , 82 , 1 , 1 ,
+494 , 12969 , 2 , 72 , 1 , 1 ,
+494 , 12970 , 2 , 82 , 1 , 1 ,
+494 , 12971 , 118 , 21 , 1 , 1 , 12959 12957 12956 12969 12960 12955 12968 12963 12958 12962 12964 12967 12961 12970 12965 12966
+495 , 12972 , 4 , 72 , 1 , 1 ,
+495 , 12973 , 4 , 72 , 1 , 1 ,
+495 , 12974 , 4 , 82 , 1 , 1 ,
+495 , 12975 , 4 , 92 , 1 , 1 ,
+495 , 12976 , 4 , 82 , 1 , 1 ,
+495 , 12977 , 4 , 92 , 1 , 1 ,
+495 , 12978 , 1 , 93 , 1 , 1 ,
+495 , 12979 , 1 , 82 , 1 , 1 ,
+495 , 12980 , 1 , 82 , 1 , 1 ,
+495 , 12981 , 1 , 82 , 1 , 1 ,
+495 , 12982 , 1 , 82 , 1 , 1 ,
+495 , 12983 , 1 , 82 , 1 , 1 ,
+495 , 12984 , 1 , 92 , 1 , 1 ,
+495 , 12985 , 1 , 82 , 1 , 1 ,
+495 , 12986 , 1 , 72 , 1 , 1 ,
+495 , 12987 , 1 , 83 , 1 , 1 ,
+495 , 12988 , 109 , 21 , 1 , 1 , 12984 12978 12980 12986 12976 12983 12977 12979 12975 12973 12974 12987 12981 12985 12982 12972
+496 , 12989 , 3 , 41 , 1 , 1 ,
+496 , 12990 , 3 , 41 , 1 , 1 ,
+496 , 12991 , 3 , 41 , 1 , 1 ,
+496 , 12992 , 56 , 0 , 1 , 1 , 12989 12991 12990
+497 , 13471 , 2 , 41 , 1 , 1 ,
+497 , 13472 , 2 , 42 , 1 , 1 ,
+497 , 13473 , 2 , 52 , 1 , 1 ,
+497 , 13474 , 66 , 0 , 1 , 1 , 13471 13473 13472
+498 , 13475 , 1 , 41 , 1 , 1 ,
+498 , 13476 , 1 , 52 , 1 , 1 ,
+498 , 13477 , 1 , 41 , 1 , 1 ,
+498 , 13478 , 65 , 0 , 1 , 1 , 13475 13476 13477
+499 , 13479 , 1 , 41 , 1 , 1 ,
+499 , 13480 , 1 , 41 , 1 , 1 ,
+499 , 13481 , 1 , 41 , 1 , 1 ,
+499 , 13482 , 54 , 0 , 1 , 1 , 13480 13479 13481
+500 , 13483 , 2 , 41 , 1 , 1 ,
+500 , 13484 , 2 , 52 , 1 , 1 ,
+500 , 13485 , 2 , 52 , 1 , 1 ,
+500 , 13486 , 65 , 0 , 1 , 1 , 13485 13484 13483
+501 , 13487 , 2 , 41 , 1 , 1 ,
+501 , 13488 , 2 , 41 , 1 , 1 ,
+501 , 13489 , 2 , 41 , 1 , 1 ,
+501 , 13490 , 55 , 0 , 1 , 1 , 13489 13488 13487
+502 , 13499 , 3 , 41 , 1 , 1 ,
+502 , 13500 , 3 , 52 , 1 , 1 ,
+502 , 13501 , 3 , 52 , 1 , 1 ,
+502 , 13502 , 65 , 0 , 1 , 1 , 13500 13499 13501
+503 , 13503 , 2 , 41 , 1 , 1 ,
+503 , 13504 , 2 , 41 , 1 , 1 ,
+503 , 13505 , 2 , 41 , 1 , 1 ,
+503 , 13506 , 55 , 0 , 1 , 1 , 13505 13503 13504
+504 , 13507 , 2 , 41 , 1 , 1 ,
+504 , 13508 , 2 , 52 , 1 , 1 ,
+504 , 13509 , 2 , 41 , 1 , 1 ,
+504 , 13510 , 64 , 0 , 1 , 1 , 13509 13508 13507
+505 , 13511 , 1 , 41 , 1 , 1 ,
+505 , 13512 , 1 , 41 , 1 , 1 ,
+505 , 13513 , 1 , 41 , 1 , 1 ,
+505 , 13514 , 55 , 0 , 1 , 1 , 13512 13511 13513
+506 , 13515 , 43 , 41 , 1 , 1 ,
+506 , 13516 , 43 , 41 , 1 , 1 ,
+506 , 13517 , 43 , 41 , 1 , 1 ,
+506 , 13518 , 96 , 0 , 1 , 1 , 13517 13515 13516
+507 , 13519 , 3 , 41 , 1 , 1 ,
+507 , 13520 , 3 , 41 , 1 , 1 ,
+507 , 13521 , 3 , 41 , 1 , 1 ,
+507 , 13522 , 56 , 0 , 1 , 1 , 13521 13519 13520
+508 , 13523 , 1 , 41 , 1 , 1 ,
+508 , 13524 , 1 , 41 , 1 , 1 ,
+508 , 13525 , 1 , 41 , 1 , 1 ,
+508 , 13526 , 55 , 0 , 1 , 1 , 13524 13525 13523
+509 , 13527 , 3 , 41 , 1 , 1 ,
+509 , 13528 , 3 , 41 , 1 , 1 ,
+509 , 13529 , 3 , 41 , 1 , 1 ,
+509 , 13530 , 55 , 0 , 1 , 1 , 13528 13529 13527
+510 , 13531 , 1 , 41 , 1 , 1 ,
+510 , 13532 , 1 , 52 , 1 , 1 ,
+510 , 13533 , 1 , 52 , 1 , 1 ,
+510 , 13534 , 64 , 0 , 1 , 1 , 13532 13531 13533
+511 , 13535 , 1 , 41 , 1 , 1 ,
+511 , 13536 , 1 , 41 , 1 , 1 ,
+511 , 13537 , 1 , 41 , 1 , 1 ,
+511 , 13538 , 54 , 0 , 1 , 1 , 13537 13536 13535
+512 , 13539 , 16 , 185 , 1 , 1 ,
+512 , 13540 , 16 , 174 , 1 , 1 ,
+512 , 13541 , 16 , 174 , 1 , 1 ,
+512 , 13542 , 16 , 174 , 1 , 1 ,
+512 , 13543 , 15 , 174 , 1 , 1 ,
+512 , 13544 , 15 , 174 , 1 , 1 ,
+512 , 13545 , 15 , 195 , 1 , 1 ,
+512 , 13546 , 15 , 195 , 1 , 1 ,
+512 , 13547 , 15 , 195 , 1 , 1 ,
+512 , 13548 , 14 , 195 , 1 , 1 ,
+512 , 13549 , 13 , 205 , 1 , 1 ,
+512 , 13550 , 13 , 195 , 1 , 1 ,
+512 , 13551 , 13 , 225 , 1 , 1 ,
+512 , 13552 , 13 , 225 , 1 , 1 ,
+512 , 13553 , 13 , 215 , 1 , 1 ,
+512 , 13554 , 12 , 225 , 1 , 1 ,
+512 , 13555 , 12 , 225 , 1 , 1 ,
+512 , 13556 , 12 , 225 , 1 , 1 ,
+512 , 13557 , 12 , 235 , 1 , 1 ,
+512 , 13558 , 11 , 235 , 1 , 1 ,
+512 , 13559 , 10 , 256 , 1 , 1 ,
+512 , 13560 , 10 , 235 , 1 , 1 ,
+512 , 13561 , 9 , 246 , 1 , 1 ,
+512 , 13562 , 9 , 225 , 1 , 1 ,
+512 , 13563 , 9 , 225 , 1 , 1 ,
+512 , 13564 , 9 , 226 , 1 , 1 ,
+512 , 13565 , 9 , 205 , 1 , 1 ,
+512 , 13566 , 9 , 205 , 1 , 1 ,
+512 , 13567 , 9 , 215 , 1 , 1 ,
+512 , 13568 , 8 , 205 , 1 , 1 ,
+512 , 13569 , 7 , 184 , 1 , 1 ,
+512 , 13570 , 7 , 205 , 1 , 1 ,
+512 , 13571 , 7 , 195 , 1 , 1 ,
+512 , 13572 , 7 , 226 , 1 , 1 ,
+512 , 13573 , 7 , 215 , 1 , 1 ,
+512 , 13574 , 7 , 215 , 1 , 1 ,
+512 , 13575 , 7 , 205 , 1 , 1 ,
+512 , 13576 , 7 , 195 , 1 , 1 ,
+512 , 13577 , 6 , 205 , 1 , 1 ,
+512 , 13578 , 6 , 205 , 1 , 1 ,
+512 , 13579 , 5 , 236 , 1 , 1 ,
+512 , 13580 , 4 , 216 , 1 , 1 ,
+512 , 13581 , 4 , 215 , 1 , 1 ,
+512 , 13582 , 4 , 215 , 1 , 1 ,
+512 , 13583 , 4 , 216 , 1 , 1 ,
+512 , 13584 , 4 , 225 , 1 , 1 ,
+512 , 13585 , 4 , 215 , 1 , 1 ,
+512 , 13586 , 4 , 215 , 1 , 1 ,
+512 , 13587 , 4 , 205 , 1 , 1 ,
+512 , 13588 , 4 , 236 , 1 , 1 ,
+512 , 13589 , 2 , 215 , 1 , 1 ,
+512 , 13590 , 2 , 205 , 1 , 1 ,
+512 , 13591 , 2 , 184 , 1 , 1 ,
+512 , 13592 , 2 , 184 , 1 , 1 ,
+512 , 13593 , 2 , 205 , 1 , 1 ,
+512 , 13594 , 2 , 194 , 1 , 1 ,
+512 , 13595 , 2 , 215 , 1 , 1 ,
+512 , 13596 , 2 , 205 , 1 , 1 ,
+512 , 13597 , 2 , 205 , 1 , 1 ,
+512 , 13598 , 2 , 194 , 1 , 1 ,
+512 , 13599 , 280 , 174 , 1 , 1 , 13547 13556 13571 13589 13553 13582 13546 13564 13597 13544 13581 13595 13583 13579 13584 13561 13545 13592 13552 13555 13596 13567 13554 13578 13542 13551 13572 13558 13539 13587 13588 13557 13573 13548 13580 13559 13593 13568 13563 13575 13576 13590 13540 13543 13562 13586 13569 13549 13594 13591 13577 13570 13565 13585 13598 13550 13560 13541 13574 13566
+513 , 13600 , 15 , 175 , 1 , 1 ,
+513 , 13601 , 14 , 185 , 1 , 1 ,
+513 , 13602 , 14 , 164 , 1 , 1 ,
+513 , 13603 , 14 , 164 , 1 , 1 ,
+513 , 13604 , 14 , 154 , 1 , 1 ,
+513 , 13605 , 14 , 175 , 1 , 1 ,
+513 , 13606 , 13 , 195 , 1 , 1 ,
+513 , 13607 , 13 , 184 , 1 , 1 ,
+513 , 13608 , 13 , 184 , 1 , 1 ,
+513 , 13609 , 13 , 184 , 1 , 1 ,
+513 , 13610 , 12 , 194 , 1 , 1 ,
+513 , 13611 , 12 , 205 , 1 , 1 ,
+513 , 13612 , 11 , 205 , 1 , 1 ,
+513 , 13613 , 11 , 215 , 1 , 1 ,
+513 , 13614 , 11 , 215 , 1 , 1 ,
+513 , 13615 , 10 , 215 , 1 , 1 ,
+513 , 13616 , 10 , 194 , 1 , 1 ,
+513 , 13617 , 10 , 215 , 1 , 1 ,
+513 , 13618 , 9 , 215 , 1 , 1 ,
+513 , 13619 , 9 , 215 , 1 , 1 ,
+513 , 13620 , 8 , 236 , 1 , 1 ,
+513 , 13621 , 8 , 226 , 1 , 1 ,
+513 , 13622 , 8 , 235 , 1 , 1 ,
+513 , 13623 , 8 , 225 , 1 , 1 ,
+513 , 13624 , 8 , 215 , 1 , 1 ,
+513 , 13625 , 7 , 205 , 1 , 1 ,
+513 , 13626 , 7 , 195 , 1 , 1 ,
+513 , 13627 , 7 , 174 , 1 , 1 ,
+513 , 13628 , 7 , 195 , 1 , 1 ,
+513 , 13629 , 6 , 195 , 1 , 1 ,
+513 , 13630 , 6 , 184 , 1 , 1 ,
+513 , 13631 , 6 , 195 , 1 , 1 ,
+513 , 13632 , 6 , 185 , 1 , 1 ,
+513 , 13633 , 6 , 205 , 1 , 1 ,
+513 , 13634 , 5 , 195 , 1 , 1 ,
+513 , 13635 , 5 , 195 , 1 , 1 ,
+513 , 13636 , 5 , 195 , 1 , 1 ,
+513 , 13637 , 5 , 185 , 1 , 1 ,
+513 , 13638 , 5 , 175 , 1 , 1 ,
+513 , 13639 , 5 , 215 , 1 , 1 ,
+513 , 13640 , 4 , 205 , 1 , 1 ,
+513 , 13641 , 4 , 215 , 1 , 1 ,
+513 , 13642 , 4 , 195 , 1 , 1 ,
+513 , 13643 , 4 , 205 , 1 , 1 ,
+513 , 13644 , 4 , 184 , 1 , 1 ,
+513 , 13645 , 4 , 205 , 1 , 1 ,
+513 , 13646 , 4 , 185 , 1 , 1 ,
+513 , 13647 , 3 , 184 , 1 , 1 ,
+513 , 13648 , 3 , 205 , 1 , 1 ,
+513 , 13649 , 3 , 195 , 1 , 1 ,
+513 , 13650 , 1 , 205 , 1 , 1 ,
+513 , 13651 , 1 , 195 , 1 , 1 ,
+513 , 13652 , 1 , 175 , 1 , 1 ,
+513 , 13653 , 1 , 184 , 1 , 1 ,
+513 , 13654 , 1 , 185 , 1 , 1 ,
+513 , 13655 , 1 , 184 , 1 , 1 ,
+513 , 13656 , 1 , 195 , 1 , 1 ,
+513 , 13657 , 1 , 195 , 1 , 1 ,
+513 , 13658 , 1 , 195 , 1 , 1 ,
+513 , 13659 , 1 , 174 , 1 , 1 ,
+513 , 13660 , 309 , 164 , 1 , 1 , 13629 13642 13635 13604 13621 13659 13625 13643 13628 13617 13633 13622 13654 13631 13601 13605 13627 13640 13616 13644 13653 13608 13607 13634 13620 13648 13652 13650 13615 13626 13649 13618 13647 13606 13651 13630 13646 13636 13641 13645 13603 13611 13656 13609 13619 13624 13637 13657 13632 13638 13612 13655 13600 13610 13614 13658 13639 13623 13602 13613
+514 , 13661 , 12 , 52 , 1 , 1 ,
+514 , 13662 , 12 , 52 , 1 , 1 ,
+514 , 13663 , 12 , 52 , 1 , 1 ,
+514 , 13664 , 12 , 52 , 1 , 1 ,
+514 , 13665 , 12 , 52 , 1 , 1 ,
+514 , 13666 , 11 , 52 , 1 , 1 ,
+514 , 13667 , 11 , 52 , 1 , 1 ,
+514 , 13668 , 11 , 52 , 1 , 1 ,
+514 , 13669 , 11 , 52 , 1 , 1 ,
+514 , 13670 , 11 , 52 , 1 , 1 ,
+514 , 13671 , 10 , 62 , 1 , 1 ,
+514 , 13672 , 10 , 62 , 1 , 1 ,
+514 , 13673 , 9 , 62 , 1 , 1 ,
+514 , 13674 , 9 , 62 , 1 , 1 ,
+514 , 13675 , 9 , 52 , 1 , 1 ,
+514 , 13676 , 9 , 62 , 1 , 1 ,
+514 , 13677 , 9 , 62 , 1 , 1 ,
+514 , 13678 , 9 , 62 , 1 , 1 ,
+514 , 13679 , 9 , 62 , 1 , 1 ,
+514 , 13680 , 9 , 62 , 1 , 1 ,
+514 , 13681 , 7 , 62 , 1 , 1 ,
+514 , 13682 , 7 , 62 , 1 , 1 ,
+514 , 13683 , 6 , 52 , 1 , 1 ,
+514 , 13684 , 6 , 52 , 1 , 1 ,
+514 , 13685 , 6 , 62 , 1 , 1 ,
+514 , 13686 , 6 , 52 , 1 , 1 ,
+514 , 13687 , 6 , 52 , 1 , 1 ,
+514 , 13688 , 6 , 62 , 1 , 1 ,
+514 , 13689 , 6 , 62 , 1 , 1 ,
+514 , 13690 , 6 , 52 , 1 , 1 ,
+514 , 13691 , 5 , 62 , 1 , 1 ,
+514 , 13692 , 5 , 62 , 1 , 1 ,
+514 , 13693 , 4 , 62 , 1 , 1 ,
+514 , 13694 , 4 , 62 , 1 , 1 ,
+514 , 13695 , 4 , 62 , 1 , 1 ,
+514 , 13696 , 4 , 52 , 1 , 1 ,
+514 , 13697 , 4 , 62 , 1 , 1 ,
+514 , 13698 , 4 , 62 , 1 , 1 ,
+514 , 13699 , 4 , 62 , 1 , 1 ,
+514 , 13700 , 4 , 62 , 1 , 1 ,
+514 , 13701 , 2 , 62 , 1 , 1 ,
+514 , 13702 , 2 , 62 , 1 , 1 ,
+514 , 13703 , 2 , 62 , 1 , 1 ,
+514 , 13704 , 2 , 62 , 1 , 1 ,
+514 , 13705 , 2 , 52 , 1 , 1 ,
+514 , 13706 , 2 , 62 , 1 , 1 ,
+514 , 13707 , 2 , 62 , 1 , 1 ,
+514 , 13708 , 2 , 52 , 1 , 1 ,
+514 , 13709 , 2 , 62 , 1 , 1 ,
+514 , 13710 , 2 , 52 , 1 , 1 ,
+514 , 13711 , 85 , 31 , 1 , 1 , 13671 13674 13684 13676 13705 13683 13687 13693 13696 13663 13666 13675 13707 13678 13680 13677 13702 13699 13661 13670 13703 13665 13698 13679 13691 13667 13673 13706 13686 13694 13692 13664 13695 13697 13669 13668 13685 13689 13701 13690 13681 13682 13672 13710 13709 13700 13704 13688 13708 13662
+515 , 13763 , 6 , 92 , 1 , 1 ,
+515 , 13764 , 6 , 92 , 1 , 1 ,
+515 , 13765 , 6 , 103 , 1 , 1 ,
+515 , 13766 , 6 , 103 , 1 , 1 ,
+515 , 13767 , 6 , 113 , 1 , 1 ,
+515 , 13768 , 6 , 103 , 1 , 1 ,
+515 , 13769 , 6 , 123 , 1 , 1 ,
+515 , 13770 , 5 , 123 , 1 , 1 ,
+515 , 13771 , 5 , 113 , 1 , 1 ,
+515 , 13772 , 5 , 103 , 1 , 1 ,
+515 , 13773 , 3 , 103 , 1 , 1 ,
+515 , 13774 , 3 , 113 , 1 , 1 ,
+515 , 13775 , 3 , 92 , 1 , 1 ,
+515 , 13776 , 3 , 113 , 1 , 1 ,
+515 , 13777 , 3 , 103 , 1 , 1 ,
+515 , 13778 , 3 , 103 , 1 , 1 ,
+515 , 13779 , 3 , 113 , 1 , 1 ,
+515 , 13780 , 3 , 92 , 1 , 1 ,
+515 , 13781 , 3 , 103 , 1 , 1 ,
+515 , 13782 , 3 , 103 , 1 , 1 ,
+515 , 13783 , 141 , 31 , 1 , 1 , 13766 13780 13772 13774 13782 13768 13767 13779 13764 13770 13771 13778 13777 13765 13773 13776 13769 13763 13775 13781
+516 , 15090 , 240 , 103 , 1 , 1 ,
+516 , 15091 , 239 , 82 , 1 , 1 ,
+516 , 15092 , 239 , 92 , 1 , 1 ,
+516 , 15093 , 239 , 92 , 1 , 1 ,
+516 , 15094 , 239 , 93 , 1 , 1 ,
+516 , 15095 , 239 , 92 , 1 , 1 ,
+516 , 15096 , 239 , 92 , 1 , 1 ,
+516 , 15097 , 239 , 82 , 1 , 1 ,
+516 , 15098 , 239 , 82 , 1 , 1 ,
+516 , 15099 , 239 , 83 , 1 , 1 ,
+516 , 15100 , 239 , 82 , 1 , 1 ,
+516 , 15101 , 227 , 140 , 1 , 1 ,
+516 , 15102 , 202 , 139 , 1 , 1 ,
+516 , 15103 , 200 , 130 , 1 , 1 ,
+516 , 15104 , 195 , 138 , 1 , 1 ,
+516 , 15105 , 194 , 139 , 1 , 1 ,
+516 , 15106 , 193 , 140 , 1 , 1 ,
+516 , 15107 , 188 , 92 , 1 , 1 ,
+516 , 15108 , 187 , 92 , 1 , 1 ,
+516 , 15109 , 185 , 92 , 1 , 1 ,
+516 , 15110 , 185 , 103 , 1 , 1 ,
+516 , 15111 , 184 , 92 , 1 , 1 ,
+516 , 15112 , 184 , 92 , 1 , 1 ,
+516 , 15113 , 184 , 103 , 1 , 1 ,
+516 , 15114 , 184 , 93 , 1 , 1 ,
+516 , 15115 , 184 , 92 , 1 , 1 ,
+516 , 15116 , 184 , 82 , 1 , 1 ,
+516 , 15117 , 184 , 93 , 1 , 1 ,
+516 , 15118 , 183 , 92 , 1 , 1 ,
+516 , 15119 , 180 , 103 , 1 , 1 ,
+516 , 15120 , 179 , 92 , 1 , 1 ,
+516 , 15121 , 179 , 92 , 1 , 1 ,
+516 , 15122 , 179 , 92 , 1 , 1 ,
+516 , 15123 , 179 , 103 , 1 , 1 ,
+516 , 15124 , 179 , 103 , 1 , 1 ,
+516 , 15125 , 179 , 92 , 1 , 1 ,
+516 , 15126 , 179 , 103 , 1 , 1 ,
+516 , 15127 , 179 , 103 , 1 , 1 ,
+516 , 15128 , 179 , 103 , 1 , 1 ,
+516 , 15129 , 178 , 103 , 1 , 1 ,
+516 , 15130 , 178 , 103 , 1 , 1 ,
+516 , 15131 , 177 , 113 , 1 , 1 ,
+516 , 15132 , 177 , 113 , 1 , 1 ,
+516 , 15133 , 173 , 113 , 1 , 1 ,
+516 , 15134 , 172 , 113 , 1 , 1 ,
+516 , 15135 , 171 , 113 , 1 , 1 ,
+516 , 15136 , 171 , 113 , 1 , 1 ,
+516 , 15137 , 171 , 113 , 1 , 1 ,
+516 , 15138 , 170 , 113 , 1 , 1 ,
+516 , 15139 , 168 , 113 , 1 , 1 ,
+516 , 15140 , 168 , 113 , 1 , 1 ,
+516 , 15141 , 166 , 113 , 1 , 1 ,
+516 , 15142 , 166 , 113 , 1 , 1 ,
+516 , 15143 , 166 , 113 , 1 , 1 ,
+516 , 15144 , 166 , 113 , 1 , 1 ,
+516 , 15145 , 161 , 113 , 1 , 1 ,
+516 , 15146 , 158 , 113 , 1 , 1 ,
+516 , 15147 , 157 , 113 , 1 , 1 ,
+516 , 15148 , 157 , 123 , 1 , 1 ,
+516 , 15149 , 157 , 113 , 1 , 1 ,
+516 , 15150 , 157 , 123 , 1 , 1 ,
+516 , 15151 , 157 , 113 , 1 , 1 ,
+516 , 15152 , 156 , 123 , 1 , 1 ,
+516 , 15153 , 156 , 123 , 1 , 1 ,
+516 , 15154 , 156 , 123 , 1 , 1 ,
+516 , 15155 , 154 , 133 , 1 , 1 ,
+516 , 15156 , 154 , 123 , 1 , 1 ,
+516 , 15157 , 153 , 123 , 1 , 1 ,
+516 , 15158 , 153 , 133 , 1 , 1 ,
+516 , 15159 , 153 , 133 , 1 , 1 ,
+516 , 15160 , 153 , 143 , 1 , 1 ,
+516 , 15161 , 152 , 143 , 1 , 1 ,
+516 , 15162 , 151 , 123 , 1 , 1 ,
+516 , 15163 , 151 , 123 , 1 , 1 ,
+516 , 15164 , 151 , 134 , 1 , 1 ,
+516 , 15165 , 151 , 133 , 1 , 1 ,
+516 , 15166 , 151 , 123 , 1 , 1 ,
+516 , 15167 , 148 , 123 , 1 , 1 ,
+516 , 15168 , 123 , 114 , 1 , 1 ,
+516 , 15169 , 122 , 124 , 1 , 1 ,
+516 , 15170 , 122 , 114 , 1 , 1 ,
+516 , 15171 , 122 , 104 , 1 , 1 ,
+516 , 15172 , 122 , 104 , 1 , 1 ,
+516 , 15173 , 122 , 103 , 1 , 1 ,
+516 , 15174 , 122 , 103 , 1 , 1 ,
+516 , 15175 , 122 , 103 , 1 , 1 ,
+516 , 15176 , 121 , 93 , 1 , 1 ,
+516 , 15177 , 120 , 92 , 1 , 1 ,
+516 , 15178 , 119 , 92 , 1 , 1 ,
+516 , 15179 , 119 , 83 , 1 , 1 ,
+516 , 15180 , 119 , 103 , 1 , 1 ,
+516 , 15181 , 119 , 103 , 1 , 1 ,
+516 , 15182 , 119 , 103 , 1 , 1 ,
+516 , 15183 , 119 , 92 , 1 , 1 ,
+516 , 15184 , 119 , 103 , 1 , 1 ,
+516 , 15185 , 119 , 103 , 1 , 1 ,
+516 , 15186 , 119 , 92 , 1 , 1 ,
+516 , 15187 , 119 , 103 , 1 , 1 ,
+516 , 15188 , 21 , 755 , 1 , 1 ,
+516 , 15189 , 21 , 785 , 1 , 1 ,
+516 , 15190 , 21 , 700 , 1 , 1 ,
+516 , 15191 , 21 , 680 , 1 , 1 ,
+516 , 15192 , 21 , 700 , 1 , 1 ,
+516 , 15193 , 21 , 771 , 1 , 1 ,
+516 , 15194 , 20 , 760 , 1 , 1 ,
+516 , 15195 , 20 , 710 , 1 , 1 ,
+516 , 15196 , 20 , 710 , 1 , 1 ,
+516 , 15197 , 20 , 740 , 1 , 1 ,
+516 , 15198 , 20 , 724 , 1 , 1 ,
+516 , 15199 , 20 , 750 , 1 , 1 ,
+516 , 15200 , 20 , 741 , 1 , 1 ,
+516 , 15201 , 20 , 735 , 1 , 1 ,
+516 , 15202 , 20 , 619 , 1 , 1 ,
+516 , 15203 , 20 , 598 , 1 , 1 ,
+516 , 15204 , 17 , 407 , 1 , 1 ,
+516 , 15205 , 17 , 376 , 1 , 1 ,
+516 , 15206 , 17 , 365 , 1 , 1 ,
+516 , 15207 , 17 , 355 , 1 , 1 ,
+516 , 15208 , 17 , 334 , 1 , 1 ,
+516 , 15209 , 17 , 323 , 1 , 1 ,
+516 , 15210 , 17 , 293 , 1 , 1 ,
+516 , 15211 , 17 , 282 , 1 , 1 ,
+516 , 15212 , 17 , 262 , 1 , 1 ,
+516 , 15213 , 17 , 251 , 1 , 1 ,
+516 , 15214 , 17 , 261 , 1 , 1 ,
+516 , 15215 , 17 , 251 , 1 , 1 ,
+516 , 15216 , 17 , 241 , 1 , 1 ,
+516 , 15217 , 17 , 241 , 1 , 1 ,
+516 , 15218 , 17 , 251 , 1 , 1 ,
+516 , 15219 , 17 , 251 , 1 , 1 ,
+516 , 15220 , 11 , 176 , 1 , 1 ,
+516 , 15221 , 11 , 174 , 1 , 1 ,
+516 , 15222 , 11 , 176 , 1 , 1 ,
+516 , 15223 , 11 , 209 , 1 , 1 ,
+516 , 15224 , 11 , 185 , 1 , 1 ,
+516 , 15225 , 11 , 182 , 1 , 1 ,
+516 , 15226 , 33 , 133 , 1 , 1 ,
+516 , 15227 , 33 , 134 , 1 , 1 ,
+516 , 15228 , 33 , 124 , 1 , 1 ,
+516 , 15229 , 32 , 134 , 1 , 1 ,
+516 , 15230 , 30 , 103 , 1 , 1 ,
+516 , 15231 , 29 , 124 , 1 , 1 ,
+516 , 15232 , 28 , 113 , 1 , 1 ,
+516 , 15233 , 28 , 113 , 1 , 1 ,
+516 , 15234 , 28 , 134 , 1 , 1 ,
+516 , 15235 , 28 , 133 , 1 , 1 ,
+516 , 15236 , 28 , 113 , 1 , 1 ,
+516 , 15237 , 27 , 123 , 1 , 1 ,
+516 , 15238 , 27 , 123 , 1 , 1 ,
+516 , 15239 , 27 , 113 , 1 , 1 ,
+516 , 15240 , 25 , 113 , 1 , 1 ,
+516 , 15241 , 24 , 113 , 1 , 1 ,
+516 , 15242 , 23 , 134 , 1 , 1 ,
+516 , 15243 , 23 , 133 , 1 , 1 ,
+516 , 15244 , 23 , 133 , 1 , 1 ,
+516 , 15245 , 23 , 123 , 1 , 1 ,
+516 , 15246 , 23 , 113 , 1 , 1 ,
+516 , 15247 , 23 , 113 , 1 , 1 ,
+516 , 15248 , 22 , 133 , 1 , 1 ,
+516 , 15249 , 22 , 133 , 1 , 1 ,
+516 , 15250 , 20 , 144 , 1 , 1 ,
+516 , 15251 , 20 , 144 , 1 , 1 ,
+516 , 15252 , 19 , 144 , 1 , 1 ,
+516 , 15253 , 19 , 134 , 1 , 1 ,
+516 , 15254 , 18 , 124 , 1 , 1 ,
+516 , 15255 , 18 , 124 , 1 , 1 ,
+516 , 15256 , 18 , 143 , 1 , 1 ,
+516 , 15257 , 18 , 133 , 1 , 1 ,
+516 , 15258 , 18 , 133 , 1 , 1 ,
+516 , 15259 , 17 , 123 , 1 , 1 ,
+516 , 15260 , 14 , 123 , 1 , 1 ,
+516 , 15261 , 14 , 123 , 1 , 1 ,
+516 , 15262 , 14 , 113 , 1 , 1 ,
+516 , 15263 , 14 , 113 , 1 , 1 ,
+516 , 15264 , 14 , 123 , 1 , 1 ,
+516 , 15265 , 13 , 113 , 1 , 1 ,
+516 , 15266 , 13 , 113 , 1 , 1 ,
+516 , 15267 , 13 , 123 , 1 , 1 ,
+516 , 15268 , 13 , 123 , 1 , 1 ,
+516 , 15269 , 13 , 123 , 1 , 1 ,
+516 , 15270 , 10 , 113 , 1 , 1 ,
+516 , 15271 , 10 , 113 , 1 , 1 ,
+516 , 15272 , 10 , 133 , 1 , 1 ,
+516 , 15273 , 10 , 123 , 1 , 1 ,
+516 , 15274 , 10 , 113 , 1 , 1 ,
+516 , 15275 , 10 , 133 , 1 , 1 ,
+516 , 15276 , 10 , 123 , 1 , 1 ,
+516 , 15277 , 10 , 123 , 1 , 1 ,
+516 , 15278 , 9 , 123 , 1 , 1 ,
+516 , 15279 , 9 , 123 , 1 , 1 ,
+516 , 15280 , 5 , 133 , 1 , 1 ,
+516 , 15281 , 5 , 113 , 1 , 1 ,
+516 , 15282 , 5 , 123 , 1 , 1 ,
+516 , 15283 , 5 , 133 , 1 , 1 ,
+516 , 15284 , 5 , 123 , 1 , 1 ,
+516 , 15285 , 5 , 113 , 1 , 1 ,
+516 , 15286 , 5 , 113 , 1 , 1 ,
+516 , 15287 , 5 , 113 , 1 , 1 ,
+516 , 15288 , 5 , 113 , 1 , 1 ,
+516 , 15289 , 5 , 113 , 1 , 1 ,
+516 , 15290 , 844 , 1 , 1 , 1 , 15282 15091 15261 15276 15201 15245 15180 15090 15235 15248 15274 15122 15206 15256 15221 15279 15269 15174 15253 15182 15119 15153 15289 15149 15271 15123 15278 15092 15142 15192 15114 15191 15159 15277 15168 15238 15237 15173 15098 15286 15275 15117 15187 15244 15184 15151 15132 15112 15163 15247 15218 15145 15141 15104 15115 15188 15223 15093 15100 15203 15110 15186 15227 15212 15239 15287 15165 15236 15148 15272 15228 15259 15288 15111 15189 15152 15124 15210 15243 15284 15222 15220 15265 15156 15230 15249 15127 15280 15120 15178 15161 15129 15183 15273 15209 15264 15207 15107 15137 15234 15099 15254 15162 15268 15096 15211 15197 15267 15198 15242 15283 15258 15181 15171 15146 15118 15225 15150 15270 15229 15262 15175 15158 15143 15109 15231 15193 15167 15241 15214 15133 15172 15154 15105 15219 15233 15170 15250 15202 15113 15128 15199 15125 15108 15251 15157 15136 15240 15102 15134 15215 15190 15204 15216 15164 15139 15147 15160 15195 15196 15285 15138 15121 15131 15185 15252 15281 15095 15144 15140 15094 15260 15177 15106 15232 15224 15176 15103 15255 15126 15217 15194 15246 15257 15208 15266 15179 15200 15226 15135 15213 15263 15155 15116 15205 15101 15130 15166 15169 15097
+517 , 16095 , 2 , 41 , 1 , 1 ,
+517 , 16096 , 2 , 52 , 1 , 1 ,
+517 , 16097 , 2 , 41 , 1 , 1 ,
+517 , 16098 , 66 , 0 , 1 , 1 , 16095 16097 16096
+518 , 16099 , 1 , 41 , 1 , 1 ,
+518 , 16100 , 1 , 52 , 1 , 1 ,
+518 , 16101 , 1 , 52 , 1 , 1 ,
+518 , 16102 , 65 , 0 , 1 , 1 , 16099 16100 16101
+519 , 16103 , 1 , 41 , 1 , 1 ,
+519 , 16104 , 1 , 41 , 1 , 1 ,
+519 , 16105 , 1 , 41 , 1 , 1 ,
+519 , 16106 , 56 , 0 , 1 , 1 , 16105 16104 16103
+520 , 16107 , 3 , 41 , 1 , 1 ,
+520 , 16108 , 3 , 41 , 1 , 1 ,
+520 , 16109 , 3 , 41 , 1 , 1 ,
+520 , 16110 , 56 , 0 , 1 , 1 , 16109 16107 16108
+521 , 16111 , 2 , 42 , 1 , 1 ,
+521 , 16112 , 2 , 42 , 1 , 1 ,
+521 , 16113 , 2 , 42 , 1 , 1 ,
+521 , 16114 , 55 , 0 , 1 , 1 , 16111 16112 16113
+522 , 16115 , 1 , 42 , 1 , 1 ,
+522 , 16116 , 1 , 42 , 1 , 1 ,
+522 , 16117 , 1 , 52 , 1 , 1 ,
+522 , 16118 , 65 , 0 , 1 , 1 , 16117 16115 16116
+523 , 16119 , 3 , 41 , 1 , 1 ,
+523 , 16120 , 3 , 41 , 1 , 1 ,
+523 , 16121 , 3 , 41 , 1 , 1 ,
+523 , 16122 , 56 , 0 , 1 , 1 , 16120 16121 16119
+524 , 16726 , 2 , 42 , 1 , 1 ,
+524 , 16727 , 2 , 52 , 1 , 1 ,
+524 , 16728 , 2 , 52 , 1 , 1 ,
+524 , 16729 , 67 , 11 , 1 , 1 , 16726 16728 16727
+525 , 17132 , 16 , 206 , 1 , 1 ,
+525 , 17133 , 16 , 206 , 1 , 1 ,
+525 , 17134 , 16 , 195 , 1 , 1 ,
+525 , 17135 , 16 , 195 , 1 , 1 ,
+525 , 17136 , 16 , 195 , 1 , 1 ,
+525 , 17137 , 16 , 205 , 1 , 1 ,
+525 , 17138 , 16 , 215 , 1 , 1 ,
+525 , 17139 , 16 , 194 , 1 , 1 ,
+525 , 17140 , 15 , 205 , 1 , 1 ,
+525 , 17141 , 14 , 205 , 1 , 1 ,
+525 , 17142 , 14 , 226 , 1 , 1 ,
+525 , 17143 , 14 , 236 , 1 , 1 ,
+525 , 17144 , 14 , 236 , 1 , 1 ,
+525 , 17145 , 14 , 246 , 1 , 1 ,
+525 , 17146 , 14 , 226 , 1 , 1 ,
+525 , 17147 , 14 , 246 , 1 , 1 ,
+525 , 17148 , 14 , 246 , 1 , 1 ,
+525 , 17149 , 14 , 226 , 1 , 1 ,
+525 , 17150 , 14 , 236 , 1 , 1 ,
+525 , 17151 , 12 , 258 , 1 , 1 ,
+525 , 17152 , 11 , 268 , 1 , 1 ,
+525 , 17153 , 11 , 278 , 1 , 1 ,
+525 , 17154 , 11 , 268 , 1 , 1 ,
+525 , 17155 , 11 , 258 , 1 , 1 ,
+525 , 17156 , 11 , 225 , 1 , 1 ,
+525 , 17157 , 10 , 237 , 1 , 1 ,
+525 , 17158 , 10 , 205 , 1 , 1 ,
+525 , 17159 , 10 , 225 , 1 , 1 ,
+525 , 17160 , 10 , 225 , 1 , 1 ,
+525 , 17161 , 9 , 225 , 1 , 1 ,
+525 , 17162 , 9 , 225 , 1 , 1 ,
+525 , 17163 , 9 , 215 , 1 , 1 ,
+525 , 17164 , 9 , 226 , 1 , 1 ,
+525 , 17165 , 9 , 246 , 1 , 1 ,
+525 , 17166 , 9 , 225 , 1 , 1 ,
+525 , 17167 , 9 , 225 , 1 , 1 ,
+525 , 17168 , 9 , 205 , 1 , 1 ,
+525 , 17169 , 9 , 206 , 1 , 1 ,
+525 , 17170 , 8 , 225 , 1 , 1 ,
+525 , 17171 , 8 , 236 , 1 , 1 ,
+525 , 17172 , 7 , 247 , 1 , 1 ,
+525 , 17173 , 7 , 236 , 1 , 1 ,
+525 , 17174 , 7 , 236 , 1 , 1 ,
+525 , 17175 , 7 , 215 , 1 , 1 ,
+525 , 17176 , 6 , 237 , 1 , 1 ,
+525 , 17177 , 6 , 236 , 1 , 1 ,
+525 , 17178 , 6 , 215 , 1 , 1 ,
+525 , 17179 , 6 , 236 , 1 , 1 ,
+525 , 17180 , 6 , 236 , 1 , 1 ,
+525 , 17181 , 6 , 246 , 1 , 1 ,
+525 , 17182 , 4 , 236 , 1 , 1 ,
+525 , 17183 , 4 , 225 , 1 , 1 ,
+525 , 17184 , 4 , 195 , 1 , 1 ,
+525 , 17185 , 4 , 205 , 1 , 1 ,
+525 , 17186 , 4 , 216 , 1 , 1 ,
+525 , 17187 , 4 , 226 , 1 , 1 ,
+525 , 17188 , 4 , 216 , 1 , 1 ,
+525 , 17189 , 4 , 215 , 1 , 1 ,
+525 , 17190 , 4 , 216 , 1 , 1 ,
+525 , 17191 , 4 , 216 , 1 , 1 ,
+525 , 17192 , 304 , 175 , 1 , 1 , 17157 17165 17153 17139 17173 17161 17166 17187 17179 17146 17154 17171 17148 17183 17147 17143 17145 17150 17169 17141 17190 17149 17159 17152 17156 17155 17132 17172 17188 17164 17151 17137 17134 17189 17167 17140 17185 17181 17138 17180 17186 17168 17174 17136 17176 17170 17144 17191 17133 17160 17178 17184 17142 17162 17158 17177 17182 17135 17163 17175
+526 , 17193 , 101 , 174 , 1 , 1 ,
+526 , 17194 , 101 , 184 , 1 , 1 ,
+526 , 17195 , 101 , 164 , 1 , 1 ,
+526 , 17196 , 101 , 164 , 1 , 1 ,
+526 , 17197 , 101 , 174 , 1 , 1 ,
+526 , 17198 , 101 , 184 , 1 , 1 ,
+526 , 17199 , 101 , 174 , 1 , 1 ,
+526 , 17200 , 101 , 174 , 1 , 1 ,
+526 , 17201 , 101 , 185 , 1 , 1 ,
+526 , 17202 , 99 , 195 , 1 , 1 ,
+526 , 17203 , 99 , 174 , 1 , 1 ,
+526 , 17204 , 99 , 205 , 1 , 1 ,
+526 , 17205 , 99 , 205 , 1 , 1 ,
+526 , 17206 , 99 , 195 , 1 , 1 ,
+526 , 17207 , 99 , 205 , 1 , 1 ,
+526 , 17208 , 99 , 205 , 1 , 1 ,
+526 , 17209 , 99 , 194 , 1 , 1 ,
+526 , 17210 , 99 , 215 , 1 , 1 ,
+526 , 17211 , 99 , 205 , 1 , 1 ,
+526 , 17212 , 9 , 710 , 1 , 1 ,
+526 , 17213 , 9 , 751 , 1 , 1 ,
+526 , 17214 , 9 , 855 , 1 , 1 ,
+526 , 17215 , 9 , 885 , 1 , 1 ,
+526 , 17216 , 9 , 1047 , 1 , 1 ,
+526 , 17217 , 9 , 1067 , 1 , 1 ,
+526 , 17218 , 9 , 1118 , 1 , 1 ,
+526 , 17219 , 9 , 1145 , 1 , 1 ,
+526 , 17220 , 9 , 1179 , 1 , 1 ,
+526 , 17221 , 9 , 1270 , 1 , 1 ,
+526 , 17222 , 9 , 1199 , 1 , 1 ,
+526 , 17223 , 9 , 1118 , 1 , 1 ,
+526 , 17224 , 9 , 1169 , 1 , 1 ,
+526 , 17225 , 9 , 1098 , 1 , 1 ,
+526 , 17226 , 9 , 1068 , 1 , 1 ,
+526 , 17227 , 9 , 966 , 1 , 1 ,
+526 , 17228 , 9 , 688 , 1 , 1 ,
+526 , 17229 , 9 , 574 , 1 , 1 ,
+526 , 17230 , 9 , 511 , 1 , 1 ,
+526 , 17231 , 9 , 501 , 1 , 1 ,
+526 , 17232 , 9 , 480 , 1 , 1 ,
+526 , 17233 , 9 , 491 , 1 , 1 ,
+526 , 17234 , 8 , 459 , 1 , 1 ,
+526 , 17235 , 8 , 418 , 1 , 1 ,
+526 , 17236 , 8 , 398 , 1 , 1 ,
+526 , 17237 , 8 , 397 , 1 , 1 ,
+526 , 17238 , 8 , 408 , 1 , 1 ,
+526 , 17239 , 8 , 418 , 1 , 1 ,
+526 , 17240 , 8 , 439 , 1 , 1 ,
+526 , 17241 , 8 , 460 , 1 , 1 ,
+526 , 17242 , 8 , 501 , 1 , 1 ,
+526 , 17243 , 8 , 501 , 1 , 1 ,
+526 , 17244 , 2 , 205 , 1 , 1 ,
+526 , 17245 , 2 , 195 , 1 , 1 ,
+526 , 17246 , 2 , 195 , 1 , 1 ,
+526 , 17247 , 2 , 205 , 1 , 1 ,
+526 , 17248 , 2 , 215 , 1 , 1 ,
+526 , 17249 , 2 , 216 , 1 , 1 ,
+526 , 17250 , 2 , 195 , 1 , 1 ,
+526 , 17251 , 2 , 195 , 1 , 1 ,
+526 , 17252 , 2 , 205 , 1 , 1 ,
+526 , 17253 , 1304 , 246 , 1 , 1 , 17198 17246 17217 17203 17235 17218 17242 17195 17229 17200 17204 17226 17228 17231 17219 17244 17199 17236 17220 17214 17233 17224 17239 17243 17223 17206 17194 17225 17207 17205 17193 17240 17232 17216 17230 17234 17227 17213 17221 17250 17212 17251 17245 17208 17202 17237 17252 17238 17211 17197 17222 17248 17201 17215 17210 17196 17247 17241 17249 17209
+527 , 17254 , 244 , 164 , 1 , 1 ,
+527 , 17255 , 243 , 175 , 1 , 1 ,
+527 , 17256 , 243 , 154 , 1 , 1 ,
+527 , 17257 , 243 , 156 , 1 , 1 ,
+527 , 17258 , 243 , 166 , 1 , 1 ,
+527 , 17259 , 243 , 175 , 1 , 1 ,
+527 , 17260 , 243 , 174 , 1 , 1 ,
+527 , 17261 , 243 , 186 , 1 , 1 ,
+527 , 17262 , 243 , 186 , 1 , 1 ,
+527 , 17263 , 243 , 186 , 1 , 1 ,
+527 , 17264 , 243 , 186 , 1 , 1 ,
+527 , 17265 , 237 , 198 , 1 , 1 ,
+527 , 17266 , 237 , 205 , 1 , 1 ,
+527 , 17267 , 227 , 205 , 1 , 1 ,
+527 , 17268 , 227 , 205 , 1 , 1 ,
+527 , 17269 , 217 , 205 , 1 , 1 ,
+527 , 17270 , 217 , 205 , 1 , 1 ,
+527 , 17271 , 217 , 205 , 1 , 1 ,
+527 , 17272 , 211 , 216 , 1 , 1 ,
+527 , 17273 , 186 , 235 , 1 , 1 ,
+527 , 17274 , 186 , 246 , 1 , 1 ,
+527 , 17275 , 186 , 256 , 1 , 1 ,
+527 , 17276 , 186 , 235 , 1 , 1 ,
+527 , 17277 , 186 , 235 , 1 , 1 ,
+527 , 17278 , 186 , 215 , 1 , 1 ,
+527 , 17279 , 186 , 205 , 1 , 1 ,
+527 , 17280 , 185 , 195 , 1 , 1 ,
+527 , 17281 , 185 , 195 , 1 , 1 ,
+527 , 17282 , 185 , 205 , 1 , 1 ,
+527 , 17283 , 183 , 195 , 1 , 1 ,
+527 , 17284 , 183 , 174 , 1 , 1 ,
+527 , 17285 , 183 , 174 , 1 , 1 ,
+527 , 17286 , 183 , 195 , 1 , 1 ,
+527 , 17287 , 183 , 195 , 1 , 1 ,
+527 , 17288 , 183 , 215 , 1 , 1 ,
+527 , 17289 , 183 , 195 , 1 , 1 ,
+527 , 17290 , 183 , 184 , 1 , 1 ,
+527 , 17291 , 183 , 184 , 1 , 1 ,
+527 , 17292 , 183 , 205 , 1 , 1 ,
+527 , 17293 , 125 , 216 , 1 , 1 ,
+527 , 17294 , 125 , 216 , 1 , 1 ,
+527 , 17295 , 125 , 216 , 1 , 1 ,
+527 , 17296 , 124 , 194 , 1 , 1 ,
+527 , 17297 , 124 , 206 , 1 , 1 ,
+527 , 17298 , 124 , 206 , 1 , 1 ,
+527 , 17299 , 124 , 207 , 1 , 1 ,
+527 , 17300 , 124 , 207 , 1 , 1 ,
+527 , 17301 , 123 , 207 , 1 , 1 ,
+527 , 17302 , 123 , 194 , 1 , 1 ,
+527 , 17303 , 123 , 205 , 1 , 1 ,
+527 , 17304 , 123 , 208 , 1 , 1 ,
+527 , 17305 , 123 , 185 , 1 , 1 ,
+527 , 17306 , 123 , 184 , 1 , 1 ,
+527 , 17307 , 123 , 184 , 1 , 1 ,
+527 , 17308 , 123 , 195 , 1 , 1 ,
+527 , 17309 , 123 , 205 , 1 , 1 ,
+527 , 17310 , 123 , 205 , 1 , 1 ,
+527 , 17311 , 123 , 205 , 1 , 1 ,
+527 , 17312 , 123 , 185 , 1 , 1 ,
+527 , 17313 , 68 , 177 , 1 , 1 ,
+527 , 17314 , 524 , 154 , 1 , 1 , 17280 17309 17288 17294 17310 17293 17270 17264 17307 17313 17295 17259 17262 17256 17275 17308 17268 17273 17286 17283 17279 17304 17284 17299 17271 17281 17267 17298 17289 17305 17277 17266 17269 17260 17276 17263 17302 17290 17292 17258 17274 17278 17296 17265 17272 17311 17287 17297 17285 17261 17301 17312 17254 17303 17257 17255 17282 17300 17306 17291
+528 , 17315 , 394 , 174 , 1 , 1 ,
+528 , 17316 , 394 , 174 , 1 , 1 ,
+528 , 17317 , 394 , 174 , 1 , 1 ,
+528 , 17318 , 394 , 164 , 1 , 1 ,
+528 , 17319 , 394 , 164 , 1 , 1 ,
+528 , 17320 , 385 , 604 , 1 , 1 ,
+528 , 17321 , 374 , 583 , 1 , 1 ,
+528 , 17322 , 363 , 511 , 1 , 1 ,
+528 , 17323 , 353 , 479 , 1 , 1 ,
+528 , 17324 , 345 , 490 , 1 , 1 ,
+528 , 17325 , 345 , 448 , 1 , 1 ,
+528 , 17326 , 338 , 205 , 1 , 1 ,
+528 , 17327 , 338 , 194 , 1 , 1 ,
+528 , 17328 , 338 , 205 , 1 , 1 ,
+528 , 17329 , 337 , 215 , 1 , 1 ,
+528 , 17330 , 337 , 215 , 1 , 1 ,
+528 , 17331 , 337 , 215 , 1 , 1 ,
+528 , 17332 , 337 , 215 , 1 , 1 ,
+528 , 17333 , 337 , 215 , 1 , 1 ,
+528 , 17334 , 336 , 225 , 1 , 1 ,
+528 , 17335 , 335 , 246 , 1 , 1 ,
+528 , 17336 , 334 , 245 , 1 , 1 ,
+528 , 17337 , 334 , 235 , 1 , 1 ,
+528 , 17338 , 334 , 225 , 1 , 1 ,
+528 , 17339 , 334 , 205 , 1 , 1 ,
+528 , 17340 , 334 , 205 , 1 , 1 ,
+528 , 17341 , 334 , 194 , 1 , 1 ,
+528 , 17342 , 334 , 195 , 1 , 1 ,
+528 , 17343 , 334 , 205 , 1 , 1 ,
+528 , 17344 , 334 , 174 , 1 , 1 ,
+528 , 17345 , 334 , 184 , 1 , 1 ,
+528 , 17346 , 276 , 185 , 1 , 1 ,
+528 , 17347 , 276 , 195 , 1 , 1 ,
+528 , 17348 , 276 , 215 , 1 , 1 ,
+528 , 17349 , 276 , 205 , 1 , 1 ,
+528 , 17350 , 276 , 195 , 1 , 1 ,
+528 , 17351 , 276 , 174 , 1 , 1 ,
+528 , 17352 , 276 , 164 , 1 , 1 ,
+528 , 17353 , 276 , 195 , 1 , 1 ,
+528 , 17354 , 275 , 185 , 1 , 1 ,
+528 , 17355 , 275 , 215 , 1 , 1 ,
+528 , 17356 , 274 , 205 , 1 , 1 ,
+528 , 17357 , 274 , 185 , 1 , 1 ,
+528 , 17358 , 274 , 185 , 1 , 1 ,
+528 , 17359 , 274 , 185 , 1 , 1 ,
+528 , 17360 , 274 , 205 , 1 , 1 ,
+528 , 17361 , 274 , 205 , 1 , 1 ,
+528 , 17362 , 274 , 194 , 1 , 1 ,
+528 , 17363 , 274 , 215 , 1 , 1 ,
+528 , 17364 , 274 , 215 , 1 , 1 ,
+528 , 17365 , 274 , 205 , 1 , 1 ,
+528 , 17366 , 218 , 194 , 1 , 1 ,
+528 , 17367 , 218 , 185 , 1 , 1 ,
+528 , 17368 , 218 , 184 , 1 , 1 ,
+528 , 17369 , 218 , 184 , 1 , 1 ,
+528 , 17370 , 218 , 175 , 1 , 1 ,
+528 , 17371 , 218 , 206 , 1 , 1 ,
+528 , 17372 , 218 , 185 , 1 , 1 ,
+528 , 17373 , 218 , 185 , 1 , 1 ,
+528 , 17374 , 218 , 164 , 1 , 1 ,
+528 , 17375 , 993 , 164 , 1 , 1 , 17359 17346 17317 17353 17370 17358 17343 17329 17335 17336 17337 17316 17331 17348 17374 17364 17334 17330 17366 17352 17326 17371 17319 17361 17322 17349 17372 17340 17342 17355 17339 17332 17323 17350 17324 17345 17363 17360 17368 17328 17354 17369 17351 17333 17341 17344 17373 17321 17365 17320 17327 17338 17347 17367 17325 17318 17356 17357 17362 17315
+529 , 17380 , 3 , 41 , 1 , 1 ,
+529 , 17381 , 3 , 52 , 1 , 1 ,
+529 , 17382 , 3 , 52 , 1 , 1 ,
+529 , 17383 , 67 , 0 , 1 , 1 , 17380 17381 17382
+530 , 20194 , 12 , 52 , 1 , 1 ,
+530 , 20195 , 12 , 62 , 1 , 1 ,
+530 , 20196 , 12 , 52 , 1 , 1 ,
+530 , 20197 , 97 , 11 , 1 , 1 , 20196 20195 20194
+531 , 20198 , 1 , 52 , 1 , 1 ,
+531 , 20199 , 1 , 62 , 1 , 1 ,
+531 , 20200 , 1 , 62 , 1 , 1 ,
+531 , 20201 , 76 , 11 , 1 , 1 , 20199 20200 20198
+532 , 20202 , 4 , 41 , 1 , 1 ,
+532 , 20203 , 4 , 52 , 1 , 1 ,
+532 , 20204 , 4 , 41 , 1 , 1 ,
+532 , 20205 , 68 , 0 , 1 , 1 , 20202 20203 20204
+533 , 20206 , 120 , 160 , 1 , 1 ,
+533 , 20207 , 120 , 157 , 1 , 1 ,
+533 , 20208 , 120 , 146 , 1 , 1 ,
+533 , 20209 , 119 , 157 , 1 , 1 ,
+533 , 20210 , 119 , 167 , 1 , 1 ,
+533 , 20211 , 119 , 167 , 1 , 1 ,
+533 , 20212 , 121 , 41 , 1 , 1 ,
+533 , 20213 , 121 , 31 , 1 , 1 ,
+533 , 20214 , 121 , 41 , 1 , 1 ,
+533 , 20215 , 121 , 31 , 1 , 1 ,
+533 , 20216 , 121 , 31 , 1 , 1 ,
+533 , 20217 , 121 , 31 , 1 , 1 ,
+533 , 20218 , 121 , 41 , 1 , 1 ,
+533 , 20219 , 121 , 31 , 1 , 1 ,
+533 , 20220 , 121 , 31 , 1 , 1 ,
+533 , 20221 , 120 , 41 , 1 , 1 ,
+533 , 20222 , 119 , 41 , 1 , 1 ,
+533 , 20223 , 119 , 41 , 1 , 1 ,
+533 , 20224 , 119 , 41 , 1 , 1 ,
+533 , 20225 , 119 , 41 , 1 , 1 ,
+533 , 20226 , 119 , 41 , 1 , 1 ,
+533 , 20227 , 119 , 41 , 1 , 1 ,
+533 , 20228 , 119 , 41 , 1 , 1 ,
+533 , 20229 , 119 , 41 , 1 , 1 ,
+533 , 20230 , 119 , 41 , 1 , 1 ,
+533 , 20231 , 119 , 41 , 1 , 1 ,
+533 , 20232 , 99 , 52 , 1 , 1 ,
+533 , 20233 , 99 , 52 , 1 , 1 ,
+533 , 20234 , 95 , 64 , 1 , 1 ,
+533 , 20235 , 95 , 64 , 1 , 1 ,
+533 , 20236 , 98 , 52 , 1 , 1 ,
+533 , 20237 , 98 , 52 , 1 , 1 ,
+533 , 20238 , 98 , 52 , 1 , 1 ,
+533 , 20239 , 98 , 52 , 1 , 1 ,
+533 , 20240 , 93 , 75 , 1 , 1 ,
+533 , 20241 , 96 , 52 , 1 , 1 ,
+533 , 20242 , 96 , 52 , 1 , 1 ,
+533 , 20243 , 95 , 52 , 1 , 1 ,
+533 , 20244 , 91 , 74 , 1 , 1 ,
+533 , 20245 , 95 , 52 , 1 , 1 ,
+533 , 20246 , 95 , 52 , 1 , 1 ,
+533 , 20247 , 95 , 52 , 1 , 1 ,
+533 , 20248 , 95 , 52 , 1 , 1 ,
+533 , 20249 , 95 , 62 , 1 , 1 ,
+533 , 20250 , 90 , 74 , 1 , 1 ,
+533 , 20251 , 95 , 62 , 1 , 1 ,
+533 , 20252 , 94 , 62 , 1 , 1 ,
+533 , 20253 , 92 , 62 , 1 , 1 ,
+533 , 20254 , 92 , 62 , 1 , 1 ,
+533 , 20255 , 88 , 74 , 1 , 1 ,
+533 , 20256 , 92 , 62 , 1 , 1 ,
+533 , 20257 , 92 , 62 , 1 , 1 ,
+533 , 20258 , 92 , 62 , 1 , 1 ,
+533 , 20259 , 91 , 62 , 1 , 1 ,
+533 , 20260 , 91 , 62 , 1 , 1 ,
+533 , 20261 , 91 , 62 , 1 , 1 ,
+533 , 20262 , 91 , 52 , 1 , 1 ,
+533 , 20263 , 90 , 52 , 1 , 1 ,
+533 , 20264 , 88 , 62 , 1 , 1 ,
+533 , 20265 , 88 , 52 , 1 , 1 ,
+533 , 20266 , 88 , 62 , 1 , 1 ,
+533 , 20267 , 87 , 62 , 1 , 1 ,
+533 , 20268 , 87 , 62 , 1 , 1 ,
+533 , 20269 , 87 , 62 , 1 , 1 ,
+533 , 20270 , 87 , 52 , 1 , 1 ,
+533 , 20271 , 87 , 62 , 1 , 1 ,
+533 , 20272 , 87 , 62 , 1 , 1 ,
+533 , 20273 , 87 , 62 , 1 , 1 ,
+533 , 20274 , 85 , 62 , 1 , 1 ,
+533 , 20275 , 85 , 62 , 1 , 1 ,
+533 , 20276 , 84 , 72 , 1 , 1 ,
+533 , 20277 , 84 , 62 , 1 , 1 ,
+533 , 20278 , 84 , 62 , 1 , 1 ,
+533 , 20279 , 84 , 52 , 1 , 1 ,
+533 , 20280 , 84 , 51 , 1 , 1 ,
+533 , 20281 , 83 , 52 , 1 , 1 ,
+533 , 20282 , 83 , 52 , 1 , 1 ,
+533 , 20283 , 83 , 62 , 1 , 1 ,
+533 , 20284 , 83 , 52 , 1 , 1 ,
+533 , 20285 , 83 , 52 , 1 , 1 ,
+533 , 20286 , 83 , 52 , 1 , 1 ,
+533 , 20287 , 83 , 52 , 1 , 1 ,
+533 , 20288 , 83 , 52 , 1 , 1 ,
+533 , 20289 , 83 , 41 , 1 , 1 ,
+533 , 20290 , 81 , 51 , 1 , 1 ,
+533 , 20291 , 76 , 41 , 1 , 1 ,
+533 , 20292 , 73 , 41 , 1 , 1 ,
+533 , 20293 , 72 , 41 , 1 , 1 ,
+533 , 20294 , 152 , 199 , 1 , 1 ,
+533 , 20295 , 152 , 199 , 1 , 1 ,
+533 , 20296 , 131 , 191 , 1 , 1 ,
+533 , 20297 , 130 , 202 , 1 , 1 ,
+533 , 20298 , 130 , 212 , 1 , 1 ,
+533 , 20299 , 130 , 219 , 1 , 1 ,
+533 , 20300 , 120 , 240 , 1 , 1 ,
+533 , 20301 , 120 , 230 , 1 , 1 ,
+533 , 20302 , 72 , 41 , 1 , 1 ,
+533 , 20303 , 72 , 41 , 1 , 1 ,
+533 , 20304 , 71 , 41 , 1 , 1 ,
+533 , 20305 , 70 , 41 , 1 , 1 ,
+533 , 20306 , 70 , 41 , 1 , 1 ,
+533 , 20307 , 15 , 345 , 1 , 1 ,
+533 , 20308 , 15 , 365 , 1 , 1 ,
+533 , 20309 , 15 , 375 , 1 , 1 ,
+533 , 20310 , 15 , 375 , 1 , 1 ,
+533 , 20311 , 15 , 376 , 1 , 1 ,
+533 , 20312 , 15 , 365 , 1 , 1 ,
+533 , 20313 , 15 , 355 , 1 , 1 ,
+533 , 20314 , 15 , 325 , 1 , 1 ,
+533 , 20315 , 15 , 365 , 1 , 1 ,
+533 , 20316 , 15 , 366 , 1 , 1 ,
+533 , 20317 , 15 , 356 , 1 , 1 ,
+533 , 20318 , 15 , 315 , 1 , 1 ,
+533 , 20319 , 15 , 315 , 1 , 1 ,
+533 , 20320 , 15 , 294 , 1 , 1 ,
+533 , 20321 , 15 , 284 , 1 , 1 ,
+533 , 20322 , 15 , 274 , 1 , 1 ,
+533 , 20323 , 13 , 136 , 1 , 1 ,
+533 , 20324 , 13 , 136 , 1 , 1 ,
+533 , 20325 , 13 , 136 , 1 , 1 ,
+533 , 20326 , 13 , 136 , 1 , 1 ,
+533 , 20327 , 13 , 116 , 1 , 1 ,
+533 , 20328 , 13 , 115 , 1 , 1 ,
+533 , 20329 , 12 , 116 , 1 , 1 ,
+533 , 20330 , 12 , 105 , 1 , 1 ,
+533 , 20331 , 12 , 105 , 1 , 1 ,
+533 , 20332 , 12 , 105 , 1 , 1 ,
+533 , 20333 , 12 , 105 , 1 , 1 ,
+533 , 20334 , 12 , 105 , 1 , 1 ,
+533 , 20335 , 12 , 105 , 1 , 1 ,
+533 , 20336 , 12 , 105 , 1 , 1 ,
+533 , 20337 , 12 , 105 , 1 , 1 ,
+533 , 20338 , 12 , 105 , 1 , 1 ,
+533 , 20339 , 9 , 78 , 1 , 1 ,
+533 , 20340 , 9 , 75 , 1 , 1 ,
+533 , 20341 , 9 , 76 , 1 , 1 ,
+533 , 20342 , 9 , 78 , 1 , 1 ,
+533 , 20343 , 9 , 76 , 1 , 1 ,
+533 , 20344 , 9 , 75 , 1 , 1 ,
+533 , 20345 , 23 , 62 , 1 , 1 ,
+533 , 20346 , 22 , 52 , 1 , 1 ,
+533 , 20347 , 22 , 52 , 1 , 1 ,
+533 , 20348 , 22 , 52 , 1 , 1 ,
+533 , 20349 , 21 , 52 , 1 , 1 ,
+533 , 20350 , 21 , 52 , 1 , 1 ,
+533 , 20351 , 21 , 52 , 1 , 1 ,
+533 , 20352 , 21 , 52 , 1 , 1 ,
+533 , 20353 , 21 , 62 , 1 , 1 ,
+533 , 20354 , 20 , 52 , 1 , 1 ,
+533 , 20355 , 20 , 52 , 1 , 1 ,
+533 , 20356 , 19 , 52 , 1 , 1 ,
+533 , 20357 , 19 , 52 , 1 , 1 ,
+533 , 20358 , 18 , 62 , 1 , 1 ,
+533 , 20359 , 18 , 62 , 1 , 1 ,
+533 , 20360 , 18 , 62 , 1 , 1 ,
+533 , 20361 , 18 , 52 , 1 , 1 ,
+533 , 20362 , 18 , 52 , 1 , 1 ,
+533 , 20363 , 18 , 62 , 1 , 1 ,
+533 , 20364 , 17 , 62 , 1 , 1 ,
+533 , 20365 , 17 , 62 , 1 , 1 ,
+533 , 20366 , 15 , 62 , 1 , 1 ,
+533 , 20367 , 15 , 62 , 1 , 1 ,
+533 , 20368 , 14 , 62 , 1 , 1 ,
+533 , 20369 , 14 , 62 , 1 , 1 ,
+533 , 20370 , 14 , 62 , 1 , 1 ,
+533 , 20371 , 14 , 62 , 1 , 1 ,
+533 , 20372 , 14 , 62 , 1 , 1 ,
+533 , 20373 , 14 , 62 , 1 , 1 ,
+533 , 20374 , 13 , 62 , 1 , 1 ,
+533 , 20375 , 13 , 62 , 1 , 1 ,
+533 , 20376 , 12 , 62 , 1 , 1 ,
+533 , 20377 , 12 , 62 , 1 , 1 ,
+533 , 20378 , 11 , 62 , 1 , 1 ,
+533 , 20379 , 11 , 62 , 1 , 1 ,
+533 , 20380 , 11 , 62 , 1 , 1 ,
+533 , 20381 , 11 , 62 , 1 , 1 ,
+533 , 20382 , 11 , 52 , 1 , 1 ,
+533 , 20383 , 11 , 62 , 1 , 1 ,
+533 , 20384 , 10 , 62 , 1 , 1 ,
+533 , 20385 , 10 , 62 , 1 , 1 ,
+533 , 20386 , 9 , 62 , 1 , 1 ,
+533 , 20387 , 9 , 62 , 1 , 1 ,
+533 , 20388 , 9 , 62 , 1 , 1 ,
+533 , 20389 , 8 , 62 , 1 , 1 ,
+533 , 20390 , 8 , 62 , 1 , 1 ,
+533 , 20391 , 8 , 62 , 1 , 1 ,
+533 , 20392 , 8 , 52 , 1 , 1 ,
+533 , 20393 , 8 , 62 , 1 , 1 ,
+533 , 20394 , 8 , 62 , 1 , 1 ,
+533 , 20395 , 8 , 62 , 1 , 1 ,
+533 , 20396 , 6 , 62 , 1 , 1 ,
+533 , 20397 , 6 , 62 , 1 , 1 ,
+533 , 20398 , 6 , 51 , 1 , 1 ,
+533 , 20399 , 6 , 62 , 1 , 1 ,
+533 , 20400 , 6 , 51 , 1 , 1 ,
+533 , 20401 , 6 , 51 , 1 , 1 ,
+533 , 20402 , 6 , 51 , 1 , 1 ,
+533 , 20403 , 6 , 62 , 1 , 1 ,
+533 , 20404 , 6 , 52 , 1 , 1 ,
+533 , 20405 , 6 , 52 , 1 , 1 ,
+533 , 20406 , 418 , 154 , 1 , 1 , 20364 20304 20372 20357 20219 20320 20274 20395 20225 20386 20355 20383 20299 20260 20296 20224 20266 20314 20402 20380 20220 20286 20351 20313 20363 20361 20257 20365 20404 20285 20215 20232 20251 20295 20228 20261 20347 20366 20382 20328 20358 20269 20245 20321 20276 20323 20335 20223 20275 20297 20345 20375 20282 20263 20227 20300 20353 20211 20213 20287 20333 20280 20256 20216 20354 20302 20206 20268 20318 20326 20388 20393 20308 20401 20272 20398 20376 20319 20381 20310 20248 20230 20309 20214 20340 20209 20288 20246 20400 20367 20217 20250 20370 20212 20371 20312 20221 20247 20349 20290 20332 20350 20238 20403 20305 20289 20377 20294 20207 20240 20277 20317 20385 20252 20337 20374 20208 20341 20392 20222 20316 20292 20235 20352 20405 20231 20301 20343 20348 20229 20258 20360 20396 20334 20344 20210 20283 20307 20242 20373 20338 20218 20236 20265 20325 20293 20234 20306 20387 20390 20237 20279 20369 20327 20342 20389 20324 20330 20249 20291 20315 20397 20359 20362 20379 20391 20311 20281 20255 20254 20271 20264 20267 20262 20378 20259 20322 20239 20303 20284 20329 20244 20331 20241 20253 20394 20278 20339 20384 20243 20399 20346 20233 20368 20356 20298 20273 20226 20336 20270
+534 , 20407 , 121 , 157 , 1 , 1 ,
+534 , 20408 , 123 , 41 , 1 , 1 ,
+534 , 20409 , 122 , 41 , 1 , 1 ,
+534 , 20410 , 122 , 41 , 1 , 1 ,
+534 , 20411 , 122 , 41 , 1 , 1 ,
+534 , 20412 , 122 , 41 , 1 , 1 ,
+534 , 20413 , 122 , 41 , 1 , 1 ,
+534 , 20414 , 121 , 42 , 1 , 1 ,
+534 , 20415 , 121 , 41 , 1 , 1 ,
+534 , 20416 , 121 , 41 , 1 , 1 ,
+534 , 20417 , 121 , 41 , 1 , 1 ,
+534 , 20418 , 120 , 41 , 1 , 1 ,
+534 , 20419 , 119 , 41 , 1 , 1 ,
+534 , 20420 , 119 , 41 , 1 , 1 ,
+534 , 20421 , 119 , 41 , 1 , 1 ,
+534 , 20422 , 119 , 41 , 1 , 1 ,
+534 , 20423 , 119 , 31 , 1 , 1 ,
+534 , 20424 , 119 , 41 , 1 , 1 ,
+534 , 20425 , 119 , 41 , 1 , 1 ,
+534 , 20426 , 119 , 41 , 1 , 1 ,
+534 , 20427 , 119 , 41 , 1 , 1 ,
+534 , 20428 , 119 , 41 , 1 , 1 ,
+534 , 20429 , 119 , 41 , 1 , 1 ,
+534 , 20430 , 116 , 41 , 1 , 1 ,
+534 , 20431 , 116 , 41 , 1 , 1 ,
+534 , 20432 , 115 , 42 , 1 , 1 ,
+534 , 20433 , 115 , 41 , 1 , 1 ,
+534 , 20434 , 114 , 41 , 1 , 1 ,
+534 , 20435 , 114 , 41 , 1 , 1 ,
+534 , 20436 , 113 , 31 , 1 , 1 ,
+534 , 20437 , 113 , 31 , 1 , 1 ,
+534 , 20438 , 113 , 41 , 1 , 1 ,
+534 , 20439 , 103 , 41 , 1 , 1 ,
+534 , 20440 , 102 , 41 , 1 , 1 ,
+534 , 20441 , 99 , 41 , 1 , 1 ,
+534 , 20442 , 99 , 41 , 1 , 1 ,
+534 , 20443 , 99 , 41 , 1 , 1 ,
+534 , 20444 , 98 , 41 , 1 , 1 ,
+534 , 20445 , 98 , 41 , 1 , 1 ,
+534 , 20446 , 98 , 42 , 1 , 1 ,
+534 , 20447 , 97 , 41 , 1 , 1 ,
+534 , 20448 , 96 , 41 , 1 , 1 ,
+534 , 20449 , 96 , 41 , 1 , 1 ,
+534 , 20450 , 96 , 41 , 1 , 1 ,
+534 , 20451 , 95 , 41 , 1 , 1 ,
+534 , 20452 , 95 , 41 , 1 , 1 ,
+534 , 20453 , 95 , 42 , 1 , 1 ,
+534 , 20454 , 95 , 41 , 1 , 1 ,
+534 , 20455 , 95 , 75 , 1 , 1 ,
+534 , 20456 , 95 , 41 , 1 , 1 ,
+534 , 20457 , 95 , 75 , 1 , 1 ,
+534 , 20458 , 93 , 76 , 1 , 1 ,
+534 , 20459 , 93 , 52 , 1 , 1 ,
+534 , 20460 , 93 , 52 , 1 , 1 ,
+534 , 20461 , 93 , 41 , 1 , 1 ,
+534 , 20462 , 93 , 41 , 1 , 1 ,
+534 , 20463 , 92 , 75 , 1 , 1 ,
+534 , 20464 , 91 , 75 , 1 , 1 ,
+534 , 20465 , 90 , 74 , 1 , 1 ,
+534 , 20466 , 89 , 52 , 1 , 1 ,
+534 , 20467 , 89 , 52 , 1 , 1 ,
+534 , 20468 , 89 , 41 , 1 , 1 ,
+534 , 20469 , 89 , 52 , 1 , 1 ,
+534 , 20470 , 89 , 52 , 1 , 1 ,
+534 , 20471 , 84 , 52 , 1 , 1 ,
+534 , 20472 , 84 , 52 , 1 , 1 ,
+534 , 20473 , 82 , 52 , 1 , 1 ,
+534 , 20474 , 81 , 52 , 1 , 1 ,
+534 , 20475 , 81 , 52 , 1 , 1 ,
+534 , 20476 , 81 , 62 , 1 , 1 ,
+534 , 20477 , 78 , 62 , 1 , 1 ,
+534 , 20478 , 78 , 62 , 1 , 1 ,
+534 , 20479 , 78 , 62 , 1 , 1 ,
+534 , 20480 , 78 , 62 , 1 , 1 ,
+534 , 20481 , 78 , 53 , 1 , 1 ,
+534 , 20482 , 74 , 52 , 1 , 1 ,
+534 , 20483 , 74 , 52 , 1 , 1 ,
+534 , 20484 , 74 , 52 , 1 , 1 ,
+534 , 20485 , 74 , 52 , 1 , 1 ,
+534 , 20486 , 74 , 52 , 1 , 1 ,
+534 , 20487 , 74 , 52 , 1 , 1 ,
+534 , 20488 , 74 , 52 , 1 , 1 ,
+534 , 20489 , 74 , 52 , 1 , 1 ,
+534 , 20490 , 73 , 52 , 1 , 1 ,
+534 , 20491 , 72 , 52 , 1 , 1 ,
+534 , 20492 , 72 , 41 , 1 , 1 ,
+534 , 20493 , 67 , 42 , 1 , 1 ,
+534 , 20494 , 67 , 42 , 1 , 1 ,
+534 , 20495 , 67 , 41 , 1 , 1 ,
+534 , 20496 , 67 , 41 , 1 , 1 ,
+534 , 20497 , 67 , 41 , 1 , 1 ,
+534 , 20498 , 64 , 41 , 1 , 1 ,
+534 , 20499 , 62 , 41 , 1 , 1 ,
+534 , 20500 , 61 , 42 , 1 , 1 ,
+534 , 20501 , 61 , 41 , 1 , 1 ,
+534 , 20502 , 61 , 41 , 1 , 1 ,
+534 , 20503 , 61 , 41 , 1 , 1 ,
+534 , 20504 , 61 , 41 , 1 , 1 ,
+534 , 20505 , 61 , 42 , 1 , 1 ,
+534 , 20506 , 61 , 42 , 1 , 1 ,
+534 , 20507 , 18 , 406 , 1 , 1 ,
+534 , 20508 , 18 , 396 , 1 , 1 ,
+534 , 20509 , 18 , 406 , 1 , 1 ,
+534 , 20510 , 18 , 406 , 1 , 1 ,
+534 , 20511 , 18 , 416 , 1 , 1 ,
+534 , 20512 , 18 , 406 , 1 , 1 ,
+534 , 20513 , 18 , 406 , 1 , 1 ,
+534 , 20514 , 18 , 356 , 1 , 1 ,
+534 , 20515 , 18 , 406 , 1 , 1 ,
+534 , 20516 , 18 , 406 , 1 , 1 ,
+534 , 20517 , 18 , 376 , 1 , 1 ,
+534 , 20518 , 18 , 386 , 1 , 1 ,
+534 , 20519 , 18 , 325 , 1 , 1 ,
+534 , 20520 , 18 , 315 , 1 , 1 ,
+534 , 20521 , 18 , 294 , 1 , 1 ,
+534 , 20522 , 18 , 294 , 1 , 1 ,
+534 , 20523 , 15 , 136 , 1 , 1 ,
+534 , 20524 , 15 , 136 , 1 , 1 ,
+534 , 20525 , 15 , 125 , 1 , 1 ,
+534 , 20526 , 15 , 136 , 1 , 1 ,
+534 , 20527 , 15 , 126 , 1 , 1 ,
+534 , 20528 , 15 , 105 , 1 , 1 ,
+534 , 20529 , 14 , 105 , 1 , 1 ,
+534 , 20530 , 14 , 105 , 1 , 1 ,
+534 , 20531 , 14 , 95 , 1 , 1 ,
+534 , 20532 , 14 , 105 , 1 , 1 ,
+534 , 20533 , 14 , 105 , 1 , 1 ,
+534 , 20534 , 14 , 95 , 1 , 1 ,
+534 , 20535 , 14 , 95 , 1 , 1 ,
+534 , 20536 , 14 , 95 , 1 , 1 ,
+534 , 20537 , 14 , 105 , 1 , 1 ,
+534 , 20538 , 14 , 105 , 1 , 1 ,
+534 , 20539 , 10 , 75 , 1 , 1 ,
+534 , 20540 , 10 , 77 , 1 , 1 ,
+534 , 20541 , 10 , 76 , 1 , 1 ,
+534 , 20542 , 10 , 78 , 1 , 1 ,
+534 , 20543 , 10 , 76 , 1 , 1 ,
+534 , 20544 , 10 , 75 , 1 , 1 ,
+534 , 20545 , 26 , 52 , 1 , 1 ,
+534 , 20546 , 25 , 52 , 1 , 1 ,
+534 , 20547 , 24 , 52 , 1 , 1 ,
+534 , 20548 , 24 , 52 , 1 , 1 ,
+534 , 20549 , 23 , 62 , 1 , 1 ,
+534 , 20550 , 23 , 52 , 1 , 1 ,
+534 , 20551 , 23 , 62 , 1 , 1 ,
+534 , 20552 , 23 , 62 , 1 , 1 ,
+534 , 20553 , 23 , 62 , 1 , 1 ,
+534 , 20554 , 23 , 62 , 1 , 1 ,
+534 , 20555 , 22 , 62 , 1 , 1 ,
+534 , 20556 , 22 , 62 , 1 , 1 ,
+534 , 20557 , 20 , 62 , 1 , 1 ,
+534 , 20558 , 20 , 62 , 1 , 1 ,
+534 , 20559 , 20 , 62 , 1 , 1 ,
+534 , 20560 , 20 , 62 , 1 , 1 ,
+534 , 20561 , 20 , 62 , 1 , 1 ,
+534 , 20562 , 20 , 62 , 1 , 1 ,
+534 , 20563 , 19 , 62 , 1 , 1 ,
+534 , 20564 , 19 , 62 , 1 , 1 ,
+534 , 20565 , 19 , 52 , 1 , 1 ,
+534 , 20566 , 19 , 52 , 1 , 1 ,
+534 , 20567 , 16 , 62 , 1 , 1 ,
+534 , 20568 , 16 , 62 , 1 , 1 ,
+534 , 20569 , 16 , 73 , 1 , 1 ,
+534 , 20570 , 16 , 72 , 1 , 1 ,
+534 , 20571 , 16 , 62 , 1 , 1 ,
+534 , 20572 , 16 , 52 , 1 , 1 ,
+534 , 20573 , 16 , 62 , 1 , 1 ,
+534 , 20574 , 15 , 52 , 1 , 1 ,
+534 , 20575 , 15 , 52 , 1 , 1 ,
+534 , 20576 , 15 , 52 , 1 , 1 ,
+534 , 20577 , 12 , 52 , 1 , 1 ,
+534 , 20578 , 12 , 52 , 1 , 1 ,
+534 , 20579 , 12 , 52 , 1 , 1 ,
+534 , 20580 , 12 , 52 , 1 , 1 ,
+534 , 20581 , 12 , 52 , 1 , 1 ,
+534 , 20582 , 11 , 41 , 1 , 1 ,
+534 , 20583 , 11 , 41 , 1 , 1 ,
+534 , 20584 , 11 , 41 , 1 , 1 ,
+534 , 20585 , 11 , 41 , 1 , 1 ,
+534 , 20586 , 11 , 41 , 1 , 1 ,
+534 , 20587 , 9 , 52 , 1 , 1 ,
+534 , 20588 , 9 , 41 , 1 , 1 ,
+534 , 20589 , 9 , 52 , 1 , 1 ,
+534 , 20590 , 9 , 52 , 1 , 1 ,
+534 , 20591 , 9 , 52 , 1 , 1 ,
+534 , 20592 , 9 , 52 , 1 , 1 ,
+534 , 20593 , 9 , 52 , 1 , 1 ,
+534 , 20594 , 9 , 52 , 1 , 1 ,
+534 , 20595 , 9 , 52 , 1 , 1 ,
+534 , 20596 , 9 , 52 , 1 , 1 ,
+534 , 20597 , 6 , 52 , 1 , 1 ,
+534 , 20598 , 6 , 52 , 1 , 1 ,
+534 , 20599 , 6 , 41 , 1 , 1 ,
+534 , 20600 , 6 , 41 , 1 , 1 ,
+534 , 20601 , 6 , 42 , 1 , 1 ,
+534 , 20602 , 6 , 41 , 1 , 1 ,
+534 , 20603 , 6 , 41 , 1 , 1 ,
+534 , 20604 , 6 , 41 , 1 , 1 ,
+534 , 20605 , 6 , 41 , 1 , 1 ,
+534 , 20606 , 6 , 41 , 1 , 1 ,
+534 , 20607 , 458 , 143 , 1 , 1 , 20558 20552 20603 20478 20415 20449 20596 20472 20536 20542 20437 20487 20430 20577 20569 20540 20476 20419 20590 20489 20492 20464 20418 20560 20602 20502 20505 20479 20564 20559 20463 20491 20555 20594 20535 20460 20475 20593 20465 20413 20516 20520 20496 20498 20566 20427 20511 20442 20525 20480 20550 20561 20445 20482 20524 20567 20439 20471 20454 20562 20545 20468 20597 20588 20576 20528 20563 20549 20416 20523 20488 20414 20420 20506 20426 20586 20456 20474 20512 20481 20514 20461 20584 20495 20544 20438 20484 20470 20539 20538 20457 20410 20531 20601 20573 20515 20500 20423 20592 20579 20499 20534 20575 20453 20509 20599 20462 20421 20551 20444 20466 20526 20510 20469 20446 20431 20436 20554 20585 20443 20591 20533 20530 20543 20548 20429 20547 20483 20447 20412 20604 20501 20582 20485 20580 20467 20440 20518 20600 20541 20428 20605 20450 20571 20546 20568 20448 20497 20581 20408 20432 20455 20527 20441 20522 20529 20504 20435 20553 20459 20424 20517 20494 20425 20411 20473 20532 20565 20589 20557 20477 20574 20556 20595 20486 20409 20519 20570 20490 20578 20434 20606 20422 20433 20451 20583 20452 20507 20521 20537 20572 20587 20513 20598 20407 20417 20493 20458 20508 20503
+535 , 20608 , 171 , 41 , 1 , 1 ,
+535 , 20609 , 170 , 42 , 1 , 1 ,
+535 , 20610 , 169 , 41 , 1 , 1 ,
+535 , 20611 , 169 , 72 , 1 , 1 ,
+535 , 20612 , 169 , 41 , 1 , 1 ,
+535 , 20613 , 167 , 72 , 1 , 1 ,
+535 , 20614 , 124 , 41 , 1 , 1 ,
+535 , 20615 , 124 , 41 , 1 , 1 ,
+535 , 20616 , 124 , 41 , 1 , 1 ,
+535 , 20617 , 124 , 41 , 1 , 1 ,
+535 , 20618 , 123 , 52 , 1 , 1 ,
+535 , 20619 , 123 , 52 , 1 , 1 ,
+535 , 20620 , 123 , 52 , 1 , 1 ,
+535 , 20621 , 123 , 52 , 1 , 1 ,
+535 , 20622 , 122 , 52 , 1 , 1 ,
+535 , 20623 , 122 , 52 , 1 , 1 ,
+535 , 20624 , 121 , 52 , 1 , 1 ,
+535 , 20625 , 121 , 53 , 1 , 1 ,
+535 , 20626 , 121 , 53 , 1 , 1 ,
+535 , 20627 , 121 , 53 , 1 , 1 ,
+535 , 20628 , 121 , 52 , 1 , 1 ,
+535 , 20629 , 121 , 52 , 1 , 1 ,
+535 , 20630 , 121 , 52 , 1 , 1 ,
+535 , 20631 , 121 , 52 , 1 , 1 ,
+535 , 20632 , 121 , 52 , 1 , 1 ,
+535 , 20633 , 121 , 52 , 1 , 1 ,
+535 , 20634 , 118 , 105 , 1 , 1 ,
+535 , 20635 , 117 , 94 , 1 , 1 ,
+535 , 20636 , 117 , 95 , 1 , 1 ,
+535 , 20637 , 117 , 95 , 1 , 1 ,
+535 , 20638 , 117 , 94 , 1 , 1 ,
+535 , 20639 , 117 , 94 , 1 , 1 ,
+535 , 20640 , 117 , 95 , 1 , 1 ,
+535 , 20641 , 117 , 94 , 1 , 1 ,
+535 , 20642 , 117 , 94 , 1 , 1 ,
+535 , 20643 , 117 , 94 , 1 , 1 ,
+535 , 20644 , 117 , 94 , 1 , 1 ,
+535 , 20645 , 115 , 51 , 1 , 1 ,
+535 , 20646 , 113 , 53 , 1 , 1 ,
+535 , 20647 , 109 , 62 , 1 , 1 ,
+535 , 20648 , 109 , 52 , 1 , 1 ,
+535 , 20649 , 109 , 52 , 1 , 1 ,
+535 , 20650 , 109 , 62 , 1 , 1 ,
+535 , 20651 , 108 , 62 , 1 , 1 ,
+535 , 20652 , 108 , 62 , 1 , 1 ,
+535 , 20653 , 108 , 52 , 1 , 1 ,
+535 , 20654 , 107 , 62 , 1 , 1 ,
+535 , 20655 , 107 , 62 , 1 , 1 ,
+535 , 20656 , 107 , 62 , 1 , 1 ,
+535 , 20657 , 107 , 52 , 1 , 1 ,
+535 , 20658 , 107 , 52 , 1 , 1 ,
+535 , 20659 , 107 , 62 , 1 , 1 ,
+535 , 20660 , 106 , 62 , 1 , 1 ,
+535 , 20661 , 105 , 52 , 1 , 1 ,
+535 , 20662 , 105 , 62 , 1 , 1 ,
+535 , 20663 , 104 , 62 , 1 , 1 ,
+535 , 20664 , 104 , 52 , 1 , 1 ,
+535 , 20665 , 104 , 52 , 1 , 1 ,
+535 , 20666 , 104 , 62 , 1 , 1 ,
+535 , 20667 , 103 , 62 , 1 , 1 ,
+535 , 20668 , 103 , 62 , 1 , 1 ,
+535 , 20669 , 103 , 52 , 1 , 1 ,
+535 , 20670 , 103 , 62 , 1 , 1 ,
+535 , 20671 , 103 , 72 , 1 , 1 ,
+535 , 20672 , 103 , 52 , 1 , 1 ,
+535 , 20673 , 103 , 73 , 1 , 1 ,
+535 , 20674 , 103 , 73 , 1 , 1 ,
+535 , 20675 , 103 , 73 , 1 , 1 ,
+535 , 20676 , 103 , 72 , 1 , 1 ,
+535 , 20677 , 103 , 62 , 1 , 1 ,
+535 , 20678 , 103 , 72 , 1 , 1 ,
+535 , 20679 , 102 , 72 , 1 , 1 ,
+535 , 20680 , 102 , 52 , 1 , 1 ,
+535 , 20681 , 102 , 72 , 1 , 1 ,
+535 , 20682 , 102 , 62 , 1 , 1 ,
+535 , 20683 , 100 , 62 , 1 , 1 ,
+535 , 20684 , 100 , 62 , 1 , 1 ,
+535 , 20685 , 100 , 62 , 1 , 1 ,
+535 , 20686 , 93 , 88 , 1 , 1 ,
+535 , 20687 , 93 , 87 , 1 , 1 ,
+535 , 20688 , 90 , 89 , 1 , 1 ,
+535 , 20689 , 89 , 88 , 1 , 1 ,
+535 , 20690 , 88 , 75 , 1 , 1 ,
+535 , 20691 , 87 , 74 , 1 , 1 ,
+535 , 20692 , 64 , 52 , 1 , 1 ,
+535 , 20693 , 64 , 52 , 1 , 1 ,
+535 , 20694 , 64 , 52 , 1 , 1 ,
+535 , 20695 , 63 , 52 , 1 , 1 ,
+535 , 20696 , 63 , 52 , 1 , 1 ,
+535 , 20697 , 63 , 41 , 1 , 1 ,
+535 , 20698 , 63 , 41 , 1 , 1 ,
+535 , 20699 , 63 , 52 , 1 , 1 ,
+535 , 20700 , 63 , 52 , 1 , 1 ,
+535 , 20701 , 62 , 52 , 1 , 1 ,
+535 , 20702 , 61 , 52 , 1 , 1 ,
+535 , 20703 , 61 , 52 , 1 , 1 ,
+535 , 20704 , 61 , 52 , 1 , 1 ,
+535 , 20705 , 61 , 52 , 1 , 1 ,
+535 , 20706 , 61 , 52 , 1 , 1 ,
+535 , 20707 , 61 , 52 , 1 , 1 ,
+535 , 20708 , 61 , 41 , 1 , 1 ,
+535 , 20709 , 61 , 31 , 1 , 1 ,
+535 , 20710 , 61 , 52 , 1 , 1 ,
+535 , 20711 , 61 , 41 , 1 , 1 ,
+535 , 20712 , 18 , 347 , 1 , 1 ,
+535 , 20713 , 18 , 337 , 1 , 1 ,
+535 , 20714 , 18 , 336 , 1 , 1 ,
+535 , 20715 , 18 , 337 , 1 , 1 ,
+535 , 20716 , 18 , 336 , 1 , 1 ,
+535 , 20717 , 18 , 326 , 1 , 1 ,
+535 , 20718 , 18 , 337 , 1 , 1 ,
+535 , 20719 , 18 , 337 , 1 , 1 ,
+535 , 20720 , 18 , 317 , 1 , 1 ,
+535 , 20721 , 18 , 306 , 1 , 1 ,
+535 , 20722 , 18 , 306 , 1 , 1 ,
+535 , 20723 , 18 , 296 , 1 , 1 ,
+535 , 20724 , 18 , 286 , 1 , 1 ,
+535 , 20725 , 18 , 276 , 1 , 1 ,
+535 , 20726 , 18 , 266 , 1 , 1 ,
+535 , 20727 , 18 , 256 , 1 , 1 ,
+535 , 20728 , 10 , 126 , 1 , 1 ,
+535 , 20729 , 10 , 116 , 1 , 1 ,
+535 , 20730 , 10 , 115 , 1 , 1 ,
+535 , 20731 , 10 , 105 , 1 , 1 ,
+535 , 20732 , 10 , 105 , 1 , 1 ,
+535 , 20733 , 10 , 105 , 1 , 1 ,
+535 , 20734 , 10 , 105 , 1 , 1 ,
+535 , 20735 , 10 , 105 , 1 , 1 ,
+535 , 20736 , 10 , 105 , 1 , 1 ,
+535 , 20737 , 10 , 105 , 1 , 1 ,
+535 , 20738 , 10 , 105 , 1 , 1 ,
+535 , 20739 , 10 , 105 , 1 , 1 ,
+535 , 20740 , 10 , 95 , 1 , 1 ,
+535 , 20741 , 10 , 95 , 1 , 1 ,
+535 , 20742 , 10 , 95 , 1 , 1 ,
+535 , 20743 , 10 , 105 , 1 , 1 ,
+535 , 20744 , 7 , 77 , 1 , 1 ,
+535 , 20745 , 7 , 79 , 1 , 1 ,
+535 , 20746 , 7 , 79 , 1 , 1 ,
+535 , 20747 , 7 , 76 , 1 , 1 ,
+535 , 20748 , 7 , 75 , 1 , 1 ,
+535 , 20749 , 7 , 76 , 1 , 1 ,
+535 , 20750 , 26 , 62 , 1 , 1 ,
+535 , 20751 , 26 , 62 , 1 , 1 ,
+535 , 20752 , 25 , 62 , 1 , 1 ,
+535 , 20753 , 25 , 62 , 1 , 1 ,
+535 , 20754 , 25 , 62 , 1 , 1 ,
+535 , 20755 , 24 , 63 , 1 , 1 ,
+535 , 20756 , 24 , 62 , 1 , 1 ,
+535 , 20757 , 24 , 63 , 1 , 1 ,
+535 , 20758 , 21 , 72 , 1 , 1 ,
+535 , 20759 , 20 , 72 , 1 , 1 ,
+535 , 20760 , 20 , 72 , 1 , 1 ,
+535 , 20761 , 20 , 72 , 1 , 1 ,
+535 , 20762 , 20 , 72 , 1 , 1 ,
+535 , 20763 , 20 , 72 , 1 , 1 ,
+535 , 20764 , 19 , 72 , 1 , 1 ,
+535 , 20765 , 18 , 72 , 1 , 1 ,
+535 , 20766 , 18 , 72 , 1 , 1 ,
+535 , 20767 , 18 , 72 , 1 , 1 ,
+535 , 20768 , 15 , 73 , 1 , 1 ,
+535 , 20769 , 15 , 72 , 1 , 1 ,
+535 , 20770 , 15 , 72 , 1 , 1 ,
+535 , 20771 , 14 , 72 , 1 , 1 ,
+535 , 20772 , 14 , 73 , 1 , 1 ,
+535 , 20773 , 14 , 72 , 1 , 1 ,
+535 , 20774 , 13 , 73 , 1 , 1 ,
+535 , 20775 , 13 , 73 , 1 , 1 ,
+535 , 20776 , 13 , 72 , 1 , 1 ,
+535 , 20777 , 12 , 72 , 1 , 1 ,
+535 , 20778 , 9 , 82 , 1 , 1 ,
+535 , 20779 , 8 , 72 , 1 , 1 ,
+535 , 20780 , 8 , 82 , 1 , 1 ,
+535 , 20781 , 8 , 72 , 1 , 1 ,
+535 , 20782 , 8 , 82 , 1 , 1 ,
+535 , 20783 , 8 , 72 , 1 , 1 ,
+535 , 20784 , 8 , 73 , 1 , 1 ,
+535 , 20785 , 8 , 72 , 1 , 1 ,
+535 , 20786 , 8 , 83 , 1 , 1 ,
+535 , 20787 , 7 , 73 , 1 , 1 ,
+535 , 20788 , 6 , 83 , 1 , 1 ,
+535 , 20789 , 6 , 83 , 1 , 1 ,
+535 , 20790 , 6 , 83 , 1 , 1 ,
+535 , 20791 , 6 , 83 , 1 , 1 ,
+535 , 20792 , 6 , 73 , 1 , 1 ,
+535 , 20793 , 6 , 72 , 1 , 1 ,
+535 , 20794 , 5 , 72 , 1 , 1 ,
+535 , 20795 , 5 , 83 , 1 , 1 ,
+535 , 20796 , 5 , 82 , 1 , 1 ,
+535 , 20797 , 5 , 82 , 1 , 1 ,
+535 , 20798 , 3 , 72 , 1 , 1 ,
+535 , 20799 , 3 , 72 , 1 , 1 ,
+535 , 20800 , 3 , 82 , 1 , 1 ,
+535 , 20801 , 3 , 82 , 1 , 1 ,
+535 , 20802 , 3 , 72 , 1 , 1 ,
+535 , 20803 , 3 , 72 , 1 , 1 ,
+535 , 20804 , 3 , 72 , 1 , 1 ,
+535 , 20805 , 3 , 72 , 1 , 1 ,
+535 , 20806 , 3 , 72 , 1 , 1 ,
+535 , 20807 , 3 , 82 , 1 , 1 ,
+535 , 20808 , 390 , 143 , 1 , 1 , 20686 20697 20625 20770 20652 20758 20642 20715 20716 20663 20751 20722 20706 20785 20736 20720 20765 20680 20651 20677 20704 20700 20643 20738 20688 20648 20728 20748 20672 20675 20769 20796 20617 20776 20747 20623 20804 20667 20645 20753 20712 20699 20709 20782 20657 20731 20713 20629 20807 20783 20687 20778 20741 20805 20650 20726 20721 20705 20612 20656 20641 20806 20757 20781 20676 20662 20801 20734 20701 20661 20666 20683 20771 20717 20749 20692 20702 20742 20622 20797 20670 20779 20707 20679 20681 20669 20632 20744 20665 20613 20689 20659 20764 20719 20611 20787 20760 20784 20792 20619 20695 20729 20793 20723 20628 20646 20735 20655 20638 20639 20631 20647 20732 20766 20608 20799 20618 20745 20733 20803 20660 20774 20788 20627 20743 20640 20727 20756 20626 20653 20780 20609 20714 20795 20654 20614 20668 20746 20630 20710 20752 20730 20739 20703 20724 20750 20691 20789 20775 20718 20678 20673 20761 20698 20802 20798 20772 20636 20674 20693 20768 20684 20671 20664 20621 20767 20790 20754 20777 20791 20690 20658 20685 20615 20634 20725 20759 20794 20610 20635 20762 20620 20644 20800 20763 20624 20711 20740 20708 20649 20696 20737 20755 20633 20773 20637 20786 20694 20682 20616
+536 , 20809 , 231 , 41 , 1 , 1 ,
+536 , 20810 , 231 , 41 , 1 , 1 ,
+536 , 20811 , 231 , 41 , 1 , 1 ,
+536 , 20812 , 231 , 41 , 1 , 1 ,
+536 , 20813 , 231 , 41 , 1 , 1 ,
+536 , 20814 , 229 , 41 , 1 , 1 ,
+536 , 20815 , 225 , 52 , 1 , 1 ,
+536 , 20816 , 225 , 41 , 1 , 1 ,
+536 , 20817 , 225 , 34 , 1 , 1 ,
+536 , 20818 , 224 , 52 , 1 , 1 ,
+536 , 20819 , 224 , 52 , 1 , 1 ,
+536 , 20820 , 224 , 84 , 1 , 1 ,
+536 , 20821 , 224 , 84 , 1 , 1 ,
+536 , 20822 , 224 , 33 , 1 , 1 ,
+536 , 20823 , 224 , 84 , 1 , 1 ,
+536 , 20824 , 224 , 85 , 1 , 1 ,
+536 , 20825 , 223 , 84 , 1 , 1 ,
+536 , 20826 , 223 , 84 , 1 , 1 ,
+536 , 20827 , 223 , 84 , 1 , 1 ,
+536 , 20828 , 223 , 34 , 1 , 1 ,
+536 , 20829 , 223 , 41 , 1 , 1 ,
+536 , 20830 , 222 , 41 , 1 , 1 ,
+536 , 20831 , 221 , 31 , 1 , 1 ,
+536 , 20832 , 220 , 32 , 1 , 1 ,
+536 , 20833 , 220 , 73 , 1 , 1 ,
+536 , 20834 , 220 , 32 , 1 , 1 ,
+536 , 20835 , 219 , 32 , 1 , 1 ,
+536 , 20836 , 219 , 32 , 1 , 1 ,
+536 , 20837 , 217 , 31 , 1 , 1 ,
+536 , 20838 , 217 , 31 , 1 , 1 ,
+536 , 20839 , 217 , 34 , 1 , 1 ,
+536 , 20840 , 215 , 31 , 1 , 1 ,
+536 , 20841 , 213 , 74 , 1 , 1 ,
+536 , 20842 , 213 , 74 , 1 , 1 ,
+536 , 20843 , 211 , 31 , 1 , 1 ,
+536 , 20844 , 210 , 31 , 1 , 1 ,
+536 , 20845 , 210 , 31 , 1 , 1 ,
+536 , 20846 , 210 , 31 , 1 , 1 ,
+536 , 20847 , 210 , 32 , 1 , 1 ,
+536 , 20848 , 208 , 31 , 1 , 1 ,
+536 , 20849 , 208 , 31 , 1 , 1 ,
+536 , 20850 , 208 , 31 , 1 , 1 ,
+536 , 20851 , 203 , 134 , 1 , 1 ,
+536 , 20852 , 203 , 134 , 1 , 1 ,
+536 , 20853 , 203 , 134 , 1 , 1 ,
+536 , 20854 , 203 , 63 , 1 , 1 ,
+536 , 20855 , 203 , 134 , 1 , 1 ,
+536 , 20856 , 137 , 63 , 1 , 1 ,
+536 , 20857 , 137 , 63 , 1 , 1 ,
+536 , 20858 , 203 , 63 , 1 , 1 ,
+536 , 20859 , 203 , 63 , 1 , 1 ,
+536 , 20860 , 203 , 63 , 1 , 1 ,
+536 , 20861 , 203 , 64 , 1 , 1 ,
+536 , 20862 , 203 , 64 , 1 , 1 ,
+536 , 20863 , 193 , 144 , 1 , 1 ,
+536 , 20864 , 190 , 142 , 1 , 1 ,
+536 , 20865 , 190 , 143 , 1 , 1 ,
+536 , 20866 , 184 , 143 , 1 , 1 ,
+536 , 20867 , 184 , 143 , 1 , 1 ,
+536 , 20868 , 184 , 144 , 1 , 1 ,
+536 , 20869 , 183 , 143 , 1 , 1 ,
+536 , 20870 , 182 , 32 , 1 , 1 ,
+536 , 20871 , 180 , 102 , 1 , 1 ,
+536 , 20872 , 180 , 102 , 1 , 1 ,
+536 , 20873 , 180 , 102 , 1 , 1 ,
+536 , 20874 , 190 , 42 , 1 , 1 ,
+536 , 20875 , 190 , 42 , 1 , 1 ,
+536 , 20876 , 190 , 42 , 1 , 1 ,
+536 , 20877 , 188 , 31 , 1 , 1 ,
+536 , 20878 , 187 , 41 , 1 , 1 ,
+536 , 20879 , 187 , 41 , 1 , 1 ,
+536 , 20880 , 186 , 42 , 1 , 1 ,
+536 , 20881 , 186 , 42 , 1 , 1 ,
+536 , 20882 , 186 , 41 , 1 , 1 ,
+536 , 20883 , 186 , 41 , 1 , 1 ,
+536 , 20884 , 185 , 41 , 1 , 1 ,
+536 , 20885 , 185 , 52 , 1 , 1 ,
+536 , 20886 , 185 , 52 , 1 , 1 ,
+536 , 20887 , 183 , 52 , 1 , 1 ,
+536 , 20888 , 183 , 41 , 1 , 1 ,
+536 , 20889 , 183 , 31 , 1 , 1 ,
+536 , 20890 , 182 , 41 , 1 , 1 ,
+536 , 20891 , 182 , 41 , 1 , 1 ,
+536 , 20892 , 182 , 52 , 1 , 1 ,
+536 , 20893 , 182 , 52 , 1 , 1 ,
+536 , 20894 , 182 , 52 , 1 , 1 ,
+536 , 20895 , 182 , 42 , 1 , 1 ,
+536 , 20896 , 182 , 52 , 1 , 1 ,
+536 , 20897 , 180 , 41 , 1 , 1 ,
+536 , 20898 , 180 , 41 , 1 , 1 ,
+536 , 20899 , 179 , 62 , 1 , 1 ,
+536 , 20900 , 179 , 62 , 1 , 1 ,
+536 , 20901 , 179 , 52 , 1 , 1 ,
+536 , 20902 , 179 , 41 , 1 , 1 ,
+536 , 20903 , 179 , 42 , 1 , 1 ,
+536 , 20904 , 179 , 41 , 1 , 1 ,
+536 , 20905 , 179 , 41 , 1 , 1 ,
+536 , 20906 , 179 , 41 , 1 , 1 ,
+536 , 20907 , 176 , 34 , 1 , 1 ,
+536 , 20908 , 175 , 41 , 1 , 1 ,
+536 , 20909 , 175 , 44 , 1 , 1 ,
+536 , 20910 , 174 , 44 , 1 , 1 ,
+536 , 20911 , 173 , 82 , 1 , 1 ,
+536 , 20912 , 173 , 92 , 1 , 1 ,
+536 , 20913 , 174 , 52 , 1 , 1 ,
+536 , 20914 , 173 , 41 , 1 , 1 ,
+536 , 20915 , 173 , 41 , 1 , 1 ,
+536 , 20916 , 173 , 41 , 1 , 1 ,
+536 , 20917 , 173 , 41 , 1 , 1 ,
+536 , 20918 , 173 , 41 , 1 , 1 ,
+536 , 20919 , 173 , 41 , 1 , 1 ,
+536 , 20920 , 173 , 41 , 1 , 1 ,
+536 , 20921 , 173 , 41 , 1 , 1 ,
+536 , 20922 , 172 , 43 , 1 , 1 ,
+536 , 20923 , 171 , 43 , 1 , 1 ,
+536 , 20924 , 170 , 41 , 1 , 1 ,
+536 , 20925 , 170 , 41 , 1 , 1 ,
+536 , 20926 , 169 , 41 , 1 , 1 ,
+536 , 20927 , 169 , 41 , 1 , 1 ,
+536 , 20928 , 169 , 52 , 1 , 1 ,
+536 , 20929 , 168 , 53 , 1 , 1 ,
+536 , 20930 , 168 , 41 , 1 , 1 ,
+536 , 20931 , 168 , 41 , 1 , 1 ,
+536 , 20932 , 168 , 41 , 1 , 1 ,
+536 , 20933 , 168 , 31 , 1 , 1 ,
+536 , 20934 , 167 , 41 , 1 , 1 ,
+536 , 20935 , 167 , 41 , 1 , 1 ,
+536 , 20936 , 166 , 41 , 1 , 1 ,
+536 , 20937 , 166 , 41 , 1 , 1 ,
+536 , 20938 , 163 , 41 , 1 , 1 ,
+536 , 20939 , 153 , 41 , 1 , 1 ,
+536 , 20940 , 149 , 41 , 1 , 1 ,
+536 , 20941 , 149 , 52 , 1 , 1 ,
+536 , 20942 , 148 , 52 , 1 , 1 ,
+536 , 20943 , 147 , 53 , 1 , 1 ,
+536 , 20944 , 146 , 52 , 1 , 1 ,
+536 , 20945 , 145 , 52 , 1 , 1 ,
+536 , 20946 , 145 , 52 , 1 , 1 ,
+536 , 20947 , 144 , 52 , 1 , 1 ,
+536 , 20948 , 144 , 52 , 1 , 1 ,
+536 , 20949 , 144 , 52 , 1 , 1 ,
+536 , 20950 , 143 , 52 , 1 , 1 ,
+536 , 20951 , 143 , 52 , 1 , 1 ,
+536 , 20952 , 143 , 52 , 1 , 1 ,
+536 , 20953 , 143 , 52 , 1 , 1 ,
+536 , 20954 , 143 , 52 , 1 , 1 ,
+536 , 20955 , 142 , 52 , 1 , 1 ,
+536 , 20956 , 142 , 52 , 1 , 1 ,
+536 , 20957 , 142 , 52 , 1 , 1 ,
+536 , 20958 , 142 , 52 , 1 , 1 ,
+536 , 20959 , 142 , 52 , 1 , 1 ,
+536 , 20960 , 140 , 51 , 1 , 1 ,
+536 , 20961 , 140 , 51 , 1 , 1 ,
+536 , 20962 , 140 , 51 , 1 , 1 ,
+536 , 20963 , 140 , 51 , 1 , 1 ,
+536 , 20964 , 139 , 41 , 1 , 1 ,
+536 , 20965 , 139 , 32 , 1 , 1 ,
+536 , 20966 , 139 , 31 , 1 , 1 ,
+536 , 20967 , 139 , 31 , 1 , 1 ,
+536 , 20968 , 138 , 41 , 1 , 1 ,
+536 , 20969 , 138 , 62 , 1 , 1 ,
+536 , 20970 , 137 , 43 , 1 , 1 ,
+536 , 20971 , 137 , 31 , 1 , 1 ,
+536 , 20972 , 137 , 63 , 1 , 1 ,
+536 , 20973 , 137 , 63 , 1 , 1 ,
+536 , 20974 , 137 , 63 , 1 , 1 ,
+536 , 20975 , 285 , 21 , 1 , 1 ,
+536 , 20976 , 285 , 21 , 1 , 1 ,
+536 , 20977 , 284 , 31 , 1 , 1 ,
+536 , 20978 , 283 , 31 , 1 , 1 ,
+536 , 20979 , 283 , 31 , 1 , 1 ,
+536 , 20980 , 283 , 31 , 1 , 1 ,
+536 , 20981 , 283 , 31 , 1 , 1 ,
+536 , 20982 , 281 , 31 , 1 , 1 ,
+536 , 20983 , 278 , 71 , 1 , 1 ,
+536 , 20984 , 277 , 31 , 1 , 1 ,
+536 , 20985 , 274 , 31 , 1 , 1 ,
+536 , 20986 , 273 , 31 , 1 , 1 ,
+536 , 20987 , 269 , 74 , 1 , 1 ,
+536 , 20988 , 269 , 84 , 1 , 1 ,
+536 , 20989 , 269 , 73 , 1 , 1 ,
+536 , 20990 , 269 , 74 , 1 , 1 ,
+536 , 20991 , 269 , 73 , 1 , 1 ,
+536 , 20992 , 269 , 74 , 1 , 1 ,
+536 , 20993 , 268 , 81 , 1 , 1 ,
+536 , 20994 , 137 , 74 , 1 , 1 ,
+536 , 20995 , 137 , 74 , 1 , 1 ,
+536 , 20996 , 137 , 84 , 1 , 1 ,
+536 , 20997 , 137 , 84 , 1 , 1 ,
+536 , 20998 , 137 , 84 , 1 , 1 ,
+536 , 20999 , 136 , 31 , 1 , 1 ,
+536 , 21000 , 136 , 31 , 1 , 1 ,
+536 , 21001 , 135 , 32 , 1 , 1 ,
+536 , 21002 , 135 , 31 , 1 , 1 ,
+536 , 21003 , 133 , 41 , 1 , 1 ,
+536 , 21004 , 131 , 43 , 1 , 1 ,
+536 , 21005 , 126 , 95 , 1 , 1 ,
+536 , 21006 , 126 , 95 , 1 , 1 ,
+536 , 21007 , 126 , 95 , 1 , 1 ,
+536 , 21008 , 125 , 44 , 1 , 1 ,
+536 , 21009 , 125 , 45 , 1 , 1 ,
+536 , 21010 , 124 , 43 , 1 , 1 ,
+536 , 21011 , 123 , 43 , 1 , 1 ,
+536 , 21012 , 121 , 94 , 1 , 1 ,
+536 , 21013 , 121 , 42 , 1 , 1 ,
+536 , 21014 , 121 , 42 , 1 , 1 ,
+536 , 21015 , 121 , 42 , 1 , 1 ,
+536 , 21016 , 121 , 42 , 1 , 1 ,
+536 , 21017 , 121 , 42 , 1 , 1 ,
+536 , 21018 , 121 , 41 , 1 , 1 ,
+536 , 21019 , 121 , 41 , 1 , 1 ,
+536 , 21020 , 121 , 41 , 1 , 1 ,
+536 , 21021 , 121 , 41 , 1 , 1 ,
+536 , 21022 , 121 , 41 , 1 , 1 ,
+536 , 21023 , 119 , 41 , 1 , 1 ,
+536 , 21024 , 119 , 41 , 1 , 1 ,
+536 , 21025 , 119 , 41 , 1 , 1 ,
+536 , 21026 , 119 , 41 , 1 , 1 ,
+536 , 21027 , 119 , 41 , 1 , 1 ,
+536 , 21028 , 119 , 41 , 1 , 1 ,
+536 , 21029 , 119 , 31 , 1 , 1 ,
+536 , 21030 , 119 , 41 , 1 , 1 ,
+536 , 21031 , 119 , 42 , 1 , 1 ,
+536 , 21032 , 119 , 42 , 1 , 1 ,
+536 , 21033 , 118 , 41 , 1 , 1 ,
+536 , 21034 , 118 , 41 , 1 , 1 ,
+536 , 21035 , 117 , 41 , 1 , 1 ,
+536 , 21036 , 117 , 41 , 1 , 1 ,
+536 , 21037 , 117 , 41 , 1 , 1 ,
+536 , 21038 , 115 , 41 , 1 , 1 ,
+536 , 21039 , 115 , 42 , 1 , 1 ,
+536 , 21040 , 115 , 42 , 1 , 1 ,
+536 , 21041 , 115 , 42 , 1 , 1 ,
+536 , 21042 , 114 , 41 , 1 , 1 ,
+536 , 21043 , 114 , 41 , 1 , 1 ,
+536 , 21044 , 113 , 41 , 1 , 1 ,
+536 , 21045 , 113 , 41 , 1 , 1 ,
+536 , 21046 , 113 , 21 , 1 , 1 ,
+536 , 21047 , 111 , 31 , 1 , 1 ,
+536 , 21048 , 111 , 21 , 1 , 1 ,
+536 , 21049 , 110 , 21 , 1 , 1 ,
+536 , 21050 , 108 , 21 , 1 , 1 ,
+536 , 21051 , 107 , 31 , 1 , 1 ,
+536 , 21052 , 106 , 31 , 1 , 1 ,
+536 , 21053 , 105 , 31 , 1 , 1 ,
+536 , 21054 , 105 , 31 , 1 , 1 ,
+536 , 21055 , 103 , 31 , 1 , 1 ,
+536 , 21056 , 102 , 31 , 1 , 1 ,
+536 , 21057 , 102 , 31 , 1 , 1 ,
+536 , 21058 , 102 , 33 , 1 , 1 ,
+536 , 21059 , 96 , 33 , 1 , 1 ,
+536 , 21060 , 91 , 41 , 1 , 1 ,
+536 , 21061 , 91 , 41 , 1 , 1 ,
+536 , 21062 , 91 , 31 , 1 , 1 ,
+536 , 21063 , 90 , 42 , 1 , 1 ,
+536 , 21064 , 90 , 31 , 1 , 1 ,
+536 , 21065 , 90 , 21 , 1 , 1 ,
+536 , 21066 , 90 , 31 , 1 , 1 ,
+536 , 21067 , 89 , 33 , 1 , 1 ,
+536 , 21068 , 87 , 41 , 1 , 1 ,
+536 , 21069 , 87 , 41 , 1 , 1 ,
+536 , 21070 , 87 , 31 , 1 , 1 ,
+536 , 21071 , 86 , 42 , 1 , 1 ,
+536 , 21072 , 86 , 31 , 1 , 1 ,
+536 , 21073 , 86 , 41 , 1 , 1 ,
+536 , 21074 , 85 , 42 , 1 , 1 ,
+536 , 21075 , 84 , 41 , 1 , 1 ,
+536 , 21076 , 83 , 41 , 1 , 1 ,
+536 , 21077 , 83 , 31 , 1 , 1 ,
+536 , 21078 , 83 , 41 , 1 , 1 ,
+536 , 21079 , 83 , 41 , 1 , 1 ,
+536 , 21080 , 82 , 31 , 1 , 1 ,
+536 , 21081 , 82 , 31 , 1 , 1 ,
+536 , 21082 , 82 , 52 , 1 , 1 ,
+536 , 21083 , 81 , 52 , 1 , 1 ,
+536 , 21084 , 80 , 52 , 1 , 1 ,
+536 , 21085 , 80 , 52 , 1 , 1 ,
+536 , 21086 , 80 , 41 , 1 , 1 ,
+536 , 21087 , 80 , 41 , 1 , 1 ,
+536 , 21088 , 80 , 41 , 1 , 1 ,
+536 , 21089 , 80 , 41 , 1 , 1 ,
+536 , 21090 , 80 , 52 , 1 , 1 ,
+536 , 21091 , 80 , 52 , 1 , 1 ,
+536 , 21092 , 78 , 85 , 1 , 1 ,
+536 , 21093 , 77 , 31 , 1 , 1 ,
+536 , 21094 , 77 , 31 , 1 , 1 ,
+536 , 21095 , 76 , 41 , 1 , 1 ,
+536 , 21096 , 76 , 41 , 1 , 1 ,
+536 , 21097 , 75 , 41 , 1 , 1 ,
+536 , 21098 , 75 , 31 , 1 , 1 ,
+536 , 21099 , 74 , 42 , 1 , 1 ,
+536 , 21100 , 73 , 31 , 1 , 1 ,
+536 , 21101 , 73 , 31 , 1 , 1 ,
+536 , 21102 , 71 , 42 , 1 , 1 ,
+536 , 21103 , 69 , 42 , 1 , 1 ,
+536 , 21104 , 69 , 42 , 1 , 1 ,
+536 , 21105 , 69 , 65 , 1 , 1 ,
+536 , 21106 , 69 , 76 , 1 , 1 ,
+536 , 21107 , 69 , 66 , 1 , 1 ,
+536 , 21108 , 69 , 66 , 1 , 1 ,
+536 , 21109 , 69 , 66 , 1 , 1 ,
+536 , 21110 , 68 , 66 , 1 , 1 ,
+536 , 21111 , 68 , 66 , 1 , 1 ,
+536 , 21112 , 68 , 66 , 1 , 1 ,
+536 , 21113 , 68 , 66 , 1 , 1 ,
+536 , 21114 , 68 , 56 , 1 , 1 ,
+536 , 21115 , 68 , 66 , 1 , 1 ,
+536 , 21116 , 68 , 56 , 1 , 1 ,
+536 , 21117 , 68 , 66 , 1 , 1 ,
+536 , 21118 , 68 , 56 , 1 , 1 ,
+536 , 21119 , 66 , 31 , 1 , 1 ,
+536 , 21120 , 266 , 32 , 1 , 1 ,
+536 , 21121 , 265 , 32 , 1 , 1 ,
+536 , 21122 , 264 , 32 , 1 , 1 ,
+536 , 21123 , 263 , 31 , 1 , 1 ,
+536 , 21124 , 262 , 31 , 1 , 1 ,
+536 , 21125 , 262 , 31 , 1 , 1 ,
+536 , 21126 , 260 , 32 , 1 , 1 ,
+536 , 21127 , 259 , 31 , 1 , 1 ,
+536 , 21128 , 259 , 31 , 1 , 1 ,
+536 , 21129 , 259 , 32 , 1 , 1 ,
+536 , 21130 , 256 , 41 , 1 , 1 ,
+536 , 21131 , 255 , 41 , 1 , 1 ,
+536 , 21132 , 255 , 41 , 1 , 1 ,
+536 , 21133 , 253 , 44 , 1 , 1 ,
+536 , 21134 , 253 , 41 , 1 , 1 ,
+536 , 21135 , 253 , 41 , 1 , 1 ,
+536 , 21136 , 252 , 41 , 1 , 1 ,
+536 , 21137 , 252 , 41 , 1 , 1 ,
+536 , 21138 , 252 , 52 , 1 , 1 ,
+536 , 21139 , 252 , 41 , 1 , 1 ,
+536 , 21140 , 252 , 41 , 1 , 1 ,
+536 , 21141 , 250 , 41 , 1 , 1 ,
+536 , 21142 , 242 , 52 , 1 , 1 ,
+536 , 21143 , 242 , 52 , 1 , 1 ,
+536 , 21144 , 242 , 52 , 1 , 1 ,
+536 , 21145 , 241 , 41 , 1 , 1 ,
+536 , 21146 , 241 , 52 , 1 , 1 ,
+536 , 21147 , 241 , 52 , 1 , 1 ,
+536 , 21148 , 241 , 52 , 1 , 1 ,
+536 , 21149 , 241 , 52 , 1 , 1 ,
+536 , 21150 , 241 , 52 , 1 , 1 ,
+536 , 21151 , 241 , 52 , 1 , 1 ,
+536 , 21152 , 239 , 52 , 1 , 1 ,
+536 , 21153 , 239 , 52 , 1 , 1 ,
+536 , 21154 , 239 , 52 , 1 , 1 ,
+536 , 21155 , 239 , 41 , 1 , 1 ,
+536 , 21156 , 239 , 41 , 1 , 1 ,
+536 , 21157 , 239 , 62 , 1 , 1 ,
+536 , 21158 , 239 , 52 , 1 , 1 ,
+536 , 21159 , 239 , 52 , 1 , 1 ,
+536 , 21160 , 239 , 62 , 1 , 1 ,
+536 , 21161 , 239 , 41 , 1 , 1 ,
+536 , 21162 , 238 , 41 , 1 , 1 ,
+536 , 21163 , 238 , 41 , 1 , 1 ,
+536 , 21164 , 237 , 41 , 1 , 1 ,
+536 , 21165 , 235 , 41 , 1 , 1 ,
+536 , 21166 , 234 , 62 , 1 , 1 ,
+536 , 21167 , 234 , 41 , 1 , 1 ,
+536 , 21168 , 234 , 41 , 1 , 1 ,
+536 , 21169 , 234 , 41 , 1 , 1 ,
+536 , 21170 , 234 , 62 , 1 , 1 ,
+536 , 21171 , 234 , 62 , 1 , 1 ,
+536 , 21172 , 233 , 52 , 1 , 1 ,
+536 , 21173 , 232 , 41 , 1 , 1 ,
+536 , 21174 , 232 , 62 , 1 , 1 ,
+536 , 21175 , 231 , 41 , 1 , 1 ,
+536 , 21176 , 231 , 41 , 1 , 1 ,
+536 , 21177 , 231 , 62 , 1 , 1 ,
+536 , 21178 , 66 , 41 , 1 , 1 ,
+536 , 21179 , 66 , 41 , 1 , 1 ,
+536 , 21180 , 65 , 31 , 1 , 1 ,
+536 , 21181 , 65 , 31 , 1 , 1 ,
+536 , 21182 , 64 , 42 , 1 , 1 ,
+536 , 21183 , 63 , 42 , 1 , 1 ,
+536 , 21184 , 63 , 32 , 1 , 1 ,
+536 , 21185 , 63 , 31 , 1 , 1 ,
+536 , 21186 , 62 , 41 , 1 , 1 ,
+536 , 21187 , 62 , 41 , 1 , 1 ,
+536 , 21188 , 62 , 31 , 1 , 1 ,
+536 , 21189 , 62 , 41 , 1 , 1 ,
+536 , 21190 , 62 , 41 , 1 , 1 ,
+536 , 21191 , 61 , 41 , 1 , 1 ,
+536 , 21192 , 61 , 41 , 1 , 1 ,
+536 , 21193 , 61 , 41 , 1 , 1 ,
+536 , 21194 , 61 , 31 , 1 , 1 ,
+536 , 21195 , 61 , 31 , 1 , 1 ,
+536 , 21196 , 60 , 31 , 1 , 1 ,
+536 , 21197 , 59 , 41 , 1 , 1 ,
+536 , 21198 , 53 , 34 , 1 , 1 ,
+536 , 21199 , 52 , 32 , 1 , 1 ,
+536 , 21200 , 51 , 33 , 1 , 1 ,
+536 , 21201 , 49 , 44 , 1 , 1 ,
+536 , 21202 , 49 , 32 , 1 , 1 ,
+536 , 21203 , 49 , 31 , 1 , 1 ,
+536 , 21204 , 49 , 31 , 1 , 1 ,
+536 , 21205 , 49 , 31 , 1 , 1 ,
+536 , 21206 , 48 , 43 , 1 , 1 ,
+536 , 21207 , 16 , 142 , 1 , 1 ,
+536 , 21208 , 16 , 142 , 1 , 1 ,
+536 , 21209 , 16 , 153 , 1 , 1 ,
+536 , 21210 , 16 , 153 , 1 , 1 ,
+536 , 21211 , 16 , 153 , 1 , 1 ,
+536 , 21212 , 16 , 153 , 1 , 1 ,
+536 , 21213 , 15 , 153 , 1 , 1 ,
+536 , 21214 , 15 , 153 , 1 , 1 ,
+536 , 21215 , 15 , 163 , 1 , 1 ,
+536 , 21216 , 15 , 112 , 1 , 1 ,
+536 , 21217 , 15 , 112 , 1 , 1 ,
+536 , 21218 , 15 , 153 , 1 , 1 ,
+536 , 21219 , 15 , 112 , 1 , 1 ,
+536 , 21220 , 15 , 112 , 1 , 1 ,
+536 , 21221 , 15 , 112 , 1 , 1 ,
+536 , 21222 , 15 , 163 , 1 , 1 ,
+536 , 21223 , 14 , 52 , 1 , 1 ,
+536 , 21224 , 14 , 53 , 1 , 1 ,
+536 , 21225 , 14 , 53 , 1 , 1 ,
+536 , 21226 , 14 , 53 , 1 , 1 ,
+536 , 21227 , 14 , 53 , 1 , 1 ,
+536 , 21228 , 14 , 53 , 1 , 1 ,
+536 , 21229 , 13 , 53 , 1 , 1 ,
+536 , 21230 , 13 , 53 , 1 , 1 ,
+536 , 21231 , 13 , 53 , 1 , 1 ,
+536 , 21232 , 13 , 53 , 1 , 1 ,
+536 , 21233 , 13 , 53 , 1 , 1 ,
+536 , 21234 , 13 , 53 , 1 , 1 ,
+536 , 21235 , 13 , 63 , 1 , 1 ,
+536 , 21236 , 13 , 53 , 1 , 1 ,
+536 , 21237 , 13 , 53 , 1 , 1 ,
+536 , 21238 , 13 , 53 , 1 , 1 ,
+536 , 21239 , 9 , 36 , 1 , 1 ,
+536 , 21240 , 9 , 32 , 1 , 1 ,
+536 , 21241 , 9 , 35 , 1 , 1 ,
+536 , 21242 , 9 , 34 , 1 , 1 ,
+536 , 21243 , 9 , 36 , 1 , 1 ,
+536 , 21244 , 9 , 34 , 1 , 1 ,
+536 , 21245 , 24 , 42 , 1 , 1 ,
+536 , 21246 , 23 , 42 , 1 , 1 ,
+536 , 21247 , 23 , 42 , 1 , 1 ,
+536 , 21248 , 23 , 42 , 1 , 1 ,
+536 , 21249 , 21 , 52 , 1 , 1 ,
+536 , 21250 , 21 , 32 , 1 , 1 ,
+536 , 21251 , 21 , 52 , 1 , 1 ,
+536 , 21252 , 21 , 32 , 1 , 1 ,
+536 , 21253 , 21 , 41 , 1 , 1 ,
+536 , 21254 , 20 , 52 , 1 , 1 ,
+536 , 21255 , 20 , 41 , 1 , 1 ,
+536 , 21256 , 20 , 41 , 1 , 1 ,
+536 , 21257 , 20 , 41 , 1 , 1 ,
+536 , 21258 , 20 , 52 , 1 , 1 ,
+536 , 21259 , 18 , 52 , 1 , 1 ,
+536 , 21260 , 18 , 41 , 1 , 1 ,
+536 , 21261 , 18 , 52 , 1 , 1 ,
+536 , 21262 , 17 , 52 , 1 , 1 ,
+536 , 21263 , 17 , 52 , 1 , 1 ,
+536 , 21264 , 17 , 52 , 1 , 1 ,
+536 , 21265 , 17 , 52 , 1 , 1 ,
+536 , 21266 , 17 , 52 , 1 , 1 ,
+536 , 21267 , 16 , 41 , 1 , 1 ,
+536 , 21268 , 16 , 52 , 1 , 1 ,
+536 , 21269 , 14 , 62 , 1 , 1 ,
+536 , 21270 , 14 , 41 , 1 , 1 ,
+536 , 21271 , 14 , 52 , 1 , 1 ,
+536 , 21272 , 14 , 62 , 1 , 1 ,
+536 , 21273 , 14 , 52 , 1 , 1 ,
+536 , 21274 , 14 , 52 , 1 , 1 ,
+536 , 21275 , 13 , 42 , 1 , 1 ,
+536 , 21276 , 13 , 52 , 1 , 1 ,
+536 , 21277 , 13 , 63 , 1 , 1 ,
+536 , 21278 , 12 , 63 , 1 , 1 ,
+536 , 21279 , 11 , 41 , 1 , 1 ,
+536 , 21280 , 11 , 52 , 1 , 1 ,
+536 , 21281 , 11 , 62 , 1 , 1 ,
+536 , 21282 , 11 , 52 , 1 , 1 ,
+536 , 21283 , 11 , 62 , 1 , 1 ,
+536 , 21284 , 10 , 52 , 1 , 1 ,
+536 , 21285 , 10 , 62 , 1 , 1 ,
+536 , 21286 , 10 , 41 , 1 , 1 ,
+536 , 21287 , 10 , 41 , 1 , 1 ,
+536 , 21288 , 10 , 41 , 1 , 1 ,
+536 , 21289 , 8 , 62 , 1 , 1 ,
+536 , 21290 , 8 , 42 , 1 , 1 ,
+536 , 21291 , 8 , 41 , 1 , 1 ,
+536 , 21292 , 8 , 42 , 1 , 1 ,
+536 , 21293 , 8 , 52 , 1 , 1 ,
+536 , 21294 , 8 , 41 , 1 , 1 ,
+536 , 21295 , 7 , 41 , 1 , 1 ,
+536 , 21296 , 7 , 41 , 1 , 1 ,
+536 , 21297 , 7 , 42 , 1 , 1 ,
+536 , 21298 , 7 , 42 , 1 , 1 ,
+536 , 21299 , 6 , 41 , 1 , 1 ,
+536 , 21300 , 6 , 41 , 1 , 1 ,
+536 , 21301 , 6 , 41 , 1 , 1 ,
+536 , 21302 , 6 , 41 , 1 , 1 ,
+536 , 21303 , 6 , 41 , 1 , 1 ,
+536 , 21304 , 6 , 41 , 1 , 1 ,
+536 , 21305 , 5 , 31 , 1 , 1 ,
+536 , 21306 , 5 , 31 , 1 , 1 ,
+536 , 21307 , 5 , 41 , 1 , 1 ,
+536 , 21308 , 5 , 31 , 1 , 1 ,
+536 , 21309 , 392 , 143 , 1 , 1 , 21300 21052 21176 21024 21261 21051 21008 21017 21039 20809 21268 21186 20964 20865 21131 20995 21170 21248 21148 21115 20910 20842 21105 21276 21251 21241 21205 21007 20930 20906 20818 21257 21069 21122 21064 21183 21104 21099 20845 20869 21287 20856 20905 20902 20941 20936 21254 21219 20968 21063 21096 21175 21125 21098 21202 21222 20962 21301 20971 20997 20940 20841 20834 21207 21083 20972 21062 20969 21071 20988 20816 21188 21190 21066 21195 21110 21229 21308 20965 20894 21103 21014 21006 21012 21043 21258 21037 20923 21178 20993 20814 21277 21038 21113 20948 21023 21307 21050 21288 21286 21136 21085 21225 20812 21156 21264 21130 21009 20955 21198 20893 21221 20963 21143 21298 20986 21013 21145 21212 21204 20921 21048 21047 20896 21160 20908 20911 21035 20838 20844 20897 21293 20849 21095 21253 21146 20929 21280 21102 20815 20937 21056 21246 20992 21127 20987 21302 21118 20976 21139 21209 21120 21112 21260 21134 21019 21107 21152 20868 21088 21203 20931 21161 20900 21090 20881 20832 20977 21142 20918 21242 21173 21255 21189 21149 21214 20985 20852 20873 21266 21164 21079 20945 21121 21306 21114 20821 20864 21026 20901 20876 21180 21027 21022 21078 20846 20860 21057 21290 21018 21065 20853 21238 20890 20925 21206 21166 20979 20884 21163 21137 20974 20958 20898 20970 21262 21244 21108 21124 20877 21138 21059 20889 21036 21087 21187 21129 20938 20820 21032 20854 21091 21267 20959 20981 20973 20848 21304 20831 21049 20956 20825 21193 20949 20843 20952 21299 21172 21040 20933 20919 20934 20883 20998 20939 21084 21303 20857 20916 20966 21247 21067 20858 20892 21200 21279 21076 20978 20833 20907 21231 20915 21270 21077 20886 20899 21168 20975 21272 20878 21223 21191 20990 21068 21216 21297 21045 21074 20847 21296 21252 21147 21058 21285 20850 21177 20903 21259 20867 21237 20882 21030 20980 20874 20887 21097 21128 20875 21020 21218 20851 20996 20927 21004 20870 20989 21116 20828 20957 21185 21245 20862 21003 21072 21224 20822 21060 21135 21154 20912 20953 21126 20817 21215 21094 21092 21123 21194 21106 20942 20895 21284 20935 21265 21236 20954 21282 20917 21044 21234 21199 21243 21240 21015 21119 21235 21153 21029 21075 20932 21162 20859 20944 21210 20824 20982 20837 21028 21033 21294 20811 21140 20835 21089 20909 21263 21144 20999 21081 21256 20960 21179 21182 21165 20885 21269 20984 20836 20830 20879 21208 20947 21184 21273 21150 21278 21250 21046 21133 20904 21275 20928 21100 21213 21232 21010 21054 20913 21171 21001 21000 21174 20823 20826 20961 20914 20926 20880 21227 21157 21233 20861 21158 20855 21031 21141 20819 21042 21132 20983 21220 21167 20872 21117 21226 21025 21281 21289 21034 21230 20829 20946 21197 21011 21055 21041 21093 20991 21080 21073 21109 20888 20920 21111 21192 20871 21101 21002 20994 21005 21159 20922 20951 20827 21082 20840 21196 21228 21016 21305 21201 21021 21295 21217 21249 21053 21239 20950 21151 21271 21086 21292 20924 20813 21155 21181 20866 20863 21061 21274 20891 20943 21283 20967 21070 21291 20839 20810 21169 21211
+537 , 21310 , 2 , 41 , 1 , 1 ,
+537 , 21311 , 2 , 41 , 1 , 1 ,
+537 , 21312 , 2 , 52 , 1 , 1 ,
+537 , 21313 , 2 , 52 , 1 , 1 ,
+537 , 21314 , 2 , 41 , 1 , 1 ,
+537 , 21315 , 2 , 41 , 1 , 1 ,
+537 , 21316 , 2 , 41 , 1 , 1 ,
+537 , 21317 , 2 , 41 , 1 , 1 ,
+537 , 21318 , 2 , 41 , 1 , 1 ,
+537 , 21319 , 2 , 41 , 1 , 1 ,
+537 , 21320 , 66 , 0 , 1 , 1 , 21319 21313 21317 21316 21315 21312 21310 21318 21314 21311
+538 , 21321 , 2 , 41 , 1 , 1 ,
+538 , 21322 , 2 , 41 , 1 , 1 ,
+538 , 21323 , 2 , 52 , 1 , 1 ,
+538 , 21324 , 2 , 52 , 1 , 1 ,
+538 , 21325 , 2 , 52 , 1 , 1 ,
+538 , 21326 , 2 , 41 , 1 , 1 ,
+538 , 21327 , 2 , 41 , 1 , 1 ,
+538 , 21328 , 2 , 41 , 1 , 1 ,
+538 , 21329 , 2 , 41 , 1 , 1 ,
+538 , 21330 , 2 , 41 , 1 , 1 ,
+538 , 21331 , 66 , 0 , 1 , 1 , 21327 21326 21322 21330 21321 21323 21325 21324 21329 21328
+539 , 21332 , 4 , 52 , 1 , 1 ,
+539 , 21333 , 4 , 52 , 1 , 1 ,
+539 , 21334 , 4 , 72 , 1 , 1 ,
+539 , 21335 , 4 , 72 , 1 , 1 ,
+539 , 21336 , 4 , 72 , 1 , 1 ,
+539 , 21337 , 4 , 62 , 1 , 1 ,
+539 , 21338 , 4 , 62 , 1 , 1 ,
+539 , 21339 , 4 , 62 , 1 , 1 ,
+539 , 21340 , 4 , 62 , 1 , 1 ,
+539 , 21341 , 4 , 62 , 1 , 1 ,
+539 , 21342 , 89 , 11 , 1 , 1 , 21334 21338 21336 21341 21332 21335 21337 21340 21339 21333
+540 , 21343 , 13 , 31 , 1 , 1 ,
+540 , 21344 , 13 , 41 , 1 , 1 ,
+540 , 21345 , 12 , 31 , 1 , 1 ,
+540 , 21346 , 12 , 31 , 1 , 1 ,
+540 , 21347 , 11 , 31 , 1 , 1 ,
+540 , 21348 , 11 , 41 , 1 , 1 ,
+540 , 21349 , 11 , 41 , 1 , 1 ,
+540 , 21350 , 11 , 41 , 1 , 1 ,
+540 , 21351 , 11 , 31 , 1 , 1 ,
+540 , 21352 , 10 , 41 , 1 , 1 ,
+540 , 21353 , 8 , 42 , 1 , 1 ,
+540 , 21354 , 8 , 42 , 1 , 1 ,
+540 , 21355 , 8 , 42 , 1 , 1 ,
+540 , 21356 , 8 , 42 , 1 , 1 ,
+540 , 21357 , 7 , 41 , 1 , 1 ,
+540 , 21358 , 7 , 41 , 1 , 1 ,
+540 , 21359 , 7 , 52 , 1 , 1 ,
+540 , 21360 , 7 , 52 , 1 , 1 ,
+540 , 21361 , 7 , 52 , 1 , 1 ,
+540 , 21362 , 6 , 52 , 1 , 1 ,
+540 , 21363 , 6 , 52 , 1 , 1 ,
+540 , 21364 , 6 , 52 , 1 , 1 ,
+540 , 21365 , 5 , 41 , 1 , 1 ,
+540 , 21366 , 5 , 52 , 1 , 1 ,
+540 , 21367 , 5 , 52 , 1 , 1 ,
+540 , 21368 , 5 , 41 , 1 , 1 ,
+540 , 21369 , 5 , 52 , 1 , 1 ,
+540 , 21370 , 5 , 41 , 1 , 1 ,
+540 , 21371 , 5 , 41 , 1 , 1 ,
+540 , 21372 , 5 , 41 , 1 , 1 ,
+540 , 21373 , 4 , 52 , 1 , 1 ,
+540 , 21374 , 4 , 41 , 1 , 1 ,
+540 , 21375 , 3 , 52 , 1 , 1 ,
+540 , 21376 , 3 , 52 , 1 , 1 ,
+540 , 21377 , 3 , 41 , 1 , 1 ,
+540 , 21378 , 3 , 51 , 1 , 1 ,
+540 , 21379 , 3 , 41 , 1 , 1 ,
+540 , 21380 , 3 , 41 , 1 , 1 ,
+540 , 21381 , 3 , 51 , 1 , 1 ,
+540 , 21382 , 3 , 41 , 1 , 1 ,
+540 , 21383 , 1 , 51 , 1 , 1 ,
+540 , 21384 , 1 , 52 , 1 , 1 ,
+540 , 21385 , 1 , 41 , 1 , 1 ,
+540 , 21386 , 1 , 41 , 1 , 1 ,
+540 , 21387 , 1 , 31 , 1 , 1 ,
+540 , 21388 , 1 , 51 , 1 , 1 ,
+540 , 21389 , 1 , 41 , 1 , 1 ,
+540 , 21390 , 1 , 41 , 1 , 1 ,
+540 , 21391 , 1 , 41 , 1 , 1 ,
+540 , 21392 , 1 , 41 , 1 , 1 ,
+540 , 21393 , 73 , 21 , 1 , 1 , 21378 21364 21388 21385 21366 21361 21374 21376 21383 21347 21377 21392 21344 21391 21367 21359 21358 21352 21354 21387 21373 21365 21362 21369 21382 21360 21343 21356 21386 21370 21381 21368 21375 21371 21372 21348 21363 21357 21349 21384 21353 21389 21379 21380 21355 21390 21346 21345 21351 21350
+541 , 21394 , 4 , 11 , 1 , 1 ,
+541 , 21395 , 33 , 31 , 1 , 1 , 21394
+541 , 21396 , 33 , 31 , 1 , 1 , 21394
+541 , 21397 , 33 , 31 , 1 , 1 , 21394
+541 , 21398 , 33 , 31 , 1 , 1 , 21394
+541 , 21399 , 33 , 31 , 1 , 1 , 21394
+541 , 21400 , 33 , 31 , 1 , 1 , 21394
+541 , 21401 , 32 , 31 , 1 , 1 , 21394
+541 , 21402 , 29 , 41 , 1 , 1 , 21394
+541 , 21403 , 29 , 31 , 1 , 1 , 21394
+541 , 21404 , 29 , 31 , 1 , 1 , 21394
+541 , 21405 , 29 , 41 , 1 , 1 , 21394
+541 , 21406 , 28 , 31 , 1 , 1 , 21394
+541 , 21407 , 28 , 41 , 1 , 1 , 21394
+541 , 21408 , 28 , 32 , 1 , 1 , 21394
+541 , 21409 , 28 , 41 , 1 , 1 , 21394
+541 , 21410 , 28 , 41 , 1 , 1 , 21394
+541 , 21411 , 28 , 41 , 1 , 1 , 21394
+541 , 21412 , 28 , 41 , 1 , 1 , 21394
+541 , 21413 , 28 , 41 , 1 , 1 , 21394
+541 , 21414 , 87 , 0 , 1 , 1 , 21403 21405 21409 21404 21397 21406 21408 21395 21413 21412 21407 21402 21396 21398 21411 21399 21401 21410 21400
+541 , 21415 , 104 , 11 , 1 , 1 , 21414
+541 , 21416 , 104 , 11 , 1 , 1 , 21414
+541 , 21417 , 104 , 11 , 1 , 1 , 21414
+541 , 21418 , 104 , 11 , 1 , 1 , 21414
+541 , 21419 , 103 , 11 , 1 , 1 , 21414
+541 , 21420 , 103 , 11 , 1 , 1 , 21414
+541 , 21421 , 103 , 11 , 1 , 1 , 21414
+541 , 21422 , 103 , 11 , 1 , 1 , 21414
+541 , 21423 , 102 , 11 , 1 , 1 , 21414
+541 , 21424 , 101 , 11 , 1 , 1 , 21414
+541 , 21425 , 101 , 11 , 1 , 1 , 21414
+541 , 21426 , 101 , 11 , 1 , 1 , 21414
+541 , 21427 , 101 , 11 , 1 , 1 , 21414
+541 , 21428 , 101 , 10 , 1 , 1 , 21414
+541 , 21429 , 101 , 11 , 1 , 1 , 21414
+541 , 21430 , 101 , 11 , 1 , 1 , 21414
+541 , 21431 , 101 , 11 , 1 , 1 , 21414
+541 , 21432 , 101 , 11 , 1 , 1 , 21414
+541 , 21433 , 101 , 11 , 1 , 1 , 21414
+541 , 21434 , 132 , 0 , 1 , 1 , 21430 21418 21426 21429 21415 21421 21428 21424 21425 21416 21417 21427 21433 21432 21420 21423 21419 21422 21431
+542 , 21435 , 67 , 32 , 1 , 1 ,
+542 , 21436 , 108 , 41 , 1 , 1 ,
+542 , 21437 , 108 , 41 , 1 , 1 ,
+542 , 21438 , 67 , 32 , 1 , 1 ,
+542 , 21439 , 67 , 32 , 1 , 1 ,
+542 , 21440 , 106 , 32 , 1 , 1 ,
+542 , 21441 , 105 , 32 , 1 , 1 ,
+542 , 21442 , 105 , 41 , 1 , 1 ,
+542 , 21443 , 115 , 31 , 1 , 1 ,
+542 , 21444 , 111 , 32 , 1 , 1 ,
+542 , 21445 , 115 , 31 , 1 , 1 ,
+542 , 21446 , 115 , 31 , 1 , 1 ,
+542 , 21447 , 115 , 31 , 1 , 1 ,
+542 , 21448 , 115 , 31 , 1 , 1 ,
+542 , 21449 , 75 , 73 , 1 , 1 ,
+542 , 21450 , 115 , 31 , 1 , 1 ,
+542 , 21451 , 115 , 31 , 1 , 1 ,
+542 , 21452 , 115 , 31 , 1 , 1 ,
+542 , 21453 , 115 , 31 , 1 , 1 ,
+542 , 21454 , 115 , 31 , 1 , 1 ,
+542 , 21455 , 110 , 41 , 1 , 1 ,
+542 , 21456 , 110 , 41 , 1 , 1 ,
+542 , 21457 , 75 , 63 , 1 , 1 ,
+542 , 21458 , 110 , 41 , 1 , 1 ,
+542 , 21459 , 110 , 41 , 1 , 1 ,
+542 , 21460 , 109 , 41 , 1 , 1 ,
+542 , 21461 , 108 , 41 , 1 , 1 ,
+542 , 21462 , 82 , 52 , 1 , 1 ,
+542 , 21463 , 82 , 52 , 1 , 1 ,
+542 , 21464 , 82 , 52 , 1 , 1 ,
+542 , 21465 , 81 , 52 , 1 , 1 ,
+542 , 21466 , 81 , 41 , 1 , 1 ,
+542 , 21467 , 81 , 41 , 1 , 1 ,
+542 , 21468 , 81 , 41 , 1 , 1 ,
+542 , 21469 , 81 , 41 , 1 , 1 ,
+542 , 21470 , 81 , 52 , 1 , 1 ,
+542 , 21471 , 81 , 41 , 1 , 1 ,
+542 , 21472 , 77 , 52 , 1 , 1 ,
+542 , 21473 , 77 , 52 , 1 , 1 ,
+542 , 21474 , 65 , 43 , 1 , 1 ,
+542 , 21475 , 63 , 43 , 1 , 1 ,
+542 , 21476 , 63 , 43 , 1 , 1 ,
+542 , 21477 , 77 , 52 , 1 , 1 ,
+542 , 21478 , 77 , 52 , 1 , 1 ,
+542 , 21479 , 77 , 52 , 1 , 1 ,
+542 , 21480 , 67 , 43 , 1 , 1 ,
+542 , 21481 , 77 , 52 , 1 , 1 ,
+542 , 21482 , 77 , 52 , 1 , 1 ,
+542 , 21483 , 77 , 52 , 1 , 1 ,
+542 , 21484 , 77 , 52 , 1 , 1 ,
+542 , 21485 , 77 , 52 , 1 , 1 ,
+542 , 21486 , 75 , 42 , 1 , 1 ,
+542 , 21487 , 75 , 53 , 1 , 1 ,
+542 , 21488 , 75 , 42 , 1 , 1 ,
+542 , 21489 , 75 , 53 , 1 , 1 ,
+542 , 21490 , 75 , 53 , 1 , 1 ,
+542 , 21491 , 75 , 53 , 1 , 1 ,
+542 , 21492 , 108 , 41 , 1 , 1 ,
+542 , 21493 , 105 , 52 , 1 , 1 ,
+542 , 21494 , 105 , 52 , 1 , 1 ,
+542 , 21495 , 105 , 52 , 1 , 1 ,
+542 , 21496 , 105 , 41 , 1 , 1 ,
+542 , 21497 , 104 , 52 , 1 , 1 ,
+542 , 21498 , 104 , 31 , 1 , 1 ,
+542 , 21499 , 104 , 41 , 1 , 1 ,
+542 , 21500 , 104 , 52 , 1 , 1 ,
+542 , 21501 , 86 , 63 , 1 , 1 ,
+542 , 21502 , 85 , 63 , 1 , 1 ,
+542 , 21503 , 108 , 41 , 1 , 1 ,
+542 , 21504 , 75 , 73 , 1 , 1 ,
+542 , 21505 , 74 , 52 , 1 , 1 ,
+542 , 21506 , 74 , 52 , 1 , 1 ,
+542 , 21507 , 74 , 62 , 1 , 1 ,
+542 , 21508 , 74 , 52 , 1 , 1 ,
+542 , 21509 , 73 , 41 , 1 , 1 ,
+542 , 21510 , 73 , 52 , 1 , 1 ,
+542 , 21511 , 73 , 52 , 1 , 1 ,
+542 , 21512 , 73 , 31 , 1 , 1 ,
+542 , 21513 , 72 , 31 , 1 , 1 ,
+542 , 21514 , 69 , 31 , 1 , 1 ,
+542 , 21515 , 46 , 41 , 1 , 1 ,
+542 , 21516 , 46 , 42 , 1 , 1 ,
+542 , 21517 , 43 , 42 , 1 , 1 ,
+542 , 21518 , 43 , 42 , 1 , 1 ,
+542 , 21519 , 42 , 42 , 1 , 1 ,
+542 , 21520 , 42 , 42 , 1 , 1 ,
+542 , 21521 , 42 , 41 , 1 , 1 ,
+542 , 21522 , 42 , 41 , 1 , 1 ,
+542 , 21523 , 42 , 41 , 1 , 1 ,
+542 , 21524 , 42 , 41 , 1 , 1 ,
+542 , 21525 , 42 , 41 , 1 , 1 ,
+542 , 21526 , 41 , 41 , 1 , 1 ,
+542 , 21527 , 37 , 41 , 1 , 1 ,
+542 , 21528 , 37 , 41 , 1 , 1 ,
+542 , 21529 , 37 , 52 , 1 , 1 ,
+542 , 21530 , 37 , 52 , 1 , 1 ,
+542 , 21531 , 37 , 62 , 1 , 1 ,
+542 , 21532 , 36 , 52 , 1 , 1 ,
+542 , 21533 , 36 , 62 , 1 , 1 ,
+542 , 21534 , 36 , 52 , 1 , 1 ,
+542 , 21535 , 28 , 234 , 1 , 1 ,
+542 , 21536 , 28 , 228 , 1 , 1 ,
+542 , 21537 , 28 , 234 , 1 , 1 ,
+542 , 21538 , 28 , 234 , 1 , 1 ,
+542 , 21539 , 28 , 234 , 1 , 1 ,
+542 , 21540 , 28 , 234 , 1 , 1 ,
+542 , 21541 , 28 , 234 , 1 , 1 ,
+542 , 21542 , 28 , 234 , 1 , 1 ,
+542 , 21543 , 28 , 234 , 1 , 1 ,
+542 , 21544 , 28 , 234 , 1 , 1 ,
+542 , 21545 , 28 , 234 , 1 , 1 ,
+542 , 21546 , 28 , 234 , 1 , 1 ,
+542 , 21547 , 28 , 234 , 1 , 1 ,
+542 , 21548 , 28 , 224 , 1 , 1 ,
+542 , 21549 , 28 , 224 , 1 , 1 ,
+542 , 21550 , 28 , 214 , 1 , 1 ,
+542 , 21551 , 21 , 74 , 1 , 1 ,
+542 , 21552 , 21 , 73 , 1 , 1 ,
+542 , 21553 , 21 , 63 , 1 , 1 ,
+542 , 21554 , 20 , 63 , 1 , 1 ,
+542 , 21555 , 20 , 63 , 1 , 1 ,
+542 , 21556 , 20 , 63 , 1 , 1 ,
+542 , 21557 , 20 , 63 , 1 , 1 ,
+542 , 21558 , 20 , 42 , 1 , 1 ,
+542 , 21559 , 20 , 53 , 1 , 1 ,
+542 , 21560 , 20 , 42 , 1 , 1 ,
+542 , 21561 , 20 , 42 , 1 , 1 ,
+542 , 21562 , 20 , 53 , 1 , 1 ,
+542 , 21563 , 20 , 53 , 1 , 1 ,
+542 , 21564 , 20 , 53 , 1 , 1 ,
+542 , 21565 , 20 , 53 , 1 , 1 ,
+542 , 21566 , 20 , 43 , 1 , 1 ,
+542 , 21567 , 12 , 43 , 1 , 1 ,
+542 , 21568 , 12 , 46 , 1 , 1 ,
+542 , 21569 , 12 , 45 , 1 , 1 ,
+542 , 21570 , 12 , 46 , 1 , 1 ,
+542 , 21571 , 12 , 43 , 1 , 1 ,
+542 , 21572 , 12 , 46 , 1 , 1 ,
+542 , 21573 , 36 , 62 , 1 , 1 ,
+542 , 21574 , 36 , 62 , 1 , 1 ,
+542 , 21575 , 33 , 62 , 1 , 1 ,
+542 , 21576 , 32 , 62 , 1 , 1 ,
+542 , 21577 , 32 , 52 , 1 , 1 ,
+542 , 21578 , 32 , 52 , 1 , 1 ,
+542 , 21579 , 32 , 63 , 1 , 1 ,
+542 , 21580 , 32 , 62 , 1 , 1 ,
+542 , 21581 , 32 , 52 , 1 , 1 ,
+542 , 21582 , 32 , 62 , 1 , 1 ,
+542 , 21583 , 32 , 52 , 1 , 1 ,
+542 , 21584 , 31 , 52 , 1 , 1 ,
+542 , 21585 , 28 , 52 , 1 , 1 ,
+542 , 21586 , 27 , 52 , 1 , 1 ,
+542 , 21587 , 27 , 62 , 1 , 1 ,
+542 , 21588 , 27 , 62 , 1 , 1 ,
+542 , 21589 , 27 , 62 , 1 , 1 ,
+542 , 21590 , 27 , 72 , 1 , 1 ,
+542 , 21591 , 27 , 62 , 1 , 1 ,
+542 , 21592 , 27 , 52 , 1 , 1 ,
+542 , 21593 , 27 , 52 , 1 , 1 ,
+542 , 21594 , 26 , 42 , 1 , 1 ,
+542 , 21595 , 22 , 41 , 1 , 1 ,
+542 , 21596 , 22 , 41 , 1 , 1 ,
+542 , 21597 , 22 , 41 , 1 , 1 ,
+542 , 21598 , 22 , 41 , 1 , 1 ,
+542 , 21599 , 22 , 41 , 1 , 1 ,
+542 , 21600 , 21 , 41 , 1 , 1 ,
+542 , 21601 , 21 , 31 , 1 , 1 ,
+542 , 21602 , 21 , 41 , 1 , 1 ,
+542 , 21603 , 21 , 41 , 1 , 1 ,
+542 , 21604 , 20 , 41 , 1 , 1 ,
+542 , 21605 , 15 , 41 , 1 , 1 ,
+542 , 21606 , 15 , 41 , 1 , 1 ,
+542 , 21607 , 15 , 41 , 1 , 1 ,
+542 , 21608 , 15 , 41 , 1 , 1 ,
+542 , 21609 , 15 , 41 , 1 , 1 ,
+542 , 21610 , 15 , 41 , 1 , 1 ,
+542 , 21611 , 14 , 41 , 1 , 1 ,
+542 , 21612 , 14 , 41 , 1 , 1 ,
+542 , 21613 , 14 , 31 , 1 , 1 ,
+542 , 21614 , 14 , 41 , 1 , 1 ,
+542 , 21615 , 10 , 41 , 1 , 1 ,
+542 , 21616 , 10 , 42 , 1 , 1 ,
+542 , 21617 , 10 , 41 , 1 , 1 ,
+542 , 21618 , 10 , 41 , 1 , 1 ,
+542 , 21619 , 10 , 41 , 1 , 1 ,
+542 , 21620 , 9 , 41 , 1 , 1 ,
+542 , 21621 , 9 , 41 , 1 , 1 ,
+542 , 21622 , 9 , 41 , 1 , 1 ,
+542 , 21623 , 9 , 41 , 1 , 1 ,
+542 , 21624 , 9 , 41 , 1 , 1 ,
+542 , 21625 , 6 , 31 , 1 , 1 ,
+542 , 21626 , 6 , 41 , 1 , 1 ,
+542 , 21627 , 6 , 41 , 1 , 1 ,
+542 , 21628 , 6 , 41 , 1 , 1 ,
+542 , 21629 , 6 , 41 , 1 , 1 ,
+542 , 21630 , 6 , 41 , 1 , 1 ,
+542 , 21631 , 6 , 41 , 1 , 1 ,
+542 , 21632 , 6 , 31 , 1 , 1 ,
+542 , 21633 , 6 , 31 , 1 , 1 ,
+542 , 21634 , 6 , 31 , 1 , 1 ,
+542 , 21635 , 288 , 72 , 1 , 1 , 21580 21469 21454 21554 21631 21596 21524 21573 21448 21562 21626 21436 21473 21556 21457 21466 21544 21632 21525 21590 21488 21481 21586 21523 21502 21499 21531 21560 21620 21493 21569 21595 21627 21474 21518 21585 21539 21439 21453 21542 21591 21579 21601 21445 21441 21478 21472 21487 21610 21614 21513 21581 21465 21568 21593 21547 21435 21619 21571 21492 21615 21483 21511 21450 21578 21584 21602 21505 21496 21438 21527 21520 21565 21512 21540 21621 21498 21616 21437 21528 21470 21541 21623 21501 21606 21553 21486 21477 21538 21550 21607 21634 21471 21603 21594 21555 21535 21558 21460 21449 21456 21570 21534 21622 21463 21618 21507 21561 21444 21515 21459 21552 21514 21440 21522 21543 21551 21587 21497 21491 21592 21575 21526 21490 21611 21624 21574 21545 21598 21485 21577 21597 21495 21588 21468 21462 21516 21476 21484 21442 21480 21479 21443 21557 21630 21629 21589 21600 21536 21549 21530 21521 21458 21475 21609 21537 21533 21519 21576 21613 21604 21532 21633 21546 21489 21608 21500 21605 21517 21572 21559 21529 21506 21564 21509 21508 21625 21482 21503 21566 21464 21599 21461 21563 21451 21582 21510 21504 21455 21567 21583 21548 21446 21628 21617 21612 21447 21494 21467 21452
+543 , 21636 , 3 , 11 , 1 , 1 ,
+543 , 21637 , 115 , 41 , 1 , 1 , 21636
+543 , 21638 , 105 , 52 , 1 , 1 , 21636
+543 , 21639 , 104 , 52 , 1 , 1 , 21636
+543 , 21640 , 99 , 41 , 1 , 1 , 21636
+543 , 21641 , 99 , 41 , 1 , 1 , 21636
+543 , 21642 , 99 , 41 , 1 , 1 , 21636
+543 , 21643 , 94 , 41 , 1 , 1 , 21636
+543 , 21644 , 94 , 41 , 1 , 1 , 21636
+543 , 21645 , 93 , 41 , 1 , 1 , 21636
+543 , 21646 , 93 , 42 , 1 , 1 , 21636
+543 , 21647 , 115 , 41 , 1 , 1 , 21636
+543 , 21648 , 115 , 41 , 1 , 1 , 21636
+543 , 21649 , 115 , 62 , 1 , 1 , 21636
+543 , 21650 , 115 , 41 , 1 , 1 , 21636
+543 , 21651 , 115 , 41 , 1 , 1 , 21636
+543 , 21652 , 115 , 41 , 1 , 1 , 21636
+543 , 21653 , 93 , 42 , 1 , 1 , 21636
+543 , 21654 , 115 , 52 , 1 , 1 , 21636
+543 , 21655 , 114 , 41 , 1 , 1 , 21636
+543 , 21656 , 114 , 52 , 1 , 1 , 21636
+543 , 21657 , 134 , 52 , 1 , 1 , 21636
+543 , 21658 , 134 , 41 , 1 , 1 , 21636
+543 , 21659 , 134 , 41 , 1 , 1 , 21636
+543 , 21660 , 134 , 52 , 1 , 1 , 21636
+543 , 21661 , 134 , 41 , 1 , 1 , 21636
+543 , 21662 , 133 , 52 , 1 , 1 , 21636
+543 , 21663 , 132 , 86 , 1 , 1 , 21636
+543 , 21664 , 130 , 52 , 1 , 1 , 21636
+543 , 21665 , 130 , 52 , 1 , 1 , 21636
+543 , 21666 , 130 , 42 , 1 , 1 , 21636
+543 , 21667 , 172 , 31 , 1 , 1 , 21636
+543 , 21668 , 172 , 31 , 1 , 1 , 21636
+543 , 21669 , 172 , 31 , 1 , 1 , 21636
+543 , 21670 , 172 , 31 , 1 , 1 , 21636
+543 , 21671 , 171 , 41 , 1 , 1 , 21636
+543 , 21672 , 171 , 31 , 1 , 1 , 21636
+543 , 21673 , 171 , 41 , 1 , 1 , 21636
+543 , 21674 , 171 , 41 , 1 , 1 , 21636
+543 , 21675 , 170 , 42 , 1 , 1 , 21636
+543 , 21676 , 168 , 41 , 1 , 1 , 21636
+543 , 21677 , 168 , 41 , 1 , 1 , 21636
+543 , 21678 , 167 , 41 , 1 , 1 , 21636
+543 , 21679 , 167 , 41 , 1 , 1 , 21636
+543 , 21680 , 167 , 41 , 1 , 1 , 21636
+543 , 21681 , 166 , 41 , 1 , 1 , 21636
+543 , 21682 , 166 , 41 , 1 , 1 , 21636
+543 , 21683 , 166 , 41 , 1 , 1 , 21636
+543 , 21684 , 162 , 41 , 1 , 1 , 21636
+543 , 21685 , 161 , 31 , 1 , 1 , 21636
+543 , 21686 , 161 , 31 , 1 , 1 , 21636
+543 , 21687 , 151 , 31 , 1 , 1 , 21636
+543 , 21688 , 151 , 31 , 1 , 1 , 21636
+543 , 21689 , 151 , 31 , 1 , 1 , 21636
+543 , 21690 , 146 , 41 , 1 , 1 , 21636
+543 , 21691 , 146 , 31 , 1 , 1 , 21636
+543 , 21692 , 146 , 41 , 1 , 1 , 21636
+543 , 21693 , 146 , 41 , 1 , 1 , 21636
+543 , 21694 , 146 , 31 , 1 , 1 , 21636
+543 , 21695 , 145 , 85 , 1 , 1 , 21636
+543 , 21696 , 143 , 85 , 1 , 1 , 21636
+543 , 21697 , 137 , 85 , 1 , 1 , 21636
+543 , 21698 , 136 , 85 , 1 , 1 , 21636
+543 , 21699 , 136 , 41 , 1 , 1 , 21636
+543 , 21700 , 109 , 41 , 1 , 1 , 21636
+543 , 21701 , 109 , 41 , 1 , 1 , 21636
+543 , 21702 , 109 , 52 , 1 , 1 , 21636
+543 , 21703 , 108 , 52 , 1 , 1 , 21636
+543 , 21704 , 105 , 52 , 1 , 1 , 21636
+543 , 21705 , 105 , 52 , 1 , 1 , 21636
+543 , 21706 , 136 , 41 , 1 , 1 , 21636
+543 , 21707 , 114 , 42 , 1 , 1 , 21636
+543 , 21708 , 114 , 41 , 1 , 1 , 21636
+543 , 21709 , 113 , 41 , 1 , 1 , 21636
+543 , 21710 , 110 , 41 , 1 , 1 , 21636
+543 , 21711 , 110 , 52 , 1 , 1 , 21636
+543 , 21712 , 110 , 52 , 1 , 1 , 21636
+543 , 21713 , 109 , 52 , 1 , 1 , 21636
+543 , 21714 , 136 , 41 , 1 , 1 , 21636
+543 , 21715 , 136 , 41 , 1 , 1 , 21636
+543 , 21716 , 120 , 52 , 1 , 1 , 21636
+543 , 21717 , 120 , 52 , 1 , 1 , 21636
+543 , 21718 , 120 , 51 , 1 , 1 , 21636
+543 , 21719 , 120 , 52 , 1 , 1 , 21636
+543 , 21720 , 120 , 42 , 1 , 1 , 21636
+543 , 21721 , 120 , 41 , 1 , 1 , 21636
+543 , 21722 , 120 , 52 , 1 , 1 , 21636
+543 , 21723 , 120 , 52 , 1 , 1 , 21636
+543 , 21724 , 119 , 52 , 1 , 1 , 21636
+543 , 21725 , 119 , 52 , 1 , 1 , 21636
+543 , 21726 , 115 , 52 , 1 , 1 , 21636
+543 , 21727 , 115 , 62 , 1 , 1 , 21636
+543 , 21728 , 115 , 41 , 1 , 1 , 21636
+543 , 21729 , 66 , 41 , 1 , 1 , 21636
+543 , 21730 , 63 , 42 , 1 , 1 , 21636
+543 , 21731 , 63 , 41 , 1 , 1 , 21636
+543 , 21732 , 62 , 41 , 1 , 1 , 21636
+543 , 21733 , 62 , 41 , 1 , 1 , 21636
+543 , 21734 , 62 , 41 , 1 , 1 , 21636
+543 , 21735 , 61 , 41 , 1 , 1 , 21636
+543 , 21736 , 61 , 41 , 1 , 1 , 21636
+543 , 21737 , 61 , 41 , 1 , 1 , 21636
+543 , 21738 , 61 , 31 , 1 , 1 , 21636
+543 , 21739 , 61 , 41 , 1 , 1 , 21636
+543 , 21740 , 58 , 41 , 1 , 1 , 21636
+543 , 21741 , 58 , 41 , 1 , 1 , 21636
+543 , 21742 , 57 , 41 , 1 , 1 , 21636
+543 , 21743 , 57 , 41 , 1 , 1 , 21636
+543 , 21744 , 57 , 62 , 1 , 1 , 21636
+543 , 21745 , 57 , 62 , 1 , 1 , 21636
+543 , 21746 , 57 , 62 , 1 , 1 , 21636
+543 , 21747 , 57 , 62 , 1 , 1 , 21636
+543 , 21748 , 56 , 62 , 1 , 1 , 21636
+543 , 21749 , 56 , 254 , 1 , 1 , 21636
+543 , 21750 , 56 , 244 , 1 , 1 , 21636
+543 , 21751 , 56 , 264 , 1 , 1 , 21636
+543 , 21752 , 56 , 244 , 1 , 1 , 21636
+543 , 21753 , 56 , 244 , 1 , 1 , 21636
+543 , 21754 , 56 , 244 , 1 , 1 , 21636
+543 , 21755 , 55 , 254 , 1 , 1 , 21636
+543 , 21756 , 55 , 234 , 1 , 1 , 21636
+543 , 21757 , 55 , 254 , 1 , 1 , 21636
+543 , 21758 , 55 , 244 , 1 , 1 , 21636
+543 , 21759 , 55 , 234 , 1 , 1 , 21636
+543 , 21760 , 55 , 234 , 1 , 1 , 21636
+543 , 21761 , 55 , 254 , 1 , 1 , 21636
+543 , 21762 , 55 , 244 , 1 , 1 , 21636
+543 , 21763 , 55 , 234 , 1 , 1 , 21636
+543 , 21764 , 55 , 234 , 1 , 1 , 21636
+543 , 21765 , 46 , 83 , 1 , 1 , 21636
+543 , 21766 , 46 , 78 , 1 , 1 , 21636
+543 , 21767 , 46 , 91 , 1 , 1 , 21636
+543 , 21768 , 46 , 83 , 1 , 1 , 21636
+543 , 21769 , 46 , 90 , 1 , 1 , 21636
+543 , 21770 , 46 , 74 , 1 , 1 , 21636
+543 , 21771 , 56 , 62 , 1 , 1 , 21636
+543 , 21772 , 53 , 62 , 1 , 1 , 21636
+543 , 21773 , 53 , 52 , 1 , 1 , 21636
+543 , 21774 , 53 , 62 , 1 , 1 , 21636
+543 , 21775 , 53 , 62 , 1 , 1 , 21636
+543 , 21776 , 53 , 62 , 1 , 1 , 21636
+543 , 21777 , 52 , 62 , 1 , 1 , 21636
+543 , 21778 , 52 , 62 , 1 , 1 , 21636
+543 , 21779 , 52 , 62 , 1 , 1 , 21636
+543 , 21780 , 52 , 52 , 1 , 1 , 21636
+543 , 21781 , 52 , 41 , 1 , 1 , 21636
+543 , 21782 , 48 , 72 , 1 , 1 , 21636
+543 , 21783 , 48 , 72 , 1 , 1 , 21636
+543 , 21784 , 48 , 72 , 1 , 1 , 21636
+543 , 21785 , 47 , 72 , 1 , 1 , 21636
+543 , 21786 , 47 , 52 , 1 , 1 , 21636
+543 , 21787 , 47 , 52 , 1 , 1 , 21636
+543 , 21788 , 47 , 52 , 1 , 1 , 21636
+543 , 21789 , 47 , 41 , 1 , 1 , 21636
+543 , 21790 , 47 , 52 , 1 , 1 , 21636
+543 , 21791 , 46 , 52 , 1 , 1 , 21636
+543 , 21792 , 43 , 52 , 1 , 1 , 21636
+543 , 21793 , 43 , 52 , 1 , 1 , 21636
+543 , 21794 , 43 , 52 , 1 , 1 , 21636
+543 , 21795 , 42 , 41 , 1 , 1 , 21636
+543 , 21796 , 42 , 41 , 1 , 1 , 21636
+543 , 21797 , 42 , 41 , 1 , 1 , 21636
+543 , 21798 , 42 , 52 , 1 , 1 , 21636
+543 , 21799 , 41 , 52 , 1 , 1 , 21636
+543 , 21800 , 41 , 52 , 1 , 1 , 21636
+543 , 21801 , 41 , 52 , 1 , 1 , 21636
+543 , 21802 , 38 , 52 , 1 , 1 , 21636
+543 , 21803 , 37 , 52 , 1 , 1 , 21636
+543 , 21804 , 37 , 52 , 1 , 1 , 21636
+543 , 21805 , 37 , 41 , 1 , 1 , 21636
+543 , 21806 , 37 , 41 , 1 , 1 , 21636
+543 , 21807 , 36 , 41 , 1 , 1 , 21636
+543 , 21808 , 36 , 41 , 1 , 1 , 21636
+543 , 21809 , 36 , 41 , 1 , 1 , 21636
+543 , 21810 , 35 , 42 , 1 , 1 , 21636
+543 , 21811 , 35 , 42 , 1 , 1 , 21636
+543 , 21812 , 33 , 41 , 1 , 1 , 21636
+543 , 21813 , 32 , 41 , 1 , 1 , 21636
+543 , 21814 , 32 , 41 , 1 , 1 , 21636
+543 , 21815 , 32 , 41 , 1 , 1 , 21636
+543 , 21816 , 32 , 41 , 1 , 1 , 21636
+543 , 21817 , 32 , 42 , 1 , 1 , 21636
+543 , 21818 , 31 , 42 , 1 , 1 , 21636
+543 , 21819 , 31 , 42 , 1 , 1 , 21636
+543 , 21820 , 31 , 42 , 1 , 1 , 21636
+543 , 21821 , 31 , 42 , 1 , 1 , 21636
+543 , 21822 , 30 , 41 , 1 , 1 , 21636
+543 , 21823 , 30 , 41 , 1 , 1 , 21636
+543 , 21824 , 30 , 41 , 1 , 1 , 21636
+543 , 21825 , 30 , 41 , 1 , 1 , 21636
+543 , 21826 , 30 , 41 , 1 , 1 , 21636
+543 , 21827 , 30 , 41 , 1 , 1 , 21636
+543 , 21828 , 30 , 31 , 1 , 1 , 21636
+543 , 21829 , 30 , 41 , 1 , 1 , 21636
+543 , 21830 , 341 , 11 , 1 , 1 , 21755 21763 21694 21674 21783 21700 21692 21707 21746 21712 21690 21661 21721 21723 21745 21719 21758 21654 21753 21691 21698 21768 21702 21769 21647 21796 21822 21696 21826 21827 21825 21820 21801 21771 21680 21805 21817 21784 21761 21669 21788 21780 21665 21664 21662 21757 21701 21811 21730 21722 21777 21793 21808 21687 21667 21648 21800 21718 21772 21786 21713 21643 21657 21668 21732 21776 21724 21656 21813 21748 21806 21736 21651 21741 21642 21760 21733 21688 21646 21828 21703 21652 21639 21675 21725 21829 21797 21693 21750 21683 21715 21766 21754 21785 21791 21673 21747 21759 21686 21803 21728 21821 21743 21819 21644 21762 21770 21666 21782 21731 21798 21799 21706 21773 21815 21774 21764 21659 21671 21695 21678 21816 21710 21814 21653 21792 21716 21720 21734 21823 21778 21804 21640 21705 21660 21727 21812 21655 21682 21818 21679 21672 21663 21807 21751 21676 21739 21781 21726 21756 21810 21802 21767 21787 21697 21744 21765 21795 21650 21685 21737 21681 21735 21717 21809 21637 21729 21790 21708 21704 21684 21794 21738 21658 21677 21824 21775 21779 21638 21709 21689 21714 21740 21752 21649 21645 21742 21711 21699 21641 21789 21749 21670
+543 , 21831 , 460 , 41 , 1 , 1 , 21830
+543 , 21832 , 463 , 11 , 1 , 1 , 21830
+543 , 21833 , 459 , 41 , 1 , 1 , 21830
+543 , 21834 , 478 , 31 , 1 , 1 , 21830
+543 , 21835 , 459 , 41 , 1 , 1 , 21830
+543 , 21836 , 459 , 41 , 1 , 1 , 21830
+543 , 21837 , 460 , 11 , 1 , 1 , 21830
+543 , 21838 , 457 , 41 , 1 , 1 , 21830
+543 , 21839 , 456 , 41 , 1 , 1 , 21830
+543 , 21840 , 455 , 41 , 1 , 1 , 21830
+543 , 21841 , 452 , 42 , 1 , 1 , 21830
+543 , 21842 , 451 , 42 , 1 , 1 , 21830
+543 , 21843 , 450 , 41 , 1 , 1 , 21830
+543 , 21844 , 450 , 41 , 1 , 1 , 21830
+543 , 21845 , 449 , 41 , 1 , 1 , 21830
+543 , 21846 , 449 , 41 , 1 , 1 , 21830
+543 , 21847 , 449 , 42 , 1 , 1 , 21830
+543 , 21848 , 451 , 12 , 1 , 1 , 21830
+543 , 21849 , 448 , 11 , 1 , 1 , 21830
+543 , 21850 , 445 , 31 , 1 , 1 , 21830
+543 , 21851 , 444 , 32 , 1 , 1 , 21830
+543 , 21852 , 443 , 31 , 1 , 1 , 21830
+543 , 21853 , 441 , 31 , 1 , 1 , 21830
+543 , 21854 , 441 , 31 , 1 , 1 , 21830
+543 , 21855 , 444 , 11 , 1 , 1 , 21830
+543 , 21856 , 442 , 11 , 1 , 1 , 21830
+543 , 21857 , 457 , 31 , 1 , 1 , 21830
+543 , 21858 , 454 , 31 , 1 , 1 , 21830
+543 , 21859 , 453 , 31 , 1 , 1 , 21830
+543 , 21860 , 452 , 42 , 1 , 1 , 21830
+543 , 21861 , 452 , 32 , 1 , 1 , 21830
+543 , 21862 , 478 , 31 , 1 , 1 , 21830
+543 , 21863 , 478 , 31 , 1 , 1 , 21830
+543 , 21864 , 478 , 31 , 1 , 1 , 21830
+543 , 21865 , 477 , 31 , 1 , 1 , 21830
+543 , 21866 , 477 , 32 , 1 , 1 , 21830
+543 , 21867 , 477 , 32 , 1 , 1 , 21830
+543 , 21868 , 476 , 31 , 1 , 1 , 21830
+543 , 21869 , 475 , 31 , 1 , 1 , 21830
+543 , 21870 , 475 , 31 , 1 , 1 , 21830
+543 , 21871 , 475 , 41 , 1 , 1 , 21830
+543 , 21872 , 475 , 41 , 1 , 1 , 21830
+543 , 21873 , 475 , 31 , 1 , 1 , 21830
+543 , 21874 , 475 , 31 , 1 , 1 , 21830
+543 , 21875 , 486 , 11 , 1 , 1 , 21830
+543 , 21876 , 474 , 31 , 1 , 1 , 21830
+543 , 21877 , 474 , 31 , 1 , 1 , 21830
+543 , 21878 , 474 , 31 , 1 , 1 , 21830
+543 , 21879 , 473 , 31 , 1 , 1 , 21830
+543 , 21880 , 472 , 31 , 1 , 1 , 21830
+543 , 21881 , 472 , 31 , 1 , 1 , 21830
+543 , 21882 , 471 , 41 , 1 , 1 , 21830
+543 , 21883 , 471 , 31 , 1 , 1 , 21830
+543 , 21884 , 471 , 41 , 1 , 1 , 21830
+543 , 21885 , 485 , 21 , 1 , 1 , 21830
+543 , 21886 , 482 , 21 , 1 , 1 , 21830
+543 , 21887 , 478 , 21 , 1 , 1 , 21830
+543 , 21888 , 474 , 21 , 1 , 1 , 21830
+543 , 21889 , 493 , 11 , 1 , 1 , 21830
+543 , 21890 , 492 , 11 , 1 , 1 , 21830
+543 , 21891 , 492 , 11 , 1 , 1 , 21830
+543 , 21892 , 491 , 21 , 1 , 1 , 21830
+543 , 21893 , 492 , 21 , 1 , 1 , 21830
+543 , 21894 , 489 , 21 , 1 , 1 , 21830
+543 , 21895 , 490 , 21 , 1 , 1 , 21830
+543 , 21896 , 471 , 31 , 1 , 1 , 21830
+543 , 21897 , 470 , 41 , 1 , 1 , 21830
+543 , 21898 , 470 , 41 , 1 , 1 , 21830
+543 , 21899 , 470 , 31 , 1 , 1 , 21830
+543 , 21900 , 469 , 41 , 1 , 1 , 21830
+543 , 21901 , 469 , 41 , 1 , 1 , 21830
+543 , 21902 , 466 , 41 , 1 , 1 , 21830
+543 , 21903 , 469 , 11 , 1 , 1 , 21830
+543 , 21904 , 466 , 41 , 1 , 1 , 21830
+543 , 21905 , 468 , 11 , 1 , 1 , 21830
+543 , 21906 , 463 , 31 , 1 , 1 , 21830
+543 , 21907 , 463 , 41 , 1 , 1 , 21830
+543 , 21908 , 462 , 41 , 1 , 1 , 21830
+543 , 21909 , 462 , 41 , 1 , 1 , 21830
+543 , 21910 , 462 , 41 , 1 , 1 , 21830
+543 , 21911 , 492 , 21 , 1 , 1 , 21830
+543 , 21912 , 490 , 21 , 1 , 1 , 21830
+543 , 21913 , 487 , 21 , 1 , 1 , 21830
+543 , 21914 , 487 , 21 , 1 , 1 , 21830
+543 , 21915 , 493 , 11 , 1 , 1 , 21830
+543 , 21916 , 489 , 11 , 1 , 1 , 21830
+543 , 21917 , 481 , 31 , 1 , 1 , 21830
+543 , 21918 , 481 , 31 , 1 , 1 , 21830
+543 , 21919 , 481 , 31 , 1 , 1 , 21830
+543 , 21920 , 479 , 31 , 1 , 1 , 21830
+543 , 21921 , 479 , 31 , 1 , 1 , 21830
+543 , 21922 , 478 , 31 , 1 , 1 , 21830
+543 , 21923 , 466 , 11 , 1 , 1 , 21830
+543 , 21924 , 461 , 41 , 1 , 1 , 21830
+543 , 21925 , 461 , 41 , 1 , 1 , 21830
+543 , 21926 , 461 , 41 , 1 , 1 , 21830
+543 , 21927 , 434 , 13 , 1 , 1 , 21830
+543 , 21928 , 429 , 12 , 1 , 1 , 21830
+543 , 21929 , 419 , 41 , 1 , 1 , 21830
+543 , 21930 , 419 , 41 , 1 , 1 , 21830
+543 , 21931 , 419 , 41 , 1 , 1 , 21830
+543 , 21932 , 419 , 31 , 1 , 1 , 21830
+543 , 21933 , 415 , 52 , 1 , 1 , 21830
+543 , 21934 , 415 , 31 , 1 , 1 , 21830
+543 , 21935 , 415 , 42 , 1 , 1 , 21830
+543 , 21936 , 415 , 41 , 1 , 1 , 21830
+543 , 21937 , 415 , 41 , 1 , 1 , 21830
+543 , 21938 , 415 , 41 , 1 , 1 , 21830
+543 , 21939 , 415 , 41 , 1 , 1 , 21830
+543 , 21940 , 415 , 31 , 1 , 1 , 21830
+543 , 21941 , 415 , 31 , 1 , 1 , 21830
+543 , 21942 , 415 , 41 , 1 , 1 , 21830
+543 , 21943 , 424 , 42 , 1 , 1 , 21830
+543 , 21944 , 423 , 52 , 1 , 1 , 21830
+543 , 21945 , 422 , 31 , 1 , 1 , 21830
+543 , 21946 , 422 , 31 , 1 , 1 , 21830
+543 , 21947 , 421 , 52 , 1 , 1 , 21830
+543 , 21948 , 419 , 52 , 1 , 1 , 21830
+543 , 21949 , 417 , 12 , 1 , 1 , 21830
+543 , 21950 , 426 , 31 , 1 , 1 , 21830
+543 , 21951 , 437 , 32 , 1 , 1 , 21830
+543 , 21952 , 437 , 32 , 1 , 1 , 21830
+543 , 21953 , 436 , 32 , 1 , 1 , 21830
+543 , 21954 , 436 , 32 , 1 , 1 , 21830
+543 , 21955 , 436 , 22 , 1 , 1 , 21830
+543 , 21956 , 436 , 32 , 1 , 1 , 21830
+543 , 21957 , 436 , 32 , 1 , 1 , 21830
+543 , 21958 , 436 , 32 , 1 , 1 , 21830
+543 , 21959 , 436 , 22 , 1 , 1 , 21830
+543 , 21960 , 436 , 22 , 1 , 1 , 21830
+543 , 21961 , 436 , 32 , 1 , 1 , 21830
+543 , 21962 , 436 , 22 , 1 , 1 , 21830
+543 , 21963 , 403 , 11 , 1 , 1 , 21830
+543 , 21964 , 427 , 11 , 1 , 1 , 21830
+543 , 21965 , 444 , 12 , 1 , 1 , 21830
+543 , 21966 , 471 , 11 , 1 , 1 , 21830
+543 , 21967 , 426 , 11 , 1 , 1 , 21830
+543 , 21968 , 392 , 11 , 1 , 1 , 21830
+543 , 21969 , 406 , 52 , 1 , 1 , 21830
+543 , 21970 , 405 , 42 , 1 , 1 , 21830
+543 , 21971 , 404 , 41 , 1 , 1 , 21830
+543 , 21972 , 404 , 41 , 1 , 1 , 21830
+543 , 21973 , 402 , 31 , 1 , 1 , 21830
+543 , 21974 , 400 , 62 , 1 , 1 , 21830
+543 , 21975 , 399 , 53 , 1 , 1 , 21830
+543 , 21976 , 398 , 53 , 1 , 1 , 21830
+543 , 21977 , 398 , 53 , 1 , 1 , 21830
+543 , 21978 , 398 , 43 , 1 , 1 , 21830
+543 , 21979 , 398 , 52 , 1 , 1 , 21830
+543 , 21980 , 397 , 41 , 1 , 1 , 21830
+543 , 21981 , 396 , 41 , 1 , 1 , 21830
+543 , 21982 , 396 , 41 , 1 , 1 , 21830
+543 , 21983 , 394 , 41 , 1 , 1 , 21830
+543 , 21984 , 391 , 41 , 1 , 1 , 21830
+543 , 21985 , 390 , 41 , 1 , 1 , 21830
+543 , 21986 , 390 , 41 , 1 , 1 , 21830
+543 , 21987 , 390 , 52 , 1 , 1 , 21830
+543 , 21988 , 389 , 52 , 1 , 1 , 21830
+543 , 21989 , 389 , 41 , 1 , 1 , 21830
+543 , 21990 , 389 , 41 , 1 , 1 , 21830
+543 , 21991 , 388 , 52 , 1 , 1 , 21830
+543 , 21992 , 388 , 53 , 1 , 1 , 21830
+543 , 21993 , 387 , 52 , 1 , 1 , 21830
+543 , 21994 , 383 , 52 , 1 , 1 , 21830
+543 , 21995 , 382 , 52 , 1 , 1 , 21830
+543 , 21996 , 382 , 41 , 1 , 1 , 21830
+543 , 21997 , 381 , 52 , 1 , 1 , 21830
+543 , 21998 , 381 , 41 , 1 , 1 , 21830
+543 , 21999 , 381 , 41 , 1 , 1 , 21830
+543 , 22000 , 381 , 41 , 1 , 1 , 21830
+543 , 22001 , 381 , 41 , 1 , 1 , 21830
+543 , 22002 , 380 , 41 , 1 , 1 , 21830
+543 , 22003 , 378 , 52 , 1 , 1 , 21830
+543 , 22004 , 375 , 52 , 1 , 1 , 21830
+543 , 22005 , 374 , 52 , 1 , 1 , 21830
+543 , 22006 , 374 , 41 , 1 , 1 , 21830
+543 , 22007 , 374 , 52 , 1 , 1 , 21830
+543 , 22008 , 374 , 42 , 1 , 1 , 21830
+543 , 22009 , 374 , 42 , 1 , 1 , 21830
+543 , 22010 , 374 , 42 , 1 , 1 , 21830
+543 , 22011 , 374 , 42 , 1 , 1 , 21830
+543 , 22012 , 374 , 41 , 1 , 1 , 21830
+543 , 22013 , 373 , 41 , 1 , 1 , 21830
+543 , 22014 , 371 , 31 , 1 , 1 , 21830
+543 , 22015 , 371 , 31 , 1 , 1 , 21830
+543 , 22016 , 371 , 41 , 1 , 1 , 21830
+543 , 22017 , 371 , 41 , 1 , 1 , 21830
+543 , 22018 , 371 , 31 , 1 , 1 , 21830
+543 , 22019 , 371 , 52 , 1 , 1 , 21830
+543 , 22020 , 371 , 21 , 1 , 1 , 21830
+543 , 22021 , 371 , 52 , 1 , 1 , 21830
+543 , 22022 , 371 , 31 , 1 , 1 , 21830
+543 , 22023 , 371 , 41 , 1 , 1 , 21830
+543 , 22024 , 554 , 21 , 1 , 1 , 21864 21861 22008 21868 21944 22016 21886 21970 21950 21963 21863 21975 21905 21903 21899 21844 21926 21862 21989 21964 22022 21999 21893 21889 21928 21965 21840 21853 21941 21981 21906 21924 21901 21935 21967 21892 21949 21918 21896 21936 22002 21986 22000 21866 22019 22014 21914 21880 21878 22003 21909 22005 21842 21848 21875 21877 21890 21982 21838 22004 21846 21997 21947 21996 22009 21974 21882 21872 21940 22023 21895 21983 21847 21851 22017 21973 21994 21869 21876 21831 21995 21900 21968 21984 22013 21871 21910 21998 21954 21942 21958 21993 21898 21836 21943 21849 21959 21976 21855 21850 21930 21884 21992 21923 21894 21832 21865 21925 21854 21962 21837 21972 21938 21887 21867 21939 21945 21859 22007 21966 21897 22021 21951 21971 21916 21980 21922 21937 22011 21881 21961 21955 21879 22006 21978 21979 21885 21860 21948 21969 21843 22012 21833 21985 21873 21917 21856 21874 21883 21888 21956 21857 21870 21988 21913 21991 21957 21932 21953 21927 21904 21902 22015 21908 21931 22010 21845 21839 21852 21911 21891 21858 21960 21912 22001 21919 21977 21907 22020 21834 21933 21934 22018 21921 21841 21915 21952 21987 21929 21920 21946 21990 21835
+544 , 22025 , 4 , 11 , 1 , 1 ,
+544 , 22026 , 92 , 52 , 1 , 1 , 22025
+544 , 22027 , 101 , 52 , 1 , 1 , 22025
+544 , 22028 , 101 , 52 , 1 , 1 , 22025
+544 , 22029 , 96 , 52 , 1 , 1 , 22025
+544 , 22030 , 96 , 52 , 1 , 1 , 22025
+544 , 22031 , 96 , 52 , 1 , 1 , 22025
+544 , 22032 , 95 , 62 , 1 , 1 , 22025
+544 , 22033 , 144 , 31 , 1 , 1 , 22025
+544 , 22034 , 144 , 31 , 1 , 1 , 22025
+544 , 22035 , 144 , 31 , 1 , 1 , 22025
+544 , 22036 , 144 , 31 , 1 , 1 , 22025
+544 , 22037 , 143 , 31 , 1 , 1 , 22025
+544 , 22038 , 143 , 41 , 1 , 1 , 22025
+544 , 22039 , 143 , 31 , 1 , 1 , 22025
+544 , 22040 , 143 , 31 , 1 , 1 , 22025
+544 , 22041 , 143 , 31 , 1 , 1 , 22025
+544 , 22042 , 143 , 31 , 1 , 1 , 22025
+544 , 22043 , 137 , 41 , 1 , 1 , 22025
+544 , 22044 , 137 , 41 , 1 , 1 , 22025
+544 , 22045 , 137 , 31 , 1 , 1 , 22025
+544 , 22046 , 137 , 41 , 1 , 1 , 22025
+544 , 22047 , 147 , 31 , 1 , 1 , 22025
+544 , 22048 , 147 , 31 , 1 , 1 , 22025
+544 , 22049 , 147 , 31 , 1 , 1 , 22025
+544 , 22050 , 146 , 31 , 1 , 1 , 22025
+544 , 22051 , 145 , 31 , 1 , 1 , 22025
+544 , 22052 , 144 , 31 , 1 , 1 , 22025
+544 , 22053 , 144 , 31 , 1 , 1 , 22025
+544 , 22054 , 144 , 31 , 1 , 1 , 22025
+544 , 22055 , 144 , 31 , 1 , 1 , 22025
+544 , 22056 , 129 , 77 , 1 , 1 , 22025
+544 , 22057 , 128 , 87 , 1 , 1 , 22025
+544 , 22058 , 128 , 87 , 1 , 1 , 22025
+544 , 22059 , 126 , 85 , 1 , 1 , 22025
+544 , 22060 , 124 , 85 , 1 , 1 , 22025
+544 , 22061 , 125 , 52 , 1 , 1 , 22025
+544 , 22062 , 125 , 42 , 1 , 1 , 22025
+544 , 22063 , 125 , 42 , 1 , 1 , 22025
+544 , 22064 , 125 , 42 , 1 , 1 , 22025
+544 , 22065 , 125 , 31 , 1 , 1 , 22025
+544 , 22066 , 125 , 41 , 1 , 1 , 22025
+544 , 22067 , 124 , 41 , 1 , 1 , 22025
+544 , 22068 , 124 , 41 , 1 , 1 , 22025
+544 , 22069 , 123 , 41 , 1 , 1 , 22025
+544 , 22070 , 119 , 41 , 1 , 1 , 22025
+544 , 22071 , 119 , 52 , 1 , 1 , 22025
+544 , 22072 , 119 , 41 , 1 , 1 , 22025
+544 , 22073 , 119 , 41 , 1 , 1 , 22025
+544 , 22074 , 119 , 41 , 1 , 1 , 22025
+544 , 22075 , 119 , 41 , 1 , 1 , 22025
+544 , 22076 , 119 , 41 , 1 , 1 , 22025
+544 , 22077 , 119 , 52 , 1 , 1 , 22025
+544 , 22078 , 119 , 41 , 1 , 1 , 22025
+544 , 22079 , 119 , 42 , 1 , 1 , 22025
+544 , 22080 , 119 , 41 , 1 , 1 , 22025
+544 , 22081 , 112 , 52 , 1 , 1 , 22025
+544 , 22082 , 106 , 52 , 1 , 1 , 22025
+544 , 22083 , 105 , 52 , 1 , 1 , 22025
+544 , 22084 , 104 , 52 , 1 , 1 , 22025
+544 , 22085 , 104 , 52 , 1 , 1 , 22025
+544 , 22086 , 104 , 52 , 1 , 1 , 22025
+544 , 22087 , 101 , 52 , 1 , 1 , 22025
+544 , 22088 , 101 , 62 , 1 , 1 , 22025
+544 , 22089 , 95 , 72 , 1 , 1 , 22025
+544 , 22090 , 92 , 52 , 1 , 1 , 22025
+544 , 22091 , 92 , 62 , 1 , 1 , 22025
+544 , 22092 , 91 , 52 , 1 , 1 , 22025
+544 , 22093 , 91 , 52 , 1 , 1 , 22025
+544 , 22094 , 95 , 62 , 1 , 1 , 22025
+544 , 22095 , 91 , 52 , 1 , 1 , 22025
+544 , 22096 , 91 , 42 , 1 , 1 , 22025
+544 , 22097 , 91 , 63 , 1 , 1 , 22025
+544 , 22098 , 91 , 43 , 1 , 1 , 22025
+544 , 22099 , 91 , 42 , 1 , 1 , 22025
+544 , 22100 , 91 , 41 , 1 , 1 , 22025
+544 , 22101 , 91 , 41 , 1 , 1 , 22025
+544 , 22102 , 91 , 42 , 1 , 1 , 22025
+544 , 22103 , 83 , 52 , 1 , 1 , 22025
+544 , 22104 , 82 , 52 , 1 , 1 , 22025
+544 , 22105 , 81 , 42 , 1 , 1 , 22025
+544 , 22106 , 80 , 42 , 1 , 1 , 22025
+544 , 22107 , 72 , 52 , 1 , 1 , 22025
+544 , 22108 , 70 , 42 , 1 , 1 , 22025
+544 , 22109 , 59 , 255 , 1 , 1 , 22025
+544 , 22110 , 59 , 245 , 1 , 1 , 22025
+544 , 22111 , 59 , 234 , 1 , 1 , 22025
+544 , 22112 , 59 , 255 , 1 , 1 , 22025
+544 , 22113 , 59 , 255 , 1 , 1 , 22025
+544 , 22114 , 59 , 255 , 1 , 1 , 22025
+544 , 22115 , 58 , 256 , 1 , 1 , 22025
+544 , 22116 , 58 , 245 , 1 , 1 , 22025
+544 , 22117 , 58 , 256 , 1 , 1 , 22025
+544 , 22118 , 58 , 235 , 1 , 1 , 22025
+544 , 22119 , 58 , 256 , 1 , 1 , 22025
+544 , 22120 , 58 , 255 , 1 , 1 , 22025
+544 , 22121 , 58 , 246 , 1 , 1 , 22025
+544 , 22122 , 58 , 256 , 1 , 1 , 22025
+544 , 22123 , 58 , 256 , 1 , 1 , 22025
+544 , 22124 , 58 , 235 , 1 , 1 , 22025
+544 , 22125 , 51 , 240 , 1 , 1 , 22025
+544 , 22126 , 51 , 229 , 1 , 1 , 22025
+544 , 22127 , 51 , 271 , 1 , 1 , 22025
+544 , 22128 , 51 , 241 , 1 , 1 , 22025
+544 , 22129 , 51 , 272 , 1 , 1 , 22025
+544 , 22130 , 51 , 241 , 1 , 1 , 22025
+544 , 22131 , 50 , 241 , 1 , 1 , 22025
+544 , 22132 , 50 , 252 , 1 , 1 , 22025
+544 , 22133 , 50 , 242 , 1 , 1 , 22025
+544 , 22134 , 50 , 230 , 1 , 1 , 22025
+544 , 22135 , 50 , 231 , 1 , 1 , 22025
+544 , 22136 , 50 , 231 , 1 , 1 , 22025
+544 , 22137 , 50 , 242 , 1 , 1 , 22025
+544 , 22138 , 50 , 241 , 1 , 1 , 22025
+544 , 22139 , 50 , 262 , 1 , 1 , 22025
+544 , 22140 , 50 , 251 , 1 , 1 , 22025
+544 , 22141 , 40 , 80 , 1 , 1 , 22025
+544 , 22142 , 40 , 79 , 1 , 1 , 22025
+544 , 22143 , 40 , 80 , 1 , 1 , 22025
+544 , 22144 , 40 , 98 , 1 , 1 , 22025
+544 , 22145 , 40 , 76 , 1 , 1 , 22025
+544 , 22146 , 40 , 78 , 1 , 1 , 22025
+544 , 22147 , 57 , 74 , 1 , 1 , 22025
+544 , 22148 , 57 , 63 , 1 , 1 , 22025
+544 , 22149 , 57 , 63 , 1 , 1 , 22025
+544 , 22150 , 57 , 74 , 1 , 1 , 22025
+544 , 22151 , 57 , 64 , 1 , 1 , 22025
+544 , 22152 , 56 , 64 , 1 , 1 , 22025
+544 , 22153 , 56 , 64 , 1 , 1 , 22025
+544 , 22154 , 54 , 65 , 1 , 1 , 22025
+544 , 22155 , 54 , 76 , 1 , 1 , 22025
+544 , 22156 , 54 , 76 , 1 , 1 , 22025
+544 , 22157 , 54 , 75 , 1 , 1 , 22025
+544 , 22158 , 54 , 75 , 1 , 1 , 22025
+544 , 22159 , 53 , 78 , 1 , 1 , 22025
+544 , 22160 , 53 , 75 , 1 , 1 , 22025
+544 , 22161 , 53 , 65 , 1 , 1 , 22025
+544 , 22162 , 53 , 66 , 1 , 1 , 22025
+544 , 22163 , 53 , 76 , 1 , 1 , 22025
+544 , 22164 , 49 , 79 , 1 , 1 , 22025
+544 , 22165 , 49 , 73 , 1 , 1 , 22025
+544 , 22166 , 49 , 73 , 1 , 1 , 22025
+544 , 22167 , 49 , 73 , 1 , 1 , 22025
+544 , 22168 , 49 , 73 , 1 , 1 , 22025
+544 , 22169 , 49 , 73 , 1 , 1 , 22025
+544 , 22170 , 49 , 42 , 1 , 1 , 22025
+544 , 22171 , 49 , 82 , 1 , 1 , 22025
+544 , 22172 , 48 , 83 , 1 , 1 , 22025
+544 , 22173 , 48 , 72 , 1 , 1 , 22025
+544 , 22174 , 44 , 84 , 1 , 1 , 22025
+544 , 22175 , 44 , 84 , 1 , 1 , 22025
+544 , 22176 , 44 , 52 , 1 , 1 , 22025
+544 , 22177 , 44 , 42 , 1 , 1 , 22025
+544 , 22178 , 44 , 42 , 1 , 1 , 22025
+544 , 22179 , 44 , 84 , 1 , 1 , 22025
+544 , 22180 , 44 , 74 , 1 , 1 , 22025
+544 , 22181 , 44 , 74 , 1 , 1 , 22025
+544 , 22182 , 44 , 85 , 1 , 1 , 22025
+544 , 22183 , 43 , 43 , 1 , 1 , 22025
+544 , 22184 , 39 , 46 , 1 , 1 , 22025
+544 , 22185 , 39 , 46 , 1 , 1 , 22025
+544 , 22186 , 39 , 46 , 1 , 1 , 22025
+544 , 22187 , 39 , 89 , 1 , 1 , 22025
+544 , 22188 , 39 , 89 , 1 , 1 , 22025
+544 , 22189 , 39 , 89 , 1 , 1 , 22025
+544 , 22190 , 39 , 83 , 1 , 1 , 22025
+544 , 22191 , 39 , 83 , 1 , 1 , 22025
+544 , 22192 , 38 , 52 , 1 , 1 , 22025
+544 , 22193 , 38 , 42 , 1 , 1 , 22025
+544 , 22194 , 34 , 42 , 1 , 1 , 22025
+544 , 22195 , 34 , 42 , 1 , 1 , 22025
+544 , 22196 , 34 , 42 , 1 , 1 , 22025
+544 , 22197 , 34 , 52 , 1 , 1 , 22025
+544 , 22198 , 34 , 42 , 1 , 1 , 22025
+544 , 22199 , 34 , 42 , 1 , 1 , 22025
+544 , 22200 , 33 , 42 , 1 , 1 , 22025
+544 , 22201 , 33 , 42 , 1 , 1 , 22025
+544 , 22202 , 33 , 42 , 1 , 1 , 22025
+544 , 22203 , 33 , 42 , 1 , 1 , 22025
+544 , 22204 , 31 , 46 , 1 , 1 , 22025
+544 , 22205 , 30 , 46 , 1 , 1 , 22025
+544 , 22206 , 30 , 46 , 1 , 1 , 22025
+544 , 22207 , 29 , 36 , 1 , 1 , 22025
+544 , 22208 , 29 , 46 , 1 , 1 , 22025
+544 , 22209 , 29 , 46 , 1 , 1 , 22025
+544 , 22210 , 29 , 46 , 1 , 1 , 22025
+544 , 22211 , 29 , 46 , 1 , 1 , 22025
+544 , 22212 , 29 , 46 , 1 , 1 , 22025
+544 , 22213 , 28 , 46 , 1 , 1 , 22025
+544 , 22214 , 28 , 41 , 1 , 1 , 22025
+544 , 22215 , 28 , 31 , 1 , 1 , 22025
+544 , 22216 , 28 , 42 , 1 , 1 , 22025
+544 , 22217 , 28 , 41 , 1 , 1 , 22025
+544 , 22218 , 28 , 31 , 1 , 1 , 22025
+544 , 22219 , 568 , 11 , 1 , 1 , 22054 22089 22157 22211 22032 22049 22038 22100 22074 22033 22162 22179 22145 22064 22039 22111 22044 22135 22140 22036 22103 22139 22043 22148 22176 22196 22191 22177 22160 22137 22165 22204 22150 22029 22057 22126 22181 22206 22026 22158 22042 22107 22113 22062 22082 22116 22058 22114 22217 22030 22182 22035 22053 22125 22084 22201 22115 22080 22040 22063 22047 22208 22187 22164 22081 22185 22138 22123 22128 22067 22088 22159 22218 22090 22119 22133 22205 22046 22108 22143 22151 22147 22142 22209 22069 22144 22109 22189 22166 22070 22171 22059 22072 22124 22197 22075 22212 22153 22068 22163 22077 22091 22200 22152 22156 22188 22034 22203 22097 22105 22175 22121 22141 22079 22087 22183 22102 22096 22118 22110 22154 22195 22095 22213 22131 22192 22199 22190 22127 22052 22149 22216 22066 22194 22076 22193 22134 22173 22051 22198 22207 22048 22094 22122 22083 22178 22180 22210 22184 22037 22098 22045 22056 22130 22101 22168 22172 22093 22065 22086 22031 22167 22129 22120 22041 22027 22169 22117 22092 22104 22078 22132 22136 22060 22071 22055 22061 22202 22112 22161 22174 22146 22050 22028 22099 22073 22155 22170 22214 22085 22106 22186 22215
+544 , 22220 , 687 , 31 , 1 , 1 , 22219
+544 , 22221 , 676 , 31 , 1 , 1 , 22219
+544 , 22222 , 687 , 21 , 1 , 1 , 22219
+544 , 22223 , 685 , 11 , 1 , 1 , 22219
+544 , 22224 , 675 , 31 , 1 , 1 , 22219
+544 , 22225 , 675 , 31 , 1 , 1 , 22219
+544 , 22226 , 675 , 21 , 1 , 1 , 22219
+544 , 22227 , 674 , 31 , 1 , 1 , 22219
+544 , 22228 , 674 , 21 , 1 , 1 , 22219
+544 , 22229 , 674 , 21 , 1 , 1 , 22219
+544 , 22230 , 674 , 31 , 1 , 1 , 22219
+544 , 22231 , 674 , 31 , 1 , 1 , 22219
+544 , 22232 , 688 , 11 , 1 , 1 , 22219
+544 , 22233 , 677 , 21 , 1 , 1 , 22219
+544 , 22234 , 677 , 21 , 1 , 1 , 22219
+544 , 22235 , 683 , 32 , 1 , 1 , 22219
+544 , 22236 , 685 , 32 , 1 , 1 , 22219
+544 , 22237 , 687 , 21 , 1 , 1 , 22219
+544 , 22238 , 686 , 11 , 1 , 1 , 22219
+544 , 22239 , 687 , 32 , 1 , 1 , 22219
+544 , 22240 , 681 , 32 , 1 , 1 , 22219
+544 , 22241 , 674 , 32 , 1 , 1 , 22219
+544 , 22242 , 682 , 0 , 1 , 1 , 22219
+544 , 22243 , 678 , 32 , 1 , 1 , 22219
+544 , 22244 , 682 , 11 , 1 , 1 , 22219
+544 , 22245 , 674 , 32 , 1 , 1 , 22219
+544 , 22246 , 672 , 32 , 1 , 1 , 22219
+544 , 22247 , 681 , 32 , 1 , 1 , 22219
+544 , 22248 , 670 , 32 , 1 , 1 , 22219
+544 , 22249 , 670 , 32 , 1 , 1 , 22219
+544 , 22250 , 673 , 32 , 1 , 1 , 22219
+544 , 22251 , 647 , 13 , 1 , 1 , 22219
+544 , 22252 , 645 , 12 , 1 , 1 , 22219
+544 , 22253 , 645 , 12 , 1 , 1 , 22219
+544 , 22254 , 672 , 11 , 1 , 1 , 22219
+544 , 22255 , 685 , 32 , 1 , 1 , 22219
+544 , 22256 , 670 , 32 , 1 , 1 , 22219
+544 , 22257 , 667 , 32 , 1 , 1 , 22219
+544 , 22258 , 664 , 11 , 1 , 1 , 22219
+544 , 22259 , 665 , 31 , 1 , 1 , 22219
+544 , 22260 , 663 , 31 , 1 , 1 , 22219
+544 , 22261 , 663 , 41 , 1 , 1 , 22219
+544 , 22262 , 663 , 31 , 1 , 1 , 22219
+544 , 22263 , 662 , 41 , 1 , 1 , 22219
+544 , 22264 , 662 , 41 , 1 , 1 , 22219
+544 , 22265 , 662 , 41 , 1 , 1 , 22219
+544 , 22266 , 662 , 31 , 1 , 1 , 22219
+544 , 22267 , 662 , 41 , 1 , 1 , 22219
+544 , 22268 , 662 , 31 , 1 , 1 , 22219
+544 , 22269 , 661 , 41 , 1 , 1 , 22219
+544 , 22270 , 659 , 32 , 1 , 1 , 22219
+544 , 22271 , 659 , 32 , 1 , 1 , 22219
+544 , 22272 , 659 , 42 , 1 , 1 , 22219
+544 , 22273 , 659 , 32 , 1 , 1 , 22219
+544 , 22274 , 659 , 32 , 1 , 1 , 22219
+544 , 22275 , 659 , 42 , 1 , 1 , 22219
+544 , 22276 , 659 , 32 , 1 , 1 , 22219
+544 , 22277 , 659 , 31 , 1 , 1 , 22219
+544 , 22278 , 659 , 31 , 1 , 1 , 22219
+544 , 22279 , 658 , 31 , 1 , 1 , 22219
+544 , 22280 , 660 , 11 , 1 , 1 , 22219
+544 , 22281 , 659 , 32 , 1 , 1 , 22219
+544 , 22282 , 656 , 41 , 1 , 1 , 22219
+544 , 22283 , 656 , 31 , 1 , 1 , 22219
+544 , 22284 , 656 , 41 , 1 , 1 , 22219
+544 , 22285 , 655 , 31 , 1 , 1 , 22219
+544 , 22286 , 676 , 21 , 1 , 1 , 22219
+544 , 22287 , 642 , 11 , 1 , 1 , 22219
+544 , 22288 , 641 , 11 , 1 , 1 , 22219
+544 , 22289 , 621 , 62 , 1 , 1 , 22219
+544 , 22290 , 621 , 62 , 1 , 1 , 22219
+544 , 22291 , 621 , 52 , 1 , 1 , 22219
+544 , 22292 , 621 , 42 , 1 , 1 , 22219
+544 , 22293 , 621 , 52 , 1 , 1 , 22219
+544 , 22294 , 621 , 52 , 1 , 1 , 22219
+544 , 22295 , 621 , 41 , 1 , 1 , 22219
+544 , 22296 , 620 , 52 , 1 , 1 , 22219
+544 , 22297 , 620 , 62 , 1 , 1 , 22219
+544 , 22298 , 618 , 63 , 1 , 1 , 22219
+544 , 22299 , 617 , 63 , 1 , 1 , 22219
+544 , 22300 , 617 , 53 , 1 , 1 , 22219
+544 , 22301 , 617 , 63 , 1 , 1 , 22219
+544 , 22302 , 617 , 43 , 1 , 1 , 22219
+544 , 22303 , 640 , 41 , 1 , 1 , 22219
+544 , 22304 , 638 , 41 , 1 , 1 , 22219
+544 , 22305 , 636 , 41 , 1 , 1 , 22219
+544 , 22306 , 636 , 42 , 1 , 1 , 22219
+544 , 22307 , 636 , 31 , 1 , 1 , 22219
+544 , 22308 , 636 , 52 , 1 , 1 , 22219
+544 , 22309 , 636 , 31 , 1 , 1 , 22219
+544 , 22310 , 643 , 31 , 1 , 1 , 22219
+544 , 22311 , 638 , 31 , 1 , 1 , 22219
+544 , 22312 , 635 , 32 , 1 , 1 , 22219
+544 , 22313 , 638 , 31 , 1 , 1 , 22219
+544 , 22314 , 639 , 33 , 1 , 1 , 22219
+544 , 22315 , 635 , 33 , 1 , 1 , 22219
+544 , 22316 , 635 , 43 , 1 , 1 , 22219
+544 , 22317 , 634 , 43 , 1 , 1 , 22219
+544 , 22318 , 634 , 33 , 1 , 1 , 22219
+544 , 22319 , 634 , 43 , 1 , 1 , 22219
+544 , 22320 , 634 , 33 , 1 , 1 , 22219
+544 , 22321 , 636 , 42 , 1 , 1 , 22219
+544 , 22322 , 633 , 31 , 1 , 1 , 22219
+544 , 22323 , 632 , 31 , 1 , 1 , 22219
+544 , 22324 , 632 , 21 , 1 , 1 , 22219
+544 , 22325 , 630 , 32 , 1 , 1 , 22219
+544 , 22326 , 629 , 32 , 1 , 1 , 22219
+544 , 22327 , 630 , 32 , 1 , 1 , 22219
+544 , 22328 , 629 , 32 , 1 , 1 , 22219
+544 , 22329 , 628 , 32 , 1 , 1 , 22219
+544 , 22330 , 627 , 32 , 1 , 1 , 22219
+544 , 22331 , 629 , 32 , 1 , 1 , 22219
+544 , 22332 , 628 , 32 , 1 , 1 , 22219
+544 , 22333 , 627 , 32 , 1 , 1 , 22219
+544 , 22334 , 632 , 32 , 1 , 1 , 22219
+544 , 22335 , 634 , 21 , 1 , 1 , 22219
+544 , 22336 , 627 , 32 , 1 , 1 , 22219
+544 , 22337 , 632 , 32 , 1 , 1 , 22219
+544 , 22338 , 626 , 32 , 1 , 1 , 22219
+544 , 22339 , 625 , 33 , 1 , 1 , 22219
+544 , 22340 , 623 , 32 , 1 , 1 , 22219
+544 , 22341 , 628 , 12 , 1 , 1 , 22219
+544 , 22342 , 623 , 11 , 1 , 1 , 22219
+544 , 22343 , 642 , 11 , 1 , 1 , 22219
+544 , 22344 , 629 , 12 , 1 , 1 , 22219
+544 , 22345 , 628 , 12 , 1 , 1 , 22219
+544 , 22346 , 603 , 11 , 1 , 1 , 22219
+544 , 22347 , 617 , 43 , 1 , 1 , 22219
+544 , 22348 , 617 , 72 , 1 , 1 , 22219
+544 , 22349 , 617 , 62 , 1 , 1 , 22219
+544 , 22350 , 617 , 62 , 1 , 1 , 22219
+544 , 22351 , 617 , 62 , 1 , 1 , 22219
+544 , 22352 , 614 , 62 , 1 , 1 , 22219
+544 , 22353 , 614 , 52 , 1 , 1 , 22219
+544 , 22354 , 613 , 72 , 1 , 1 , 22219
+544 , 22355 , 613 , 41 , 1 , 1 , 22219
+544 , 22356 , 613 , 52 , 1 , 1 , 22219
+544 , 22357 , 613 , 62 , 1 , 1 , 22219
+544 , 22358 , 613 , 72 , 1 , 1 , 22219
+544 , 22359 , 612 , 62 , 1 , 1 , 22219
+544 , 22360 , 612 , 52 , 1 , 1 , 22219
+544 , 22361 , 612 , 41 , 1 , 1 , 22219
+544 , 22362 , 610 , 52 , 1 , 1 , 22219
+544 , 22363 , 610 , 52 , 1 , 1 , 22219
+544 , 22364 , 609 , 41 , 1 , 1 , 22219
+544 , 22365 , 609 , 52 , 1 , 1 , 22219
+544 , 22366 , 609 , 52 , 1 , 1 , 22219
+544 , 22367 , 608 , 52 , 1 , 1 , 22219
+544 , 22368 , 608 , 52 , 1 , 1 , 22219
+544 , 22369 , 608 , 52 , 1 , 1 , 22219
+544 , 22370 , 608 , 52 , 1 , 1 , 22219
+544 , 22371 , 607 , 52 , 1 , 1 , 22219
+544 , 22372 , 606 , 52 , 1 , 1 , 22219
+544 , 22373 , 605 , 52 , 1 , 1 , 22219
+544 , 22374 , 605 , 52 , 1 , 1 , 22219
+544 , 22375 , 604 , 52 , 1 , 1 , 22219
+544 , 22376 , 604 , 52 , 1 , 1 , 22219
+544 , 22377 , 604 , 52 , 1 , 1 , 22219
+544 , 22378 , 604 , 52 , 1 , 1 , 22219
+544 , 22379 , 604 , 52 , 1 , 1 , 22219
+544 , 22380 , 604 , 52 , 1 , 1 , 22219
+544 , 22381 , 604 , 53 , 1 , 1 , 22219
+544 , 22382 , 601 , 42 , 1 , 1 , 22219
+544 , 22383 , 601 , 52 , 1 , 1 , 22219
+544 , 22384 , 601 , 52 , 1 , 1 , 22219
+544 , 22385 , 600 , 41 , 1 , 1 , 22219
+544 , 22386 , 600 , 52 , 1 , 1 , 22219
+544 , 22387 , 600 , 52 , 1 , 1 , 22219
+544 , 22388 , 600 , 41 , 1 , 1 , 22219
+544 , 22389 , 600 , 41 , 1 , 1 , 22219
+544 , 22390 , 600 , 52 , 1 , 1 , 22219
+544 , 22391 , 599 , 41 , 1 , 1 , 22219
+544 , 22392 , 597 , 41 , 1 , 1 , 22219
+544 , 22393 , 596 , 42 , 1 , 1 , 22219
+544 , 22394 , 596 , 42 , 1 , 1 , 22219
+544 , 22395 , 596 , 53 , 1 , 1 , 22219
+544 , 22396 , 596 , 42 , 1 , 1 , 22219
+544 , 22397 , 596 , 42 , 1 , 1 , 22219
+544 , 22398 , 596 , 41 , 1 , 1 , 22219
+544 , 22399 , 596 , 41 , 1 , 1 , 22219
+544 , 22400 , 596 , 41 , 1 , 1 , 22219
+544 , 22401 , 595 , 41 , 1 , 1 , 22219
+544 , 22402 , 594 , 31 , 1 , 1 , 22219
+544 , 22403 , 593 , 31 , 1 , 1 , 22219
+544 , 22404 , 593 , 31 , 1 , 1 , 22219
+544 , 22405 , 593 , 21 , 1 , 1 , 22219
+544 , 22406 , 593 , 42 , 1 , 1 , 22219
+544 , 22407 , 593 , 42 , 1 , 1 , 22219
+544 , 22408 , 593 , 31 , 1 , 1 , 22219
+544 , 22409 , 593 , 31 , 1 , 1 , 22219
+544 , 22410 , 593 , 21 , 1 , 1 , 22219
+544 , 22411 , 593 , 21 , 1 , 1 , 22219
+544 , 22412 , 593 , 21 , 1 , 1 , 22219
+544 , 22413 , 756 , 21 , 1 , 1 , 22383 22267 22321 22326 22276 22251 22260 22272 22275 22240 22411 22378 22384 22301 22393 22242 22362 22388 22401 22250 22382 22292 22266 22316 22329 22254 22360 22371 22396 22351 22404 22226 22243 22358 22288 22361 22257 22310 22397 22327 22394 22224 22352 22228 22269 22325 22285 22300 22283 22304 22354 22298 22379 22232 22319 22406 22271 22317 22262 22239 22337 22376 22293 22399 22291 22338 22386 22256 22340 22284 22346 22238 22289 22234 22353 22359 22410 22366 22323 22324 22333 22259 22356 22370 22306 22374 22270 22345 22344 22372 22318 22227 22241 22299 22349 22279 22400 22290 22368 22237 22233 22247 22363 22322 22403 22308 22287 22297 22235 22252 22249 22389 22286 22244 22220 22385 22281 22253 22390 22348 22405 22230 22398 22357 22332 22312 22296 22365 22335 22380 22350 22395 22375 22314 22369 22377 22412 22280 22302 22364 22336 22320 22258 22246 22315 22408 22330 22248 22391 22392 22274 22268 22265 22273 22305 22225 22331 22313 22278 22264 22339 22355 22294 22231 22342 22277 22409 22222 22341 22343 22261 22229 22402 22255 22373 22381 22347 22236 22263 22221 22223 22367 22334 22245 22407 22328 22282 22295 22309 22303 22387 22311 22307
+545 , 22414 , 4 , 11 , 1 , 1 ,
+545 , 22415 , 29 , 31 , 1 , 1 , 22414
+545 , 22416 , 29 , 31 , 1 , 1 , 22414
+545 , 22417 , 29 , 31 , 1 , 1 , 22414
+545 , 22418 , 29 , 31 , 1 , 1 , 22414
+545 , 22419 , 28 , 31 , 1 , 1 , 22414
+545 , 22420 , 28 , 31 , 1 , 1 , 22414
+545 , 22421 , 28 , 31 , 1 , 1 , 22414
+545 , 22422 , 27 , 31 , 1 , 1 , 22414
+545 , 22423 , 27 , 31 , 1 , 1 , 22414
+545 , 22424 , 27 , 31 , 1 , 1 , 22414
+545 , 22425 , 27 , 31 , 1 , 1 , 22414
+545 , 22426 , 27 , 31 , 1 , 1 , 22414
+545 , 22427 , 27 , 31 , 1 , 1 , 22414
+545 , 22428 , 27 , 31 , 1 , 1 , 22414
+545 , 22429 , 27 , 31 , 1 , 1 , 22414
+545 , 22430 , 27 , 31 , 1 , 1 , 22414
+545 , 22431 , 27 , 31 , 1 , 1 , 22414
+545 , 22432 , 27 , 31 , 1 , 1 , 22414
+545 , 22433 , 27 , 32 , 1 , 1 , 22414
+545 , 22434 , 74 , 0 , 1 , 1 , 22419 22418 22429 22422 22425 22426 22416 22415 22421 22431 22420 22417 22424 22427 22433 22428 22423 22430 22432
+545 , 22435 , 89 , 0 , 1 , 1 , 22434
+545 , 22436 , 89 , 11 , 1 , 1 , 22434
+545 , 22437 , 89 , 11 , 1 , 1 , 22434
+545 , 22438 , 89 , 0 , 1 , 1 , 22434
+545 , 22439 , 88 , 11 , 1 , 1 , 22434
+545 , 22440 , 88 , 11 , 1 , 1 , 22434
+545 , 22441 , 88 , 11 , 1 , 1 , 22434
+545 , 22442 , 88 , 0 , 1 , 1 , 22434
+545 , 22443 , 87 , 0 , 1 , 1 , 22434
+545 , 22444 , 87 , 11 , 1 , 1 , 22434
+545 , 22445 , 87 , 11 , 1 , 1 , 22434
+545 , 22446 , 87 , 11 , 1 , 1 , 22434
+545 , 22447 , 87 , 11 , 1 , 1 , 22434
+545 , 22448 , 87 , 11 , 1 , 1 , 22434
+545 , 22449 , 87 , 11 , 1 , 1 , 22434
+545 , 22450 , 87 , 11 , 1 , 1 , 22434
+545 , 22451 , 87 , 11 , 1 , 1 , 22434
+545 , 22452 , 87 , 11 , 1 , 1 , 22434
+545 , 22453 , 87 , 11 , 1 , 1 , 22434
+545 , 22454 , 114 , 0 , 1 , 1 , 22449 22440 22439 22441 22453 22447 22448 22436 22437 22445 22451 22435 22442 22452 22446 22438 22443 22444 22450
+546 , 22455 , 27 , 233 , 1 , 1 ,
+546 , 22456 , 27 , 233 , 1 , 1 ,
+546 , 22457 , 27 , 254 , 1 , 1 ,
+546 , 22458 , 27 , 243 , 1 , 1 ,
+546 , 22459 , 27 , 233 , 1 , 1 ,
+546 , 22460 , 27 , 223 , 1 , 1 ,
+546 , 22461 , 25 , 209 , 1 , 1 ,
+546 , 22462 , 25 , 188 , 1 , 1 ,
+546 , 22463 , 25 , 188 , 1 , 1 ,
+546 , 22464 , 25 , 188 , 1 , 1 ,
+546 , 22465 , 25 , 188 , 1 , 1 ,
+546 , 22466 , 25 , 178 , 1 , 1 ,
+546 , 22467 , 24 , 157 , 1 , 1 ,
+546 , 22468 , 24 , 146 , 1 , 1 ,
+546 , 22469 , 24 , 147 , 1 , 1 ,
+546 , 22470 , 24 , 147 , 1 , 1 ,
+546 , 22471 , 24 , 136 , 1 , 1 ,
+546 , 22472 , 24 , 136 , 1 , 1 ,
+546 , 22473 , 24 , 136 , 1 , 1 ,
+546 , 22474 , 24 , 147 , 1 , 1 ,
+546 , 22475 , 24 , 136 , 1 , 1 ,
+546 , 22476 , 24 , 146 , 1 , 1 ,
+546 , 22477 , 19 , 107 , 1 , 1 ,
+546 , 22478 , 19 , 112 , 1 , 1 ,
+546 , 22479 , 19 , 108 , 1 , 1 ,
+546 , 22480 , 19 , 111 , 1 , 1 ,
+546 , 22481 , 19 , 118 , 1 , 1 ,
+546 , 22482 , 19 , 108 , 1 , 1 ,
+546 , 22483 , 38 , 72 , 1 , 1 ,
+546 , 22484 , 38 , 82 , 1 , 1 ,
+546 , 22485 , 36 , 72 , 1 , 1 ,
+546 , 22486 , 36 , 72 , 1 , 1 ,
+546 , 22487 , 35 , 83 , 1 , 1 ,
+546 , 22488 , 35 , 83 , 1 , 1 ,
+546 , 22489 , 35 , 82 , 1 , 1 ,
+546 , 22490 , 35 , 92 , 1 , 1 ,
+546 , 22491 , 35 , 92 , 1 , 1 ,
+546 , 22492 , 34 , 82 , 1 , 1 ,
+546 , 22493 , 34 , 82 , 1 , 1 ,
+546 , 22494 , 34 , 72 , 1 , 1 ,
+546 , 22495 , 32 , 82 , 1 , 1 ,
+546 , 22496 , 32 , 72 , 1 , 1 ,
+546 , 22497 , 32 , 83 , 1 , 1 ,
+546 , 22498 , 31 , 72 , 1 , 1 ,
+546 , 22499 , 31 , 72 , 1 , 1 ,
+546 , 22500 , 31 , 72 , 1 , 1 ,
+546 , 22501 , 31 , 72 , 1 , 1 ,
+546 , 22502 , 31 , 72 , 1 , 1 ,
+546 , 22503 , 31 , 72 , 1 , 1 ,
+546 , 22504 , 30 , 82 , 1 , 1 ,
+546 , 22505 , 29 , 72 , 1 , 1 ,
+546 , 22506 , 29 , 72 , 1 , 1 ,
+546 , 22507 , 28 , 72 , 1 , 1 ,
+546 , 22508 , 28 , 72 , 1 , 1 ,
+546 , 22509 , 28 , 82 , 1 , 1 ,
+546 , 22510 , 28 , 82 , 1 , 1 ,
+546 , 22511 , 28 , 82 , 1 , 1 ,
+546 , 22512 , 27 , 82 , 1 , 1 ,
+546 , 22513 , 27 , 82 , 1 , 1 ,
+546 , 22514 , 27 , 72 , 1 , 1 ,
+546 , 22515 , 25 , 83 , 1 , 1 ,
+546 , 22516 , 24 , 73 , 1 , 1 ,
+546 , 22517 , 24 , 72 , 1 , 1 ,
+546 , 22518 , 24 , 82 , 1 , 1 ,
+546 , 22519 , 24 , 82 , 1 , 1 ,
+546 , 22520 , 24 , 82 , 1 , 1 ,
+546 , 22521 , 23 , 92 , 1 , 1 ,
+546 , 22522 , 23 , 82 , 1 , 1 ,
+546 , 22523 , 23 , 82 , 1 , 1 ,
+546 , 22524 , 23 , 82 , 1 , 1 ,
+546 , 22525 , 21 , 82 , 1 , 1 ,
+546 , 22526 , 21 , 82 , 1 , 1 ,
+546 , 22527 , 20 , 82 , 1 , 1 ,
+546 , 22528 , 20 , 82 , 1 , 1 ,
+546 , 22529 , 20 , 92 , 1 , 1 ,
+546 , 22530 , 20 , 82 , 1 , 1 ,
+546 , 22531 , 20 , 82 , 1 , 1 ,
+546 , 22532 , 20 , 82 , 1 , 1 ,
+546 , 22533 , 20 , 82 , 1 , 1 ,
+546 , 22534 , 19 , 82 , 1 , 1 ,
+546 , 22535 , 17 , 92 , 1 , 1 ,
+546 , 22536 , 17 , 92 , 1 , 1 ,
+546 , 22537 , 17 , 92 , 1 , 1 ,
+546 , 22538 , 17 , 92 , 1 , 1 ,
+546 , 22539 , 17 , 72 , 1 , 1 ,
+546 , 22540 , 17 , 82 , 1 , 1 ,
+546 , 22541 , 17 , 72 , 1 , 1 ,
+546 , 22542 , 17 , 72 , 1 , 1 ,
+546 , 22543 , 17 , 82 , 1 , 1 ,
+546 , 22544 , 17 , 82 , 1 , 1 ,
+546 , 22545 , 15 , 82 , 1 , 1 ,
+546 , 22546 , 15 , 82 , 1 , 1 ,
+546 , 22547 , 15 , 72 , 1 , 1 ,
+546 , 22548 , 15 , 82 , 1 , 1 ,
+546 , 22549 , 15 , 82 , 1 , 1 ,
+546 , 22550 , 15 , 82 , 1 , 1 ,
+546 , 22551 , 15 , 72 , 1 , 1 ,
+546 , 22552 , 15 , 82 , 1 , 1 ,
+546 , 22553 , 15 , 72 , 1 , 1 ,
+546 , 22554 , 15 , 82 , 1 , 1 ,
+546 , 22555 , 358 , 82 , 1 , 1 , 22552 22478 22532 22486 22548 22511 22533 22508 22502 22549 22524 22503 22467 22461 22457 22534 22530 22488 22521 22546 22484 22543 22466 22491 22531 22517 22518 22498 22529 22545 22526 22495 22487 22522 22474 22514 22473 22496 22492 22516 22520 22499 22494 22509 22455 22459 22462 22506 22481 22501 22528 22482 22490 22477 22456 22480 22550 22497 22489 22527 22483 22476 22493 22547 22515 22538 22512 22470 22523 22535 22544 22469 22471 22472 22510 22519 22536 22537 22504 22463 22479 22464 22539 22540 22542 22507 22541 22505 22460 22468 22551 22513 22553 22475 22485 22500 22458 22554 22465 22525
+547 , 22556 , 2 , 11 , 1 , 1 ,
+547 , 22557 , 26 , 31 , 1 , 1 , 22556
+547 , 22558 , 26 , 31 , 1 , 1 , 22556
+547 , 22559 , 26 , 31 , 1 , 1 , 22556
+547 , 22560 , 26 , 31 , 1 , 1 , 22556
+547 , 22561 , 26 , 31 , 1 , 1 , 22556
+547 , 22562 , 26 , 31 , 1 , 1 , 22556
+547 , 22563 , 26 , 31 , 1 , 1 , 22556
+547 , 22564 , 26 , 31 , 1 , 1 , 22556
+547 , 22565 , 25 , 41 , 1 , 1 , 22556
+547 , 22566 , 25 , 42 , 1 , 1 , 22556
+547 , 22567 , 25 , 41 , 1 , 1 , 22556
+547 , 22568 , 25 , 31 , 1 , 1 , 22556
+547 , 22569 , 25 , 41 , 1 , 1 , 22556
+547 , 22570 , 24 , 31 , 1 , 1 , 22556
+547 , 22571 , 24 , 41 , 1 , 1 , 22556
+547 , 22572 , 24 , 31 , 1 , 1 , 22556
+547 , 22573 , 24 , 41 , 1 , 1 , 22556
+547 , 22574 , 24 , 41 , 1 , 1 , 22556
+547 , 22575 , 24 , 31 , 1 , 1 , 22556
+547 , 22576 , 80 , 0 , 1 , 1 , 22575 22558 22569 22572 22559 22564 22563 22565 22567 22568 22561 22557 22571 22560 22574 22566 22570 22562 22573
+547 , 22577 , 94 , 11 , 1 , 1 , 22576
+547 , 22578 , 94 , 11 , 1 , 1 , 22576
+547 , 22579 , 94 , 11 , 1 , 1 , 22576
+547 , 22580 , 94 , 11 , 1 , 1 , 22576
+547 , 22581 , 94 , 11 , 1 , 1 , 22576
+547 , 22582 , 94 , 11 , 1 , 1 , 22576
+547 , 22583 , 94 , 11 , 1 , 1 , 22576
+547 , 22584 , 94 , 11 , 1 , 1 , 22576
+547 , 22585 , 93 , 11 , 1 , 1 , 22576
+547 , 22586 , 93 , 11 , 1 , 1 , 22576
+547 , 22587 , 93 , 11 , 1 , 1 , 22576
+547 , 22588 , 93 , 11 , 1 , 1 , 22576
+547 , 22589 , 93 , 11 , 1 , 1 , 22576
+547 , 22590 , 93 , 11 , 1 , 1 , 22576
+547 , 22591 , 93 , 11 , 1 , 1 , 22576
+547 , 22592 , 93 , 11 , 1 , 1 , 22576
+547 , 22593 , 93 , 11 , 1 , 1 , 22576
+547 , 22594 , 93 , 11 , 1 , 1 , 22576
+547 , 22595 , 93 , 11 , 1 , 1 , 22576
+547 , 22596 , 121 , 0 , 1 , 1 , 22577 22594 22591 22578 22585 22590 22580 22595 22581 22586 22587 22593 22583 22582 22588 22589 22579 22592 22584
+548 , 22597 , 3 , 11 , 1 , 1 ,
+548 , 22598 , 86 , 41 , 1 , 1 , 22597
+548 , 22599 , 85 , 42 , 1 , 1 , 22597
+548 , 22600 , 85 , 52 , 1 , 1 , 22597
+548 , 22601 , 84 , 41 , 1 , 1 , 22597
+548 , 22602 , 84 , 41 , 1 , 1 , 22597
+548 , 22603 , 84 , 41 , 1 , 1 , 22597
+548 , 22604 , 84 , 52 , 1 , 1 , 22597
+548 , 22605 , 84 , 42 , 1 , 1 , 22597
+548 , 22606 , 83 , 41 , 1 , 1 , 22597
+548 , 22607 , 83 , 52 , 1 , 1 , 22597
+548 , 22608 , 82 , 52 , 1 , 1 , 22597
+548 , 22609 , 82 , 41 , 1 , 1 , 22597
+548 , 22610 , 95 , 41 , 1 , 1 , 22597
+548 , 22611 , 93 , 41 , 1 , 1 , 22597
+548 , 22612 , 91 , 41 , 1 , 1 , 22597
+548 , 22613 , 119 , 31 , 1 , 1 , 22597
+548 , 22614 , 119 , 41 , 1 , 1 , 22597
+548 , 22615 , 118 , 32 , 1 , 1 , 22597
+548 , 22616 , 118 , 32 , 1 , 1 , 22597
+548 , 22617 , 117 , 31 , 1 , 1 , 22597
+548 , 22618 , 116 , 41 , 1 , 1 , 22597
+548 , 22619 , 115 , 31 , 1 , 1 , 22597
+548 , 22620 , 115 , 31 , 1 , 1 , 22597
+548 , 22621 , 115 , 31 , 1 , 1 , 22597
+548 , 22622 , 115 , 41 , 1 , 1 , 22597
+548 , 22623 , 114 , 31 , 1 , 1 , 22597
+548 , 22624 , 136 , 21 , 1 , 1 , 22597
+548 , 22625 , 136 , 21 , 1 , 1 , 22597
+548 , 22626 , 134 , 86 , 1 , 1 , 22597
+548 , 22627 , 114 , 31 , 1 , 1 , 22597
+548 , 22628 , 113 , 41 , 1 , 1 , 22597
+548 , 22629 , 113 , 41 , 1 , 1 , 22597
+548 , 22630 , 113 , 41 , 1 , 1 , 22597
+548 , 22631 , 113 , 31 , 1 , 1 , 22597
+548 , 22632 , 112 , 41 , 1 , 1 , 22597
+548 , 22633 , 112 , 41 , 1 , 1 , 22597
+548 , 22634 , 112 , 41 , 1 , 1 , 22597
+548 , 22635 , 133 , 85 , 1 , 1 , 22597
+548 , 22636 , 131 , 85 , 1 , 1 , 22597
+548 , 22637 , 130 , 85 , 1 , 1 , 22597
+548 , 22638 , 123 , 31 , 1 , 1 , 22597
+548 , 22639 , 122 , 41 , 1 , 1 , 22597
+548 , 22640 , 122 , 41 , 1 , 1 , 22597
+548 , 22641 , 122 , 31 , 1 , 1 , 22597
+548 , 22642 , 121 , 41 , 1 , 1 , 22597
+548 , 22643 , 120 , 31 , 1 , 1 , 22597
+548 , 22644 , 119 , 41 , 1 , 1 , 22597
+548 , 22645 , 82 , 41 , 1 , 1 , 22597
+548 , 22646 , 81 , 42 , 1 , 1 , 22597
+548 , 22647 , 81 , 41 , 1 , 1 , 22597
+548 , 22648 , 80 , 41 , 1 , 1 , 22597
+548 , 22649 , 80 , 41 , 1 , 1 , 22597
+548 , 22650 , 80 , 41 , 1 , 1 , 22597
+548 , 22651 , 80 , 41 , 1 , 1 , 22597
+548 , 22652 , 80 , 32 , 1 , 1 , 22597
+548 , 22653 , 80 , 31 , 1 , 1 , 22597
+548 , 22654 , 80 , 31 , 1 , 1 , 22597
+548 , 22655 , 80 , 31 , 1 , 1 , 22597
+548 , 22656 , 69 , 31 , 1 , 1 , 22597
+548 , 22657 , 119 , 31 , 1 , 1 , 22597
+548 , 22658 , 112 , 41 , 1 , 1 , 22597
+548 , 22659 , 112 , 41 , 1 , 1 , 22597
+548 , 22660 , 112 , 41 , 1 , 1 , 22597
+548 , 22661 , 111 , 41 , 1 , 1 , 22597
+548 , 22662 , 111 , 41 , 1 , 1 , 22597
+548 , 22663 , 111 , 41 , 1 , 1 , 22597
+548 , 22664 , 110 , 41 , 1 , 1 , 22597
+548 , 22665 , 110 , 41 , 1 , 1 , 22597
+548 , 22666 , 110 , 41 , 1 , 1 , 22597
+548 , 22667 , 106 , 31 , 1 , 1 , 22597
+548 , 22668 , 90 , 42 , 1 , 1 , 22597
+548 , 22669 , 89 , 41 , 1 , 1 , 22597
+548 , 22670 , 89 , 41 , 1 , 1 , 22597
+548 , 22671 , 89 , 41 , 1 , 1 , 22597
+548 , 22672 , 89 , 42 , 1 , 1 , 22597
+548 , 22673 , 88 , 41 , 1 , 1 , 22597
+548 , 22674 , 88 , 41 , 1 , 1 , 22597
+548 , 22675 , 87 , 41 , 1 , 1 , 22597
+548 , 22676 , 87 , 41 , 1 , 1 , 22597
+548 , 22677 , 87 , 41 , 1 , 1 , 22597
+548 , 22678 , 86 , 41 , 1 , 1 , 22597
+548 , 22679 , 86 , 41 , 1 , 1 , 22597
+548 , 22680 , 69 , 31 , 1 , 1 , 22597
+548 , 22681 , 68 , 41 , 1 , 1 , 22597
+548 , 22682 , 51 , 244 , 1 , 1 , 22597
+548 , 22683 , 51 , 245 , 1 , 1 , 22597
+548 , 22684 , 51 , 245 , 1 , 1 , 22597
+548 , 22685 , 51 , 244 , 1 , 1 , 22597
+548 , 22686 , 51 , 255 , 1 , 1 , 22597
+548 , 22687 , 51 , 255 , 1 , 1 , 22597
+548 , 22688 , 50 , 245 , 1 , 1 , 22597
+548 , 22689 , 50 , 245 , 1 , 1 , 22597
+548 , 22690 , 50 , 245 , 1 , 1 , 22597
+548 , 22691 , 50 , 235 , 1 , 1 , 22597
+548 , 22692 , 50 , 235 , 1 , 1 , 22597
+548 , 22693 , 50 , 245 , 1 , 1 , 22597
+548 , 22694 , 50 , 245 , 1 , 1 , 22597
+548 , 22695 , 50 , 245 , 1 , 1 , 22597
+548 , 22696 , 50 , 255 , 1 , 1 , 22597
+548 , 22697 , 50 , 245 , 1 , 1 , 22597
+548 , 22698 , 45 , 230 , 1 , 1 , 22597
+548 , 22699 , 45 , 240 , 1 , 1 , 22597
+548 , 22700 , 45 , 230 , 1 , 1 , 22597
+548 , 22701 , 45 , 240 , 1 , 1 , 22597
+548 , 22702 , 45 , 230 , 1 , 1 , 22597
+548 , 22703 , 45 , 230 , 1 , 1 , 22597
+548 , 22704 , 44 , 251 , 1 , 1 , 22597
+548 , 22705 , 44 , 262 , 1 , 1 , 22597
+548 , 22706 , 44 , 230 , 1 , 1 , 22597
+548 , 22707 , 44 , 241 , 1 , 1 , 22597
+548 , 22708 , 44 , 250 , 1 , 1 , 22597
+548 , 22709 , 44 , 230 , 1 , 1 , 22597
+548 , 22710 , 44 , 231 , 1 , 1 , 22597
+548 , 22711 , 44 , 251 , 1 , 1 , 22597
+548 , 22712 , 44 , 240 , 1 , 1 , 22597
+548 , 22713 , 44 , 241 , 1 , 1 , 22597
+548 , 22714 , 36 , 98 , 1 , 1 , 22597
+548 , 22715 , 36 , 90 , 1 , 1 , 22597
+548 , 22716 , 36 , 100 , 1 , 1 , 22597
+548 , 22717 , 36 , 88 , 1 , 1 , 22597
+548 , 22718 , 36 , 90 , 1 , 1 , 22597
+548 , 22719 , 36 , 89 , 1 , 1 , 22597
+548 , 22720 , 48 , 52 , 1 , 1 , 22597
+548 , 22721 , 47 , 52 , 1 , 1 , 22597
+548 , 22722 , 47 , 52 , 1 , 1 , 22597
+548 , 22723 , 47 , 52 , 1 , 1 , 22597
+548 , 22724 , 46 , 52 , 1 , 1 , 22597
+548 , 22725 , 46 , 52 , 1 , 1 , 22597
+548 , 22726 , 46 , 52 , 1 , 1 , 22597
+548 , 22727 , 46 , 52 , 1 , 1 , 22597
+548 , 22728 , 45 , 52 , 1 , 1 , 22597
+548 , 22729 , 45 , 52 , 1 , 1 , 22597
+548 , 22730 , 44 , 52 , 1 , 1 , 22597
+548 , 22731 , 43 , 62 , 1 , 1 , 22597
+548 , 22732 , 43 , 52 , 1 , 1 , 22597
+548 , 22733 , 43 , 62 , 1 , 1 , 22597
+548 , 22734 , 42 , 62 , 1 , 1 , 22597
+548 , 22735 , 42 , 62 , 1 , 1 , 22597
+548 , 22736 , 42 , 62 , 1 , 1 , 22597
+548 , 22737 , 42 , 62 , 1 , 1 , 22597
+548 , 22738 , 42 , 62 , 1 , 1 , 22597
+548 , 22739 , 41 , 62 , 1 , 1 , 22597
+548 , 22740 , 40 , 62 , 1 , 1 , 22597
+548 , 22741 , 40 , 52 , 1 , 1 , 22597
+548 , 22742 , 39 , 41 , 1 , 1 , 22597
+548 , 22743 , 39 , 62 , 1 , 1 , 22597
+548 , 22744 , 39 , 62 , 1 , 1 , 22597
+548 , 22745 , 38 , 62 , 1 , 1 , 22597
+548 , 22746 , 38 , 62 , 1 , 1 , 22597
+548 , 22747 , 38 , 62 , 1 , 1 , 22597
+548 , 22748 , 38 , 62 , 1 , 1 , 22597
+548 , 22749 , 36 , 62 , 1 , 1 , 22597
+548 , 22750 , 36 , 62 , 1 , 1 , 22597
+548 , 22751 , 35 , 41 , 1 , 1 , 22597
+548 , 22752 , 35 , 42 , 1 , 1 , 22597
+548 , 22753 , 35 , 41 , 1 , 1 , 22597
+548 , 22754 , 34 , 42 , 1 , 1 , 22597
+548 , 22755 , 34 , 42 , 1 , 1 , 22597
+548 , 22756 , 34 , 41 , 1 , 1 , 22597
+548 , 22757 , 34 , 41 , 1 , 1 , 22597
+548 , 22758 , 34 , 41 , 1 , 1 , 22597
+548 , 22759 , 33 , 41 , 1 , 1 , 22597
+548 , 22760 , 32 , 41 , 1 , 1 , 22597
+548 , 22761 , 31 , 42 , 1 , 1 , 22597
+548 , 22762 , 31 , 42 , 1 , 1 , 22597
+548 , 22763 , 31 , 41 , 1 , 1 , 22597
+548 , 22764 , 30 , 41 , 1 , 1 , 22597
+548 , 22765 , 30 , 41 , 1 , 1 , 22597
+548 , 22766 , 30 , 41 , 1 , 1 , 22597
+548 , 22767 , 29 , 41 , 1 , 1 , 22597
+548 , 22768 , 29 , 41 , 1 , 1 , 22597
+548 , 22769 , 29 , 41 , 1 , 1 , 22597
+548 , 22770 , 28 , 42 , 1 , 1 , 22597
+548 , 22771 , 28 , 41 , 1 , 1 , 22597
+548 , 22772 , 28 , 41 , 1 , 1 , 22597
+548 , 22773 , 28 , 52 , 1 , 1 , 22597
+548 , 22774 , 28 , 41 , 1 , 1 , 22597
+548 , 22775 , 28 , 42 , 1 , 1 , 22597
+548 , 22776 , 27 , 42 , 1 , 1 , 22597
+548 , 22777 , 27 , 41 , 1 , 1 , 22597
+548 , 22778 , 27 , 52 , 1 , 1 , 22597
+548 , 22779 , 27 , 41 , 1 , 1 , 22597
+548 , 22780 , 26 , 42 , 1 , 1 , 22597
+548 , 22781 , 26 , 31 , 1 , 1 , 22597
+548 , 22782 , 26 , 41 , 1 , 1 , 22597
+548 , 22783 , 26 , 42 , 1 , 1 , 22597
+548 , 22784 , 26 , 41 , 1 , 1 , 22597
+548 , 22785 , 26 , 41 , 1 , 1 , 22597
+548 , 22786 , 26 , 41 , 1 , 1 , 22597
+548 , 22787 , 26 , 31 , 1 , 1 , 22597
+548 , 22788 , 26 , 41 , 1 , 1 , 22597
+548 , 22789 , 26 , 31 , 1 , 1 , 22597
+548 , 22790 , 26 , 41 , 1 , 1 , 22597
+548 , 22791 , 529 , 0 , 1 , 1 , 22603 22707 22682 22647 22634 22738 22729 22685 22631 22737 22670 22618 22694 22671 22626 22775 22654 22681 22614 22610 22720 22761 22686 22674 22615 22730 22660 22612 22784 22713 22756 22787 22777 22702 22712 22763 22644 22715 22645 22658 22632 22639 22627 22721 22666 22698 22701 22665 22751 22601 22724 22673 22641 22625 22705 22753 22757 22606 22772 22619 22679 22693 22662 22714 22622 22646 22690 22651 22600 22736 22743 22669 22722 22640 22621 22620 22716 22663 22609 22656 22759 22754 22672 22688 22785 22766 22697 22727 22683 22746 22677 22633 22711 22734 22742 22760 22648 22770 22652 22659 22767 22780 22689 22744 22676 22687 22635 22786 22637 22667 22765 22629 22617 22749 22741 22733 22700 22745 22604 22776 22732 22664 22723 22719 22613 22599 22725 22630 22650 22602 22779 22638 22790 22771 22781 22789 22695 22717 22605 22709 22758 22678 22623 22726 22661 22636 22718 22783 22728 22616 22675 22657 22703 22782 22731 22642 22764 22778 22684 22768 22628 22710 22598 22752 22680 22773 22788 22762 22607 22655 22691 22755 22735 22624 22643 22699 22769 22774 22704 22706 22739 22649 22692 22668 22608 22653 22750 22611 22708 22748 22696 22740 22747
+548 , 22792 , 624 , 31 , 1 , 1 , 22791
+548 , 22793 , 618 , 13 , 1 , 1 , 22791
+548 , 22794 , 618 , 13 , 1 , 1 , 22791
+548 , 22795 , 616 , 12 , 1 , 1 , 22791
+548 , 22796 , 613 , 12 , 1 , 1 , 22791
+548 , 22797 , 612 , 11 , 1 , 1 , 22791
+548 , 22798 , 612 , 12 , 1 , 1 , 22791
+548 , 22799 , 653 , 32 , 1 , 1 , 22791
+548 , 22800 , 651 , 32 , 1 , 1 , 22791
+548 , 22801 , 653 , 32 , 1 , 1 , 22791
+548 , 22802 , 637 , 21 , 1 , 1 , 22791
+548 , 22803 , 635 , 31 , 1 , 1 , 22791
+548 , 22804 , 635 , 31 , 1 , 1 , 22791
+548 , 22805 , 634 , 31 , 1 , 1 , 22791
+548 , 22806 , 634 , 31 , 1 , 1 , 22791
+548 , 22807 , 638 , 11 , 1 , 1 , 22791
+548 , 22808 , 637 , 11 , 1 , 1 , 22791
+548 , 22809 , 633 , 31 , 1 , 1 , 22791
+548 , 22810 , 633 , 31 , 1 , 1 , 22791
+548 , 22811 , 632 , 31 , 1 , 1 , 22791
+548 , 22812 , 635 , 11 , 1 , 1 , 22791
+548 , 22813 , 632 , 31 , 1 , 1 , 22791
+548 , 22814 , 635 , 11 , 1 , 1 , 22791
+548 , 22815 , 652 , 32 , 1 , 1 , 22791
+548 , 22816 , 645 , 32 , 1 , 1 , 22791
+548 , 22817 , 644 , 32 , 1 , 1 , 22791
+548 , 22818 , 637 , 31 , 1 , 1 , 22791
+548 , 22819 , 643 , 32 , 1 , 1 , 22791
+548 , 22820 , 643 , 21 , 1 , 1 , 22791
+548 , 22821 , 636 , 31 , 1 , 1 , 22791
+548 , 22822 , 636 , 31 , 1 , 1 , 22791
+548 , 22823 , 644 , 11 , 1 , 1 , 22791
+548 , 22824 , 642 , 11 , 1 , 1 , 22791
+548 , 22825 , 641 , 21 , 1 , 1 , 22791
+548 , 22826 , 641 , 21 , 1 , 1 , 22791
+548 , 22827 , 641 , 21 , 1 , 1 , 22791
+548 , 22828 , 649 , 32 , 1 , 1 , 22791
+548 , 22829 , 649 , 32 , 1 , 1 , 22791
+548 , 22830 , 648 , 32 , 1 , 1 , 22791
+548 , 22831 , 647 , 32 , 1 , 1 , 22791
+548 , 22832 , 647 , 32 , 1 , 1 , 22791
+548 , 22833 , 628 , 31 , 1 , 1 , 22791
+548 , 22834 , 628 , 31 , 1 , 1 , 22791
+548 , 22835 , 628 , 31 , 1 , 1 , 22791
+548 , 22836 , 628 , 31 , 1 , 1 , 22791
+548 , 22837 , 628 , 31 , 1 , 1 , 22791
+548 , 22838 , 628 , 31 , 1 , 1 , 22791
+548 , 22839 , 628 , 31 , 1 , 1 , 22791
+548 , 22840 , 627 , 31 , 1 , 1 , 22791
+548 , 22841 , 627 , 31 , 1 , 1 , 22791
+548 , 22842 , 627 , 31 , 1 , 1 , 22791
+548 , 22843 , 624 , 31 , 1 , 1 , 22791
+548 , 22844 , 624 , 31 , 1 , 1 , 22791
+548 , 22845 , 624 , 31 , 1 , 1 , 22791
+548 , 22846 , 624 , 31 , 1 , 1 , 22791
+548 , 22847 , 624 , 31 , 1 , 1 , 22791
+548 , 22848 , 624 , 31 , 1 , 1 , 22791
+548 , 22849 , 624 , 31 , 1 , 1 , 22791
+548 , 22850 , 624 , 31 , 1 , 1 , 22791
+548 , 22851 , 624 , 31 , 1 , 1 , 22791
+548 , 22852 , 598 , 13 , 1 , 1 , 22791
+548 , 22853 , 596 , 12 , 1 , 1 , 22791
+548 , 22854 , 596 , 12 , 1 , 1 , 22791
+548 , 22855 , 592 , 12 , 1 , 1 , 22791
+548 , 22856 , 592 , 11 , 1 , 1 , 22791
+548 , 22857 , 592 , 11 , 1 , 1 , 22791
+548 , 22858 , 582 , 52 , 1 , 1 , 22791
+548 , 22859 , 581 , 52 , 1 , 1 , 22791
+548 , 22860 , 581 , 52 , 1 , 1 , 22791
+548 , 22861 , 580 , 41 , 1 , 1 , 22791
+548 , 22862 , 580 , 52 , 1 , 1 , 22791
+548 , 22863 , 580 , 41 , 1 , 1 , 22791
+548 , 22864 , 579 , 41 , 1 , 1 , 22791
+548 , 22865 , 579 , 52 , 1 , 1 , 22791
+548 , 22866 , 578 , 52 , 1 , 1 , 22791
+548 , 22867 , 578 , 41 , 1 , 1 , 22791
+548 , 22868 , 578 , 41 , 1 , 1 , 22791
+548 , 22869 , 578 , 41 , 1 , 1 , 22791
+548 , 22870 , 578 , 41 , 1 , 1 , 22791
+548 , 22871 , 577 , 42 , 1 , 1 , 22791
+548 , 22872 , 576 , 41 , 1 , 1 , 22791
+548 , 22873 , 576 , 52 , 1 , 1 , 22791
+548 , 22874 , 575 , 52 , 1 , 1 , 22791
+548 , 22875 , 574 , 52 , 1 , 1 , 22791
+548 , 22876 , 592 , 42 , 1 , 1 , 22791
+548 , 22877 , 589 , 41 , 1 , 1 , 22791
+548 , 22878 , 600 , 43 , 1 , 1 , 22791
+548 , 22879 , 600 , 43 , 1 , 1 , 22791
+548 , 22880 , 600 , 43 , 1 , 1 , 22791
+548 , 22881 , 600 , 43 , 1 , 1 , 22791
+548 , 22882 , 600 , 43 , 1 , 1 , 22791
+548 , 22883 , 600 , 33 , 1 , 1 , 22791
+548 , 22884 , 600 , 33 , 1 , 1 , 22791
+548 , 22885 , 600 , 33 , 1 , 1 , 22791
+548 , 22886 , 600 , 33 , 1 , 1 , 22791
+548 , 22887 , 600 , 33 , 1 , 1 , 22791
+548 , 22888 , 600 , 23 , 1 , 1 , 22791
+548 , 22889 , 600 , 33 , 1 , 1 , 22791
+548 , 22890 , 600 , 23 , 1 , 1 , 22791
+548 , 22891 , 600 , 23 , 1 , 1 , 22791
+548 , 22892 , 600 , 33 , 1 , 1 , 22791
+548 , 22893 , 600 , 23 , 1 , 1 , 22791
+548 , 22894 , 604 , 21 , 1 , 1 , 22791
+548 , 22895 , 604 , 21 , 1 , 1 , 22791
+548 , 22896 , 604 , 21 , 1 , 1 , 22791
+548 , 22897 , 604 , 21 , 1 , 1 , 22791
+548 , 22898 , 604 , 32 , 1 , 1 , 22791
+548 , 22899 , 603 , 32 , 1 , 1 , 22791
+548 , 22900 , 603 , 21 , 1 , 1 , 22791
+548 , 22901 , 603 , 21 , 1 , 1 , 22791
+548 , 22902 , 603 , 32 , 1 , 1 , 22791
+548 , 22903 , 607 , 32 , 1 , 1 , 22791
+548 , 22904 , 603 , 32 , 1 , 1 , 22791
+548 , 22905 , 603 , 32 , 1 , 1 , 22791
+548 , 22906 , 603 , 32 , 1 , 1 , 22791
+548 , 22907 , 603 , 32 , 1 , 1 , 22791
+548 , 22908 , 603 , 32 , 1 , 1 , 22791
+548 , 22909 , 603 , 32 , 1 , 1 , 22791
+548 , 22910 , 580 , 12 , 1 , 1 , 22791
+548 , 22911 , 574 , 11 , 1 , 1 , 22791
+548 , 22912 , 577 , 11 , 1 , 1 , 22791
+548 , 22913 , 568 , 11 , 1 , 1 , 22791
+548 , 22914 , 564 , 11 , 1 , 1 , 22791
+548 , 22915 , 559 , 11 , 1 , 1 , 22791
+548 , 22916 , 574 , 52 , 1 , 1 , 22791
+548 , 22917 , 574 , 52 , 1 , 1 , 22791
+548 , 22918 , 574 , 62 , 1 , 1 , 22791
+548 , 22919 , 574 , 52 , 1 , 1 , 22791
+548 , 22920 , 574 , 52 , 1 , 1 , 22791
+548 , 22921 , 573 , 52 , 1 , 1 , 22791
+548 , 22922 , 573 , 52 , 1 , 1 , 22791
+548 , 22923 , 573 , 62 , 1 , 1 , 22791
+548 , 22924 , 572 , 52 , 1 , 1 , 22791
+548 , 22925 , 571 , 62 , 1 , 1 , 22791
+548 , 22926 , 571 , 62 , 1 , 1 , 22791
+548 , 22927 , 571 , 52 , 1 , 1 , 22791
+548 , 22928 , 571 , 52 , 1 , 1 , 22791
+548 , 22929 , 571 , 62 , 1 , 1 , 22791
+548 , 22930 , 570 , 62 , 1 , 1 , 22791
+548 , 22931 , 569 , 52 , 1 , 1 , 22791
+548 , 22932 , 569 , 62 , 1 , 1 , 22791
+548 , 22933 , 569 , 52 , 1 , 1 , 22791
+548 , 22934 , 568 , 52 , 1 , 1 , 22791
+548 , 22935 , 567 , 62 , 1 , 1 , 22791
+548 , 22936 , 567 , 52 , 1 , 1 , 22791
+548 , 22937 , 567 , 62 , 1 , 1 , 22791
+548 , 22938 , 567 , 52 , 1 , 1 , 22791
+548 , 22939 , 567 , 63 , 1 , 1 , 22791
+548 , 22940 , 567 , 52 , 1 , 1 , 22791
+548 , 22941 , 565 , 52 , 1 , 1 , 22791
+548 , 22942 , 565 , 52 , 1 , 1 , 22791
+548 , 22943 , 565 , 52 , 1 , 1 , 22791
+548 , 22944 , 564 , 52 , 1 , 1 , 22791
+548 , 22945 , 563 , 52 , 1 , 1 , 22791
+548 , 22946 , 563 , 62 , 1 , 1 , 22791
+548 , 22947 , 563 , 52 , 1 , 1 , 22791
+548 , 22948 , 563 , 52 , 1 , 1 , 22791
+548 , 22949 , 563 , 62 , 1 , 1 , 22791
+548 , 22950 , 562 , 52 , 1 , 1 , 22791
+548 , 22951 , 562 , 52 , 1 , 1 , 22791
+548 , 22952 , 562 , 52 , 1 , 1 , 22791
+548 , 22953 , 562 , 52 , 1 , 1 , 22791
+548 , 22954 , 561 , 52 , 1 , 1 , 22791
+548 , 22955 , 560 , 52 , 1 , 1 , 22791
+548 , 22956 , 560 , 52 , 1 , 1 , 22791
+548 , 22957 , 559 , 62 , 1 , 1 , 22791
+548 , 22958 , 559 , 52 , 1 , 1 , 22791
+548 , 22959 , 559 , 52 , 1 , 1 , 22791
+548 , 22960 , 559 , 52 , 1 , 1 , 22791
+548 , 22961 , 559 , 52 , 1 , 1 , 22791
+548 , 22962 , 558 , 52 , 1 , 1 , 22791
+548 , 22963 , 558 , 52 , 1 , 1 , 22791
+548 , 22964 , 558 , 52 , 1 , 1 , 22791
+548 , 22965 , 557 , 62 , 1 , 1 , 22791
+548 , 22966 , 557 , 62 , 1 , 1 , 22791
+548 , 22967 , 557 , 52 , 1 , 1 , 22791
+548 , 22968 , 557 , 52 , 1 , 1 , 22791
+548 , 22969 , 557 , 41 , 1 , 1 , 22791
+548 , 22970 , 556 , 41 , 1 , 1 , 22791
+548 , 22971 , 556 , 41 , 1 , 1 , 22791
+548 , 22972 , 556 , 52 , 1 , 1 , 22791
+548 , 22973 , 556 , 52 , 1 , 1 , 22791
+548 , 22974 , 556 , 52 , 1 , 1 , 22791
+548 , 22975 , 554 , 41 , 1 , 1 , 22791
+548 , 22976 , 554 , 41 , 1 , 1 , 22791
+548 , 22977 , 554 , 41 , 1 , 1 , 22791
+548 , 22978 , 554 , 41 , 1 , 1 , 22791
+548 , 22979 , 554 , 52 , 1 , 1 , 22791
+548 , 22980 , 554 , 42 , 1 , 1 , 22791
+548 , 22981 , 554 , 41 , 1 , 1 , 22791
+548 , 22982 , 554 , 41 , 1 , 1 , 22791
+548 , 22983 , 554 , 41 , 1 , 1 , 22791
+548 , 22984 , 554 , 42 , 1 , 1 , 22791
+548 , 22985 , 721 , 21 , 1 , 1 , 22869 22796 22938 22861 22919 22823 22908 22955 22895 22930 22948 22875 22965 22883 22940 22922 22915 22888 22981 22815 22843 22826 22846 22824 22863 22896 22929 22803 22983 22905 22874 22814 22963 22924 22917 22890 22828 22952 22844 22810 22860 22840 22835 22897 22912 22974 22885 22927 22879 22973 22932 22966 22817 22871 22907 22852 22916 22854 22807 22921 22812 22813 22802 22944 22901 22870 22794 22821 22939 22943 22968 22894 22889 22902 22962 22975 22799 22970 22797 22834 22891 22872 22935 22914 22898 22893 22923 22832 22806 22928 22925 22971 22958 22800 22837 22845 22977 22984 22911 22851 22830 22969 22808 22811 22816 22982 22842 22899 22967 22801 22941 22980 22906 22849 22809 22848 22933 22805 22957 22959 22960 22819 22864 22876 22818 22829 22838 22900 22953 22892 22862 22877 22882 22947 22836 22881 22937 22880 22850 22886 22793 22859 22857 22910 22978 22855 22951 22822 22950 22847 22926 22878 22972 22795 22954 22903 22868 22956 22904 22976 22931 22865 22920 22909 22792 22833 22858 22827 22825 22936 22820 22913 22942 22949 22841 22964 22839 22945 22918 22884 22934 22979 22853 22804 22831 22887 22873 22866 22961 22867 22856 22798 22946
+549 , 22986 , 91 , 41 , 1 , 1 ,
+549 , 22987 , 122 , 52 , 1 , 1 ,
+549 , 22988 , 122 , 52 , 1 , 1 ,
+549 , 22989 , 121 , 52 , 1 , 1 ,
+549 , 22990 , 121 , 52 , 1 , 1 ,
+549 , 22991 , 121 , 52 , 1 , 1 ,
+549 , 22992 , 121 , 52 , 1 , 1 ,
+549 , 22993 , 121 , 52 , 1 , 1 ,
+549 , 22994 , 121 , 52 , 1 , 1 ,
+549 , 22995 , 121 , 52 , 1 , 1 ,
+549 , 22996 , 120 , 42 , 1 , 1 ,
+549 , 22997 , 119 , 41 , 1 , 1 ,
+549 , 22998 , 119 , 41 , 1 , 1 ,
+549 , 22999 , 119 , 52 , 1 , 1 ,
+549 , 23000 , 119 , 41 , 1 , 1 ,
+549 , 23001 , 119 , 41 , 1 , 1 ,
+549 , 23002 , 119 , 41 , 1 , 1 ,
+549 , 23003 , 119 , 41 , 1 , 1 ,
+549 , 23004 , 119 , 52 , 1 , 1 ,
+549 , 23005 , 119 , 52 , 1 , 1 ,
+549 , 23006 , 119 , 52 , 1 , 1 ,
+549 , 23007 , 117 , 52 , 1 , 1 ,
+549 , 23008 , 117 , 52 , 1 , 1 ,
+549 , 23009 , 115 , 52 , 1 , 1 ,
+549 , 23010 , 115 , 52 , 1 , 1 ,
+549 , 23011 , 91 , 41 , 1 , 1 ,
+549 , 23012 , 115 , 52 , 1 , 1 ,
+549 , 23013 , 114 , 52 , 1 , 1 ,
+549 , 23014 , 113 , 53 , 1 , 1 ,
+549 , 23015 , 111 , 63 , 1 , 1 ,
+549 , 23016 , 111 , 52 , 1 , 1 ,
+549 , 23017 , 109 , 52 , 1 , 1 ,
+549 , 23018 , 109 , 52 , 1 , 1 ,
+549 , 23019 , 109 , 62 , 1 , 1 ,
+549 , 23020 , 136 , 41 , 1 , 1 ,
+549 , 23021 , 103 , 53 , 1 , 1 ,
+549 , 23022 , 103 , 53 , 1 , 1 ,
+549 , 23023 , 94 , 41 , 1 , 1 ,
+549 , 23024 , 94 , 52 , 1 , 1 ,
+549 , 23025 , 94 , 52 , 1 , 1 ,
+549 , 23026 , 94 , 41 , 1 , 1 ,
+549 , 23027 , 92 , 52 , 1 , 1 ,
+549 , 23028 , 92 , 41 , 1 , 1 ,
+549 , 23029 , 92 , 52 , 1 , 1 ,
+549 , 23030 , 136 , 52 , 1 , 1 ,
+549 , 23031 , 157 , 94 , 1 , 1 ,
+549 , 23032 , 156 , 41 , 1 , 1 ,
+549 , 23033 , 156 , 41 , 1 , 1 ,
+549 , 23034 , 148 , 75 , 1 , 1 ,
+549 , 23035 , 147 , 52 , 1 , 1 ,
+549 , 23036 , 147 , 52 , 1 , 1 ,
+549 , 23037 , 147 , 95 , 1 , 1 ,
+549 , 23038 , 146 , 52 , 1 , 1 ,
+549 , 23039 , 104 , 72 , 1 , 1 ,
+549 , 23040 , 104 , 62 , 1 , 1 ,
+549 , 23041 , 103 , 63 , 1 , 1 ,
+549 , 23042 , 146 , 41 , 1 , 1 ,
+549 , 23043 , 145 , 52 , 1 , 1 ,
+549 , 23044 , 144 , 52 , 1 , 1 ,
+549 , 23045 , 144 , 53 , 1 , 1 ,
+549 , 23046 , 144 , 53 , 1 , 1 ,
+549 , 23047 , 144 , 53 , 1 , 1 ,
+549 , 23048 , 143 , 53 , 1 , 1 ,
+549 , 23049 , 141 , 52 , 1 , 1 ,
+549 , 23050 , 141 , 52 , 1 , 1 ,
+549 , 23051 , 141 , 52 , 1 , 1 ,
+549 , 23052 , 139 , 52 , 1 , 1 ,
+549 , 23053 , 139 , 52 , 1 , 1 ,
+549 , 23054 , 137 , 62 , 1 , 1 ,
+549 , 23055 , 137 , 52 , 1 , 1 ,
+549 , 23056 , 137 , 52 , 1 , 1 ,
+549 , 23057 , 137 , 62 , 1 , 1 ,
+549 , 23058 , 137 , 62 , 1 , 1 ,
+549 , 23059 , 137 , 52 , 1 , 1 ,
+549 , 23060 , 137 , 62 , 1 , 1 ,
+549 , 23061 , 137 , 146 , 1 , 1 ,
+549 , 23062 , 109 , 62 , 1 , 1 ,
+549 , 23063 , 108 , 63 , 1 , 1 ,
+549 , 23064 , 105 , 72 , 1 , 1 ,
+549 , 23065 , 104 , 72 , 1 , 1 ,
+549 , 23066 , 104 , 52 , 1 , 1 ,
+549 , 23067 , 136 , 52 , 1 , 1 ,
+549 , 23068 , 136 , 52 , 1 , 1 ,
+549 , 23069 , 92 , 42 , 1 , 1 ,
+549 , 23070 , 91 , 41 , 1 , 1 ,
+549 , 23071 , 91 , 75 , 1 , 1 ,
+549 , 23072 , 89 , 86 , 1 , 1 ,
+549 , 23073 , 87 , 96 , 1 , 1 ,
+549 , 23074 , 86 , 85 , 1 , 1 ,
+549 , 23075 , 83 , 96 , 1 , 1 ,
+549 , 23076 , 26 , 355 , 1 , 1 ,
+549 , 23077 , 26 , 335 , 1 , 1 ,
+549 , 23078 , 26 , 365 , 1 , 1 ,
+549 , 23079 , 26 , 386 , 1 , 1 ,
+549 , 23080 , 26 , 396 , 1 , 1 ,
+549 , 23081 , 26 , 386 , 1 , 1 ,
+549 , 23082 , 26 , 386 , 1 , 1 ,
+549 , 23083 , 26 , 385 , 1 , 1 ,
+549 , 23084 , 26 , 376 , 1 , 1 ,
+549 , 23085 , 26 , 376 , 1 , 1 ,
+549 , 23086 , 26 , 336 , 1 , 1 ,
+549 , 23087 , 26 , 325 , 1 , 1 ,
+549 , 23088 , 26 , 325 , 1 , 1 ,
+549 , 23089 , 26 , 345 , 1 , 1 ,
+549 , 23090 , 26 , 345 , 1 , 1 ,
+549 , 23091 , 26 , 365 , 1 , 1 ,
+549 , 23092 , 20 , 199 , 1 , 1 ,
+549 , 23093 , 20 , 198 , 1 , 1 ,
+549 , 23094 , 20 , 198 , 1 , 1 ,
+549 , 23095 , 20 , 209 , 1 , 1 ,
+549 , 23096 , 20 , 199 , 1 , 1 ,
+549 , 23097 , 20 , 199 , 1 , 1 ,
+549 , 23098 , 19 , 188 , 1 , 1 ,
+549 , 23099 , 19 , 178 , 1 , 1 ,
+549 , 23100 , 19 , 167 , 1 , 1 ,
+549 , 23101 , 19 , 157 , 1 , 1 ,
+549 , 23102 , 19 , 157 , 1 , 1 ,
+549 , 23103 , 19 , 136 , 1 , 1 ,
+549 , 23104 , 19 , 136 , 1 , 1 ,
+549 , 23105 , 19 , 136 , 1 , 1 ,
+549 , 23106 , 19 , 125 , 1 , 1 ,
+549 , 23107 , 19 , 115 , 1 , 1 ,
+549 , 23108 , 12 , 66 , 1 , 1 ,
+549 , 23109 , 12 , 68 , 1 , 1 ,
+549 , 23110 , 12 , 72 , 1 , 1 ,
+549 , 23111 , 12 , 67 , 1 , 1 ,
+549 , 23112 , 12 , 64 , 1 , 1 ,
+549 , 23113 , 12 , 70 , 1 , 1 ,
+549 , 23114 , 39 , 82 , 1 , 1 ,
+549 , 23115 , 38 , 82 , 1 , 1 ,
+549 , 23116 , 35 , 82 , 1 , 1 ,
+549 , 23117 , 35 , 82 , 1 , 1 ,
+549 , 23118 , 34 , 72 , 1 , 1 ,
+549 , 23119 , 34 , 82 , 1 , 1 ,
+549 , 23120 , 34 , 72 , 1 , 1 ,
+549 , 23121 , 34 , 93 , 1 , 1 ,
+549 , 23122 , 34 , 93 , 1 , 1 ,
+549 , 23123 , 34 , 83 , 1 , 1 ,
+549 , 23124 , 33 , 92 , 1 , 1 ,
+549 , 23125 , 33 , 73 , 1 , 1 ,
+549 , 23126 , 30 , 94 , 1 , 1 ,
+549 , 23127 , 29 , 93 , 1 , 1 ,
+549 , 23128 , 29 , 94 , 1 , 1 ,
+549 , 23129 , 29 , 72 , 1 , 1 ,
+549 , 23130 , 29 , 92 , 1 , 1 ,
+549 , 23131 , 29 , 93 , 1 , 1 ,
+549 , 23132 , 28 , 93 , 1 , 1 ,
+549 , 23133 , 28 , 92 , 1 , 1 ,
+549 , 23134 , 28 , 72 , 1 , 1 ,
+549 , 23135 , 27 , 93 , 1 , 1 ,
+549 , 23136 , 24 , 103 , 1 , 1 ,
+549 , 23137 , 24 , 73 , 1 , 1 ,
+549 , 23138 , 24 , 93 , 1 , 1 ,
+549 , 23139 , 24 , 93 , 1 , 1 ,
+549 , 23140 , 23 , 92 , 1 , 1 ,
+549 , 23141 , 23 , 93 , 1 , 1 ,
+549 , 23142 , 23 , 92 , 1 , 1 ,
+549 , 23143 , 23 , 82 , 1 , 1 ,
+549 , 23144 , 22 , 103 , 1 , 1 ,
+549 , 23145 , 22 , 104 , 1 , 1 ,
+549 , 23146 , 18 , 82 , 1 , 1 ,
+549 , 23147 , 18 , 103 , 1 , 1 ,
+549 , 23148 , 17 , 103 , 1 , 1 ,
+549 , 23149 , 17 , 103 , 1 , 1 ,
+549 , 23150 , 17 , 92 , 1 , 1 ,
+549 , 23151 , 17 , 103 , 1 , 1 ,
+549 , 23152 , 17 , 82 , 1 , 1 ,
+549 , 23153 , 16 , 103 , 1 , 1 ,
+549 , 23154 , 16 , 103 , 1 , 1 ,
+549 , 23155 , 15 , 72 , 1 , 1 ,
+549 , 23156 , 12 , 103 , 1 , 1 ,
+549 , 23157 , 12 , 93 , 1 , 1 ,
+549 , 23158 , 12 , 93 , 1 , 1 ,
+549 , 23159 , 12 , 83 , 1 , 1 ,
+549 , 23160 , 11 , 83 , 1 , 1 ,
+549 , 23161 , 11 , 82 , 1 , 1 ,
+549 , 23162 , 11 , 82 , 1 , 1 ,
+549 , 23163 , 11 , 82 , 1 , 1 ,
+549 , 23164 , 11 , 82 , 1 , 1 ,
+549 , 23165 , 11 , 82 , 1 , 1 ,
+549 , 23166 , 9 , 72 , 1 , 1 ,
+549 , 23167 , 9 , 82 , 1 , 1 ,
+549 , 23168 , 9 , 93 , 1 , 1 ,
+549 , 23169 , 9 , 82 , 1 , 1 ,
+549 , 23170 , 9 , 72 , 1 , 1 ,
+549 , 23171 , 9 , 72 , 1 , 1 ,
+549 , 23172 , 9 , 72 , 1 , 1 ,
+549 , 23173 , 9 , 82 , 1 , 1 ,
+549 , 23174 , 9 , 82 , 1 , 1 ,
+549 , 23175 , 8 , 93 , 1 , 1 ,
+549 , 23176 , 7 , 83 , 1 , 1 ,
+549 , 23177 , 7 , 83 , 1 , 1 ,
+549 , 23178 , 7 , 72 , 1 , 1 ,
+549 , 23179 , 7 , 72 , 1 , 1 ,
+549 , 23180 , 7 , 83 , 1 , 1 ,
+549 , 23181 , 7 , 72 , 1 , 1 ,
+549 , 23182 , 7 , 73 , 1 , 1 ,
+549 , 23183 , 7 , 73 , 1 , 1 ,
+549 , 23184 , 7 , 73 , 1 , 1 ,
+549 , 23185 , 7 , 73 , 1 , 1 ,
+549 , 23186 , 442 , 143 , 1 , 1 , 23061 23132 23169 23177 23119 23086 23073 23148 23144 23167 23168 23082 23055 23030 23034 23083 23038 23139 23059 23098 23026 23147 23033 23092 23142 23022 23184 23140 23075 23023 23006 22989 23107 23157 23135 23081 23041 23152 23179 23032 22998 23174 23130 23164 23117 23077 23062 23054 23079 23093 23180 23154 23027 23066 23108 23172 23163 23089 23057 23178 22991 23159 23029 23065 23000 22987 23161 23056 23091 23156 22999 23071 23072 23002 23158 23090 23134 23070 23064 23020 23106 23129 23136 23080 23124 23085 23165 23183 23096 23063 23060 23110 23068 23025 23176 22997 23008 22988 23150 23109 22995 23116 23103 23181 23105 23141 23118 23101 22990 23078 23111 23013 23045 23127 23031 23046 23011 23010 23138 23005 22993 23069 23120 23121 23024 23040 23007 23048 23131 22996 22986 23097 23058 23012 23133 23076 23122 23175 23074 23162 22992 23125 23019 23104 23114 23067 23042 23126 23047 23149 23185 23009 22994 23017 23001 23003 23112 23018 23053 23084 23004 23052 23049 23100 23095 23146 23043 23021 23102 23160 23028 23099 23173 23016 23094 23050 23143 23088 23137 23014 23015 23115 23051 23037 23155 23145 23087 23171 23039 23170 23044 23035 23123 23166 23182 23036 23128 23153 23151 23113
+550 , 23288 , 7 , 41 , 1 , 1 ,
+550 , 23289 , 7 , 41 , 1 , 1 ,
+550 , 23290 , 7 , 41 , 1 , 1 ,
+550 , 23291 , 7 , 41 , 1 , 1 ,
+550 , 23292 , 7 , 52 , 1 , 1 ,
+550 , 23293 , 7 , 51 , 1 , 1 ,
+550 , 23294 , 7 , 51 , 1 , 1 ,
+550 , 23295 , 7 , 52 , 1 , 1 ,
+550 , 23296 , 7 , 52 , 1 , 1 ,
+550 , 23297 , 6 , 52 , 1 , 1 ,
+550 , 23298 , 5 , 41 , 1 , 1 ,
+550 , 23299 , 5 , 52 , 1 , 1 ,
+550 , 23300 , 5 , 41 , 1 , 1 ,
+550 , 23301 , 5 , 52 , 1 , 1 ,
+550 , 23302 , 5 , 41 , 1 , 1 ,
+550 , 23303 , 5 , 52 , 1 , 1 ,
+550 , 23304 , 5 , 52 , 1 , 1 ,
+550 , 23305 , 5 , 41 , 1 , 1 ,
+550 , 23306 , 5 , 41 , 1 , 1 ,
+550 , 23307 , 5 , 41 , 1 , 1 ,
+550 , 23308 , 71 , 11 , 1 , 1 , 23299 23307 23301 23304 23290 23300 23293 23295 23297 23291 23292 23289 23298 23294 23302 23296 23305 23306 23288 23303
+551 , 23309 , 2 , 11 , 1 , 1 ,
+551 , 23310 , 56 , 230 , 1 , 1 , 23309
+551 , 23311 , 56 , 261 , 1 , 1 , 23309
+551 , 23312 , 56 , 250 , 1 , 1 , 23309
+551 , 23313 , 56 , 251 , 1 , 1 , 23309
+551 , 23314 , 56 , 240 , 1 , 1 , 23309
+551 , 23315 , 56 , 251 , 1 , 1 , 23309
+551 , 23316 , 52 , 257 , 1 , 1 , 23309
+551 , 23317 , 52 , 247 , 1 , 1 , 23309
+551 , 23318 , 52 , 257 , 1 , 1 , 23309
+551 , 23319 , 52 , 247 , 1 , 1 , 23309
+551 , 23320 , 52 , 247 , 1 , 1 , 23309
+551 , 23321 , 52 , 235 , 1 , 1 , 23309
+551 , 23322 , 51 , 235 , 1 , 1 , 23309
+551 , 23323 , 51 , 258 , 1 , 1 , 23309
+551 , 23324 , 51 , 249 , 1 , 1 , 23309
+551 , 23325 , 51 , 236 , 1 , 1 , 23309
+551 , 23326 , 51 , 248 , 1 , 1 , 23309
+551 , 23327 , 51 , 248 , 1 , 1 , 23309
+551 , 23328 , 51 , 248 , 1 , 1 , 23309
+551 , 23329 , 51 , 248 , 1 , 1 , 23309
+551 , 23330 , 51 , 258 , 1 , 1 , 23309
+551 , 23331 , 51 , 248 , 1 , 1 , 23309
+551 , 23332 , 41 , 103 , 1 , 1 , 23309
+551 , 23333 , 41 , 79 , 1 , 1 , 23309
+551 , 23334 , 41 , 81 , 1 , 1 , 23309
+551 , 23335 , 41 , 79 , 1 , 1 , 23309
+551 , 23336 , 41 , 80 , 1 , 1 , 23309
+551 , 23337 , 41 , 101 , 1 , 1 , 23309
+551 , 23338 , 52 , 41 , 1 , 1 , 23309
+551 , 23339 , 51 , 41 , 1 , 1 , 23309
+551 , 23340 , 51 , 41 , 1 , 1 , 23309
+551 , 23341 , 50 , 41 , 1 , 1 , 23309
+551 , 23342 , 50 , 41 , 1 , 1 , 23309
+551 , 23343 , 50 , 41 , 1 , 1 , 23309
+551 , 23344 , 50 , 41 , 1 , 1 , 23309
+551 , 23345 , 50 , 41 , 1 , 1 , 23309
+551 , 23346 , 50 , 41 , 1 , 1 , 23309
+551 , 23347 , 50 , 41 , 1 , 1 , 23309
+551 , 23348 , 48 , 52 , 1 , 1 , 23309
+551 , 23349 , 48 , 52 , 1 , 1 , 23309
+551 , 23350 , 47 , 52 , 1 , 1 , 23309
+551 , 23351 , 46 , 42 , 1 , 1 , 23309
+551 , 23352 , 46 , 42 , 1 , 1 , 23309
+551 , 23353 , 46 , 52 , 1 , 1 , 23309
+551 , 23354 , 46 , 52 , 1 , 1 , 23309
+551 , 23355 , 46 , 42 , 1 , 1 , 23309
+551 , 23356 , 45 , 42 , 1 , 1 , 23309
+551 , 23357 , 45 , 43 , 1 , 1 , 23309
+551 , 23358 , 44 , 52 , 1 , 1 , 23309
+551 , 23359 , 44 , 52 , 1 , 1 , 23309
+551 , 23360 , 44 , 52 , 1 , 1 , 23309
+551 , 23361 , 43 , 52 , 1 , 1 , 23309
+551 , 23362 , 42 , 41 , 1 , 1 , 23309
+551 , 23363 , 42 , 52 , 1 , 1 , 23309
+551 , 23364 , 42 , 41 , 1 , 1 , 23309
+551 , 23365 , 42 , 52 , 1 , 1 , 23309
+551 , 23366 , 42 , 52 , 1 , 1 , 23309
+551 , 23367 , 42 , 52 , 1 , 1 , 23309
+551 , 23368 , 39 , 52 , 1 , 1 , 23309
+551 , 23369 , 39 , 52 , 1 , 1 , 23309
+551 , 23370 , 39 , 52 , 1 , 1 , 23309
+551 , 23371 , 37 , 52 , 1 , 1 , 23309
+551 , 23372 , 36 , 52 , 1 , 1 , 23309
+551 , 23373 , 36 , 52 , 1 , 1 , 23309
+551 , 23374 , 36 , 52 , 1 , 1 , 23309
+551 , 23375 , 36 , 52 , 1 , 1 , 23309
+551 , 23376 , 36 , 52 , 1 , 1 , 23309
+551 , 23377 , 36 , 52 , 1 , 1 , 23309
+551 , 23378 , 33 , 53 , 1 , 1 , 23309
+551 , 23379 , 33 , 52 , 1 , 1 , 23309
+551 , 23380 , 33 , 53 , 1 , 1 , 23309
+551 , 23381 , 31 , 62 , 1 , 1 , 23309
+551 , 23382 , 31 , 52 , 1 , 1 , 23309
+551 , 23383 , 31 , 52 , 1 , 1 , 23309
+551 , 23384 , 30 , 52 , 1 , 1 , 23309
+551 , 23385 , 30 , 52 , 1 , 1 , 23309
+551 , 23386 , 30 , 52 , 1 , 1 , 23309
+551 , 23387 , 30 , 52 , 1 , 1 , 23309
+551 , 23388 , 29 , 62 , 1 , 1 , 23309
+551 , 23389 , 29 , 52 , 1 , 1 , 23309
+551 , 23390 , 28 , 62 , 1 , 1 , 23309
+551 , 23391 , 28 , 62 , 1 , 1 , 23309
+551 , 23392 , 28 , 52 , 1 , 1 , 23309
+551 , 23393 , 28 , 52 , 1 , 1 , 23309
+551 , 23394 , 28 , 62 , 1 , 1 , 23309
+551 , 23395 , 28 , 62 , 1 , 1 , 23309
+551 , 23396 , 28 , 52 , 1 , 1 , 23309
+551 , 23397 , 28 , 52 , 1 , 1 , 23309
+551 , 23398 , 26 , 52 , 1 , 1 , 23309
+551 , 23399 , 26 , 62 , 1 , 1 , 23309
+551 , 23400 , 26 , 62 , 1 , 1 , 23309
+551 , 23401 , 26 , 62 , 1 , 1 , 23309
+551 , 23402 , 26 , 62 , 1 , 1 , 23309
+551 , 23403 , 26 , 52 , 1 , 1 , 23309
+551 , 23404 , 26 , 52 , 1 , 1 , 23309
+551 , 23405 , 26 , 52 , 1 , 1 , 23309
+551 , 23406 , 26 , 41 , 1 , 1 , 23309
+551 , 23407 , 26 , 41 , 1 , 1 , 23309
+551 , 23408 , 26 , 62 , 1 , 1 , 23309
+551 , 23409 , 26 , 52 , 1 , 1 , 23309
+551 , 23410 , 329 , 0 , 1 , 1 , 23373 23375 23370 23348 23388 23352 23400 23357 23324 23316 23328 23341 23311 23371 23384 23387 23368 23312 23330 23326 23381 23383 23344 23334 23342 23378 23392 23397 23409 23353 23380 23345 23362 23335 23365 23393 23379 23407 23354 23369 23390 23333 23374 23394 23382 23406 23314 23329 23338 23313 23317 23315 23366 23320 23356 23386 23332 23347 23360 23364 23401 23343 23395 23403 23408 23351 23321 23310 23377 23318 23405 23389 23385 23336 23361 23372 23398 23376 23363 23355 23346 23396 23325 23367 23391 23322 23339 23319 23340 23402 23350 23323 23359 23399 23327 23404 23358 23349 23337 23331
+551 , 23411 , 391 , 21 , 1 , 1 , 23410
+551 , 23412 , 391 , 21 , 1 , 1 , 23410
+551 , 23413 , 391 , 21 , 1 , 1 , 23410
+551 , 23414 , 391 , 21 , 1 , 1 , 23410
+551 , 23415 , 391 , 21 , 1 , 1 , 23410
+551 , 23416 , 391 , 21 , 1 , 1 , 23410
+551 , 23417 , 388 , 21 , 1 , 1 , 23410
+551 , 23418 , 389 , 21 , 1 , 1 , 23410
+551 , 23419 , 387 , 21 , 1 , 1 , 23410
+551 , 23420 , 387 , 21 , 1 , 1 , 23410
+551 , 23421 , 387 , 11 , 1 , 1 , 23410
+551 , 23422 , 387 , 11 , 1 , 1 , 23410
+551 , 23423 , 385 , 11 , 1 , 1 , 23410
+551 , 23424 , 378 , 11 , 1 , 1 , 23410
+551 , 23425 , 375 , 11 , 1 , 1 , 23410
+551 , 23426 , 370 , 11 , 1 , 1 , 23410
+551 , 23427 , 369 , 11 , 1 , 1 , 23410
+551 , 23428 , 369 , 32 , 1 , 1 , 23410
+551 , 23429 , 368 , 32 , 1 , 1 , 23410
+551 , 23430 , 368 , 32 , 1 , 1 , 23410
+551 , 23431 , 373 , 32 , 1 , 1 , 23410
+551 , 23432 , 368 , 32 , 1 , 1 , 23410
+551 , 23433 , 367 , 32 , 1 , 1 , 23410
+551 , 23434 , 367 , 32 , 1 , 1 , 23410
+551 , 23435 , 366 , 32 , 1 , 1 , 23410
+551 , 23436 , 364 , 32 , 1 , 1 , 23410
+551 , 23437 , 368 , 32 , 1 , 1 , 23410
+551 , 23438 , 361 , 12 , 1 , 1 , 23410
+551 , 23439 , 353 , 11 , 1 , 1 , 23410
+551 , 23440 , 394 , 11 , 1 , 1 , 23410
+551 , 23441 , 370 , 11 , 1 , 1 , 23410
+551 , 23442 , 357 , 12 , 1 , 1 , 23410
+551 , 23443 , 349 , 11 , 1 , 1 , 23410
+551 , 23444 , 363 , 41 , 1 , 1 , 23410
+551 , 23445 , 363 , 41 , 1 , 1 , 23410
+551 , 23446 , 363 , 41 , 1 , 1 , 23410
+551 , 23447 , 363 , 41 , 1 , 1 , 23410
+551 , 23448 , 363 , 41 , 1 , 1 , 23410
+551 , 23449 , 363 , 41 , 1 , 1 , 23410
+551 , 23450 , 362 , 41 , 1 , 1 , 23410
+551 , 23451 , 360 , 41 , 1 , 1 , 23410
+551 , 23452 , 360 , 41 , 1 , 1 , 23410
+551 , 23453 , 360 , 41 , 1 , 1 , 23410
+551 , 23454 , 360 , 41 , 1 , 1 , 23410
+551 , 23455 , 360 , 41 , 1 , 1 , 23410
+551 , 23456 , 360 , 41 , 1 , 1 , 23410
+551 , 23457 , 360 , 41 , 1 , 1 , 23410
+551 , 23458 , 359 , 41 , 1 , 1 , 23410
+551 , 23459 , 359 , 41 , 1 , 1 , 23410
+551 , 23460 , 359 , 41 , 1 , 1 , 23410
+551 , 23461 , 355 , 41 , 1 , 1 , 23410
+551 , 23462 , 355 , 41 , 1 , 1 , 23410
+551 , 23463 , 355 , 41 , 1 , 1 , 23410
+551 , 23464 , 355 , 41 , 1 , 1 , 23410
+551 , 23465 , 355 , 41 , 1 , 1 , 23410
+551 , 23466 , 354 , 41 , 1 , 1 , 23410
+551 , 23467 , 354 , 41 , 1 , 1 , 23410
+551 , 23468 , 354 , 41 , 1 , 1 , 23410
+551 , 23469 , 354 , 41 , 1 , 1 , 23410
+551 , 23470 , 354 , 41 , 1 , 1 , 23410
+551 , 23471 , 351 , 52 , 1 , 1 , 23410
+551 , 23472 , 351 , 52 , 1 , 1 , 23410
+551 , 23473 , 351 , 52 , 1 , 1 , 23410
+551 , 23474 , 351 , 41 , 1 , 1 , 23410
+551 , 23475 , 351 , 51 , 1 , 1 , 23410
+551 , 23476 , 351 , 41 , 1 , 1 , 23410
+551 , 23477 , 351 , 42 , 1 , 1 , 23410
+551 , 23478 , 350 , 41 , 1 , 1 , 23410
+551 , 23479 , 350 , 42 , 1 , 1 , 23410
+551 , 23480 , 350 , 52 , 1 , 1 , 23410
+551 , 23481 , 348 , 52 , 1 , 1 , 23410
+551 , 23482 , 348 , 52 , 1 , 1 , 23410
+551 , 23483 , 348 , 41 , 1 , 1 , 23410
+551 , 23484 , 348 , 52 , 1 , 1 , 23410
+551 , 23485 , 347 , 41 , 1 , 1 , 23410
+551 , 23486 , 347 , 52 , 1 , 1 , 23410
+551 , 23487 , 347 , 52 , 1 , 1 , 23410
+551 , 23488 , 347 , 52 , 1 , 1 , 23410
+551 , 23489 , 347 , 41 , 1 , 1 , 23410
+551 , 23490 , 347 , 52 , 1 , 1 , 23410
+551 , 23491 , 345 , 52 , 1 , 1 , 23410
+551 , 23492 , 345 , 41 , 1 , 1 , 23410
+551 , 23493 , 345 , 52 , 1 , 1 , 23410
+551 , 23494 , 345 , 41 , 1 , 1 , 23410
+551 , 23495 , 345 , 41 , 1 , 1 , 23410
+551 , 23496 , 345 , 41 , 1 , 1 , 23410
+551 , 23497 , 345 , 41 , 1 , 1 , 23410
+551 , 23498 , 345 , 52 , 1 , 1 , 23410
+551 , 23499 , 345 , 41 , 1 , 1 , 23410
+551 , 23500 , 345 , 52 , 1 , 1 , 23410
+551 , 23501 , 343 , 41 , 1 , 1 , 23410
+551 , 23502 , 343 , 41 , 1 , 1 , 23410
+551 , 23503 , 343 , 41 , 1 , 1 , 23410
+551 , 23504 , 343 , 41 , 1 , 1 , 23410
+551 , 23505 , 343 , 41 , 1 , 1 , 23410
+551 , 23506 , 343 , 41 , 1 , 1 , 23410
+551 , 23507 , 343 , 41 , 1 , 1 , 23410
+551 , 23508 , 343 , 31 , 1 , 1 , 23410
+551 , 23509 , 343 , 41 , 1 , 1 , 23410
+551 , 23510 , 343 , 41 , 1 , 1 , 23410
+551 , 23511 , 450 , 11 , 1 , 1 , 23441 23418 23452 23473 23467 23433 23485 23482 23510 23499 23421 23480 23471 23438 23458 23444 23474 23422 23470 23447 23484 23413 23442 23439 23419 23451 23466 23430 23463 23481 23505 23464 23420 23423 23495 23487 23501 23412 23493 23489 23431 23478 23449 23426 23416 23498 23454 23424 23436 23477 23459 23457 23504 23429 23509 23468 23414 23476 23450 23435 23469 23425 23427 23462 23488 23486 23440 23437 23494 23443 23497 23446 23448 23508 23475 23492 23411 23506 23432 23465 23453 23502 23461 23496 23455 23417 23491 23456 23483 23472 23434 23479 23500 23507 23415 23460 23490 23428 23445 23503
+552 , 23512 , 2 , 11 , 1 , 1 ,
+552 , 23513 , 49 , 229 , 1 , 1 , 23512
+552 , 23514 , 49 , 240 , 1 , 1 , 23512
+552 , 23515 , 49 , 240 , 1 , 1 , 23512
+552 , 23516 , 49 , 251 , 1 , 1 , 23512
+552 , 23517 , 49 , 251 , 1 , 1 , 23512
+552 , 23518 , 49 , 251 , 1 , 1 , 23512
+552 , 23519 , 49 , 230 , 1 , 1 , 23512
+552 , 23520 , 49 , 240 , 1 , 1 , 23512
+552 , 23521 , 44 , 246 , 1 , 1 , 23512
+552 , 23522 , 44 , 256 , 1 , 1 , 23512
+552 , 23523 , 44 , 246 , 1 , 1 , 23512
+552 , 23524 , 44 , 235 , 1 , 1 , 23512
+552 , 23525 , 44 , 235 , 1 , 1 , 23512
+552 , 23526 , 44 , 246 , 1 , 1 , 23512
+552 , 23527 , 43 , 248 , 1 , 1 , 23512
+552 , 23528 , 43 , 256 , 1 , 1 , 23512
+552 , 23529 , 43 , 235 , 1 , 1 , 23512
+552 , 23530 , 43 , 256 , 1 , 1 , 23512
+552 , 23531 , 43 , 256 , 1 , 1 , 23512
+552 , 23532 , 43 , 256 , 1 , 1 , 23512
+552 , 23533 , 43 , 234 , 1 , 1 , 23512
+552 , 23534 , 43 , 246 , 1 , 1 , 23512
+552 , 23535 , 43 , 256 , 1 , 1 , 23512
+552 , 23536 , 43 , 256 , 1 , 1 , 23512
+552 , 23537 , 34 , 79 , 1 , 1 , 23512
+552 , 23538 , 34 , 75 , 1 , 1 , 23512
+552 , 23539 , 34 , 78 , 1 , 1 , 23512
+552 , 23540 , 34 , 87 , 1 , 1 , 23512
+552 , 23541 , 34 , 86 , 1 , 1 , 23512
+552 , 23542 , 34 , 89 , 1 , 1 , 23512
+552 , 23543 , 45 , 42 , 1 , 1 , 23512
+552 , 23544 , 44 , 42 , 1 , 1 , 23512
+552 , 23545 , 44 , 42 , 1 , 1 , 23512
+552 , 23546 , 44 , 52 , 1 , 1 , 23512
+552 , 23547 , 44 , 41 , 1 , 1 , 23512
+552 , 23548 , 43 , 52 , 1 , 1 , 23512
+552 , 23549 , 43 , 52 , 1 , 1 , 23512
+552 , 23550 , 43 , 52 , 1 , 1 , 23512
+552 , 23551 , 42 , 52 , 1 , 1 , 23512
+552 , 23552 , 41 , 52 , 1 , 1 , 23512
+552 , 23553 , 41 , 52 , 1 , 1 , 23512
+552 , 23554 , 41 , 41 , 1 , 1 , 23512
+552 , 23555 , 41 , 52 , 1 , 1 , 23512
+552 , 23556 , 40 , 52 , 1 , 1 , 23512
+552 , 23557 , 40 , 52 , 1 , 1 , 23512
+552 , 23558 , 40 , 52 , 1 , 1 , 23512
+552 , 23559 , 39 , 41 , 1 , 1 , 23512
+552 , 23560 , 39 , 52 , 1 , 1 , 23512
+552 , 23561 , 38 , 52 , 1 , 1 , 23512
+552 , 23562 , 37 , 52 , 1 , 1 , 23512
+552 , 23563 , 37 , 42 , 1 , 1 , 23512
+552 , 23564 , 37 , 52 , 1 , 1 , 23512
+552 , 23565 , 37 , 53 , 1 , 1 , 23512
+552 , 23566 , 36 , 53 , 1 , 1 , 23512
+552 , 23567 , 36 , 43 , 1 , 1 , 23512
+552 , 23568 , 36 , 53 , 1 , 1 , 23512
+552 , 23569 , 35 , 54 , 1 , 1 , 23512
+552 , 23570 , 35 , 53 , 1 , 1 , 23512
+552 , 23571 , 34 , 52 , 1 , 1 , 23512
+552 , 23572 , 33 , 62 , 1 , 1 , 23512
+552 , 23573 , 33 , 52 , 1 , 1 , 23512
+552 , 23574 , 33 , 62 , 1 , 1 , 23512
+552 , 23575 , 33 , 52 , 1 , 1 , 23512
+552 , 23576 , 33 , 52 , 1 , 1 , 23512
+552 , 23577 , 32 , 62 , 1 , 1 , 23512
+552 , 23578 , 32 , 62 , 1 , 1 , 23512
+552 , 23579 , 32 , 62 , 1 , 1 , 23512
+552 , 23580 , 31 , 52 , 1 , 1 , 23512
+552 , 23581 , 31 , 62 , 1 , 1 , 23512
+552 , 23582 , 30 , 52 , 1 , 1 , 23512
+552 , 23583 , 29 , 62 , 1 , 1 , 23512
+552 , 23584 , 29 , 62 , 1 , 1 , 23512
+552 , 23585 , 29 , 62 , 1 , 1 , 23512
+552 , 23586 , 29 , 62 , 1 , 1 , 23512
+552 , 23587 , 29 , 52 , 1 , 1 , 23512
+552 , 23588 , 28 , 62 , 1 , 1 , 23512
+552 , 23589 , 28 , 52 , 1 , 1 , 23512
+552 , 23590 , 28 , 62 , 1 , 1 , 23512
+552 , 23591 , 28 , 52 , 1 , 1 , 23512
+552 , 23592 , 27 , 53 , 1 , 1 , 23512
+552 , 23593 , 27 , 62 , 1 , 1 , 23512
+552 , 23594 , 27 , 52 , 1 , 1 , 23512
+552 , 23595 , 27 , 52 , 1 , 1 , 23512
+552 , 23596 , 27 , 52 , 1 , 1 , 23512
+552 , 23597 , 27 , 52 , 1 , 1 , 23512
+552 , 23598 , 26 , 52 , 1 , 1 , 23512
+552 , 23599 , 26 , 62 , 1 , 1 , 23512
+552 , 23600 , 26 , 62 , 1 , 1 , 23512
+552 , 23601 , 26 , 62 , 1 , 1 , 23512
+552 , 23602 , 25 , 62 , 1 , 1 , 23512
+552 , 23603 , 25 , 52 , 1 , 1 , 23512
+552 , 23604 , 25 , 52 , 1 , 1 , 23512
+552 , 23605 , 25 , 52 , 1 , 1 , 23512
+552 , 23606 , 25 , 52 , 1 , 1 , 23512
+552 , 23607 , 25 , 52 , 1 , 1 , 23512
+552 , 23608 , 25 , 62 , 1 , 1 , 23512
+552 , 23609 , 25 , 51 , 1 , 1 , 23512
+552 , 23610 , 25 , 52 , 1 , 1 , 23512
+552 , 23611 , 25 , 52 , 1 , 1 , 23512
+552 , 23612 , 25 , 52 , 1 , 1 , 23512
+552 , 23613 , 518 , 0 , 1 , 1 , 23531 23602 23570 23588 23546 23535 23605 23550 23564 23575 23540 23541 23524 23544 23558 23609 23520 23574 23598 23533 23549 23551 23534 23513 23576 23603 23518 23528 23542 23585 23562 23596 23597 23538 23583 23559 23519 23592 23604 23599 23567 23594 23514 23568 23525 23600 23601 23521 23530 23582 23522 23593 23547 23526 23548 23566 23586 23584 23543 23516 23579 23555 23545 23581 23523 23552 23557 23606 23612 23595 23553 23560 23611 23563 23573 23537 23517 23578 23556 23529 23571 23608 23536 23565 23532 23572 23580 23589 23590 23554 23561 23527 23591 23607 23610 23515 23569 23539 23577 23587
+552 , 23614 , 572 , 32 , 1 , 1 , 23613
+552 , 23615 , 574 , 32 , 1 , 1 , 23613
+552 , 23616 , 574 , 32 , 1 , 1 , 23613
+552 , 23617 , 572 , 32 , 1 , 1 , 23613
+552 , 23618 , 571 , 32 , 1 , 1 , 23613
+552 , 23619 , 571 , 32 , 1 , 1 , 23613
+552 , 23620 , 571 , 32 , 1 , 1 , 23613
+552 , 23621 , 571 , 32 , 1 , 1 , 23613
+552 , 23622 , 571 , 32 , 1 , 1 , 23613
+552 , 23623 , 580 , 43 , 1 , 1 , 23613
+552 , 23624 , 580 , 43 , 1 , 1 , 23613
+552 , 23625 , 580 , 43 , 1 , 1 , 23613
+552 , 23626 , 580 , 43 , 1 , 1 , 23613
+552 , 23627 , 580 , 43 , 1 , 1 , 23613
+552 , 23628 , 580 , 43 , 1 , 1 , 23613
+552 , 23629 , 580 , 43 , 1 , 1 , 23613
+552 , 23630 , 580 , 43 , 1 , 1 , 23613
+552 , 23631 , 580 , 43 , 1 , 1 , 23613
+552 , 23632 , 580 , 43 , 1 , 1 , 23613
+552 , 23633 , 580 , 43 , 1 , 1 , 23613
+552 , 23634 , 580 , 23 , 1 , 1 , 23613
+552 , 23635 , 586 , 33 , 1 , 1 , 23613
+552 , 23636 , 580 , 33 , 1 , 1 , 23613
+552 , 23637 , 580 , 33 , 1 , 1 , 23613
+552 , 23638 , 580 , 43 , 1 , 1 , 23613
+552 , 23639 , 567 , 11 , 1 , 1 , 23613
+552 , 23640 , 561 , 11 , 1 , 1 , 23613
+552 , 23641 , 581 , 11 , 1 , 1 , 23613
+552 , 23642 , 581 , 11 , 1 , 1 , 23613
+552 , 23643 , 550 , 11 , 1 , 1 , 23613
+552 , 23644 , 547 , 11 , 1 , 1 , 23613
+552 , 23645 , 565 , 31 , 1 , 1 , 23613
+552 , 23646 , 564 , 31 , 1 , 1 , 23613
+552 , 23647 , 564 , 31 , 1 , 1 , 23613
+552 , 23648 , 563 , 21 , 1 , 1 , 23613
+552 , 23649 , 563 , 31 , 1 , 1 , 23613
+552 , 23650 , 563 , 31 , 1 , 1 , 23613
+552 , 23651 , 563 , 21 , 1 , 1 , 23613
+552 , 23652 , 563 , 31 , 1 , 1 , 23613
+552 , 23653 , 562 , 31 , 1 , 1 , 23613
+552 , 23654 , 561 , 31 , 1 , 1 , 23613
+552 , 23655 , 561 , 31 , 1 , 1 , 23613
+552 , 23656 , 559 , 31 , 1 , 1 , 23613
+552 , 23657 , 559 , 31 , 1 , 1 , 23613
+552 , 23658 , 559 , 31 , 1 , 1 , 23613
+552 , 23659 , 558 , 31 , 1 , 1 , 23613
+552 , 23660 , 557 , 31 , 1 , 1 , 23613
+552 , 23661 , 557 , 31 , 1 , 1 , 23613
+552 , 23662 , 557 , 31 , 1 , 1 , 23613
+552 , 23663 , 557 , 31 , 1 , 1 , 23613
+552 , 23664 , 556 , 31 , 1 , 1 , 23613
+552 , 23665 , 556 , 31 , 1 , 1 , 23613
+552 , 23666 , 555 , 31 , 1 , 1 , 23613
+552 , 23667 , 555 , 31 , 1 , 1 , 23613
+552 , 23668 , 555 , 31 , 1 , 1 , 23613
+552 , 23669 , 554 , 31 , 1 , 1 , 23613
+552 , 23670 , 554 , 31 , 1 , 1 , 23613
+552 , 23671 , 554 , 31 , 1 , 1 , 23613
+552 , 23672 , 554 , 31 , 1 , 1 , 23613
+552 , 23673 , 553 , 31 , 1 , 1 , 23613
+552 , 23674 , 553 , 31 , 1 , 1 , 23613
+552 , 23675 , 553 , 31 , 1 , 1 , 23613
+552 , 23676 , 552 , 31 , 1 , 1 , 23613
+552 , 23677 , 551 , 31 , 1 , 1 , 23613
+552 , 23678 , 551 , 31 , 1 , 1 , 23613
+552 , 23679 , 549 , 31 , 1 , 1 , 23613
+552 , 23680 , 549 , 31 , 1 , 1 , 23613
+552 , 23681 , 549 , 31 , 1 , 1 , 23613
+552 , 23682 , 549 , 31 , 1 , 1 , 23613
+552 , 23683 , 547 , 31 , 1 , 1 , 23613
+552 , 23684 , 546 , 31 , 1 , 1 , 23613
+552 , 23685 , 546 , 31 , 1 , 1 , 23613
+552 , 23686 , 544 , 31 , 1 , 1 , 23613
+552 , 23687 , 543 , 31 , 1 , 1 , 23613
+552 , 23688 , 543 , 31 , 1 , 1 , 23613
+552 , 23689 , 540 , 31 , 1 , 1 , 23613
+552 , 23690 , 540 , 31 , 1 , 1 , 23613
+552 , 23691 , 540 , 31 , 1 , 1 , 23613
+552 , 23692 , 539 , 31 , 1 , 1 , 23613
+552 , 23693 , 539 , 31 , 1 , 1 , 23613
+552 , 23694 , 538 , 31 , 1 , 1 , 23613
+552 , 23695 , 536 , 21 , 1 , 1 , 23613
+552 , 23696 , 536 , 21 , 1 , 1 , 23613
+552 , 23697 , 535 , 21 , 1 , 1 , 23613
+552 , 23698 , 535 , 21 , 1 , 1 , 23613
+552 , 23699 , 535 , 21 , 1 , 1 , 23613
+552 , 23700 , 535 , 21 , 1 , 1 , 23613
+552 , 23701 , 535 , 21 , 1 , 1 , 23613
+552 , 23702 , 534 , 21 , 1 , 1 , 23613
+552 , 23703 , 534 , 31 , 1 , 1 , 23613
+552 , 23704 , 533 , 31 , 1 , 1 , 23613
+552 , 23705 , 533 , 21 , 1 , 1 , 23613
+552 , 23706 , 533 , 31 , 1 , 1 , 23613
+552 , 23707 , 533 , 21 , 1 , 1 , 23613
+552 , 23708 , 533 , 31 , 1 , 1 , 23613
+552 , 23709 , 533 , 21 , 1 , 1 , 23613
+552 , 23710 , 533 , 21 , 1 , 1 , 23613
+552 , 23711 , 533 , 21 , 1 , 1 , 23613
+552 , 23712 , 533 , 21 , 1 , 1 , 23613
+552 , 23713 , 533 , 11 , 1 , 1 , 23613
+552 , 23714 , 661 , 11 , 1 , 1 , 23618 23636 23661 23635 23682 23622 23651 23690 23619 23693 23706 23703 23697 23640 23625 23683 23686 23709 23631 23694 23696 23666 23641 23685 23655 23654 23638 23677 23649 23624 23668 23675 23621 23712 23669 23672 23644 23634 23662 23626 23614 23674 23676 23630 23698 23664 23623 23711 23617 23632 23663 23673 23691 23658 23710 23645 23689 23660 23650 23648 23684 23681 23615 23688 23642 23652 23659 23701 23657 23692 23704 23665 23680 23667 23678 23699 23656 23646 23670 23679 23687 23702 23708 23629 23633 23671 23627 23620 23616 23700 23707 23705 23653 23695 23637 23628 23639 23713 23647 23643
+553 , 23715 , 4 , 11 , 1 , 1 ,
+553 , 23716 , 106 , 31 , 1 , 1 , 23715
+553 , 23717 , 121 , 31 , 1 , 1 , 23715
+553 , 23718 , 121 , 31 , 1 , 1 , 23715
+553 , 23719 , 121 , 31 , 1 , 1 , 23715
+553 , 23720 , 120 , 31 , 1 , 1 , 23715
+553 , 23721 , 120 , 31 , 1 , 1 , 23715
+553 , 23722 , 120 , 31 , 1 , 1 , 23715
+553 , 23723 , 119 , 31 , 1 , 1 , 23715
+553 , 23724 , 118 , 31 , 1 , 1 , 23715
+553 , 23725 , 118 , 31 , 1 , 1 , 23715
+553 , 23726 , 118 , 31 , 1 , 1 , 23715
+553 , 23727 , 118 , 31 , 1 , 1 , 23715
+553 , 23728 , 118 , 31 , 1 , 1 , 23715
+553 , 23729 , 118 , 31 , 1 , 1 , 23715
+553 , 23730 , 118 , 31 , 1 , 1 , 23715
+553 , 23731 , 118 , 31 , 1 , 1 , 23715
+553 , 23732 , 118 , 31 , 1 , 1 , 23715
+553 , 23733 , 118 , 31 , 1 , 1 , 23715
+553 , 23734 , 116 , 31 , 1 , 1 , 23715
+553 , 23735 , 116 , 31 , 1 , 1 , 23715
+553 , 23736 , 115 , 31 , 1 , 1 , 23715
+553 , 23737 , 115 , 31 , 1 , 1 , 23715
+553 , 23738 , 114 , 31 , 1 , 1 , 23715
+553 , 23739 , 110 , 31 , 1 , 1 , 23715
+553 , 23740 , 109 , 31 , 1 , 1 , 23715
+553 , 23741 , 107 , 31 , 1 , 1 , 23715
+553 , 23742 , 106 , 31 , 1 , 1 , 23715
+553 , 23743 , 105 , 31 , 1 , 1 , 23715
+553 , 23744 , 104 , 31 , 1 , 1 , 23715
+553 , 23745 , 104 , 31 , 1 , 1 , 23715
+553 , 23746 , 96 , 31 , 1 , 1 , 23715
+553 , 23747 , 94 , 31 , 1 , 1 , 23715
+553 , 23748 , 94 , 31 , 1 , 1 , 23715
+553 , 23749 , 94 , 31 , 1 , 1 , 23715
+553 , 23750 , 94 , 31 , 1 , 1 , 23715
+553 , 23751 , 93 , 31 , 1 , 1 , 23715
+553 , 23752 , 93 , 31 , 1 , 1 , 23715
+553 , 23753 , 93 , 31 , 1 , 1 , 23715
+553 , 23754 , 93 , 31 , 1 , 1 , 23715
+553 , 23755 , 93 , 31 , 1 , 1 , 23715
+553 , 23756 , 93 , 31 , 1 , 1 , 23715
+553 , 23757 , 93 , 31 , 1 , 1 , 23715
+553 , 23758 , 60 , 251 , 1 , 1 , 23715
+553 , 23759 , 60 , 230 , 1 , 1 , 23715
+553 , 23760 , 60 , 240 , 1 , 1 , 23715
+553 , 23761 , 60 , 230 , 1 , 1 , 23715
+553 , 23762 , 60 , 240 , 1 , 1 , 23715
+553 , 23763 , 60 , 240 , 1 , 1 , 23715
+553 , 23764 , 60 , 251 , 1 , 1 , 23715
+553 , 23765 , 60 , 261 , 1 , 1 , 23715
+553 , 23766 , 60 , 240 , 1 , 1 , 23715
+553 , 23767 , 60 , 240 , 1 , 1 , 23715
+553 , 23768 , 49 , 244 , 1 , 1 , 23715
+553 , 23769 , 49 , 234 , 1 , 1 , 23715
+553 , 23770 , 49 , 244 , 1 , 1 , 23715
+553 , 23771 , 49 , 224 , 1 , 1 , 23715
+553 , 23772 , 49 , 234 , 1 , 1 , 23715
+553 , 23773 , 49 , 234 , 1 , 1 , 23715
+553 , 23774 , 49 , 244 , 1 , 1 , 23715
+553 , 23775 , 49 , 244 , 1 , 1 , 23715
+553 , 23776 , 49 , 244 , 1 , 1 , 23715
+553 , 23777 , 49 , 234 , 1 , 1 , 23715
+553 , 23778 , 49 , 244 , 1 , 1 , 23715
+553 , 23779 , 49 , 244 , 1 , 1 , 23715
+553 , 23780 , 49 , 244 , 1 , 1 , 23715
+553 , 23781 , 49 , 244 , 1 , 1 , 23715
+553 , 23782 , 49 , 239 , 1 , 1 , 23715
+553 , 23783 , 49 , 234 , 1 , 1 , 23715
+553 , 23784 , 40 , 90 , 1 , 1 , 23715
+553 , 23785 , 40 , 89 , 1 , 1 , 23715
+553 , 23786 , 40 , 78 , 1 , 1 , 23715
+553 , 23787 , 40 , 91 , 1 , 1 , 23715
+553 , 23788 , 40 , 75 , 1 , 1 , 23715
+553 , 23789 , 40 , 76 , 1 , 1 , 23715
+553 , 23790 , 54 , 62 , 1 , 1 , 23715
+553 , 23791 , 53 , 62 , 1 , 1 , 23715
+553 , 23792 , 53 , 62 , 1 , 1 , 23715
+553 , 23793 , 53 , 62 , 1 , 1 , 23715
+553 , 23794 , 52 , 62 , 1 , 1 , 23715
+553 , 23795 , 52 , 62 , 1 , 1 , 23715
+553 , 23796 , 52 , 62 , 1 , 1 , 23715
+553 , 23797 , 51 , 63 , 1 , 1 , 23715
+553 , 23798 , 49 , 72 , 1 , 1 , 23715
+553 , 23799 , 49 , 62 , 1 , 1 , 23715
+553 , 23800 , 49 , 72 , 1 , 1 , 23715
+553 , 23801 , 48 , 72 , 1 , 1 , 23715
+553 , 23802 , 47 , 72 , 1 , 1 , 23715
+553 , 23803 , 47 , 72 , 1 , 1 , 23715
+553 , 23804 , 47 , 72 , 1 , 1 , 23715
+553 , 23805 , 46 , 62 , 1 , 1 , 23715
+553 , 23806 , 45 , 72 , 1 , 1 , 23715
+553 , 23807 , 45 , 72 , 1 , 1 , 23715
+553 , 23808 , 44 , 62 , 1 , 1 , 23715
+553 , 23809 , 43 , 72 , 1 , 1 , 23715
+553 , 23810 , 43 , 62 , 1 , 1 , 23715
+553 , 23811 , 42 , 62 , 1 , 1 , 23715
+553 , 23812 , 42 , 72 , 1 , 1 , 23715
+553 , 23813 , 42 , 62 , 1 , 1 , 23715
+553 , 23814 , 42 , 62 , 1 , 1 , 23715
+553 , 23815 , 41 , 63 , 1 , 1 , 23715
+553 , 23816 , 41 , 63 , 1 , 1 , 23715
+553 , 23817 , 40 , 64 , 1 , 1 , 23715
+553 , 23818 , 40 , 72 , 1 , 1 , 23715
+553 , 23819 , 39 , 72 , 1 , 1 , 23715
+553 , 23820 , 39 , 62 , 1 , 1 , 23715
+553 , 23821 , 38 , 72 , 1 , 1 , 23715
+553 , 23822 , 38 , 72 , 1 , 1 , 23715
+553 , 23823 , 38 , 62 , 1 , 1 , 23715
+553 , 23824 , 38 , 72 , 1 , 1 , 23715
+553 , 23825 , 37 , 72 , 1 , 1 , 23715
+553 , 23826 , 37 , 72 , 1 , 1 , 23715
+553 , 23827 , 37 , 73 , 1 , 1 , 23715
+553 , 23828 , 36 , 72 , 1 , 1 , 23715
+553 , 23829 , 36 , 72 , 1 , 1 , 23715
+553 , 23830 , 35 , 72 , 1 , 1 , 23715
+553 , 23831 , 34 , 72 , 1 , 1 , 23715
+553 , 23832 , 34 , 72 , 1 , 1 , 23715
+553 , 23833 , 34 , 72 , 1 , 1 , 23715
+553 , 23834 , 34 , 62 , 1 , 1 , 23715
+553 , 23835 , 33 , 72 , 1 , 1 , 23715
+553 , 23836 , 33 , 72 , 1 , 1 , 23715
+553 , 23837 , 33 , 72 , 1 , 1 , 23715
+553 , 23838 , 32 , 62 , 1 , 1 , 23715
+553 , 23839 , 32 , 73 , 1 , 1 , 23715
+553 , 23840 , 32 , 74 , 1 , 1 , 23715
+553 , 23841 , 31 , 62 , 1 , 1 , 23715
+553 , 23842 , 31 , 72 , 1 , 1 , 23715
+553 , 23843 , 31 , 72 , 1 , 1 , 23715
+553 , 23844 , 30 , 52 , 1 , 1 , 23715
+553 , 23845 , 30 , 62 , 1 , 1 , 23715
+553 , 23846 , 30 , 62 , 1 , 1 , 23715
+553 , 23847 , 30 , 72 , 1 , 1 , 23715
+553 , 23848 , 30 , 62 , 1 , 1 , 23715
+553 , 23849 , 30 , 52 , 1 , 1 , 23715
+553 , 23850 , 30 , 52 , 1 , 1 , 23715
+553 , 23851 , 29 , 62 , 1 , 1 , 23715
+553 , 23852 , 28 , 52 , 1 , 1 , 23715
+553 , 23853 , 28 , 62 , 1 , 1 , 23715
+553 , 23854 , 28 , 52 , 1 , 1 , 23715
+553 , 23855 , 28 , 52 , 1 , 1 , 23715
+553 , 23856 , 28 , 52 , 1 , 1 , 23715
+553 , 23857 , 28 , 52 , 1 , 1 , 23715
+553 , 23858 , 28 , 52 , 1 , 1 , 23715
+553 , 23859 , 28 , 52 , 1 , 1 , 23715
+553 , 23860 , 28 , 52 , 1 , 1 , 23715
+553 , 23861 , 28 , 54 , 1 , 1 , 23715
+553 , 23862 , 330 , 0 , 1 , 1 , 23807 23822 23806 23817 23719 23774 23857 23816 23762 23854 23787 23721 23751 23829 23856 23782 23859 23736 23729 23809 23781 23797 23826 23761 23838 23726 23757 23811 23730 23790 23728 23756 23747 23845 23739 23738 23846 23718 23792 23734 23773 23732 23794 23821 23814 23842 23785 23810 23731 23772 23801 23717 23740 23840 23770 23843 23745 23795 23759 23771 23753 23723 23779 23777 23766 23737 23861 23749 23769 23860 23720 23841 23793 23825 23746 23823 23848 23836 23741 23831 23760 23743 23722 23799 23834 23748 23849 23844 23780 23727 23735 23758 23788 23767 23827 23830 23815 23853 23742 23837 23820 23851 23764 23754 23725 23847 23786 23852 23744 23833 23813 23784 23805 23855 23765 23850 23835 23716 23733 23796 23791 23818 23768 23819 23776 23832 23783 23724 23824 23750 23789 23839 23778 23755 23775 23798 23802 23858 23828 23800 23752 23803 23804 23808 23812 23763
+553 , 23863 , 421 , 21 , 1 , 1 , 23862
+553 , 23864 , 421 , 31 , 1 , 1 , 23862
+553 , 23865 , 421 , 31 , 1 , 1 , 23862
+553 , 23866 , 419 , 31 , 1 , 1 , 23862
+553 , 23867 , 418 , 21 , 1 , 1 , 23862
+553 , 23868 , 418 , 21 , 1 , 1 , 23862
+553 , 23869 , 418 , 31 , 1 , 1 , 23862
+553 , 23870 , 418 , 31 , 1 , 1 , 23862
+553 , 23871 , 418 , 32 , 1 , 1 , 23862
+553 , 23872 , 418 , 31 , 1 , 1 , 23862
+553 , 23873 , 418 , 32 , 1 , 1 , 23862
+553 , 23874 , 418 , 32 , 1 , 1 , 23862
+553 , 23875 , 418 , 32 , 1 , 1 , 23862
+553 , 23876 , 420 , 11 , 1 , 1 , 23862
+553 , 23877 , 417 , 31 , 1 , 1 , 23862
+553 , 23878 , 417 , 31 , 1 , 1 , 23862
+553 , 23879 , 417 , 31 , 1 , 1 , 23862
+553 , 23880 , 413 , 31 , 1 , 1 , 23862
+553 , 23881 , 413 , 32 , 1 , 1 , 23862
+553 , 23882 , 413 , 32 , 1 , 1 , 23862
+553 , 23883 , 411 , 32 , 1 , 1 , 23862
+553 , 23884 , 410 , 33 , 1 , 1 , 23862
+553 , 23885 , 409 , 33 , 1 , 1 , 23862
+553 , 23886 , 409 , 33 , 1 , 1 , 23862
+553 , 23887 , 409 , 33 , 1 , 1 , 23862
+553 , 23888 , 408 , 31 , 1 , 1 , 23862
+553 , 23889 , 411 , 12 , 1 , 1 , 23862
+553 , 23890 , 411 , 11 , 1 , 1 , 23862
+553 , 23891 , 409 , 11 , 1 , 1 , 23862
+553 , 23892 , 405 , 11 , 1 , 1 , 23862
+553 , 23893 , 404 , 11 , 1 , 1 , 23862
+553 , 23894 , 402 , 11 , 1 , 1 , 23862
+553 , 23895 , 390 , 13 , 1 , 1 , 23862
+553 , 23896 , 390 , 13 , 1 , 1 , 23862
+553 , 23897 , 422 , 31 , 1 , 1 , 23862
+553 , 23898 , 422 , 31 , 1 , 1 , 23862
+553 , 23899 , 422 , 31 , 1 , 1 , 23862
+553 , 23900 , 421 , 31 , 1 , 1 , 23862
+553 , 23901 , 421 , 21 , 1 , 1 , 23862
+553 , 23902 , 390 , 12 , 1 , 1 , 23862
+553 , 23903 , 386 , 11 , 1 , 1 , 23862
+553 , 23904 , 385 , 12 , 1 , 1 , 23862
+553 , 23905 , 384 , 11 , 1 , 1 , 23862
+553 , 23906 , 385 , 42 , 1 , 1 , 23862
+553 , 23907 , 380 , 41 , 1 , 1 , 23862
+553 , 23908 , 380 , 62 , 1 , 1 , 23862
+553 , 23909 , 380 , 52 , 1 , 1 , 23862
+553 , 23910 , 380 , 52 , 1 , 1 , 23862
+553 , 23911 , 380 , 52 , 1 , 1 , 23862
+553 , 23912 , 380 , 62 , 1 , 1 , 23862
+553 , 23913 , 380 , 52 , 1 , 1 , 23862
+553 , 23914 , 380 , 53 , 1 , 1 , 23862
+553 , 23915 , 385 , 42 , 1 , 1 , 23862
+553 , 23916 , 385 , 42 , 1 , 1 , 23862
+553 , 23917 , 380 , 62 , 1 , 1 , 23862
+553 , 23918 , 385 , 52 , 1 , 1 , 23862
+553 , 23919 , 378 , 52 , 1 , 1 , 23862
+553 , 23920 , 376 , 41 , 1 , 1 , 23862
+553 , 23921 , 376 , 52 , 1 , 1 , 23862
+553 , 23922 , 376 , 52 , 1 , 1 , 23862
+553 , 23923 , 376 , 52 , 1 , 1 , 23862
+553 , 23924 , 374 , 62 , 1 , 1 , 23862
+553 , 23925 , 374 , 62 , 1 , 1 , 23862
+553 , 23926 , 376 , 52 , 1 , 1 , 23862
+553 , 23927 , 389 , 52 , 1 , 1 , 23862
+553 , 23928 , 376 , 62 , 1 , 1 , 23862
+553 , 23929 , 396 , 21 , 1 , 1 , 23862
+553 , 23930 , 396 , 32 , 1 , 1 , 23862
+553 , 23931 , 396 , 32 , 1 , 1 , 23862
+553 , 23932 , 396 , 32 , 1 , 1 , 23862
+553 , 23933 , 396 , 32 , 1 , 1 , 23862
+553 , 23934 , 396 , 32 , 1 , 1 , 23862
+553 , 23935 , 396 , 32 , 1 , 1 , 23862
+553 , 23936 , 396 , 32 , 1 , 1 , 23862
+553 , 23937 , 396 , 32 , 1 , 1 , 23862
+553 , 23938 , 396 , 32 , 1 , 1 , 23862
+553 , 23939 , 363 , 11 , 1 , 1 , 23862
+553 , 23940 , 360 , 11 , 1 , 1 , 23862
+553 , 23941 , 349 , 11 , 1 , 1 , 23862
+553 , 23942 , 349 , 12 , 1 , 1 , 23862
+553 , 23943 , 349 , 12 , 1 , 1 , 23862
+553 , 23944 , 349 , 11 , 1 , 1 , 23862
+553 , 23945 , 370 , 62 , 1 , 1 , 23862
+553 , 23946 , 369 , 62 , 1 , 1 , 23862
+553 , 23947 , 369 , 52 , 1 , 1 , 23862
+553 , 23948 , 369 , 52 , 1 , 1 , 23862
+553 , 23949 , 369 , 41 , 1 , 1 , 23862
+553 , 23950 , 368 , 63 , 1 , 1 , 23862
+553 , 23951 , 367 , 52 , 1 , 1 , 23862
+553 , 23952 , 366 , 62 , 1 , 1 , 23862
+553 , 23953 , 365 , 62 , 1 , 1 , 23862
+553 , 23954 , 365 , 62 , 1 , 1 , 23862
+553 , 23955 , 365 , 52 , 1 , 1 , 23862
+553 , 23956 , 365 , 52 , 1 , 1 , 23862
+553 , 23957 , 365 , 41 , 1 , 1 , 23862
+553 , 23958 , 364 , 41 , 1 , 1 , 23862
+553 , 23959 , 364 , 62 , 1 , 1 , 23862
+553 , 23960 , 363 , 52 , 1 , 1 , 23862
+553 , 23961 , 363 , 52 , 1 , 1 , 23862
+553 , 23962 , 362 , 41 , 1 , 1 , 23862
+553 , 23963 , 361 , 53 , 1 , 1 , 23862
+553 , 23964 , 361 , 62 , 1 , 1 , 23862
+553 , 23965 , 361 , 41 , 1 , 1 , 23862
+553 , 23966 , 361 , 41 , 1 , 1 , 23862
+553 , 23967 , 361 , 52 , 1 , 1 , 23862
+553 , 23968 , 360 , 62 , 1 , 1 , 23862
+553 , 23969 , 360 , 52 , 1 , 1 , 23862
+553 , 23970 , 359 , 52 , 1 , 1 , 23862
+553 , 23971 , 359 , 52 , 1 , 1 , 23862
+553 , 23972 , 358 , 52 , 1 , 1 , 23862
+553 , 23973 , 357 , 42 , 1 , 1 , 23862
+553 , 23974 , 357 , 32 , 1 , 1 , 23862
+553 , 23975 , 357 , 52 , 1 , 1 , 23862
+553 , 23976 , 357 , 41 , 1 , 1 , 23862
+553 , 23977 , 357 , 42 , 1 , 1 , 23862
+553 , 23978 , 356 , 52 , 1 , 1 , 23862
+553 , 23979 , 356 , 52 , 1 , 1 , 23862
+553 , 23980 , 355 , 52 , 1 , 1 , 23862
+553 , 23981 , 355 , 41 , 1 , 1 , 23862
+553 , 23982 , 353 , 41 , 1 , 1 , 23862
+553 , 23983 , 353 , 41 , 1 , 1 , 23862
+553 , 23984 , 353 , 42 , 1 , 1 , 23862
+553 , 23985 , 353 , 31 , 1 , 1 , 23862
+553 , 23986 , 352 , 31 , 1 , 1 , 23862
+553 , 23987 , 352 , 42 , 1 , 1 , 23862
+553 , 23988 , 352 , 42 , 1 , 1 , 23862
+553 , 23989 , 351 , 32 , 1 , 1 , 23862
+553 , 23990 , 350 , 31 , 1 , 1 , 23862
+553 , 23991 , 350 , 31 , 1 , 1 , 23862
+553 , 23992 , 348 , 21 , 1 , 1 , 23862
+553 , 23993 , 348 , 21 , 1 , 1 , 23862
+553 , 23994 , 348 , 21 , 1 , 1 , 23862
+553 , 23995 , 348 , 11 , 1 , 1 , 23862
+553 , 23996 , 348 , 11 , 1 , 1 , 23862
+553 , 23997 , 348 , 21 , 1 , 1 , 23862
+553 , 23998 , 348 , 11 , 1 , 1 , 23862
+553 , 23999 , 345 , 21 , 1 , 1 , 23862
+553 , 24000 , 345 , 21 , 1 , 1 , 23862
+553 , 24001 , 345 , 11 , 1 , 1 , 23862
+553 , 24002 , 345 , 11 , 1 , 1 , 23862
+553 , 24003 , 345 , 11 , 1 , 1 , 23862
+553 , 24004 , 345 , 11 , 1 , 1 , 23862
+553 , 24005 , 345 , 11 , 1 , 1 , 23862
+553 , 24006 , 345 , 11 , 1 , 1 , 23862
+553 , 24007 , 345 , 21 , 1 , 1 , 23862
+553 , 24008 , 345 , 11 , 1 , 1 , 23862
+553 , 24009 , 489 , 21 , 1 , 1 , 24005 23909 23889 23915 23901 23871 23938 23870 23883 23931 23877 23919 24000 23996 23900 23939 23948 23986 23987 23921 23942 23955 23977 23978 23992 23988 23918 23951 23962 23969 23958 23864 23897 23885 23891 23945 23920 23991 24003 23997 23999 23964 23917 23902 23982 23899 23892 23866 23968 23979 23954 23981 24001 23913 23922 23923 23879 23875 23865 23876 23925 23895 23984 23887 23983 23910 23947 23873 23894 23989 24008 23905 23869 23933 23946 23898 23975 23914 23878 23990 23960 23993 23911 24006 23890 23970 23974 23896 23941 24004 23956 23936 23966 23965 23967 23863 23881 24007 23882 23930 23998 23995 23926 23944 23963 24002 23949 23950 23973 23916 23953 23929 23976 23872 23943 23884 23980 23886 23971 23927 23985 23934 23904 23908 23874 23928 23903 23937 23994 23867 23961 23972 23880 23907 23932 23940 23888 23924 23959 23906 23893 23868 23952 23957 23935 23912
+554 , 24010 , 4 , 11 , 1 , 1 ,
+554 , 24011 , 119 , 52 , 1 , 1 , 24010
+554 , 24012 , 119 , 52 , 1 , 1 , 24010
+554 , 24013 , 119 , 52 , 1 , 1 , 24010
+554 , 24014 , 119 , 41 , 1 , 1 , 24010
+554 , 24015 , 119 , 41 , 1 , 1 , 24010
+554 , 24016 , 119 , 52 , 1 , 1 , 24010
+554 , 24017 , 119 , 52 , 1 , 1 , 24010
+554 , 24018 , 119 , 52 , 1 , 1 , 24010
+554 , 24019 , 119 , 52 , 1 , 1 , 24010
+554 , 24020 , 119 , 41 , 1 , 1 , 24010
+554 , 24021 , 118 , 41 , 1 , 1 , 24010
+554 , 24022 , 118 , 52 , 1 , 1 , 24010
+554 , 24023 , 118 , 52 , 1 , 1 , 24010
+554 , 24024 , 117 , 52 , 1 , 1 , 24010
+554 , 24025 , 117 , 62 , 1 , 1 , 24010
+554 , 24026 , 117 , 42 , 1 , 1 , 24010
+554 , 24027 , 117 , 52 , 1 , 1 , 24010
+554 , 24028 , 117 , 41 , 1 , 1 , 24010
+554 , 24029 , 116 , 52 , 1 , 1 , 24010
+554 , 24030 , 116 , 52 , 1 , 1 , 24010
+554 , 24031 , 116 , 52 , 1 , 1 , 24010
+554 , 24032 , 116 , 52 , 1 , 1 , 24010
+554 , 24033 , 115 , 52 , 1 , 1 , 24010
+554 , 24034 , 115 , 52 , 1 , 1 , 24010
+554 , 24035 , 114 , 52 , 1 , 1 , 24010
+554 , 24036 , 114 , 51 , 1 , 1 , 24010
+554 , 24037 , 113 , 52 , 1 , 1 , 24010
+554 , 24038 , 112 , 62 , 1 , 1 , 24010
+554 , 24039 , 112 , 52 , 1 , 1 , 24010
+554 , 24040 , 111 , 51 , 1 , 1 , 24010
+554 , 24041 , 110 , 52 , 1 , 1 , 24010
+554 , 24042 , 110 , 62 , 1 , 1 , 24010
+554 , 24043 , 109 , 52 , 1 , 1 , 24010
+554 , 24044 , 109 , 52 , 1 , 1 , 24010
+554 , 24045 , 108 , 51 , 1 , 1 , 24010
+554 , 24046 , 106 , 52 , 1 , 1 , 24010
+554 , 24047 , 104 , 52 , 1 , 1 , 24010
+554 , 24048 , 103 , 52 , 1 , 1 , 24010
+554 , 24049 , 102 , 41 , 1 , 1 , 24010
+554 , 24050 , 102 , 52 , 1 , 1 , 24010
+554 , 24051 , 101 , 42 , 1 , 1 , 24010
+554 , 24052 , 101 , 41 , 1 , 1 , 24010
+554 , 24053 , 100 , 41 , 1 , 1 , 24010
+554 , 24054 , 100 , 52 , 1 , 1 , 24010
+554 , 24055 , 100 , 52 , 1 , 1 , 24010
+554 , 24056 , 99 , 41 , 1 , 1 , 24010
+554 , 24057 , 98 , 52 , 1 , 1 , 24010
+554 , 24058 , 97 , 52 , 1 , 1 , 24010
+554 , 24059 , 95 , 52 , 1 , 1 , 24010
+554 , 24060 , 95 , 52 , 1 , 1 , 24010
+554 , 24061 , 95 , 41 , 1 , 1 , 24010
+554 , 24062 , 95 , 52 , 1 , 1 , 24010
+554 , 24063 , 94 , 52 , 1 , 1 , 24010
+554 , 24064 , 94 , 52 , 1 , 1 , 24010
+554 , 24065 , 94 , 52 , 1 , 1 , 24010
+554 , 24066 , 92 , 52 , 1 , 1 , 24010
+554 , 24067 , 92 , 52 , 1 , 1 , 24010
+554 , 24068 , 85 , 41 , 1 , 1 , 24010
+554 , 24069 , 152 , 21 , 1 , 1 , 24010
+554 , 24070 , 147 , 31 , 1 , 1 , 24010
+554 , 24071 , 142 , 86 , 1 , 1 , 24010
+554 , 24072 , 137 , 31 , 1 , 1 , 24010
+554 , 24073 , 137 , 31 , 1 , 1 , 24010
+554 , 24074 , 136 , 31 , 1 , 1 , 24010
+554 , 24075 , 136 , 42 , 1 , 1 , 24010
+554 , 24076 , 136 , 31 , 1 , 1 , 24010
+554 , 24077 , 131 , 86 , 1 , 1 , 24010
+554 , 24078 , 126 , 87 , 1 , 1 , 24010
+554 , 24079 , 126 , 86 , 1 , 1 , 24010
+554 , 24080 , 125 , 85 , 1 , 1 , 24010
+554 , 24081 , 121 , 85 , 1 , 1 , 24010
+554 , 24082 , 123 , 52 , 1 , 1 , 24010
+554 , 24083 , 123 , 52 , 1 , 1 , 24010
+554 , 24084 , 122 , 52 , 1 , 1 , 24010
+554 , 24085 , 122 , 52 , 1 , 1 , 24010
+554 , 24086 , 122 , 52 , 1 , 1 , 24010
+554 , 24087 , 122 , 52 , 1 , 1 , 24010
+554 , 24088 , 122 , 41 , 1 , 1 , 24010
+554 , 24089 , 122 , 52 , 1 , 1 , 24010
+554 , 24090 , 121 , 52 , 1 , 1 , 24010
+554 , 24091 , 119 , 41 , 1 , 1 , 24010
+554 , 24092 , 85 , 42 , 1 , 1 , 24010
+554 , 24093 , 83 , 42 , 1 , 1 , 24010
+554 , 24094 , 83 , 42 , 1 , 1 , 24010
+554 , 24095 , 82 , 41 , 1 , 1 , 24010
+554 , 24096 , 82 , 42 , 1 , 1 , 24010
+554 , 24097 , 82 , 42 , 1 , 1 , 24010
+554 , 24098 , 82 , 31 , 1 , 1 , 24010
+554 , 24099 , 81 , 32 , 1 , 1 , 24010
+554 , 24100 , 54 , 251 , 1 , 1 , 24010
+554 , 24101 , 54 , 272 , 1 , 1 , 24010
+554 , 24102 , 54 , 241 , 1 , 1 , 24010
+554 , 24103 , 54 , 262 , 1 , 1 , 24010
+554 , 24104 , 54 , 241 , 1 , 1 , 24010
+554 , 24105 , 54 , 251 , 1 , 1 , 24010
+554 , 24106 , 54 , 240 , 1 , 1 , 24010
+554 , 24107 , 54 , 241 , 1 , 1 , 24010
+554 , 24108 , 54 , 240 , 1 , 1 , 24010
+554 , 24109 , 54 , 240 , 1 , 1 , 24010
+554 , 24110 , 47 , 255 , 1 , 1 , 24010
+554 , 24111 , 47 , 255 , 1 , 1 , 24010
+554 , 24112 , 47 , 255 , 1 , 1 , 24010
+554 , 24113 , 47 , 245 , 1 , 1 , 24010
+554 , 24114 , 47 , 255 , 1 , 1 , 24010
+554 , 24115 , 47 , 255 , 1 , 1 , 24010
+554 , 24116 , 47 , 255 , 1 , 1 , 24010
+554 , 24117 , 47 , 234 , 1 , 1 , 24010
+554 , 24118 , 47 , 255 , 1 , 1 , 24010
+554 , 24119 , 47 , 245 , 1 , 1 , 24010
+554 , 24120 , 47 , 245 , 1 , 1 , 24010
+554 , 24121 , 47 , 234 , 1 , 1 , 24010
+554 , 24122 , 47 , 224 , 1 , 1 , 24010
+554 , 24123 , 47 , 234 , 1 , 1 , 24010
+554 , 24124 , 47 , 255 , 1 , 1 , 24010
+554 , 24125 , 47 , 255 , 1 , 1 , 24010
+554 , 24126 , 37 , 99 , 1 , 1 , 24010
+554 , 24127 , 37 , 78 , 1 , 1 , 24010
+554 , 24128 , 37 , 81 , 1 , 1 , 24010
+554 , 24129 , 37 , 81 , 1 , 1 , 24010
+554 , 24130 , 37 , 87 , 1 , 1 , 24010
+554 , 24131 , 37 , 81 , 1 , 1 , 24010
+554 , 24132 , 50 , 62 , 1 , 1 , 24010
+554 , 24133 , 49 , 62 , 1 , 1 , 24010
+554 , 24134 , 49 , 52 , 1 , 1 , 24010
+554 , 24135 , 49 , 62 , 1 , 1 , 24010
+554 , 24136 , 48 , 62 , 1 , 1 , 24010
+554 , 24137 , 48 , 62 , 1 , 1 , 24010
+554 , 24138 , 48 , 62 , 1 , 1 , 24010
+554 , 24139 , 48 , 62 , 1 , 1 , 24010
+554 , 24140 , 47 , 52 , 1 , 1 , 24010
+554 , 24141 , 47 , 52 , 1 , 1 , 24010
+554 , 24142 , 46 , 41 , 1 , 1 , 24010
+554 , 24143 , 46 , 52 , 1 , 1 , 24010
+554 , 24144 , 45 , 62 , 1 , 1 , 24010
+554 , 24145 , 45 , 62 , 1 , 1 , 24010
+554 , 24146 , 45 , 62 , 1 , 1 , 24010
+554 , 24147 , 44 , 52 , 1 , 1 , 24010
+554 , 24148 , 44 , 62 , 1 , 1 , 24010
+554 , 24149 , 44 , 62 , 1 , 1 , 24010
+554 , 24150 , 44 , 52 , 1 , 1 , 24010
+554 , 24151 , 44 , 52 , 1 , 1 , 24010
+554 , 24152 , 42 , 62 , 1 , 1 , 24010
+554 , 24153 , 42 , 62 , 1 , 1 , 24010
+554 , 24154 , 42 , 62 , 1 , 1 , 24010
+554 , 24155 , 41 , 62 , 1 , 1 , 24010
+554 , 24156 , 41 , 62 , 1 , 1 , 24010
+554 , 24157 , 40 , 62 , 1 , 1 , 24010
+554 , 24158 , 40 , 62 , 1 , 1 , 24010
+554 , 24159 , 40 , 62 , 1 , 1 , 24010
+554 , 24160 , 40 , 62 , 1 , 1 , 24010
+554 , 24161 , 40 , 62 , 1 , 1 , 24010
+554 , 24162 , 39 , 62 , 1 , 1 , 24010
+554 , 24163 , 38 , 62 , 1 , 1 , 24010
+554 , 24164 , 38 , 52 , 1 , 1 , 24010
+554 , 24165 , 37 , 52 , 1 , 1 , 24010
+554 , 24166 , 37 , 52 , 1 , 1 , 24010
+554 , 24167 , 37 , 72 , 1 , 1 , 24010
+554 , 24168 , 36 , 62 , 1 , 1 , 24010
+554 , 24169 , 36 , 52 , 1 , 1 , 24010
+554 , 24170 , 36 , 72 , 1 , 1 , 24010
+554 , 24171 , 36 , 62 , 1 , 1 , 24010
+554 , 24172 , 35 , 52 , 1 , 1 , 24010
+554 , 24173 , 34 , 52 , 1 , 1 , 24010
+554 , 24174 , 34 , 52 , 1 , 1 , 24010
+554 , 24175 , 33 , 62 , 1 , 1 , 24010
+554 , 24176 , 33 , 52 , 1 , 1 , 24010
+554 , 24177 , 33 , 52 , 1 , 1 , 24010
+554 , 24178 , 33 , 72 , 1 , 1 , 24010
+554 , 24179 , 33 , 72 , 1 , 1 , 24010
+554 , 24180 , 32 , 52 , 1 , 1 , 24010
+554 , 24181 , 32 , 62 , 1 , 1 , 24010
+554 , 24182 , 31 , 52 , 1 , 1 , 24010
+554 , 24183 , 31 , 72 , 1 , 1 , 24010
+554 , 24184 , 31 , 72 , 1 , 1 , 24010
+554 , 24185 , 30 , 52 , 1 , 1 , 24010
+554 , 24186 , 30 , 62 , 1 , 1 , 24010
+554 , 24187 , 30 , 52 , 1 , 1 , 24010
+554 , 24188 , 30 , 41 , 1 , 1 , 24010
+554 , 24189 , 30 , 52 , 1 , 1 , 24010
+554 , 24190 , 30 , 41 , 1 , 1 , 24010
+554 , 24191 , 30 , 52 , 1 , 1 , 24010
+554 , 24192 , 29 , 52 , 1 , 1 , 24010
+554 , 24193 , 29 , 52 , 1 , 1 , 24010
+554 , 24194 , 28 , 52 , 1 , 1 , 24010
+554 , 24195 , 28 , 42 , 1 , 1 , 24010
+554 , 24196 , 28 , 41 , 1 , 1 , 24010
+554 , 24197 , 28 , 41 , 1 , 1 , 24010
+554 , 24198 , 28 , 41 , 1 , 1 , 24010
+554 , 24199 , 28 , 41 , 1 , 1 , 24010
+554 , 24200 , 28 , 41 , 1 , 1 , 24010
+554 , 24201 , 28 , 52 , 1 , 1 , 24010
+554 , 24202 , 28 , 52 , 1 , 1 , 24010
+554 , 24203 , 28 , 41 , 1 , 1 , 24010
+554 , 24204 , 335 , 0 , 1 , 1 , 24156 24028 24176 24162 24193 24194 24013 24153 24142 24135 24070 24160 24127 24117 24126 24157 24195 24080 24125 24085 24120 24035 24048 24161 24047 24144 24074 24030 24088 24082 24152 24015 24017 24159 24122 24022 24077 24062 24201 24121 24112 24198 24141 24073 24131 24087 24041 24167 24116 24090 24068 24130 24011 24043 24038 24187 24097 24033 24105 24019 24061 24023 24069 24151 24060 24188 24091 24113 24110 24057 24079 24134 24044 24095 24106 24101 24184 24072 24114 24104 24063 24137 24179 24036 24197 24199 24025 24052 24075 24172 24185 24190 24099 24163 24155 24175 24021 24154 24084 24065 24029 24123 24174 24158 24096 24183 24173 24169 24014 24148 24102 24149 24109 24032 24081 24054 24093 24108 24053 24132 24168 24143 24124 24165 24039 24024 24146 24178 24150 24016 24164 24100 24076 24027 24050 24192 24191 24119 24064 24103 24042 24133 24200 24189 24045 24107 24037 24040 24051 24058 24118 24031 24055 24071 24139 24182 24026 24092 24056 24138 24020 24012 24089 24111 24129 24170 24181 24145 24083 24067 24078 24094 24186 24098 24196 24147 24171 24128 24177 24115 24166 24049 24086 24018 24046 24140 24180 24066 24202 24034 24059 24203 24136
+554 , 24205 , 419 , 62 , 1 , 1 , 24204
+554 , 24206 , 419 , 72 , 1 , 1 , 24204
+554 , 24207 , 419 , 62 , 1 , 1 , 24204
+554 , 24208 , 419 , 62 , 1 , 1 , 24204
+554 , 24209 , 419 , 62 , 1 , 1 , 24204
+554 , 24210 , 419 , 52 , 1 , 1 , 24204
+554 , 24211 , 419 , 62 , 1 , 1 , 24204
+554 , 24212 , 419 , 62 , 1 , 1 , 24204
+554 , 24213 , 419 , 62 , 1 , 1 , 24204
+554 , 24214 , 418 , 62 , 1 , 1 , 24204
+554 , 24215 , 454 , 42 , 1 , 1 , 24204
+554 , 24216 , 454 , 52 , 1 , 1 , 24204
+554 , 24217 , 464 , 32 , 1 , 1 , 24204
+554 , 24218 , 462 , 32 , 1 , 1 , 24204
+554 , 24219 , 467 , 32 , 1 , 1 , 24204
+554 , 24220 , 452 , 52 , 1 , 1 , 24204
+554 , 24221 , 451 , 41 , 1 , 1 , 24204
+554 , 24222 , 467 , 32 , 1 , 1 , 24204
+554 , 24223 , 451 , 41 , 1 , 1 , 24204
+554 , 24224 , 426 , 11 , 1 , 1 , 24204
+554 , 24225 , 450 , 41 , 1 , 1 , 24204
+554 , 24226 , 460 , 32 , 1 , 1 , 24204
+554 , 24227 , 450 , 52 , 1 , 1 , 24204
+554 , 24228 , 459 , 32 , 1 , 1 , 24204
+554 , 24229 , 460 , 11 , 1 , 1 , 24204
+554 , 24230 , 470 , 32 , 1 , 1 , 24204
+554 , 24231 , 447 , 52 , 1 , 1 , 24204
+554 , 24232 , 469 , 11 , 1 , 1 , 24204
+554 , 24233 , 455 , 11 , 1 , 1 , 24204
+554 , 24234 , 446 , 52 , 1 , 1 , 24204
+554 , 24235 , 444 , 52 , 1 , 1 , 24204
+554 , 24236 , 456 , 12 , 1 , 1 , 24204
+554 , 24237 , 455 , 11 , 1 , 1 , 24204
+554 , 24238 , 443 , 52 , 1 , 1 , 24204
+554 , 24239 , 442 , 52 , 1 , 1 , 24204
+554 , 24240 , 442 , 52 , 1 , 1 , 24204
+554 , 24241 , 442 , 52 , 1 , 1 , 24204
+554 , 24242 , 440 , 52 , 1 , 1 , 24204
+554 , 24243 , 439 , 52 , 1 , 1 , 24204
+554 , 24244 , 438 , 52 , 1 , 1 , 24204
+554 , 24245 , 438 , 52 , 1 , 1 , 24204
+554 , 24246 , 437 , 52 , 1 , 1 , 24204
+554 , 24247 , 437 , 52 , 1 , 1 , 24204
+554 , 24248 , 437 , 52 , 1 , 1 , 24204
+554 , 24249 , 436 , 52 , 1 , 1 , 24204
+554 , 24250 , 436 , 52 , 1 , 1 , 24204
+554 , 24251 , 436 , 52 , 1 , 1 , 24204
+554 , 24252 , 434 , 62 , 1 , 1 , 24204
+554 , 24253 , 433 , 62 , 1 , 1 , 24204
+554 , 24254 , 432 , 62 , 1 , 1 , 24204
+554 , 24255 , 442 , 12 , 1 , 1 , 24204
+554 , 24256 , 431 , 52 , 1 , 1 , 24204
+554 , 24257 , 431 , 62 , 1 , 1 , 24204
+554 , 24258 , 430 , 62 , 1 , 1 , 24204
+554 , 24259 , 430 , 62 , 1 , 1 , 24204
+554 , 24260 , 437 , 11 , 1 , 1 , 24204
+554 , 24261 , 427 , 11 , 1 , 1 , 24204
+554 , 24262 , 427 , 32 , 1 , 1 , 24204
+554 , 24263 , 419 , 32 , 1 , 1 , 24204
+554 , 24264 , 419 , 32 , 1 , 1 , 24204
+554 , 24265 , 419 , 32 , 1 , 1 , 24204
+554 , 24266 , 450 , 32 , 1 , 1 , 24204
+554 , 24267 , 429 , 63 , 1 , 1 , 24204
+554 , 24268 , 429 , 62 , 1 , 1 , 24204
+554 , 24269 , 432 , 11 , 1 , 1 , 24204
+554 , 24270 , 433 , 11 , 1 , 1 , 24204
+554 , 24271 , 427 , 62 , 1 , 1 , 24204
+554 , 24272 , 427 , 62 , 1 , 1 , 24204
+554 , 24273 , 427 , 62 , 1 , 1 , 24204
+554 , 24274 , 432 , 63 , 1 , 1 , 24204
+554 , 24275 , 427 , 62 , 1 , 1 , 24204
+554 , 24276 , 423 , 52 , 1 , 1 , 24204
+554 , 24277 , 423 , 73 , 1 , 1 , 24204
+554 , 24278 , 422 , 63 , 1 , 1 , 24204
+554 , 24279 , 422 , 63 , 1 , 1 , 24204
+554 , 24280 , 422 , 63 , 1 , 1 , 24204
+554 , 24281 , 422 , 62 , 1 , 1 , 24204
+554 , 24282 , 446 , 32 , 1 , 1 , 24204
+554 , 24283 , 417 , 32 , 1 , 1 , 24204
+554 , 24284 , 416 , 32 , 1 , 1 , 24204
+554 , 24285 , 416 , 32 , 1 , 1 , 24204
+554 , 24286 , 414 , 32 , 1 , 1 , 24204
+554 , 24287 , 414 , 13 , 1 , 1 , 24204
+554 , 24288 , 413 , 12 , 1 , 1 , 24204
+554 , 24289 , 407 , 11 , 1 , 1 , 24204
+554 , 24290 , 406 , 11 , 1 , 1 , 24204
+554 , 24291 , 402 , 11 , 1 , 1 , 24204
+554 , 24292 , 396 , 12 , 1 , 1 , 24204
+554 , 24293 , 395 , 13 , 1 , 1 , 24204
+554 , 24294 , 390 , 12 , 1 , 1 , 24204
+554 , 24295 , 389 , 12 , 1 , 1 , 24204
+554 , 24296 , 389 , 52 , 1 , 1 , 24204
+554 , 24297 , 386 , 72 , 1 , 1 , 24204
+554 , 24298 , 386 , 41 , 1 , 1 , 24204
+554 , 24299 , 386 , 41 , 1 , 1 , 24204
+554 , 24300 , 388 , 41 , 1 , 1 , 24204
+554 , 24301 , 388 , 41 , 1 , 1 , 24204
+554 , 24302 , 387 , 52 , 1 , 1 , 24204
+554 , 24303 , 391 , 62 , 1 , 1 , 24204
+554 , 24304 , 391 , 52 , 1 , 1 , 24204
+554 , 24305 , 385 , 41 , 1 , 1 , 24204
+554 , 24306 , 384 , 41 , 1 , 1 , 24204
+554 , 24307 , 384 , 41 , 1 , 1 , 24204
+554 , 24308 , 384 , 41 , 1 , 1 , 24204
+554 , 24309 , 382 , 41 , 1 , 1 , 24204
+554 , 24310 , 382 , 62 , 1 , 1 , 24204
+554 , 24311 , 382 , 72 , 1 , 1 , 24204
+554 , 24312 , 380 , 62 , 1 , 1 , 24204
+554 , 24313 , 382 , 72 , 1 , 1 , 24204
+554 , 24314 , 380 , 52 , 1 , 1 , 24204
+554 , 24315 , 380 , 41 , 1 , 1 , 24204
+554 , 24316 , 380 , 32 , 1 , 1 , 24204
+554 , 24317 , 380 , 32 , 1 , 1 , 24204
+554 , 24318 , 380 , 32 , 1 , 1 , 24204
+554 , 24319 , 379 , 32 , 1 , 1 , 24204
+554 , 24320 , 379 , 32 , 1 , 1 , 24204
+554 , 24321 , 379 , 32 , 1 , 1 , 24204
+554 , 24322 , 379 , 32 , 1 , 1 , 24204
+554 , 24323 , 378 , 32 , 1 , 1 , 24204
+554 , 24324 , 378 , 32 , 1 , 1 , 24204
+554 , 24325 , 378 , 32 , 1 , 1 , 24204
+554 , 24326 , 380 , 11 , 1 , 1 , 24204
+554 , 24327 , 364 , 11 , 1 , 1 , 24204
+554 , 24328 , 397 , 12 , 1 , 1 , 24204
+554 , 24329 , 386 , 12 , 1 , 1 , 24204
+554 , 24330 , 378 , 11 , 1 , 1 , 24204
+554 , 24331 , 359 , 11 , 1 , 1 , 24204
+554 , 24332 , 373 , 42 , 1 , 1 , 24204
+554 , 24333 , 373 , 82 , 1 , 1 , 24204
+554 , 24334 , 373 , 72 , 1 , 1 , 24204
+554 , 24335 , 372 , 72 , 1 , 1 , 24204
+554 , 24336 , 370 , 72 , 1 , 1 , 24204
+554 , 24337 , 369 , 62 , 1 , 1 , 24204
+554 , 24338 , 369 , 52 , 1 , 1 , 24204
+554 , 24339 , 368 , 52 , 1 , 1 , 24204
+554 , 24340 , 368 , 52 , 1 , 1 , 24204
+554 , 24341 , 368 , 72 , 1 , 1 , 24204
+554 , 24342 , 368 , 72 , 1 , 1 , 24204
+554 , 24343 , 368 , 72 , 1 , 1 , 24204
+554 , 24344 , 368 , 62 , 1 , 1 , 24204
+554 , 24345 , 367 , 52 , 1 , 1 , 24204
+554 , 24346 , 366 , 52 , 1 , 1 , 24204
+554 , 24347 , 365 , 52 , 1 , 1 , 24204
+554 , 24348 , 365 , 52 , 1 , 1 , 24204
+554 , 24349 , 365 , 72 , 1 , 1 , 24204
+554 , 24350 , 364 , 72 , 1 , 1 , 24204
+554 , 24351 , 364 , 72 , 1 , 1 , 24204
+554 , 24352 , 364 , 62 , 1 , 1 , 24204
+554 , 24353 , 364 , 62 , 1 , 1 , 24204
+554 , 24354 , 364 , 52 , 1 , 1 , 24204
+554 , 24355 , 364 , 52 , 1 , 1 , 24204
+554 , 24356 , 363 , 52 , 1 , 1 , 24204
+554 , 24357 , 361 , 52 , 1 , 1 , 24204
+554 , 24358 , 361 , 52 , 1 , 1 , 24204
+554 , 24359 , 360 , 52 , 1 , 1 , 24204
+554 , 24360 , 360 , 52 , 1 , 1 , 24204
+554 , 24361 , 360 , 52 , 1 , 1 , 24204
+554 , 24362 , 360 , 52 , 1 , 1 , 24204
+554 , 24363 , 360 , 52 , 1 , 1 , 24204
+554 , 24364 , 360 , 52 , 1 , 1 , 24204
+554 , 24365 , 360 , 52 , 1 , 1 , 24204
+554 , 24366 , 359 , 52 , 1 , 1 , 24204
+554 , 24367 , 357 , 52 , 1 , 1 , 24204
+554 , 24368 , 357 , 52 , 1 , 1 , 24204
+554 , 24369 , 356 , 52 , 1 , 1 , 24204
+554 , 24370 , 356 , 52 , 1 , 1 , 24204
+554 , 24371 , 356 , 52 , 1 , 1 , 24204
+554 , 24372 , 356 , 52 , 1 , 1 , 24204
+554 , 24373 , 356 , 52 , 1 , 1 , 24204
+554 , 24374 , 356 , 52 , 1 , 1 , 24204
+554 , 24375 , 355 , 41 , 1 , 1 , 24204
+554 , 24376 , 354 , 52 , 1 , 1 , 24204
+554 , 24377 , 353 , 52 , 1 , 1 , 24204
+554 , 24378 , 353 , 41 , 1 , 1 , 24204
+554 , 24379 , 353 , 52 , 1 , 1 , 24204
+554 , 24380 , 353 , 52 , 1 , 1 , 24204
+554 , 24381 , 353 , 52 , 1 , 1 , 24204
+554 , 24382 , 352 , 41 , 1 , 1 , 24204
+554 , 24383 , 352 , 41 , 1 , 1 , 24204
+554 , 24384 , 352 , 41 , 1 , 1 , 24204
+554 , 24385 , 352 , 41 , 1 , 1 , 24204
+554 , 24386 , 351 , 41 , 1 , 1 , 24204
+554 , 24387 , 350 , 31 , 1 , 1 , 24204
+554 , 24388 , 350 , 21 , 1 , 1 , 24204
+554 , 24389 , 350 , 42 , 1 , 1 , 24204
+554 , 24390 , 350 , 31 , 1 , 1 , 24204
+554 , 24391 , 350 , 31 , 1 , 1 , 24204
+554 , 24392 , 350 , 21 , 1 , 1 , 24204
+554 , 24393 , 350 , 31 , 1 , 1 , 24204
+554 , 24394 , 350 , 32 , 1 , 1 , 24204
+554 , 24395 , 350 , 21 , 1 , 1 , 24204
+554 , 24396 , 350 , 41 , 1 , 1 , 24204
+554 , 24397 , 350 , 11 , 1 , 1 , 24204
+554 , 24398 , 617 , 21 , 1 , 1 , 24284 24375 24319 24293 24208 24216 24370 24226 24292 24275 24397 24378 24359 24362 24316 24379 24298 24286 24272 24304 24381 24206 24367 24382 24273 24373 24294 24209 24262 24259 24360 24244 24270 24312 24242 24309 24388 24376 24238 24368 24237 24251 24344 24215 24241 24391 24249 24395 24315 24386 24288 24371 24366 24303 24324 24354 24380 24385 24307 24323 24218 24336 24327 24333 24246 24306 24332 24287 24263 24213 24269 24317 24313 24328 24254 24207 24325 24369 24377 24236 24339 24365 24311 24341 24331 24291 24318 24225 24330 24297 24347 24348 24349 24387 24258 24247 24233 24235 24252 24256 24221 24338 24310 24266 24305 24231 24285 24245 24264 24267 24337 24393 24278 24394 24295 24228 24220 24322 24389 24260 24222 24356 24299 24276 24265 24227 24240 24217 24248 24223 24346 24212 24224 24243 24335 24314 24390 24229 24320 24253 24326 24274 24232 24357 24301 24353 24214 24279 24361 24392 24271 24289 24277 24290 24355 24384 24308 24374 24255 24321 24300 24296 24280 24383 24239 24345 24334 24281 24396 24250 24302 24340 24205 24211 24329 24363 24230 24358 24257 24342 24343 24350 24372 24210 24261 24234 24364 24351 24282 24268 24283 24219 24352
+555 , 24399 , 16 , 459 , 1 , 1 ,
+555 , 24400 , 16 , 438 , 1 , 1 ,
+555 , 24401 , 16 , 490 , 1 , 1 ,
+555 , 24402 , 16 , 469 , 1 , 1 ,
+555 , 24403 , 16 , 416 , 1 , 1 ,
+555 , 24404 , 16 , 407 , 1 , 1 ,
+555 , 24405 , 11 , 639 , 1 , 1 ,
+555 , 24406 , 11 , 630 , 1 , 1 ,
+555 , 24407 , 11 , 609 , 1 , 1 ,
+555 , 24408 , 11 , 610 , 1 , 1 ,
+555 , 24409 , 11 , 599 , 1 , 1 ,
+555 , 24410 , 11 , 578 , 1 , 1 ,
+555 , 24411 , 10 , 560 , 1 , 1 ,
+555 , 24412 , 10 , 507 , 1 , 1 ,
+555 , 24413 , 10 , 528 , 1 , 1 ,
+555 , 24414 , 10 , 500 , 1 , 1 ,
+555 , 24415 , 10 , 507 , 1 , 1 ,
+555 , 24416 , 10 , 498 , 1 , 1 ,
+555 , 24417 , 10 , 518 , 1 , 1 ,
+555 , 24418 , 10 , 497 , 1 , 1 ,
+555 , 24419 , 10 , 489 , 1 , 1 ,
+555 , 24420 , 10 , 500 , 1 , 1 ,
+555 , 24421 , 7 , 209 , 1 , 1 ,
+555 , 24422 , 7 , 218 , 1 , 1 ,
+555 , 24423 , 7 , 224 , 1 , 1 ,
+555 , 24424 , 7 , 216 , 1 , 1 ,
+555 , 24425 , 7 , 215 , 1 , 1 ,
+555 , 24426 , 7 , 219 , 1 , 1 ,
+555 , 24427 , 27 , 143 , 1 , 1 ,
+555 , 24428 , 27 , 133 , 1 , 1 ,
+555 , 24429 , 27 , 143 , 1 , 1 ,
+555 , 24430 , 25 , 133 , 1 , 1 ,
+555 , 24431 , 25 , 154 , 1 , 1 ,
+555 , 24432 , 25 , 154 , 1 , 1 ,
+555 , 24433 , 25 , 164 , 1 , 1 ,
+555 , 24434 , 24 , 164 , 1 , 1 ,
+555 , 24435 , 24 , 154 , 1 , 1 ,
+555 , 24436 , 24 , 144 , 1 , 1 ,
+555 , 24437 , 24 , 154 , 1 , 1 ,
+555 , 24438 , 24 , 144 , 1 , 1 ,
+555 , 24439 , 24 , 143 , 1 , 1 ,
+555 , 24440 , 21 , 143 , 1 , 1 ,
+555 , 24441 , 21 , 143 , 1 , 1 ,
+555 , 24442 , 21 , 133 , 1 , 1 ,
+555 , 24443 , 21 , 133 , 1 , 1 ,
+555 , 24444 , 21 , 133 , 1 , 1 ,
+555 , 24445 , 21 , 123 , 1 , 1 ,
+555 , 24446 , 21 , 133 , 1 , 1 ,
+555 , 24447 , 21 , 123 , 1 , 1 ,
+555 , 24448 , 20 , 133 , 1 , 1 ,
+555 , 24449 , 20 , 123 , 1 , 1 ,
+555 , 24450 , 18 , 133 , 1 , 1 ,
+555 , 24451 , 18 , 133 , 1 , 1 ,
+555 , 24452 , 18 , 133 , 1 , 1 ,
+555 , 24453 , 18 , 144 , 1 , 1 ,
+555 , 24454 , 17 , 134 , 1 , 1 ,
+555 , 24455 , 17 , 144 , 1 , 1 ,
+555 , 24456 , 17 , 133 , 1 , 1 ,
+555 , 24457 , 17 , 143 , 1 , 1 ,
+555 , 24458 , 17 , 143 , 1 , 1 ,
+555 , 24459 , 16 , 133 , 1 , 1 ,
+555 , 24460 , 14 , 143 , 1 , 1 ,
+555 , 24461 , 14 , 133 , 1 , 1 ,
+555 , 24462 , 14 , 133 , 1 , 1 ,
+555 , 24463 , 14 , 123 , 1 , 1 ,
+555 , 24464 , 14 , 133 , 1 , 1 ,
+555 , 24465 , 13 , 144 , 1 , 1 ,
+555 , 24466 , 13 , 154 , 1 , 1 ,
+555 , 24467 , 13 , 154 , 1 , 1 ,
+555 , 24468 , 13 , 144 , 1 , 1 ,
+555 , 24469 , 12 , 144 , 1 , 1 ,
+555 , 24470 , 10 , 143 , 1 , 1 ,
+555 , 24471 , 10 , 143 , 1 , 1 ,
+555 , 24472 , 9 , 133 , 1 , 1 ,
+555 , 24473 , 9 , 123 , 1 , 1 ,
+555 , 24474 , 9 , 143 , 1 , 1 ,
+555 , 24475 , 9 , 144 , 1 , 1 ,
+555 , 24476 , 9 , 143 , 1 , 1 ,
+555 , 24477 , 9 , 143 , 1 , 1 ,
+555 , 24478 , 9 , 143 , 1 , 1 ,
+555 , 24479 , 9 , 143 , 1 , 1 ,
+555 , 24480 , 6 , 133 , 1 , 1 ,
+555 , 24481 , 6 , 154 , 1 , 1 ,
+555 , 24482 , 6 , 133 , 1 , 1 ,
+555 , 24483 , 6 , 133 , 1 , 1 ,
+555 , 24484 , 5 , 133 , 1 , 1 ,
+555 , 24485 , 5 , 123 , 1 , 1 ,
+555 , 24486 , 5 , 123 , 1 , 1 ,
+555 , 24487 , 5 , 123 , 1 , 1 ,
+555 , 24488 , 5 , 123 , 1 , 1 ,
+555 , 24489 , 3 , 123 , 1 , 1 ,
+555 , 24490 , 3 , 113 , 1 , 1 ,
+555 , 24491 , 3 , 113 , 1 , 1 ,
+555 , 24492 , 3 , 123 , 1 , 1 ,
+555 , 24493 , 3 , 133 , 1 , 1 ,
+555 , 24494 , 3 , 123 , 1 , 1 ,
+555 , 24495 , 3 , 123 , 1 , 1 ,
+555 , 24496 , 3 , 123 , 1 , 1 ,
+555 , 24497 , 3 , 113 , 1 , 1 ,
+555 , 24498 , 3 , 113 , 1 , 1 ,
+555 , 24499 , 858 , 164 , 1 , 1 , 24493 24419 24471 24411 24473 24436 24406 24414 24439 24445 24427 24403 24465 24399 24469 24408 24407 24479 24483 24433 24497 24431 24442 24490 24420 24494 24452 24443 24416 24434 24481 24472 24474 24449 24456 24459 24475 24480 24467 24418 24429 24426 24446 24496 24478 24400 24462 24432 24463 24489 24491 24466 24457 24425 24421 24470 24477 24488 24447 24498 24454 24413 24423 24455 24468 24435 24441 24412 24495 24464 24415 24450 24405 24482 24484 24451 24486 24492 24440 24410 24424 24417 24458 24460 24438 24448 24476 24444 24461 24402 24404 24428 24437 24422 24430 24409 24453 24485 24487 24401
+556 , 24500 , 4 , 11 , 1 , 1 ,
+556 , 24501 , 148 , 31 , 1 , 1 , 24500
+556 , 24502 , 148 , 31 , 1 , 1 , 24500
+556 , 24503 , 147 , 31 , 1 , 1 , 24500
+556 , 24504 , 146 , 31 , 1 , 1 , 24500
+556 , 24505 , 93 , 41 , 1 , 1 , 24500
+556 , 24506 , 82 , 52 , 1 , 1 , 24500
+556 , 24507 , 82 , 52 , 1 , 1 , 24500
+556 , 24508 , 82 , 52 , 1 , 1 , 24500
+556 , 24509 , 146 , 31 , 1 , 1 , 24500
+556 , 24510 , 146 , 31 , 1 , 1 , 24500
+556 , 24511 , 146 , 31 , 1 , 1 , 24500
+556 , 24512 , 145 , 31 , 1 , 1 , 24500
+556 , 24513 , 145 , 31 , 1 , 1 , 24500
+556 , 24514 , 145 , 31 , 1 , 1 , 24500
+556 , 24515 , 141 , 31 , 1 , 1 , 24500
+556 , 24516 , 141 , 31 , 1 , 1 , 24500
+556 , 24517 , 138 , 85 , 1 , 1 , 24500
+556 , 24518 , 137 , 31 , 1 , 1 , 24500
+556 , 24519 , 137 , 31 , 1 , 1 , 24500
+556 , 24520 , 137 , 31 , 1 , 1 , 24500
+556 , 24521 , 137 , 31 , 1 , 1 , 24500
+556 , 24522 , 136 , 31 , 1 , 1 , 24500
+556 , 24523 , 136 , 31 , 1 , 1 , 24500
+556 , 24524 , 136 , 31 , 1 , 1 , 24500
+556 , 24525 , 126 , 86 , 1 , 1 , 24500
+556 , 24526 , 126 , 76 , 1 , 1 , 24500
+556 , 24527 , 123 , 77 , 1 , 1 , 24500
+556 , 24528 , 121 , 41 , 1 , 1 , 24500
+556 , 24529 , 121 , 41 , 1 , 1 , 24500
+556 , 24530 , 82 , 41 , 1 , 1 , 24500
+556 , 24531 , 82 , 41 , 1 , 1 , 24500
+556 , 24532 , 121 , 41 , 1 , 1 , 24500
+556 , 24533 , 121 , 41 , 1 , 1 , 24500
+556 , 24534 , 121 , 41 , 1 , 1 , 24500
+556 , 24535 , 116 , 41 , 1 , 1 , 24500
+556 , 24536 , 116 , 31 , 1 , 1 , 24500
+556 , 24537 , 114 , 42 , 1 , 1 , 24500
+556 , 24538 , 114 , 42 , 1 , 1 , 24500
+556 , 24539 , 113 , 32 , 1 , 1 , 24500
+556 , 24540 , 113 , 41 , 1 , 1 , 24500
+556 , 24541 , 112 , 52 , 1 , 1 , 24500
+556 , 24542 , 111 , 41 , 1 , 1 , 24500
+556 , 24543 , 111 , 41 , 1 , 1 , 24500
+556 , 24544 , 111 , 41 , 1 , 1 , 24500
+556 , 24545 , 109 , 41 , 1 , 1 , 24500
+556 , 24546 , 109 , 52 , 1 , 1 , 24500
+556 , 24547 , 104 , 42 , 1 , 1 , 24500
+556 , 24548 , 101 , 41 , 1 , 1 , 24500
+556 , 24549 , 100 , 41 , 1 , 1 , 24500
+556 , 24550 , 100 , 42 , 1 , 1 , 24500
+556 , 24551 , 99 , 52 , 1 , 1 , 24500
+556 , 24552 , 99 , 41 , 1 , 1 , 24500
+556 , 24553 , 99 , 41 , 1 , 1 , 24500
+556 , 24554 , 96 , 41 , 1 , 1 , 24500
+556 , 24555 , 96 , 41 , 1 , 1 , 24500
+556 , 24556 , 96 , 41 , 1 , 1 , 24500
+556 , 24557 , 96 , 41 , 1 , 1 , 24500
+556 , 24558 , 96 , 41 , 1 , 1 , 24500
+556 , 24559 , 95 , 41 , 1 , 1 , 24500
+556 , 24560 , 95 , 41 , 1 , 1 , 24500
+556 , 24561 , 94 , 41 , 1 , 1 , 24500
+556 , 24562 , 93 , 41 , 1 , 1 , 24500
+556 , 24563 , 93 , 52 , 1 , 1 , 24500
+556 , 24564 , 93 , 42 , 1 , 1 , 24500
+556 , 24565 , 121 , 41 , 1 , 1 , 24500
+556 , 24566 , 121 , 41 , 1 , 1 , 24500
+556 , 24567 , 121 , 42 , 1 , 1 , 24500
+556 , 24568 , 120 , 31 , 1 , 1 , 24500
+556 , 24569 , 119 , 41 , 1 , 1 , 24500
+556 , 24570 , 118 , 31 , 1 , 1 , 24500
+556 , 24571 , 118 , 41 , 1 , 1 , 24500
+556 , 24572 , 118 , 31 , 1 , 1 , 24500
+556 , 24573 , 118 , 31 , 1 , 1 , 24500
+556 , 24574 , 118 , 41 , 1 , 1 , 24500
+556 , 24575 , 118 , 41 , 1 , 1 , 24500
+556 , 24576 , 118 , 41 , 1 , 1 , 24500
+556 , 24577 , 118 , 41 , 1 , 1 , 24500
+556 , 24578 , 118 , 31 , 1 , 1 , 24500
+556 , 24579 , 118 , 41 , 1 , 1 , 24500
+556 , 24580 , 117 , 42 , 1 , 1 , 24500
+556 , 24581 , 117 , 42 , 1 , 1 , 24500
+556 , 24582 , 116 , 42 , 1 , 1 , 24500
+556 , 24583 , 116 , 41 , 1 , 1 , 24500
+556 , 24584 , 116 , 41 , 1 , 1 , 24500
+556 , 24585 , 116 , 41 , 1 , 1 , 24500
+556 , 24586 , 116 , 41 , 1 , 1 , 24500
+556 , 24587 , 116 , 41 , 1 , 1 , 24500
+556 , 24588 , 82 , 52 , 1 , 1 , 24500
+556 , 24589 , 81 , 41 , 1 , 1 , 24500
+556 , 24590 , 55 , 261 , 1 , 1 , 24500
+556 , 24591 , 55 , 251 , 1 , 1 , 24500
+556 , 24592 , 55 , 261 , 1 , 1 , 24500
+556 , 24593 , 55 , 240 , 1 , 1 , 24500
+556 , 24594 , 55 , 240 , 1 , 1 , 24500
+556 , 24595 , 55 , 240 , 1 , 1 , 24500
+556 , 24596 , 55 , 241 , 1 , 1 , 24500
+556 , 24597 , 55 , 240 , 1 , 1 , 24500
+556 , 24598 , 55 , 230 , 1 , 1 , 24500
+556 , 24599 , 55 , 251 , 1 , 1 , 24500
+556 , 24600 , 52 , 257 , 1 , 1 , 24500
+556 , 24601 , 52 , 248 , 1 , 1 , 24500
+556 , 24602 , 52 , 223 , 1 , 1 , 24500
+556 , 24603 , 52 , 247 , 1 , 1 , 24500
+556 , 24604 , 51 , 257 , 1 , 1 , 24500
+556 , 24605 , 51 , 247 , 1 , 1 , 24500
+556 , 24606 , 51 , 228 , 1 , 1 , 24500
+556 , 24607 , 51 , 247 , 1 , 1 , 24500
+556 , 24608 , 51 , 247 , 1 , 1 , 24500
+556 , 24609 , 51 , 236 , 1 , 1 , 24500
+556 , 24610 , 51 , 228 , 1 , 1 , 24500
+556 , 24611 , 51 , 257 , 1 , 1 , 24500
+556 , 24612 , 51 , 247 , 1 , 1 , 24500
+556 , 24613 , 51 , 248 , 1 , 1 , 24500
+556 , 24614 , 51 , 258 , 1 , 1 , 24500
+556 , 24615 , 51 , 236 , 1 , 1 , 24500
+556 , 24616 , 41 , 113 , 1 , 1 , 24500
+556 , 24617 , 41 , 76 , 1 , 1 , 24500
+556 , 24618 , 41 , 78 , 1 , 1 , 24500
+556 , 24619 , 41 , 77 , 1 , 1 , 24500
+556 , 24620 , 41 , 89 , 1 , 1 , 24500
+556 , 24621 , 41 , 112 , 1 , 1 , 24500
+556 , 24622 , 51 , 72 , 1 , 1 , 24500
+556 , 24623 , 51 , 72 , 1 , 1 , 24500
+556 , 24624 , 51 , 72 , 1 , 1 , 24500
+556 , 24625 , 51 , 72 , 1 , 1 , 24500
+556 , 24626 , 50 , 72 , 1 , 1 , 24500
+556 , 24627 , 50 , 62 , 1 , 1 , 24500
+556 , 24628 , 50 , 52 , 1 , 1 , 24500
+556 , 24629 , 49 , 52 , 1 , 1 , 24500
+556 , 24630 , 48 , 72 , 1 , 1 , 24500
+556 , 24631 , 48 , 72 , 1 , 1 , 24500
+556 , 24632 , 47 , 72 , 1 , 1 , 24500
+556 , 24633 , 47 , 72 , 1 , 1 , 24500
+556 , 24634 , 47 , 72 , 1 , 1 , 24500
+556 , 24635 , 47 , 62 , 1 , 1 , 24500
+556 , 24636 , 46 , 62 , 1 , 1 , 24500
+556 , 24637 , 46 , 72 , 1 , 1 , 24500
+556 , 24638 , 46 , 72 , 1 , 1 , 24500
+556 , 24639 , 46 , 52 , 1 , 1 , 24500
+556 , 24640 , 45 , 82 , 1 , 1 , 24500
+556 , 24641 , 45 , 82 , 1 , 1 , 24500
+556 , 24642 , 44 , 62 , 1 , 1 , 24500
+556 , 24643 , 44 , 62 , 1 , 1 , 24500
+556 , 24644 , 43 , 62 , 1 , 1 , 24500
+556 , 24645 , 43 , 52 , 1 , 1 , 24500
+556 , 24646 , 43 , 72 , 1 , 1 , 24500
+556 , 24647 , 43 , 72 , 1 , 1 , 24500
+556 , 24648 , 43 , 72 , 1 , 1 , 24500
+556 , 24649 , 42 , 73 , 1 , 1 , 24500
+556 , 24650 , 42 , 63 , 1 , 1 , 24500
+556 , 24651 , 41 , 64 , 1 , 1 , 24500
+556 , 24652 , 41 , 62 , 1 , 1 , 24500
+556 , 24653 , 41 , 62 , 1 , 1 , 24500
+556 , 24654 , 39 , 62 , 1 , 1 , 24500
+556 , 24655 , 39 , 62 , 1 , 1 , 24500
+556 , 24656 , 39 , 62 , 1 , 1 , 24500
+556 , 24657 , 39 , 62 , 1 , 1 , 24500
+556 , 24658 , 39 , 62 , 1 , 1 , 24500
+556 , 24659 , 38 , 63 , 1 , 1 , 24500
+556 , 24660 , 37 , 62 , 1 , 1 , 24500
+556 , 24661 , 37 , 62 , 1 , 1 , 24500
+556 , 24662 , 37 , 62 , 1 , 1 , 24500
+556 , 24663 , 37 , 62 , 1 , 1 , 24500
+556 , 24664 , 34 , 62 , 1 , 1 , 24500
+556 , 24665 , 34 , 62 , 1 , 1 , 24500
+556 , 24666 , 34 , 52 , 1 , 1 , 24500
+556 , 24667 , 34 , 51 , 1 , 1 , 24500
+556 , 24668 , 33 , 62 , 1 , 1 , 24500
+556 , 24669 , 33 , 52 , 1 , 1 , 24500
+556 , 24670 , 32 , 62 , 1 , 1 , 24500
+556 , 24671 , 31 , 52 , 1 , 1 , 24500
+556 , 24672 , 31 , 52 , 1 , 1 , 24500
+556 , 24673 , 31 , 52 , 1 , 1 , 24500
+556 , 24674 , 30 , 52 , 1 , 1 , 24500
+556 , 24675 , 30 , 52 , 1 , 1 , 24500
+556 , 24676 , 30 , 52 , 1 , 1 , 24500
+556 , 24677 , 30 , 52 , 1 , 1 , 24500
+556 , 24678 , 30 , 52 , 1 , 1 , 24500
+556 , 24679 , 30 , 52 , 1 , 1 , 24500
+556 , 24680 , 29 , 53 , 1 , 1 , 24500
+556 , 24681 , 29 , 62 , 1 , 1 , 24500
+556 , 24682 , 29 , 52 , 1 , 1 , 24500
+556 , 24683 , 29 , 52 , 1 , 1 , 24500
+556 , 24684 , 28 , 42 , 1 , 1 , 24500
+556 , 24685 , 28 , 52 , 1 , 1 , 24500
+556 , 24686 , 28 , 41 , 1 , 1 , 24500
+556 , 24687 , 28 , 52 , 1 , 1 , 24500
+556 , 24688 , 28 , 41 , 1 , 1 , 24500
+556 , 24689 , 28 , 52 , 1 , 1 , 24500
+556 , 24690 , 27 , 41 , 1 , 1 , 24500
+556 , 24691 , 27 , 41 , 1 , 1 , 24500
+556 , 24692 , 27 , 41 , 1 , 1 , 24500
+556 , 24693 , 27 , 41 , 1 , 1 , 24500
+556 , 24694 , 556 , 0 , 1 , 1 , 24571 24626 24543 24664 24587 24525 24692 24568 24522 24538 24582 24666 24596 24677 24541 24598 24646 24603 24537 24599 24528 24530 24659 24519 24627 24574 24546 24645 24673 24505 24688 24652 24620 24547 24637 24607 24518 24675 24693 24685 24579 24549 24539 24594 24643 24515 24665 24632 24653 24689 24542 24590 24682 24597 24560 24670 24690 24612 24634 24641 24562 24511 24503 24651 24592 24613 24616 24629 24630 24524 24601 24680 24611 24565 24600 24635 24639 24523 24554 24668 24558 24572 24625 24564 24650 24563 24575 24502 24512 24676 24662 24672 24628 24622 24656 24545 24658 24660 24573 24595 24586 24552 24642 24561 24508 24584 24581 24520 24684 24548 24661 24624 24583 24691 24667 24533 24618 24648 24514 24686 24631 24551 24501 24521 24556 24559 24532 24535 24531 24638 24504 24644 24513 24615 24550 24619 24555 24544 24567 24578 24608 24679 24674 24510 24681 24585 24534 24576 24606 24536 24610 24589 24566 24657 24678 24647 24577 24621 24687 24617 24640 24516 24517 24623 24609 24636 24553 24557 24591 24526 24654 24593 24605 24527 24633 24602 24507 24604 24570 24569 24663 24529 24588 24614 24580 24669 24683 24506 24649 24509 24540 24655 24671
+556 , 24695 , 643 , 42 , 1 , 1 , 24694
+556 , 24696 , 663 , 21 , 1 , 1 , 24694
+556 , 24697 , 651 , 41 , 1 , 1 , 24694
+556 , 24698 , 650 , 41 , 1 , 1 , 24694
+556 , 24699 , 649 , 41 , 1 , 1 , 24694
+556 , 24700 , 649 , 31 , 1 , 1 , 24694
+556 , 24701 , 645 , 32 , 1 , 1 , 24694
+556 , 24702 , 683 , 32 , 1 , 1 , 24694
+556 , 24703 , 649 , 41 , 1 , 1 , 24694
+556 , 24704 , 639 , 32 , 1 , 1 , 24694
+556 , 24705 , 639 , 11 , 1 , 1 , 24694
+556 , 24706 , 635 , 32 , 1 , 1 , 24694
+556 , 24707 , 634 , 32 , 1 , 1 , 24694
+556 , 24708 , 633 , 32 , 1 , 1 , 24694
+556 , 24709 , 632 , 32 , 1 , 1 , 24694
+556 , 24710 , 632 , 12 , 1 , 1 , 24694
+556 , 24711 , 631 , 21 , 1 , 1 , 24694
+556 , 24712 , 649 , 41 , 1 , 1 , 24694
+556 , 24713 , 649 , 31 , 1 , 1 , 24694
+556 , 24714 , 648 , 31 , 1 , 1 , 24694
+556 , 24715 , 661 , 21 , 1 , 1 , 24694
+556 , 24716 , 643 , 41 , 1 , 1 , 24694
+556 , 24717 , 637 , 32 , 1 , 1 , 24694
+556 , 24718 , 636 , 32 , 1 , 1 , 24694
+556 , 24719 , 659 , 31 , 1 , 1 , 24694
+556 , 24720 , 657 , 31 , 1 , 1 , 24694
+556 , 24721 , 656 , 31 , 1 , 1 , 24694
+556 , 24722 , 641 , 42 , 1 , 1 , 24694
+556 , 24723 , 641 , 41 , 1 , 1 , 24694
+556 , 24724 , 640 , 41 , 1 , 1 , 24694
+556 , 24725 , 656 , 11 , 1 , 1 , 24694
+556 , 24726 , 660 , 31 , 1 , 1 , 24694
+556 , 24727 , 656 , 21 , 1 , 1 , 24694
+556 , 24728 , 648 , 41 , 1 , 1 , 24694
+556 , 24729 , 648 , 42 , 1 , 1 , 24694
+556 , 24730 , 647 , 42 , 1 , 1 , 24694
+556 , 24731 , 654 , 21 , 1 , 1 , 24694
+556 , 24732 , 643 , 12 , 1 , 1 , 24694
+556 , 24733 , 642 , 11 , 1 , 1 , 24694
+556 , 24734 , 640 , 21 , 1 , 1 , 24694
+556 , 24735 , 643 , 11 , 1 , 1 , 24694
+556 , 24736 , 639 , 32 , 1 , 1 , 24694
+556 , 24737 , 668 , 21 , 1 , 1 , 24694
+556 , 24738 , 660 , 21 , 1 , 1 , 24694
+556 , 24739 , 647 , 21 , 1 , 1 , 24694
+556 , 24740 , 685 , 21 , 1 , 1 , 24694
+556 , 24741 , 670 , 21 , 1 , 1 , 24694
+556 , 24742 , 646 , 41 , 1 , 1 , 24694
+556 , 24743 , 669 , 11 , 1 , 1 , 24694
+556 , 24744 , 646 , 41 , 1 , 1 , 24694
+556 , 24745 , 645 , 41 , 1 , 1 , 24694
+556 , 24746 , 645 , 41 , 1 , 1 , 24694
+556 , 24747 , 645 , 31 , 1 , 1 , 24694
+556 , 24748 , 645 , 41 , 1 , 1 , 24694
+556 , 24749 , 645 , 41 , 1 , 1 , 24694
+556 , 24750 , 644 , 31 , 1 , 1 , 24694
+556 , 24751 , 644 , 41 , 1 , 1 , 24694
+556 , 24752 , 643 , 41 , 1 , 1 , 24694
+556 , 24753 , 669 , 21 , 1 , 1 , 24694
+556 , 24754 , 643 , 41 , 1 , 1 , 24694
+556 , 24755 , 668 , 21 , 1 , 1 , 24694
+556 , 24756 , 625 , 31 , 1 , 1 , 24694
+556 , 24757 , 626 , 11 , 1 , 1 , 24694
+556 , 24758 , 624 , 31 , 1 , 1 , 24694
+556 , 24759 , 624 , 11 , 1 , 1 , 24694
+556 , 24760 , 622 , 11 , 1 , 1 , 24694
+556 , 24761 , 616 , 11 , 1 , 1 , 24694
+556 , 24762 , 615 , 11 , 1 , 1 , 24694
+556 , 24763 , 608 , 12 , 1 , 1 , 24694
+556 , 24764 , 602 , 52 , 1 , 1 , 24694
+556 , 24765 , 602 , 51 , 1 , 1 , 24694
+556 , 24766 , 602 , 41 , 1 , 1 , 24694
+556 , 24767 , 602 , 41 , 1 , 1 , 24694
+556 , 24768 , 602 , 41 , 1 , 1 , 24694
+556 , 24769 , 602 , 41 , 1 , 1 , 24694
+556 , 24770 , 602 , 41 , 1 , 1 , 24694
+556 , 24771 , 602 , 41 , 1 , 1 , 24694
+556 , 24772 , 602 , 42 , 1 , 1 , 24694
+556 , 24773 , 601 , 42 , 1 , 1 , 24694
+556 , 24774 , 598 , 32 , 1 , 1 , 24694
+556 , 24775 , 598 , 42 , 1 , 1 , 24694
+556 , 24776 , 598 , 42 , 1 , 1 , 24694
+556 , 24777 , 598 , 42 , 1 , 1 , 24694
+556 , 24778 , 598 , 42 , 1 , 1 , 24694
+556 , 24779 , 598 , 53 , 1 , 1 , 24694
+556 , 24780 , 598 , 42 , 1 , 1 , 24694
+556 , 24781 , 598 , 41 , 1 , 1 , 24694
+556 , 24782 , 598 , 41 , 1 , 1 , 24694
+556 , 24783 , 598 , 41 , 1 , 1 , 24694
+556 , 24784 , 604 , 13 , 1 , 1 , 24694
+556 , 24785 , 603 , 12 , 1 , 1 , 24694
+556 , 24786 , 600 , 11 , 1 , 1 , 24694
+556 , 24787 , 599 , 11 , 1 , 1 , 24694
+556 , 24788 , 599 , 32 , 1 , 1 , 24694
+556 , 24789 , 598 , 32 , 1 , 1 , 24694
+556 , 24790 , 598 , 32 , 1 , 1 , 24694
+556 , 24791 , 598 , 32 , 1 , 1 , 24694
+556 , 24792 , 598 , 32 , 1 , 1 , 24694
+556 , 24793 , 598 , 32 , 1 , 1 , 24694
+556 , 24794 , 597 , 32 , 1 , 1 , 24694
+556 , 24795 , 597 , 32 , 1 , 1 , 24694
+556 , 24796 , 597 , 32 , 1 , 1 , 24694
+556 , 24797 , 597 , 32 , 1 , 1 , 24694
+556 , 24798 , 597 , 34 , 1 , 1 , 24694
+556 , 24799 , 595 , 36 , 1 , 1 , 24694
+556 , 24800 , 594 , 33 , 1 , 1 , 24694
+556 , 24801 , 597 , 34 , 1 , 1 , 24694
+556 , 24802 , 593 , 33 , 1 , 1 , 24694
+556 , 24803 , 594 , 43 , 1 , 1 , 24694
+556 , 24804 , 593 , 23 , 1 , 1 , 24694
+556 , 24805 , 594 , 43 , 1 , 1 , 24694
+556 , 24806 , 595 , 32 , 1 , 1 , 24694
+556 , 24807 , 591 , 33 , 1 , 1 , 24694
+556 , 24808 , 591 , 21 , 1 , 1 , 24694
+556 , 24809 , 594 , 33 , 1 , 1 , 24694
+556 , 24810 , 594 , 33 , 1 , 1 , 24694
+556 , 24811 , 605 , 23 , 1 , 1 , 24694
+556 , 24812 , 603 , 23 , 1 , 1 , 24694
+556 , 24813 , 588 , 21 , 1 , 1 , 24694
+556 , 24814 , 582 , 12 , 1 , 1 , 24694
+556 , 24815 , 581 , 11 , 1 , 1 , 24694
+556 , 24816 , 618 , 11 , 1 , 1 , 24694
+556 , 24817 , 589 , 12 , 1 , 1 , 24694
+556 , 24818 , 578 , 11 , 1 , 1 , 24694
+556 , 24819 , 574 , 11 , 1 , 1 , 24694
+556 , 24820 , 590 , 63 , 1 , 1 , 24694
+556 , 24821 , 590 , 52 , 1 , 1 , 24694
+556 , 24822 , 590 , 52 , 1 , 1 , 24694
+556 , 24823 , 589 , 52 , 1 , 1 , 24694
+556 , 24824 , 589 , 52 , 1 , 1 , 24694
+556 , 24825 , 589 , 52 , 1 , 1 , 24694
+556 , 24826 , 589 , 52 , 1 , 1 , 24694
+556 , 24827 , 587 , 52 , 1 , 1 , 24694
+556 , 24828 , 587 , 52 , 1 , 1 , 24694
+556 , 24829 , 587 , 62 , 1 , 1 , 24694
+556 , 24830 , 586 , 52 , 1 , 1 , 24694
+556 , 24831 , 586 , 52 , 1 , 1 , 24694
+556 , 24832 , 586 , 52 , 1 , 1 , 24694
+556 , 24833 , 586 , 52 , 1 , 1 , 24694
+556 , 24834 , 586 , 52 , 1 , 1 , 24694
+556 , 24835 , 586 , 52 , 1 , 1 , 24694
+556 , 24836 , 586 , 52 , 1 , 1 , 24694
+556 , 24837 , 584 , 52 , 1 , 1 , 24694
+556 , 24838 , 584 , 62 , 1 , 1 , 24694
+556 , 24839 , 583 , 52 , 1 , 1 , 24694
+556 , 24840 , 583 , 52 , 1 , 1 , 24694
+556 , 24841 , 583 , 52 , 1 , 1 , 24694
+556 , 24842 , 583 , 52 , 1 , 1 , 24694
+556 , 24843 , 583 , 52 , 1 , 1 , 24694
+556 , 24844 , 583 , 52 , 1 , 1 , 24694
+556 , 24845 , 582 , 52 , 1 , 1 , 24694
+556 , 24846 , 582 , 52 , 1 , 1 , 24694
+556 , 24847 , 581 , 52 , 1 , 1 , 24694
+556 , 24848 , 581 , 52 , 1 , 1 , 24694
+556 , 24849 , 580 , 52 , 1 , 1 , 24694
+556 , 24850 , 580 , 62 , 1 , 1 , 24694
+556 , 24851 , 580 , 52 , 1 , 1 , 24694
+556 , 24852 , 580 , 52 , 1 , 1 , 24694
+556 , 24853 , 580 , 52 , 1 , 1 , 24694
+556 , 24854 , 579 , 52 , 1 , 1 , 24694
+556 , 24855 , 579 , 52 , 1 , 1 , 24694
+556 , 24856 , 579 , 52 , 1 , 1 , 24694
+556 , 24857 , 578 , 52 , 1 , 1 , 24694
+556 , 24858 , 577 , 52 , 1 , 1 , 24694
+556 , 24859 , 577 , 52 , 1 , 1 , 24694
+556 , 24860 , 577 , 52 , 1 , 1 , 24694
+556 , 24861 , 577 , 52 , 1 , 1 , 24694
+556 , 24862 , 577 , 52 , 1 , 1 , 24694
+556 , 24863 , 576 , 52 , 1 , 1 , 24694
+556 , 24864 , 576 , 52 , 1 , 1 , 24694
+556 , 24865 , 576 , 52 , 1 , 1 , 24694
+556 , 24866 , 576 , 52 , 1 , 1 , 24694
+556 , 24867 , 576 , 52 , 1 , 1 , 24694
+556 , 24868 , 574 , 52 , 1 , 1 , 24694
+556 , 24869 , 574 , 41 , 1 , 1 , 24694
+556 , 24870 , 574 , 62 , 1 , 1 , 24694
+556 , 24871 , 574 , 41 , 1 , 1 , 24694
+556 , 24872 , 574 , 52 , 1 , 1 , 24694
+556 , 24873 , 574 , 52 , 1 , 1 , 24694
+556 , 24874 , 574 , 52 , 1 , 1 , 24694
+556 , 24875 , 574 , 41 , 1 , 1 , 24694
+556 , 24876 , 574 , 52 , 1 , 1 , 24694
+556 , 24877 , 574 , 52 , 1 , 1 , 24694
+556 , 24878 , 571 , 52 , 1 , 1 , 24694
+556 , 24879 , 571 , 41 , 1 , 1 , 24694
+556 , 24880 , 571 , 41 , 1 , 1 , 24694
+556 , 24881 , 571 , 41 , 1 , 1 , 24694
+556 , 24882 , 571 , 41 , 1 , 1 , 24694
+556 , 24883 , 571 , 42 , 1 , 1 , 24694
+556 , 24884 , 571 , 41 , 1 , 1 , 24694
+556 , 24885 , 571 , 41 , 1 , 1 , 24694
+556 , 24886 , 571 , 41 , 1 , 1 , 24694
+556 , 24887 , 571 , 41 , 1 , 1 , 24694
+556 , 24888 , 753 , 21 , 1 , 1 , 24830 24706 24751 24708 24773 24711 24763 24705 24815 24744 24731 24762 24721 24877 24813 24795 24856 24817 24853 24838 24872 24851 24852 24760 24777 24709 24842 24885 24886 24828 24699 24743 24729 24862 24816 24796 24820 24753 24839 24833 24766 24818 24822 24748 24887 24867 24871 24734 24695 24719 24824 24832 24844 24864 24725 24799 24757 24703 24808 24770 24882 24883 24821 24756 24807 24835 24869 24761 24859 24745 24759 24873 24749 24829 24847 24717 24794 24768 24707 24790 24876 24698 24826 24755 24788 24780 24855 24792 24837 24741 24747 24884 24805 24714 24738 24797 24863 24723 24854 24696 24740 24819 24879 24724 24718 24831 24858 24754 24739 24765 24746 24868 24861 24735 24857 24880 24840 24732 24843 24726 24874 24783 24715 24785 24791 24733 24800 24866 24775 24730 24789 24849 24784 24771 24750 24736 24737 24809 24845 24781 24764 24778 24716 24881 24787 24722 24803 24841 24870 24779 24727 24793 24752 24875 24720 24806 24758 24701 24878 24772 24825 24769 24802 24782 24774 24804 24850 24827 24834 24814 24702 24710 24812 24846 24767 24860 24823 24836 24798 24776 24704 24801 24848 24728 24810 24865 24712 24713 24786 24697 24700 24742 24811
+557 , 24889 , 4 , 11 , 1 , 1 ,
+557 , 24890 , 88 , 63 , 1 , 1 , 24889
+557 , 24891 , 88 , 53 , 1 , 1 , 24889
+557 , 24892 , 87 , 62 , 1 , 1 , 24889
+557 , 24893 , 87 , 62 , 1 , 1 , 24889
+557 , 24894 , 86 , 62 , 1 , 1 , 24889
+557 , 24895 , 86 , 62 , 1 , 1 , 24889
+557 , 24896 , 86 , 62 , 1 , 1 , 24889
+557 , 24897 , 85 , 52 , 1 , 1 , 24889
+557 , 24898 , 85 , 41 , 1 , 1 , 24889
+557 , 24899 , 85 , 62 , 1 , 1 , 24889
+557 , 24900 , 85 , 72 , 1 , 1 , 24889
+557 , 24901 , 84 , 62 , 1 , 1 , 24889
+557 , 24902 , 83 , 72 , 1 , 1 , 24889
+557 , 24903 , 83 , 62 , 1 , 1 , 24889
+557 , 24904 , 158 , 31 , 1 , 1 , 24889
+557 , 24905 , 156 , 31 , 1 , 1 , 24889
+557 , 24906 , 153 , 31 , 1 , 1 , 24889
+557 , 24907 , 152 , 31 , 1 , 1 , 24889
+557 , 24908 , 150 , 31 , 1 , 1 , 24889
+557 , 24909 , 147 , 31 , 1 , 1 , 24889
+557 , 24910 , 139 , 41 , 1 , 1 , 24889
+557 , 24911 , 137 , 41 , 1 , 1 , 24889
+557 , 24912 , 136 , 52 , 1 , 1 , 24889
+557 , 24913 , 135 , 41 , 1 , 1 , 24889
+557 , 24914 , 131 , 41 , 1 , 1 , 24889
+557 , 24915 , 131 , 41 , 1 , 1 , 24889
+557 , 24916 , 83 , 62 , 1 , 1 , 24889
+557 , 24917 , 83 , 52 , 1 , 1 , 24889
+557 , 24918 , 83 , 62 , 1 , 1 , 24889
+557 , 24919 , 83 , 42 , 1 , 1 , 24889
+557 , 24920 , 131 , 41 , 1 , 1 , 24889
+557 , 24921 , 127 , 85 , 1 , 1 , 24889
+557 , 24922 , 124 , 85 , 1 , 1 , 24889
+557 , 24923 , 121 , 86 , 1 , 1 , 24889
+557 , 24924 , 131 , 41 , 1 , 1 , 24889
+557 , 24925 , 129 , 41 , 1 , 1 , 24889
+557 , 24926 , 128 , 52 , 1 , 1 , 24889
+557 , 24927 , 127 , 41 , 1 , 1 , 24889
+557 , 24928 , 125 , 52 , 1 , 1 , 24889
+557 , 24929 , 125 , 52 , 1 , 1 , 24889
+557 , 24930 , 124 , 41 , 1 , 1 , 24889
+557 , 24931 , 124 , 52 , 1 , 1 , 24889
+557 , 24932 , 124 , 52 , 1 , 1 , 24889
+557 , 24933 , 124 , 41 , 1 , 1 , 24889
+557 , 24934 , 124 , 41 , 1 , 1 , 24889
+557 , 24935 , 122 , 52 , 1 , 1 , 24889
+557 , 24936 , 121 , 41 , 1 , 1 , 24889
+557 , 24937 , 120 , 52 , 1 , 1 , 24889
+557 , 24938 , 119 , 52 , 1 , 1 , 24889
+557 , 24939 , 119 , 62 , 1 , 1 , 24889
+557 , 24940 , 119 , 41 , 1 , 1 , 24889
+557 , 24941 , 119 , 62 , 1 , 1 , 24889
+557 , 24942 , 119 , 52 , 1 , 1 , 24889
+557 , 24943 , 119 , 62 , 1 , 1 , 24889
+557 , 24944 , 119 , 62 , 1 , 1 , 24889
+557 , 24945 , 118 , 52 , 1 , 1 , 24889
+557 , 24946 , 118 , 62 , 1 , 1 , 24889
+557 , 24947 , 118 , 52 , 1 , 1 , 24889
+557 , 24948 , 117 , 63 , 1 , 1 , 24889
+557 , 24949 , 117 , 62 , 1 , 1 , 24889
+557 , 24950 , 117 , 52 , 1 , 1 , 24889
+557 , 24951 , 115 , 52 , 1 , 1 , 24889
+557 , 24952 , 114 , 62 , 1 , 1 , 24889
+557 , 24953 , 114 , 52 , 1 , 1 , 24889
+557 , 24954 , 114 , 52 , 1 , 1 , 24889
+557 , 24955 , 114 , 42 , 1 , 1 , 24889
+557 , 24956 , 111 , 41 , 1 , 1 , 24889
+557 , 24957 , 108 , 41 , 1 , 1 , 24889
+557 , 24958 , 105 , 52 , 1 , 1 , 24889
+557 , 24959 , 103 , 52 , 1 , 1 , 24889
+557 , 24960 , 102 , 52 , 1 , 1 , 24889
+557 , 24961 , 102 , 53 , 1 , 1 , 24889
+557 , 24962 , 101 , 52 , 1 , 1 , 24889
+557 , 24963 , 96 , 62 , 1 , 1 , 24889
+557 , 24964 , 94 , 62 , 1 , 1 , 24889
+557 , 24965 , 91 , 62 , 1 , 1 , 24889
+557 , 24966 , 90 , 62 , 1 , 1 , 24889
+557 , 24967 , 89 , 62 , 1 , 1 , 24889
+557 , 24968 , 89 , 62 , 1 , 1 , 24889
+557 , 24969 , 89 , 62 , 1 , 1 , 24889
+557 , 24970 , 89 , 52 , 1 , 1 , 24889
+557 , 24971 , 89 , 63 , 1 , 1 , 24889
+557 , 24972 , 83 , 62 , 1 , 1 , 24889
+557 , 24973 , 83 , 31 , 1 , 1 , 24889
+557 , 24974 , 82 , 41 , 1 , 1 , 24889
+557 , 24975 , 82 , 31 , 1 , 1 , 24889
+557 , 24976 , 81 , 31 , 1 , 1 , 24889
+557 , 24977 , 80 , 31 , 1 , 1 , 24889
+557 , 24978 , 70 , 41 , 1 , 1 , 24889
+557 , 24979 , 53 , 240 , 1 , 1 , 24889
+557 , 24980 , 53 , 240 , 1 , 1 , 24889
+557 , 24981 , 53 , 251 , 1 , 1 , 24889
+557 , 24982 , 53 , 240 , 1 , 1 , 24889
+557 , 24983 , 53 , 251 , 1 , 1 , 24889
+557 , 24984 , 53 , 240 , 1 , 1 , 24889
+557 , 24985 , 53 , 240 , 1 , 1 , 24889
+557 , 24986 , 53 , 261 , 1 , 1 , 24889
+557 , 24987 , 53 , 230 , 1 , 1 , 24889
+557 , 24988 , 53 , 240 , 1 , 1 , 24889
+557 , 24989 , 55 , 234 , 1 , 1 , 24889
+557 , 24990 , 55 , 234 , 1 , 1 , 24889
+557 , 24991 , 55 , 255 , 1 , 1 , 24889
+557 , 24992 , 55 , 234 , 1 , 1 , 24889
+557 , 24993 , 55 , 234 , 1 , 1 , 24889
+557 , 24994 , 55 , 245 , 1 , 1 , 24889
+557 , 24995 , 55 , 245 , 1 , 1 , 24889
+557 , 24996 , 55 , 235 , 1 , 1 , 24889
+557 , 24997 , 55 , 235 , 1 , 1 , 24889
+557 , 24998 , 55 , 245 , 1 , 1 , 24889
+557 , 24999 , 55 , 245 , 1 , 1 , 24889
+557 , 25000 , 55 , 235 , 1 , 1 , 24889
+557 , 25001 , 55 , 224 , 1 , 1 , 24889
+557 , 25002 , 55 , 224 , 1 , 1 , 24889
+557 , 25003 , 55 , 235 , 1 , 1 , 24889
+557 , 25004 , 55 , 235 , 1 , 1 , 24889
+557 , 25005 , 38 , 74 , 1 , 1 , 24889
+557 , 25006 , 38 , 79 , 1 , 1 , 24889
+557 , 25007 , 38 , 75 , 1 , 1 , 24889
+557 , 25008 , 38 , 82 , 1 , 1 , 24889
+557 , 25009 , 38 , 75 , 1 , 1 , 24889
+557 , 25010 , 38 , 77 , 1 , 1 , 24889
+557 , 25011 , 51 , 62 , 1 , 1 , 24889
+557 , 25012 , 50 , 62 , 1 , 1 , 24889
+557 , 25013 , 50 , 62 , 1 , 1 , 24889
+557 , 25014 , 50 , 73 , 1 , 1 , 24889
+557 , 25015 , 49 , 63 , 1 , 1 , 24889
+557 , 25016 , 49 , 63 , 1 , 1 , 24889
+557 , 25017 , 49 , 41 , 1 , 1 , 24889
+557 , 25018 , 49 , 62 , 1 , 1 , 24889
+557 , 25019 , 49 , 62 , 1 , 1 , 24889
+557 , 25020 , 48 , 62 , 1 , 1 , 24889
+557 , 25021 , 47 , 62 , 1 , 1 , 24889
+557 , 25022 , 46 , 62 , 1 , 1 , 24889
+557 , 25023 , 46 , 62 , 1 , 1 , 24889
+557 , 25024 , 46 , 62 , 1 , 1 , 24889
+557 , 25025 , 46 , 62 , 1 , 1 , 24889
+557 , 25026 , 46 , 52 , 1 , 1 , 24889
+557 , 25027 , 45 , 62 , 1 , 1 , 24889
+557 , 25028 , 45 , 62 , 1 , 1 , 24889
+557 , 25029 , 45 , 62 , 1 , 1 , 24889
+557 , 25030 , 44 , 63 , 1 , 1 , 24889
+557 , 25031 , 43 , 62 , 1 , 1 , 24889
+557 , 25032 , 42 , 62 , 1 , 1 , 24889
+557 , 25033 , 41 , 62 , 1 , 1 , 24889
+557 , 25034 , 41 , 52 , 1 , 1 , 24889
+557 , 25035 , 41 , 62 , 1 , 1 , 24889
+557 , 25036 , 41 , 62 , 1 , 1 , 24889
+557 , 25037 , 41 , 62 , 1 , 1 , 24889
+557 , 25038 , 40 , 62 , 1 , 1 , 24889
+557 , 25039 , 40 , 62 , 1 , 1 , 24889
+557 , 25040 , 39 , 42 , 1 , 1 , 24889
+557 , 25041 , 39 , 62 , 1 , 1 , 24889
+557 , 25042 , 38 , 41 , 1 , 1 , 24889
+557 , 25043 , 37 , 62 , 1 , 1 , 24889
+557 , 25044 , 37 , 62 , 1 , 1 , 24889
+557 , 25045 , 37 , 62 , 1 , 1 , 24889
+557 , 25046 , 37 , 62 , 1 , 1 , 24889
+557 , 25047 , 37 , 52 , 1 , 1 , 24889
+557 , 25048 , 36 , 52 , 1 , 1 , 24889
+557 , 25049 , 36 , 52 , 1 , 1 , 24889
+557 , 25050 , 35 , 52 , 1 , 1 , 24889
+557 , 25051 , 35 , 41 , 1 , 1 , 24889
+557 , 25052 , 34 , 41 , 1 , 1 , 24889
+557 , 25053 , 33 , 41 , 1 , 1 , 24889
+557 , 25054 , 33 , 41 , 1 , 1 , 24889
+557 , 25055 , 33 , 41 , 1 , 1 , 24889
+557 , 25056 , 33 , 41 , 1 , 1 , 24889
+557 , 25057 , 33 , 41 , 1 , 1 , 24889
+557 , 25058 , 32 , 41 , 1 , 1 , 24889
+557 , 25059 , 32 , 41 , 1 , 1 , 24889
+557 , 25060 , 31 , 41 , 1 , 1 , 24889
+557 , 25061 , 31 , 41 , 1 , 1 , 24889
+557 , 25062 , 31 , 41 , 1 , 1 , 24889
+557 , 25063 , 30 , 41 , 1 , 1 , 24889
+557 , 25064 , 30 , 41 , 1 , 1 , 24889
+557 , 25065 , 30 , 41 , 1 , 1 , 24889
+557 , 25066 , 30 , 41 , 1 , 1 , 24889
+557 , 25067 , 30 , 41 , 1 , 1 , 24889
+557 , 25068 , 30 , 41 , 1 , 1 , 24889
+557 , 25069 , 30 , 41 , 1 , 1 , 24889
+557 , 25070 , 29 , 42 , 1 , 1 , 24889
+557 , 25071 , 29 , 41 , 1 , 1 , 24889
+557 , 25072 , 28 , 42 , 1 , 1 , 24889
+557 , 25073 , 28 , 42 , 1 , 1 , 24889
+557 , 25074 , 28 , 42 , 1 , 1 , 24889
+557 , 25075 , 28 , 42 , 1 , 1 , 24889
+557 , 25076 , 28 , 42 , 1 , 1 , 24889
+557 , 25077 , 28 , 42 , 1 , 1 , 24889
+557 , 25078 , 28 , 41 , 1 , 1 , 24889
+557 , 25079 , 28 , 31 , 1 , 1 , 24889
+557 , 25080 , 28 , 41 , 1 , 1 , 24889
+557 , 25081 , 28 , 41 , 1 , 1 , 24889
+557 , 25082 , 28 , 41 , 1 , 1 , 24889
+557 , 25083 , 553 , 0 , 1 , 1 , 24977 24998 24990 24894 24992 24904 24972 24954 24928 24935 24993 24944 25064 24979 24918 25011 24960 25081 24911 24915 24970 24996 25030 24893 25041 24925 25007 25033 24932 25004 24924 24976 25005 24908 25052 24982 24895 25071 24968 25072 25080 25059 24949 24941 24939 24964 25078 25034 25055 24913 24986 24946 24938 24900 25006 24910 25042 25054 24997 24901 24937 24961 25031 25040 24892 25025 25045 24957 24942 24945 24891 25001 25065 24987 24953 25009 24948 24936 25051 24969 24999 25014 24975 25024 25062 24956 24899 24967 25077 25013 24955 25022 24981 24978 25002 24890 24989 24902 24985 25069 24922 24926 24912 24903 25066 24906 25070 25044 24933 24934 25017 25063 25057 24988 24898 25060 24984 24958 25032 24980 24963 24909 25082 24931 24983 24920 25047 25020 24940 25000 24951 25049 24921 25012 25050 24959 25016 25067 24923 25075 25035 25008 25018 25048 25061 24950 24947 25028 25038 25074 25037 25073 25023 25056 25039 25019 25015 25068 25026 25010 24973 24952 25043 24995 24907 24919 24896 25029 25021 24917 24966 24965 24914 25046 24916 25027 24962 25053 24974 24929 24991 24905 24897 24943 25036 24971 25076 24930 25058 25079 24994 24927 25003
+557 , 25084 , 641 , 12 , 1 , 1 , 25083
+557 , 25085 , 639 , 11 , 1 , 1 , 25083
+557 , 25086 , 639 , 11 , 1 , 1 , 25083
+557 , 25087 , 637 , 11 , 1 , 1 , 25083
+557 , 25088 , 659 , 42 , 1 , 1 , 25083
+557 , 25089 , 693 , 11 , 1 , 1 , 25083
+557 , 25090 , 686 , 11 , 1 , 1 , 25083
+557 , 25091 , 686 , 11 , 1 , 1 , 25083
+557 , 25092 , 656 , 52 , 1 , 1 , 25083
+557 , 25093 , 704 , 11 , 1 , 1 , 25083
+557 , 25094 , 673 , 12 , 1 , 1 , 25083
+557 , 25095 , 678 , 12 , 1 , 1 , 25083
+557 , 25096 , 653 , 42 , 1 , 1 , 25083
+557 , 25097 , 652 , 42 , 1 , 1 , 25083
+557 , 25098 , 650 , 52 , 1 , 1 , 25083
+557 , 25099 , 660 , 32 , 1 , 1 , 25083
+557 , 25100 , 682 , 32 , 1 , 1 , 25083
+557 , 25101 , 657 , 32 , 1 , 1 , 25083
+557 , 25102 , 693 , 32 , 1 , 1 , 25083
+557 , 25103 , 695 , 32 , 1 , 1 , 25083
+557 , 25104 , 692 , 21 , 1 , 1 , 25083
+557 , 25105 , 693 , 31 , 1 , 1 , 25083
+557 , 25106 , 690 , 21 , 1 , 1 , 25083
+557 , 25107 , 681 , 31 , 1 , 1 , 25083
+557 , 25108 , 675 , 31 , 1 , 1 , 25083
+557 , 25109 , 675 , 31 , 1 , 1 , 25083
+557 , 25110 , 675 , 31 , 1 , 1 , 25083
+557 , 25111 , 690 , 32 , 1 , 1 , 25083
+557 , 25112 , 692 , 32 , 1 , 1 , 25083
+557 , 25113 , 650 , 32 , 1 , 1 , 25083
+557 , 25114 , 649 , 32 , 1 , 1 , 25083
+557 , 25115 , 690 , 21 , 1 , 1 , 25083
+557 , 25116 , 690 , 21 , 1 , 1 , 25083
+557 , 25117 , 690 , 21 , 1 , 1 , 25083
+557 , 25118 , 675 , 31 , 1 , 1 , 25083
+557 , 25119 , 675 , 31 , 1 , 1 , 25083
+557 , 25120 , 675 , 31 , 1 , 1 , 25083
+557 , 25121 , 675 , 31 , 1 , 1 , 25083
+557 , 25122 , 675 , 31 , 1 , 1 , 25083
+557 , 25123 , 675 , 31 , 1 , 1 , 25083
+557 , 25124 , 674 , 31 , 1 , 1 , 25083
+557 , 25125 , 688 , 21 , 1 , 1 , 25083
+557 , 25126 , 688 , 21 , 1 , 1 , 25083
+557 , 25127 , 686 , 21 , 1 , 1 , 25083
+557 , 25128 , 688 , 21 , 1 , 1 , 25083
+557 , 25129 , 668 , 31 , 1 , 1 , 25083
+557 , 25130 , 668 , 32 , 1 , 1 , 25083
+557 , 25131 , 668 , 32 , 1 , 1 , 25083
+557 , 25132 , 667 , 32 , 1 , 1 , 25083
+557 , 25133 , 667 , 32 , 1 , 1 , 25083
+557 , 25134 , 667 , 42 , 1 , 1 , 25083
+557 , 25135 , 667 , 31 , 1 , 1 , 25083
+557 , 25136 , 667 , 31 , 1 , 1 , 25083
+557 , 25137 , 667 , 31 , 1 , 1 , 25083
+557 , 25138 , 666 , 31 , 1 , 1 , 25083
+557 , 25139 , 659 , 41 , 1 , 1 , 25083
+557 , 25140 , 659 , 31 , 1 , 1 , 25083
+557 , 25141 , 659 , 31 , 1 , 1 , 25083
+557 , 25142 , 659 , 41 , 1 , 1 , 25083
+557 , 25143 , 659 , 31 , 1 , 1 , 25083
+557 , 25144 , 659 , 41 , 1 , 1 , 25083
+557 , 25145 , 659 , 41 , 1 , 1 , 25083
+557 , 25146 , 659 , 41 , 1 , 1 , 25083
+557 , 25147 , 659 , 41 , 1 , 1 , 25083
+557 , 25148 , 646 , 32 , 1 , 1 , 25083
+557 , 25149 , 635 , 11 , 1 , 1 , 25083
+557 , 25150 , 634 , 11 , 1 , 1 , 25083
+557 , 25151 , 616 , 13 , 1 , 1 , 25083
+557 , 25152 , 615 , 14 , 1 , 1 , 25083
+557 , 25153 , 614 , 13 , 1 , 1 , 25083
+557 , 25154 , 606 , 52 , 1 , 1 , 25083
+557 , 25155 , 606 , 62 , 1 , 1 , 25083
+557 , 25156 , 606 , 62 , 1 , 1 , 25083
+557 , 25157 , 605 , 62 , 1 , 1 , 25083
+557 , 25158 , 605 , 62 , 1 , 1 , 25083
+557 , 25159 , 605 , 62 , 1 , 1 , 25083
+557 , 25160 , 604 , 63 , 1 , 1 , 25083
+557 , 25161 , 603 , 52 , 1 , 1 , 25083
+557 , 25162 , 603 , 52 , 1 , 1 , 25083
+557 , 25163 , 603 , 52 , 1 , 1 , 25083
+557 , 25164 , 602 , 52 , 1 , 1 , 25083
+557 , 25165 , 602 , 52 , 1 , 1 , 25083
+557 , 25166 , 602 , 52 , 1 , 1 , 25083
+557 , 25167 , 602 , 62 , 1 , 1 , 25083
+557 , 25168 , 601 , 52 , 1 , 1 , 25083
+557 , 25169 , 601 , 62 , 1 , 1 , 25083
+557 , 25170 , 600 , 72 , 1 , 1 , 25083
+557 , 25171 , 599 , 72 , 1 , 1 , 25083
+557 , 25172 , 599 , 62 , 1 , 1 , 25083
+557 , 25173 , 613 , 73 , 1 , 1 , 25083
+557 , 25174 , 614 , 13 , 1 , 1 , 25083
+557 , 25175 , 614 , 11 , 1 , 1 , 25083
+557 , 25176 , 613 , 11 , 1 , 1 , 25083
+557 , 25177 , 611 , 32 , 1 , 1 , 25083
+557 , 25178 , 611 , 32 , 1 , 1 , 25083
+557 , 25179 , 610 , 32 , 1 , 1 , 25083
+557 , 25180 , 614 , 32 , 1 , 1 , 25083
+557 , 25181 , 611 , 32 , 1 , 1 , 25083
+557 , 25182 , 610 , 32 , 1 , 1 , 25083
+557 , 25183 , 610 , 32 , 1 , 1 , 25083
+557 , 25184 , 611 , 32 , 1 , 1 , 25083
+557 , 25185 , 615 , 32 , 1 , 1 , 25083
+557 , 25186 , 610 , 32 , 1 , 1 , 25083
+557 , 25187 , 628 , 45 , 1 , 1 , 25083
+557 , 25188 , 628 , 35 , 1 , 1 , 25083
+557 , 25189 , 628 , 35 , 1 , 1 , 25083
+557 , 25190 , 628 , 35 , 1 , 1 , 25083
+557 , 25191 , 627 , 23 , 1 , 1 , 25083
+557 , 25192 , 627 , 35 , 1 , 1 , 25083
+557 , 25193 , 627 , 35 , 1 , 1 , 25083
+557 , 25194 , 627 , 23 , 1 , 1 , 25083
+557 , 25195 , 627 , 35 , 1 , 1 , 25083
+557 , 25196 , 627 , 35 , 1 , 1 , 25083
+557 , 25197 , 627 , 35 , 1 , 1 , 25083
+557 , 25198 , 632 , 33 , 1 , 1 , 25083
+557 , 25199 , 627 , 23 , 1 , 1 , 25083
+557 , 25200 , 627 , 35 , 1 , 1 , 25083
+557 , 25201 , 631 , 34 , 1 , 1 , 25083
+557 , 25202 , 627 , 23 , 1 , 1 , 25083
+557 , 25203 , 589 , 11 , 1 , 1 , 25083
+557 , 25204 , 588 , 11 , 1 , 1 , 25083
+557 , 25205 , 588 , 11 , 1 , 1 , 25083
+557 , 25206 , 582 , 11 , 1 , 1 , 25083
+557 , 25207 , 581 , 11 , 1 , 1 , 25083
+557 , 25208 , 581 , 11 , 1 , 1 , 25083
+557 , 25209 , 599 , 62 , 1 , 1 , 25083
+557 , 25210 , 598 , 62 , 1 , 1 , 25083
+557 , 25211 , 598 , 62 , 1 , 1 , 25083
+557 , 25212 , 598 , 113 , 1 , 1 , 25083
+557 , 25213 , 598 , 62 , 1 , 1 , 25083
+557 , 25214 , 598 , 62 , 1 , 1 , 25083
+557 , 25215 , 597 , 62 , 1 , 1 , 25083
+557 , 25216 , 597 , 62 , 1 , 1 , 25083
+557 , 25217 , 596 , 62 , 1 , 1 , 25083
+557 , 25218 , 595 , 62 , 1 , 1 , 25083
+557 , 25219 , 595 , 72 , 1 , 1 , 25083
+557 , 25220 , 595 , 62 , 1 , 1 , 25083
+557 , 25221 , 595 , 113 , 1 , 1 , 25083
+557 , 25222 , 595 , 62 , 1 , 1 , 25083
+557 , 25223 , 595 , 62 , 1 , 1 , 25083
+557 , 25224 , 595 , 62 , 1 , 1 , 25083
+557 , 25225 , 594 , 62 , 1 , 1 , 25083
+557 , 25226 , 594 , 62 , 1 , 1 , 25083
+557 , 25227 , 592 , 72 , 1 , 1 , 25083
+557 , 25228 , 592 , 62 , 1 , 1 , 25083
+557 , 25229 , 591 , 72 , 1 , 1 , 25083
+557 , 25230 , 591 , 113 , 1 , 1 , 25083
+557 , 25231 , 591 , 62 , 1 , 1 , 25083
+557 , 25232 , 591 , 62 , 1 , 1 , 25083
+557 , 25233 , 591 , 62 , 1 , 1 , 25083
+557 , 25234 , 591 , 62 , 1 , 1 , 25083
+557 , 25235 , 590 , 62 , 1 , 1 , 25083
+557 , 25236 , 590 , 62 , 1 , 1 , 25083
+557 , 25237 , 588 , 62 , 1 , 1 , 25083
+557 , 25238 , 588 , 62 , 1 , 1 , 25083
+557 , 25239 , 588 , 123 , 1 , 1 , 25083
+557 , 25240 , 587 , 62 , 1 , 1 , 25083
+557 , 25241 , 587 , 62 , 1 , 1 , 25083
+557 , 25242 , 587 , 62 , 1 , 1 , 25083
+557 , 25243 , 587 , 62 , 1 , 1 , 25083
+557 , 25244 , 587 , 62 , 1 , 1 , 25083
+557 , 25245 , 587 , 52 , 1 , 1 , 25083
+557 , 25246 , 587 , 62 , 1 , 1 , 25083
+557 , 25247 , 584 , 52 , 1 , 1 , 25083
+557 , 25248 , 584 , 62 , 1 , 1 , 25083
+557 , 25249 , 583 , 123 , 1 , 1 , 25083
+557 , 25250 , 583 , 62 , 1 , 1 , 25083
+557 , 25251 , 583 , 52 , 1 , 1 , 25083
+557 , 25252 , 583 , 52 , 1 , 1 , 25083
+557 , 25253 , 583 , 62 , 1 , 1 , 25083
+557 , 25254 , 583 , 52 , 1 , 1 , 25083
+557 , 25255 , 583 , 52 , 1 , 1 , 25083
+557 , 25256 , 583 , 62 , 1 , 1 , 25083
+557 , 25257 , 581 , 124 , 1 , 1 , 25083
+557 , 25258 , 581 , 62 , 1 , 1 , 25083
+557 , 25259 , 581 , 52 , 1 , 1 , 25083
+557 , 25260 , 581 , 52 , 1 , 1 , 25083
+557 , 25261 , 581 , 52 , 1 , 1 , 25083
+557 , 25262 , 581 , 52 , 1 , 1 , 25083
+557 , 25263 , 581 , 52 , 1 , 1 , 25083
+557 , 25264 , 581 , 52 , 1 , 1 , 25083
+557 , 25265 , 581 , 52 , 1 , 1 , 25083
+557 , 25266 , 581 , 72 , 1 , 1 , 25083
+557 , 25267 , 578 , 52 , 1 , 1 , 25083
+557 , 25268 , 578 , 41 , 1 , 1 , 25083
+557 , 25269 , 578 , 52 , 1 , 1 , 25083
+557 , 25270 , 578 , 41 , 1 , 1 , 25083
+557 , 25271 , 578 , 52 , 1 , 1 , 25083
+557 , 25272 , 578 , 41 , 1 , 1 , 25083
+557 , 25273 , 578 , 52 , 1 , 1 , 25083
+557 , 25274 , 578 , 52 , 1 , 1 , 25083
+557 , 25275 , 578 , 52 , 1 , 1 , 25083
+557 , 25276 , 578 , 62 , 1 , 1 , 25083
+557 , 25277 , 759 , 21 , 1 , 1 , 25175 25187 25212 25206 25274 25227 25105 25097 25128 25242 25093 25200 25263 25267 25112 25180 25169 25096 25251 25198 25140 25160 25269 25132 25133 25181 25165 25158 25159 25141 25195 25163 25233 25103 25144 25124 25191 25217 25218 25273 25142 25085 25271 25090 25149 25245 25188 25186 25098 25114 25203 25139 25115 25162 25240 25121 25089 25194 25231 25219 25134 25157 25238 25258 25252 25234 25189 25209 25084 25153 25143 25224 25172 25205 25174 25151 25117 25120 25193 25249 25125 25127 25232 25253 25170 25101 25177 25197 25265 25106 25092 25244 25156 25228 25185 25126 25148 25211 25100 25164 25276 25123 25184 25210 25088 25248 25136 25222 25129 25254 25268 25226 25150 25094 25223 25257 25154 25116 25119 25255 25167 25110 25250 25111 25272 25086 25108 25095 25109 25166 25182 25207 25183 25229 25135 25259 25214 25246 25118 25196 25171 25208 25104 25220 25239 25237 25091 25216 25122 25152 25131 25199 25215 25275 25202 25256 25137 25168 25260 25138 25107 25204 25262 25087 25113 25201 25243 25155 25221 25176 25230 25266 25178 25225 25161 25099 25179 25261 25146 25147 25270 25213 25192 25235 25264 25130 25236 25190 25173 25102 25145 25241 25247
+558 , 25278 , 2 , 11 , 1 , 1 ,
+558 , 25279 , 124 , 41 , 1 , 1 , 25278
+558 , 25280 , 124 , 41 , 1 , 1 , 25278
+558 , 25281 , 124 , 31 , 1 , 1 , 25278
+558 , 25282 , 124 , 85 , 1 , 1 , 25278
+558 , 25283 , 123 , 41 , 1 , 1 , 25278
+558 , 25284 , 123 , 31 , 1 , 1 , 25278
+558 , 25285 , 123 , 41 , 1 , 1 , 25278
+558 , 25286 , 122 , 74 , 1 , 1 , 25278
+558 , 25287 , 120 , 85 , 1 , 1 , 25278
+558 , 25288 , 94 , 52 , 1 , 1 , 25278
+558 , 25289 , 94 , 41 , 1 , 1 , 25278
+558 , 25290 , 93 , 41 , 1 , 1 , 25278
+558 , 25291 , 101 , 31 , 1 , 1 , 25278
+558 , 25292 , 101 , 31 , 1 , 1 , 25278
+558 , 25293 , 101 , 31 , 1 , 1 , 25278
+558 , 25294 , 101 , 31 , 1 , 1 , 25278
+558 , 25295 , 101 , 31 , 1 , 1 , 25278
+558 , 25296 , 101 , 31 , 1 , 1 , 25278
+558 , 25297 , 101 , 31 , 1 , 1 , 25278
+558 , 25298 , 101 , 41 , 1 , 1 , 25278
+558 , 25299 , 101 , 41 , 1 , 1 , 25278
+558 , 25300 , 99 , 32 , 1 , 1 , 25278
+558 , 25301 , 99 , 42 , 1 , 1 , 25278
+558 , 25302 , 99 , 42 , 1 , 1 , 25278
+558 , 25303 , 99 , 42 , 1 , 1 , 25278
+558 , 25304 , 99 , 42 , 1 , 1 , 25278
+558 , 25305 , 99 , 42 , 1 , 1 , 25278
+558 , 25306 , 99 , 42 , 1 , 1 , 25278
+558 , 25307 , 93 , 41 , 1 , 1 , 25278
+558 , 25308 , 93 , 41 , 1 , 1 , 25278
+558 , 25309 , 93 , 41 , 1 , 1 , 25278
+558 , 25310 , 91 , 41 , 1 , 1 , 25278
+558 , 25311 , 91 , 52 , 1 , 1 , 25278
+558 , 25312 , 91 , 41 , 1 , 1 , 25278
+558 , 25313 , 90 , 42 , 1 , 1 , 25278
+558 , 25314 , 89 , 42 , 1 , 1 , 25278
+558 , 25315 , 89 , 42 , 1 , 1 , 25278
+558 , 25316 , 89 , 41 , 1 , 1 , 25278
+558 , 25317 , 89 , 42 , 1 , 1 , 25278
+558 , 25318 , 99 , 42 , 1 , 1 , 25278
+558 , 25319 , 99 , 42 , 1 , 1 , 25278
+558 , 25320 , 99 , 42 , 1 , 1 , 25278
+558 , 25321 , 99 , 41 , 1 , 1 , 25278
+558 , 25322 , 98 , 41 , 1 , 1 , 25278
+558 , 25323 , 96 , 42 , 1 , 1 , 25278
+558 , 25324 , 96 , 41 , 1 , 1 , 25278
+558 , 25325 , 95 , 41 , 1 , 1 , 25278
+558 , 25326 , 95 , 42 , 1 , 1 , 25278
+558 , 25327 , 94 , 41 , 1 , 1 , 25278
+558 , 25328 , 94 , 41 , 1 , 1 , 25278
+558 , 25329 , 130 , 31 , 1 , 1 , 25278
+558 , 25330 , 129 , 31 , 1 , 1 , 25278
+558 , 25331 , 129 , 31 , 1 , 1 , 25278
+558 , 25332 , 129 , 31 , 1 , 1 , 25278
+558 , 25333 , 129 , 31 , 1 , 1 , 25278
+558 , 25334 , 129 , 85 , 1 , 1 , 25278
+558 , 25335 , 128 , 31 , 1 , 1 , 25278
+558 , 25336 , 127 , 41 , 1 , 1 , 25278
+558 , 25337 , 127 , 31 , 1 , 1 , 25278
+558 , 25338 , 127 , 31 , 1 , 1 , 25278
+558 , 25339 , 126 , 75 , 1 , 1 , 25278
+558 , 25340 , 126 , 31 , 1 , 1 , 25278
+558 , 25341 , 125 , 85 , 1 , 1 , 25278
+558 , 25342 , 125 , 41 , 1 , 1 , 25278
+558 , 25343 , 125 , 41 , 1 , 1 , 25278
+558 , 25344 , 125 , 31 , 1 , 1 , 25278
+558 , 25345 , 125 , 41 , 1 , 1 , 25278
+558 , 25346 , 125 , 41 , 1 , 1 , 25278
+558 , 25347 , 124 , 31 , 1 , 1 , 25278
+558 , 25348 , 124 , 31 , 1 , 1 , 25278
+558 , 25349 , 124 , 41 , 1 , 1 , 25278
+558 , 25350 , 57 , 31 , 1 , 1 , 25278
+558 , 25351 , 57 , 41 , 1 , 1 , 25278
+558 , 25352 , 57 , 42 , 1 , 1 , 25278
+558 , 25353 , 57 , 42 , 1 , 1 , 25278
+558 , 25354 , 56 , 31 , 1 , 1 , 25278
+558 , 25355 , 56 , 31 , 1 , 1 , 25278
+558 , 25356 , 55 , 32 , 1 , 1 , 25278
+558 , 25357 , 55 , 42 , 1 , 1 , 25278
+558 , 25358 , 55 , 41 , 1 , 1 , 25278
+558 , 25359 , 55 , 41 , 1 , 1 , 25278
+558 , 25360 , 53 , 42 , 1 , 1 , 25278
+558 , 25361 , 53 , 42 , 1 , 1 , 25278
+558 , 25362 , 53 , 52 , 1 , 1 , 25278
+558 , 25363 , 53 , 52 , 1 , 1 , 25278
+558 , 25364 , 53 , 32 , 1 , 1 , 25278
+558 , 25365 , 53 , 42 , 1 , 1 , 25278
+558 , 25366 , 52 , 41 , 1 , 1 , 25278
+558 , 25367 , 51 , 52 , 1 , 1 , 25278
+558 , 25368 , 51 , 62 , 1 , 1 , 25278
+558 , 25369 , 50 , 62 , 1 , 1 , 25278
+558 , 25370 , 50 , 233 , 1 , 1 , 25278
+558 , 25371 , 50 , 254 , 1 , 1 , 25278
+558 , 25372 , 50 , 265 , 1 , 1 , 25278
+558 , 25373 , 50 , 254 , 1 , 1 , 25278
+558 , 25374 , 50 , 243 , 1 , 1 , 25278
+558 , 25375 , 50 , 233 , 1 , 1 , 25278
+558 , 25376 , 50 , 233 , 1 , 1 , 25278
+558 , 25377 , 50 , 233 , 1 , 1 , 25278
+558 , 25378 , 50 , 252 , 1 , 1 , 25278
+558 , 25379 , 50 , 262 , 1 , 1 , 25278
+558 , 25380 , 53 , 236 , 1 , 1 , 25278
+558 , 25381 , 53 , 236 , 1 , 1 , 25278
+558 , 25382 , 53 , 246 , 1 , 1 , 25278
+558 , 25383 , 53 , 236 , 1 , 1 , 25278
+558 , 25384 , 53 , 246 , 1 , 1 , 25278
+558 , 25385 , 53 , 245 , 1 , 1 , 25278
+558 , 25386 , 53 , 255 , 1 , 1 , 25278
+558 , 25387 , 53 , 235 , 1 , 1 , 25278
+558 , 25388 , 53 , 224 , 1 , 1 , 25278
+558 , 25389 , 53 , 224 , 1 , 1 , 25278
+558 , 25390 , 53 , 245 , 1 , 1 , 25278
+558 , 25391 , 53 , 235 , 1 , 1 , 25278
+558 , 25392 , 53 , 235 , 1 , 1 , 25278
+558 , 25393 , 53 , 245 , 1 , 1 , 25278
+558 , 25394 , 53 , 245 , 1 , 1 , 25278
+558 , 25395 , 53 , 245 , 1 , 1 , 25278
+558 , 25396 , 37 , 80 , 1 , 1 , 25278
+558 , 25397 , 37 , 77 , 1 , 1 , 25278
+558 , 25398 , 37 , 80 , 1 , 1 , 25278
+558 , 25399 , 37 , 77 , 1 , 1 , 25278
+558 , 25400 , 37 , 87 , 1 , 1 , 25278
+558 , 25401 , 37 , 76 , 1 , 1 , 25278
+558 , 25402 , 49 , 62 , 1 , 1 , 25278
+558 , 25403 , 49 , 62 , 1 , 1 , 25278
+558 , 25404 , 49 , 62 , 1 , 1 , 25278
+558 , 25405 , 49 , 62 , 1 , 1 , 25278
+558 , 25406 , 49 , 62 , 1 , 1 , 25278
+558 , 25407 , 48 , 62 , 1 , 1 , 25278
+558 , 25408 , 48 , 62 , 1 , 1 , 25278
+558 , 25409 , 47 , 62 , 1 , 1 , 25278
+558 , 25410 , 47 , 62 , 1 , 1 , 25278
+558 , 25411 , 46 , 62 , 1 , 1 , 25278
+558 , 25412 , 45 , 63 , 1 , 1 , 25278
+558 , 25413 , 45 , 63 , 1 , 1 , 25278
+558 , 25414 , 45 , 53 , 1 , 1 , 25278
+558 , 25415 , 45 , 53 , 1 , 1 , 25278
+558 , 25416 , 45 , 62 , 1 , 1 , 25278
+558 , 25417 , 45 , 62 , 1 , 1 , 25278
+558 , 25418 , 44 , 62 , 1 , 1 , 25278
+558 , 25419 , 44 , 62 , 1 , 1 , 25278
+558 , 25420 , 43 , 62 , 1 , 1 , 25278
+558 , 25421 , 42 , 52 , 1 , 1 , 25278
+558 , 25422 , 41 , 42 , 1 , 1 , 25278
+558 , 25423 , 41 , 52 , 1 , 1 , 25278
+558 , 25424 , 41 , 72 , 1 , 1 , 25278
+558 , 25425 , 41 , 62 , 1 , 1 , 25278
+558 , 25426 , 40 , 62 , 1 , 1 , 25278
+558 , 25427 , 40 , 52 , 1 , 1 , 25278
+558 , 25428 , 39 , 42 , 1 , 1 , 25278
+558 , 25429 , 39 , 42 , 1 , 1 , 25278
+558 , 25430 , 39 , 41 , 1 , 1 , 25278
+558 , 25431 , 38 , 41 , 1 , 1 , 25278
+558 , 25432 , 37 , 72 , 1 , 1 , 25278
+558 , 25433 , 37 , 62 , 1 , 1 , 25278
+558 , 25434 , 37 , 42 , 1 , 1 , 25278
+558 , 25435 , 37 , 52 , 1 , 1 , 25278
+558 , 25436 , 37 , 42 , 1 , 1 , 25278
+558 , 25437 , 37 , 42 , 1 , 1 , 25278
+558 , 25438 , 35 , 52 , 1 , 1 , 25278
+558 , 25439 , 35 , 42 , 1 , 1 , 25278
+558 , 25440 , 35 , 42 , 1 , 1 , 25278
+558 , 25441 , 33 , 41 , 1 , 1 , 25278
+558 , 25442 , 32 , 41 , 1 , 1 , 25278
+558 , 25443 , 32 , 41 , 1 , 1 , 25278
+558 , 25444 , 31 , 42 , 1 , 1 , 25278
+558 , 25445 , 31 , 41 , 1 , 1 , 25278
+558 , 25446 , 31 , 41 , 1 , 1 , 25278
+558 , 25447 , 31 , 41 , 1 , 1 , 25278
+558 , 25448 , 30 , 41 , 1 , 1 , 25278
+558 , 25449 , 30 , 41 , 1 , 1 , 25278
+558 , 25450 , 30 , 41 , 1 , 1 , 25278
+558 , 25451 , 29 , 52 , 1 , 1 , 25278
+558 , 25452 , 27 , 52 , 1 , 1 , 25278
+558 , 25453 , 27 , 41 , 1 , 1 , 25278
+558 , 25454 , 27 , 52 , 1 , 1 , 25278
+558 , 25455 , 27 , 52 , 1 , 1 , 25278
+558 , 25456 , 27 , 41 , 1 , 1 , 25278
+558 , 25457 , 27 , 52 , 1 , 1 , 25278
+558 , 25458 , 26 , 41 , 1 , 1 , 25278
+558 , 25459 , 26 , 41 , 1 , 1 , 25278
+558 , 25460 , 26 , 41 , 1 , 1 , 25278
+558 , 25461 , 25 , 41 , 1 , 1 , 25278
+558 , 25462 , 25 , 52 , 1 , 1 , 25278
+558 , 25463 , 25 , 52 , 1 , 1 , 25278
+558 , 25464 , 25 , 41 , 1 , 1 , 25278
+558 , 25465 , 25 , 52 , 1 , 1 , 25278
+558 , 25466 , 25 , 52 , 1 , 1 , 25278
+558 , 25467 , 25 , 52 , 1 , 1 , 25278
+558 , 25468 , 25 , 41 , 1 , 1 , 25278
+558 , 25469 , 25 , 42 , 1 , 1 , 25278
+558 , 25470 , 25 , 42 , 1 , 1 , 25278
+558 , 25471 , 25 , 32 , 1 , 1 , 25278
+558 , 25472 , 331 , 0 , 1 , 1 , 25350 25347 25293 25317 25380 25345 25420 25469 25392 25291 25334 25377 25427 25370 25330 25325 25383 25471 25356 25366 25323 25354 25322 25405 25402 25372 25413 25435 25444 25416 25417 25436 25450 25301 25403 25404 25456 25394 25361 25359 25335 25294 25415 25375 25319 25295 25445 25355 25307 25406 25459 25285 25466 25315 25289 25292 25408 25412 25433 25338 25423 25421 25430 25326 25357 25381 25398 25422 25395 25324 25280 25362 25336 25389 25363 25299 25425 25470 25385 25447 25438 25460 25288 25409 25303 25426 25455 25431 25407 25468 25287 25414 25467 25419 25376 25393 25328 25443 25337 25306 25339 25387 25388 25390 25379 25365 25308 25358 25462 25284 25448 25352 25279 25432 25281 25449 25353 25351 25342 25318 25286 25410 25384 25418 25296 25344 25311 25437 25397 25298 25300 25369 25439 25464 25374 25310 25442 25312 25440 25463 25391 25465 25304 25309 25457 25316 25373 25305 25314 25399 25360 25283 25451 25282 25458 25378 25321 25452 25364 25332 25454 25348 25371 25428 25333 25411 25329 25434 25343 25429 25331 25461 25367 25396 25340 25382 25297 25327 25346 25441 25386 25341 25400 25453 25313 25349 25290 25424 25302 25446 25368 25401 25320
+558 , 25473 , 459 , 21 , 1 , 1 , 25472
+558 , 25474 , 463 , 11 , 1 , 1 , 25472
+558 , 25475 , 459 , 32 , 1 , 1 , 25472
+558 , 25476 , 458 , 21 , 1 , 1 , 25472
+558 , 25477 , 454 , 21 , 1 , 1 , 25472
+558 , 25478 , 454 , 21 , 1 , 1 , 25472
+558 , 25479 , 458 , 32 , 1 , 1 , 25472
+558 , 25480 , 457 , 11 , 1 , 1 , 25472
+558 , 25481 , 458 , 21 , 1 , 1 , 25472
+558 , 25482 , 461 , 32 , 1 , 1 , 25472
+558 , 25483 , 455 , 32 , 1 , 1 , 25472
+558 , 25484 , 455 , 32 , 1 , 1 , 25472
+558 , 25485 , 454 , 32 , 1 , 1 , 25472
+558 , 25486 , 455 , 11 , 1 , 1 , 25472
+558 , 25487 , 449 , 31 , 1 , 1 , 25472
+558 , 25488 , 450 , 12 , 1 , 1 , 25472
+558 , 25489 , 450 , 12 , 1 , 1 , 25472
+558 , 25490 , 446 , 32 , 1 , 1 , 25472
+558 , 25491 , 446 , 32 , 1 , 1 , 25472
+558 , 25492 , 444 , 31 , 1 , 1 , 25472
+558 , 25493 , 444 , 32 , 1 , 1 , 25472
+558 , 25494 , 444 , 32 , 1 , 1 , 25472
+558 , 25495 , 444 , 32 , 1 , 1 , 25472
+558 , 25496 , 443 , 31 , 1 , 1 , 25472
+558 , 25497 , 444 , 11 , 1 , 1 , 25472
+558 , 25498 , 439 , 42 , 1 , 1 , 25472
+558 , 25499 , 439 , 41 , 1 , 1 , 25472
+558 , 25500 , 439 , 41 , 1 , 1 , 25472
+558 , 25501 , 438 , 31 , 1 , 1 , 25472
+558 , 25502 , 438 , 32 , 1 , 1 , 25472
+558 , 25503 , 436 , 31 , 1 , 1 , 25472
+558 , 25504 , 435 , 31 , 1 , 1 , 25472
+558 , 25505 , 435 , 31 , 1 , 1 , 25472
+558 , 25506 , 435 , 31 , 1 , 1 , 25472
+558 , 25507 , 434 , 31 , 1 , 1 , 25472
+558 , 25508 , 433 , 52 , 1 , 1 , 25472
+558 , 25509 , 433 , 42 , 1 , 1 , 25472
+558 , 25510 , 433 , 41 , 1 , 1 , 25472
+558 , 25511 , 436 , 32 , 1 , 1 , 25472
+558 , 25512 , 428 , 41 , 1 , 1 , 25472
+558 , 25513 , 428 , 41 , 1 , 1 , 25472
+558 , 25514 , 428 , 52 , 1 , 1 , 25472
+558 , 25515 , 428 , 52 , 1 , 1 , 25472
+558 , 25516 , 428 , 42 , 1 , 1 , 25472
+558 , 25517 , 421 , 42 , 1 , 1 , 25472
+558 , 25518 , 421 , 42 , 1 , 1 , 25472
+558 , 25519 , 419 , 32 , 1 , 1 , 25472
+558 , 25520 , 412 , 11 , 1 , 1 , 25472
+558 , 25521 , 410 , 11 , 1 , 1 , 25472
+558 , 25522 , 436 , 32 , 1 , 1 , 25472
+558 , 25523 , 420 , 31 , 1 , 1 , 25472
+558 , 25524 , 418 , 52 , 1 , 1 , 25472
+558 , 25525 , 418 , 42 , 1 , 1 , 25472
+558 , 25526 , 418 , 42 , 1 , 1 , 25472
+558 , 25527 , 428 , 32 , 1 , 1 , 25472
+558 , 25528 , 426 , 32 , 1 , 1 , 25472
+558 , 25529 , 416 , 41 , 1 , 1 , 25472
+558 , 25530 , 423 , 32 , 1 , 1 , 25472
+558 , 25531 , 420 , 32 , 1 , 1 , 25472
+558 , 25532 , 438 , 13 , 1 , 1 , 25472
+558 , 25533 , 419 , 32 , 1 , 1 , 25472
+558 , 25534 , 419 , 32 , 1 , 1 , 25472
+558 , 25535 , 419 , 41 , 1 , 1 , 25472
+558 , 25536 , 428 , 52 , 1 , 1 , 25472
+558 , 25537 , 434 , 11 , 1 , 1 , 25472
+558 , 25538 , 434 , 11 , 1 , 1 , 25472
+558 , 25539 , 437 , 13 , 1 , 1 , 25472
+558 , 25540 , 426 , 41 , 1 , 1 , 25472
+558 , 25541 , 426 , 41 , 1 , 1 , 25472
+558 , 25542 , 425 , 41 , 1 , 1 , 25472
+558 , 25543 , 423 , 42 , 1 , 1 , 25472
+558 , 25544 , 423 , 52 , 1 , 1 , 25472
+558 , 25545 , 415 , 41 , 1 , 1 , 25472
+558 , 25546 , 419 , 32 , 1 , 1 , 25472
+558 , 25547 , 430 , 11 , 1 , 1 , 25472
+558 , 25548 , 422 , 43 , 1 , 1 , 25472
+558 , 25549 , 422 , 43 , 1 , 1 , 25472
+558 , 25550 , 421 , 32 , 1 , 1 , 25472
+558 , 25551 , 421 , 41 , 1 , 1 , 25472
+558 , 25552 , 422 , 43 , 1 , 1 , 25472
+558 , 25553 , 459 , 21 , 1 , 1 , 25472
+558 , 25554 , 459 , 21 , 1 , 1 , 25472
+558 , 25555 , 459 , 21 , 1 , 1 , 25472
+558 , 25556 , 411 , 11 , 1 , 1 , 25472
+558 , 25557 , 408 , 11 , 1 , 1 , 25472
+558 , 25558 , 448 , 11 , 1 , 1 , 25472
+558 , 25559 , 399 , 31 , 1 , 1 , 25472
+558 , 25560 , 399 , 41 , 1 , 1 , 25472
+558 , 25561 , 399 , 31 , 1 , 1 , 25472
+558 , 25562 , 399 , 52 , 1 , 1 , 25472
+558 , 25563 , 399 , 31 , 1 , 1 , 25472
+558 , 25564 , 411 , 31 , 1 , 1 , 25472
+558 , 25565 , 413 , 41 , 1 , 1 , 25472
+558 , 25566 , 406 , 52 , 1 , 1 , 25472
+558 , 25567 , 411 , 52 , 1 , 1 , 25472
+558 , 25568 , 405 , 31 , 1 , 1 , 25472
+558 , 25569 , 407 , 41 , 1 , 1 , 25472
+558 , 25570 , 407 , 52 , 1 , 1 , 25472
+558 , 25571 , 404 , 51 , 1 , 1 , 25472
+558 , 25572 , 405 , 41 , 1 , 1 , 25472
+558 , 25573 , 407 , 41 , 1 , 1 , 25472
+558 , 25574 , 400 , 52 , 1 , 1 , 25472
+558 , 25575 , 403 , 41 , 1 , 1 , 25472
+558 , 25576 , 401 , 41 , 1 , 1 , 25472
+558 , 25577 , 402 , 31 , 1 , 1 , 25472
+558 , 25578 , 400 , 41 , 1 , 1 , 25472
+558 , 25579 , 399 , 12 , 1 , 1 , 25472
+558 , 25580 , 393 , 41 , 1 , 1 , 25472
+558 , 25581 , 391 , 31 , 1 , 1 , 25472
+558 , 25582 , 391 , 31 , 1 , 1 , 25472
+558 , 25583 , 391 , 31 , 1 , 1 , 25472
+558 , 25584 , 390 , 31 , 1 , 1 , 25472
+558 , 25585 , 385 , 12 , 1 , 1 , 25472
+558 , 25586 , 383 , 13 , 1 , 1 , 25472
+558 , 25587 , 383 , 12 , 1 , 1 , 25472
+558 , 25588 , 383 , 11 , 1 , 1 , 25472
+558 , 25589 , 382 , 32 , 1 , 1 , 25472
+558 , 25590 , 382 , 32 , 1 , 1 , 25472
+558 , 25591 , 381 , 32 , 1 , 1 , 25472
+558 , 25592 , 381 , 32 , 1 , 1 , 25472
+558 , 25593 , 381 , 32 , 1 , 1 , 25472
+558 , 25594 , 381 , 32 , 1 , 1 , 25472
+558 , 25595 , 381 , 32 , 1 , 1 , 25472
+558 , 25596 , 381 , 32 , 1 , 1 , 25472
+558 , 25597 , 386 , 32 , 1 , 1 , 25472
+558 , 25598 , 395 , 32 , 1 , 1 , 25472
+558 , 25599 , 381 , 11 , 1 , 1 , 25472
+558 , 25600 , 369 , 12 , 1 , 1 , 25472
+558 , 25601 , 394 , 11 , 1 , 1 , 25472
+558 , 25602 , 360 , 11 , 1 , 1 , 25472
+558 , 25603 , 349 , 11 , 1 , 1 , 25472
+558 , 25604 , 348 , 11 , 1 , 1 , 25472
+558 , 25605 , 373 , 34 , 1 , 1 , 25472
+558 , 25606 , 371 , 42 , 1 , 1 , 25472
+558 , 25607 , 371 , 42 , 1 , 1 , 25472
+558 , 25608 , 371 , 32 , 1 , 1 , 25472
+558 , 25609 , 371 , 32 , 1 , 1 , 25472
+558 , 25610 , 370 , 53 , 1 , 1 , 25472
+558 , 25611 , 370 , 53 , 1 , 1 , 25472
+558 , 25612 , 370 , 53 , 1 , 1 , 25472
+558 , 25613 , 369 , 52 , 1 , 1 , 25472
+558 , 25614 , 369 , 42 , 1 , 1 , 25472
+558 , 25615 , 369 , 41 , 1 , 1 , 25472
+558 , 25616 , 366 , 41 , 1 , 1 , 25472
+558 , 25617 , 366 , 41 , 1 , 1 , 25472
+558 , 25618 , 365 , 52 , 1 , 1 , 25472
+558 , 25619 , 365 , 62 , 1 , 1 , 25472
+558 , 25620 , 365 , 62 , 1 , 1 , 25472
+558 , 25621 , 365 , 52 , 1 , 1 , 25472
+558 , 25622 , 364 , 52 , 1 , 1 , 25472
+558 , 25623 , 364 , 41 , 1 , 1 , 25472
+558 , 25624 , 364 , 41 , 1 , 1 , 25472
+558 , 25625 , 363 , 41 , 1 , 1 , 25472
+558 , 25626 , 360 , 63 , 1 , 1 , 25472
+558 , 25627 , 359 , 62 , 1 , 1 , 25472
+558 , 25628 , 359 , 53 , 1 , 1 , 25472
+558 , 25629 , 359 , 53 , 1 , 1 , 25472
+558 , 25630 , 359 , 53 , 1 , 1 , 25472
+558 , 25631 , 359 , 53 , 1 , 1 , 25472
+558 , 25632 , 358 , 43 , 1 , 1 , 25472
+558 , 25633 , 357 , 41 , 1 , 1 , 25472
+558 , 25634 , 357 , 52 , 1 , 1 , 25472
+558 , 25635 , 357 , 41 , 1 , 1 , 25472
+558 , 25636 , 353 , 41 , 1 , 1 , 25472
+558 , 25637 , 353 , 52 , 1 , 1 , 25472
+558 , 25638 , 353 , 52 , 1 , 1 , 25472
+558 , 25639 , 352 , 41 , 1 , 1 , 25472
+558 , 25640 , 352 , 41 , 1 , 1 , 25472
+558 , 25641 , 352 , 52 , 1 , 1 , 25472
+558 , 25642 , 351 , 41 , 1 , 1 , 25472
+558 , 25643 , 351 , 52 , 1 , 1 , 25472
+558 , 25644 , 351 , 41 , 1 , 1 , 25472
+558 , 25645 , 350 , 41 , 1 , 1 , 25472
+558 , 25646 , 348 , 52 , 1 , 1 , 25472
+558 , 25647 , 348 , 41 , 1 , 1 , 25472
+558 , 25648 , 348 , 41 , 1 , 1 , 25472
+558 , 25649 , 348 , 41 , 1 , 1 , 25472
+558 , 25650 , 348 , 52 , 1 , 1 , 25472
+558 , 25651 , 348 , 41 , 1 , 1 , 25472
+558 , 25652 , 348 , 41 , 1 , 1 , 25472
+558 , 25653 , 348 , 41 , 1 , 1 , 25472
+558 , 25654 , 348 , 41 , 1 , 1 , 25472
+558 , 25655 , 348 , 41 , 1 , 1 , 25472
+558 , 25656 , 346 , 42 , 1 , 1 , 25472
+558 , 25657 , 346 , 32 , 1 , 1 , 25472
+558 , 25658 , 346 , 42 , 1 , 1 , 25472
+558 , 25659 , 346 , 31 , 1 , 1 , 25472
+558 , 25660 , 346 , 41 , 1 , 1 , 25472
+558 , 25661 , 346 , 41 , 1 , 1 , 25472
+558 , 25662 , 346 , 31 , 1 , 1 , 25472
+558 , 25663 , 346 , 31 , 1 , 1 , 25472
+558 , 25664 , 346 , 41 , 1 , 1 , 25472
+558 , 25665 , 346 , 31 , 1 , 1 , 25472
+558 , 25666 , 523 , 21 , 1 , 1 , 25541 25624 25566 25609 25477 25600 25645 25578 25577 25634 25569 25601 25621 25507 25635 25593 25552 25653 25474 25494 25620 25628 25638 25485 25622 25562 25488 25629 25530 25523 25502 25602 25518 25617 25490 25529 25655 25503 25526 25563 25583 25534 25648 25630 25662 25643 25603 25597 25570 25632 25651 25650 25613 25495 25631 25641 25483 25479 25491 25554 25480 25512 25656 25663 25579 25614 25555 25531 25646 25508 25647 25644 25588 25623 25540 25520 25553 25521 25590 25551 25657 25605 25482 25513 25596 25636 25517 25548 25610 25654 25547 25536 25522 25591 25604 25557 25478 25598 25640 25581 25504 25615 25527 25496 25592 25659 25532 25537 25619 25546 25576 25611 25594 25493 25492 25608 25542 25505 25497 25661 25626 25510 25511 25509 25543 25539 25658 25595 25633 25514 25473 25571 25567 25568 25544 25580 25550 25500 25587 25538 25565 25489 25498 25558 25519 25625 25585 25584 25664 25618 25574 25589 25535 25637 25528 25575 25499 25586 25475 25561 25524 25606 25665 25639 25627 25649 25612 25564 25559 25525 25516 25501 25556 25506 25607 25573 25533 25642 25515 25572 25652 25549 25545 25484 25660 25560 25486 25582 25616 25481 25487 25599 25476
+559 , 25667 , 12 , 220 , 1 , 1 ,
+559 , 25668 , 12 , 231 , 1 , 1 ,
+559 , 25669 , 12 , 251 , 1 , 1 ,
+559 , 25670 , 12 , 229 , 1 , 1 ,
+559 , 25671 , 12 , 220 , 1 , 1 ,
+559 , 25672 , 12 , 220 , 1 , 1 ,
+559 , 25673 , 9 , 437 , 1 , 1 ,
+559 , 25674 , 9 , 417 , 1 , 1 ,
+559 , 25675 , 9 , 416 , 1 , 1 ,
+559 , 25676 , 9 , 416 , 1 , 1 ,
+559 , 25677 , 9 , 416 , 1 , 1 ,
+559 , 25678 , 9 , 396 , 1 , 1 ,
+559 , 25679 , 8 , 386 , 1 , 1 ,
+559 , 25680 , 8 , 366 , 1 , 1 ,
+559 , 25681 , 8 , 366 , 1 , 1 ,
+559 , 25682 , 8 , 366 , 1 , 1 ,
+559 , 25683 , 8 , 356 , 1 , 1 ,
+559 , 25684 , 8 , 366 , 1 , 1 ,
+559 , 25685 , 8 , 366 , 1 , 1 ,
+559 , 25686 , 8 , 366 , 1 , 1 ,
+559 , 25687 , 8 , 366 , 1 , 1 ,
+559 , 25688 , 8 , 366 , 1 , 1 ,
+559 , 25689 , 6 , 109 , 1 , 1 ,
+559 , 25690 , 6 , 118 , 1 , 1 ,
+559 , 25691 , 6 , 112 , 1 , 1 ,
+559 , 25692 , 6 , 109 , 1 , 1 ,
+559 , 25693 , 6 , 109 , 1 , 1 ,
+559 , 25694 , 6 , 111 , 1 , 1 ,
+559 , 25695 , 24 , 82 , 1 , 1 ,
+559 , 25696 , 24 , 82 , 1 , 1 ,
+559 , 25697 , 23 , 82 , 1 , 1 ,
+559 , 25698 , 23 , 82 , 1 , 1 ,
+559 , 25699 , 22 , 82 , 1 , 1 ,
+559 , 25700 , 22 , 92 , 1 , 1 ,
+559 , 25701 , 22 , 82 , 1 , 1 ,
+559 , 25702 , 22 , 92 , 1 , 1 ,
+559 , 25703 , 22 , 92 , 1 , 1 ,
+559 , 25704 , 22 , 92 , 1 , 1 ,
+559 , 25705 , 22 , 82 , 1 , 1 ,
+559 , 25706 , 21 , 82 , 1 , 1 ,
+559 , 25707 , 19 , 82 , 1 , 1 ,
+559 , 25708 , 19 , 82 , 1 , 1 ,
+559 , 25709 , 19 , 82 , 1 , 1 ,
+559 , 25710 , 19 , 72 , 1 , 1 ,
+559 , 25711 , 19 , 82 , 1 , 1 ,
+559 , 25712 , 19 , 82 , 1 , 1 ,
+559 , 25713 , 19 , 82 , 1 , 1 ,
+559 , 25714 , 18 , 82 , 1 , 1 ,
+559 , 25715 , 18 , 82 , 1 , 1 ,
+559 , 25716 , 18 , 82 , 1 , 1 ,
+559 , 25717 , 16 , 82 , 1 , 1 ,
+559 , 25718 , 16 , 72 , 1 , 1 ,
+559 , 25719 , 16 , 82 , 1 , 1 ,
+559 , 25720 , 16 , 82 , 1 , 1 ,
+559 , 25721 , 16 , 82 , 1 , 1 ,
+559 , 25722 , 16 , 82 , 1 , 1 ,
+559 , 25723 , 16 , 82 , 1 , 1 ,
+559 , 25724 , 15 , 82 , 1 , 1 ,
+559 , 25725 , 15 , 82 , 1 , 1 ,
+559 , 25726 , 15 , 83 , 1 , 1 ,
+559 , 25727 , 12 , 82 , 1 , 1 ,
+559 , 25728 , 12 , 82 , 1 , 1 ,
+559 , 25729 , 12 , 82 , 1 , 1 ,
+559 , 25730 , 12 , 82 , 1 , 1 ,
+559 , 25731 , 12 , 82 , 1 , 1 ,
+559 , 25732 , 12 , 82 , 1 , 1 ,
+559 , 25733 , 11 , 92 , 1 , 1 ,
+559 , 25734 , 11 , 92 , 1 , 1 ,
+559 , 25735 , 11 , 93 , 1 , 1 ,
+559 , 25736 , 11 , 82 , 1 , 1 ,
+559 , 25737 , 8 , 92 , 1 , 1 ,
+559 , 25738 , 8 , 92 , 1 , 1 ,
+559 , 25739 , 8 , 92 , 1 , 1 ,
+559 , 25740 , 8 , 82 , 1 , 1 ,
+559 , 25741 , 8 , 92 , 1 , 1 ,
+559 , 25742 , 8 , 92 , 1 , 1 ,
+559 , 25743 , 8 , 92 , 1 , 1 ,
+559 , 25744 , 8 , 92 , 1 , 1 ,
+559 , 25745 , 8 , 82 , 1 , 1 ,
+559 , 25746 , 8 , 92 , 1 , 1 ,
+559 , 25747 , 6 , 92 , 1 , 1 ,
+559 , 25748 , 5 , 93 , 1 , 1 ,
+559 , 25749 , 5 , 92 , 1 , 1 ,
+559 , 25750 , 5 , 93 , 1 , 1 ,
+559 , 25751 , 5 , 82 , 1 , 1 ,
+559 , 25752 , 5 , 82 , 1 , 1 ,
+559 , 25753 , 5 , 82 , 1 , 1 ,
+559 , 25754 , 5 , 82 , 1 , 1 ,
+559 , 25755 , 5 , 82 , 1 , 1 ,
+559 , 25756 , 5 , 82 , 1 , 1 ,
+559 , 25757 , 3 , 82 , 1 , 1 ,
+559 , 25758 , 3 , 82 , 1 , 1 ,
+559 , 25759 , 3 , 82 , 1 , 1 ,
+559 , 25760 , 3 , 82 , 1 , 1 ,
+559 , 25761 , 3 , 82 , 1 , 1 ,
+559 , 25762 , 3 , 82 , 1 , 1 ,
+559 , 25763 , 3 , 82 , 1 , 1 ,
+559 , 25764 , 3 , 82 , 1 , 1 ,
+559 , 25765 , 3 , 82 , 1 , 1 ,
+559 , 25766 , 3 , 82 , 1 , 1 ,
+559 , 25767 , 470 , 92 , 1 , 1 , 25747 25752 25715 25693 25709 25683 25686 25744 25705 25759 25674 25753 25708 25716 25746 25711 25718 25726 25730 25761 25673 25682 25733 25750 25719 25763 25698 25691 25690 25754 25762 25675 25712 25677 25742 25695 25741 25694 25676 25757 25732 25727 25696 25729 25764 25751 25685 25701 25671 25687 25681 25714 25680 25737 25760 25672 25707 25689 25755 25734 25697 25692 25743 25670 25721 25720 25713 25710 25735 25731 25667 25740 25706 25745 25758 25723 25699 25684 25724 25704 25679 25736 25678 25668 25717 25756 25725 25722 25700 25702 25688 25766 25703 25748 25749 25765 25669 25728 25738 25739
+560 , 25768 , 1 , 11 , 1 , 1 ,
+560 , 25769 , 26 , 31 , 1 , 1 , 25768
+560 , 25770 , 25 , 31 , 1 , 1 , 25768
+560 , 25771 , 25 , 31 , 1 , 1 , 25768
+560 , 25772 , 25 , 31 , 1 , 1 , 25768
+560 , 25773 , 25 , 31 , 1 , 1 , 25768
+560 , 25774 , 25 , 31 , 1 , 1 , 25768
+560 , 25775 , 25 , 31 , 1 , 1 , 25768
+560 , 25776 , 24 , 31 , 1 , 1 , 25768
+560 , 25777 , 24 , 31 , 1 , 1 , 25768
+560 , 25778 , 24 , 31 , 1 , 1 , 25768
+560 , 25779 , 24 , 31 , 1 , 1 , 25768
+560 , 25780 , 24 , 31 , 1 , 1 , 25768
+560 , 25781 , 24 , 31 , 1 , 1 , 25768
+560 , 25782 , 24 , 31 , 1 , 1 , 25768
+560 , 25783 , 24 , 31 , 1 , 1 , 25768
+560 , 25784 , 24 , 31 , 1 , 1 , 25768
+560 , 25785 , 24 , 31 , 1 , 1 , 25768
+560 , 25786 , 24 , 31 , 1 , 1 , 25768
+560 , 25787 , 24 , 31 , 1 , 1 , 25768
+560 , 25788 , 70 , 0 , 1 , 1 , 25769 25772 25778 25787 25775 25779 25786 25784 25783 25774 25773 25785 25777 25770 25782 25780 25781 25776 25771
+560 , 25789 , 84 , 11 , 1 , 1 , 25788
+560 , 25790 , 84 , 11 , 1 , 1 , 25788
+560 , 25791 , 84 , 11 , 1 , 1 , 25788
+560 , 25792 , 84 , 11 , 1 , 1 , 25788
+560 , 25793 , 84 , 11 , 1 , 1 , 25788
+560 , 25794 , 84 , 11 , 1 , 1 , 25788
+560 , 25795 , 84 , 11 , 1 , 1 , 25788
+560 , 25796 , 84 , 11 , 1 , 1 , 25788
+560 , 25797 , 84 , 11 , 1 , 1 , 25788
+560 , 25798 , 83 , 11 , 1 , 1 , 25788
+560 , 25799 , 83 , 11 , 1 , 1 , 25788
+560 , 25800 , 83 , 11 , 1 , 1 , 25788
+560 , 25801 , 83 , 11 , 1 , 1 , 25788
+560 , 25802 , 83 , 11 , 1 , 1 , 25788
+560 , 25803 , 83 , 11 , 1 , 1 , 25788
+560 , 25804 , 83 , 11 , 1 , 1 , 25788
+560 , 25805 , 83 , 11 , 1 , 1 , 25788
+560 , 25806 , 83 , 11 , 1 , 1 , 25788
+560 , 25807 , 83 , 11 , 1 , 1 , 25788
+560 , 25808 , 109 , 0 , 1 , 1 , 25803 25804 25800 25798 25799 25790 25796 25797 25791 25795 25805 25806 25793 25789 25792 25801 25802 25807 25794
+561 , 25809 , 1 , 11 , 1 , 1 ,
+561 , 25810 , 138 , 41 , 1 , 1 , 25809
+561 , 25811 , 138 , 41 , 1 , 1 , 25809
+561 , 25812 , 136 , 41 , 1 , 1 , 25809
+561 , 25813 , 136 , 41 , 1 , 1 , 25809
+561 , 25814 , 136 , 41 , 1 , 1 , 25809
+561 , 25815 , 135 , 41 , 1 , 1 , 25809
+561 , 25816 , 135 , 41 , 1 , 1 , 25809
+561 , 25817 , 134 , 42 , 1 , 1 , 25809
+561 , 25818 , 134 , 52 , 1 , 1 , 25809
+561 , 25819 , 132 , 52 , 1 , 1 , 25809
+561 , 25820 , 132 , 52 , 1 , 1 , 25809
+561 , 25821 , 132 , 52 , 1 , 1 , 25809
+561 , 25822 , 130 , 52 , 1 , 1 , 25809
+561 , 25823 , 130 , 41 , 1 , 1 , 25809
+561 , 25824 , 130 , 52 , 1 , 1 , 25809
+561 , 25825 , 128 , 52 , 1 , 1 , 25809
+561 , 25826 , 127 , 87 , 1 , 1 , 25809
+561 , 25827 , 127 , 52 , 1 , 1 , 25809
+561 , 25828 , 126 , 87 , 1 , 1 , 25809
+561 , 25829 , 126 , 87 , 1 , 1 , 25809
+561 , 25830 , 126 , 52 , 1 , 1 , 25809
+561 , 25831 , 126 , 52 , 1 , 1 , 25809
+561 , 25832 , 126 , 52 , 1 , 1 , 25809
+561 , 25833 , 126 , 52 , 1 , 1 , 25809
+561 , 25834 , 125 , 41 , 1 , 1 , 25809
+561 , 25835 , 125 , 52 , 1 , 1 , 25809
+561 , 25836 , 125 , 41 , 1 , 1 , 25809
+561 , 25837 , 124 , 41 , 1 , 1 , 25809
+561 , 25838 , 123 , 31 , 1 , 1 , 25809
+561 , 25839 , 121 , 77 , 1 , 1 , 25809
+561 , 25840 , 144 , 41 , 1 , 1 , 25809
+561 , 25841 , 142 , 41 , 1 , 1 , 25809
+561 , 25842 , 138 , 41 , 1 , 1 , 25809
+561 , 25843 , 98 , 41 , 1 , 1 , 25809
+561 , 25844 , 98 , 41 , 1 , 1 , 25809
+561 , 25845 , 98 , 41 , 1 , 1 , 25809
+561 , 25846 , 98 , 41 , 1 , 1 , 25809
+561 , 25847 , 98 , 41 , 1 , 1 , 25809
+561 , 25848 , 98 , 41 , 1 , 1 , 25809
+561 , 25849 , 97 , 41 , 1 , 1 , 25809
+561 , 25850 , 97 , 41 , 1 , 1 , 25809
+561 , 25851 , 96 , 52 , 1 , 1 , 25809
+561 , 25852 , 96 , 52 , 1 , 1 , 25809
+561 , 25853 , 95 , 52 , 1 , 1 , 25809
+561 , 25854 , 95 , 52 , 1 , 1 , 25809
+561 , 25855 , 95 , 52 , 1 , 1 , 25809
+561 , 25856 , 95 , 41 , 1 , 1 , 25809
+561 , 25857 , 95 , 42 , 1 , 1 , 25809
+561 , 25858 , 95 , 52 , 1 , 1 , 25809
+561 , 25859 , 95 , 52 , 1 , 1 , 25809
+561 , 25860 , 95 , 41 , 1 , 1 , 25809
+561 , 25861 , 95 , 52 , 1 , 1 , 25809
+561 , 25862 , 95 , 62 , 1 , 1 , 25809
+561 , 25863 , 72 , 62 , 1 , 1 , 25809
+561 , 25864 , 71 , 62 , 1 , 1 , 25809
+561 , 25865 , 71 , 62 , 1 , 1 , 25809
+561 , 25866 , 71 , 62 , 1 , 1 , 25809
+561 , 25867 , 71 , 72 , 1 , 1 , 25809
+561 , 25868 , 71 , 72 , 1 , 1 , 25809
+561 , 25869 , 70 , 72 , 1 , 1 , 25809
+561 , 25870 , 69 , 73 , 1 , 1 , 25809
+561 , 25871 , 68 , 73 , 1 , 1 , 25809
+561 , 25872 , 68 , 73 , 1 , 1 , 25809
+561 , 25873 , 68 , 52 , 1 , 1 , 25809
+561 , 25874 , 67 , 32 , 1 , 1 , 25809
+561 , 25875 , 66 , 62 , 1 , 1 , 25809
+561 , 25876 , 66 , 62 , 1 , 1 , 25809
+561 , 25877 , 66 , 62 , 1 , 1 , 25809
+561 , 25878 , 65 , 62 , 1 , 1 , 25809
+561 , 25879 , 65 , 62 , 1 , 1 , 25809
+561 , 25880 , 64 , 62 , 1 , 1 , 25809
+561 , 25881 , 64 , 62 , 1 , 1 , 25809
+561 , 25882 , 64 , 52 , 1 , 1 , 25809
+561 , 25883 , 64 , 52 , 1 , 1 , 25809
+561 , 25884 , 63 , 62 , 1 , 1 , 25809
+561 , 25885 , 63 , 62 , 1 , 1 , 25809
+561 , 25886 , 63 , 41 , 1 , 1 , 25809
+561 , 25887 , 62 , 41 , 1 , 1 , 25809
+561 , 25888 , 62 , 41 , 1 , 1 , 25809
+561 , 25889 , 62 , 52 , 1 , 1 , 25809
+561 , 25890 , 60 , 41 , 1 , 1 , 25809
+561 , 25891 , 60 , 52 , 1 , 1 , 25809
+561 , 25892 , 60 , 52 , 1 , 1 , 25809
+561 , 25893 , 60 , 52 , 1 , 1 , 25809
+561 , 25894 , 59 , 41 , 1 , 1 , 25809
+561 , 25895 , 59 , 52 , 1 , 1 , 25809
+561 , 25896 , 59 , 41 , 1 , 1 , 25809
+561 , 25897 , 58 , 52 , 1 , 1 , 25809
+561 , 25898 , 58 , 52 , 1 , 1 , 25809
+561 , 25899 , 58 , 241 , 1 , 1 , 25809
+561 , 25900 , 58 , 241 , 1 , 1 , 25809
+561 , 25901 , 58 , 251 , 1 , 1 , 25809
+561 , 25902 , 58 , 240 , 1 , 1 , 25809
+561 , 25903 , 58 , 251 , 1 , 1 , 25809
+561 , 25904 , 58 , 241 , 1 , 1 , 25809
+561 , 25905 , 58 , 240 , 1 , 1 , 25809
+561 , 25906 , 58 , 262 , 1 , 1 , 25809
+561 , 25907 , 58 , 230 , 1 , 1 , 25809
+561 , 25908 , 58 , 251 , 1 , 1 , 25809
+561 , 25909 , 58 , 235 , 1 , 1 , 25809
+561 , 25910 , 58 , 235 , 1 , 1 , 25809
+561 , 25911 , 58 , 245 , 1 , 1 , 25809
+561 , 25912 , 58 , 235 , 1 , 1 , 25809
+561 , 25913 , 58 , 235 , 1 , 1 , 25809
+561 , 25914 , 58 , 246 , 1 , 1 , 25809
+561 , 25915 , 57 , 236 , 1 , 1 , 25809
+561 , 25916 , 57 , 236 , 1 , 1 , 25809
+561 , 25917 , 57 , 236 , 1 , 1 , 25809
+561 , 25918 , 57 , 246 , 1 , 1 , 25809
+561 , 25919 , 57 , 246 , 1 , 1 , 25809
+561 , 25920 , 57 , 236 , 1 , 1 , 25809
+561 , 25921 , 57 , 224 , 1 , 1 , 25809
+561 , 25922 , 57 , 246 , 1 , 1 , 25809
+561 , 25923 , 57 , 236 , 1 , 1 , 25809
+561 , 25924 , 57 , 246 , 1 , 1 , 25809
+561 , 25925 , 40 , 101 , 1 , 1 , 25809
+561 , 25926 , 40 , 78 , 1 , 1 , 25809
+561 , 25927 , 40 , 78 , 1 , 1 , 25809
+561 , 25928 , 40 , 74 , 1 , 1 , 25809
+561 , 25929 , 40 , 78 , 1 , 1 , 25809
+561 , 25930 , 40 , 111 , 1 , 1 , 25809
+561 , 25931 , 57 , 62 , 1 , 1 , 25809
+561 , 25932 , 56 , 62 , 1 , 1 , 25809
+561 , 25933 , 55 , 62 , 1 , 1 , 25809
+561 , 25934 , 55 , 62 , 1 , 1 , 25809
+561 , 25935 , 55 , 72 , 1 , 1 , 25809
+561 , 25936 , 54 , 52 , 1 , 1 , 25809
+561 , 25937 , 54 , 52 , 1 , 1 , 25809
+561 , 25938 , 54 , 52 , 1 , 1 , 25809
+561 , 25939 , 54 , 62 , 1 , 1 , 25809
+561 , 25940 , 54 , 62 , 1 , 1 , 25809
+561 , 25941 , 52 , 63 , 1 , 1 , 25809
+561 , 25942 , 52 , 62 , 1 , 1 , 25809
+561 , 25943 , 51 , 62 , 1 , 1 , 25809
+561 , 25944 , 51 , 52 , 1 , 1 , 25809
+561 , 25945 , 50 , 52 , 1 , 1 , 25809
+561 , 25946 , 50 , 52 , 1 , 1 , 25809
+561 , 25947 , 50 , 62 , 1 , 1 , 25809
+561 , 25948 , 50 , 62 , 1 , 1 , 25809
+561 , 25949 , 50 , 62 , 1 , 1 , 25809
+561 , 25950 , 49 , 62 , 1 , 1 , 25809
+561 , 25951 , 48 , 62 , 1 , 1 , 25809
+561 , 25952 , 47 , 52 , 1 , 1 , 25809
+561 , 25953 , 46 , 41 , 1 , 1 , 25809
+561 , 25954 , 46 , 52 , 1 , 1 , 25809
+561 , 25955 , 46 , 62 , 1 , 1 , 25809
+561 , 25956 , 46 , 62 , 1 , 1 , 25809
+561 , 25957 , 45 , 62 , 1 , 1 , 25809
+561 , 25958 , 45 , 52 , 1 , 1 , 25809
+561 , 25959 , 45 , 42 , 1 , 1 , 25809
+561 , 25960 , 45 , 41 , 1 , 1 , 25809
+561 , 25961 , 44 , 41 , 1 , 1 , 25809
+561 , 25962 , 43 , 42 , 1 , 1 , 25809
+561 , 25963 , 41 , 62 , 1 , 1 , 25809
+561 , 25964 , 41 , 62 , 1 , 1 , 25809
+561 , 25965 , 41 , 62 , 1 , 1 , 25809
+561 , 25966 , 41 , 52 , 1 , 1 , 25809
+561 , 25967 , 41 , 41 , 1 , 1 , 25809
+561 , 25968 , 41 , 41 , 1 , 1 , 25809
+561 , 25969 , 40 , 41 , 1 , 1 , 25809
+561 , 25970 , 39 , 41 , 1 , 1 , 25809
+561 , 25971 , 38 , 42 , 1 , 1 , 25809
+561 , 25972 , 37 , 41 , 1 , 1 , 25809
+561 , 25973 , 35 , 41 , 1 , 1 , 25809
+561 , 25974 , 35 , 41 , 1 , 1 , 25809
+561 , 25975 , 34 , 42 , 1 , 1 , 25809
+561 , 25976 , 34 , 52 , 1 , 1 , 25809
+561 , 25977 , 34 , 52 , 1 , 1 , 25809
+561 , 25978 , 34 , 52 , 1 , 1 , 25809
+561 , 25979 , 33 , 52 , 1 , 1 , 25809
+561 , 25980 , 32 , 52 , 1 , 1 , 25809
+561 , 25981 , 32 , 52 , 1 , 1 , 25809
+561 , 25982 , 31 , 52 , 1 , 1 , 25809
+561 , 25983 , 29 , 52 , 1 , 1 , 25809
+561 , 25984 , 29 , 52 , 1 , 1 , 25809
+561 , 25985 , 28 , 52 , 1 , 1 , 25809
+561 , 25986 , 28 , 52 , 1 , 1 , 25809
+561 , 25987 , 28 , 52 , 1 , 1 , 25809
+561 , 25988 , 28 , 52 , 1 , 1 , 25809
+561 , 25989 , 28 , 52 , 1 , 1 , 25809
+561 , 25990 , 26 , 52 , 1 , 1 , 25809
+561 , 25991 , 26 , 52 , 1 , 1 , 25809
+561 , 25992 , 25 , 41 , 1 , 1 , 25809
+561 , 25993 , 25 , 52 , 1 , 1 , 25809
+561 , 25994 , 25 , 62 , 1 , 1 , 25809
+561 , 25995 , 25 , 41 , 1 , 1 , 25809
+561 , 25996 , 25 , 52 , 1 , 1 , 25809
+561 , 25997 , 25 , 52 , 1 , 1 , 25809
+561 , 25998 , 25 , 41 , 1 , 1 , 25809
+561 , 25999 , 25 , 52 , 1 , 1 , 25809
+561 , 26000 , 25 , 52 , 1 , 1 , 25809
+561 , 26001 , 25 , 41 , 1 , 1 , 25809
+561 , 26002 , 25 , 41 , 1 , 1 , 25809
+561 , 26003 , 564 , 0 , 1 , 1 , 25867 25822 25948 25989 25828 25947 25943 25847 25833 25959 25865 25987 25969 25912 25872 25827 25918 25873 25879 25848 25863 25841 25938 26001 25843 25837 25915 25999 25880 25878 25885 25826 25965 25980 25835 25944 25895 25824 25814 25888 25903 25861 25842 25839 25988 25998 25893 25919 25886 25909 25929 25939 25990 25920 25917 25995 25926 25992 25905 25937 25859 25940 25829 25853 25964 25815 25819 25985 25953 25997 25890 25971 25927 25970 25834 25994 25963 25887 25911 25875 25935 25908 25845 25975 25857 25823 25881 25899 25945 25984 25851 25951 25811 25923 25930 25870 25840 25954 25812 25902 25838 25962 25862 25901 25952 25928 25946 25864 25958 25983 25897 25892 25957 25986 25922 25871 25956 25846 25921 25976 25993 25831 25966 25884 25821 25981 25810 25866 25860 25891 25941 25900 25967 25898 25904 25977 25854 25925 25817 25949 25906 25932 25877 25858 25894 25856 25896 25850 25978 25869 25836 25820 25825 25868 25936 25844 25882 25934 25974 25874 25852 25996 25816 25830 25914 25955 25950 25910 25991 25813 25876 25960 25942 25961 25913 25973 25907 25972 26000 26002 25889 25933 25924 25979 25855 25982 25849 25968 25883 25818 25916 25931 25832
+561 , 26004 , 648 , 41 , 1 , 1 , 26003
+561 , 26005 , 647 , 41 , 1 , 1 , 26003
+561 , 26006 , 640 , 41 , 1 , 1 , 26003
+561 , 26007 , 640 , 41 , 1 , 1 , 26003
+561 , 26008 , 640 , 41 , 1 , 1 , 26003
+561 , 26009 , 640 , 41 , 1 , 1 , 26003
+561 , 26010 , 639 , 41 , 1 , 1 , 26003
+561 , 26011 , 639 , 41 , 1 , 1 , 26003
+561 , 26012 , 639 , 41 , 1 , 1 , 26003
+561 , 26013 , 635 , 52 , 1 , 1 , 26003
+561 , 26014 , 635 , 52 , 1 , 1 , 26003
+561 , 26015 , 635 , 41 , 1 , 1 , 26003
+561 , 26016 , 635 , 41 , 1 , 1 , 26003
+561 , 26017 , 635 , 41 , 1 , 1 , 26003
+561 , 26018 , 635 , 41 , 1 , 1 , 26003
+561 , 26019 , 635 , 41 , 1 , 1 , 26003
+561 , 26020 , 643 , 41 , 1 , 1 , 26003
+561 , 26021 , 635 , 41 , 1 , 1 , 26003
+561 , 26022 , 642 , 41 , 1 , 1 , 26003
+561 , 26023 , 640 , 41 , 1 , 1 , 26003
+561 , 26024 , 635 , 41 , 1 , 1 , 26003
+561 , 26025 , 635 , 41 , 1 , 1 , 26003
+561 , 26026 , 637 , 11 , 1 , 1 , 26003
+561 , 26027 , 637 , 11 , 1 , 1 , 26003
+561 , 26028 , 633 , 11 , 1 , 1 , 26003
+561 , 26029 , 632 , 12 , 1 , 1 , 26003
+561 , 26030 , 631 , 11 , 1 , 1 , 26003
+561 , 26031 , 626 , 41 , 1 , 1 , 26003
+561 , 26032 , 626 , 52 , 1 , 1 , 26003
+561 , 26033 , 629 , 52 , 1 , 1 , 26003
+561 , 26034 , 624 , 41 , 1 , 1 , 26003
+561 , 26035 , 624 , 52 , 1 , 1 , 26003
+561 , 26036 , 624 , 41 , 1 , 1 , 26003
+561 , 26037 , 624 , 41 , 1 , 1 , 26003
+561 , 26038 , 652 , 32 , 1 , 1 , 26003
+561 , 26039 , 659 , 32 , 1 , 1 , 26003
+561 , 26040 , 659 , 32 , 1 , 1 , 26003
+561 , 26041 , 654 , 32 , 1 , 1 , 26003
+561 , 26042 , 665 , 32 , 1 , 1 , 26003
+561 , 26043 , 648 , 32 , 1 , 1 , 26003
+561 , 26044 , 645 , 41 , 1 , 1 , 26003
+561 , 26045 , 648 , 11 , 1 , 1 , 26003
+561 , 26046 , 646 , 21 , 1 , 1 , 26003
+561 , 26047 , 666 , 21 , 1 , 1 , 26003
+561 , 26048 , 652 , 31 , 1 , 1 , 26003
+561 , 26049 , 668 , 11 , 1 , 1 , 26003
+561 , 26050 , 652 , 41 , 1 , 1 , 26003
+561 , 26051 , 660 , 11 , 1 , 1 , 26003
+561 , 26052 , 645 , 21 , 1 , 1 , 26003
+561 , 26053 , 645 , 21 , 1 , 1 , 26003
+561 , 26054 , 651 , 41 , 1 , 1 , 26003
+561 , 26055 , 655 , 31 , 1 , 1 , 26003
+561 , 26056 , 676 , 21 , 1 , 1 , 26003
+561 , 26057 , 655 , 41 , 1 , 1 , 26003
+561 , 26058 , 671 , 21 , 1 , 1 , 26003
+561 , 26059 , 675 , 22 , 1 , 1 , 26003
+561 , 26060 , 676 , 21 , 1 , 1 , 26003
+561 , 26061 , 662 , 31 , 1 , 1 , 26003
+561 , 26062 , 673 , 21 , 1 , 1 , 26003
+561 , 26063 , 675 , 22 , 1 , 1 , 26003
+561 , 26064 , 671 , 21 , 1 , 1 , 26003
+561 , 26065 , 672 , 21 , 1 , 1 , 26003
+561 , 26066 , 662 , 31 , 1 , 1 , 26003
+561 , 26067 , 662 , 31 , 1 , 1 , 26003
+561 , 26068 , 675 , 11 , 1 , 1 , 26003
+561 , 26069 , 659 , 31 , 1 , 1 , 26003
+561 , 26070 , 659 , 31 , 1 , 1 , 26003
+561 , 26071 , 659 , 31 , 1 , 1 , 26003
+561 , 26072 , 659 , 32 , 1 , 1 , 26003
+561 , 26073 , 658 , 32 , 1 , 1 , 26003
+561 , 26074 , 658 , 31 , 1 , 1 , 26003
+561 , 26075 , 655 , 31 , 1 , 1 , 26003
+561 , 26076 , 655 , 32 , 1 , 1 , 26003
+561 , 26077 , 667 , 21 , 1 , 1 , 26003
+561 , 26078 , 681 , 22 , 1 , 1 , 26003
+561 , 26079 , 667 , 21 , 1 , 1 , 26003
+561 , 26080 , 668 , 21 , 1 , 1 , 26003
+561 , 26081 , 664 , 11 , 1 , 1 , 26003
+561 , 26082 , 651 , 41 , 1 , 1 , 26003
+561 , 26083 , 656 , 11 , 1 , 1 , 26003
+561 , 26084 , 651 , 42 , 1 , 1 , 26003
+561 , 26085 , 656 , 12 , 1 , 1 , 26003
+561 , 26086 , 648 , 41 , 1 , 1 , 26003
+561 , 26087 , 648 , 41 , 1 , 1 , 26003
+561 , 26088 , 624 , 41 , 1 , 1 , 26003
+561 , 26089 , 624 , 41 , 1 , 1 , 26003
+561 , 26090 , 624 , 41 , 1 , 1 , 26003
+561 , 26091 , 624 , 41 , 1 , 1 , 26003
+561 , 26092 , 622 , 41 , 1 , 1 , 26003
+561 , 26093 , 619 , 12 , 1 , 1 , 26003
+561 , 26094 , 614 , 52 , 1 , 1 , 26003
+561 , 26095 , 615 , 13 , 1 , 1 , 26003
+561 , 26096 , 611 , 11 , 1 , 1 , 26003
+561 , 26097 , 611 , 11 , 1 , 1 , 26003
+561 , 26098 , 611 , 21 , 1 , 1 , 26003
+561 , 26099 , 611 , 21 , 1 , 1 , 26003
+561 , 26100 , 611 , 32 , 1 , 1 , 26003
+561 , 26101 , 611 , 32 , 1 , 1 , 26003
+561 , 26102 , 611 , 32 , 1 , 1 , 26003
+561 , 26103 , 611 , 32 , 1 , 1 , 26003
+561 , 26104 , 611 , 21 , 1 , 1 , 26003
+561 , 26105 , 611 , 32 , 1 , 1 , 26003
+561 , 26106 , 611 , 32 , 1 , 1 , 26003
+561 , 26107 , 611 , 21 , 1 , 1 , 26003
+561 , 26108 , 607 , 44 , 1 , 1 , 26003
+561 , 26109 , 606 , 44 , 1 , 1 , 26003
+561 , 26110 , 606 , 44 , 1 , 1 , 26003
+561 , 26111 , 605 , 36 , 1 , 1 , 26003
+561 , 26112 , 606 , 35 , 1 , 1 , 26003
+561 , 26113 , 606 , 35 , 1 , 1 , 26003
+561 , 26114 , 605 , 36 , 1 , 1 , 26003
+561 , 26115 , 606 , 35 , 1 , 1 , 26003
+561 , 26116 , 605 , 36 , 1 , 1 , 26003
+561 , 26117 , 605 , 36 , 1 , 1 , 26003
+561 , 26118 , 608 , 42 , 1 , 1 , 26003
+561 , 26119 , 605 , 24 , 1 , 1 , 26003
+561 , 26120 , 605 , 24 , 1 , 1 , 26003
+561 , 26121 , 605 , 24 , 1 , 1 , 26003
+561 , 26122 , 605 , 24 , 1 , 1 , 26003
+561 , 26123 , 611 , 32 , 1 , 1 , 26003
+561 , 26124 , 594 , 11 , 1 , 1 , 26003
+561 , 26125 , 601 , 12 , 1 , 1 , 26003
+561 , 26126 , 629 , 11 , 1 , 1 , 26003
+561 , 26127 , 612 , 12 , 1 , 1 , 26003
+561 , 26128 , 598 , 11 , 1 , 1 , 26003
+561 , 26129 , 586 , 11 , 1 , 1 , 26003
+561 , 26130 , 601 , 52 , 1 , 1 , 26003
+561 , 26131 , 601 , 62 , 1 , 1 , 26003
+561 , 26132 , 600 , 52 , 1 , 1 , 26003
+561 , 26133 , 600 , 52 , 1 , 1 , 26003
+561 , 26134 , 600 , 52 , 1 , 1 , 26003
+561 , 26135 , 600 , 42 , 1 , 1 , 26003
+561 , 26136 , 600 , 42 , 1 , 1 , 26003
+561 , 26137 , 597 , 53 , 1 , 1 , 26003
+561 , 26138 , 597 , 53 , 1 , 1 , 26003
+561 , 26139 , 597 , 53 , 1 , 1 , 26003
+561 , 26140 , 597 , 52 , 1 , 1 , 26003
+561 , 26141 , 596 , 52 , 1 , 1 , 26003
+561 , 26142 , 596 , 41 , 1 , 1 , 26003
+561 , 26143 , 596 , 52 , 1 , 1 , 26003
+561 , 26144 , 596 , 52 , 1 , 1 , 26003
+561 , 26145 , 596 , 52 , 1 , 1 , 26003
+561 , 26146 , 596 , 52 , 1 , 1 , 26003
+561 , 26147 , 593 , 52 , 1 , 1 , 26003
+561 , 26148 , 593 , 52 , 1 , 1 , 26003
+561 , 26149 , 593 , 52 , 1 , 1 , 26003
+561 , 26150 , 593 , 52 , 1 , 1 , 26003
+561 , 26151 , 593 , 41 , 1 , 1 , 26003
+561 , 26152 , 593 , 52 , 1 , 1 , 26003
+561 , 26153 , 593 , 41 , 1 , 1 , 26003
+561 , 26154 , 592 , 41 , 1 , 1 , 26003
+561 , 26155 , 592 , 52 , 1 , 1 , 26003
+561 , 26156 , 592 , 41 , 1 , 1 , 26003
+561 , 26157 , 589 , 52 , 1 , 1 , 26003
+561 , 26158 , 589 , 42 , 1 , 1 , 26003
+561 , 26159 , 589 , 52 , 1 , 1 , 26003
+561 , 26160 , 589 , 41 , 1 , 1 , 26003
+561 , 26161 , 589 , 42 , 1 , 1 , 26003
+561 , 26162 , 589 , 42 , 1 , 1 , 26003
+561 , 26163 , 589 , 41 , 1 , 1 , 26003
+561 , 26164 , 588 , 42 , 1 , 1 , 26003
+561 , 26165 , 588 , 41 , 1 , 1 , 26003
+561 , 26166 , 588 , 42 , 1 , 1 , 26003
+561 , 26167 , 584 , 52 , 1 , 1 , 26003
+561 , 26168 , 584 , 52 , 1 , 1 , 26003
+561 , 26169 , 584 , 42 , 1 , 1 , 26003
+561 , 26170 , 584 , 52 , 1 , 1 , 26003
+561 , 26171 , 584 , 42 , 1 , 1 , 26003
+561 , 26172 , 584 , 41 , 1 , 1 , 26003
+561 , 26173 , 584 , 41 , 1 , 1 , 26003
+561 , 26174 , 584 , 41 , 1 , 1 , 26003
+561 , 26175 , 584 , 41 , 1 , 1 , 26003
+561 , 26176 , 583 , 52 , 1 , 1 , 26003
+561 , 26177 , 581 , 41 , 1 , 1 , 26003
+561 , 26178 , 581 , 41 , 1 , 1 , 26003
+561 , 26179 , 581 , 31 , 1 , 1 , 26003
+561 , 26180 , 581 , 41 , 1 , 1 , 26003
+561 , 26181 , 581 , 31 , 1 , 1 , 26003
+561 , 26182 , 581 , 41 , 1 , 1 , 26003
+561 , 26183 , 581 , 41 , 1 , 1 , 26003
+561 , 26184 , 581 , 41 , 1 , 1 , 26003
+561 , 26185 , 580 , 41 , 1 , 1 , 26003
+561 , 26186 , 580 , 31 , 1 , 1 , 26003
+561 , 26187 , 579 , 32 , 1 , 1 , 26003
+561 , 26188 , 579 , 32 , 1 , 1 , 26003
+561 , 26189 , 579 , 32 , 1 , 1 , 26003
+561 , 26190 , 579 , 32 , 1 , 1 , 26003
+561 , 26191 , 579 , 21 , 1 , 1 , 26003
+561 , 26192 , 579 , 32 , 1 , 1 , 26003
+561 , 26193 , 579 , 32 , 1 , 1 , 26003
+561 , 26194 , 579 , 33 , 1 , 1 , 26003
+561 , 26195 , 578 , 32 , 1 , 1 , 26003
+561 , 26196 , 578 , 31 , 1 , 1 , 26003
+561 , 26197 , 749 , 21 , 1 , 1 , 26040 26166 26121 26126 26086 26100 26088 26123 26081 26008 26101 26167 26142 26164 26122 26005 26154 26182 26119 26013 26112 26039 26151 26068 26099 26174 26152 26097 26141 26012 26044 26036 26185 26092 26138 26078 26018 26191 26023 26047 26131 26046 26071 26062 26177 26004 26161 26084 26150 26065 26067 26063 26022 26028 26017 26045 26075 26195 26026 26148 26120 26125 26194 26144 26057 26066 26050 26104 26118 26077 26033 26136 26134 26115 26176 26025 26111 26058 26178 26169 26090 26156 26048 26091 26064 26031 26137 26051 26175 26135 26089 26143 26098 26038 26085 26061 26010 26108 26158 26074 26172 26019 26035 26157 26128 26196 26146 26153 26014 26015 26117 26116 26183 26059 26037 26083 26162 26173 26021 26087 26016 26160 26188 26042 26060 26043 26127 26069 26179 26130 26007 26140 26133 26124 26105 26171 26053 26076 26070 26034 26094 26055 26030 26163 26114 26180 26184 26082 26168 26096 26006 26145 26132 26095 26187 26027 26192 26009 26106 26056 26165 26147 26110 26181 26139 26155 26149 26072 26080 26189 26029 26093 26193 26052 26186 26190 26020 26129 26159 26054 26024 26102 26113 26049 26032 26107 26109 26073 26041 26079 26011 26170 26103
+562 , 26198 , 99 , 41 , 1 , 1 ,
+562 , 26199 , 98 , 62 , 1 , 1 ,
+562 , 26200 , 96 , 41 , 1 , 1 ,
+562 , 26201 , 95 , 52 , 1 , 1 ,
+562 , 26202 , 64 , 52 , 1 , 1 ,
+562 , 26203 , 95 , 41 , 1 , 1 ,
+562 , 26204 , 94 , 41 , 1 , 1 ,
+562 , 26205 , 93 , 32 , 1 , 1 ,
+562 , 26206 , 93 , 41 , 1 , 1 ,
+562 , 26207 , 93 , 41 , 1 , 1 ,
+562 , 26208 , 92 , 41 , 1 , 1 ,
+562 , 26209 , 92 , 32 , 1 , 1 ,
+562 , 26210 , 92 , 32 , 1 , 1 ,
+562 , 26211 , 91 , 42 , 1 , 1 ,
+562 , 26212 , 90 , 43 , 1 , 1 ,
+562 , 26213 , 89 , 41 , 1 , 1 ,
+562 , 26214 , 89 , 41 , 1 , 1 ,
+562 , 26215 , 89 , 41 , 1 , 1 ,
+562 , 26216 , 88 , 33 , 1 , 1 ,
+562 , 26217 , 88 , 52 , 1 , 1 ,
+562 , 26218 , 63 , 52 , 1 , 1 ,
+562 , 26219 , 62 , 52 , 1 , 1 ,
+562 , 26220 , 61 , 52 , 1 , 1 ,
+562 , 26221 , 61 , 52 , 1 , 1 ,
+562 , 26222 , 61 , 82 , 1 , 1 ,
+562 , 26223 , 61 , 62 , 1 , 1 ,
+562 , 26224 , 61 , 52 , 1 , 1 ,
+562 , 26225 , 61 , 52 , 1 , 1 ,
+562 , 26226 , 60 , 52 , 1 , 1 ,
+562 , 26227 , 87 , 41 , 1 , 1 ,
+562 , 26228 , 87 , 41 , 1 , 1 ,
+562 , 26229 , 86 , 52 , 1 , 1 ,
+562 , 26230 , 86 , 52 , 1 , 1 ,
+562 , 26231 , 85 , 52 , 1 , 1 ,
+562 , 26232 , 85 , 52 , 1 , 1 ,
+562 , 26233 , 82 , 52 , 1 , 1 ,
+562 , 26234 , 81 , 72 , 1 , 1 ,
+562 , 26235 , 80 , 52 , 1 , 1 ,
+562 , 26236 , 80 , 52 , 1 , 1 ,
+562 , 26237 , 78 , 52 , 1 , 1 ,
+562 , 26238 , 119 , 31 , 1 , 1 ,
+562 , 26239 , 119 , 31 , 1 , 1 ,
+562 , 26240 , 119 , 31 , 1 , 1 ,
+562 , 26241 , 119 , 31 , 1 , 1 ,
+562 , 26242 , 119 , 31 , 1 , 1 ,
+562 , 26243 , 119 , 31 , 1 , 1 ,
+562 , 26244 , 119 , 31 , 1 , 1 ,
+562 , 26245 , 118 , 32 , 1 , 1 ,
+562 , 26246 , 118 , 41 , 1 , 1 ,
+562 , 26247 , 116 , 41 , 1 , 1 ,
+562 , 26248 , 115 , 41 , 1 , 1 ,
+562 , 26249 , 64 , 41 , 1 , 1 ,
+562 , 26250 , 64 , 93 , 1 , 1 ,
+562 , 26251 , 64 , 63 , 1 , 1 ,
+562 , 26252 , 63 , 62 , 1 , 1 ,
+562 , 26253 , 115 , 41 , 1 , 1 ,
+562 , 26254 , 115 , 31 , 1 , 1 ,
+562 , 26255 , 115 , 41 , 1 , 1 ,
+562 , 26256 , 115 , 41 , 1 , 1 ,
+562 , 26257 , 115 , 53 , 1 , 1 ,
+562 , 26258 , 114 , 41 , 1 , 1 ,
+562 , 26259 , 114 , 41 , 1 , 1 ,
+562 , 26260 , 114 , 41 , 1 , 1 ,
+562 , 26261 , 113 , 41 , 1 , 1 ,
+562 , 26262 , 113 , 41 , 1 , 1 ,
+562 , 26263 , 113 , 41 , 1 , 1 ,
+562 , 26264 , 113 , 52 , 1 , 1 ,
+562 , 26265 , 112 , 52 , 1 , 1 ,
+562 , 26266 , 112 , 52 , 1 , 1 ,
+562 , 26267 , 111 , 52 , 1 , 1 ,
+562 , 26268 , 111 , 52 , 1 , 1 ,
+562 , 26269 , 110 , 52 , 1 , 1 ,
+562 , 26270 , 105 , 52 , 1 , 1 ,
+562 , 26271 , 103 , 52 , 1 , 1 ,
+562 , 26272 , 78 , 82 , 1 , 1 ,
+562 , 26273 , 78 , 82 , 1 , 1 ,
+562 , 26274 , 77 , 82 , 1 , 1 ,
+562 , 26275 , 77 , 52 , 1 , 1 ,
+562 , 26276 , 77 , 52 , 1 , 1 ,
+562 , 26277 , 74 , 52 , 1 , 1 ,
+562 , 26278 , 63 , 41 , 1 , 1 ,
+562 , 26279 , 67 , 52 , 1 , 1 ,
+562 , 26280 , 66 , 62 , 1 , 1 ,
+562 , 26281 , 64 , 52 , 1 , 1 ,
+562 , 26282 , 102 , 43 , 1 , 1 ,
+562 , 26283 , 100 , 43 , 1 , 1 ,
+562 , 26284 , 100 , 41 , 1 , 1 ,
+562 , 26285 , 60 , 42 , 1 , 1 ,
+562 , 26286 , 60 , 73 , 1 , 1 ,
+562 , 26287 , 54 , 33 , 1 , 1 ,
+562 , 26288 , 53 , 33 , 1 , 1 ,
+562 , 26289 , 53 , 33 , 1 , 1 ,
+562 , 26290 , 51 , 43 , 1 , 1 ,
+562 , 26291 , 51 , 31 , 1 , 1 ,
+562 , 26292 , 50 , 43 , 1 , 1 ,
+562 , 26293 , 49 , 32 , 1 , 1 ,
+562 , 26294 , 18 , 115 , 1 , 1 ,
+562 , 26295 , 18 , 115 , 1 , 1 ,
+562 , 26296 , 18 , 105 , 1 , 1 ,
+562 , 26297 , 18 , 105 , 1 , 1 ,
+562 , 26298 , 18 , 105 , 1 , 1 ,
+562 , 26299 , 18 , 94 , 1 , 1 ,
+562 , 26300 , 18 , 94 , 1 , 1 ,
+562 , 26301 , 18 , 105 , 1 , 1 ,
+562 , 26302 , 18 , 105 , 1 , 1 ,
+562 , 26303 , 18 , 105 , 1 , 1 ,
+562 , 26304 , 12 , 224 , 1 , 1 ,
+562 , 26305 , 12 , 223 , 1 , 1 ,
+562 , 26306 , 12 , 223 , 1 , 1 ,
+562 , 26307 , 12 , 234 , 1 , 1 ,
+562 , 26308 , 12 , 233 , 1 , 1 ,
+562 , 26309 , 12 , 234 , 1 , 1 ,
+562 , 26310 , 11 , 224 , 1 , 1 ,
+562 , 26311 , 11 , 223 , 1 , 1 ,
+562 , 26312 , 11 , 213 , 1 , 1 ,
+562 , 26313 , 11 , 213 , 1 , 1 ,
+562 , 26314 , 11 , 214 , 1 , 1 ,
+562 , 26315 , 11 , 203 , 1 , 1 ,
+562 , 26316 , 11 , 203 , 1 , 1 ,
+562 , 26317 , 11 , 203 , 1 , 1 ,
+562 , 26318 , 11 , 193 , 1 , 1 ,
+562 , 26319 , 11 , 193 , 1 , 1 ,
+562 , 26320 , 11 , 33 , 1 , 1 ,
+562 , 26321 , 11 , 36 , 1 , 1 ,
+562 , 26322 , 11 , 35 , 1 , 1 ,
+562 , 26323 , 11 , 33 , 1 , 1 ,
+562 , 26324 , 11 , 33 , 1 , 1 ,
+562 , 26325 , 11 , 35 , 1 , 1 ,
+562 , 26326 , 30 , 72 , 1 , 1 ,
+562 , 26327 , 30 , 72 , 1 , 1 ,
+562 , 26328 , 29 , 72 , 1 , 1 ,
+562 , 26329 , 28 , 72 , 1 , 1 ,
+562 , 26330 , 28 , 72 , 1 , 1 ,
+562 , 26331 , 27 , 72 , 1 , 1 ,
+562 , 26332 , 27 , 52 , 1 , 1 ,
+562 , 26333 , 26 , 72 , 1 , 1 ,
+562 , 26334 , 26 , 72 , 1 , 1 ,
+562 , 26335 , 26 , 73 , 1 , 1 ,
+562 , 26336 , 25 , 72 , 1 , 1 ,
+562 , 26337 , 25 , 72 , 1 , 1 ,
+562 , 26338 , 24 , 72 , 1 , 1 ,
+562 , 26339 , 24 , 72 , 1 , 1 ,
+562 , 26340 , 24 , 62 , 1 , 1 ,
+562 , 26341 , 23 , 62 , 1 , 1 ,
+562 , 26342 , 23 , 52 , 1 , 1 ,
+562 , 26343 , 23 , 52 , 1 , 1 ,
+562 , 26344 , 23 , 52 , 1 , 1 ,
+562 , 26345 , 22 , 82 , 1 , 1 ,
+562 , 26346 , 22 , 52 , 1 , 1 ,
+562 , 26347 , 22 , 62 , 1 , 1 ,
+562 , 26348 , 20 , 52 , 1 , 1 ,
+562 , 26349 , 20 , 62 , 1 , 1 ,
+562 , 26350 , 20 , 52 , 1 , 1 ,
+562 , 26351 , 20 , 52 , 1 , 1 ,
+562 , 26352 , 19 , 82 , 1 , 1 ,
+562 , 26353 , 19 , 62 , 1 , 1 ,
+562 , 26354 , 19 , 72 , 1 , 1 ,
+562 , 26355 , 18 , 52 , 1 , 1 ,
+562 , 26356 , 18 , 62 , 1 , 1 ,
+562 , 26357 , 18 , 62 , 1 , 1 ,
+562 , 26358 , 17 , 52 , 1 , 1 ,
+562 , 26359 , 16 , 82 , 1 , 1 ,
+562 , 26360 , 16 , 72 , 1 , 1 ,
+562 , 26361 , 16 , 62 , 1 , 1 ,
+562 , 26362 , 15 , 52 , 1 , 1 ,
+562 , 26363 , 15 , 62 , 1 , 1 ,
+562 , 26364 , 15 , 52 , 1 , 1 ,
+562 , 26365 , 15 , 52 , 1 , 1 ,
+562 , 26366 , 15 , 82 , 1 , 1 ,
+562 , 26367 , 14 , 62 , 1 , 1 ,
+562 , 26368 , 12 , 62 , 1 , 1 ,
+562 , 26369 , 12 , 52 , 1 , 1 ,
+562 , 26370 , 12 , 52 , 1 , 1 ,
+562 , 26371 , 11 , 52 , 1 , 1 ,
+562 , 26372 , 11 , 41 , 1 , 1 ,
+562 , 26373 , 11 , 52 , 1 , 1 ,
+562 , 26374 , 11 , 62 , 1 , 1 ,
+562 , 26375 , 10 , 52 , 1 , 1 ,
+562 , 26376 , 10 , 52 , 1 , 1 ,
+562 , 26377 , 10 , 41 , 1 , 1 ,
+562 , 26378 , 9 , 41 , 1 , 1 ,
+562 , 26379 , 9 , 41 , 1 , 1 ,
+562 , 26380 , 9 , 41 , 1 , 1 ,
+562 , 26381 , 9 , 41 , 1 , 1 ,
+562 , 26382 , 9 , 42 , 1 , 1 ,
+562 , 26383 , 9 , 52 , 1 , 1 ,
+562 , 26384 , 8 , 42 , 1 , 1 ,
+562 , 26385 , 8 , 42 , 1 , 1 ,
+562 , 26386 , 8 , 42 , 1 , 1 ,
+562 , 26387 , 8 , 41 , 1 , 1 ,
+562 , 26388 , 7 , 41 , 1 , 1 ,
+562 , 26389 , 7 , 41 , 1 , 1 ,
+562 , 26390 , 7 , 41 , 1 , 1 ,
+562 , 26391 , 7 , 31 , 1 , 1 ,
+562 , 26392 , 7 , 41 , 1 , 1 ,
+562 , 26393 , 7 , 41 , 1 , 1 ,
+562 , 26394 , 7 , 41 , 1 , 1 ,
+562 , 26395 , 7 , 41 , 1 , 1 ,
+562 , 26396 , 7 , 41 , 1 , 1 ,
+562 , 26397 , 7 , 41 , 1 , 1 ,
+562 , 26398 , 266 , 72 , 1 , 1 , 26234 26265 26263 26378 26333 26260 26327 26276 26303 26389 26236 26297 26247 26217 26324 26293 26338 26371 26298 26209 26290 26258 26394 26365 26261 26254 26358 26218 26259 26360 26364 26380 26299 26372 26220 26305 26281 26301 26370 26379 26200 26385 26334 26354 26368 26285 26296 26391 26245 26282 26233 26362 26375 26256 26346 26395 26242 26225 26237 26387 26357 26329 26204 26224 26302 26341 26322 26307 26317 26267 26335 26373 26277 26273 26243 26336 26392 26227 26308 26206 26311 26337 26268 26306 26397 26241 26238 26270 26309 26339 26381 26320 26198 26315 26369 26208 26205 26312 26289 26262 26210 26221 26271 26235 26393 26291 26279 26359 26288 26255 26275 26264 26219 26251 26350 26363 26366 26328 26272 26283 26266 26374 26249 26244 26349 26318 26347 26253 26377 26199 26239 26274 26230 26269 26314 26226 26383 26278 26313 26331 26292 26203 26211 26390 26229 26325 26246 26286 26214 26353 26250 26252 26376 26231 26332 26348 26361 26388 26284 26386 26257 26222 26367 26355 26202 26351 26295 26396 26280 26310 26343 26216 26345 26323 26228 26340 26213 26356 26342 26316 26215 26304 26287 26352 26321 26248 26207 26201 26319 26240 26294 26382 26223 26300 26232 26212 26344 26384 26330 26326
+563 , 26399 , 84 , 21 , 1 , 1 ,
+563 , 26400 , 83 , 31 , 1 , 1 ,
+563 , 26401 , 83 , 52 , 1 , 1 ,
+563 , 26402 , 82 , 52 , 1 , 1 ,
+563 , 26403 , 80 , 31 , 1 , 1 ,
+563 , 26404 , 73 , 31 , 1 , 1 ,
+563 , 26405 , 72 , 31 , 1 , 1 ,
+563 , 26406 , 71 , 31 , 1 , 1 ,
+563 , 26407 , 70 , 31 , 1 , 1 ,
+563 , 26408 , 61 , 41 , 1 , 1 ,
+563 , 26409 , 123 , 32 , 1 , 1 ,
+563 , 26410 , 122 , 32 , 1 , 1 ,
+563 , 26411 , 122 , 32 , 1 , 1 ,
+563 , 26412 , 121 , 31 , 1 , 1 ,
+563 , 26413 , 121 , 31 , 1 , 1 ,
+563 , 26414 , 121 , 31 , 1 , 1 ,
+563 , 26415 , 120 , 31 , 1 , 1 ,
+563 , 26416 , 120 , 32 , 1 , 1 ,
+563 , 26417 , 120 , 32 , 1 , 1 ,
+563 , 26418 , 119 , 31 , 1 , 1 ,
+563 , 26419 , 119 , 41 , 1 , 1 ,
+563 , 26420 , 118 , 41 , 1 , 1 ,
+563 , 26421 , 118 , 41 , 1 , 1 ,
+563 , 26422 , 118 , 41 , 1 , 1 ,
+563 , 26423 , 118 , 41 , 1 , 1 ,
+563 , 26424 , 118 , 41 , 1 , 1 ,
+563 , 26425 , 117 , 41 , 1 , 1 ,
+563 , 26426 , 117 , 41 , 1 , 1 ,
+563 , 26427 , 117 , 41 , 1 , 1 ,
+563 , 26428 , 116 , 41 , 1 , 1 ,
+563 , 26429 , 116 , 41 , 1 , 1 ,
+563 , 26430 , 115 , 42 , 1 , 1 ,
+563 , 26431 , 115 , 41 , 1 , 1 ,
+563 , 26432 , 115 , 41 , 1 , 1 ,
+563 , 26433 , 115 , 41 , 1 , 1 ,
+563 , 26434 , 115 , 41 , 1 , 1 ,
+563 , 26435 , 114 , 41 , 1 , 1 ,
+563 , 26436 , 114 , 41 , 1 , 1 ,
+563 , 26437 , 114 , 52 , 1 , 1 ,
+563 , 26438 , 114 , 52 , 1 , 1 ,
+563 , 26439 , 114 , 41 , 1 , 1 ,
+563 , 26440 , 113 , 52 , 1 , 1 ,
+563 , 26441 , 112 , 52 , 1 , 1 ,
+563 , 26442 , 112 , 52 , 1 , 1 ,
+563 , 26443 , 111 , 52 , 1 , 1 ,
+563 , 26444 , 111 , 52 , 1 , 1 ,
+563 , 26445 , 111 , 41 , 1 , 1 ,
+563 , 26446 , 111 , 41 , 1 , 1 ,
+563 , 26447 , 111 , 52 , 1 , 1 ,
+563 , 26448 , 111 , 31 , 1 , 1 ,
+563 , 26449 , 111 , 31 , 1 , 1 ,
+563 , 26450 , 110 , 41 , 1 , 1 ,
+563 , 26451 , 110 , 41 , 1 , 1 ,
+563 , 26452 , 110 , 41 , 1 , 1 ,
+563 , 26453 , 105 , 31 , 1 , 1 ,
+563 , 26454 , 100 , 41 , 1 , 1 ,
+563 , 26455 , 100 , 41 , 1 , 1 ,
+563 , 26456 , 98 , 42 , 1 , 1 ,
+563 , 26457 , 98 , 42 , 1 , 1 ,
+563 , 26458 , 97 , 41 , 1 , 1 ,
+563 , 26459 , 94 , 42 , 1 , 1 ,
+563 , 26460 , 94 , 42 , 1 , 1 ,
+563 , 26461 , 94 , 43 , 1 , 1 ,
+563 , 26462 , 93 , 42 , 1 , 1 ,
+563 , 26463 , 93 , 42 , 1 , 1 ,
+563 , 26464 , 92 , 43 , 1 , 1 ,
+563 , 26465 , 92 , 52 , 1 , 1 ,
+563 , 26466 , 91 , 43 , 1 , 1 ,
+563 , 26467 , 91 , 52 , 1 , 1 ,
+563 , 26468 , 90 , 52 , 1 , 1 ,
+563 , 26469 , 89 , 53 , 1 , 1 ,
+563 , 26470 , 88 , 52 , 1 , 1 ,
+563 , 26471 , 88 , 53 , 1 , 1 ,
+563 , 26472 , 87 , 52 , 1 , 1 ,
+563 , 26473 , 87 , 52 , 1 , 1 ,
+563 , 26474 , 87 , 52 , 1 , 1 ,
+563 , 26475 , 87 , 52 , 1 , 1 ,
+563 , 26476 , 87 , 52 , 1 , 1 ,
+563 , 26477 , 87 , 41 , 1 , 1 ,
+563 , 26478 , 87 , 41 , 1 , 1 ,
+563 , 26479 , 85 , 52 , 1 , 1 ,
+563 , 26480 , 85 , 52 , 1 , 1 ,
+563 , 26481 , 84 , 41 , 1 , 1 ,
+563 , 26482 , 84 , 31 , 1 , 1 ,
+563 , 26483 , 61 , 41 , 1 , 1 ,
+563 , 26484 , 60 , 41 , 1 , 1 ,
+563 , 26485 , 60 , 41 , 1 , 1 ,
+563 , 26486 , 60 , 42 , 1 , 1 ,
+563 , 26487 , 59 , 41 , 1 , 1 ,
+563 , 26488 , 55 , 33 , 1 , 1 ,
+563 , 26489 , 55 , 32 , 1 , 1 ,
+563 , 26490 , 52 , 33 , 1 , 1 ,
+563 , 26491 , 52 , 33 , 1 , 1 ,
+563 , 26492 , 50 , 33 , 1 , 1 ,
+563 , 26493 , 49 , 62 , 1 , 1 ,
+563 , 26494 , 49 , 32 , 1 , 1 ,
+563 , 26495 , 25 , 115 , 1 , 1 ,
+563 , 26496 , 25 , 115 , 1 , 1 ,
+563 , 26497 , 25 , 105 , 1 , 1 ,
+563 , 26498 , 25 , 105 , 1 , 1 ,
+563 , 26499 , 25 , 105 , 1 , 1 ,
+563 , 26500 , 25 , 94 , 1 , 1 ,
+563 , 26501 , 25 , 94 , 1 , 1 ,
+563 , 26502 , 25 , 105 , 1 , 1 ,
+563 , 26503 , 25 , 105 , 1 , 1 ,
+563 , 26504 , 25 , 115 , 1 , 1 ,
+563 , 26505 , 17 , 234 , 1 , 1 ,
+563 , 26506 , 17 , 224 , 1 , 1 ,
+563 , 26507 , 17 , 234 , 1 , 1 ,
+563 , 26508 , 17 , 234 , 1 , 1 ,
+563 , 26509 , 17 , 234 , 1 , 1 ,
+563 , 26510 , 16 , 234 , 1 , 1 ,
+563 , 26511 , 16 , 224 , 1 , 1 ,
+563 , 26512 , 16 , 224 , 1 , 1 ,
+563 , 26513 , 16 , 213 , 1 , 1 ,
+563 , 26514 , 16 , 214 , 1 , 1 ,
+563 , 26515 , 16 , 203 , 1 , 1 ,
+563 , 26516 , 16 , 203 , 1 , 1 ,
+563 , 26517 , 16 , 203 , 1 , 1 ,
+563 , 26518 , 16 , 193 , 1 , 1 ,
+563 , 26519 , 16 , 193 , 1 , 1 ,
+563 , 26520 , 16 , 193 , 1 , 1 ,
+563 , 26521 , 11 , 37 , 1 , 1 ,
+563 , 26522 , 11 , 33 , 1 , 1 ,
+563 , 26523 , 11 , 35 , 1 , 1 ,
+563 , 26524 , 11 , 33 , 1 , 1 ,
+563 , 26525 , 11 , 37 , 1 , 1 ,
+563 , 26526 , 11 , 32 , 1 , 1 ,
+563 , 26527 , 45 , 52 , 1 , 1 ,
+563 , 26528 , 45 , 62 , 1 , 1 ,
+563 , 26529 , 42 , 62 , 1 , 1 ,
+563 , 26530 , 42 , 62 , 1 , 1 ,
+563 , 26531 , 42 , 62 , 1 , 1 ,
+563 , 26532 , 42 , 52 , 1 , 1 ,
+563 , 26533 , 41 , 52 , 1 , 1 ,
+563 , 26534 , 41 , 52 , 1 , 1 ,
+563 , 26535 , 40 , 62 , 1 , 1 ,
+563 , 26536 , 40 , 62 , 1 , 1 ,
+563 , 26537 , 39 , 62 , 1 , 1 ,
+563 , 26538 , 39 , 62 , 1 , 1 ,
+563 , 26539 , 36 , 62 , 1 , 1 ,
+563 , 26540 , 36 , 62 , 1 , 1 ,
+563 , 26541 , 35 , 62 , 1 , 1 ,
+563 , 26542 , 35 , 62 , 1 , 1 ,
+563 , 26543 , 35 , 72 , 1 , 1 ,
+563 , 26544 , 35 , 62 , 1 , 1 ,
+563 , 26545 , 32 , 62 , 1 , 1 ,
+563 , 26546 , 32 , 62 , 1 , 1 ,
+563 , 26547 , 32 , 62 , 1 , 1 ,
+563 , 26548 , 31 , 62 , 1 , 1 ,
+563 , 26549 , 29 , 52 , 1 , 1 ,
+563 , 26550 , 29 , 52 , 1 , 1 ,
+563 , 26551 , 28 , 72 , 1 , 1 ,
+563 , 26552 , 28 , 72 , 1 , 1 ,
+563 , 26553 , 28 , 73 , 1 , 1 ,
+563 , 26554 , 27 , 73 , 1 , 1 ,
+563 , 26555 , 26 , 62 , 1 , 1 ,
+563 , 26556 , 25 , 72 , 1 , 1 ,
+563 , 26557 , 25 , 52 , 1 , 1 ,
+563 , 26558 , 24 , 52 , 1 , 1 ,
+563 , 26559 , 22 , 72 , 1 , 1 ,
+563 , 26560 , 22 , 72 , 1 , 1 ,
+563 , 26561 , 21 , 72 , 1 , 1 ,
+563 , 26562 , 21 , 72 , 1 , 1 ,
+563 , 26563 , 21 , 62 , 1 , 1 ,
+563 , 26564 , 21 , 62 , 1 , 1 ,
+563 , 26565 , 19 , 52 , 1 , 1 ,
+563 , 26566 , 19 , 52 , 1 , 1 ,
+563 , 26567 , 18 , 62 , 1 , 1 ,
+563 , 26568 , 18 , 52 , 1 , 1 ,
+563 , 26569 , 15 , 52 , 1 , 1 ,
+563 , 26570 , 15 , 52 , 1 , 1 ,
+563 , 26571 , 15 , 52 , 1 , 1 ,
+563 , 26572 , 15 , 62 , 1 , 1 ,
+563 , 26573 , 14 , 52 , 1 , 1 ,
+563 , 26574 , 13 , 52 , 1 , 1 ,
+563 , 26575 , 12 , 62 , 1 , 1 ,
+563 , 26576 , 11 , 62 , 1 , 1 ,
+563 , 26577 , 11 , 52 , 1 , 1 ,
+563 , 26578 , 11 , 62 , 1 , 1 ,
+563 , 26579 , 9 , 62 , 1 , 1 ,
+563 , 26580 , 8 , 62 , 1 , 1 ,
+563 , 26581 , 8 , 62 , 1 , 1 ,
+563 , 26582 , 8 , 62 , 1 , 1 ,
+563 , 26583 , 8 , 62 , 1 , 1 ,
+563 , 26584 , 8 , 62 , 1 , 1 ,
+563 , 26585 , 8 , 62 , 1 , 1 ,
+563 , 26586 , 8 , 62 , 1 , 1 ,
+563 , 26587 , 8 , 52 , 1 , 1 ,
+563 , 26588 , 7 , 72 , 1 , 1 ,
+563 , 26589 , 6 , 52 , 1 , 1 ,
+563 , 26590 , 6 , 41 , 1 , 1 ,
+563 , 26591 , 6 , 52 , 1 , 1 ,
+563 , 26592 , 6 , 41 , 1 , 1 ,
+563 , 26593 , 6 , 31 , 1 , 1 ,
+563 , 26594 , 6 , 41 , 1 , 1 ,
+563 , 26595 , 6 , 52 , 1 , 1 ,
+563 , 26596 , 6 , 41 , 1 , 1 ,
+563 , 26597 , 6 , 41 , 1 , 1 ,
+563 , 26598 , 6 , 41 , 1 , 1 ,
+563 , 26599 , 276 , 72 , 1 , 1 , 26556 26574 26451 26480 26464 26583 26488 26494 26460 26408 26416 26524 26557 26429 26466 26425 26458 26513 26550 26478 26475 26411 26552 26483 26437 26449 26448 26576 26572 26446 26554 26553 26580 26566 26518 26456 26573 26463 26417 26511 26476 26597 26581 26497 26584 26486 26547 26544 26399 26585 26591 26468 26409 26439 26472 26549 26586 26403 26578 26594 26509 26465 26530 26588 26430 26400 26571 26491 26596 26507 26404 26453 26521 26422 26402 26477 26469 26536 26527 26535 26454 26564 26473 26461 26443 26532 26514 26565 26490 26525 26459 26500 26534 26503 26484 26441 26567 26415 26543 26412 26485 26579 26508 26538 26551 26487 26519 26431 26561 26499 26457 26455 26424 26540 26526 26563 26420 26462 26575 26489 26428 26406 26522 26559 26474 26506 26587 26542 26492 26467 26516 26590 26533 26481 26482 26471 26442 26589 26568 26452 26555 26440 26546 26470 26421 26401 26517 26498 26434 26504 26515 26570 26407 26577 26548 26512 26528 26569 26560 26593 26539 26592 26436 26438 26450 26496 26423 26537 26558 26531 26444 26495 26432 26435 26493 26479 26419 26418 26529 26505 26582 26433 26523 26426 26445 26447 26545 26595 26410 26541 26598 26414 26501 26520 26502 26510 26405 26413 26427 26562
+564 , 26600 , 294 , 92 , 1 , 1 ,
+564 , 26601 , 294 , 92 , 1 , 1 ,
+564 , 26602 , 141 , 82 , 1 , 1 ,
+564 , 26603 , 293 , 92 , 1 , 1 ,
+564 , 26604 , 293 , 92 , 1 , 1 ,
+564 , 26605 , 293 , 92 , 1 , 1 ,
+564 , 26606 , 292 , 92 , 1 , 1 ,
+564 , 26607 , 141 , 82 , 1 , 1 ,
+564 , 26608 , 286 , 82 , 1 , 1 ,
+564 , 26609 , 285 , 82 , 1 , 1 ,
+564 , 26610 , 301 , 82 , 1 , 1 ,
+564 , 26611 , 285 , 82 , 1 , 1 ,
+564 , 26612 , 301 , 82 , 1 , 1 ,
+564 , 26613 , 301 , 82 , 1 , 1 ,
+564 , 26614 , 299 , 82 , 1 , 1 ,
+564 , 26615 , 180 , 83 , 1 , 1 ,
+564 , 26616 , 180 , 93 , 1 , 1 ,
+564 , 26617 , 180 , 93 , 1 , 1 ,
+564 , 26618 , 180 , 93 , 1 , 1 ,
+564 , 26619 , 180 , 93 , 1 , 1 ,
+564 , 26620 , 179 , 92 , 1 , 1 ,
+564 , 26621 , 140 , 104 , 1 , 1 ,
+564 , 26622 , 121 , 103 , 1 , 1 ,
+564 , 26623 , 121 , 92 , 1 , 1 ,
+564 , 26624 , 121 , 92 , 1 , 1 ,
+564 , 26625 , 121 , 82 , 1 , 1 ,
+564 , 26626 , 121 , 92 , 1 , 1 ,
+564 , 26627 , 121 , 92 , 1 , 1 ,
+564 , 26628 , 120 , 92 , 1 , 1 ,
+564 , 26629 , 120 , 103 , 1 , 1 ,
+564 , 26630 , 120 , 93 , 1 , 1 ,
+564 , 26631 , 120 , 93 , 1 , 1 ,
+564 , 26632 , 117 , 92 , 1 , 1 ,
+564 , 26633 , 117 , 92 , 1 , 1 ,
+564 , 26634 , 117 , 103 , 1 , 1 ,
+564 , 26635 , 117 , 103 , 1 , 1 ,
+564 , 26636 , 117 , 103 , 1 , 1 ,
+564 , 26637 , 117 , 103 , 1 , 1 ,
+564 , 26638 , 117 , 103 , 1 , 1 ,
+564 , 26639 , 117 , 103 , 1 , 1 ,
+564 , 26640 , 117 , 114 , 1 , 1 ,
+564 , 26641 , 117 , 113 , 1 , 1 ,
+564 , 26642 , 117 , 103 , 1 , 1 ,
+564 , 26643 , 179 , 103 , 1 , 1 ,
+564 , 26644 , 179 , 103 , 1 , 1 ,
+564 , 26645 , 179 , 103 , 1 , 1 ,
+564 , 26646 , 179 , 113 , 1 , 1 ,
+564 , 26647 , 177 , 113 , 1 , 1 ,
+564 , 26648 , 177 , 113 , 1 , 1 ,
+564 , 26649 , 177 , 103 , 1 , 1 ,
+564 , 26650 , 177 , 113 , 1 , 1 ,
+564 , 26651 , 177 , 103 , 1 , 1 ,
+564 , 26652 , 177 , 113 , 1 , 1 ,
+564 , 26653 , 177 , 113 , 1 , 1 ,
+564 , 26654 , 177 , 103 , 1 , 1 ,
+564 , 26655 , 177 , 103 , 1 , 1 ,
+564 , 26656 , 154 , 103 , 1 , 1 ,
+564 , 26657 , 177 , 113 , 1 , 1 ,
+564 , 26658 , 140 , 114 , 1 , 1 ,
+564 , 26659 , 297 , 113 , 1 , 1 ,
+564 , 26660 , 297 , 113 , 1 , 1 ,
+564 , 26661 , 297 , 103 , 1 , 1 ,
+564 , 26662 , 297 , 103 , 1 , 1 ,
+564 , 26663 , 297 , 113 , 1 , 1 ,
+564 , 26664 , 297 , 113 , 1 , 1 ,
+564 , 26665 , 297 , 114 , 1 , 1 ,
+564 , 26666 , 246 , 292 , 1 , 1 ,
+564 , 26667 , 245 , 312 , 1 , 1 ,
+564 , 26668 , 240 , 113 , 1 , 1 ,
+564 , 26669 , 240 , 123 , 1 , 1 ,
+564 , 26670 , 240 , 123 , 1 , 1 ,
+564 , 26671 , 240 , 133 , 1 , 1 ,
+564 , 26672 , 240 , 123 , 1 , 1 ,
+564 , 26673 , 240 , 123 , 1 , 1 ,
+564 , 26674 , 240 , 123 , 1 , 1 ,
+564 , 26675 , 240 , 113 , 1 , 1 ,
+564 , 26676 , 240 , 123 , 1 , 1 ,
+564 , 26677 , 141 , 113 , 1 , 1 ,
+564 , 26678 , 240 , 113 , 1 , 1 ,
+564 , 26679 , 237 , 123 , 1 , 1 ,
+564 , 26680 , 237 , 113 , 1 , 1 ,
+564 , 26681 , 234 , 113 , 1 , 1 ,
+564 , 26682 , 234 , 113 , 1 , 1 ,
+564 , 26683 , 234 , 113 , 1 , 1 ,
+564 , 26684 , 234 , 113 , 1 , 1 ,
+564 , 26685 , 117 , 103 , 1 , 1 ,
+564 , 26686 , 112 , 103 , 1 , 1 ,
+564 , 26687 , 116 , 92 , 1 , 1 ,
+564 , 26688 , 234 , 103 , 1 , 1 ,
+564 , 26689 , 237 , 92 , 1 , 1 ,
+564 , 26690 , 237 , 103 , 1 , 1 ,
+564 , 26691 , 237 , 92 , 1 , 1 ,
+564 , 26692 , 237 , 103 , 1 , 1 ,
+564 , 26693 , 237 , 103 , 1 , 1 ,
+564 , 26694 , 237 , 113 , 1 , 1 ,
+564 , 26695 , 237 , 103 , 1 , 1 ,
+564 , 26696 , 112 , 103 , 1 , 1 ,
+564 , 26697 , 109 , 103 , 1 , 1 ,
+564 , 26698 , 109 , 92 , 1 , 1 ,
+564 , 26699 , 109 , 92 , 1 , 1 ,
+564 , 26700 , 237 , 103 , 1 , 1 ,
+564 , 26701 , 144 , 92 , 1 , 1 ,
+564 , 26702 , 143 , 93 , 1 , 1 ,
+564 , 26703 , 143 , 92 , 1 , 1 ,
+564 , 26704 , 141 , 103 , 1 , 1 ,
+564 , 26705 , 141 , 92 , 1 , 1 ,
+564 , 26706 , 143 , 92 , 1 , 1 ,
+564 , 26707 , 237 , 94 , 1 , 1 ,
+564 , 26708 , 234 , 490 , 1 , 1 ,
+564 , 26709 , 224 , 480 , 1 , 1 ,
+564 , 26710 , 234 , 103 , 1 , 1 ,
+564 , 26711 , 141 , 114 , 1 , 1 ,
+564 , 26712 , 233 , 103 , 1 , 1 ,
+564 , 26713 , 224 , 438 , 1 , 1 ,
+564 , 26714 , 225 , 407 , 1 , 1 ,
+564 , 26715 , 233 , 113 , 1 , 1 ,
+564 , 26716 , 233 , 103 , 1 , 1 ,
+564 , 26717 , 154 , 92 , 1 , 1 ,
+564 , 26718 , 144 , 103 , 1 , 1 ,
+564 , 26719 , 144 , 92 , 1 , 1 ,
+564 , 26720 , 144 , 103 , 1 , 1 ,
+564 , 26721 , 233 , 92 , 1 , 1 ,
+564 , 26722 , 236 , 92 , 1 , 1 ,
+564 , 26723 , 297 , 92 , 1 , 1 ,
+564 , 26724 , 297 , 92 , 1 , 1 ,
+564 , 26725 , 297 , 92 , 1 , 1 ,
+564 , 26726 , 294 , 103 , 1 , 1 ,
+564 , 26727 , 261 , 240 , 1 , 1 ,
+564 , 26728 , 261 , 251 , 1 , 1 ,
+564 , 26729 , 251 , 261 , 1 , 1 ,
+564 , 26730 , 251 , 251 , 1 , 1 ,
+564 , 26731 , 109 , 103 , 1 , 1 ,
+564 , 26732 , 109 , 103 , 1 , 1 ,
+564 , 26733 , 109 , 113 , 1 , 1 ,
+564 , 26734 , 106 , 113 , 1 , 1 ,
+564 , 26735 , 15 , 241 , 1 , 1 ,
+564 , 26736 , 14 , 242 , 1 , 1 ,
+564 , 26737 , 14 , 221 , 1 , 1 ,
+564 , 26738 , 14 , 231 , 1 , 1 ,
+564 , 26739 , 14 , 220 , 1 , 1 ,
+564 , 26740 , 14 , 230 , 1 , 1 ,
+564 , 26741 , 14 , 209 , 1 , 1 ,
+564 , 26742 , 13 , 219 , 1 , 1 ,
+564 , 26743 , 13 , 209 , 1 , 1 ,
+564 , 26744 , 13 , 209 , 1 , 1 ,
+564 , 26745 , 7 , 208 , 1 , 1 ,
+564 , 26746 , 7 , 166 , 1 , 1 ,
+564 , 26747 , 7 , 207 , 1 , 1 ,
+564 , 26748 , 7 , 173 , 1 , 1 ,
+564 , 26749 , 7 , 172 , 1 , 1 ,
+564 , 26750 , 7 , 174 , 1 , 1 ,
+564 , 26751 , 17 , 103 , 1 , 1 ,
+564 , 26752 , 17 , 103 , 1 , 1 ,
+564 , 26753 , 17 , 92 , 1 , 1 ,
+564 , 26754 , 17 , 92 , 1 , 1 ,
+564 , 26755 , 17 , 103 , 1 , 1 ,
+564 , 26756 , 17 , 113 , 1 , 1 ,
+564 , 26757 , 17 , 113 , 1 , 1 ,
+564 , 26758 , 17 , 113 , 1 , 1 ,
+564 , 26759 , 17 , 113 , 1 , 1 ,
+564 , 26760 , 14 , 113 , 1 , 1 ,
+564 , 26761 , 14 , 113 , 1 , 1 ,
+564 , 26762 , 14 , 113 , 1 , 1 ,
+564 , 26763 , 14 , 113 , 1 , 1 ,
+564 , 26764 , 14 , 113 , 1 , 1 ,
+564 , 26765 , 13 , 113 , 1 , 1 ,
+564 , 26766 , 13 , 113 , 1 , 1 ,
+564 , 26767 , 13 , 113 , 1 , 1 ,
+564 , 26768 , 13 , 113 , 1 , 1 ,
+564 , 26769 , 12 , 103 , 1 , 1 ,
+564 , 26770 , 9 , 103 , 1 , 1 ,
+564 , 26771 , 9 , 103 , 1 , 1 ,
+564 , 26772 , 9 , 103 , 1 , 1 ,
+564 , 26773 , 9 , 103 , 1 , 1 ,
+564 , 26774 , 9 , 93 , 1 , 1 ,
+564 , 26775 , 9 , 93 , 1 , 1 ,
+564 , 26776 , 9 , 83 , 1 , 1 ,
+564 , 26777 , 9 , 92 , 1 , 1 ,
+564 , 26778 , 8 , 103 , 1 , 1 ,
+564 , 26779 , 8 , 103 , 1 , 1 ,
+564 , 26780 , 6 , 103 , 1 , 1 ,
+564 , 26781 , 6 , 103 , 1 , 1 ,
+564 , 26782 , 6 , 92 , 1 , 1 ,
+564 , 26783 , 6 , 93 , 1 , 1 ,
+564 , 26784 , 6 , 103 , 1 , 1 ,
+564 , 26785 , 6 , 103 , 1 , 1 ,
+564 , 26786 , 6 , 103 , 1 , 1 ,
+564 , 26787 , 6 , 103 , 1 , 1 ,
+564 , 26788 , 6 , 103 , 1 , 1 ,
+564 , 26789 , 6 , 103 , 1 , 1 ,
+564 , 26790 , 4 , 103 , 1 , 1 ,
+564 , 26791 , 4 , 103 , 1 , 1 ,
+564 , 26792 , 4 , 103 , 1 , 1 ,
+564 , 26793 , 4 , 92 , 1 , 1 ,
+564 , 26794 , 4 , 103 , 1 , 1 ,
+564 , 26795 , 4 , 92 , 1 , 1 ,
+564 , 26796 , 4 , 92 , 1 , 1 ,
+564 , 26797 , 4 , 92 , 1 , 1 ,
+564 , 26798 , 4 , 92 , 1 , 1 ,
+564 , 26799 , 4 , 93 , 1 , 1 ,
+564 , 26800 , 737 , 297 , 1 , 1 , 26656 26798 26747 26651 26631 26643 26749 26662 26654 26794 26639 26678 26613 26780 26789 26748 26755 26692 26640 26766 26745 26669 26784 26707 26646 26634 26741 26667 26738 26767 26641 26666 26600 26719 26791 26694 26676 26720 26653 26758 26770 26687 26686 26740 26712 26737 26778 26744 26792 26638 26635 26710 26632 26768 26611 26722 26772 26781 26775 26630 26679 26724 26663 26729 26699 26777 26783 26711 26691 26609 26779 26696 26771 26684 26606 26650 26680 26773 26627 26645 26715 26695 26670 26612 26787 26628 26637 26621 26795 26705 26754 26769 26610 26785 26671 26607 26704 26717 26788 26697 26605 26618 26617 26797 26731 26693 26681 26664 26655 26782 26672 26608 26723 26622 26790 26756 26762 26660 26673 26615 26726 26623 26733 26677 26734 26674 26685 26739 26742 26796 26626 26701 26714 26682 26716 26709 26659 26668 26735 26730 26793 26690 26761 26703 26625 26652 26764 26675 26786 26620 26746 26657 26759 26736 26776 26750 26636 26765 26642 26718 26727 26649 26689 26753 26713 26743 26629 26647 26799 26683 26601 26728 26619 26721 26774 26763 26624 26616 26700 26602 26604 26752 26658 26644 26688 26648 26661 26702 26732 26725 26603 26760 26698 26614 26633 26665 26751 26757 26708 26706
+565 , 27002 , 16 , 31 , 1 , 1 ,
+565 , 27003 , 16 , 31 , 1 , 1 ,
+565 , 27004 , 16 , 31 , 1 , 1 ,
+565 , 27005 , 15 , 31 , 1 , 1 ,
+565 , 27006 , 15 , 31 , 1 , 1 ,
+565 , 27007 , 15 , 31 , 1 , 1 ,
+565 , 27008 , 15 , 31 , 1 , 1 ,
+565 , 27009 , 15 , 31 , 1 , 1 ,
+565 , 27010 , 14 , 41 , 1 , 1 ,
+565 , 27011 , 14 , 31 , 1 , 1 ,
+565 , 27012 , 13 , 31 , 1 , 1 ,
+565 , 27013 , 13 , 41 , 1 , 1 ,
+565 , 27014 , 12 , 41 , 1 , 1 ,
+565 , 27015 , 12 , 41 , 1 , 1 ,
+565 , 27016 , 12 , 41 , 1 , 1 ,
+565 , 27017 , 12 , 41 , 1 , 1 ,
+565 , 27018 , 12 , 41 , 1 , 1 ,
+565 , 27019 , 12 , 41 , 1 , 1 ,
+565 , 27020 , 11 , 41 , 1 , 1 ,
+565 , 27021 , 11 , 41 , 1 , 1 ,
+565 , 27022 , 10 , 41 , 1 , 1 ,
+565 , 27023 , 9 , 41 , 1 , 1 ,
+565 , 27024 , 9 , 41 , 1 , 1 ,
+565 , 27025 , 9 , 41 , 1 , 1 ,
+565 , 27026 , 9 , 31 , 1 , 1 ,
+565 , 27027 , 9 , 31 , 1 , 1 ,
+565 , 27028 , 9 , 41 , 1 , 1 ,
+565 , 27029 , 9 , 41 , 1 , 1 ,
+565 , 27030 , 9 , 41 , 1 , 1 ,
+565 , 27031 , 8 , 41 , 1 , 1 ,
+565 , 27032 , 7 , 41 , 1 , 1 ,
+565 , 27033 , 7 , 41 , 1 , 1 ,
+565 , 27034 , 7 , 41 , 1 , 1 ,
+565 , 27035 , 7 , 41 , 1 , 1 ,
+565 , 27036 , 7 , 41 , 1 , 1 ,
+565 , 27037 , 7 , 41 , 1 , 1 ,
+565 , 27038 , 7 , 41 , 1 , 1 ,
+565 , 27039 , 7 , 41 , 1 , 1 ,
+565 , 27040 , 7 , 41 , 1 , 1 ,
+565 , 27041 , 7 , 41 , 1 , 1 ,
+565 , 27042 , 5 , 52 , 1 , 1 ,
+565 , 27043 , 5 , 41 , 1 , 1 ,
+565 , 27044 , 5 , 41 , 1 , 1 ,
+565 , 27045 , 5 , 41 , 1 , 1 ,
+565 , 27046 , 5 , 41 , 1 , 1 ,
+565 , 27047 , 5 , 41 , 1 , 1 ,
+565 , 27048 , 5 , 42 , 1 , 1 ,
+565 , 27049 , 5 , 41 , 1 , 1 ,
+565 , 27050 , 5 , 42 , 1 , 1 ,
+565 , 27051 , 5 , 41 , 1 , 1 ,
+565 , 27052 , 70 , 11 , 1 , 1 , 27051 27026 27022 27031 27039 27019 27012 27004 27025 27046 27037 27020 27024 27034 27007 27023 27044 27045 27032 27033 27036 27021 27029 27017 27041 27028 27008 27016 27035 27011 27003 27030 27047 27049 27043 27038 27018 27040 27002 27027 27015 27014 27048 27006 27013 27005 27010 27042 27009 27050
+566 , 27053 , 204 , 21 , 1 , 1 ,
+566 , 27054 , 204 , 21 , 1 , 1 ,
+566 , 27055 , 266 , 31 , 1 , 1 ,
+566 , 27056 , 266 , 21 , 1 , 1 ,
+566 , 27057 , 265 , 21 , 1 , 1 ,
+566 , 27058 , 265 , 21 , 1 , 1 ,
+566 , 27059 , 265 , 21 , 1 , 1 ,
+566 , 27060 , 264 , 21 , 1 , 1 ,
+566 , 27061 , 264 , 21 , 1 , 1 ,
+566 , 27062 , 264 , 21 , 1 , 1 ,
+566 , 27063 , 264 , 21 , 1 , 1 ,
+566 , 27064 , 264 , 21 , 1 , 1 ,
+566 , 27065 , 264 , 21 , 1 , 1 ,
+566 , 27066 , 264 , 21 , 1 , 1 ,
+566 , 27067 , 264 , 21 , 1 , 1 ,
+566 , 27068 , 264 , 21 , 1 , 1 ,
+566 , 27069 , 264 , 21 , 1 , 1 ,
+566 , 27070 , 264 , 21 , 1 , 1 ,
+566 , 27071 , 206 , 21 , 1 , 1 ,
+566 , 27072 , 205 , 21 , 1 , 1 ,
+566 , 27073 , 205 , 21 , 1 , 1 ,
+566 , 27074 , 91 , 21 , 1 , 1 ,
+566 , 27075 , 91 , 21 , 1 , 1 ,
+566 , 27076 , 91 , 21 , 1 , 1 ,
+566 , 27077 , 91 , 21 , 1 , 1 ,
+566 , 27078 , 91 , 21 , 1 , 1 ,
+566 , 27079 , 91 , 21 , 1 , 1 ,
+566 , 27080 , 90 , 21 , 1 , 1 ,
+566 , 27081 , 90 , 21 , 1 , 1 ,
+566 , 27082 , 90 , 21 , 1 , 1 ,
+566 , 27083 , 90 , 21 , 1 , 1 ,
+566 , 27084 , 84 , 31 , 1 , 1 ,
+566 , 27085 , 84 , 31 , 1 , 1 ,
+566 , 27086 , 84 , 21 , 1 , 1 ,
+566 , 27087 , 84 , 21 , 1 , 1 ,
+566 , 27088 , 84 , 21 , 1 , 1 ,
+566 , 27089 , 84 , 21 , 1 , 1 ,
+566 , 27090 , 84 , 21 , 1 , 1 ,
+566 , 27091 , 84 , 31 , 1 , 1 ,
+566 , 27092 , 84 , 21 , 1 , 1 ,
+566 , 27093 , 84 , 31 , 1 , 1 ,
+566 , 27094 , 205 , 31 , 1 , 1 ,
+566 , 27095 , 205 , 31 , 1 , 1 ,
+566 , 27096 , 205 , 21 , 1 , 1 ,
+566 , 27097 , 205 , 31 , 1 , 1 ,
+566 , 27098 , 205 , 31 , 1 , 1 ,
+566 , 27099 , 204 , 31 , 1 , 1 ,
+566 , 27100 , 204 , 31 , 1 , 1 ,
+566 , 27101 , 204 , 31 , 1 , 1 ,
+566 , 27102 , 204 , 31 , 1 , 1 ,
+566 , 27103 , 204 , 21 , 1 , 1 ,
+566 , 27104 , 204 , 31 , 1 , 1 ,
+566 , 27105 , 146 , 31 , 1 , 1 ,
+566 , 27106 , 146 , 21 , 1 , 1 ,
+566 , 27107 , 145 , 31 , 1 , 1 ,
+566 , 27108 , 145 , 31 , 1 , 1 ,
+566 , 27109 , 145 , 31 , 1 , 1 ,
+566 , 27110 , 145 , 31 , 1 , 1 ,
+566 , 27111 , 145 , 31 , 1 , 1 ,
+566 , 27112 , 145 , 31 , 1 , 1 ,
+566 , 27113 , 145 , 31 , 1 , 1 ,
+566 , 27114 , 144 , 31 , 1 , 1 ,
+566 , 27115 , 144 , 31 , 1 , 1 ,
+566 , 27116 , 144 , 31 , 1 , 1 ,
+566 , 27117 , 144 , 31 , 1 , 1 ,
+566 , 27118 , 144 , 31 , 1 , 1 ,
+566 , 27119 , 144 , 31 , 1 , 1 ,
+566 , 27120 , 144 , 31 , 1 , 1 ,
+566 , 27121 , 144 , 31 , 1 , 1 ,
+566 , 27122 , 144 , 31 , 1 , 1 ,
+566 , 27123 , 144 , 31 , 1 , 1 ,
+566 , 27124 , 144 , 31 , 1 , 1 ,
+566 , 27125 , 204 , 31 , 1 , 1 ,
+566 , 27126 , 204 , 31 , 1 , 1 ,
+566 , 27127 , 204 , 31 , 1 , 1 ,
+566 , 27128 , 204 , 31 , 1 , 1 ,
+566 , 27129 , 34 , 41 , 1 , 1 ,
+566 , 27130 , 34 , 41 , 1 , 1 ,
+566 , 27131 , 33 , 41 , 1 , 1 ,
+566 , 27132 , 32 , 41 , 1 , 1 ,
+566 , 27133 , 32 , 41 , 1 , 1 ,
+566 , 27134 , 32 , 41 , 1 , 1 ,
+566 , 27135 , 32 , 41 , 1 , 1 ,
+566 , 27136 , 31 , 41 , 1 , 1 ,
+566 , 27137 , 31 , 41 , 1 , 1 ,
+566 , 27138 , 31 , 31 , 1 , 1 ,
+566 , 27139 , 31 , 41 , 1 , 1 ,
+566 , 27140 , 30 , 41 , 1 , 1 ,
+566 , 27141 , 28 , 41 , 1 , 1 ,
+566 , 27142 , 28 , 41 , 1 , 1 ,
+566 , 27143 , 28 , 42 , 1 , 1 ,
+566 , 27144 , 28 , 41 , 1 , 1 ,
+566 , 27145 , 28 , 41 , 1 , 1 ,
+566 , 27146 , 27 , 41 , 1 , 1 ,
+566 , 27147 , 27 , 41 , 1 , 1 ,
+566 , 27148 , 27 , 52 , 1 , 1 ,
+566 , 27149 , 16 , 115 , 1 , 1 ,
+566 , 27150 , 15 , 115 , 1 , 1 ,
+566 , 27151 , 15 , 105 , 1 , 1 ,
+566 , 27152 , 15 , 105 , 1 , 1 ,
+566 , 27153 , 14 , 104 , 1 , 1 ,
+566 , 27154 , 14 , 105 , 1 , 1 ,
+566 , 27155 , 14 , 105 , 1 , 1 ,
+566 , 27156 , 13 , 94 , 1 , 1 ,
+566 , 27157 , 13 , 115 , 1 , 1 ,
+566 , 27158 , 13 , 105 , 1 , 1 ,
+566 , 27159 , 7 , 233 , 1 , 1 ,
+566 , 27160 , 7 , 223 , 1 , 1 ,
+566 , 27161 , 7 , 223 , 1 , 1 ,
+566 , 27162 , 7 , 234 , 1 , 1 ,
+566 , 27163 , 7 , 223 , 1 , 1 ,
+566 , 27164 , 7 , 234 , 1 , 1 ,
+566 , 27165 , 7 , 223 , 1 , 1 ,
+566 , 27166 , 7 , 213 , 1 , 1 ,
+566 , 27167 , 7 , 223 , 1 , 1 ,
+566 , 27168 , 7 , 214 , 1 , 1 ,
+566 , 27169 , 7 , 213 , 1 , 1 ,
+566 , 27170 , 7 , 203 , 1 , 1 ,
+566 , 27171 , 7 , 203 , 1 , 1 ,
+566 , 27172 , 7 , 193 , 1 , 1 ,
+566 , 27173 , 7 , 203 , 1 , 1 ,
+566 , 27174 , 7 , 193 , 1 , 1 ,
+566 , 27175 , 7 , 36 , 1 , 1 ,
+566 , 27176 , 7 , 35 , 1 , 1 ,
+566 , 27177 , 7 , 34 , 1 , 1 ,
+566 , 27178 , 7 , 33 , 1 , 1 ,
+566 , 27179 , 7 , 36 , 1 , 1 ,
+566 , 27180 , 7 , 35 , 1 , 1 ,
+566 , 27181 , 27 , 62 , 1 , 1 ,
+566 , 27182 , 26 , 62 , 1 , 1 ,
+566 , 27183 , 25 , 62 , 1 , 1 ,
+566 , 27184 , 24 , 62 , 1 , 1 ,
+566 , 27185 , 24 , 62 , 1 , 1 ,
+566 , 27186 , 23 , 52 , 1 , 1 ,
+566 , 27187 , 23 , 41 , 1 , 1 ,
+566 , 27188 , 22 , 52 , 1 , 1 ,
+566 , 27189 , 22 , 62 , 1 , 1 ,
+566 , 27190 , 22 , 52 , 1 , 1 ,
+566 , 27191 , 22 , 52 , 1 , 1 ,
+566 , 27192 , 21 , 52 , 1 , 1 ,
+566 , 27193 , 19 , 52 , 1 , 1 ,
+566 , 27194 , 19 , 52 , 1 , 1 ,
+566 , 27195 , 19 , 41 , 1 , 1 ,
+566 , 27196 , 19 , 41 , 1 , 1 ,
+566 , 27197 , 19 , 52 , 1 , 1 ,
+566 , 27198 , 18 , 52 , 1 , 1 ,
+566 , 27199 , 18 , 52 , 1 , 1 ,
+566 , 27200 , 18 , 52 , 1 , 1 ,
+566 , 27201 , 18 , 53 , 1 , 1 ,
+566 , 27202 , 17 , 41 , 1 , 1 ,
+566 , 27203 , 16 , 41 , 1 , 1 ,
+566 , 27204 , 16 , 41 , 1 , 1 ,
+566 , 27205 , 16 , 62 , 1 , 1 ,
+566 , 27206 , 15 , 62 , 1 , 1 ,
+566 , 27207 , 15 , 62 , 1 , 1 ,
+566 , 27208 , 15 , 52 , 1 , 1 ,
+566 , 27209 , 15 , 52 , 1 , 1 ,
+566 , 27210 , 15 , 41 , 1 , 1 ,
+566 , 27211 , 15 , 52 , 1 , 1 ,
+566 , 27212 , 14 , 52 , 1 , 1 ,
+566 , 27213 , 13 , 62 , 1 , 1 ,
+566 , 27214 , 12 , 52 , 1 , 1 ,
+566 , 27215 , 12 , 52 , 1 , 1 ,
+566 , 27216 , 12 , 52 , 1 , 1 ,
+566 , 27217 , 11 , 52 , 1 , 1 ,
+566 , 27218 , 11 , 52 , 1 , 1 ,
+566 , 27219 , 11 , 52 , 1 , 1 ,
+566 , 27220 , 11 , 52 , 1 , 1 ,
+566 , 27221 , 11 , 52 , 1 , 1 ,
+566 , 27222 , 10 , 52 , 1 , 1 ,
+566 , 27223 , 8 , 52 , 1 , 1 ,
+566 , 27224 , 8 , 52 , 1 , 1 ,
+566 , 27225 , 8 , 52 , 1 , 1 ,
+566 , 27226 , 8 , 52 , 1 , 1 ,
+566 , 27227 , 8 , 52 , 1 , 1 ,
+566 , 27228 , 7 , 52 , 1 , 1 ,
+566 , 27229 , 7 , 52 , 1 , 1 ,
+566 , 27230 , 7 , 52 , 1 , 1 ,
+566 , 27231 , 7 , 52 , 1 , 1 ,
+566 , 27232 , 7 , 52 , 1 , 1 ,
+566 , 27233 , 5 , 52 , 1 , 1 ,
+566 , 27234 , 5 , 51 , 1 , 1 ,
+566 , 27235 , 5 , 52 , 1 , 1 ,
+566 , 27236 , 5 , 52 , 1 , 1 ,
+566 , 27237 , 5 , 52 , 1 , 1 ,
+566 , 27238 , 5 , 52 , 1 , 1 ,
+566 , 27239 , 5 , 52 , 1 , 1 ,
+566 , 27240 , 5 , 52 , 1 , 1 ,
+566 , 27241 , 5 , 52 , 1 , 1 ,
+566 , 27242 , 5 , 41 , 1 , 1 ,
+566 , 27243 , 3 , 31 , 1 , 1 ,
+566 , 27244 , 3 , 52 , 1 , 1 ,
+566 , 27245 , 3 , 41 , 1 , 1 ,
+566 , 27246 , 3 , 42 , 1 , 1 ,
+566 , 27247 , 3 , 42 , 1 , 1 ,
+566 , 27248 , 3 , 31 , 1 , 1 ,
+566 , 27249 , 3 , 42 , 1 , 1 ,
+566 , 27250 , 3 , 32 , 1 , 1 ,
+566 , 27251 , 3 , 42 , 1 , 1 ,
+566 , 27252 , 3 , 41 , 1 , 1 ,
+566 , 27253 , 316 , 72 , 1 , 1 , 27092 27150 27054 27241 27157 27187 27082 27089 27217 27171 27094 27139 27114 27156 27064 27175 27236 27134 27119 27076 27209 27166 27226 27181 27216 27101 27062 27090 27228 27242 27154 27252 27247 27163 27086 27143 27205 27129 27075 27243 27122 27059 27095 27078 27056 27128 27186 27183 27136 27121 27185 27151 27230 27153 27070 27085 27141 27098 27219 27104 27055 27103 27158 27133 27109 27123 27088 27245 27069 27232 27152 27179 27194 27224 27138 27147 27100 27137 27106 27211 27200 27067 27237 27159 27229 27165 27218 27164 27190 27097 27225 27206 27116 27249 27223 27207 27250 27172 27221 27125 27132 27118 27188 27244 27208 27193 27176 27222 27102 27233 27173 27146 27083 27140 27246 27115 27071 27096 27204 27201 27191 27108 27130 27077 27192 27170 27202 27145 27126 27220 27093 27112 27227 27110 27251 27169 27235 27087 27198 27081 27214 27099 27149 27066 27065 27215 27135 27189 27144 27160 27072 27091 27168 27213 27248 27196 27079 27142 27178 27113 27148 27180 27177 27231 27084 27182 27105 27239 27107 27057 27203 27199 27117 27053 27080 27124 27234 27161 27131 27063 27127 27195 27197 27058 27073 27167 27240 27155 27111 27068 27184 27060 27061 27210 27212 27074 27174 27120 27162 27238
+567 , 27455 , 181 , 82 , 1 , 1 ,
+567 , 27456 , 181 , 92 , 1 , 1 ,
+567 , 27457 , 161 , 92 , 1 , 1 ,
+567 , 27458 , 160 , 113 , 1 , 1 ,
+567 , 27459 , 159 , 103 , 1 , 1 ,
+567 , 27460 , 159 , 103 , 1 , 1 ,
+567 , 27461 , 159 , 92 , 1 , 1 ,
+567 , 27462 , 158 , 103 , 1 , 1 ,
+567 , 27463 , 158 , 103 , 1 , 1 ,
+567 , 27464 , 181 , 82 , 1 , 1 ,
+567 , 27465 , 153 , 82 , 1 , 1 ,
+567 , 27466 , 181 , 82 , 1 , 1 ,
+567 , 27467 , 179 , 92 , 1 , 1 ,
+567 , 27468 , 178 , 72 , 1 , 1 ,
+567 , 27469 , 178 , 82 , 1 , 1 ,
+567 , 27470 , 178 , 82 , 1 , 1 ,
+567 , 27471 , 178 , 82 , 1 , 1 ,
+567 , 27472 , 178 , 92 , 1 , 1 ,
+567 , 27473 , 178 , 93 , 1 , 1 ,
+567 , 27474 , 178 , 103 , 1 , 1 ,
+567 , 27475 , 176 , 103 , 1 , 1 ,
+567 , 27476 , 175 , 159 , 1 , 1 ,
+567 , 27477 , 174 , 103 , 1 , 1 ,
+567 , 27478 , 174 , 103 , 1 , 1 ,
+567 , 27479 , 173 , 159 , 1 , 1 ,
+567 , 27480 , 173 , 103 , 1 , 1 ,
+567 , 27481 , 172 , 92 , 1 , 1 ,
+567 , 27482 , 172 , 103 , 1 , 1 ,
+567 , 27483 , 170 , 159 , 1 , 1 ,
+567 , 27484 , 170 , 103 , 1 , 1 ,
+567 , 27485 , 168 , 159 , 1 , 1 ,
+567 , 27486 , 168 , 113 , 1 , 1 ,
+567 , 27487 , 168 , 113 , 1 , 1 ,
+567 , 27488 , 178 , 93 , 1 , 1 ,
+567 , 27489 , 178 , 103 , 1 , 1 ,
+567 , 27490 , 178 , 103 , 1 , 1 ,
+567 , 27491 , 178 , 113 , 1 , 1 ,
+567 , 27492 , 178 , 103 , 1 , 1 ,
+567 , 27493 , 238 , 103 , 1 , 1 ,
+567 , 27494 , 238 , 92 , 1 , 1 ,
+567 , 27495 , 158 , 103 , 1 , 1 ,
+567 , 27496 , 158 , 124 , 1 , 1 ,
+567 , 27497 , 158 , 124 , 1 , 1 ,
+567 , 27498 , 238 , 103 , 1 , 1 ,
+567 , 27499 , 238 , 103 , 1 , 1 ,
+567 , 27500 , 238 , 103 , 1 , 1 ,
+567 , 27501 , 238 , 113 , 1 , 1 ,
+567 , 27502 , 238 , 103 , 1 , 1 ,
+567 , 27503 , 238 , 103 , 1 , 1 ,
+567 , 27504 , 182 , 113 , 1 , 1 ,
+567 , 27505 , 181 , 114 , 1 , 1 ,
+567 , 27506 , 168 , 123 , 1 , 1 ,
+567 , 27507 , 167 , 123 , 1 , 1 ,
+567 , 27508 , 167 , 123 , 1 , 1 ,
+567 , 27509 , 165 , 123 , 1 , 1 ,
+567 , 27510 , 164 , 123 , 1 , 1 ,
+567 , 27511 , 164 , 123 , 1 , 1 ,
+567 , 27512 , 164 , 123 , 1 , 1 ,
+567 , 27513 , 164 , 113 , 1 , 1 ,
+567 , 27514 , 163 , 124 , 1 , 1 ,
+567 , 27515 , 163 , 123 , 1 , 1 ,
+567 , 27516 , 163 , 113 , 1 , 1 ,
+567 , 27517 , 163 , 123 , 1 , 1 ,
+567 , 27518 , 158 , 133 , 1 , 1 ,
+567 , 27519 , 154 , 113 , 1 , 1 ,
+567 , 27520 , 154 , 133 , 1 , 1 ,
+567 , 27521 , 153 , 113 , 1 , 1 ,
+567 , 27522 , 162 , 123 , 1 , 1 ,
+567 , 27523 , 162 , 133 , 1 , 1 ,
+567 , 27524 , 162 , 144 , 1 , 1 ,
+567 , 27525 , 161 , 144 , 1 , 1 ,
+567 , 27526 , 161 , 143 , 1 , 1 ,
+567 , 27527 , 181 , 124 , 1 , 1 ,
+567 , 27528 , 181 , 123 , 1 , 1 ,
+567 , 27529 , 181 , 113 , 1 , 1 ,
+567 , 27530 , 181 , 123 , 1 , 1 ,
+567 , 27531 , 120 , 123 , 1 , 1 ,
+567 , 27532 , 120 , 113 , 1 , 1 ,
+567 , 27533 , 120 , 113 , 1 , 1 ,
+567 , 27534 , 120 , 103 , 1 , 1 ,
+567 , 27535 , 120 , 113 , 1 , 1 ,
+567 , 27536 , 120 , 113 , 1 , 1 ,
+567 , 27537 , 120 , 113 , 1 , 1 ,
+567 , 27538 , 120 , 103 , 1 , 1 ,
+567 , 27539 , 119 , 103 , 1 , 1 ,
+567 , 27540 , 119 , 103 , 1 , 1 ,
+567 , 27541 , 118 , 103 , 1 , 1 ,
+567 , 27542 , 118 , 103 , 1 , 1 ,
+567 , 27543 , 118 , 103 , 1 , 1 ,
+567 , 27544 , 118 , 92 , 1 , 1 ,
+567 , 27545 , 118 , 93 , 1 , 1 ,
+567 , 27546 , 118 , 103 , 1 , 1 ,
+567 , 27547 , 118 , 103 , 1 , 1 ,
+567 , 27548 , 118 , 103 , 1 , 1 ,
+567 , 27549 , 118 , 92 , 1 , 1 ,
+567 , 27550 , 118 , 103 , 1 , 1 ,
+567 , 27551 , 22 , 552 , 1 , 1 ,
+567 , 27552 , 21 , 532 , 1 , 1 ,
+567 , 27553 , 21 , 522 , 1 , 1 ,
+567 , 27554 , 21 , 511 , 1 , 1 ,
+567 , 27555 , 20 , 490 , 1 , 1 ,
+567 , 27556 , 20 , 469 , 1 , 1 ,
+567 , 27557 , 20 , 491 , 1 , 1 ,
+567 , 27558 , 19 , 511 , 1 , 1 ,
+567 , 27559 , 19 , 532 , 1 , 1 ,
+567 , 27560 , 19 , 532 , 1 , 1 ,
+567 , 27561 , 12 , 639 , 1 , 1 ,
+567 , 27562 , 12 , 623 , 1 , 1 ,
+567 , 27563 , 12 , 634 , 1 , 1 ,
+567 , 27564 , 12 , 634 , 1 , 1 ,
+567 , 27565 , 12 , 649 , 1 , 1 ,
+567 , 27566 , 12 , 609 , 1 , 1 ,
+567 , 27567 , 11 , 603 , 1 , 1 ,
+567 , 27568 , 11 , 558 , 1 , 1 ,
+567 , 27569 , 11 , 538 , 1 , 1 ,
+567 , 27570 , 11 , 528 , 1 , 1 ,
+567 , 27571 , 11 , 527 , 1 , 1 ,
+567 , 27572 , 11 , 508 , 1 , 1 ,
+567 , 27573 , 11 , 467 , 1 , 1 ,
+567 , 27574 , 11 , 460 , 1 , 1 ,
+567 , 27575 , 11 , 436 , 1 , 1 ,
+567 , 27576 , 11 , 417 , 1 , 1 ,
+567 , 27577 , 9 , 161 , 1 , 1 ,
+567 , 27578 , 9 , 154 , 1 , 1 ,
+567 , 27579 , 9 , 155 , 1 , 1 ,
+567 , 27580 , 9 , 149 , 1 , 1 ,
+567 , 27581 , 9 , 158 , 1 , 1 ,
+567 , 27582 , 9 , 149 , 1 , 1 ,
+567 , 27583 , 40 , 103 , 1 , 1 ,
+567 , 27584 , 39 , 113 , 1 , 1 ,
+567 , 27585 , 34 , 113 , 1 , 1 ,
+567 , 27586 , 34 , 113 , 1 , 1 ,
+567 , 27587 , 34 , 134 , 1 , 1 ,
+567 , 27588 , 34 , 123 , 1 , 1 ,
+567 , 27589 , 34 , 123 , 1 , 1 ,
+567 , 27590 , 34 , 134 , 1 , 1 ,
+567 , 27591 , 34 , 133 , 1 , 1 ,
+567 , 27592 , 34 , 113 , 1 , 1 ,
+567 , 27593 , 34 , 133 , 1 , 1 ,
+567 , 27594 , 34 , 123 , 1 , 1 ,
+567 , 27595 , 28 , 123 , 1 , 1 ,
+567 , 27596 , 28 , 123 , 1 , 1 ,
+567 , 27597 , 28 , 133 , 1 , 1 ,
+567 , 27598 , 28 , 123 , 1 , 1 ,
+567 , 27599 , 28 , 113 , 1 , 1 ,
+567 , 27600 , 28 , 133 , 1 , 1 ,
+567 , 27601 , 27 , 113 , 1 , 1 ,
+567 , 27602 , 27 , 113 , 1 , 1 ,
+567 , 27603 , 27 , 113 , 1 , 1 ,
+567 , 27604 , 27 , 113 , 1 , 1 ,
+567 , 27605 , 22 , 123 , 1 , 1 ,
+567 , 27606 , 22 , 123 , 1 , 1 ,
+567 , 27607 , 22 , 133 , 1 , 1 ,
+567 , 27608 , 22 , 123 , 1 , 1 ,
+567 , 27609 , 22 , 123 , 1 , 1 ,
+567 , 27610 , 22 , 123 , 1 , 1 ,
+567 , 27611 , 21 , 144 , 1 , 1 ,
+567 , 27612 , 21 , 134 , 1 , 1 ,
+567 , 27613 , 21 , 123 , 1 , 1 ,
+567 , 27614 , 21 , 133 , 1 , 1 ,
+567 , 27615 , 15 , 133 , 1 , 1 ,
+567 , 27616 , 15 , 144 , 1 , 1 ,
+567 , 27617 , 15 , 144 , 1 , 1 ,
+567 , 27618 , 15 , 133 , 1 , 1 ,
+567 , 27619 , 15 , 144 , 1 , 1 ,
+567 , 27620 , 15 , 154 , 1 , 1 ,
+567 , 27621 , 14 , 143 , 1 , 1 ,
+567 , 27622 , 14 , 133 , 1 , 1 ,
+567 , 27623 , 14 , 133 , 1 , 1 ,
+567 , 27624 , 14 , 123 , 1 , 1 ,
+567 , 27625 , 9 , 133 , 1 , 1 ,
+567 , 27626 , 9 , 133 , 1 , 1 ,
+567 , 27627 , 9 , 123 , 1 , 1 ,
+567 , 27628 , 9 , 133 , 1 , 1 ,
+567 , 27629 , 9 , 133 , 1 , 1 ,
+567 , 27630 , 9 , 123 , 1 , 1 ,
+567 , 27631 , 9 , 123 , 1 , 1 ,
+567 , 27632 , 9 , 123 , 1 , 1 ,
+567 , 27633 , 9 , 123 , 1 , 1 ,
+567 , 27634 , 9 , 123 , 1 , 1 ,
+567 , 27635 , 7 , 133 , 1 , 1 ,
+567 , 27636 , 7 , 134 , 1 , 1 ,
+567 , 27637 , 7 , 123 , 1 , 1 ,
+567 , 27638 , 7 , 133 , 1 , 1 ,
+567 , 27639 , 7 , 144 , 1 , 1 ,
+567 , 27640 , 7 , 133 , 1 , 1 ,
+567 , 27641 , 7 , 133 , 1 , 1 ,
+567 , 27642 , 7 , 144 , 1 , 1 ,
+567 , 27643 , 7 , 134 , 1 , 1 ,
+567 , 27644 , 6 , 144 , 1 , 1 ,
+567 , 27645 , 5 , 144 , 1 , 1 ,
+567 , 27646 , 5 , 123 , 1 , 1 ,
+567 , 27647 , 5 , 123 , 1 , 1 ,
+567 , 27648 , 5 , 133 , 1 , 1 ,
+567 , 27649 , 5 , 133 , 1 , 1 ,
+567 , 27650 , 5 , 133 , 1 , 1 ,
+567 , 27651 , 5 , 133 , 1 , 1 ,
+567 , 27652 , 5 , 123 , 1 , 1 ,
+567 , 27653 , 5 , 133 , 1 , 1 ,
+567 , 27654 , 5 , 123 , 1 , 1 ,
+567 , 27655 , 683 , 1 , 1 , 1 , 27505 27542 27556 27562 27535 27467 27571 27486 27566 27587 27520 27496 27516 27511 27569 27578 27619 27472 27522 27494 27531 27594 27483 27616 27639 27621 27499 27598 27564 27617 27623 27563 27514 27652 27583 27524 27654 27537 27622 27602 27485 27597 27645 27476 27463 27481 27613 27553 27523 27509 27521 27469 27471 27504 27572 27629 27574 27532 27626 27526 27570 27653 27580 27460 27614 27549 27579 27478 27518 27612 27557 27530 27512 27491 27544 27484 27611 27595 27620 27648 27545 27482 27475 27457 27470 27641 27560 27615 27636 27461 27610 27497 27558 27581 27508 27590 27559 27633 27536 27503 27466 27538 27501 27632 27455 27605 27462 27490 27492 27646 27582 27599 27468 27576 27575 27513 27528 27489 27588 27649 27584 27533 27618 27596 27488 27624 27643 27498 27630 27604 27534 27543 27638 27585 27510 27561 27607 27591 27507 27637 27459 27464 27541 27635 27477 27458 27495 27601 27529 27473 27606 27609 27515 27465 27506 27539 27628 27487 27573 27552 27525 27603 27625 27550 27642 27650 27551 27592 27456 27548 27479 27586 27589 27527 27577 27474 27593 27640 27600 27608 27568 27546 27555 27517 27644 27627 27647 27540 27547 27500 27554 27631 27493 27502 27519 27567 27651 27480 27565 27634
+568 , 27656 , 3 , 41 , 1 , 1 ,
+568 , 27657 , 3 , 52 , 1 , 1 ,
+568 , 27658 , 3 , 52 , 1 , 1 ,
+568 , 27659 , 3 , 52 , 1 , 1 ,
+568 , 27660 , 3 , 41 , 1 , 1 ,
+568 , 27661 , 3 , 41 , 1 , 1 ,
+568 , 27662 , 3 , 41 , 1 , 1 ,
+568 , 27663 , 3 , 41 , 1 , 1 ,
+568 , 27664 , 3 , 41 , 1 , 1 ,
+568 , 27665 , 3 , 41 , 1 , 1 ,
+568 , 27666 , 68 , 11 , 1 , 1 , 27662 27656 27661 27660 27663 27664 27665 27659 27658 27657
+569 , 28069 , 113 , 62 , 1 , 1 ,
+569 , 28070 , 113 , 52 , 1 , 1 ,
+569 , 28071 , 113 , 62 , 1 , 1 ,
+569 , 28072 , 113 , 62 , 1 , 1 ,
+569 , 28073 , 112 , 62 , 1 , 1 ,
+569 , 28074 , 112 , 62 , 1 , 1 ,
+569 , 28075 , 110 , 62 , 1 , 1 ,
+569 , 28076 , 109 , 52 , 1 , 1 ,
+569 , 28077 , 105 , 52 , 1 , 1 ,
+569 , 28078 , 109 , 62 , 1 , 1 ,
+569 , 28079 , 109 , 52 , 1 , 1 ,
+569 , 28080 , 108 , 62 , 1 , 1 ,
+569 , 28081 , 105 , 62 , 1 , 1 ,
+569 , 28082 , 107 , 52 , 1 , 1 ,
+569 , 28083 , 120 , 52 , 1 , 1 ,
+569 , 28084 , 120 , 52 , 1 , 1 ,
+569 , 28085 , 119 , 52 , 1 , 1 ,
+569 , 28086 , 119 , 52 , 1 , 1 ,
+569 , 28087 , 119 , 52 , 1 , 1 ,
+569 , 28088 , 119 , 52 , 1 , 1 ,
+569 , 28089 , 119 , 52 , 1 , 1 ,
+569 , 28090 , 118 , 52 , 1 , 1 ,
+569 , 28091 , 118 , 52 , 1 , 1 ,
+569 , 28092 , 94 , 42 , 1 , 1 ,
+569 , 28093 , 94 , 52 , 1 , 1 ,
+569 , 28094 , 93 , 42 , 1 , 1 ,
+569 , 28095 , 91 , 52 , 1 , 1 ,
+569 , 28096 , 105 , 62 , 1 , 1 ,
+569 , 28097 , 104 , 52 , 1 , 1 ,
+569 , 28098 , 100 , 52 , 1 , 1 ,
+569 , 28099 , 100 , 52 , 1 , 1 ,
+569 , 28100 , 100 , 52 , 1 , 1 ,
+569 , 28101 , 99 , 52 , 1 , 1 ,
+569 , 28102 , 99 , 62 , 1 , 1 ,
+569 , 28103 , 99 , 52 , 1 , 1 ,
+569 , 28104 , 99 , 62 , 1 , 1 ,
+569 , 28105 , 94 , 62 , 1 , 1 ,
+569 , 28106 , 94 , 42 , 1 , 1 ,
+569 , 28107 , 118 , 62 , 1 , 1 ,
+569 , 28108 , 118 , 62 , 1 , 1 ,
+569 , 28109 , 105 , 62 , 1 , 1 ,
+569 , 28110 , 118 , 63 , 1 , 1 ,
+569 , 28111 , 118 , 62 , 1 , 1 ,
+569 , 28112 , 118 , 62 , 1 , 1 ,
+569 , 28113 , 118 , 62 , 1 , 1 ,
+569 , 28114 , 117 , 62 , 1 , 1 ,
+569 , 28115 , 117 , 62 , 1 , 1 ,
+569 , 28116 , 117 , 62 , 1 , 1 ,
+569 , 28117 , 113 , 62 , 1 , 1 ,
+569 , 28118 , 113 , 62 , 1 , 1 ,
+569 , 28119 , 113 , 62 , 1 , 1 ,
+569 , 28120 , 146 , 41 , 1 , 1 ,
+569 , 28121 , 145 , 41 , 1 , 1 ,
+569 , 28122 , 144 , 41 , 1 , 1 ,
+569 , 28123 , 143 , 41 , 1 , 1 ,
+569 , 28124 , 162 , 75 , 1 , 1 ,
+569 , 28125 , 162 , 42 , 1 , 1 ,
+569 , 28126 , 162 , 41 , 1 , 1 ,
+569 , 28127 , 158 , 75 , 1 , 1 ,
+569 , 28128 , 156 , 41 , 1 , 1 ,
+569 , 28129 , 156 , 52 , 1 , 1 ,
+569 , 28130 , 156 , 52 , 1 , 1 ,
+569 , 28131 , 156 , 52 , 1 , 1 ,
+569 , 28132 , 164 , 75 , 1 , 1 ,
+569 , 28133 , 163 , 52 , 1 , 1 ,
+569 , 28134 , 163 , 52 , 1 , 1 ,
+569 , 28135 , 163 , 52 , 1 , 1 ,
+569 , 28136 , 156 , 52 , 1 , 1 ,
+569 , 28137 , 156 , 52 , 1 , 1 ,
+569 , 28138 , 153 , 52 , 1 , 1 ,
+569 , 28139 , 147 , 52 , 1 , 1 ,
+569 , 28140 , 147 , 52 , 1 , 1 ,
+569 , 28141 , 123 , 62 , 1 , 1 ,
+569 , 28142 , 123 , 62 , 1 , 1 ,
+569 , 28143 , 122 , 62 , 1 , 1 ,
+569 , 28144 , 122 , 62 , 1 , 1 ,
+569 , 28145 , 121 , 62 , 1 , 1 ,
+569 , 28146 , 121 , 52 , 1 , 1 ,
+569 , 28147 , 121 , 52 , 1 , 1 ,
+569 , 28148 , 121 , 62 , 1 , 1 ,
+569 , 28149 , 121 , 62 , 1 , 1 ,
+569 , 28150 , 91 , 51 , 1 , 1 ,
+569 , 28151 , 91 , 52 , 1 , 1 ,
+569 , 28152 , 91 , 52 , 1 , 1 ,
+569 , 28153 , 91 , 41 , 1 , 1 ,
+569 , 28154 , 91 , 75 , 1 , 1 ,
+569 , 28155 , 91 , 41 , 1 , 1 ,
+569 , 28156 , 121 , 52 , 1 , 1 ,
+569 , 28157 , 120 , 52 , 1 , 1 ,
+569 , 28158 , 91 , 51 , 1 , 1 ,
+569 , 28159 , 91 , 41 , 1 , 1 ,
+569 , 28160 , 90 , 41 , 1 , 1 ,
+569 , 28161 , 90 , 52 , 1 , 1 ,
+569 , 28162 , 85 , 76 , 1 , 1 ,
+569 , 28163 , 85 , 76 , 1 , 1 ,
+569 , 28164 , 85 , 75 , 1 , 1 ,
+569 , 28165 , 82 , 75 , 1 , 1 ,
+569 , 28166 , 81 , 74 , 1 , 1 ,
+569 , 28167 , 19 , 219 , 1 , 1 ,
+569 , 28168 , 18 , 209 , 1 , 1 ,
+569 , 28169 , 18 , 198 , 1 , 1 ,
+569 , 28170 , 18 , 198 , 1 , 1 ,
+569 , 28171 , 17 , 198 , 1 , 1 ,
+569 , 28172 , 17 , 209 , 1 , 1 ,
+569 , 28173 , 17 , 209 , 1 , 1 ,
+569 , 28174 , 16 , 209 , 1 , 1 ,
+569 , 28175 , 16 , 188 , 1 , 1 ,
+569 , 28176 , 16 , 198 , 1 , 1 ,
+569 , 28177 , 10 , 336 , 1 , 1 ,
+569 , 28178 , 10 , 336 , 1 , 1 ,
+569 , 28179 , 10 , 326 , 1 , 1 ,
+569 , 28180 , 10 , 326 , 1 , 1 ,
+569 , 28181 , 10 , 316 , 1 , 1 ,
+569 , 28182 , 10 , 306 , 1 , 1 ,
+569 , 28183 , 10 , 296 , 1 , 1 ,
+569 , 28184 , 10 , 286 , 1 , 1 ,
+569 , 28185 , 10 , 286 , 1 , 1 ,
+569 , 28186 , 10 , 274 , 1 , 1 ,
+569 , 28187 , 10 , 264 , 1 , 1 ,
+569 , 28188 , 10 , 274 , 1 , 1 ,
+569 , 28189 , 10 , 244 , 1 , 1 ,
+569 , 28190 , 10 , 254 , 1 , 1 ,
+569 , 28191 , 10 , 245 , 1 , 1 ,
+569 , 28192 , 10 , 244 , 1 , 1 ,
+569 , 28193 , 10 , 68 , 1 , 1 ,
+569 , 28194 , 10 , 69 , 1 , 1 ,
+569 , 28195 , 10 , 65 , 1 , 1 ,
+569 , 28196 , 10 , 75 , 1 , 1 ,
+569 , 28197 , 10 , 68 , 1 , 1 ,
+569 , 28198 , 10 , 65 , 1 , 1 ,
+569 , 28199 , 36 , 62 , 1 , 1 ,
+569 , 28200 , 36 , 72 , 1 , 1 ,
+569 , 28201 , 36 , 62 , 1 , 1 ,
+569 , 28202 , 36 , 72 , 1 , 1 ,
+569 , 28203 , 36 , 72 , 1 , 1 ,
+569 , 28204 , 36 , 72 , 1 , 1 ,
+569 , 28205 , 35 , 62 , 1 , 1 ,
+569 , 28206 , 35 , 72 , 1 , 1 ,
+569 , 28207 , 35 , 72 , 1 , 1 ,
+569 , 28208 , 35 , 72 , 1 , 1 ,
+569 , 28209 , 31 , 72 , 1 , 1 ,
+569 , 28210 , 31 , 62 , 1 , 1 ,
+569 , 28211 , 31 , 73 , 1 , 1 ,
+569 , 28212 , 30 , 62 , 1 , 1 ,
+569 , 28213 , 30 , 73 , 1 , 1 ,
+569 , 28214 , 30 , 73 , 1 , 1 ,
+569 , 28215 , 30 , 73 , 1 , 1 ,
+569 , 28216 , 30 , 72 , 1 , 1 ,
+569 , 28217 , 30 , 72 , 1 , 1 ,
+569 , 28218 , 30 , 72 , 1 , 1 ,
+569 , 28219 , 25 , 82 , 1 , 1 ,
+569 , 28220 , 25 , 72 , 1 , 1 ,
+569 , 28221 , 25 , 72 , 1 , 1 ,
+569 , 28222 , 25 , 82 , 1 , 1 ,
+569 , 28223 , 25 , 72 , 1 , 1 ,
+569 , 28224 , 25 , 72 , 1 , 1 ,
+569 , 28225 , 25 , 72 , 1 , 1 ,
+569 , 28226 , 25 , 83 , 1 , 1 ,
+569 , 28227 , 24 , 82 , 1 , 1 ,
+569 , 28228 , 24 , 72 , 1 , 1 ,
+569 , 28229 , 18 , 82 , 1 , 1 ,
+569 , 28230 , 18 , 82 , 1 , 1 ,
+569 , 28231 , 18 , 92 , 1 , 1 ,
+569 , 28232 , 18 , 72 , 1 , 1 ,
+569 , 28233 , 17 , 82 , 1 , 1 ,
+569 , 28234 , 17 , 82 , 1 , 1 ,
+569 , 28235 , 17 , 82 , 1 , 1 ,
+569 , 28236 , 17 , 92 , 1 , 1 ,
+569 , 28237 , 17 , 72 , 1 , 1 ,
+569 , 28238 , 17 , 83 , 1 , 1 ,
+569 , 28239 , 11 , 92 , 1 , 1 ,
+569 , 28240 , 11 , 82 , 1 , 1 ,
+569 , 28241 , 11 , 72 , 1 , 1 ,
+569 , 28242 , 11 , 72 , 1 , 1 ,
+569 , 28243 , 11 , 72 , 1 , 1 ,
+569 , 28244 , 11 , 72 , 1 , 1 ,
+569 , 28245 , 11 , 72 , 1 , 1 ,
+569 , 28246 , 11 , 72 , 1 , 1 ,
+569 , 28247 , 11 , 72 , 1 , 1 ,
+569 , 28248 , 10 , 82 , 1 , 1 ,
+569 , 28249 , 8 , 83 , 1 , 1 ,
+569 , 28250 , 8 , 72 , 1 , 1 ,
+569 , 28251 , 8 , 72 , 1 , 1 ,
+569 , 28252 , 8 , 82 , 1 , 1 ,
+569 , 28253 , 8 , 72 , 1 , 1 ,
+569 , 28254 , 8 , 83 , 1 , 1 ,
+569 , 28255 , 8 , 73 , 1 , 1 ,
+569 , 28256 , 8 , 73 , 1 , 1 ,
+569 , 28257 , 8 , 83 , 1 , 1 ,
+569 , 28258 , 8 , 83 , 1 , 1 ,
+569 , 28259 , 5 , 72 , 1 , 1 ,
+569 , 28260 , 5 , 72 , 1 , 1 ,
+569 , 28261 , 5 , 72 , 1 , 1 ,
+569 , 28262 , 5 , 72 , 1 , 1 ,
+569 , 28263 , 5 , 72 , 1 , 1 ,
+569 , 28264 , 5 , 72 , 1 , 1 ,
+569 , 28265 , 5 , 72 , 1 , 1 ,
+569 , 28266 , 5 , 72 , 1 , 1 ,
+569 , 28267 , 5 , 72 , 1 , 1 ,
+569 , 28268 , 5 , 72 , 1 , 1 ,
+569 , 28269 , 369 , 143 , 1 , 1 , 28264 28204 28120 28100 28183 28200 28202 28197 28263 28116 28193 28195 28206 28115 28188 28262 28203 28105 28148 28091 28137 28085 28167 28164 28235 28180 28096 28182 28232 28093 28134 28171 28268 28160 28069 28113 28230 28207 28104 28098 28161 28101 28147 28081 28198 28244 28166 28169 28079 28153 28246 28176 28094 28220 28142 28222 28173 28110 28186 28109 28196 28119 28158 28144 28254 28111 28227 28201 28152 28089 28243 28217 28072 28231 28191 28078 28117 28165 28214 28129 28236 28238 28213 28257 28234 28099 28163 28122 28090 28087 28086 28145 28108 28084 28239 28133 28168 28082 28174 28241 28261 28103 28265 28175 28259 28194 28092 28228 28249 28251 28118 28112 28136 28223 28242 28247 28216 28131 28125 28221 28140 28139 28252 28143 28172 28121 28141 28209 28083 28224 28253 28225 28080 28181 28260 28266 28185 28267 28150 28123 28151 28208 28218 28149 28114 28126 28210 28070 28157 28128 28245 28130 28189 28138 28258 28205 28256 28127 28124 28170 28088 28187 28215 28184 28190 28219 28106 28179 28156 28226 28240 28155 28135 28229 28255 28107 28250 28074 28132 28233 28076 28199 28178 28237 28162 28211 28212 28071 28077 28192 28095 28248 28146 28075 28097 28073 28154 28102 28159 28177
+570 , 28270 , 7 , 41 , 1 , 1 ,
+570 , 28271 , 6 , 41 , 1 , 1 ,
+570 , 28272 , 6 , 41 , 1 , 1 ,
+570 , 28273 , 6 , 41 , 1 , 1 ,
+570 , 28274 , 6 , 52 , 1 , 1 ,
+570 , 28275 , 6 , 52 , 1 , 1 ,
+570 , 28276 , 6 , 52 , 1 , 1 ,
+570 , 28277 , 6 , 52 , 1 , 1 ,
+570 , 28278 , 6 , 52 , 1 , 1 ,
+570 , 28279 , 6 , 52 , 1 , 1 ,
+570 , 28280 , 4 , 52 , 1 , 1 ,
+570 , 28281 , 4 , 52 , 1 , 1 ,
+570 , 28282 , 4 , 41 , 1 , 1 ,
+570 , 28283 , 4 , 52 , 1 , 1 ,
+570 , 28284 , 4 , 52 , 1 , 1 ,
+570 , 28285 , 4 , 52 , 1 , 1 ,
+570 , 28286 , 4 , 52 , 1 , 1 ,
+570 , 28287 , 4 , 41 , 1 , 1 ,
+570 , 28288 , 4 , 52 , 1 , 1 ,
+570 , 28289 , 4 , 52 , 1 , 1 ,
+570 , 28290 , 71 , 11 , 1 , 1 , 28283 28285 28277 28282 28273 28274 28275 28286 28271 28276 28289 28272 28278 28287 28281 28279 28280 28288 28284 28270
+571 , 28291 , 5 , 41 , 1 , 1 ,
+571 , 28292 , 5 , 41 , 1 , 1 ,
+571 , 28293 , 5 , 52 , 1 , 1 ,
+571 , 28294 , 5 , 41 , 1 , 1 ,
+571 , 28295 , 5 , 52 , 1 , 1 ,
+571 , 28296 , 4 , 52 , 1 , 1 ,
+571 , 28297 , 4 , 52 , 1 , 1 ,
+571 , 28298 , 4 , 52 , 1 , 1 ,
+571 , 28299 , 4 , 52 , 1 , 1 ,
+571 , 28300 , 4 , 52 , 1 , 1 ,
+571 , 28301 , 2 , 41 , 1 , 1 ,
+571 , 28302 , 2 , 52 , 1 , 1 ,
+571 , 28303 , 2 , 52 , 1 , 1 ,
+571 , 28304 , 2 , 52 , 1 , 1 ,
+571 , 28305 , 2 , 52 , 1 , 1 ,
+571 , 28306 , 2 , 52 , 1 , 1 ,
+571 , 28307 , 2 , 52 , 1 , 1 ,
+571 , 28308 , 2 , 41 , 1 , 1 ,
+571 , 28309 , 2 , 41 , 1 , 1 ,
+571 , 28310 , 2 , 52 , 1 , 1 ,
+571 , 28311 , 68 , 11 , 1 , 1 , 28295 28291 28292 28309 28308 28300 28294 28310 28297 28296 28293 28307 28306 28303 28305 28304 28299 28302 28298 28301
+572 , 28312 , 24 , 31 , 1 , 1 ,
+572 , 28313 , 24 , 41 , 1 , 1 ,
+572 , 28314 , 24 , 31 , 1 , 1 ,
+572 , 28315 , 23 , 31 , 1 , 1 ,
+572 , 28316 , 23 , 31 , 1 , 1 ,
+572 , 28317 , 23 , 31 , 1 , 1 ,
+572 , 28318 , 23 , 31 , 1 , 1 ,
+572 , 28319 , 23 , 31 , 1 , 1 ,
+572 , 28320 , 20 , 31 , 1 , 1 ,
+572 , 28321 , 20 , 31 , 1 , 1 ,
+572 , 28322 , 20 , 31 , 1 , 1 ,
+572 , 28323 , 20 , 31 , 1 , 1 ,
+572 , 28324 , 20 , 31 , 1 , 1 ,
+572 , 28325 , 20 , 32 , 1 , 1 ,
+572 , 28326 , 19 , 32 , 1 , 1 ,
+572 , 28327 , 19 , 41 , 1 , 1 ,
+572 , 28328 , 19 , 41 , 1 , 1 ,
+572 , 28329 , 14 , 53 , 1 , 1 ,
+572 , 28330 , 13 , 53 , 1 , 1 ,
+572 , 28331 , 13 , 53 , 1 , 1 ,
+572 , 28332 , 13 , 53 , 1 , 1 ,
+572 , 28333 , 12 , 53 , 1 , 1 ,
+572 , 28334 , 12 , 53 , 1 , 1 ,
+572 , 28335 , 12 , 53 , 1 , 1 ,
+572 , 28336 , 11 , 53 , 1 , 1 ,
+572 , 28337 , 11 , 53 , 1 , 1 ,
+572 , 28338 , 11 , 53 , 1 , 1 ,
+572 , 28339 , 7 , 173 , 1 , 1 ,
+572 , 28340 , 7 , 173 , 1 , 1 ,
+572 , 28341 , 7 , 173 , 1 , 1 ,
+572 , 28342 , 7 , 173 , 1 , 1 ,
+572 , 28343 , 7 , 183 , 1 , 1 ,
+572 , 28344 , 7 , 183 , 1 , 1 ,
+572 , 28345 , 6 , 183 , 1 , 1 ,
+572 , 28346 , 6 , 193 , 1 , 1 ,
+572 , 28347 , 6 , 203 , 1 , 1 ,
+572 , 28348 , 6 , 203 , 1 , 1 ,
+572 , 28349 , 6 , 203 , 1 , 1 ,
+572 , 28350 , 6 , 203 , 1 , 1 ,
+572 , 28351 , 6 , 213 , 1 , 1 ,
+572 , 28352 , 6 , 213 , 1 , 1 ,
+572 , 28353 , 6 , 224 , 1 , 1 ,
+572 , 28354 , 6 , 234 , 1 , 1 ,
+572 , 28355 , 7 , 35 , 1 , 1 ,
+572 , 28356 , 7 , 39 , 1 , 1 ,
+572 , 28357 , 7 , 46 , 1 , 1 ,
+572 , 28358 , 7 , 39 , 1 , 1 ,
+572 , 28359 , 7 , 37 , 1 , 1 ,
+572 , 28360 , 7 , 50 , 1 , 1 ,
+572 , 28361 , 18 , 41 , 1 , 1 ,
+572 , 28362 , 16 , 31 , 1 , 1 ,
+572 , 28363 , 16 , 31 , 1 , 1 ,
+572 , 28364 , 16 , 41 , 1 , 1 ,
+572 , 28365 , 16 , 41 , 1 , 1 ,
+572 , 28366 , 16 , 41 , 1 , 1 ,
+572 , 28367 , 16 , 41 , 1 , 1 ,
+572 , 28368 , 15 , 41 , 1 , 1 ,
+572 , 28369 , 15 , 41 , 1 , 1 ,
+572 , 28370 , 15 , 41 , 1 , 1 ,
+572 , 28371 , 15 , 41 , 1 , 1 ,
+572 , 28372 , 12 , 41 , 1 , 1 ,
+572 , 28373 , 12 , 41 , 1 , 1 ,
+572 , 28374 , 12 , 31 , 1 , 1 ,
+572 , 28375 , 11 , 31 , 1 , 1 ,
+572 , 28376 , 11 , 31 , 1 , 1 ,
+572 , 28377 , 11 , 41 , 1 , 1 ,
+572 , 28378 , 11 , 41 , 1 , 1 ,
+572 , 28379 , 11 , 41 , 1 , 1 ,
+572 , 28380 , 11 , 31 , 1 , 1 ,
+572 , 28381 , 11 , 41 , 1 , 1 ,
+572 , 28382 , 8 , 41 , 1 , 1 ,
+572 , 28383 , 8 , 41 , 1 , 1 ,
+572 , 28384 , 8 , 41 , 1 , 1 ,
+572 , 28385 , 8 , 31 , 1 , 1 ,
+572 , 28386 , 8 , 41 , 1 , 1 ,
+572 , 28387 , 8 , 41 , 1 , 1 ,
+572 , 28388 , 7 , 41 , 1 , 1 ,
+572 , 28389 , 7 , 41 , 1 , 1 ,
+572 , 28390 , 7 , 41 , 1 , 1 ,
+572 , 28391 , 7 , 31 , 1 , 1 ,
+572 , 28392 , 5 , 41 , 1 , 1 ,
+572 , 28393 , 5 , 41 , 1 , 1 ,
+572 , 28394 , 5 , 41 , 1 , 1 ,
+572 , 28395 , 5 , 31 , 1 , 1 ,
+572 , 28396 , 5 , 31 , 1 , 1 ,
+572 , 28397 , 5 , 31 , 1 , 1 ,
+572 , 28398 , 5 , 31 , 1 , 1 ,
+572 , 28399 , 5 , 31 , 1 , 1 ,
+572 , 28400 , 5 , 31 , 1 , 1 ,
+572 , 28401 , 5 , 31 , 1 , 1 ,
+572 , 28402 , 3 , 31 , 1 , 1 ,
+572 , 28403 , 3 , 31 , 1 , 1 ,
+572 , 28404 , 3 , 31 , 1 , 1 ,
+572 , 28405 , 2 , 31 , 1 , 1 ,
+572 , 28406 , 2 , 32 , 1 , 1 ,
+572 , 28407 , 2 , 31 , 1 , 1 ,
+572 , 28408 , 2 , 31 , 1 , 1 ,
+572 , 28409 , 2 , 31 , 1 , 1 ,
+572 , 28410 , 2 , 31 , 1 , 1 ,
+572 , 28411 , 2 , 31 , 1 , 1 ,
+572 , 28412 , 265 , 41 , 1 , 1 , 28358 28408 28387 28388 28345 28399 28328 28364 28377 28331 28322 28410 28344 28405 28352 28372 28339 28357 28346 28366 28380 28401 28317 28365 28342 28343 28374 28370 28334 28376 28403 28381 28313 28356 28321 28378 28340 28353 28396 28394 28318 28371 28409 28389 28335 28363 28338 28360 28337 28398 28330 28333 28392 28397 28354 28326 28362 28347 28341 28411 28407 28350 28359 28312 28323 28375 28324 28395 28325 28329 28368 28319 28316 28400 28314 28355 28383 28349 28406 28373 28332 28348 28390 28320 28315 28361 28382 28393 28384 28367 28379 28385 28386 28336 28327 28369 28402 28351 28391 28404
+573 , 28413 , 13 , 84 , 1 , 1 ,
+573 , 28414 , 13 , 74 , 1 , 1 ,
+573 , 28415 , 13 , 84 , 1 , 1 ,
+573 , 28416 , 12 , 84 , 1 , 1 ,
+573 , 28417 , 12 , 84 , 1 , 1 ,
+573 , 28418 , 12 , 73 , 1 , 1 ,
+573 , 28419 , 11 , 73 , 1 , 1 ,
+573 , 28420 , 11 , 73 , 1 , 1 ,
+573 , 28421 , 11 , 53 , 1 , 1 ,
+573 , 28422 , 9 , 196 , 1 , 1 ,
+573 , 28423 , 9 , 196 , 1 , 1 ,
+573 , 28424 , 9 , 196 , 1 , 1 ,
+573 , 28425 , 9 , 196 , 1 , 1 ,
+573 , 28426 , 9 , 196 , 1 , 1 ,
+573 , 28427 , 9 , 196 , 1 , 1 ,
+573 , 28428 , 8 , 184 , 1 , 1 ,
+573 , 28429 , 8 , 194 , 1 , 1 ,
+573 , 28430 , 8 , 184 , 1 , 1 ,
+573 , 28431 , 8 , 194 , 1 , 1 ,
+573 , 28432 , 8 , 184 , 1 , 1 ,
+573 , 28433 , 8 , 184 , 1 , 1 ,
+573 , 28434 , 8 , 173 , 1 , 1 ,
+573 , 28435 , 8 , 173 , 1 , 1 ,
+573 , 28436 , 8 , 184 , 1 , 1 ,
+573 , 28437 , 8 , 173 , 1 , 1 ,
+573 , 28438 , 5 , 40 , 1 , 1 ,
+573 , 28439 , 5 , 50 , 1 , 1 ,
+573 , 28440 , 5 , 38 , 1 , 1 ,
+573 , 28441 , 5 , 50 , 1 , 1 ,
+573 , 28442 , 5 , 38 , 1 , 1 ,
+573 , 28443 , 5 , 40 , 1 , 1 ,
+573 , 28444 , 20 , 41 , 1 , 1 ,
+573 , 28445 , 20 , 41 , 1 , 1 ,
+573 , 28446 , 20 , 41 , 1 , 1 ,
+573 , 28447 , 20 , 52 , 1 , 1 ,
+573 , 28448 , 20 , 41 , 1 , 1 ,
+573 , 28449 , 20 , 41 , 1 , 1 ,
+573 , 28450 , 20 , 52 , 1 , 1 ,
+573 , 28451 , 20 , 41 , 1 , 1 ,
+573 , 28452 , 19 , 52 , 1 , 1 ,
+573 , 28453 , 17 , 41 , 1 , 1 ,
+573 , 28454 , 17 , 52 , 1 , 1 ,
+573 , 28455 , 17 , 41 , 1 , 1 ,
+573 , 28456 , 17 , 41 , 1 , 1 ,
+573 , 28457 , 17 , 41 , 1 , 1 ,
+573 , 28458 , 17 , 41 , 1 , 1 ,
+573 , 28459 , 17 , 41 , 1 , 1 ,
+573 , 28460 , 16 , 52 , 1 , 1 ,
+573 , 28461 , 16 , 41 , 1 , 1 ,
+573 , 28462 , 16 , 41 , 1 , 1 ,
+573 , 28463 , 14 , 41 , 1 , 1 ,
+573 , 28464 , 14 , 41 , 1 , 1 ,
+573 , 28465 , 14 , 41 , 1 , 1 ,
+573 , 28466 , 14 , 41 , 1 , 1 ,
+573 , 28467 , 14 , 41 , 1 , 1 ,
+573 , 28468 , 14 , 52 , 1 , 1 ,
+573 , 28469 , 13 , 52 , 1 , 1 ,
+573 , 28470 , 13 , 41 , 1 , 1 ,
+573 , 28471 , 13 , 41 , 1 , 1 ,
+573 , 28472 , 13 , 52 , 1 , 1 ,
+573 , 28473 , 11 , 52 , 1 , 1 ,
+573 , 28474 , 10 , 41 , 1 , 1 ,
+573 , 28475 , 10 , 52 , 1 , 1 ,
+573 , 28476 , 10 , 41 , 1 , 1 ,
+573 , 28477 , 10 , 52 , 1 , 1 ,
+573 , 28478 , 10 , 52 , 1 , 1 ,
+573 , 28479 , 10 , 52 , 1 , 1 ,
+573 , 28480 , 10 , 52 , 1 , 1 ,
+573 , 28481 , 10 , 52 , 1 , 1 ,
+573 , 28482 , 10 , 52 , 1 , 1 ,
+573 , 28483 , 8 , 52 , 1 , 1 ,
+573 , 28484 , 7 , 52 , 1 , 1 ,
+573 , 28485 , 7 , 52 , 1 , 1 ,
+573 , 28486 , 7 , 62 , 1 , 1 ,
+573 , 28487 , 7 , 62 , 1 , 1 ,
+573 , 28488 , 7 , 62 , 1 , 1 ,
+573 , 28489 , 7 , 52 , 1 , 1 ,
+573 , 28490 , 7 , 52 , 1 , 1 ,
+573 , 28491 , 7 , 52 , 1 , 1 ,
+573 , 28492 , 6 , 52 , 1 , 1 ,
+573 , 28493 , 4 , 62 , 1 , 1 ,
+573 , 28494 , 4 , 52 , 1 , 1 ,
+573 , 28495 , 4 , 62 , 1 , 1 ,
+573 , 28496 , 4 , 41 , 1 , 1 ,
+573 , 28497 , 4 , 41 , 1 , 1 ,
+573 , 28498 , 4 , 41 , 1 , 1 ,
+573 , 28499 , 4 , 41 , 1 , 1 ,
+573 , 28500 , 4 , 41 , 1 , 1 ,
+573 , 28501 , 4 , 41 , 1 , 1 ,
+573 , 28502 , 4 , 41 , 1 , 1 ,
+573 , 28503 , 2 , 42 , 1 , 1 ,
+573 , 28504 , 2 , 42 , 1 , 1 ,
+573 , 28505 , 2 , 42 , 1 , 1 ,
+573 , 28506 , 2 , 52 , 1 , 1 ,
+573 , 28507 , 2 , 42 , 1 , 1 ,
+573 , 28508 , 2 , 42 , 1 , 1 ,
+573 , 28509 , 2 , 42 , 1 , 1 ,
+573 , 28510 , 2 , 42 , 1 , 1 ,
+573 , 28511 , 2 , 42 , 1 , 1 ,
+573 , 28512 , 2 , 42 , 1 , 1 ,
+573 , 28513 , 223 , 41 , 1 , 1 , 28463 28496 28488 28427 28467 28424 28422 28459 28492 28448 28443 28490 28430 28451 28436 28446 28499 28461 28476 28483 28510 28504 28453 28413 28506 28493 28456 28509 28421 28429 28505 28462 28418 28482 28470 28495 28425 28420 28494 28435 28419 28438 28423 28454 28452 28460 28502 28415 28477 28489 28434 28475 28442 28479 28471 28487 28507 28432 28468 28469 28447 28486 28457 28474 28414 28455 28445 28440 28416 28480 28508 28465 28478 28497 28498 28428 28481 28444 28500 28464 28426 28501 28439 28485 28466 28491 28511 28512 28450 28441 28449 28472 28503 28417 28431 28458 28433 28473 28484 28437
+574 , 28514 , 93 , 53 , 1 , 1 ,
+574 , 28515 , 91 , 52 , 1 , 1 ,
+574 , 28516 , 91 , 52 , 1 , 1 ,
+574 , 28517 , 90 , 72 , 1 , 1 ,
+574 , 28518 , 90 , 52 , 1 , 1 ,
+574 , 28519 , 90 , 41 , 1 , 1 ,
+574 , 28520 , 90 , 52 , 1 , 1 ,
+574 , 28521 , 90 , 41 , 1 , 1 ,
+574 , 28522 , 90 , 52 , 1 , 1 ,
+574 , 28523 , 90 , 52 , 1 , 1 ,
+574 , 28524 , 90 , 52 , 1 , 1 ,
+574 , 28525 , 90 , 52 , 1 , 1 ,
+574 , 28526 , 90 , 52 , 1 , 1 ,
+574 , 28527 , 89 , 41 , 1 , 1 ,
+574 , 28528 , 89 , 52 , 1 , 1 ,
+574 , 28529 , 86 , 31 , 1 , 1 ,
+574 , 28530 , 86 , 31 , 1 , 1 ,
+574 , 28531 , 120 , 42 , 1 , 1 ,
+574 , 28532 , 119 , 53 , 1 , 1 ,
+574 , 28533 , 118 , 42 , 1 , 1 ,
+574 , 28534 , 117 , 52 , 1 , 1 ,
+574 , 28535 , 115 , 52 , 1 , 1 ,
+574 , 28536 , 115 , 41 , 1 , 1 ,
+574 , 28537 , 115 , 32 , 1 , 1 ,
+574 , 28538 , 114 , 41 , 1 , 1 ,
+574 , 28539 , 113 , 41 , 1 , 1 ,
+574 , 28540 , 112 , 41 , 1 , 1 ,
+574 , 28541 , 112 , 41 , 1 , 1 ,
+574 , 28542 , 131 , 31 , 1 , 1 ,
+574 , 28543 , 129 , 31 , 1 , 1 ,
+574 , 28544 , 129 , 31 , 1 , 1 ,
+574 , 28545 , 127 , 41 , 1 , 1 ,
+574 , 28546 , 127 , 41 , 1 , 1 ,
+574 , 28547 , 126 , 41 , 1 , 1 ,
+574 , 28548 , 126 , 41 , 1 , 1 ,
+574 , 28549 , 126 , 31 , 1 , 1 ,
+574 , 28550 , 126 , 41 , 1 , 1 ,
+574 , 28551 , 112 , 41 , 1 , 1 ,
+574 , 28552 , 111 , 41 , 1 , 1 ,
+574 , 28553 , 111 , 41 , 1 , 1 ,
+574 , 28554 , 111 , 62 , 1 , 1 ,
+574 , 28555 , 111 , 52 , 1 , 1 ,
+574 , 28556 , 108 , 43 , 1 , 1 ,
+574 , 28557 , 107 , 43 , 1 , 1 ,
+574 , 28558 , 106 , 43 , 1 , 1 ,
+574 , 28559 , 106 , 43 , 1 , 1 ,
+574 , 28560 , 105 , 43 , 1 , 1 ,
+574 , 28561 , 126 , 42 , 1 , 1 ,
+574 , 28562 , 126 , 42 , 1 , 1 ,
+574 , 28563 , 126 , 41 , 1 , 1 ,
+574 , 28564 , 126 , 41 , 1 , 1 ,
+574 , 28565 , 126 , 41 , 1 , 1 ,
+574 , 28566 , 126 , 41 , 1 , 1 ,
+574 , 28567 , 125 , 52 , 1 , 1 ,
+574 , 28568 , 124 , 41 , 1 , 1 ,
+574 , 28569 , 122 , 52 , 1 , 1 ,
+574 , 28570 , 121 , 52 , 1 , 1 ,
+574 , 28571 , 121 , 52 , 1 , 1 ,
+574 , 28572 , 94 , 42 , 1 , 1 ,
+574 , 28573 , 94 , 41 , 1 , 1 ,
+574 , 28574 , 94 , 52 , 1 , 1 ,
+574 , 28575 , 94 , 52 , 1 , 1 ,
+574 , 28576 , 94 , 73 , 1 , 1 ,
+574 , 28577 , 94 , 41 , 1 , 1 ,
+574 , 28578 , 94 , 53 , 1 , 1 ,
+574 , 28579 , 94 , 41 , 1 , 1 ,
+574 , 28580 , 94 , 53 , 1 , 1 ,
+574 , 28581 , 56 , 44 , 1 , 1 ,
+574 , 28582 , 55 , 46 , 1 , 1 ,
+574 , 28583 , 53 , 53 , 1 , 1 ,
+574 , 28584 , 53 , 44 , 1 , 1 ,
+574 , 28585 , 52 , 44 , 1 , 1 ,
+574 , 28586 , 52 , 43 , 1 , 1 ,
+574 , 28587 , 53 , 31 , 1 , 1 ,
+574 , 28588 , 53 , 41 , 1 , 1 ,
+574 , 28589 , 53 , 41 , 1 , 1 ,
+574 , 28590 , 52 , 41 , 1 , 1 ,
+574 , 28591 , 52 , 31 , 1 , 1 ,
+574 , 28592 , 50 , 41 , 1 , 1 ,
+574 , 28593 , 50 , 41 , 1 , 1 ,
+574 , 28594 , 49 , 41 , 1 , 1 ,
+574 , 28595 , 49 , 41 , 1 , 1 ,
+574 , 28596 , 49 , 41 , 1 , 1 ,
+574 , 28597 , 49 , 42 , 1 , 1 ,
+574 , 28598 , 49 , 41 , 1 , 1 ,
+574 , 28599 , 49 , 41 , 1 , 1 ,
+574 , 28600 , 48 , 52 , 1 , 1 ,
+574 , 28601 , 48 , 41 , 1 , 1 ,
+574 , 28602 , 45 , 62 , 1 , 1 ,
+574 , 28603 , 45 , 41 , 1 , 1 ,
+574 , 28604 , 44 , 42 , 1 , 1 ,
+574 , 28605 , 44 , 41 , 1 , 1 ,
+574 , 28606 , 44 , 31 , 1 , 1 ,
+574 , 28607 , 44 , 52 , 1 , 1 ,
+574 , 28608 , 44 , 52 , 1 , 1 ,
+574 , 28609 , 44 , 72 , 1 , 1 ,
+574 , 28610 , 43 , 42 , 1 , 1 ,
+574 , 28611 , 26 , 115 , 1 , 1 ,
+574 , 28612 , 25 , 105 , 1 , 1 ,
+574 , 28613 , 25 , 105 , 1 , 1 ,
+574 , 28614 , 25 , 105 , 1 , 1 ,
+574 , 28615 , 24 , 94 , 1 , 1 ,
+574 , 28616 , 24 , 105 , 1 , 1 ,
+574 , 28617 , 24 , 105 , 1 , 1 ,
+574 , 28618 , 23 , 105 , 1 , 1 ,
+574 , 28619 , 23 , 105 , 1 , 1 ,
+574 , 28620 , 23 , 105 , 1 , 1 ,
+574 , 28621 , 16 , 235 , 1 , 1 ,
+574 , 28622 , 16 , 235 , 1 , 1 ,
+574 , 28623 , 16 , 235 , 1 , 1 ,
+574 , 28624 , 16 , 225 , 1 , 1 ,
+574 , 28625 , 15 , 235 , 1 , 1 ,
+574 , 28626 , 15 , 225 , 1 , 1 ,
+574 , 28627 , 15 , 225 , 1 , 1 ,
+574 , 28628 , 15 , 215 , 1 , 1 ,
+574 , 28629 , 15 , 215 , 1 , 1 ,
+574 , 28630 , 15 , 215 , 1 , 1 ,
+574 , 28631 , 15 , 205 , 1 , 1 ,
+574 , 28632 , 15 , 205 , 1 , 1 ,
+574 , 28633 , 15 , 195 , 1 , 1 ,
+574 , 28634 , 15 , 195 , 1 , 1 ,
+574 , 28635 , 15 , 195 , 1 , 1 ,
+574 , 28636 , 15 , 195 , 1 , 1 ,
+574 , 28637 , 8 , 39 , 1 , 1 ,
+574 , 28638 , 8 , 39 , 1 , 1 ,
+574 , 28639 , 8 , 37 , 1 , 1 ,
+574 , 28640 , 8 , 37 , 1 , 1 ,
+574 , 28641 , 8 , 38 , 1 , 1 ,
+574 , 28642 , 8 , 38 , 1 , 1 ,
+574 , 28643 , 43 , 62 , 1 , 1 ,
+574 , 28644 , 39 , 72 , 1 , 1 ,
+574 , 28645 , 39 , 72 , 1 , 1 ,
+574 , 28646 , 39 , 62 , 1 , 1 ,
+574 , 28647 , 39 , 72 , 1 , 1 ,
+574 , 28648 , 39 , 52 , 1 , 1 ,
+574 , 28649 , 38 , 41 , 1 , 1 ,
+574 , 28650 , 38 , 72 , 1 , 1 ,
+574 , 28651 , 38 , 72 , 1 , 1 ,
+574 , 28652 , 38 , 72 , 1 , 1 ,
+574 , 28653 , 38 , 72 , 1 , 1 ,
+574 , 28654 , 35 , 72 , 1 , 1 ,
+574 , 28655 , 34 , 62 , 1 , 1 ,
+574 , 28656 , 34 , 62 , 1 , 1 ,
+574 , 28657 , 34 , 42 , 1 , 1 ,
+574 , 28658 , 34 , 82 , 1 , 1 ,
+574 , 28659 , 34 , 83 , 1 , 1 ,
+574 , 28660 , 34 , 82 , 1 , 1 ,
+574 , 28661 , 34 , 72 , 1 , 1 ,
+574 , 28662 , 33 , 62 , 1 , 1 ,
+574 , 28663 , 33 , 52 , 1 , 1 ,
+574 , 28664 , 29 , 52 , 1 , 1 ,
+574 , 28665 , 28 , 52 , 1 , 1 ,
+574 , 28666 , 28 , 83 , 1 , 1 ,
+574 , 28667 , 28 , 83 , 1 , 1 ,
+574 , 28668 , 28 , 52 , 1 , 1 ,
+574 , 28669 , 28 , 52 , 1 , 1 ,
+574 , 28670 , 28 , 52 , 1 , 1 ,
+574 , 28671 , 28 , 52 , 1 , 1 ,
+574 , 28672 , 27 , 82 , 1 , 1 ,
+574 , 28673 , 27 , 82 , 1 , 1 ,
+574 , 28674 , 22 , 52 , 1 , 1 ,
+574 , 28675 , 22 , 52 , 1 , 1 ,
+574 , 28676 , 22 , 52 , 1 , 1 ,
+574 , 28677 , 22 , 52 , 1 , 1 ,
+574 , 28678 , 21 , 92 , 1 , 1 ,
+574 , 28679 , 21 , 82 , 1 , 1 ,
+574 , 28680 , 21 , 52 , 1 , 1 ,
+574 , 28681 , 21 , 52 , 1 , 1 ,
+574 , 28682 , 21 , 52 , 1 , 1 ,
+574 , 28683 , 21 , 52 , 1 , 1 ,
+574 , 28684 , 14 , 62 , 1 , 1 ,
+574 , 28685 , 14 , 52 , 1 , 1 ,
+574 , 28686 , 14 , 52 , 1 , 1 ,
+574 , 28687 , 13 , 72 , 1 , 1 ,
+574 , 28688 , 13 , 52 , 1 , 1 ,
+574 , 28689 , 13 , 52 , 1 , 1 ,
+574 , 28690 , 13 , 62 , 1 , 1 ,
+574 , 28691 , 13 , 52 , 1 , 1 ,
+574 , 28692 , 13 , 62 , 1 , 1 ,
+574 , 28693 , 13 , 52 , 1 , 1 ,
+574 , 28694 , 7 , 52 , 1 , 1 ,
+574 , 28695 , 7 , 62 , 1 , 1 ,
+574 , 28696 , 7 , 62 , 1 , 1 ,
+574 , 28697 , 7 , 62 , 1 , 1 ,
+574 , 28698 , 6 , 52 , 1 , 1 ,
+574 , 28699 , 6 , 62 , 1 , 1 ,
+574 , 28700 , 6 , 62 , 1 , 1 ,
+574 , 28701 , 6 , 52 , 1 , 1 ,
+574 , 28702 , 6 , 62 , 1 , 1 ,
+574 , 28703 , 6 , 52 , 1 , 1 ,
+574 , 28704 , 3 , 52 , 1 , 1 ,
+574 , 28705 , 3 , 62 , 1 , 1 ,
+574 , 28706 , 3 , 52 , 1 , 1 ,
+574 , 28707 , 3 , 52 , 1 , 1 ,
+574 , 28708 , 3 , 62 , 1 , 1 ,
+574 , 28709 , 3 , 52 , 1 , 1 ,
+574 , 28710 , 3 , 62 , 1 , 1 ,
+574 , 28711 , 3 , 52 , 1 , 1 ,
+574 , 28712 , 3 , 52 , 1 , 1 ,
+574 , 28713 , 3 , 41 , 1 , 1 ,
+574 , 28714 , 276 , 72 , 1 , 1 , 28639 28707 28642 28519 28524 28591 28522 28701 28663 28633 28577 28711 28523 28651 28678 28661 28555 28557 28529 28705 28586 28640 28645 28624 28649 28610 28587 28602 28595 28680 28515 28644 28672 28608 28704 28571 28620 28598 28578 28653 28579 28564 28656 28708 28648 28541 28676 28547 28702 28559 28580 28604 28589 28655 28619 28647 28535 28686 28692 28712 28530 28641 28698 28549 28537 28592 28684 28695 28623 28666 28679 28567 28534 28625 28652 28664 28576 28709 28553 28629 28637 28566 28599 28609 28570 28552 28601 28540 28670 28572 28643 28558 28527 28673 28617 28626 28561 28628 28688 28546 28706 28593 28533 28583 28581 28669 28627 28539 28531 28556 28631 28584 28568 28658 28597 28668 28536 28563 28520 28525 28703 28590 28560 28667 28542 28514 28691 28569 28622 28585 28618 28562 28518 28603 28575 28607 28683 28554 28671 28543 28611 28596 28532 28544 28550 28551 28687 28621 28696 28615 28690 28634 28697 28635 28600 28689 28646 28516 28650 28636 28677 28685 28659 28521 28713 28528 28682 28538 28657 28614 28616 28662 28681 28517 28660 28630 28674 28606 28654 28693 28700 28588 28694 28605 28638 28573 28665 28526 28565 28582 28710 28675 28613 28545 28548 28699 28612 28594 28632 28574
+575 , 28715 , 110 , 41 , 1 , 1 ,
+575 , 28716 , 110 , 41 , 1 , 1 ,
+575 , 28717 , 107 , 41 , 1 , 1 ,
+575 , 28718 , 104 , 31 , 1 , 1 ,
+575 , 28719 , 104 , 41 , 1 , 1 ,
+575 , 28720 , 104 , 41 , 1 , 1 ,
+575 , 28721 , 101 , 41 , 1 , 1 ,
+575 , 28722 , 104 , 41 , 1 , 1 ,
+575 , 28723 , 114 , 31 , 1 , 1 ,
+575 , 28724 , 114 , 31 , 1 , 1 ,
+575 , 28725 , 114 , 31 , 1 , 1 ,
+575 , 28726 , 114 , 31 , 1 , 1 ,
+575 , 28727 , 114 , 31 , 1 , 1 ,
+575 , 28728 , 114 , 42 , 1 , 1 ,
+575 , 28729 , 113 , 31 , 1 , 1 ,
+575 , 28730 , 111 , 31 , 1 , 1 ,
+575 , 28731 , 111 , 31 , 1 , 1 ,
+575 , 28732 , 111 , 41 , 1 , 1 ,
+575 , 28733 , 111 , 41 , 1 , 1 ,
+575 , 28734 , 111 , 41 , 1 , 1 ,
+575 , 28735 , 110 , 41 , 1 , 1 ,
+575 , 28736 , 110 , 41 , 1 , 1 ,
+575 , 28737 , 110 , 41 , 1 , 1 ,
+575 , 28738 , 119 , 31 , 1 , 1 ,
+575 , 28739 , 119 , 31 , 1 , 1 ,
+575 , 28740 , 119 , 31 , 1 , 1 ,
+575 , 28741 , 119 , 31 , 1 , 1 ,
+575 , 28742 , 119 , 31 , 1 , 1 ,
+575 , 28743 , 85 , 52 , 1 , 1 ,
+575 , 28744 , 85 , 42 , 1 , 1 ,
+575 , 28745 , 84 , 41 , 1 , 1 ,
+575 , 28746 , 83 , 52 , 1 , 1 ,
+575 , 28747 , 81 , 52 , 1 , 1 ,
+575 , 28748 , 81 , 41 , 1 , 1 ,
+575 , 28749 , 80 , 42 , 1 , 1 ,
+575 , 28750 , 80 , 41 , 1 , 1 ,
+575 , 28751 , 80 , 52 , 1 , 1 ,
+575 , 28752 , 80 , 52 , 1 , 1 ,
+575 , 28753 , 80 , 41 , 1 , 1 ,
+575 , 28754 , 80 , 52 , 1 , 1 ,
+575 , 28755 , 79 , 31 , 1 , 1 ,
+575 , 28756 , 118 , 31 , 1 , 1 ,
+575 , 28757 , 118 , 31 , 1 , 1 ,
+575 , 28758 , 118 , 31 , 1 , 1 ,
+575 , 28759 , 117 , 31 , 1 , 1 ,
+575 , 28760 , 114 , 31 , 1 , 1 ,
+575 , 28761 , 114 , 41 , 1 , 1 ,
+575 , 28762 , 114 , 41 , 1 , 1 ,
+575 , 28763 , 114 , 41 , 1 , 1 ,
+575 , 28764 , 101 , 41 , 1 , 1 ,
+575 , 28765 , 100 , 41 , 1 , 1 ,
+575 , 28766 , 100 , 43 , 1 , 1 ,
+575 , 28767 , 100 , 41 , 1 , 1 ,
+575 , 28768 , 99 , 52 , 1 , 1 ,
+575 , 28769 , 99 , 41 , 1 , 1 ,
+575 , 28770 , 99 , 41 , 1 , 1 ,
+575 , 28771 , 98 , 41 , 1 , 1 ,
+575 , 28772 , 96 , 42 , 1 , 1 ,
+575 , 28773 , 95 , 41 , 1 , 1 ,
+575 , 28774 , 94 , 52 , 1 , 1 ,
+575 , 28775 , 90 , 43 , 1 , 1 ,
+575 , 28776 , 90 , 43 , 1 , 1 ,
+575 , 28777 , 90 , 41 , 1 , 1 ,
+575 , 28778 , 89 , 41 , 1 , 1 ,
+575 , 28779 , 89 , 41 , 1 , 1 ,
+575 , 28780 , 89 , 52 , 1 , 1 ,
+575 , 28781 , 88 , 43 , 1 , 1 ,
+575 , 28782 , 86 , 41 , 1 , 1 ,
+575 , 28783 , 85 , 43 , 1 , 1 ,
+575 , 28784 , 85 , 52 , 1 , 1 ,
+575 , 28785 , 85 , 52 , 1 , 1 ,
+575 , 28786 , 85 , 53 , 1 , 1 ,
+575 , 28787 , 59 , 52 , 1 , 1 ,
+575 , 28788 , 59 , 52 , 1 , 1 ,
+575 , 28789 , 59 , 52 , 1 , 1 ,
+575 , 28790 , 58 , 42 , 1 , 1 ,
+575 , 28791 , 58 , 52 , 1 , 1 ,
+575 , 28792 , 58 , 52 , 1 , 1 ,
+575 , 28793 , 58 , 52 , 1 , 1 ,
+575 , 28794 , 58 , 41 , 1 , 1 ,
+575 , 28795 , 57 , 31 , 1 , 1 ,
+575 , 28796 , 55 , 41 , 1 , 1 ,
+575 , 28797 , 54 , 42 , 1 , 1 ,
+575 , 28798 , 54 , 42 , 1 , 1 ,
+575 , 28799 , 54 , 41 , 1 , 1 ,
+575 , 28800 , 54 , 52 , 1 , 1 ,
+575 , 28801 , 54 , 42 , 1 , 1 ,
+575 , 28802 , 54 , 31 , 1 , 1 ,
+575 , 28803 , 54 , 41 , 1 , 1 ,
+575 , 28804 , 54 , 42 , 1 , 1 ,
+575 , 28805 , 54 , 31 , 1 , 1 ,
+575 , 28806 , 54 , 41 , 1 , 1 ,
+575 , 28807 , 51 , 33 , 1 , 1 ,
+575 , 28808 , 50 , 43 , 1 , 1 ,
+575 , 28809 , 50 , 33 , 1 , 1 ,
+575 , 28810 , 48 , 33 , 1 , 1 ,
+575 , 28811 , 46 , 32 , 1 , 1 ,
+575 , 28812 , 46 , 32 , 1 , 1 ,
+575 , 28813 , 23 , 115 , 1 , 1 ,
+575 , 28814 , 22 , 105 , 1 , 1 ,
+575 , 28815 , 22 , 105 , 1 , 1 ,
+575 , 28816 , 22 , 94 , 1 , 1 ,
+575 , 28817 , 21 , 105 , 1 , 1 ,
+575 , 28818 , 21 , 105 , 1 , 1 ,
+575 , 28819 , 21 , 105 , 1 , 1 ,
+575 , 28820 , 20 , 105 , 1 , 1 ,
+575 , 28821 , 20 , 105 , 1 , 1 ,
+575 , 28822 , 20 , 94 , 1 , 1 ,
+575 , 28823 , 13 , 234 , 1 , 1 ,
+575 , 28824 , 13 , 234 , 1 , 1 ,
+575 , 28825 , 13 , 234 , 1 , 1 ,
+575 , 28826 , 13 , 234 , 1 , 1 ,
+575 , 28827 , 13 , 224 , 1 , 1 ,
+575 , 28828 , 13 , 224 , 1 , 1 ,
+575 , 28829 , 13 , 214 , 1 , 1 ,
+575 , 28830 , 13 , 214 , 1 , 1 ,
+575 , 28831 , 13 , 204 , 1 , 1 ,
+575 , 28832 , 13 , 204 , 1 , 1 ,
+575 , 28833 , 13 , 205 , 1 , 1 ,
+575 , 28834 , 13 , 193 , 1 , 1 ,
+575 , 28835 , 13 , 193 , 1 , 1 ,
+575 , 28836 , 13 , 193 , 1 , 1 ,
+575 , 28837 , 13 , 193 , 1 , 1 ,
+575 , 28838 , 13 , 183 , 1 , 1 ,
+575 , 28839 , 7 , 36 , 1 , 1 ,
+575 , 28840 , 7 , 33 , 1 , 1 ,
+575 , 28841 , 7 , 36 , 1 , 1 ,
+575 , 28842 , 7 , 32 , 1 , 1 ,
+575 , 28843 , 7 , 33 , 1 , 1 ,
+575 , 28844 , 7 , 36 , 1 , 1 ,
+575 , 28845 , 33 , 52 , 1 , 1 ,
+575 , 28846 , 33 , 62 , 1 , 1 ,
+575 , 28847 , 33 , 72 , 1 , 1 ,
+575 , 28848 , 33 , 62 , 1 , 1 ,
+575 , 28849 , 33 , 72 , 1 , 1 ,
+575 , 28850 , 33 , 62 , 1 , 1 ,
+575 , 28851 , 32 , 72 , 1 , 1 ,
+575 , 28852 , 32 , 41 , 1 , 1 ,
+575 , 28853 , 32 , 52 , 1 , 1 ,
+575 , 28854 , 32 , 52 , 1 , 1 ,
+575 , 28855 , 29 , 72 , 1 , 1 ,
+575 , 28856 , 28 , 72 , 1 , 1 ,
+575 , 28857 , 28 , 72 , 1 , 1 ,
+575 , 28858 , 28 , 72 , 1 , 1 ,
+575 , 28859 , 28 , 72 , 1 , 1 ,
+575 , 28860 , 28 , 72 , 1 , 1 ,
+575 , 28861 , 28 , 41 , 1 , 1 ,
+575 , 28862 , 27 , 62 , 1 , 1 ,
+575 , 28863 , 27 , 52 , 1 , 1 ,
+575 , 28864 , 27 , 62 , 1 , 1 ,
+575 , 28865 , 24 , 83 , 1 , 1 ,
+575 , 28866 , 23 , 62 , 1 , 1 ,
+575 , 28867 , 23 , 82 , 1 , 1 ,
+575 , 28868 , 23 , 62 , 1 , 1 ,
+575 , 28869 , 23 , 82 , 1 , 1 ,
+575 , 28870 , 23 , 42 , 1 , 1 ,
+575 , 28871 , 22 , 52 , 1 , 1 ,
+575 , 28872 , 22 , 52 , 1 , 1 ,
+575 , 28873 , 22 , 52 , 1 , 1 ,
+575 , 28874 , 22 , 62 , 1 , 1 ,
+575 , 28875 , 19 , 52 , 1 , 1 ,
+575 , 28876 , 19 , 62 , 1 , 1 ,
+575 , 28877 , 18 , 82 , 1 , 1 ,
+575 , 28878 , 18 , 93 , 1 , 1 ,
+575 , 28879 , 18 , 52 , 1 , 1 ,
+575 , 28880 , 18 , 52 , 1 , 1 ,
+575 , 28881 , 17 , 52 , 1 , 1 ,
+575 , 28882 , 17 , 52 , 1 , 1 ,
+575 , 28883 , 17 , 62 , 1 , 1 ,
+575 , 28884 , 16 , 72 , 1 , 1 ,
+575 , 28885 , 11 , 52 , 1 , 1 ,
+575 , 28886 , 11 , 52 , 1 , 1 ,
+575 , 28887 , 11 , 82 , 1 , 1 ,
+575 , 28888 , 11 , 52 , 1 , 1 ,
+575 , 28889 , 10 , 52 , 1 , 1 ,
+575 , 28890 , 10 , 52 , 1 , 1 ,
+575 , 28891 , 10 , 52 , 1 , 1 ,
+575 , 28892 , 10 , 52 , 1 , 1 ,
+575 , 28893 , 9 , 52 , 1 , 1 ,
+575 , 28894 , 9 , 52 , 1 , 1 ,
+575 , 28895 , 7 , 52 , 1 , 1 ,
+575 , 28896 , 7 , 62 , 1 , 1 ,
+575 , 28897 , 7 , 52 , 1 , 1 ,
+575 , 28898 , 7 , 52 , 1 , 1 ,
+575 , 28899 , 7 , 52 , 1 , 1 ,
+575 , 28900 , 6 , 52 , 1 , 1 ,
+575 , 28901 , 6 , 52 , 1 , 1 ,
+575 , 28902 , 6 , 52 , 1 , 1 ,
+575 , 28903 , 6 , 52 , 1 , 1 ,
+575 , 28904 , 6 , 52 , 1 , 1 ,
+575 , 28905 , 3 , 52 , 1 , 1 ,
+575 , 28906 , 3 , 62 , 1 , 1 ,
+575 , 28907 , 3 , 52 , 1 , 1 ,
+575 , 28908 , 3 , 52 , 1 , 1 ,
+575 , 28909 , 3 , 52 , 1 , 1 ,
+575 , 28910 , 3 , 52 , 1 , 1 ,
+575 , 28911 , 3 , 52 , 1 , 1 ,
+575 , 28912 , 3 , 52 , 1 , 1 ,
+575 , 28913 , 3 , 52 , 1 , 1 ,
+575 , 28914 , 3 , 63 , 1 , 1 ,
+575 , 28915 , 272 , 72 , 1 , 1 , 28753 28806 28735 28876 28852 28912 28728 28798 28782 28849 28872 28897 28853 28765 28751 28787 28776 28906 28742 28740 28829 28731 28824 28890 28877 28886 28729 28862 28873 28900 28759 28907 28797 28722 28746 28850 28745 28817 28749 28885 28779 28775 28804 28905 28828 28778 28792 28783 28813 28808 28874 28769 28718 28858 28888 28774 28756 28785 28763 28843 28737 28803 28856 28786 28847 28800 28859 28895 28914 28820 28727 28841 28794 28781 28719 28891 28762 28855 28842 28750 28884 28799 28904 28837 28723 28868 28889 28902 28854 28882 28894 28724 28805 28789 28732 28880 28757 28910 28790 28816 28830 28739 28768 28869 28744 28908 28866 28771 28896 28863 28811 28730 28764 28736 28870 28861 28733 28791 28726 28881 28796 28801 28851 28752 28879 28871 28754 28807 28911 28721 28767 28715 28819 28780 28810 28838 28760 28758 28784 28770 28892 28809 28840 28766 28836 28793 28832 28823 28878 28826 28860 28716 28898 28848 28747 28815 28913 28812 28846 28844 28795 28772 28743 28857 28818 28865 28734 28835 28909 28725 28893 28903 28901 28773 28788 28864 28738 28887 28802 28899 28845 28755 28827 28867 28777 28875 28761 28839 28831 28720 28741 28825 28833 28821 28748 28834 28814 28717 28883 28822
+576 , 28916 , 178 , 84 , 1 , 1 ,
+576 , 28917 , 175 , 52 , 1 , 1 ,
+576 , 28918 , 175 , 82 , 1 , 1 ,
+576 , 28919 , 386 , 62 , 1 , 1 ,
+576 , 28920 , 273 , 31 , 1 , 1 ,
+576 , 28921 , 386 , 62 , 1 , 1 ,
+576 , 28922 , 300 , 73 , 1 , 1 ,
+576 , 28923 , 217 , 152 , 1 , 1 ,
+576 , 28924 , 217 , 163 , 1 , 1 ,
+576 , 28925 , 300 , 84 , 1 , 1 ,
+576 , 28926 , 303 , 41 , 1 , 1 ,
+576 , 28927 , 303 , 62 , 1 , 1 ,
+576 , 28928 , 303 , 62 , 1 , 1 ,
+576 , 28929 , 302 , 72 , 1 , 1 ,
+576 , 28930 , 302 , 52 , 1 , 1 ,
+576 , 28931 , 302 , 62 , 1 , 1 ,
+576 , 28932 , 302 , 72 , 1 , 1 ,
+576 , 28933 , 302 , 52 , 1 , 1 ,
+576 , 28934 , 301 , 72 , 1 , 1 ,
+576 , 28935 , 228 , 193 , 1 , 1 ,
+576 , 28936 , 299 , 41 , 1 , 1 ,
+576 , 28937 , 299 , 41 , 1 , 1 ,
+576 , 28938 , 299 , 41 , 1 , 1 ,
+576 , 28939 , 299 , 41 , 1 , 1 ,
+576 , 28940 , 299 , 41 , 1 , 1 ,
+576 , 28941 , 299 , 41 , 1 , 1 ,
+576 , 28942 , 299 , 41 , 1 , 1 ,
+576 , 28943 , 299 , 42 , 1 , 1 ,
+576 , 28944 , 299 , 31 , 1 , 1 ,
+576 , 28945 , 299 , 31 , 1 , 1 ,
+576 , 28946 , 142 , 73 , 1 , 1 ,
+576 , 28947 , 141 , 64 , 1 , 1 ,
+576 , 28948 , 140 , 53 , 1 , 1 ,
+576 , 28949 , 140 , 52 , 1 , 1 ,
+576 , 28950 , 137 , 62 , 1 , 1 ,
+576 , 28951 , 139 , 62 , 1 , 1 ,
+576 , 28952 , 299 , 41 , 1 , 1 ,
+576 , 28953 , 298 , 33 , 1 , 1 ,
+576 , 28954 , 297 , 34 , 1 , 1 ,
+576 , 28955 , 296 , 73 , 1 , 1 ,
+576 , 28956 , 295 , 31 , 1 , 1 ,
+576 , 28957 , 296 , 33 , 1 , 1 ,
+576 , 28958 , 386 , 62 , 1 , 1 ,
+576 , 28959 , 386 , 73 , 1 , 1 ,
+576 , 28960 , 320 , 52 , 1 , 1 ,
+576 , 28961 , 386 , 62 , 1 , 1 ,
+576 , 28962 , 385 , 22 , 1 , 1 ,
+576 , 28963 , 384 , 62 , 1 , 1 ,
+576 , 28964 , 384 , 62 , 1 , 1 ,
+576 , 28965 , 429 , 41 , 1 , 1 ,
+576 , 28966 , 384 , 63 , 1 , 1 ,
+576 , 28967 , 351 , 42 , 1 , 1 ,
+576 , 28968 , 344 , 41 , 1 , 1 ,
+576 , 28969 , 68 , 52 , 1 , 1 ,
+576 , 28970 , 343 , 41 , 1 , 1 ,
+576 , 28971 , 340 , 41 , 1 , 1 ,
+576 , 28972 , 337 , 42 , 1 , 1 ,
+576 , 28973 , 336 , 41 , 1 , 1 ,
+576 , 28974 , 336 , 34 , 1 , 1 ,
+576 , 28975 , 335 , 33 , 1 , 1 ,
+576 , 28976 , 228 , 173 , 1 , 1 ,
+576 , 28977 , 335 , 42 , 1 , 1 ,
+576 , 28978 , 278 , 42 , 1 , 1 ,
+576 , 28979 , 276 , 41 , 1 , 1 ,
+576 , 28980 , 229 , 41 , 1 , 1 ,
+576 , 28981 , 275 , 52 , 1 , 1 ,
+576 , 28982 , 275 , 31 , 1 , 1 ,
+576 , 28983 , 89 , 63 , 1 , 1 ,
+576 , 28984 , 274 , 31 , 1 , 1 ,
+576 , 28985 , 274 , 62 , 1 , 1 ,
+576 , 28986 , 274 , 62 , 1 , 1 ,
+576 , 28987 , 274 , 62 , 1 , 1 ,
+576 , 28988 , 274 , 52 , 1 , 1 ,
+576 , 28989 , 274 , 42 , 1 , 1 ,
+576 , 28990 , 273 , 42 , 1 , 1 ,
+576 , 28991 , 334 , 32 , 1 , 1 ,
+576 , 28992 , 228 , 174 , 1 , 1 ,
+576 , 28993 , 334 , 41 , 1 , 1 ,
+576 , 28994 , 226 , 42 , 1 , 1 ,
+576 , 28995 , 227 , 163 , 1 , 1 ,
+576 , 28996 , 334 , 41 , 1 , 1 ,
+576 , 28997 , 142 , 62 , 1 , 1 ,
+576 , 28998 , 334 , 22 , 1 , 1 ,
+576 , 28999 , 319 , 62 , 1 , 1 ,
+576 , 29000 , 264 , 53 , 1 , 1 ,
+576 , 29001 , 261 , 33 , 1 , 1 ,
+576 , 29002 , 256 , 53 , 1 , 1 ,
+576 , 29003 , 256 , 53 , 1 , 1 ,
+576 , 29004 , 255 , 53 , 1 , 1 ,
+576 , 29005 , 254 , 53 , 1 , 1 ,
+576 , 29006 , 251 , 53 , 1 , 1 ,
+576 , 29007 , 251 , 33 , 1 , 1 ,
+576 , 29008 , 248 , 32 , 1 , 1 ,
+576 , 29009 , 248 , 34 , 1 , 1 ,
+576 , 29010 , 246 , 53 , 1 , 1 ,
+576 , 29011 , 245 , 33 , 1 , 1 ,
+576 , 29012 , 217 , 122 , 1 , 1 ,
+576 , 29013 , 217 , 122 , 1 , 1 ,
+576 , 29014 , 245 , 53 , 1 , 1 ,
+576 , 29015 , 244 , 32 , 1 , 1 ,
+576 , 29016 , 247 , 41 , 1 , 1 ,
+576 , 29017 , 247 , 42 , 1 , 1 ,
+576 , 29018 , 238 , 62 , 1 , 1 ,
+576 , 29019 , 237 , 62 , 1 , 1 ,
+576 , 29020 , 234 , 53 , 1 , 1 ,
+576 , 29021 , 234 , 52 , 1 , 1 ,
+576 , 29022 , 247 , 42 , 1 , 1 ,
+576 , 29023 , 68 , 52 , 1 , 1 ,
+576 , 29024 , 246 , 41 , 1 , 1 ,
+576 , 29025 , 244 , 41 , 1 , 1 ,
+576 , 29026 , 123 , 41 , 1 , 1 ,
+576 , 29027 , 123 , 52 , 1 , 1 ,
+576 , 29028 , 123 , 41 , 1 , 1 ,
+576 , 29029 , 123 , 52 , 1 , 1 ,
+576 , 29030 , 123 , 41 , 1 , 1 ,
+576 , 29031 , 122 , 41 , 1 , 1 ,
+576 , 29032 , 122 , 41 , 1 , 1 ,
+576 , 29033 , 122 , 41 , 1 , 1 ,
+576 , 29034 , 121 , 52 , 1 , 1 ,
+576 , 29035 , 119 , 52 , 1 , 1 ,
+576 , 29036 , 90 , 53 , 1 , 1 ,
+576 , 29037 , 119 , 41 , 1 , 1 ,
+576 , 29038 , 119 , 41 , 1 , 1 ,
+576 , 29039 , 119 , 41 , 1 , 1 ,
+576 , 29040 , 119 , 52 , 1 , 1 ,
+576 , 29041 , 119 , 41 , 1 , 1 ,
+576 , 29042 , 119 , 52 , 1 , 1 ,
+576 , 29043 , 119 , 41 , 1 , 1 ,
+576 , 29044 , 119 , 31 , 1 , 1 ,
+576 , 29045 , 119 , 52 , 1 , 1 ,
+576 , 29046 , 119 , 31 , 1 , 1 ,
+576 , 29047 , 110 , 41 , 1 , 1 ,
+576 , 29048 , 101 , 45 , 1 , 1 ,
+576 , 29049 , 101 , 45 , 1 , 1 ,
+576 , 29050 , 100 , 42 , 1 , 1 ,
+576 , 29051 , 100 , 52 , 1 , 1 ,
+576 , 29052 , 100 , 45 , 1 , 1 ,
+576 , 29053 , 100 , 41 , 1 , 1 ,
+576 , 29054 , 97 , 43 , 1 , 1 ,
+576 , 29055 , 93 , 41 , 1 , 1 ,
+576 , 29056 , 92 , 52 , 1 , 1 ,
+576 , 29057 , 91 , 53 , 1 , 1 ,
+576 , 29058 , 91 , 52 , 1 , 1 ,
+576 , 29059 , 91 , 52 , 1 , 1 ,
+576 , 29060 , 91 , 53 , 1 , 1 ,
+576 , 29061 , 243 , 41 , 1 , 1 ,
+576 , 29062 , 229 , 52 , 1 , 1 ,
+576 , 29063 , 243 , 41 , 1 , 1 ,
+576 , 29064 , 151 , 62 , 1 , 1 ,
+576 , 29065 , 150 , 114 , 1 , 1 ,
+576 , 29066 , 150 , 43 , 1 , 1 ,
+576 , 29067 , 150 , 44 , 1 , 1 ,
+576 , 29068 , 149 , 45 , 1 , 1 ,
+576 , 29069 , 148 , 72 , 1 , 1 ,
+576 , 29070 , 148 , 72 , 1 , 1 ,
+576 , 29071 , 147 , 62 , 1 , 1 ,
+576 , 29072 , 146 , 53 , 1 , 1 ,
+576 , 29073 , 146 , 62 , 1 , 1 ,
+576 , 29074 , 146 , 53 , 1 , 1 ,
+576 , 29075 , 146 , 123 , 1 , 1 ,
+576 , 29076 , 145 , 62 , 1 , 1 ,
+576 , 29077 , 145 , 62 , 1 , 1 ,
+576 , 29078 , 145 , 52 , 1 , 1 ,
+576 , 29079 , 143 , 62 , 1 , 1 ,
+576 , 29080 , 143 , 72 , 1 , 1 ,
+576 , 29081 , 243 , 41 , 1 , 1 ,
+576 , 29082 , 243 , 52 , 1 , 1 ,
+576 , 29083 , 242 , 52 , 1 , 1 ,
+576 , 29084 , 143 , 72 , 1 , 1 ,
+576 , 29085 , 242 , 31 , 1 , 1 ,
+576 , 29086 , 242 , 52 , 1 , 1 ,
+576 , 29087 , 242 , 42 , 1 , 1 ,
+576 , 29088 , 241 , 42 , 1 , 1 ,
+576 , 29089 , 240 , 41 , 1 , 1 ,
+576 , 29090 , 239 , 52 , 1 , 1 ,
+576 , 29091 , 239 , 62 , 1 , 1 ,
+576 , 29092 , 239 , 62 , 1 , 1 ,
+576 , 29093 , 239 , 52 , 1 , 1 ,
+576 , 29094 , 239 , 52 , 1 , 1 ,
+576 , 29095 , 238 , 62 , 1 , 1 ,
+576 , 29096 , 238 , 52 , 1 , 1 ,
+576 , 29097 , 238 , 62 , 1 , 1 ,
+576 , 29098 , 238 , 62 , 1 , 1 ,
+576 , 29099 , 238 , 163 , 1 , 1 ,
+576 , 29100 , 320 , 52 , 1 , 1 ,
+576 , 29101 , 334 , 52 , 1 , 1 ,
+576 , 29102 , 331 , 52 , 1 , 1 ,
+576 , 29103 , 330 , 52 , 1 , 1 ,
+576 , 29104 , 328 , 44 , 1 , 1 ,
+576 , 29105 , 326 , 52 , 1 , 1 ,
+576 , 29106 , 326 , 52 , 1 , 1 ,
+576 , 29107 , 325 , 46 , 1 , 1 ,
+576 , 29108 , 324 , 52 , 1 , 1 ,
+576 , 29109 , 320 , 52 , 1 , 1 ,
+576 , 29110 , 351 , 72 , 1 , 1 ,
+576 , 29111 , 319 , 52 , 1 , 1 ,
+576 , 29112 , 319 , 63 , 1 , 1 ,
+576 , 29113 , 229 , 72 , 1 , 1 ,
+576 , 29114 , 229 , 72 , 1 , 1 ,
+576 , 29115 , 228 , 41 , 1 , 1 ,
+576 , 29116 , 228 , 173 , 1 , 1 ,
+576 , 29117 , 142 , 62 , 1 , 1 ,
+576 , 29118 , 228 , 72 , 1 , 1 ,
+576 , 29119 , 319 , 52 , 1 , 1 ,
+576 , 29120 , 228 , 183 , 1 , 1 ,
+576 , 29121 , 316 , 63 , 1 , 1 ,
+576 , 29122 , 316 , 52 , 1 , 1 ,
+576 , 29123 , 315 , 62 , 1 , 1 ,
+576 , 29124 , 350 , 41 , 1 , 1 ,
+576 , 29125 , 234 , 62 , 1 , 1 ,
+576 , 29126 , 233 , 62 , 1 , 1 ,
+576 , 29127 , 233 , 62 , 1 , 1 ,
+576 , 29128 , 233 , 52 , 1 , 1 ,
+576 , 29129 , 68 , 62 , 1 , 1 ,
+576 , 29130 , 52 , 43 , 1 , 1 ,
+576 , 29131 , 68 , 82 , 1 , 1 ,
+576 , 29132 , 232 , 72 , 1 , 1 ,
+576 , 29133 , 231 , 62 , 1 , 1 ,
+576 , 29134 , 231 , 73 , 1 , 1 ,
+576 , 29135 , 230 , 62 , 1 , 1 ,
+576 , 29136 , 229 , 62 , 1 , 1 ,
+576 , 29137 , 180 , 43 , 1 , 1 ,
+576 , 29138 , 230 , 62 , 1 , 1 ,
+576 , 29139 , 383 , 82 , 1 , 1 ,
+576 , 29140 , 428 , 41 , 1 , 1 ,
+576 , 29141 , 428 , 41 , 1 , 1 ,
+576 , 29142 , 428 , 41 , 1 , 1 ,
+576 , 29143 , 205 , 43 , 1 , 1 ,
+576 , 29144 , 428 , 41 , 1 , 1 ,
+576 , 29145 , 428 , 41 , 1 , 1 ,
+576 , 29146 , 428 , 41 , 1 , 1 ,
+576 , 29147 , 428 , 41 , 1 , 1 ,
+576 , 29148 , 350 , 41 , 1 , 1 ,
+576 , 29149 , 349 , 51 , 1 , 1 ,
+576 , 29150 , 344 , 41 , 1 , 1 ,
+576 , 29151 , 345 , 31 , 1 , 1 ,
+576 , 29152 , 309 , 94 , 1 , 1 ,
+576 , 29153 , 419 , 52 , 1 , 1 ,
+576 , 29154 , 419 , 52 , 1 , 1 ,
+576 , 29155 , 419 , 52 , 1 , 1 ,
+576 , 29156 , 419 , 41 , 1 , 1 ,
+576 , 29157 , 419 , 52 , 1 , 1 ,
+576 , 29158 , 419 , 52 , 1 , 1 ,
+576 , 29159 , 419 , 52 , 1 , 1 ,
+576 , 29160 , 419 , 52 , 1 , 1 ,
+576 , 29161 , 419 , 52 , 1 , 1 ,
+576 , 29162 , 419 , 52 , 1 , 1 ,
+576 , 29163 , 417 , 102 , 1 , 1 ,
+576 , 29164 , 416 , 43 , 1 , 1 ,
+576 , 29165 , 415 , 62 , 1 , 1 ,
+576 , 29166 , 189 , 105 , 1 , 1 ,
+576 , 29167 , 413 , 114 , 1 , 1 ,
+576 , 29168 , 413 , 114 , 1 , 1 ,
+576 , 29169 , 413 , 115 , 1 , 1 ,
+576 , 29170 , 412 , 115 , 1 , 1 ,
+576 , 29171 , 226 , 42 , 1 , 1 ,
+576 , 29172 , 412 , 62 , 1 , 1 ,
+576 , 29173 , 408 , 104 , 1 , 1 ,
+576 , 29174 , 407 , 114 , 1 , 1 ,
+576 , 29175 , 406 , 104 , 1 , 1 ,
+576 , 29176 , 409 , 52 , 1 , 1 ,
+576 , 29177 , 409 , 62 , 1 , 1 ,
+576 , 29178 , 403 , 114 , 1 , 1 ,
+576 , 29179 , 403 , 115 , 1 , 1 ,
+576 , 29180 , 409 , 52 , 1 , 1 ,
+576 , 29181 , 407 , 62 , 1 , 1 ,
+576 , 29182 , 406 , 62 , 1 , 1 ,
+576 , 29183 , 406 , 62 , 1 , 1 ,
+576 , 29184 , 405 , 62 , 1 , 1 ,
+576 , 29185 , 175 , 82 , 1 , 1 ,
+576 , 29186 , 175 , 82 , 1 , 1 ,
+576 , 29187 , 174 , 82 , 1 , 1 ,
+576 , 29188 , 170 , 33 , 1 , 1 ,
+576 , 29189 , 168 , 92 , 1 , 1 ,
+576 , 29190 , 166 , 62 , 1 , 1 ,
+576 , 29191 , 165 , 103 , 1 , 1 ,
+576 , 29192 , 165 , 62 , 1 , 1 ,
+576 , 29193 , 164 , 62 , 1 , 1 ,
+576 , 29194 , 163 , 63 , 1 , 1 ,
+576 , 29195 , 163 , 103 , 1 , 1 ,
+576 , 29196 , 161 , 62 , 1 , 1 ,
+576 , 29197 , 159 , 62 , 1 , 1 ,
+576 , 29198 , 159 , 103 , 1 , 1 ,
+576 , 29199 , 157 , 62 , 1 , 1 ,
+576 , 29200 , 156 , 103 , 1 , 1 ,
+576 , 29201 , 156 , 62 , 1 , 1 ,
+576 , 29202 , 376 , 115 , 1 , 1 ,
+576 , 29203 , 375 , 33 , 1 , 1 ,
+576 , 29204 , 374 , 44 , 1 , 1 ,
+576 , 29205 , 372 , 33 , 1 , 1 ,
+576 , 29206 , 372 , 115 , 1 , 1 ,
+576 , 29207 , 226 , 42 , 1 , 1 ,
+576 , 29208 , 225 , 34 , 1 , 1 ,
+576 , 29209 , 223 , 41 , 1 , 1 ,
+576 , 29210 , 222 , 41 , 1 , 1 ,
+576 , 29211 , 221 , 41 , 1 , 1 ,
+576 , 29212 , 221 , 41 , 1 , 1 ,
+576 , 29213 , 219 , 41 , 1 , 1 ,
+576 , 29214 , 89 , 105 , 1 , 1 ,
+576 , 29215 , 81 , 52 , 1 , 1 ,
+576 , 29216 , 81 , 51 , 1 , 1 ,
+576 , 29217 , 81 , 52 , 1 , 1 ,
+576 , 29218 , 80 , 72 , 1 , 1 ,
+576 , 29219 , 79 , 72 , 1 , 1 ,
+576 , 29220 , 79 , 62 , 1 , 1 ,
+576 , 29221 , 76 , 62 , 1 , 1 ,
+576 , 29222 , 75 , 62 , 1 , 1 ,
+576 , 29223 , 75 , 52 , 1 , 1 ,
+576 , 29224 , 75 , 52 , 1 , 1 ,
+576 , 29225 , 75 , 52 , 1 , 1 ,
+576 , 29226 , 75 , 52 , 1 , 1 ,
+576 , 29227 , 75 , 62 , 1 , 1 ,
+576 , 29228 , 64 , 43 , 1 , 1 ,
+576 , 29229 , 219 , 41 , 1 , 1 ,
+576 , 29230 , 219 , 52 , 1 , 1 ,
+576 , 29231 , 370 , 32 , 1 , 1 ,
+576 , 29232 , 366 , 105 , 1 , 1 ,
+576 , 29233 , 365 , 105 , 1 , 1 ,
+576 , 29234 , 365 , 105 , 1 , 1 ,
+576 , 29235 , 67 , 62 , 1 , 1 ,
+576 , 29236 , 67 , 41 , 1 , 1 ,
+576 , 29237 , 67 , 41 , 1 , 1 ,
+576 , 29238 , 60 , 62 , 1 , 1 ,
+576 , 29239 , 228 , 213 , 1 , 1 ,
+576 , 29240 , 228 , 213 , 1 , 1 ,
+576 , 29241 , 360 , 104 , 1 , 1 ,
+576 , 29242 , 362 , 82 , 1 , 1 ,
+576 , 29243 , 320 , 52 , 1 , 1 ,
+576 , 29244 , 362 , 62 , 1 , 1 ,
+576 , 29245 , 362 , 82 , 1 , 1 ,
+576 , 29246 , 362 , 83 , 1 , 1 ,
+576 , 29247 , 362 , 83 , 1 , 1 ,
+576 , 29248 , 362 , 82 , 1 , 1 ,
+576 , 29249 , 362 , 72 , 1 , 1 ,
+576 , 29250 , 362 , 62 , 1 , 1 ,
+576 , 29251 , 361 , 82 , 1 , 1 ,
+576 , 29252 , 153 , 72 , 1 , 1 ,
+576 , 29253 , 153 , 62 , 1 , 1 ,
+576 , 29254 , 152 , 62 , 1 , 1 ,
+576 , 29255 , 153 , 62 , 1 , 1 ,
+576 , 29256 , 359 , 82 , 1 , 1 ,
+576 , 29257 , 359 , 72 , 1 , 1 ,
+576 , 29258 , 359 , 82 , 1 , 1 ,
+576 , 29259 , 359 , 72 , 1 , 1 ,
+576 , 29260 , 359 , 72 , 1 , 1 ,
+576 , 29261 , 359 , 72 , 1 , 1 ,
+576 , 29262 , 359 , 82 , 1 , 1 ,
+576 , 29263 , 359 , 72 , 1 , 1 ,
+576 , 29264 , 359 , 62 , 1 , 1 ,
+576 , 29265 , 359 , 72 , 1 , 1 ,
+576 , 29266 , 359 , 82 , 1 , 1 ,
+576 , 29267 , 315 , 62 , 1 , 1 ,
+576 , 29268 , 315 , 52 , 1 , 1 ,
+576 , 29269 , 315 , 52 , 1 , 1 ,
+576 , 29270 , 295 , 32 , 1 , 1 ,
+576 , 29271 , 293 , 33 , 1 , 1 ,
+576 , 29272 , 290 , 33 , 1 , 1 ,
+576 , 29273 , 289 , 73 , 1 , 1 ,
+576 , 29274 , 285 , 92 , 1 , 1 ,
+576 , 29275 , 283 , 52 , 1 , 1 ,
+576 , 29276 , 282 , 82 , 1 , 1 ,
+576 , 29277 , 281 , 41 , 1 , 1 ,
+576 , 29278 , 279 , 62 , 1 , 1 ,
+576 , 29279 , 279 , 41 , 1 , 1 ,
+576 , 29280 , 314 , 52 , 1 , 1 ,
+576 , 29281 , 314 , 62 , 1 , 1 ,
+576 , 29282 , 313 , 31 , 1 , 1 ,
+576 , 29283 , 312 , 72 , 1 , 1 ,
+576 , 29284 , 143 , 62 , 1 , 1 ,
+576 , 29285 , 143 , 72 , 1 , 1 ,
+576 , 29286 , 142 , 35 , 1 , 1 ,
+576 , 29287 , 312 , 31 , 1 , 1 ,
+576 , 29288 , 356 , 83 , 1 , 1 ,
+576 , 29289 , 356 , 73 , 1 , 1 ,
+576 , 29290 , 355 , 72 , 1 , 1 ,
+576 , 29291 , 355 , 83 , 1 , 1 ,
+576 , 29292 , 279 , 41 , 1 , 1 ,
+576 , 29293 , 278 , 72 , 1 , 1 ,
+576 , 29294 , 278 , 62 , 1 , 1 ,
+576 , 29295 , 278 , 62 , 1 , 1 ,
+576 , 29296 , 278 , 62 , 1 , 1 ,
+576 , 29297 , 306 , 52 , 1 , 1 ,
+576 , 29298 , 355 , 72 , 1 , 1 ,
+576 , 29299 , 142 , 73 , 1 , 1 ,
+576 , 29300 , 142 , 63 , 1 , 1 ,
+576 , 29301 , 354 , 72 , 1 , 1 ,
+576 , 29302 , 354 , 72 , 1 , 1 ,
+576 , 29303 , 354 , 82 , 1 , 1 ,
+576 , 29304 , 354 , 72 , 1 , 1 ,
+576 , 29305 , 354 , 72 , 1 , 1 ,
+576 , 29306 , 353 , 52 , 1 , 1 ,
+576 , 29307 , 353 , 53 , 1 , 1 ,
+576 , 29308 , 202 , 44 , 1 , 1 ,
+576 , 29309 , 201 , 53 , 1 , 1 ,
+576 , 29310 , 201 , 53 , 1 , 1 ,
+576 , 29311 , 200 , 53 , 1 , 1 ,
+576 , 29312 , 199 , 43 , 1 , 1 ,
+576 , 29313 , 199 , 53 , 1 , 1 ,
+576 , 29314 , 198 , 43 , 1 , 1 ,
+576 , 29315 , 196 , 53 , 1 , 1 ,
+576 , 29316 , 190 , 53 , 1 , 1 ,
+576 , 29317 , 190 , 53 , 1 , 1 ,
+576 , 29318 , 353 , 51 , 1 , 1 ,
+576 , 29319 , 312 , 62 , 1 , 1 ,
+576 , 29320 , 135 , 53 , 1 , 1 ,
+576 , 29321 , 135 , 53 , 1 , 1 ,
+576 , 29322 , 135 , 53 , 1 , 1 ,
+576 , 29323 , 312 , 52 , 1 , 1 ,
+576 , 29324 , 311 , 53 , 1 , 1 ,
+576 , 29325 , 311 , 72 , 1 , 1 ,
+576 , 29326 , 238 , 153 , 1 , 1 ,
+576 , 29327 , 179 , 53 , 1 , 1 ,
+576 , 29328 , 311 , 62 , 1 , 1 ,
+576 , 29329 , 311 , 53 , 1 , 1 ,
+576 , 29330 , 310 , 41 , 1 , 1 ,
+576 , 29331 , 353 , 42 , 1 , 1 ,
+576 , 29332 , 352 , 82 , 1 , 1 ,
+576 , 29333 , 351 , 42 , 1 , 1 ,
+576 , 29334 , 404 , 62 , 1 , 1 ,
+576 , 29335 , 401 , 72 , 1 , 1 ,
+576 , 29336 , 401 , 62 , 1 , 1 ,
+576 , 29337 , 394 , 61 , 1 , 1 ,
+576 , 29338 , 75 , 74 , 1 , 1 ,
+576 , 29339 , 69 , 72 , 1 , 1 ,
+576 , 29340 , 69 , 72 , 1 , 1 ,
+576 , 29341 , 68 , 62 , 1 , 1 ,
+576 , 29342 , 401 , 62 , 1 , 1 ,
+576 , 29343 , 401 , 62 , 1 , 1 ,
+576 , 29344 , 393 , 52 , 1 , 1 ,
+576 , 29345 , 393 , 51 , 1 , 1 ,
+576 , 29346 , 401 , 62 , 1 , 1 ,
+576 , 29347 , 399 , 62 , 1 , 1 ,
+576 , 29348 , 399 , 72 , 1 , 1 ,
+576 , 29349 , 399 , 72 , 1 , 1 ,
+576 , 29350 , 397 , 62 , 1 , 1 ,
+576 , 29351 , 397 , 62 , 1 , 1 ,
+576 , 29352 , 393 , 72 , 1 , 1 ,
+576 , 29353 , 309 , 42 , 1 , 1 ,
+576 , 29354 , 391 , 62 , 1 , 1 ,
+576 , 29355 , 228 , 153 , 1 , 1 ,
+576 , 29356 , 228 , 153 , 1 , 1 ,
+576 , 29357 , 154 , 103 , 1 , 1 ,
+576 , 29358 , 154 , 42 , 1 , 1 ,
+576 , 29359 , 154 , 62 , 1 , 1 ,
+576 , 29360 , 154 , 62 , 1 , 1 ,
+576 , 29361 , 390 , 62 , 1 , 1 ,
+576 , 29362 , 388 , 72 , 1 , 1 ,
+576 , 29363 , 388 , 72 , 1 , 1 ,
+576 , 29364 , 388 , 62 , 1 , 1 ,
+576 , 29365 , 142 , 62 , 1 , 1 ,
+576 , 29366 , 388 , 62 , 1 , 1 ,
+576 , 29367 , 279 , 72 , 1 , 1 ,
+576 , 29368 , 179 , 43 , 1 , 1 ,
+576 , 29369 , 279 , 31 , 1 , 1 ,
+576 , 29370 , 91 , 42 , 1 , 1 ,
+576 , 29371 , 91 , 42 , 1 , 1 ,
+576 , 29372 , 90 , 42 , 1 , 1 ,
+576 , 29373 , 279 , 41 , 1 , 1 ,
+576 , 29374 , 279 , 52 , 1 , 1 ,
+576 , 29375 , 154 , 62 , 1 , 1 ,
+576 , 29376 , 156 , 62 , 1 , 1 ,
+576 , 29377 , 388 , 62 , 1 , 1 ,
+576 , 29378 , 387 , 62 , 1 , 1 ,
+576 , 29379 , 90 , 42 , 1 , 1 ,
+576 , 29380 , 89 , 32 , 1 , 1 ,
+576 , 29381 , 387 , 62 , 1 , 1 ,
+576 , 29382 , 387 , 43 , 1 , 1 ,
+576 , 29383 , 135 , 42 , 1 , 1 ,
+576 , 29384 , 134 , 42 , 1 , 1 ,
+576 , 29385 , 133 , 34 , 1 , 1 ,
+576 , 29386 , 131 , 46 , 1 , 1 ,
+576 , 29387 , 186 , 62 , 1 , 1 ,
+576 , 29388 , 185 , 62 , 1 , 1 ,
+576 , 29389 , 185 , 62 , 1 , 1 ,
+576 , 29390 , 185 , 72 , 1 , 1 ,
+576 , 29391 , 185 , 72 , 1 , 1 ,
+576 , 29392 , 185 , 72 , 1 , 1 ,
+576 , 29393 , 185 , 72 , 1 , 1 ,
+576 , 29394 , 185 , 72 , 1 , 1 ,
+576 , 29395 , 185 , 72 , 1 , 1 ,
+576 , 29396 , 184 , 72 , 1 , 1 ,
+576 , 29397 , 179 , 72 , 1 , 1 ,
+576 , 29398 , 179 , 83 , 1 , 1 ,
+576 , 29399 , 179 , 82 , 1 , 1 ,
+576 , 29400 , 179 , 72 , 1 , 1 ,
+576 , 29401 , 152 , 62 , 1 , 1 ,
+576 , 29402 , 152 , 72 , 1 , 1 ,
+576 , 29403 , 151 , 114 , 1 , 1 ,
+576 , 29404 , 179 , 83 , 1 , 1 ,
+576 , 29405 , 179 , 82 , 1 , 1 ,
+576 , 29406 , 179 , 82 , 1 , 1 ,
+576 , 29407 , 179 , 73 , 1 , 1 ,
+576 , 29408 , 179 , 72 , 1 , 1 ,
+576 , 29409 , 179 , 82 , 1 , 1 ,
+576 , 29410 , 178 , 82 , 1 , 1 ,
+576 , 29411 , 60 , 62 , 1 , 1 ,
+576 , 29412 , 52 , 44 , 1 , 1 ,
+576 , 29413 , 50 , 44 , 1 , 1 ,
+576 , 29414 , 50 , 44 , 1 , 1 ,
+576 , 29415 , 49 , 43 , 1 , 1 ,
+576 , 29416 , 36 , 53 , 1 , 1 ,
+576 , 29417 , 35 , 53 , 1 , 1 ,
+576 , 29418 , 35 , 53 , 1 , 1 ,
+576 , 29419 , 35 , 53 , 1 , 1 ,
+576 , 29420 , 35 , 53 , 1 , 1 ,
+576 , 29421 , 35 , 53 , 1 , 1 ,
+576 , 29422 , 35 , 53 , 1 , 1 ,
+576 , 29423 , 34 , 53 , 1 , 1 ,
+576 , 29424 , 34 , 53 , 1 , 1 ,
+576 , 29425 , 34 , 53 , 1 , 1 ,
+576 , 29426 , 21 , 204 , 1 , 1 ,
+576 , 29427 , 21 , 184 , 1 , 1 ,
+576 , 29428 , 21 , 184 , 1 , 1 ,
+576 , 29429 , 21 , 194 , 1 , 1 ,
+576 , 29430 , 21 , 194 , 1 , 1 ,
+576 , 29431 , 21 , 184 , 1 , 1 ,
+576 , 29432 , 21 , 194 , 1 , 1 ,
+576 , 29433 , 21 , 205 , 1 , 1 ,
+576 , 29434 , 21 , 194 , 1 , 1 ,
+576 , 29435 , 21 , 195 , 1 , 1 ,
+576 , 29436 , 21 , 194 , 1 , 1 ,
+576 , 29437 , 21 , 194 , 1 , 1 ,
+576 , 29438 , 21 , 184 , 1 , 1 ,
+576 , 29439 , 21 , 194 , 1 , 1 ,
+576 , 29440 , 21 , 195 , 1 , 1 ,
+576 , 29441 , 21 , 194 , 1 , 1 ,
+576 , 29442 , 11 , 33 , 1 , 1 ,
+576 , 29443 , 11 , 33 , 1 , 1 ,
+576 , 29444 , 11 , 34 , 1 , 1 ,
+576 , 29445 , 11 , 33 , 1 , 1 ,
+576 , 29446 , 11 , 46 , 1 , 1 ,
+576 , 29447 , 11 , 34 , 1 , 1 ,
+576 , 29448 , 60 , 72 , 1 , 1 ,
+576 , 29449 , 60 , 72 , 1 , 1 ,
+576 , 29450 , 59 , 62 , 1 , 1 ,
+576 , 29451 , 59 , 72 , 1 , 1 ,
+576 , 29452 , 59 , 62 , 1 , 1 ,
+576 , 29453 , 59 , 62 , 1 , 1 ,
+576 , 29454 , 59 , 52 , 1 , 1 ,
+576 , 29455 , 59 , 52 , 1 , 1 ,
+576 , 29456 , 51 , 52 , 1 , 1 ,
+576 , 29457 , 50 , 52 , 1 , 1 ,
+576 , 29458 , 50 , 82 , 1 , 1 ,
+576 , 29459 , 50 , 72 , 1 , 1 ,
+576 , 29460 , 50 , 83 , 1 , 1 ,
+576 , 29461 , 50 , 73 , 1 , 1 ,
+576 , 29462 , 49 , 73 , 1 , 1 ,
+576 , 29463 , 49 , 83 , 1 , 1 ,
+576 , 29464 , 49 , 73 , 1 , 1 ,
+576 , 29465 , 49 , 73 , 1 , 1 ,
+576 , 29466 , 41 , 62 , 1 , 1 ,
+576 , 29467 , 40 , 62 , 1 , 1 ,
+576 , 29468 , 39 , 62 , 1 , 1 ,
+576 , 29469 , 39 , 62 , 1 , 1 ,
+576 , 29470 , 39 , 62 , 1 , 1 ,
+576 , 29471 , 38 , 62 , 1 , 1 ,
+576 , 29472 , 38 , 62 , 1 , 1 ,
+576 , 29473 , 38 , 62 , 1 , 1 ,
+576 , 29474 , 38 , 62 , 1 , 1 ,
+576 , 29475 , 38 , 62 , 1 , 1 ,
+576 , 29476 , 31 , 103 , 1 , 1 ,
+576 , 29477 , 29 , 103 , 1 , 1 ,
+576 , 29478 , 29 , 93 , 1 , 1 ,
+576 , 29479 , 29 , 72 , 1 , 1 ,
+576 , 29480 , 29 , 72 , 1 , 1 ,
+576 , 29481 , 28 , 72 , 1 , 1 ,
+576 , 29482 , 28 , 52 , 1 , 1 ,
+576 , 29483 , 28 , 52 , 1 , 1 ,
+576 , 29484 , 28 , 62 , 1 , 1 ,
+576 , 29485 , 27 , 52 , 1 , 1 ,
+576 , 29486 , 19 , 52 , 1 , 1 ,
+576 , 29487 , 18 , 52 , 1 , 1 ,
+576 , 29488 , 18 , 52 , 1 , 1 ,
+576 , 29489 , 17 , 52 , 1 , 1 ,
+576 , 29490 , 17 , 41 , 1 , 1 ,
+576 , 29491 , 17 , 41 , 1 , 1 ,
+576 , 29492 , 17 , 41 , 1 , 1 ,
+576 , 29493 , 17 , 41 , 1 , 1 ,
+576 , 29494 , 16 , 41 , 1 , 1 ,
+576 , 29495 , 16 , 41 , 1 , 1 ,
+576 , 29496 , 10 , 41 , 1 , 1 ,
+576 , 29497 , 10 , 41 , 1 , 1 ,
+576 , 29498 , 10 , 41 , 1 , 1 ,
+576 , 29499 , 10 , 41 , 1 , 1 ,
+576 , 29500 , 10 , 41 , 1 , 1 ,
+576 , 29501 , 10 , 31 , 1 , 1 ,
+576 , 29502 , 10 , 31 , 1 , 1 ,
+576 , 29503 , 10 , 41 , 1 , 1 ,
+576 , 29504 , 10 , 31 , 1 , 1 ,
+576 , 29505 , 10 , 31 , 1 , 1 ,
+576 , 29506 , 6 , 31 , 1 , 1 ,
+576 , 29507 , 6 , 31 , 1 , 1 ,
+576 , 29508 , 6 , 31 , 1 , 1 ,
+576 , 29509 , 6 , 31 , 1 , 1 ,
+576 , 29510 , 6 , 31 , 1 , 1 ,
+576 , 29511 , 6 , 31 , 1 , 1 ,
+576 , 29512 , 6 , 31 , 1 , 1 ,
+576 , 29513 , 6 , 31 , 1 , 1 ,
+576 , 29514 , 6 , 31 , 1 , 1 ,
+576 , 29515 , 6 , 31 , 1 , 1 ,
+576 , 29516 , 597 , 184 , 1 , 1 , 29471 29380 29353 29365 29289 29292 29178 28929 28954 29123 29225 29241 28937 29157 29199 29301 29396 28986 29435 29081 29247 29398 29355 29280 29283 29475 29383 29064 29400 29159 28977 29137 29465 29190 29186 29059 29392 29055 29205 29265 29336 28953 29513 29243 29018 29002 29479 29263 29069 29184 29088 29359 29463 29304 28987 29510 29024 29511 29146 29467 28990 29021 29414 29350 28940 29107 29106 29489 29294 29305 29084 28958 29481 29422 29403 29351 29251 29483 29315 29072 28945 29058 29485 29388 29135 29341 29459 29418 29151 29307 28999 29284 29061 28951 29155 29354 29119 28971 29120 29149 29099 29290 29145 29496 29495 29252 29260 29389 28972 28925 28931 29406 29478 29332 28964 29364 29034 29490 29316 29484 28923 28979 28919 29168 29443 29156 29394 29333 29276 29324 29287 29200 29512 29449 29051 29015 29442 29269 29209 29246 29029 29222 29337 29514 28974 29115 29423 29391 28942 29103 29132 29271 29366 29291 29204 29229 29362 29086 29050 28932 29011 29509 29410 29349 29097 29469 28916 29457 29089 29258 29063 29182 29508 28992 29462 29140 29358 28933 29028 28952 29047 29141 28948 29090 28956 28984 29254 28917 29267 29023 29053 29482 29122 29303 29073 29016 29343 28993 29253 29421 29031 29470 29126 29458 29077 29150 29515 28924 29004 29208 28928 29274 29116 29214 28955 29118 29340 29330 29124 29339 28921 29338 29206 29152 29390 29425 29385 29368 29020 29297 29282 28965 29005 28922 29136 29166 29384 29000 29326 29095 29393 29080 29153 29377 29025 29045 28934 29213 28994 29415 29374 29067 29461 29078 29133 29169 29197 29311 29441 29194 29019 28962 29085 29375 29497 29424 29006 29227 29456 28941 29453 29273 29170 29357 29093 29041 29395 29473 29308 29189 29445 29381 29452 28935 29129 29060 29192 29416 29466 28973 29404 29134 29491 29108 29091 29057 29110 29142 28980 29502 29317 29507 29401 29112 29179 28995 29242 29417 29314 28981 28998 29293 29012 29026 29188 28938 29065 29218 29488 29348 29193 29257 29402 29486 29397 29437 29344 29432 29240 29429 29256 29312 29163 29092 28985 28996 29198 28968 29181 29121 29231 28944 29125 29094 29111 29261 29477 29498 29419 29328 29499 29105 29302 29056 29160 29076 28947 29010 29147 29487 29278 29373 29017 29433 29296 29426 29342 28969 29139 29492 29154 29234 29104 29318 29211 29052 29068 29114 29117 29082 29038 29032 29172 29083 29238 29367 29039 29046 28970 28982 29176 29217 29286 28976 29008 29216 29295 29325 29195 29379 29264 29279 29370 29331 29215 29096 29376 29386 29098 29288 29501 29158 29183 28991 29460 29369 29464 28989 29036 29239 29409 28961 29480 29040 29087 28959 29162 29476 28927 29161 29245 29259 29439 29412 29387 29233 29101 29187 28966 29244 29130 29167 29494 29148 28939 29138 29451 29044 29128 29027 29431 28997 29173 29228 29428 29236 29022 29230 28918 29165 29323 29196 29503 29360 29109 29042 29454 29352 29500 29014 29237 29202 29219 29408 28943 29007 29266 29049 29427 29262 29372 29131 29220 29235 29180 29100 29033 29319 29232 29320 29382 29223 29066 29001 28967 29226 29334 29030 29191 29329 29043 29327 29272 28949 29310 29113 28946 29164 29270 28960 29171 29212 29221 28920 29347 28963 29175 29248 29062 29430 29300 29321 29079 29506 29447 29413 29434 28978 29207 29438 29306 29399 29177 28926 28983 29250 29144 29446 29102 28975 29127 29356 29054 29335 29249 29405 29275 28957 28936 29346 29037 29285 29298 29074 29143 29472 29013 29268 29313 29450 29035 29474 29407 29185 29224 29009 29075 29411 29440 29493 29371 28930 29448 29363 29444 29468 29361 29203 29345 29309 29281 29504 29255 29070 29436 29210 29322 28950 28988 29277 29299 29378 29201 29420 29048 29174 29071 29505 29003 29455
+577 , 29718 , 121 , 52 , 1 , 1 ,
+577 , 29719 , 119 , 53 , 1 , 1 ,
+577 , 29720 , 88 , 94 , 1 , 1 ,
+577 , 29721 , 72 , 62 , 1 , 1 ,
+577 , 29722 , 72 , 62 , 1 , 1 ,
+577 , 29723 , 70 , 52 , 1 , 1 ,
+577 , 29724 , 70 , 52 , 1 , 1 ,
+577 , 29725 , 85 , 65 , 1 , 1 ,
+577 , 29726 , 85 , 66 , 1 , 1 ,
+577 , 29727 , 84 , 55 , 1 , 1 ,
+577 , 29728 , 85 , 55 , 1 , 1 ,
+577 , 29729 , 119 , 53 , 1 , 1 ,
+577 , 29730 , 119 , 54 , 1 , 1 ,
+577 , 29731 , 119 , 53 , 1 , 1 ,
+577 , 29732 , 119 , 55 , 1 , 1 ,
+577 , 29733 , 119 , 54 , 1 , 1 ,
+577 , 29734 , 119 , 55 , 1 , 1 ,
+577 , 29735 , 119 , 55 , 1 , 1 ,
+577 , 29736 , 119 , 53 , 1 , 1 ,
+577 , 29737 , 119 , 68 , 1 , 1 ,
+577 , 29738 , 118 , 56 , 1 , 1 ,
+577 , 29739 , 72 , 66 , 1 , 1 ,
+577 , 29740 , 115 , 52 , 1 , 1 ,
+577 , 29741 , 72 , 65 , 1 , 1 ,
+577 , 29742 , 115 , 51 , 1 , 1 ,
+577 , 29743 , 115 , 62 , 1 , 1 ,
+577 , 29744 , 115 , 52 , 1 , 1 ,
+577 , 29745 , 114 , 51 , 1 , 1 ,
+577 , 29746 , 114 , 52 , 1 , 1 ,
+577 , 29747 , 114 , 52 , 1 , 1 ,
+577 , 29748 , 110 , 55 , 1 , 1 ,
+577 , 29749 , 110 , 54 , 1 , 1 ,
+577 , 29750 , 103 , 83 , 1 , 1 ,
+577 , 29751 , 90 , 52 , 1 , 1 ,
+577 , 29752 , 90 , 52 , 1 , 1 ,
+577 , 29753 , 88 , 62 , 1 , 1 ,
+577 , 29754 , 89 , 62 , 1 , 1 ,
+577 , 29755 , 131 , 54 , 1 , 1 ,
+577 , 29756 , 131 , 54 , 1 , 1 ,
+577 , 29757 , 131 , 54 , 1 , 1 ,
+577 , 29758 , 130 , 52 , 1 , 1 ,
+577 , 29759 , 129 , 52 , 1 , 1 ,
+577 , 29760 , 129 , 52 , 1 , 1 ,
+577 , 29761 , 129 , 52 , 1 , 1 ,
+577 , 29762 , 126 , 63 , 1 , 1 ,
+577 , 29763 , 126 , 53 , 1 , 1 ,
+577 , 29764 , 126 , 63 , 1 , 1 ,
+577 , 29765 , 126 , 53 , 1 , 1 ,
+577 , 29766 , 126 , 53 , 1 , 1 ,
+577 , 29767 , 156 , 76 , 1 , 1 ,
+577 , 29768 , 156 , 45 , 1 , 1 ,
+577 , 29769 , 156 , 45 , 1 , 1 ,
+577 , 29770 , 156 , 46 , 1 , 1 ,
+577 , 29771 , 156 , 42 , 1 , 1 ,
+577 , 29772 , 72 , 62 , 1 , 1 ,
+577 , 29773 , 72 , 62 , 1 , 1 ,
+577 , 29774 , 156 , 52 , 1 , 1 ,
+577 , 29775 , 155 , 41 , 1 , 1 ,
+577 , 29776 , 155 , 52 , 1 , 1 ,
+577 , 29777 , 155 , 52 , 1 , 1 ,
+577 , 29778 , 154 , 77 , 1 , 1 ,
+577 , 29779 , 150 , 46 , 1 , 1 ,
+577 , 29780 , 149 , 42 , 1 , 1 ,
+577 , 29781 , 148 , 42 , 1 , 1 ,
+577 , 29782 , 148 , 52 , 1 , 1 ,
+577 , 29783 , 84 , 66 , 1 , 1 ,
+577 , 29784 , 82 , 85 , 1 , 1 ,
+577 , 29785 , 80 , 87 , 1 , 1 ,
+577 , 29786 , 83 , 66 , 1 , 1 ,
+577 , 29787 , 80 , 72 , 1 , 1 ,
+577 , 29788 , 78 , 97 , 1 , 1 ,
+577 , 29789 , 79 , 72 , 1 , 1 ,
+577 , 29790 , 79 , 62 , 1 , 1 ,
+577 , 29791 , 77 , 72 , 1 , 1 ,
+577 , 29792 , 76 , 72 , 1 , 1 ,
+577 , 29793 , 76 , 103 , 1 , 1 ,
+577 , 29794 , 76 , 62 , 1 , 1 ,
+577 , 29795 , 74 , 93 , 1 , 1 ,
+577 , 29796 , 74 , 62 , 1 , 1 ,
+577 , 29797 , 74 , 73 , 1 , 1 ,
+577 , 29798 , 72 , 66 , 1 , 1 ,
+577 , 29799 , 145 , 43 , 1 , 1 ,
+577 , 29800 , 144 , 88 , 1 , 1 ,
+577 , 29801 , 134 , 53 , 1 , 1 ,
+577 , 29802 , 134 , 54 , 1 , 1 ,
+577 , 29803 , 131 , 54 , 1 , 1 ,
+577 , 29804 , 131 , 52 , 1 , 1 ,
+577 , 29805 , 122 , 62 , 1 , 1 ,
+577 , 29806 , 122 , 62 , 1 , 1 ,
+577 , 29807 , 122 , 62 , 1 , 1 ,
+577 , 29808 , 122 , 62 , 1 , 1 ,
+577 , 29809 , 122 , 52 , 1 , 1 ,
+577 , 29810 , 122 , 62 , 1 , 1 ,
+577 , 29811 , 122 , 62 , 1 , 1 ,
+577 , 29812 , 121 , 62 , 1 , 1 ,
+577 , 29813 , 70 , 63 , 1 , 1 ,
+577 , 29814 , 22 , 219 , 1 , 1 ,
+577 , 29815 , 21 , 219 , 1 , 1 ,
+577 , 29816 , 21 , 209 , 1 , 1 ,
+577 , 29817 , 21 , 209 , 1 , 1 ,
+577 , 29818 , 20 , 198 , 1 , 1 ,
+577 , 29819 , 20 , 188 , 1 , 1 ,
+577 , 29820 , 20 , 198 , 1 , 1 ,
+577 , 29821 , 19 , 209 , 1 , 1 ,
+577 , 29822 , 19 , 209 , 1 , 1 ,
+577 , 29823 , 19 , 219 , 1 , 1 ,
+577 , 29824 , 14 , 328 , 1 , 1 ,
+577 , 29825 , 14 , 318 , 1 , 1 ,
+577 , 29826 , 14 , 328 , 1 , 1 ,
+577 , 29827 , 14 , 328 , 1 , 1 ,
+577 , 29828 , 14 , 328 , 1 , 1 ,
+577 , 29829 , 14 , 338 , 1 , 1 ,
+577 , 29830 , 13 , 318 , 1 , 1 ,
+577 , 29831 , 13 , 308 , 1 , 1 ,
+577 , 29832 , 13 , 295 , 1 , 1 ,
+577 , 29833 , 13 , 284 , 1 , 1 ,
+577 , 29834 , 13 , 278 , 1 , 1 ,
+577 , 29835 , 13 , 278 , 1 , 1 ,
+577 , 29836 , 13 , 274 , 1 , 1 ,
+577 , 29837 , 13 , 268 , 1 , 1 ,
+577 , 29838 , 13 , 255 , 1 , 1 ,
+577 , 29839 , 13 , 235 , 1 , 1 ,
+577 , 29840 , 9 , 64 , 1 , 1 ,
+577 , 29841 , 9 , 69 , 1 , 1 ,
+577 , 29842 , 9 , 64 , 1 , 1 ,
+577 , 29843 , 9 , 68 , 1 , 1 ,
+577 , 29844 , 9 , 65 , 1 , 1 ,
+577 , 29845 , 9 , 69 , 1 , 1 ,
+577 , 29846 , 36 , 72 , 1 , 1 ,
+577 , 29847 , 36 , 82 , 1 , 1 ,
+577 , 29848 , 33 , 73 , 1 , 1 ,
+577 , 29849 , 32 , 73 , 1 , 1 ,
+577 , 29850 , 32 , 83 , 1 , 1 ,
+577 , 29851 , 32 , 82 , 1 , 1 ,
+577 , 29852 , 32 , 82 , 1 , 1 ,
+577 , 29853 , 32 , 72 , 1 , 1 ,
+577 , 29854 , 32 , 83 , 1 , 1 ,
+577 , 29855 , 31 , 72 , 1 , 1 ,
+577 , 29856 , 31 , 82 , 1 , 1 ,
+577 , 29857 , 31 , 82 , 1 , 1 ,
+577 , 29858 , 28 , 82 , 1 , 1 ,
+577 , 29859 , 28 , 82 , 1 , 1 ,
+577 , 29860 , 27 , 83 , 1 , 1 ,
+577 , 29861 , 27 , 83 , 1 , 1 ,
+577 , 29862 , 27 , 83 , 1 , 1 ,
+577 , 29863 , 27 , 82 , 1 , 1 ,
+577 , 29864 , 27 , 82 , 1 , 1 ,
+577 , 29865 , 27 , 82 , 1 , 1 ,
+577 , 29866 , 26 , 82 , 1 , 1 ,
+577 , 29867 , 26 , 82 , 1 , 1 ,
+577 , 29868 , 23 , 82 , 1 , 1 ,
+577 , 29869 , 23 , 83 , 1 , 1 ,
+577 , 29870 , 22 , 93 , 1 , 1 ,
+577 , 29871 , 22 , 94 , 1 , 1 ,
+577 , 29872 , 22 , 83 , 1 , 1 ,
+577 , 29873 , 22 , 83 , 1 , 1 ,
+577 , 29874 , 21 , 84 , 1 , 1 ,
+577 , 29875 , 21 , 82 , 1 , 1 ,
+577 , 29876 , 21 , 82 , 1 , 1 ,
+577 , 29877 , 21 , 82 , 1 , 1 ,
+577 , 29878 , 18 , 82 , 1 , 1 ,
+577 , 29879 , 18 , 92 , 1 , 1 ,
+577 , 29880 , 17 , 93 , 1 , 1 ,
+577 , 29881 , 17 , 82 , 1 , 1 ,
+577 , 29882 , 17 , 82 , 1 , 1 ,
+577 , 29883 , 17 , 82 , 1 , 1 ,
+577 , 29884 , 16 , 82 , 1 , 1 ,
+577 , 29885 , 16 , 82 , 1 , 1 ,
+577 , 29886 , 16 , 82 , 1 , 1 ,
+577 , 29887 , 16 , 72 , 1 , 1 ,
+577 , 29888 , 13 , 82 , 1 , 1 ,
+577 , 29889 , 12 , 82 , 1 , 1 ,
+577 , 29890 , 12 , 62 , 1 , 1 ,
+577 , 29891 , 12 , 52 , 1 , 1 ,
+577 , 29892 , 12 , 62 , 1 , 1 ,
+577 , 29893 , 12 , 52 , 1 , 1 ,
+577 , 29894 , 12 , 62 , 1 , 1 ,
+577 , 29895 , 12 , 52 , 1 , 1 ,
+577 , 29896 , 11 , 62 , 1 , 1 ,
+577 , 29897 , 11 , 62 , 1 , 1 ,
+577 , 29898 , 9 , 62 , 1 , 1 ,
+577 , 29899 , 9 , 52 , 1 , 1 ,
+577 , 29900 , 8 , 52 , 1 , 1 ,
+577 , 29901 , 8 , 62 , 1 , 1 ,
+577 , 29902 , 8 , 52 , 1 , 1 ,
+577 , 29903 , 8 , 52 , 1 , 1 ,
+577 , 29904 , 8 , 52 , 1 , 1 ,
+577 , 29905 , 8 , 52 , 1 , 1 ,
+577 , 29906 , 8 , 52 , 1 , 1 ,
+577 , 29907 , 8 , 52 , 1 , 1 ,
+577 , 29908 , 5 , 52 , 1 , 1 ,
+577 , 29909 , 5 , 52 , 1 , 1 ,
+577 , 29910 , 5 , 53 , 1 , 1 ,
+577 , 29911 , 5 , 53 , 1 , 1 ,
+577 , 29912 , 5 , 53 , 1 , 1 ,
+577 , 29913 , 5 , 53 , 1 , 1 ,
+577 , 29914 , 5 , 53 , 1 , 1 ,
+577 , 29915 , 5 , 52 , 1 , 1 ,
+577 , 29916 , 5 , 52 , 1 , 1 ,
+577 , 29917 , 5 , 52 , 1 , 1 ,
+577 , 29918 , 379 , 143 , 1 , 1 , 29885 29917 29892 29833 29820 29865 29771 29724 29742 29727 29881 29855 29813 29721 29912 29756 29793 29854 29761 29826 29800 29828 29861 29817 29757 29798 29780 29729 29915 29789 29718 29720 29908 29871 29852 29804 29759 29823 29843 29768 29883 29755 29853 29747 29858 29880 29869 29799 29910 29882 29916 29888 29851 29794 29767 29909 29725 29740 29835 29811 29898 29837 29808 29829 29894 29746 29802 29733 29889 29891 29875 29899 29834 29795 29870 29774 29763 29838 29842 29749 29753 29815 29867 29752 29751 29860 29864 29821 29792 29896 29722 29822 29866 29876 29816 29719 29728 29770 29791 29863 29778 29743 29879 29732 29897 29868 29825 29803 29895 29773 29784 29890 29905 29750 29764 29790 29741 29797 29775 29874 29877 29748 29819 29745 29831 29846 29766 29809 29736 29859 29788 29893 29913 29850 29847 29911 29796 29810 29772 29887 29841 29779 29832 29857 29862 29902 29836 29785 29856 29738 29806 29801 29760 29754 29782 29731 29734 29762 29769 29824 29840 29783 29787 29786 29884 29873 29904 29872 29818 29807 29827 29814 29812 29878 29735 29765 29848 29781 29830 29723 29758 29737 29900 29839 29845 29906 29914 29730 29886 29776 29844 29726 29739 29907 29903 29901 29805 29777 29744 29849
+578 , 30522 , 3 , 11 , 1 , 1 ,
+578 , 30523 , 30 , 31 , 1 , 1 , 30522
+578 , 30524 , 30 , 31 , 1 , 1 , 30522
+578 , 30525 , 30 , 31 , 1 , 1 , 30522
+578 , 30526 , 30 , 31 , 1 , 1 , 30522
+578 , 30527 , 29 , 31 , 1 , 1 , 30522
+578 , 30528 , 28 , 31 , 1 , 1 , 30522
+578 , 30529 , 28 , 31 , 1 , 1 , 30522
+578 , 30530 , 27 , 31 , 1 , 1 , 30522
+578 , 30531 , 27 , 31 , 1 , 1 , 30522
+578 , 30532 , 27 , 42 , 1 , 1 , 30522
+578 , 30533 , 27 , 31 , 1 , 1 , 30522
+578 , 30534 , 27 , 31 , 1 , 1 , 30522
+578 , 30535 , 27 , 31 , 1 , 1 , 30522
+578 , 30536 , 27 , 31 , 1 , 1 , 30522
+578 , 30537 , 27 , 31 , 1 , 1 , 30522
+578 , 30538 , 27 , 31 , 1 , 1 , 30522
+578 , 30539 , 27 , 31 , 1 , 1 , 30522
+578 , 30540 , 27 , 31 , 1 , 1 , 30522
+578 , 30541 , 27 , 31 , 1 , 1 , 30522
+578 , 30542 , 84 , 0 , 1 , 1 , 30538 30530 30541 30526 30533 30531 30534 30525 30535 30532 30537 30523 30524 30539 30528 30527 30540 30529 30536
+578 , 30543 , 99 , 0 , 1 , 1 , 30542
+578 , 30544 , 99 , 0 , 1 , 1 , 30542
+578 , 30545 , 99 , 11 , 1 , 1 , 30542
+578 , 30546 , 99 , 0 , 1 , 1 , 30542
+578 , 30547 , 99 , 0 , 1 , 1 , 30542
+578 , 30548 , 99 , 0 , 1 , 1 , 30542
+578 , 30549 , 99 , 11 , 1 , 1 , 30542
+578 , 30550 , 98 , 11 , 1 , 1 , 30542
+578 , 30551 , 98 , 11 , 1 , 1 , 30542
+578 , 30552 , 97 , 0 , 1 , 1 , 30542
+578 , 30553 , 97 , 11 , 1 , 1 , 30542
+578 , 30554 , 97 , 11 , 1 , 1 , 30542
+578 , 30555 , 97 , 11 , 1 , 1 , 30542
+578 , 30556 , 97 , 11 , 1 , 1 , 30542
+578 , 30557 , 97 , 11 , 1 , 1 , 30542
+578 , 30558 , 97 , 11 , 1 , 1 , 30542
+578 , 30559 , 97 , 11 , 1 , 1 , 30542
+578 , 30560 , 97 , 11 , 1 , 1 , 30542
+578 , 30561 , 97 , 11 , 1 , 1 , 30542
+578 , 30562 , 125 , 0 , 1 , 1 , 30559 30555 30556 30557 30550 30546 30547 30548 30543 30544 30545 30553 30554 30551 30561 30558 30560 30549 30552
+579 , 30860 , 127 , 52 , 1 , 1 ,
+579 , 30861 , 127 , 52 , 1 , 1 ,
+579 , 30862 , 126 , 52 , 1 , 1 ,
+579 , 30863 , 126 , 52 , 1 , 1 ,
+579 , 30864 , 126 , 52 , 1 , 1 ,
+579 , 30865 , 126 , 52 , 1 , 1 ,
+579 , 30866 , 126 , 52 , 1 , 1 ,
+579 , 30867 , 123 , 52 , 1 , 1 ,
+579 , 30868 , 120 , 52 , 1 , 1 ,
+579 , 30869 , 119 , 52 , 1 , 1 ,
+579 , 30870 , 119 , 52 , 1 , 1 ,
+579 , 30871 , 119 , 52 , 1 , 1 ,
+579 , 30872 , 119 , 52 , 1 , 1 ,
+579 , 30873 , 119 , 51 , 1 , 1 ,
+579 , 30874 , 119 , 52 , 1 , 1 ,
+579 , 30875 , 119 , 52 , 1 , 1 ,
+579 , 30876 , 119 , 52 , 1 , 1 ,
+579 , 30877 , 118 , 62 , 1 , 1 ,
+579 , 30878 , 117 , 62 , 1 , 1 ,
+579 , 30879 , 112 , 131 , 1 , 1 ,
+579 , 30880 , 111 , 72 , 1 , 1 ,
+579 , 30881 , 111 , 117 , 1 , 1 ,
+579 , 30882 , 108 , 62 , 1 , 1 ,
+579 , 30883 , 107 , 72 , 1 , 1 ,
+579 , 30884 , 107 , 72 , 1 , 1 ,
+579 , 30885 , 107 , 72 , 1 , 1 ,
+579 , 30886 , 107 , 72 , 1 , 1 ,
+579 , 30887 , 103 , 62 , 1 , 1 ,
+579 , 30888 , 103 , 73 , 1 , 1 ,
+579 , 30889 , 96 , 62 , 1 , 1 ,
+579 , 30890 , 97 , 72 , 1 , 1 ,
+579 , 30891 , 96 , 82 , 1 , 1 ,
+579 , 30892 , 93 , 62 , 1 , 1 ,
+579 , 30893 , 93 , 52 , 1 , 1 ,
+579 , 30894 , 142 , 41 , 1 , 1 ,
+579 , 30895 , 140 , 86 , 1 , 1 ,
+579 , 30896 , 133 , 90 , 1 , 1 ,
+579 , 30897 , 126 , 87 , 1 , 1 ,
+579 , 30898 , 122 , 91 , 1 , 1 ,
+579 , 30899 , 131 , 62 , 1 , 1 ,
+579 , 30900 , 127 , 62 , 1 , 1 ,
+579 , 30901 , 93 , 72 , 1 , 1 ,
+579 , 30902 , 93 , 82 , 1 , 1 ,
+579 , 30903 , 127 , 62 , 1 , 1 ,
+579 , 30904 , 93 , 62 , 1 , 1 ,
+579 , 30905 , 93 , 62 , 1 , 1 ,
+579 , 30906 , 93 , 72 , 1 , 1 ,
+579 , 30907 , 93 , 62 , 1 , 1 ,
+579 , 30908 , 16 , 355 , 1 , 1 ,
+579 , 30909 , 16 , 325 , 1 , 1 ,
+579 , 30910 , 16 , 325 , 1 , 1 ,
+579 , 30911 , 15 , 345 , 1 , 1 ,
+579 , 30912 , 15 , 305 , 1 , 1 ,
+579 , 30913 , 15 , 355 , 1 , 1 ,
+579 , 30914 , 15 , 355 , 1 , 1 ,
+579 , 30915 , 15 , 355 , 1 , 1 ,
+579 , 30916 , 15 , 355 , 1 , 1 ,
+579 , 30917 , 15 , 355 , 1 , 1 ,
+579 , 30918 , 15 , 355 , 1 , 1 ,
+579 , 30919 , 15 , 335 , 1 , 1 ,
+579 , 30920 , 15 , 355 , 1 , 1 ,
+579 , 30921 , 15 , 355 , 1 , 1 ,
+579 , 30922 , 15 , 355 , 1 , 1 ,
+579 , 30923 , 15 , 355 , 1 , 1 ,
+579 , 30924 , 31 , 112 , 1 , 1 ,
+579 , 30925 , 30 , 150 , 1 , 1 ,
+579 , 30926 , 30 , 111 , 1 , 1 ,
+579 , 30927 , 29 , 119 , 1 , 1 ,
+579 , 30928 , 28 , 122 , 1 , 1 ,
+579 , 30929 , 28 , 130 , 1 , 1 ,
+579 , 30930 , 28 , 171 , 1 , 1 ,
+579 , 30931 , 27 , 140 , 1 , 1 ,
+579 , 30932 , 27 , 142 , 1 , 1 ,
+579 , 30933 , 27 , 197 , 1 , 1 ,
+579 , 30934 , 26 , 153 , 1 , 1 ,
+579 , 30935 , 26 , 145 , 1 , 1 ,
+579 , 30936 , 26 , 156 , 1 , 1 ,
+579 , 30937 , 25 , 150 , 1 , 1 ,
+579 , 30938 , 25 , 167 , 1 , 1 ,
+579 , 30939 , 25 , 176 , 1 , 1 ,
+579 , 30940 , 24 , 185 , 1 , 1 ,
+579 , 30941 , 24 , 188 , 1 , 1 ,
+579 , 30942 , 24 , 230 , 1 , 1 ,
+579 , 30943 , 23 , 260 , 1 , 1 ,
+579 , 30944 , 23 , 200 , 1 , 1 ,
+579 , 30945 , 23 , 200 , 1 , 1 ,
+579 , 30946 , 22 , 247 , 1 , 1 ,
+579 , 30947 , 22 , 193 , 1 , 1 ,
+579 , 30948 , 22 , 193 , 1 , 1 ,
+579 , 30949 , 21 , 194 , 1 , 1 ,
+579 , 30950 , 21 , 226 , 1 , 1 ,
+579 , 30951 , 21 , 206 , 1 , 1 ,
+579 , 30952 , 20 , 278 , 1 , 1 ,
+579 , 30953 , 20 , 226 , 1 , 1 ,
+579 , 30954 , 20 , 236 , 1 , 1 ,
+579 , 30955 , 19 , 278 , 1 , 1 ,
+579 , 30956 , 19 , 216 , 1 , 1 ,
+579 , 30957 , 19 , 225 , 1 , 1 ,
+579 , 30958 , 18 , 218 , 1 , 1 ,
+579 , 30959 , 18 , 205 , 1 , 1 ,
+579 , 30960 , 18 , 198 , 1 , 1 ,
+579 , 30961 , 17 , 175 , 1 , 1 ,
+579 , 30962 , 17 , 251 , 1 , 1 ,
+579 , 30963 , 17 , 209 , 1 , 1 ,
+579 , 30964 , 17 , 210 , 1 , 1 ,
+579 , 30965 , 16 , 209 , 1 , 1 ,
+579 , 30966 , 16 , 241 , 1 , 1 ,
+579 , 30967 , 16 , 189 , 1 , 1 ,
+579 , 30968 , 15 , 198 , 1 , 1 ,
+579 , 30969 , 15 , 199 , 1 , 1 ,
+579 , 30970 , 15 , 261 , 1 , 1 ,
+579 , 30971 , 15 , 209 , 1 , 1 ,
+579 , 30972 , 14 , 229 , 1 , 1 ,
+579 , 30973 , 14 , 178 , 1 , 1 ,
+579 , 30974 , 13 , 177 , 1 , 1 ,
+579 , 30975 , 13 , 156 , 1 , 1 ,
+579 , 30976 , 13 , 153 , 1 , 1 ,
+579 , 30977 , 12 , 181 , 1 , 1 ,
+579 , 30978 , 12 , 136 , 1 , 1 ,
+579 , 30979 , 12 , 137 , 1 , 1 ,
+579 , 30980 , 12 , 163 , 1 , 1 ,
+579 , 30981 , 11 , 126 , 1 , 1 ,
+579 , 30982 , 11 , 120 , 1 , 1 ,
+579 , 30983 , 11 , 113 , 1 , 1 ,
+579 , 30984 , 11 , 109 , 1 , 1 ,
+579 , 30985 , 10 , 139 , 1 , 1 ,
+579 , 30986 , 10 , 99 , 1 , 1 ,
+579 , 30987 , 10 , 99 , 1 , 1 ,
+579 , 30988 , 38 , 103 , 1 , 1 ,
+579 , 30989 , 38 , 92 , 1 , 1 ,
+579 , 30990 , 34 , 93 , 1 , 1 ,
+579 , 30991 , 34 , 103 , 1 , 1 ,
+579 , 30992 , 34 , 103 , 1 , 1 ,
+579 , 30993 , 34 , 104 , 1 , 1 ,
+579 , 30994 , 34 , 104 , 1 , 1 ,
+579 , 30995 , 33 , 103 , 1 , 1 ,
+579 , 30996 , 33 , 103 , 1 , 1 ,
+579 , 30997 , 33 , 103 , 1 , 1 ,
+579 , 30998 , 33 , 93 , 1 , 1 ,
+579 , 30999 , 33 , 93 , 1 , 1 ,
+579 , 31000 , 30 , 113 , 1 , 1 ,
+579 , 31001 , 29 , 93 , 1 , 1 ,
+579 , 31002 , 29 , 103 , 1 , 1 ,
+579 , 31003 , 29 , 93 , 1 , 1 ,
+579 , 31004 , 29 , 114 , 1 , 1 ,
+579 , 31005 , 28 , 103 , 1 , 1 ,
+579 , 31006 , 28 , 114 , 1 , 1 ,
+579 , 31007 , 28 , 103 , 1 , 1 ,
+579 , 31008 , 28 , 103 , 1 , 1 ,
+579 , 31009 , 28 , 113 , 1 , 1 ,
+579 , 31010 , 25 , 103 , 1 , 1 ,
+579 , 31011 , 25 , 113 , 1 , 1 ,
+579 , 31012 , 25 , 103 , 1 , 1 ,
+579 , 31013 , 24 , 103 , 1 , 1 ,
+579 , 31014 , 24 , 113 , 1 , 1 ,
+579 , 31015 , 24 , 103 , 1 , 1 ,
+579 , 31016 , 24 , 103 , 1 , 1 ,
+579 , 31017 , 24 , 114 , 1 , 1 ,
+579 , 31018 , 24 , 103 , 1 , 1 ,
+579 , 31019 , 24 , 114 , 1 , 1 ,
+579 , 31020 , 20 , 113 , 1 , 1 ,
+579 , 31021 , 20 , 103 , 1 , 1 ,
+579 , 31022 , 19 , 103 , 1 , 1 ,
+579 , 31023 , 19 , 113 , 1 , 1 ,
+579 , 31024 , 19 , 113 , 1 , 1 ,
+579 , 31025 , 19 , 113 , 1 , 1 ,
+579 , 31026 , 18 , 113 , 1 , 1 ,
+579 , 31027 , 18 , 113 , 1 , 1 ,
+579 , 31028 , 18 , 103 , 1 , 1 ,
+579 , 31029 , 18 , 103 , 1 , 1 ,
+579 , 31030 , 15 , 103 , 1 , 1 ,
+579 , 31031 , 15 , 92 , 1 , 1 ,
+579 , 31032 , 14 , 103 , 1 , 1 ,
+579 , 31033 , 14 , 92 , 1 , 1 ,
+579 , 31034 , 14 , 93 , 1 , 1 ,
+579 , 31035 , 14 , 103 , 1 , 1 ,
+579 , 31036 , 14 , 93 , 1 , 1 ,
+579 , 31037 , 13 , 93 , 1 , 1 ,
+579 , 31038 , 13 , 93 , 1 , 1 ,
+579 , 31039 , 13 , 83 , 1 , 1 ,
+579 , 31040 , 10 , 82 , 1 , 1 ,
+579 , 31041 , 10 , 92 , 1 , 1 ,
+579 , 31042 , 10 , 72 , 1 , 1 ,
+579 , 31043 , 10 , 82 , 1 , 1 ,
+579 , 31044 , 10 , 82 , 1 , 1 ,
+579 , 31045 , 10 , 82 , 1 , 1 ,
+579 , 31046 , 10 , 82 , 1 , 1 ,
+579 , 31047 , 10 , 93 , 1 , 1 ,
+579 , 31048 , 10 , 72 , 1 , 1 ,
+579 , 31049 , 9 , 72 , 1 , 1 ,
+579 , 31050 , 6 , 82 , 1 , 1 ,
+579 , 31051 , 6 , 82 , 1 , 1 ,
+579 , 31052 , 6 , 72 , 1 , 1 ,
+579 , 31053 , 6 , 72 , 1 , 1 ,
+579 , 31054 , 6 , 72 , 1 , 1 ,
+579 , 31055 , 6 , 72 , 1 , 1 ,
+579 , 31056 , 6 , 72 , 1 , 1 ,
+579 , 31057 , 6 , 72 , 1 , 1 ,
+579 , 31058 , 6 , 72 , 1 , 1 ,
+579 , 31059 , 6 , 72 , 1 , 1 ,
+579 , 31060 , 407 , 164 , 1 , 1 , 30899 31019 30960 31017 30900 31002 31059 30895 31012 30967 31045 30917 30878 30953 31041 31057 30946 30875 30968 30950 30881 30893 30883 30943 30914 30934 31038 30936 30913 30865 30876 30957 30987 30904 30908 31026 31000 30905 30907 30980 31055 31015 30973 30919 30911 30962 30948 31025 30951 30921 30909 30971 30926 30925 30999 30872 30974 31036 30867 30979 30903 31003 30868 30952 30864 30975 31014 31048 30993 30995 31021 30947 30992 30892 30915 30866 31042 30906 31040 30939 30894 30870 30886 30970 30930 30978 30985 31046 30982 30969 31037 30884 30963 31024 30937 30955 30940 30998 30927 31035 31022 30896 30910 30954 31049 30958 31047 31013 30931 30897 31033 30981 31010 30924 30956 30942 30898 30862 31050 30882 30944 30863 30994 31006 31004 30977 30961 30945 30965 30916 30949 31054 30929 30989 31028 30959 30901 31058 30941 30912 30933 30984 30922 31043 30918 30860 30879 31001 31056 31007 30891 30871 30888 31027 31044 30923 30887 30889 30983 30869 31005 30885 31053 31052 31023 31029 30920 31051 30935 31030 31039 31011 30880 31020 30932 31034 30997 30988 31018 30986 30902 31008 30996 30964 31009 30972 30976 30873 30928 30877 31031 30938 30890 30861 30966 30874 31016 30991 31032 30990
+580 , 31839 , 3 , 11 , 1 , 1 ,
+580 , 31840 , 100 , 41 , 1 , 1 , 31839
+580 , 31841 , 100 , 41 , 1 , 1 , 31839
+580 , 31842 , 98 , 41 , 1 , 1 , 31839
+580 , 31843 , 98 , 41 , 1 , 1 , 31839
+580 , 31844 , 98 , 41 , 1 , 1 , 31839
+580 , 31845 , 97 , 41 , 1 , 1 , 31839
+580 , 31846 , 97 , 41 , 1 , 1 , 31839
+580 , 31847 , 97 , 41 , 1 , 1 , 31839
+580 , 31848 , 96 , 42 , 1 , 1 , 31839
+580 , 31849 , 96 , 41 , 1 , 1 , 31839
+580 , 31850 , 96 , 41 , 1 , 1 , 31839
+580 , 31851 , 96 , 41 , 1 , 1 , 31839
+580 , 31852 , 95 , 41 , 1 , 1 , 31839
+580 , 31853 , 95 , 42 , 1 , 1 , 31839
+580 , 31854 , 94 , 42 , 1 , 1 , 31839
+580 , 31855 , 93 , 52 , 1 , 1 , 31839
+580 , 31856 , 93 , 52 , 1 , 1 , 31839
+580 , 31857 , 92 , 41 , 1 , 1 , 31839
+580 , 31858 , 92 , 52 , 1 , 1 , 31839
+580 , 31859 , 92 , 52 , 1 , 1 , 31839
+580 , 31860 , 91 , 52 , 1 , 1 , 31839
+580 , 31861 , 84 , 41 , 1 , 1 , 31839
+580 , 31862 , 83 , 42 , 1 , 1 , 31839
+580 , 31863 , 82 , 42 , 1 , 1 , 31839
+580 , 31864 , 81 , 41 , 1 , 1 , 31839
+580 , 31865 , 81 , 41 , 1 , 1 , 31839
+580 , 31866 , 81 , 41 , 1 , 1 , 31839
+580 , 31867 , 81 , 41 , 1 , 1 , 31839
+580 , 31868 , 80 , 42 , 1 , 1 , 31839
+580 , 31869 , 80 , 42 , 1 , 1 , 31839
+580 , 31870 , 80 , 41 , 1 , 1 , 31839
+580 , 31871 , 80 , 41 , 1 , 1 , 31839
+580 , 31872 , 78 , 41 , 1 , 1 , 31839
+580 , 31873 , 47 , 90 , 1 , 1 , 31839
+580 , 31874 , 47 , 75 , 1 , 1 , 31839
+580 , 31875 , 47 , 110 , 1 , 1 , 31839
+580 , 31876 , 47 , 79 , 1 , 1 , 31839
+580 , 31877 , 47 , 102 , 1 , 1 , 31839
+580 , 31878 , 47 , 80 , 1 , 1 , 31839
+580 , 31879 , 47 , 89 , 1 , 1 , 31839
+580 , 31880 , 47 , 79 , 1 , 1 , 31839
+580 , 31881 , 46 , 245 , 1 , 1 , 31839
+580 , 31882 , 46 , 238 , 1 , 1 , 31839
+580 , 31883 , 46 , 245 , 1 , 1 , 31839
+580 , 31884 , 46 , 238 , 1 , 1 , 31839
+580 , 31885 , 46 , 245 , 1 , 1 , 31839
+580 , 31886 , 46 , 245 , 1 , 1 , 31839
+580 , 31887 , 45 , 245 , 1 , 1 , 31839
+580 , 31888 , 45 , 228 , 1 , 1 , 31839
+580 , 31889 , 45 , 235 , 1 , 1 , 31839
+580 , 31890 , 45 , 228 , 1 , 1 , 31839
+580 , 31891 , 45 , 238 , 1 , 1 , 31839
+580 , 31892 , 45 , 235 , 1 , 1 , 31839
+580 , 31893 , 45 , 245 , 1 , 1 , 31839
+580 , 31894 , 45 , 235 , 1 , 1 , 31839
+580 , 31895 , 45 , 245 , 1 , 1 , 31839
+580 , 31896 , 45 , 245 , 1 , 1 , 31839
+580 , 31897 , 52 , 270 , 1 , 1 , 31839
+580 , 31898 , 51 , 252 , 1 , 1 , 31839
+580 , 31899 , 51 , 253 , 1 , 1 , 31839
+580 , 31900 , 51 , 284 , 1 , 1 , 31839
+580 , 31901 , 50 , 242 , 1 , 1 , 31839
+580 , 31902 , 50 , 242 , 1 , 1 , 31839
+580 , 31903 , 49 , 252 , 1 , 1 , 31839
+580 , 31904 , 48 , 294 , 1 , 1 , 31839
+580 , 31905 , 48 , 270 , 1 , 1 , 31839
+580 , 31906 , 48 , 253 , 1 , 1 , 31839
+580 , 31907 , 47 , 253 , 1 , 1 , 31839
+580 , 31908 , 47 , 253 , 1 , 1 , 31839
+580 , 31909 , 47 , 253 , 1 , 1 , 31839
+580 , 31910 , 46 , 310 , 1 , 1 , 31839
+580 , 31911 , 46 , 246 , 1 , 1 , 31839
+580 , 31912 , 46 , 257 , 1 , 1 , 31839
+580 , 31913 , 46 , 243 , 1 , 1 , 31839
+580 , 31914 , 45 , 247 , 1 , 1 , 31839
+580 , 31915 , 45 , 295 , 1 , 1 , 31839
+580 , 31916 , 45 , 247 , 1 , 1 , 31839
+580 , 31917 , 44 , 295 , 1 , 1 , 31839
+580 , 31918 , 44 , 247 , 1 , 1 , 31839
+580 , 31919 , 43 , 258 , 1 , 1 , 31839
+580 , 31920 , 43 , 248 , 1 , 1 , 31839
+580 , 31921 , 43 , 248 , 1 , 1 , 31839
+580 , 31922 , 42 , 332 , 1 , 1 , 31839
+580 , 31923 , 42 , 248 , 1 , 1 , 31839
+580 , 31924 , 42 , 248 , 1 , 1 , 31839
+580 , 31925 , 42 , 251 , 1 , 1 , 31839
+580 , 31926 , 41 , 251 , 1 , 1 , 31839
+580 , 31927 , 41 , 283 , 1 , 1 , 31839
+580 , 31928 , 41 , 273 , 1 , 1 , 31839
+580 , 31929 , 40 , 262 , 1 , 1 , 31839
+580 , 31930 , 40 , 262 , 1 , 1 , 31839
+580 , 31931 , 40 , 252 , 1 , 1 , 31839
+580 , 31932 , 40 , 251 , 1 , 1 , 31839
+580 , 31933 , 39 , 252 , 1 , 1 , 31839
+580 , 31934 , 39 , 252 , 1 , 1 , 31839
+580 , 31935 , 39 , 284 , 1 , 1 , 31839
+580 , 31936 , 39 , 240 , 1 , 1 , 31839
+580 , 31937 , 38 , 252 , 1 , 1 , 31839
+580 , 31938 , 38 , 316 , 1 , 1 , 31839
+580 , 31939 , 38 , 253 , 1 , 1 , 31839
+580 , 31940 , 37 , 256 , 1 , 1 , 31839
+580 , 31941 , 37 , 237 , 1 , 1 , 31839
+580 , 31942 , 37 , 256 , 1 , 1 , 31839
+580 , 31943 , 36 , 310 , 1 , 1 , 31839
+580 , 31944 , 36 , 247 , 1 , 1 , 31839
+580 , 31945 , 36 , 261 , 1 , 1 , 31839
+580 , 31946 , 35 , 328 , 1 , 1 , 31839
+580 , 31947 , 35 , 248 , 1 , 1 , 31839
+580 , 31948 , 35 , 258 , 1 , 1 , 31839
+580 , 31949 , 34 , 259 , 1 , 1 , 31839
+580 , 31950 , 34 , 281 , 1 , 1 , 31839
+580 , 31951 , 34 , 238 , 1 , 1 , 31839
+580 , 31952 , 33 , 239 , 1 , 1 , 31839
+580 , 31953 , 33 , 260 , 1 , 1 , 31839
+580 , 31954 , 33 , 323 , 1 , 1 , 31839
+580 , 31955 , 32 , 240 , 1 , 1 , 31839
+580 , 31956 , 32 , 236 , 1 , 1 , 31839
+580 , 31957 , 32 , 261 , 1 , 1 , 31839
+580 , 31958 , 31 , 273 , 1 , 1 , 31839
+580 , 31959 , 31 , 251 , 1 , 1 , 31839
+580 , 31960 , 31 , 324 , 1 , 1 , 31839
+580 , 31961 , 48 , 72 , 1 , 1 , 31839
+580 , 31962 , 48 , 72 , 1 , 1 , 31839
+580 , 31963 , 47 , 62 , 1 , 1 , 31839
+580 , 31964 , 47 , 62 , 1 , 1 , 31839
+580 , 31965 , 47 , 52 , 1 , 1 , 31839
+580 , 31966 , 47 , 62 , 1 , 1 , 31839
+580 , 31967 , 46 , 62 , 1 , 1 , 31839
+580 , 31968 , 46 , 62 , 1 , 1 , 31839
+580 , 31969 , 45 , 72 , 1 , 1 , 31839
+580 , 31970 , 45 , 72 , 1 , 1 , 31839
+580 , 31971 , 45 , 73 , 1 , 1 , 31839
+580 , 31972 , 44 , 73 , 1 , 1 , 31839
+580 , 31973 , 44 , 72 , 1 , 1 , 31839
+580 , 31974 , 44 , 62 , 1 , 1 , 31839
+580 , 31975 , 43 , 52 , 1 , 1 , 31839
+580 , 31976 , 43 , 62 , 1 , 1 , 31839
+580 , 31977 , 42 , 72 , 1 , 1 , 31839
+580 , 31978 , 42 , 72 , 1 , 1 , 31839
+580 , 31979 , 42 , 72 , 1 , 1 , 31839
+580 , 31980 , 42 , 73 , 1 , 1 , 31839
+580 , 31981 , 41 , 72 , 1 , 1 , 31839
+580 , 31982 , 40 , 72 , 1 , 1 , 31839
+580 , 31983 , 40 , 41 , 1 , 1 , 31839
+580 , 31984 , 40 , 92 , 1 , 1 , 31839
+580 , 31985 , 40 , 92 , 1 , 1 , 31839
+580 , 31986 , 40 , 52 , 1 , 1 , 31839
+580 , 31987 , 39 , 93 , 1 , 1 , 31839
+580 , 31988 , 39 , 73 , 1 , 1 , 31839
+580 , 31989 , 38 , 73 , 1 , 1 , 31839
+580 , 31990 , 38 , 73 , 1 , 1 , 31839
+580 , 31991 , 37 , 62 , 1 , 1 , 31839
+580 , 31992 , 36 , 62 , 1 , 1 , 31839
+580 , 31993 , 36 , 72 , 1 , 1 , 31839
+580 , 31994 , 36 , 72 , 1 , 1 , 31839
+580 , 31995 , 36 , 72 , 1 , 1 , 31839
+580 , 31996 , 35 , 62 , 1 , 1 , 31839
+580 , 31997 , 35 , 62 , 1 , 1 , 31839
+580 , 31998 , 35 , 62 , 1 , 1 , 31839
+580 , 31999 , 34 , 52 , 1 , 1 , 31839
+580 , 32000 , 34 , 52 , 1 , 1 , 31839
+580 , 32001 , 33 , 62 , 1 , 1 , 31839
+580 , 32002 , 33 , 52 , 1 , 1 , 31839
+580 , 32003 , 33 , 52 , 1 , 1 , 31839
+580 , 32004 , 32 , 52 , 1 , 1 , 31839
+580 , 32005 , 32 , 62 , 1 , 1 , 31839
+580 , 32006 , 31 , 52 , 1 , 1 , 31839
+580 , 32007 , 31 , 52 , 1 , 1 , 31839
+580 , 32008 , 31 , 52 , 1 , 1 , 31839
+580 , 32009 , 31 , 52 , 1 , 1 , 31839
+580 , 32010 , 30 , 52 , 1 , 1 , 31839
+580 , 32011 , 30 , 52 , 1 , 1 , 31839
+580 , 32012 , 29 , 52 , 1 , 1 , 31839
+580 , 32013 , 29 , 41 , 1 , 1 , 31839
+580 , 32014 , 29 , 52 , 1 , 1 , 31839
+580 , 32015 , 29 , 52 , 1 , 1 , 31839
+580 , 32016 , 29 , 52 , 1 , 1 , 31839
+580 , 32017 , 29 , 41 , 1 , 1 , 31839
+580 , 32018 , 28 , 51 , 1 , 1 , 31839
+580 , 32019 , 28 , 52 , 1 , 1 , 31839
+580 , 32020 , 28 , 41 , 1 , 1 , 31839
+580 , 32021 , 27 , 52 , 1 , 1 , 31839
+580 , 32022 , 26 , 52 , 1 , 1 , 31839
+580 , 32023 , 26 , 41 , 1 , 1 , 31839
+580 , 32024 , 26 , 52 , 1 , 1 , 31839
+580 , 32025 , 26 , 41 , 1 , 1 , 31839
+580 , 32026 , 26 , 41 , 1 , 1 , 31839
+580 , 32027 , 26 , 41 , 1 , 1 , 31839
+580 , 32028 , 26 , 41 , 1 , 1 , 31839
+580 , 32029 , 26 , 41 , 1 , 1 , 31839
+580 , 32030 , 26 , 41 , 1 , 1 , 31839
+580 , 32031 , 26 , 42 , 1 , 1 , 31839
+580 , 32032 , 26 , 41 , 1 , 1 , 31839
+580 , 32033 , 403 , 0 , 1 , 1 , 31967 31913 31908 31886 31871 31878 31925 31989 31995 31911 31927 31978 31915 31860 31948 31850 32007 31884 31992 32017 32013 31974 32004 31949 31931 31951 31946 31912 31898 31891 31944 31956 31985 31882 31901 31852 32002 32030 31977 32001 31863 31867 31843 31847 31853 31849 31947 31904 31869 31972 31991 31935 31980 31872 31934 32011 31903 31958 31940 31986 31933 31890 31858 31844 31973 31889 32022 31902 32003 31909 31887 31922 32023 31842 31859 31865 31962 32019 31917 31900 32006 32009 31876 32025 31905 31874 31880 31924 31993 31861 31998 31920 31855 31914 31987 31996 31929 31979 31896 31840 31868 31959 31921 31892 31870 32024 31994 31928 32021 31866 31894 32005 31938 31918 31969 31937 31971 31955 31976 32028 31964 31881 31899 31936 31862 31864 31941 31942 31932 31841 31873 31893 31930 31845 32031 32000 31919 31970 31945 31923 31906 31885 31968 31982 32027 32008 31983 31888 31895 31997 31851 31897 31926 31854 32018 31960 31907 31950 31856 31883 32032 31953 31963 31966 31981 31910 31957 32029 31916 32010 31877 32012 31952 31975 31988 32016 31999 32015 31965 31961 32020 31879 31943 31984 31848 32026 32014 31875 31939 31846 31954 31857 31990
+580 , 32034 , 481 , 41 , 1 , 1 , 32033
+580 , 32035 , 481 , 41 , 1 , 1 , 32033
+580 , 32036 , 481 , 41 , 1 , 1 , 32033
+580 , 32037 , 479 , 41 , 1 , 1 , 32033
+580 , 32038 , 479 , 41 , 1 , 1 , 32033
+580 , 32039 , 479 , 42 , 1 , 1 , 32033
+580 , 32040 , 479 , 42 , 1 , 1 , 32033
+580 , 32041 , 478 , 41 , 1 , 1 , 32033
+580 , 32042 , 478 , 41 , 1 , 1 , 32033
+580 , 32043 , 478 , 41 , 1 , 1 , 32033
+580 , 32044 , 478 , 31 , 1 , 1 , 32033
+580 , 32045 , 478 , 41 , 1 , 1 , 32033
+580 , 32046 , 478 , 41 , 1 , 1 , 32033
+580 , 32047 , 476 , 43 , 1 , 1 , 32033
+580 , 32048 , 476 , 33 , 1 , 1 , 32033
+580 , 32049 , 476 , 41 , 1 , 1 , 32033
+580 , 32050 , 475 , 41 , 1 , 1 , 32033
+580 , 32051 , 489 , 21 , 1 , 1 , 32033
+580 , 32052 , 475 , 41 , 1 , 1 , 32033
+580 , 32053 , 488 , 22 , 1 , 1 , 32033
+580 , 32054 , 489 , 21 , 1 , 1 , 32033
+580 , 32055 , 485 , 21 , 1 , 1 , 32033
+580 , 32056 , 472 , 42 , 1 , 1 , 32033
+580 , 32057 , 485 , 21 , 1 , 1 , 32033
+580 , 32058 , 472 , 42 , 1 , 1 , 32033
+580 , 32059 , 472 , 41 , 1 , 1 , 32033
+580 , 32060 , 472 , 31 , 1 , 1 , 32033
+580 , 32061 , 481 , 21 , 1 , 1 , 32033
+580 , 32062 , 485 , 21 , 1 , 1 , 32033
+580 , 32063 , 477 , 21 , 1 , 1 , 32033
+580 , 32064 , 477 , 21 , 1 , 1 , 32033
+580 , 32065 , 462 , 41 , 1 , 1 , 32033
+580 , 32066 , 462 , 41 , 1 , 1 , 32033
+580 , 32067 , 484 , 41 , 1 , 1 , 32033
+580 , 32068 , 476 , 31 , 1 , 1 , 32033
+580 , 32069 , 476 , 33 , 1 , 1 , 32033
+580 , 32070 , 476 , 43 , 1 , 1 , 32033
+580 , 32071 , 473 , 0 , 1 , 1 , 32033
+580 , 32072 , 473 , 11 , 1 , 1 , 32033
+580 , 32073 , 473 , 0 , 1 , 1 , 32033
+580 , 32074 , 473 , 13 , 1 , 1 , 32033
+580 , 32075 , 473 , 12 , 1 , 1 , 32033
+580 , 32076 , 473 , 12 , 1 , 1 , 32033
+580 , 32077 , 473 , 13 , 1 , 1 , 32033
+580 , 32078 , 473 , 11 , 1 , 1 , 32033
+580 , 32079 , 468 , 42 , 1 , 1 , 32033
+580 , 32080 , 468 , 42 , 1 , 1 , 32033
+580 , 32081 , 468 , 42 , 1 , 1 , 32033
+580 , 32082 , 468 , 43 , 1 , 1 , 32033
+580 , 32083 , 467 , 43 , 1 , 1 , 32033
+580 , 32084 , 467 , 33 , 1 , 1 , 32033
+580 , 32085 , 467 , 33 , 1 , 1 , 32033
+580 , 32086 , 467 , 33 , 1 , 1 , 32033
+580 , 32087 , 466 , 34 , 1 , 1 , 32033
+580 , 32088 , 466 , 34 , 1 , 1 , 32033
+580 , 32089 , 466 , 34 , 1 , 1 , 32033
+580 , 32090 , 466 , 23 , 1 , 1 , 32033
+580 , 32091 , 466 , 34 , 1 , 1 , 32033
+580 , 32092 , 466 , 23 , 1 , 1 , 32033
+580 , 32093 , 465 , 21 , 1 , 1 , 32033
+580 , 32094 , 464 , 21 , 1 , 1 , 32033
+580 , 32095 , 466 , 22 , 1 , 1 , 32033
+580 , 32096 , 466 , 34 , 1 , 1 , 32033
+580 , 32097 , 466 , 23 , 1 , 1 , 32033
+580 , 32098 , 465 , 22 , 1 , 1 , 32033
+580 , 32099 , 465 , 22 , 1 , 1 , 32033
+580 , 32100 , 465 , 22 , 1 , 1 , 32033
+580 , 32101 , 464 , 23 , 1 , 1 , 32033
+580 , 32102 , 464 , 22 , 1 , 1 , 32033
+580 , 32103 , 503 , 32 , 1 , 1 , 32033
+580 , 32104 , 471 , 22 , 1 , 1 , 32033
+580 , 32105 , 467 , 23 , 1 , 1 , 32033
+580 , 32106 , 467 , 23 , 1 , 1 , 32033
+580 , 32107 , 462 , 22 , 1 , 1 , 32033
+580 , 32108 , 464 , 22 , 1 , 1 , 32033
+580 , 32109 , 462 , 22 , 1 , 1 , 32033
+580 , 32110 , 461 , 22 , 1 , 1 , 32033
+580 , 32111 , 460 , 34 , 1 , 1 , 32033
+580 , 32112 , 461 , 22 , 1 , 1 , 32033
+580 , 32113 , 461 , 22 , 1 , 1 , 32033
+580 , 32114 , 459 , 34 , 1 , 1 , 32033
+580 , 32115 , 459 , 24 , 1 , 1 , 32033
+580 , 32116 , 459 , 34 , 1 , 1 , 32033
+580 , 32117 , 459 , 24 , 1 , 1 , 32033
+580 , 32118 , 458 , 24 , 1 , 1 , 32033
+580 , 32119 , 458 , 34 , 1 , 1 , 32033
+580 , 32120 , 457 , 24 , 1 , 1 , 32033
+580 , 32121 , 458 , 34 , 1 , 1 , 32033
+580 , 32122 , 456 , 32 , 1 , 1 , 32033
+580 , 32123 , 460 , 34 , 1 , 1 , 32033
+580 , 32124 , 460 , 34 , 1 , 1 , 32033
+580 , 32125 , 456 , 34 , 1 , 1 , 32033
+580 , 32126 , 456 , 32 , 1 , 1 , 32033
+580 , 32127 , 462 , 22 , 1 , 1 , 32033
+580 , 32128 , 454 , 34 , 1 , 1 , 32033
+580 , 32129 , 455 , 34 , 1 , 1 , 32033
+580 , 32130 , 454 , 34 , 1 , 1 , 32033
+580 , 32131 , 453 , 34 , 1 , 1 , 32033
+580 , 32132 , 452 , 35 , 1 , 1 , 32033
+580 , 32133 , 457 , 24 , 1 , 1 , 32033
+580 , 32134 , 452 , 23 , 1 , 1 , 32033
+580 , 32135 , 454 , 34 , 1 , 1 , 32033
+580 , 32136 , 455 , 34 , 1 , 1 , 32033
+580 , 32137 , 452 , 34 , 1 , 1 , 32033
+580 , 32138 , 444 , 34 , 1 , 1 , 32033
+580 , 32139 , 447 , 33 , 1 , 1 , 32033
+580 , 32140 , 523 , 32 , 1 , 1 , 32033
+580 , 32141 , 523 , 32 , 1 , 1 , 32033
+580 , 32142 , 455 , 34 , 1 , 1 , 32033
+580 , 32143 , 457 , 34 , 1 , 1 , 32033
+580 , 32144 , 448 , 33 , 1 , 1 , 32033
+580 , 32145 , 448 , 33 , 1 , 1 , 32033
+580 , 32146 , 527 , 32 , 1 , 1 , 32033
+580 , 32147 , 524 , 32 , 1 , 1 , 32033
+580 , 32148 , 443 , 35 , 1 , 1 , 32033
+580 , 32149 , 443 , 35 , 1 , 1 , 32033
+580 , 32150 , 441 , 32 , 1 , 1 , 32033
+580 , 32151 , 440 , 32 , 1 , 1 , 32033
+580 , 32152 , 438 , 32 , 1 , 1 , 32033
+580 , 32153 , 438 , 33 , 1 , 1 , 32033
+580 , 32154 , 436 , 34 , 1 , 1 , 32033
+580 , 32155 , 435 , 32 , 1 , 1 , 32033
+580 , 32156 , 429 , 32 , 1 , 1 , 32033
+580 , 32157 , 429 , 22 , 1 , 1 , 32033
+580 , 32158 , 429 , 22 , 1 , 1 , 32033
+580 , 32159 , 450 , 32 , 1 , 1 , 32033
+580 , 32160 , 450 , 63 , 1 , 1 , 32033
+580 , 32161 , 450 , 52 , 1 , 1 , 32033
+580 , 32162 , 449 , 52 , 1 , 1 , 32033
+580 , 32163 , 449 , 63 , 1 , 1 , 32033
+580 , 32164 , 449 , 62 , 1 , 1 , 32033
+580 , 32165 , 449 , 62 , 1 , 1 , 32033
+580 , 32166 , 449 , 62 , 1 , 1 , 32033
+580 , 32167 , 446 , 52 , 1 , 1 , 32033
+580 , 32168 , 446 , 52 , 1 , 1 , 32033
+580 , 32169 , 446 , 41 , 1 , 1 , 32033
+580 , 32170 , 446 , 62 , 1 , 1 , 32033
+580 , 32171 , 446 , 52 , 1 , 1 , 32033
+580 , 32172 , 445 , 62 , 1 , 1 , 32033
+580 , 32173 , 445 , 62 , 1 , 1 , 32033
+580 , 32174 , 445 , 63 , 1 , 1 , 32033
+580 , 32175 , 445 , 52 , 1 , 1 , 32033
+580 , 32176 , 444 , 52 , 1 , 1 , 32033
+580 , 32177 , 442 , 52 , 1 , 1 , 32033
+580 , 32178 , 442 , 41 , 1 , 1 , 32033
+580 , 32179 , 442 , 72 , 1 , 1 , 32033
+580 , 32180 , 442 , 62 , 1 , 1 , 32033
+580 , 32181 , 441 , 72 , 1 , 1 , 32033
+580 , 32182 , 441 , 62 , 1 , 1 , 32033
+580 , 32183 , 441 , 62 , 1 , 1 , 32033
+580 , 32184 , 441 , 62 , 1 , 1 , 32033
+580 , 32185 , 441 , 52 , 1 , 1 , 32033
+580 , 32186 , 441 , 52 , 1 , 1 , 32033
+580 , 32187 , 439 , 52 , 1 , 1 , 32033
+580 , 32188 , 438 , 52 , 1 , 1 , 32033
+580 , 32189 , 438 , 52 , 1 , 1 , 32033
+580 , 32190 , 438 , 52 , 1 , 1 , 32033
+580 , 32191 , 438 , 52 , 1 , 1 , 32033
+580 , 32192 , 438 , 52 , 1 , 1 , 32033
+580 , 32193 , 438 , 52 , 1 , 1 , 32033
+580 , 32194 , 438 , 52 , 1 , 1 , 32033
+580 , 32195 , 437 , 52 , 1 , 1 , 32033
+580 , 32196 , 437 , 52 , 1 , 1 , 32033
+580 , 32197 , 435 , 41 , 1 , 1 , 32033
+580 , 32198 , 435 , 52 , 1 , 1 , 32033
+580 , 32199 , 435 , 52 , 1 , 1 , 32033
+580 , 32200 , 434 , 41 , 1 , 1 , 32033
+580 , 32201 , 434 , 52 , 1 , 1 , 32033
+580 , 32202 , 434 , 41 , 1 , 1 , 32033
+580 , 32203 , 434 , 41 , 1 , 1 , 32033
+580 , 32204 , 434 , 52 , 1 , 1 , 32033
+580 , 32205 , 434 , 52 , 1 , 1 , 32033
+580 , 32206 , 433 , 42 , 1 , 1 , 32033
+580 , 32207 , 430 , 41 , 1 , 1 , 32033
+580 , 32208 , 430 , 41 , 1 , 1 , 32033
+580 , 32209 , 430 , 41 , 1 , 1 , 32033
+580 , 32210 , 430 , 41 , 1 , 1 , 32033
+580 , 32211 , 430 , 41 , 1 , 1 , 32033
+580 , 32212 , 430 , 32 , 1 , 1 , 32033
+580 , 32213 , 430 , 32 , 1 , 1 , 32033
+580 , 32214 , 430 , 32 , 1 , 1 , 32033
+580 , 32215 , 430 , 31 , 1 , 1 , 32033
+580 , 32216 , 430 , 31 , 1 , 1 , 32033
+580 , 32217 , 428 , 31 , 1 , 1 , 32033
+580 , 32218 , 428 , 31 , 1 , 1 , 32033
+580 , 32219 , 428 , 31 , 1 , 1 , 32033
+580 , 32220 , 428 , 21 , 1 , 1 , 32033
+580 , 32221 , 428 , 11 , 1 , 1 , 32033
+580 , 32222 , 428 , 32 , 1 , 1 , 32033
+580 , 32223 , 428 , 22 , 1 , 1 , 32033
+580 , 32224 , 428 , 21 , 1 , 1 , 32033
+580 , 32225 , 428 , 21 , 1 , 1 , 32033
+580 , 32226 , 428 , 21 , 1 , 1 , 32033
+580 , 32227 , 608 , 21 , 1 , 1 , 32151 32186 32081 32094 32155 32215 32054 32145 32165 32107 32219 32104 32092 32105 32069 32048 32055 32084 32157 32076 32101 32099 32188 32062 32109 32119 32093 32051 32041 32179 32205 32181 32120 32052 32064 32133 32082 32040 32164 32085 32114 32089 32068 32209 32124 32163 32079 32086 32180 32056 32108 32202 32083 32200 32071 32176 32152 32118 32053 32063 32174 32112 32129 32158 32137 32212 32135 32210 32121 32072 32173 32199 32058 32184 32183 32096 32217 32223 32117 32171 32130 32043 32046 32039 32060 32134 32168 32110 32189 32097 32201 32095 32204 32221 32154 32091 32070 32224 32143 32049 32067 32156 32213 32061 32136 32088 32216 32167 32077 32138 32196 32057 32080 32132 32187 32160 32074 32131 32038 32122 32178 32208 32141 32193 32182 32142 32059 32206 32125 32144 32166 32034 32169 32146 32148 32162 32147 32087 32128 32111 32100 32045 32115 32153 32226 32191 32102 32050 32149 32127 32161 32225 32207 32190 32047 32185 32044 32037 32211 32150 32175 32103 32075 32218 32065 32198 32113 32197 32073 32222 32172 32192 32106 32139 32194 32214 32140 32177 32203 32035 32195 32159 32066 32098 32170 32116 32123 32090 32036 32042 32078 32126 32220
+581 , 32231 , 4 , 11 , 1 , 1 ,
+581 , 32232 , 100 , 41 , 1 , 1 , 32231
+581 , 32233 , 99 , 41 , 1 , 1 , 32231
+581 , 32234 , 98 , 41 , 1 , 1 , 32231
+581 , 32235 , 98 , 41 , 1 , 1 , 32231
+581 , 32236 , 97 , 41 , 1 , 1 , 32231
+581 , 32237 , 97 , 31 , 1 , 1 , 32231
+581 , 32238 , 97 , 41 , 1 , 1 , 32231
+581 , 32239 , 96 , 41 , 1 , 1 , 32231
+581 , 32240 , 96 , 41 , 1 , 1 , 32231
+581 , 32241 , 96 , 41 , 1 , 1 , 32231
+581 , 32242 , 95 , 41 , 1 , 1 , 32231
+581 , 32243 , 93 , 41 , 1 , 1 , 32231
+581 , 32244 , 92 , 41 , 1 , 1 , 32231
+581 , 32245 , 92 , 41 , 1 , 1 , 32231
+581 , 32246 , 92 , 41 , 1 , 1 , 32231
+581 , 32247 , 92 , 41 , 1 , 1 , 32231
+581 , 32248 , 91 , 41 , 1 , 1 , 32231
+581 , 32249 , 91 , 41 , 1 , 1 , 32231
+581 , 32250 , 89 , 42 , 1 , 1 , 32231
+581 , 32251 , 88 , 42 , 1 , 1 , 32231
+581 , 32252 , 88 , 42 , 1 , 1 , 32231
+581 , 32253 , 85 , 31 , 1 , 1 , 32231
+581 , 32254 , 84 , 41 , 1 , 1 , 32231
+581 , 32255 , 84 , 31 , 1 , 1 , 32231
+581 , 32256 , 84 , 41 , 1 , 1 , 32231
+581 , 32257 , 83 , 41 , 1 , 1 , 32231
+581 , 32258 , 83 , 31 , 1 , 1 , 32231
+581 , 32259 , 83 , 31 , 1 , 1 , 32231
+581 , 32260 , 82 , 31 , 1 , 1 , 32231
+581 , 32261 , 82 , 31 , 1 , 1 , 32231
+581 , 32262 , 81 , 31 , 1 , 1 , 32231
+581 , 32263 , 81 , 31 , 1 , 1 , 32231
+581 , 32264 , 81 , 31 , 1 , 1 , 32231
+581 , 32265 , 61 , 82 , 1 , 1 , 32231
+581 , 32266 , 61 , 100 , 1 , 1 , 32231
+581 , 32267 , 61 , 105 , 1 , 1 , 32231
+581 , 32268 , 61 , 82 , 1 , 1 , 32231
+581 , 32269 , 61 , 82 , 1 , 1 , 32231
+581 , 32270 , 61 , 82 , 1 , 1 , 32231
+581 , 32271 , 61 , 82 , 1 , 1 , 32231
+581 , 32272 , 61 , 83 , 1 , 1 , 32231
+581 , 32273 , 55 , 256 , 1 , 1 , 32231
+581 , 32274 , 55 , 246 , 1 , 1 , 32231
+581 , 32275 , 55 , 256 , 1 , 1 , 32231
+581 , 32276 , 55 , 256 , 1 , 1 , 32231
+581 , 32277 , 55 , 256 , 1 , 1 , 32231
+581 , 32278 , 54 , 256 , 1 , 1 , 32231
+581 , 32279 , 54 , 235 , 1 , 1 , 32231
+581 , 32280 , 54 , 235 , 1 , 1 , 32231
+581 , 32281 , 54 , 246 , 1 , 1 , 32231
+581 , 32282 , 54 , 256 , 1 , 1 , 32231
+581 , 32283 , 54 , 256 , 1 , 1 , 32231
+581 , 32284 , 54 , 256 , 1 , 1 , 32231
+581 , 32285 , 54 , 257 , 1 , 1 , 32231
+581 , 32286 , 54 , 246 , 1 , 1 , 32231
+581 , 32287 , 54 , 256 , 1 , 1 , 32231
+581 , 32288 , 54 , 235 , 1 , 1 , 32231
+581 , 32289 , 66 , 252 , 1 , 1 , 32231
+581 , 32290 , 65 , 246 , 1 , 1 , 32231
+581 , 32291 , 65 , 232 , 1 , 1 , 32231
+581 , 32292 , 64 , 247 , 1 , 1 , 32231
+581 , 32293 , 64 , 236 , 1 , 1 , 32231
+581 , 32294 , 64 , 246 , 1 , 1 , 32231
+581 , 32295 , 63 , 236 , 1 , 1 , 32231
+581 , 32296 , 63 , 290 , 1 , 1 , 32231
+581 , 32297 , 62 , 292 , 1 , 1 , 32231
+581 , 32298 , 62 , 236 , 1 , 1 , 32231
+581 , 32299 , 62 , 257 , 1 , 1 , 32231
+581 , 32300 , 61 , 251 , 1 , 1 , 32231
+581 , 32301 , 61 , 258 , 1 , 1 , 32231
+581 , 32302 , 60 , 236 , 1 , 1 , 32231
+581 , 32303 , 60 , 237 , 1 , 1 , 32231
+581 , 32304 , 60 , 290 , 1 , 1 , 32231
+581 , 32305 , 59 , 233 , 1 , 1 , 32231
+581 , 32306 , 59 , 312 , 1 , 1 , 32231
+581 , 32307 , 59 , 248 , 1 , 1 , 32231
+581 , 32308 , 58 , 256 , 1 , 1 , 32231
+581 , 32309 , 58 , 245 , 1 , 1 , 32231
+581 , 32310 , 58 , 257 , 1 , 1 , 32231
+581 , 32311 , 57 , 245 , 1 , 1 , 32231
+581 , 32312 , 57 , 308 , 1 , 1 , 32231
+581 , 32313 , 57 , 245 , 1 , 1 , 32231
+581 , 32314 , 56 , 299 , 1 , 1 , 32231
+581 , 32315 , 56 , 258 , 1 , 1 , 32231
+581 , 32316 , 56 , 246 , 1 , 1 , 32231
+581 , 32317 , 55 , 244 , 1 , 1 , 32231
+581 , 32318 , 55 , 237 , 1 , 1 , 32231
+581 , 32319 , 55 , 236 , 1 , 1 , 32231
+581 , 32320 , 54 , 301 , 1 , 1 , 32231
+581 , 32321 , 54 , 301 , 1 , 1 , 32231
+581 , 32322 , 54 , 248 , 1 , 1 , 32231
+581 , 32323 , 53 , 249 , 1 , 1 , 32231
+581 , 32324 , 53 , 238 , 1 , 1 , 32231
+581 , 32325 , 53 , 248 , 1 , 1 , 32231
+581 , 32326 , 53 , 249 , 1 , 1 , 32231
+581 , 32327 , 52 , 238 , 1 , 1 , 32231
+581 , 32328 , 52 , 248 , 1 , 1 , 32231
+581 , 32329 , 52 , 237 , 1 , 1 , 32231
+581 , 32330 , 51 , 301 , 1 , 1 , 32231
+581 , 32331 , 51 , 322 , 1 , 1 , 32231
+581 , 32332 , 51 , 249 , 1 , 1 , 32231
+581 , 32333 , 51 , 259 , 1 , 1 , 32231
+581 , 32334 , 50 , 238 , 1 , 1 , 32231
+581 , 32335 , 50 , 245 , 1 , 1 , 32231
+581 , 32336 , 50 , 301 , 1 , 1 , 32231
+581 , 32337 , 50 , 293 , 1 , 1 , 32231
+581 , 32338 , 49 , 243 , 1 , 1 , 32231
+581 , 32339 , 49 , 246 , 1 , 1 , 32231
+581 , 32340 , 49 , 246 , 1 , 1 , 32231
+581 , 32341 , 48 , 243 , 1 , 1 , 32231
+581 , 32342 , 48 , 246 , 1 , 1 , 32231
+581 , 32343 , 48 , 257 , 1 , 1 , 32231
+581 , 32344 , 47 , 299 , 1 , 1 , 32231
+581 , 32345 , 47 , 234 , 1 , 1 , 32231
+581 , 32346 , 47 , 300 , 1 , 1 , 32231
+581 , 32347 , 46 , 258 , 1 , 1 , 32231
+581 , 32348 , 46 , 257 , 1 , 1 , 32231
+581 , 32349 , 46 , 248 , 1 , 1 , 32231
+581 , 32350 , 45 , 258 , 1 , 1 , 32231
+581 , 32351 , 45 , 226 , 1 , 1 , 32231
+581 , 32352 , 45 , 289 , 1 , 1 , 32231
+581 , 32353 , 59 , 52 , 1 , 1 , 32231
+581 , 32354 , 58 , 52 , 1 , 1 , 32231
+581 , 32355 , 58 , 52 , 1 , 1 , 32231
+581 , 32356 , 58 , 52 , 1 , 1 , 32231
+581 , 32357 , 58 , 52 , 1 , 1 , 32231
+581 , 32358 , 57 , 52 , 1 , 1 , 32231
+581 , 32359 , 57 , 52 , 1 , 1 , 32231
+581 , 32360 , 57 , 52 , 1 , 1 , 32231
+581 , 32361 , 57 , 52 , 1 , 1 , 32231
+581 , 32362 , 55 , 52 , 1 , 1 , 32231
+581 , 32363 , 54 , 52 , 1 , 1 , 32231
+581 , 32364 , 54 , 52 , 1 , 1 , 32231
+581 , 32365 , 54 , 52 , 1 , 1 , 32231
+581 , 32366 , 54 , 52 , 1 , 1 , 32231
+581 , 32367 , 54 , 52 , 1 , 1 , 32231
+581 , 32368 , 54 , 52 , 1 , 1 , 32231
+581 , 32369 , 53 , 52 , 1 , 1 , 32231
+581 , 32370 , 53 , 52 , 1 , 1 , 32231
+581 , 32371 , 53 , 52 , 1 , 1 , 32231
+581 , 32372 , 52 , 52 , 1 , 1 , 32231
+581 , 32373 , 51 , 52 , 1 , 1 , 32231
+581 , 32374 , 51 , 52 , 1 , 1 , 32231
+581 , 32375 , 51 , 52 , 1 , 1 , 32231
+581 , 32376 , 50 , 41 , 1 , 1 , 32231
+581 , 32377 , 50 , 52 , 1 , 1 , 32231
+581 , 32378 , 50 , 52 , 1 , 1 , 32231
+581 , 32379 , 50 , 52 , 1 , 1 , 32231
+581 , 32380 , 49 , 52 , 1 , 1 , 32231
+581 , 32381 , 49 , 52 , 1 , 1 , 32231
+581 , 32382 , 48 , 62 , 1 , 1 , 32231
+581 , 32383 , 46 , 62 , 1 , 1 , 32231
+581 , 32384 , 46 , 41 , 1 , 1 , 32231
+581 , 32385 , 46 , 41 , 1 , 1 , 32231
+581 , 32386 , 45 , 41 , 1 , 1 , 32231
+581 , 32387 , 45 , 41 , 1 , 1 , 32231
+581 , 32388 , 45 , 42 , 1 , 1 , 32231
+581 , 32389 , 44 , 42 , 1 , 1 , 32231
+581 , 32390 , 44 , 41 , 1 , 1 , 32231
+581 , 32391 , 43 , 41 , 1 , 1 , 32231
+581 , 32392 , 41 , 41 , 1 , 1 , 32231
+581 , 32393 , 40 , 42 , 1 , 1 , 32231
+581 , 32394 , 39 , 42 , 1 , 1 , 32231
+581 , 32395 , 39 , 41 , 1 , 1 , 32231
+581 , 32396 , 39 , 41 , 1 , 1 , 32231
+581 , 32397 , 38 , 41 , 1 , 1 , 32231
+581 , 32398 , 37 , 41 , 1 , 1 , 32231
+581 , 32399 , 37 , 41 , 1 , 1 , 32231
+581 , 32400 , 36 , 41 , 1 , 1 , 32231
+581 , 32401 , 36 , 41 , 1 , 1 , 32231
+581 , 32402 , 33 , 41 , 1 , 1 , 32231
+581 , 32403 , 32 , 42 , 1 , 1 , 32231
+581 , 32404 , 31 , 42 , 1 , 1 , 32231
+581 , 32405 , 31 , 42 , 1 , 1 , 32231
+581 , 32406 , 31 , 42 , 1 , 1 , 32231
+581 , 32407 , 31 , 42 , 1 , 1 , 32231
+581 , 32408 , 30 , 41 , 1 , 1 , 32231
+581 , 32409 , 30 , 41 , 1 , 1 , 32231
+581 , 32410 , 30 , 41 , 1 , 1 , 32231
+581 , 32411 , 30 , 52 , 1 , 1 , 32231
+581 , 32412 , 29 , 41 , 1 , 1 , 32231
+581 , 32413 , 29 , 42 , 1 , 1 , 32231
+581 , 32414 , 29 , 42 , 1 , 1 , 32231
+581 , 32415 , 29 , 42 , 1 , 1 , 32231
+581 , 32416 , 29 , 41 , 1 , 1 , 32231
+581 , 32417 , 29 , 41 , 1 , 1 , 32231
+581 , 32418 , 29 , 41 , 1 , 1 , 32231
+581 , 32419 , 28 , 41 , 1 , 1 , 32231
+581 , 32420 , 28 , 52 , 1 , 1 , 32231
+581 , 32421 , 28 , 41 , 1 , 1 , 32231
+581 , 32422 , 28 , 41 , 1 , 1 , 32231
+581 , 32423 , 28 , 41 , 1 , 1 , 32231
+581 , 32424 , 28 , 41 , 1 , 1 , 32231
+581 , 32425 , 560 , 0 , 1 , 1 , 32269 32252 32256 32311 32300 32298 32335 32349 32423 32244 32388 32329 32363 32379 32330 32386 32265 32321 32424 32253 32241 32323 32356 32315 32307 32383 32251 32416 32308 32254 32239 32366 32259 32370 32419 32413 32371 32418 32272 32314 32392 32247 32381 32268 32242 32415 32233 32332 32347 32274 32295 32340 32401 32362 32306 32369 32334 32344 32284 32287 32341 32270 32290 32406 32414 32397 32275 32296 32357 32319 32293 32346 32400 32404 32368 32420 32384 32421 32246 32324 32394 32377 32240 32283 32234 32374 32422 32257 32289 32325 32412 32338 32393 32367 32350 32262 32365 32398 32318 32260 32390 32237 32322 32343 32310 32387 32410 32305 32382 32294 32281 32288 32358 32339 32299 32261 32354 32292 32245 32263 32285 32258 32403 32248 32328 32291 32411 32297 32304 32326 32316 32372 32327 32313 32385 32345 32282 32333 32348 32342 32364 32277 32271 32302 32359 32276 32373 32301 32232 32278 32389 32266 32352 32279 32395 32255 32396 32375 32337 32378 32405 32320 32264 32273 32399 32360 32361 32355 32267 32235 32249 32376 32238 32331 32317 32250 32243 32407 32402 32408 32236 32336 32312 32280 32380 32309 32303 32353 32409 32391 32351 32286 32417
+581 , 32426 , 655 , 21 , 1 , 1 , 32425
+581 , 32427 , 657 , 11 , 1 , 1 , 32425
+581 , 32428 , 655 , 21 , 1 , 1 , 32425
+581 , 32429 , 655 , 21 , 1 , 1 , 32425
+581 , 32430 , 652 , 21 , 1 , 1 , 32425
+581 , 32431 , 651 , 21 , 1 , 1 , 32425
+581 , 32432 , 650 , 32 , 1 , 1 , 32425
+581 , 32433 , 650 , 21 , 1 , 1 , 32425
+581 , 32434 , 648 , 21 , 1 , 1 , 32425
+581 , 32435 , 646 , 21 , 1 , 1 , 32425
+581 , 32436 , 646 , 34 , 1 , 1 , 32425
+581 , 32437 , 648 , 21 , 1 , 1 , 32425
+581 , 32438 , 644 , 21 , 1 , 1 , 32425
+581 , 32439 , 649 , 21 , 1 , 1 , 32425
+581 , 32440 , 649 , 21 , 1 , 1 , 32425
+581 , 32441 , 640 , 24 , 1 , 1 , 32425
+581 , 32442 , 640 , 35 , 1 , 1 , 32425
+581 , 32443 , 637 , 33 , 1 , 1 , 32425
+581 , 32444 , 613 , 31 , 1 , 1 , 32425
+581 , 32445 , 612 , 31 , 1 , 1 , 32425
+581 , 32446 , 612 , 31 , 1 , 1 , 32425
+581 , 32447 , 611 , 31 , 1 , 1 , 32425
+581 , 32448 , 611 , 31 , 1 , 1 , 32425
+581 , 32449 , 610 , 42 , 1 , 1 , 32425
+581 , 32450 , 610 , 42 , 1 , 1 , 32425
+581 , 32451 , 610 , 42 , 1 , 1 , 32425
+581 , 32452 , 610 , 43 , 1 , 1 , 32425
+581 , 32453 , 609 , 43 , 1 , 1 , 32425
+581 , 32454 , 608 , 41 , 1 , 1 , 32425
+581 , 32455 , 608 , 52 , 1 , 1 , 32425
+581 , 32456 , 608 , 62 , 1 , 1 , 32425
+581 , 32457 , 607 , 62 , 1 , 1 , 32425
+581 , 32458 , 607 , 62 , 1 , 1 , 32425
+581 , 32459 , 648 , 21 , 1 , 1 , 32425
+581 , 32460 , 639 , 31 , 1 , 1 , 32425
+581 , 32461 , 639 , 31 , 1 , 1 , 32425
+581 , 32462 , 643 , 32 , 1 , 1 , 32425
+581 , 32463 , 643 , 32 , 1 , 1 , 32425
+581 , 32464 , 637 , 11 , 1 , 1 , 32425
+581 , 32465 , 637 , 13 , 1 , 1 , 32425
+581 , 32466 , 637 , 11 , 1 , 1 , 32425
+581 , 32467 , 637 , 13 , 1 , 1 , 32425
+581 , 32468 , 637 , 11 , 1 , 1 , 32425
+581 , 32469 , 637 , 12 , 1 , 1 , 32425
+581 , 32470 , 637 , 13 , 1 , 1 , 32425
+581 , 32471 , 637 , 13 , 1 , 1 , 32425
+581 , 32472 , 632 , 41 , 1 , 1 , 32425
+581 , 32473 , 632 , 41 , 1 , 1 , 32425
+581 , 32474 , 632 , 41 , 1 , 1 , 32425
+581 , 32475 , 631 , 42 , 1 , 1 , 32425
+581 , 32476 , 631 , 42 , 1 , 1 , 32425
+581 , 32477 , 631 , 42 , 1 , 1 , 32425
+581 , 32478 , 631 , 42 , 1 , 1 , 32425
+581 , 32479 , 631 , 42 , 1 , 1 , 32425
+581 , 32480 , 630 , 43 , 1 , 1 , 32425
+581 , 32481 , 630 , 43 , 1 , 1 , 32425
+581 , 32482 , 630 , 43 , 1 , 1 , 32425
+581 , 32483 , 630 , 33 , 1 , 1 , 32425
+581 , 32484 , 629 , 33 , 1 , 1 , 32425
+581 , 32485 , 629 , 23 , 1 , 1 , 32425
+581 , 32486 , 630 , 43 , 1 , 1 , 32425
+581 , 32487 , 629 , 33 , 1 , 1 , 32425
+581 , 32488 , 629 , 23 , 1 , 1 , 32425
+581 , 32489 , 627 , 24 , 1 , 1 , 32425
+581 , 32490 , 628 , 24 , 1 , 1 , 32425
+581 , 32491 , 629 , 24 , 1 , 1 , 32425
+581 , 32492 , 628 , 24 , 1 , 1 , 32425
+581 , 32493 , 626 , 24 , 1 , 1 , 32425
+581 , 32494 , 630 , 23 , 1 , 1 , 32425
+581 , 32495 , 626 , 24 , 1 , 1 , 32425
+581 , 32496 , 626 , 32 , 1 , 1 , 32425
+581 , 32497 , 625 , 32 , 1 , 1 , 32425
+581 , 32498 , 625 , 24 , 1 , 1 , 32425
+581 , 32499 , 625 , 32 , 1 , 1 , 32425
+581 , 32500 , 624 , 24 , 1 , 1 , 32425
+581 , 32501 , 624 , 24 , 1 , 1 , 32425
+581 , 32502 , 628 , 24 , 1 , 1 , 32425
+581 , 32503 , 626 , 24 , 1 , 1 , 32425
+581 , 32504 , 623 , 25 , 1 , 1 , 32425
+581 , 32505 , 622 , 21 , 1 , 1 , 32425
+581 , 32506 , 622 , 35 , 1 , 1 , 32425
+581 , 32507 , 622 , 36 , 1 , 1 , 32425
+581 , 32508 , 621 , 25 , 1 , 1 , 32425
+581 , 32509 , 621 , 36 , 1 , 1 , 32425
+581 , 32510 , 621 , 36 , 1 , 1 , 32425
+581 , 32511 , 623 , 22 , 1 , 1 , 32425
+581 , 32512 , 624 , 24 , 1 , 1 , 32425
+581 , 32513 , 623 , 25 , 1 , 1 , 32425
+581 , 32514 , 620 , 45 , 1 , 1 , 32425
+581 , 32515 , 619 , 45 , 1 , 1 , 32425
+581 , 32516 , 619 , 34 , 1 , 1 , 32425
+581 , 32517 , 619 , 34 , 1 , 1 , 32425
+581 , 32518 , 618 , 34 , 1 , 1 , 32425
+581 , 32519 , 618 , 34 , 1 , 1 , 32425
+581 , 32520 , 617 , 34 , 1 , 1 , 32425
+581 , 32521 , 617 , 45 , 1 , 1 , 32425
+581 , 32522 , 621 , 32 , 1 , 1 , 32425
+581 , 32523 , 616 , 35 , 1 , 1 , 32425
+581 , 32524 , 619 , 34 , 1 , 1 , 32425
+581 , 32525 , 617 , 34 , 1 , 1 , 32425
+581 , 32526 , 615 , 35 , 1 , 1 , 32425
+581 , 32527 , 615 , 35 , 1 , 1 , 32425
+581 , 32528 , 629 , 24 , 1 , 1 , 32425
+581 , 32529 , 613 , 32 , 1 , 1 , 32425
+581 , 32530 , 612 , 33 , 1 , 1 , 32425
+581 , 32531 , 610 , 35 , 1 , 1 , 32425
+581 , 32532 , 607 , 34 , 1 , 1 , 32425
+581 , 32533 , 609 , 33 , 1 , 1 , 32425
+581 , 32534 , 607 , 34 , 1 , 1 , 32425
+581 , 32535 , 616 , 35 , 1 , 1 , 32425
+581 , 32536 , 604 , 32 , 1 , 1 , 32425
+581 , 32537 , 600 , 34 , 1 , 1 , 32425
+581 , 32538 , 640 , 35 , 1 , 1 , 32425
+581 , 32539 , 618 , 36 , 1 , 1 , 32425
+581 , 32540 , 600 , 34 , 1 , 1 , 32425
+581 , 32541 , 598 , 32 , 1 , 1 , 32425
+581 , 32542 , 596 , 35 , 1 , 1 , 32425
+581 , 32543 , 595 , 36 , 1 , 1 , 32425
+581 , 32544 , 620 , 34 , 1 , 1 , 32425
+581 , 32545 , 620 , 44 , 1 , 1 , 32425
+581 , 32546 , 616 , 35 , 1 , 1 , 32425
+581 , 32547 , 604 , 32 , 1 , 1 , 32425
+581 , 32548 , 635 , 24 , 1 , 1 , 32425
+581 , 32549 , 592 , 32 , 1 , 1 , 32425
+581 , 32550 , 606 , 62 , 1 , 1 , 32425
+581 , 32551 , 606 , 52 , 1 , 1 , 32425
+581 , 32552 , 606 , 62 , 1 , 1 , 32425
+581 , 32553 , 605 , 52 , 1 , 1 , 32425
+581 , 32554 , 605 , 41 , 1 , 1 , 32425
+581 , 32555 , 605 , 62 , 1 , 1 , 32425
+581 , 32556 , 604 , 62 , 1 , 1 , 32425
+581 , 32557 , 604 , 62 , 1 , 1 , 32425
+581 , 32558 , 603 , 62 , 1 , 1 , 32425
+581 , 32559 , 602 , 52 , 1 , 1 , 32425
+581 , 32560 , 602 , 52 , 1 , 1 , 32425
+581 , 32561 , 602 , 62 , 1 , 1 , 32425
+581 , 32562 , 602 , 52 , 1 , 1 , 32425
+581 , 32563 , 602 , 52 , 1 , 1 , 32425
+581 , 32564 , 601 , 62 , 1 , 1 , 32425
+581 , 32565 , 600 , 62 , 1 , 1 , 32425
+581 , 32566 , 600 , 62 , 1 , 1 , 32425
+581 , 32567 , 599 , 63 , 1 , 1 , 32425
+581 , 32568 , 598 , 52 , 1 , 1 , 32425
+581 , 32569 , 598 , 53 , 1 , 1 , 32425
+581 , 32570 , 598 , 52 , 1 , 1 , 32425
+581 , 32571 , 598 , 62 , 1 , 1 , 32425
+581 , 32572 , 598 , 52 , 1 , 1 , 32425
+581 , 32573 , 598 , 62 , 1 , 1 , 32425
+581 , 32574 , 597 , 52 , 1 , 1 , 32425
+581 , 32575 , 597 , 52 , 1 , 1 , 32425
+581 , 32576 , 597 , 62 , 1 , 1 , 32425
+581 , 32577 , 597 , 62 , 1 , 1 , 32425
+581 , 32578 , 595 , 62 , 1 , 1 , 32425
+581 , 32579 , 595 , 62 , 1 , 1 , 32425
+581 , 32580 , 594 , 62 , 1 , 1 , 32425
+581 , 32581 , 594 , 52 , 1 , 1 , 32425
+581 , 32582 , 594 , 52 , 1 , 1 , 32425
+581 , 32583 , 594 , 62 , 1 , 1 , 32425
+581 , 32584 , 593 , 62 , 1 , 1 , 32425
+581 , 32585 , 593 , 52 , 1 , 1 , 32425
+581 , 32586 , 593 , 52 , 1 , 1 , 32425
+581 , 32587 , 593 , 52 , 1 , 1 , 32425
+581 , 32588 , 591 , 62 , 1 , 1 , 32425
+581 , 32589 , 590 , 52 , 1 , 1 , 32425
+581 , 32590 , 590 , 52 , 1 , 1 , 32425
+581 , 32591 , 590 , 62 , 1 , 1 , 32425
+581 , 32592 , 590 , 52 , 1 , 1 , 32425
+581 , 32593 , 589 , 52 , 1 , 1 , 32425
+581 , 32594 , 589 , 52 , 1 , 1 , 32425
+581 , 32595 , 589 , 52 , 1 , 1 , 32425
+581 , 32596 , 589 , 52 , 1 , 1 , 32425
+581 , 32597 , 589 , 63 , 1 , 1 , 32425
+581 , 32598 , 587 , 52 , 1 , 1 , 32425
+581 , 32599 , 587 , 62 , 1 , 1 , 32425
+581 , 32600 , 587 , 62 , 1 , 1 , 32425
+581 , 32601 , 587 , 41 , 1 , 1 , 32425
+581 , 32602 , 587 , 52 , 1 , 1 , 32425
+581 , 32603 , 587 , 52 , 1 , 1 , 32425
+581 , 32604 , 587 , 52 , 1 , 1 , 32425
+581 , 32605 , 587 , 52 , 1 , 1 , 32425
+581 , 32606 , 586 , 52 , 1 , 1 , 32425
+581 , 32607 , 586 , 41 , 1 , 1 , 32425
+581 , 32608 , 585 , 51 , 1 , 1 , 32425
+581 , 32609 , 585 , 31 , 1 , 1 , 32425
+581 , 32610 , 585 , 31 , 1 , 1 , 32425
+581 , 32611 , 585 , 41 , 1 , 1 , 32425
+581 , 32612 , 585 , 41 , 1 , 1 , 32425
+581 , 32613 , 585 , 41 , 1 , 1 , 32425
+581 , 32614 , 585 , 41 , 1 , 1 , 32425
+581 , 32615 , 585 , 31 , 1 , 1 , 32425
+581 , 32616 , 585 , 31 , 1 , 1 , 32425
+581 , 32617 , 585 , 31 , 1 , 1 , 32425
+581 , 32618 , 585 , 32 , 1 , 1 , 32425
+581 , 32619 , 748 , 21 , 1 , 1 , 32538 32473 32468 32503 32556 32612 32456 32481 32443 32426 32521 32547 32600 32496 32469 32454 32470 32518 32476 32568 32517 32475 32594 32445 32590 32448 32477 32529 32564 32447 32595 32427 32578 32605 32474 32453 32460 32570 32583 32441 32546 32543 32572 32611 32488 32466 32512 32438 32459 32574 32575 32567 32614 32559 32464 32451 32446 32544 32541 32579 32479 32555 32545 32530 32560 32576 32494 32434 32548 32490 32584 32461 32563 32534 32471 32552 32450 32511 32505 32480 32540 32520 32569 32502 32487 32485 32535 32617 32515 32458 32478 32616 32554 32442 32508 32609 32429 32613 32504 32509 32573 32455 32525 32452 32492 32482 32596 32513 32491 32585 32602 32523 32472 32589 32604 32510 32483 32457 32484 32557 32550 32495 32493 32431 32591 32463 32607 32465 32519 32539 32586 32462 32467 32565 32566 32577 32435 32558 32542 32553 32430 32439 32527 32615 32581 32507 32606 32531 32608 32500 32588 32599 32498 32593 32549 32499 32440 32486 32601 32516 32528 32532 32497 32506 32536 32432 32561 32489 32522 32449 32428 32437 32514 32444 32618 32526 32603 32562 32524 32436 32571 32587 32592 32433 32582 32533 32580 32537 32610 32598 32501 32551 32597
+582 , 32620 , 2 , 11 , 1 , 1 ,
+582 , 32621 , 95 , 21 , 1 , 1 , 32620
+582 , 32622 , 95 , 32 , 1 , 1 , 32620
+582 , 32623 , 95 , 32 , 1 , 1 , 32620
+582 , 32624 , 95 , 32 , 1 , 1 , 32620
+582 , 32625 , 95 , 32 , 1 , 1 , 32620
+582 , 32626 , 91 , 33 , 1 , 1 , 32620
+582 , 32627 , 91 , 32 , 1 , 1 , 32620
+582 , 32628 , 91 , 22 , 1 , 1 , 32620
+582 , 32629 , 91 , 32 , 1 , 1 , 32620
+582 , 32630 , 91 , 32 , 1 , 1 , 32620
+582 , 32631 , 91 , 32 , 1 , 1 , 32620
+582 , 32632 , 91 , 32 , 1 , 1 , 32620
+582 , 32633 , 91 , 32 , 1 , 1 , 32620
+582 , 32634 , 91 , 32 , 1 , 1 , 32620
+582 , 32635 , 91 , 32 , 1 , 1 , 32620
+582 , 32636 , 68 , 31 , 1 , 1 , 32620
+582 , 32637 , 68 , 31 , 1 , 1 , 32620
+582 , 32638 , 68 , 32 , 1 , 1 , 32620
+582 , 32639 , 68 , 31 , 1 , 1 , 32620
+582 , 32640 , 68 , 41 , 1 , 1 , 32620
+582 , 32641 , 68 , 41 , 1 , 1 , 32620
+582 , 32642 , 67 , 31 , 1 , 1 , 32620
+582 , 32643 , 65 , 42 , 1 , 1 , 32620
+582 , 32644 , 64 , 41 , 1 , 1 , 32620
+582 , 32645 , 63 , 31 , 1 , 1 , 32620
+582 , 32646 , 63 , 41 , 1 , 1 , 32620
+582 , 32647 , 62 , 41 , 1 , 1 , 32620
+582 , 32648 , 62 , 31 , 1 , 1 , 32620
+582 , 32649 , 62 , 41 , 1 , 1 , 32620
+582 , 32650 , 62 , 41 , 1 , 1 , 32620
+582 , 32651 , 62 , 41 , 1 , 1 , 32620
+582 , 32652 , 61 , 41 , 1 , 1 , 32620
+582 , 32653 , 60 , 42 , 1 , 1 , 32620
+582 , 32654 , 59 , 62 , 1 , 1 , 32620
+582 , 32655 , 58 , 62 , 1 , 1 , 32620
+582 , 32656 , 64 , 77 , 1 , 1 , 32620
+582 , 32657 , 64 , 77 , 1 , 1 , 32620
+582 , 32658 , 64 , 86 , 1 , 1 , 32620
+582 , 32659 , 64 , 80 , 1 , 1 , 32620
+582 , 32660 , 64 , 87 , 1 , 1 , 32620
+582 , 32661 , 64 , 88 , 1 , 1 , 32620
+582 , 32662 , 64 , 74 , 1 , 1 , 32620
+582 , 32663 , 64 , 78 , 1 , 1 , 32620
+582 , 32664 , 62 , 244 , 1 , 1 , 32620
+582 , 32665 , 62 , 233 , 1 , 1 , 32620
+582 , 32666 , 62 , 234 , 1 , 1 , 32620
+582 , 32667 , 62 , 244 , 1 , 1 , 32620
+582 , 32668 , 62 , 234 , 1 , 1 , 32620
+582 , 32669 , 62 , 224 , 1 , 1 , 32620
+582 , 32670 , 62 , 234 , 1 , 1 , 32620
+582 , 32671 , 62 , 223 , 1 , 1 , 32620
+582 , 32672 , 62 , 234 , 1 , 1 , 32620
+582 , 32673 , 62 , 233 , 1 , 1 , 32620
+582 , 32674 , 62 , 244 , 1 , 1 , 32620
+582 , 32675 , 62 , 223 , 1 , 1 , 32620
+582 , 32676 , 62 , 233 , 1 , 1 , 32620
+582 , 32677 , 62 , 234 , 1 , 1 , 32620
+582 , 32678 , 62 , 233 , 1 , 1 , 32620
+582 , 32679 , 62 , 234 , 1 , 1 , 32620
+582 , 32680 , 55 , 297 , 1 , 1 , 32620
+582 , 32681 , 54 , 235 , 1 , 1 , 32620
+582 , 32682 , 53 , 235 , 1 , 1 , 32620
+582 , 32683 , 53 , 256 , 1 , 1 , 32620
+582 , 32684 , 52 , 234 , 1 , 1 , 32620
+582 , 32685 , 52 , 244 , 1 , 1 , 32620
+582 , 32686 , 52 , 246 , 1 , 1 , 32620
+582 , 32687 , 51 , 287 , 1 , 1 , 32620
+582 , 32688 , 51 , 340 , 1 , 1 , 32620
+582 , 32689 , 51 , 247 , 1 , 1 , 32620
+582 , 32690 , 50 , 270 , 1 , 1 , 32620
+582 , 32691 , 50 , 277 , 1 , 1 , 32620
+582 , 32692 , 50 , 301 , 1 , 1 , 32620
+582 , 32693 , 49 , 237 , 1 , 1 , 32620
+582 , 32694 , 49 , 237 , 1 , 1 , 32620
+582 , 32695 , 49 , 238 , 1 , 1 , 32620
+582 , 32696 , 48 , 236 , 1 , 1 , 32620
+582 , 32697 , 48 , 236 , 1 , 1 , 32620
+582 , 32698 , 48 , 248 , 1 , 1 , 32620
+582 , 32699 , 47 , 248 , 1 , 1 , 32620
+582 , 32700 , 47 , 238 , 1 , 1 , 32620
+582 , 32701 , 47 , 247 , 1 , 1 , 32620
+582 , 32702 , 46 , 306 , 1 , 1 , 32620
+582 , 32703 , 46 , 230 , 1 , 1 , 32620
+582 , 32704 , 46 , 337 , 1 , 1 , 32620
+582 , 32705 , 45 , 251 , 1 , 1 , 32620
+582 , 32706 , 45 , 338 , 1 , 1 , 32620
+582 , 32707 , 45 , 244 , 1 , 1 , 32620
+582 , 32708 , 44 , 245 , 1 , 1 , 32620
+582 , 32709 , 44 , 275 , 1 , 1 , 32620
+582 , 32710 , 44 , 241 , 1 , 1 , 32620
+582 , 32711 , 43 , 244 , 1 , 1 , 32620
+582 , 32712 , 43 , 251 , 1 , 1 , 32620
+582 , 32713 , 43 , 241 , 1 , 1 , 32620
+582 , 32714 , 42 , 234 , 1 , 1 , 32620
+582 , 32715 , 42 , 242 , 1 , 1 , 32620
+582 , 32716 , 42 , 242 , 1 , 1 , 32620
+582 , 32717 , 41 , 247 , 1 , 1 , 32620
+582 , 32718 , 41 , 236 , 1 , 1 , 32620
+582 , 32719 , 41 , 290 , 1 , 1 , 32620
+582 , 32720 , 41 , 247 , 1 , 1 , 32620
+582 , 32721 , 40 , 266 , 1 , 1 , 32620
+582 , 32722 , 40 , 223 , 1 , 1 , 32620
+582 , 32723 , 40 , 238 , 1 , 1 , 32620
+582 , 32724 , 40 , 238 , 1 , 1 , 32620
+582 , 32725 , 40 , 249 , 1 , 1 , 32620
+582 , 32726 , 39 , 259 , 1 , 1 , 32620
+582 , 32727 , 39 , 227 , 1 , 1 , 32620
+582 , 32728 , 39 , 303 , 1 , 1 , 32620
+582 , 32729 , 38 , 238 , 1 , 1 , 32620
+582 , 32730 , 38 , 251 , 1 , 1 , 32620
+582 , 32731 , 38 , 227 , 1 , 1 , 32620
+582 , 32732 , 37 , 251 , 1 , 1 , 32620
+582 , 32733 , 37 , 240 , 1 , 1 , 32620
+582 , 32734 , 37 , 252 , 1 , 1 , 32620
+582 , 32735 , 36 , 347 , 1 , 1 , 32620
+582 , 32736 , 36 , 286 , 1 , 1 , 32620
+582 , 32737 , 36 , 251 , 1 , 1 , 32620
+582 , 32738 , 35 , 245 , 1 , 1 , 32620
+582 , 32739 , 35 , 252 , 1 , 1 , 32620
+582 , 32740 , 35 , 255 , 1 , 1 , 32620
+582 , 32741 , 34 , 245 , 1 , 1 , 32620
+582 , 32742 , 34 , 288 , 1 , 1 , 32620
+582 , 32743 , 34 , 256 , 1 , 1 , 32620
+582 , 32744 , 57 , 52 , 1 , 1 , 32620
+582 , 32745 , 57 , 62 , 1 , 1 , 32620
+582 , 32746 , 57 , 62 , 1 , 1 , 32620
+582 , 32747 , 57 , 62 , 1 , 1 , 32620
+582 , 32748 , 57 , 62 , 1 , 1 , 32620
+582 , 32749 , 57 , 62 , 1 , 1 , 32620
+582 , 32750 , 57 , 62 , 1 , 1 , 32620
+582 , 32751 , 55 , 63 , 1 , 1 , 32620
+582 , 32752 , 53 , 62 , 1 , 1 , 32620
+582 , 32753 , 53 , 62 , 1 , 1 , 32620
+582 , 32754 , 51 , 62 , 1 , 1 , 32620
+582 , 32755 , 51 , 62 , 1 , 1 , 32620
+582 , 32756 , 51 , 62 , 1 , 1 , 32620
+582 , 32757 , 51 , 62 , 1 , 1 , 32620
+582 , 32758 , 51 , 62 , 1 , 1 , 32620
+582 , 32759 , 51 , 62 , 1 , 1 , 32620
+582 , 32760 , 50 , 62 , 1 , 1 , 32620
+582 , 32761 , 49 , 63 , 1 , 1 , 32620
+582 , 32762 , 49 , 62 , 1 , 1 , 32620
+582 , 32763 , 46 , 72 , 1 , 1 , 32620
+582 , 32764 , 45 , 62 , 1 , 1 , 32620
+582 , 32765 , 44 , 62 , 1 , 1 , 32620
+582 , 32766 , 44 , 72 , 1 , 1 , 32620
+582 , 32767 , 44 , 72 , 1 , 1 , 32620
+582 , 32768 , 44 , 62 , 1 , 1 , 32620
+582 , 32769 , 44 , 72 , 1 , 1 , 32620
+582 , 32770 , 43 , 62 , 1 , 1 , 32620
+582 , 32771 , 41 , 63 , 1 , 1 , 32620
+582 , 32772 , 41 , 72 , 1 , 1 , 32620
+582 , 32773 , 38 , 72 , 1 , 1 , 32620
+582 , 32774 , 36 , 73 , 1 , 1 , 32620
+582 , 32775 , 36 , 74 , 1 , 1 , 32620
+582 , 32776 , 36 , 74 , 1 , 1 , 32620
+582 , 32777 , 36 , 74 , 1 , 1 , 32620
+582 , 32778 , 36 , 74 , 1 , 1 , 32620
+582 , 32779 , 35 , 62 , 1 , 1 , 32620
+582 , 32780 , 35 , 73 , 1 , 1 , 32620
+582 , 32781 , 34 , 72 , 1 , 1 , 32620
+582 , 32782 , 34 , 72 , 1 , 1 , 32620
+582 , 32783 , 32 , 72 , 1 , 1 , 32620
+582 , 32784 , 30 , 72 , 1 , 1 , 32620
+582 , 32785 , 30 , 72 , 1 , 1 , 32620
+582 , 32786 , 30 , 82 , 1 , 1 , 32620
+582 , 32787 , 30 , 62 , 1 , 1 , 32620
+582 , 32788 , 29 , 72 , 1 , 1 , 32620
+582 , 32789 , 29 , 72 , 1 , 1 , 32620
+582 , 32790 , 29 , 72 , 1 , 1 , 32620
+582 , 32791 , 28 , 72 , 1 , 1 , 32620
+582 , 32792 , 28 , 84 , 1 , 1 , 32620
+582 , 32793 , 27 , 72 , 1 , 1 , 32620
+582 , 32794 , 27 , 72 , 1 , 1 , 32620
+582 , 32795 , 27 , 72 , 1 , 1 , 32620
+582 , 32796 , 27 , 62 , 1 , 1 , 32620
+582 , 32797 , 27 , 62 , 1 , 1 , 32620
+582 , 32798 , 27 , 62 , 1 , 1 , 32620
+582 , 32799 , 26 , 72 , 1 , 1 , 32620
+582 , 32800 , 26 , 62 , 1 , 1 , 32620
+582 , 32801 , 26 , 62 , 1 , 1 , 32620
+582 , 32802 , 26 , 72 , 1 , 1 , 32620
+582 , 32803 , 25 , 82 , 1 , 1 , 32620
+582 , 32804 , 25 , 72 , 1 , 1 , 32620
+582 , 32805 , 25 , 62 , 1 , 1 , 32620
+582 , 32806 , 25 , 62 , 1 , 1 , 32620
+582 , 32807 , 25 , 72 , 1 , 1 , 32620
+582 , 32808 , 25 , 62 , 1 , 1 , 32620
+582 , 32809 , 25 , 62 , 1 , 1 , 32620
+582 , 32810 , 25 , 62 , 1 , 1 , 32620
+582 , 32811 , 25 , 72 , 1 , 1 , 32620
+582 , 32812 , 25 , 63 , 1 , 1 , 32620
+582 , 32813 , 25 , 73 , 1 , 1 , 32620
+582 , 32814 , 420 , 0 , 1 , 1 , 32689 32623 32756 32643 32657 32754 32626 32719 32718 32700 32646 32787 32784 32709 32747 32669 32785 32776 32628 32671 32766 32642 32808 32624 32630 32658 32699 32755 32635 32688 32650 32680 32775 32774 32696 32714 32740 32813 32640 32732 32677 32738 32734 32752 32712 32779 32632 32720 32721 32729 32679 32751 32773 32651 32796 32670 32683 32736 32660 32768 32811 32649 32803 32722 32681 32704 32713 32621 32744 32726 32703 32727 32772 32757 32627 32631 32674 32793 32781 32805 32636 32764 32801 32686 32746 32750 32748 32792 32800 32622 32682 32782 32707 32702 32637 32789 32777 32676 32644 32771 32798 32648 32733 32753 32809 32767 32655 32698 32633 32742 32684 32695 32730 32794 32661 32761 32710 32763 32762 32807 32678 32725 32728 32760 32653 32795 32797 32654 32783 32765 32690 32723 32711 32697 32799 32788 32790 32673 32656 32810 32724 32665 32717 32659 32625 32639 32770 32716 32647 32743 32675 32735 32662 32664 32812 32693 32668 32759 32692 32694 32705 32641 32745 32638 32708 32780 32672 32634 32652 32749 32706 32769 32804 32739 32791 32691 32629 32687 32731 32715 32667 32758 32737 32786 32666 32645 32663 32802 32741 32778 32685 32806 32701
+582 , 32815 , 537 , 32 , 1 , 1 , 32814
+582 , 32816 , 540 , 32 , 1 , 1 , 32814
+582 , 32817 , 536 , 32 , 1 , 1 , 32814
+582 , 32818 , 538 , 32 , 1 , 1 , 32814
+582 , 32819 , 511 , 41 , 1 , 1 , 32814
+582 , 32820 , 511 , 41 , 1 , 1 , 32814
+582 , 32821 , 511 , 41 , 1 , 1 , 32814
+582 , 32822 , 511 , 41 , 1 , 1 , 32814
+582 , 32823 , 511 , 31 , 1 , 1 , 32814
+582 , 32824 , 511 , 31 , 1 , 1 , 32814
+582 , 32825 , 511 , 31 , 1 , 1 , 32814
+582 , 32826 , 511 , 31 , 1 , 1 , 32814
+582 , 32827 , 532 , 32 , 1 , 1 , 32814
+582 , 32828 , 529 , 32 , 1 , 1 , 32814
+582 , 32829 , 546 , 32 , 1 , 1 , 32814
+582 , 32830 , 529 , 32 , 1 , 1 , 32814
+582 , 32831 , 525 , 32 , 1 , 1 , 32814
+582 , 32832 , 527 , 32 , 1 , 1 , 32814
+582 , 32833 , 523 , 32 , 1 , 1 , 32814
+582 , 32834 , 555 , 32 , 1 , 1 , 32814
+582 , 32835 , 520 , 32 , 1 , 1 , 32814
+582 , 32836 , 513 , 32 , 1 , 1 , 32814
+582 , 32837 , 471 , 41 , 1 , 1 , 32814
+582 , 32838 , 470 , 41 , 1 , 1 , 32814
+582 , 32839 , 470 , 41 , 1 , 1 , 32814
+582 , 32840 , 470 , 41 , 1 , 1 , 32814
+582 , 32841 , 470 , 41 , 1 , 1 , 32814
+582 , 32842 , 470 , 41 , 1 , 1 , 32814
+582 , 32843 , 470 , 52 , 1 , 1 , 32814
+582 , 32844 , 470 , 52 , 1 , 1 , 32814
+582 , 32845 , 469 , 82 , 1 , 1 , 32814
+582 , 32846 , 466 , 82 , 1 , 1 , 32814
+582 , 32847 , 466 , 82 , 1 , 1 , 32814
+582 , 32848 , 466 , 82 , 1 , 1 , 32814
+582 , 32849 , 466 , 82 , 1 , 1 , 32814
+582 , 32850 , 520 , 31 , 1 , 1 , 32814
+582 , 32851 , 552 , 11 , 1 , 1 , 32814
+582 , 32852 , 532 , 31 , 1 , 1 , 32814
+582 , 32853 , 519 , 41 , 1 , 1 , 32814
+582 , 32854 , 509 , 41 , 1 , 1 , 32814
+582 , 32855 , 510 , 41 , 1 , 1 , 32814
+582 , 32856 , 509 , 41 , 1 , 1 , 32814
+582 , 32857 , 508 , 42 , 1 , 1 , 32814
+582 , 32858 , 506 , 42 , 1 , 1 , 32814
+582 , 32859 , 522 , 31 , 1 , 1 , 32814
+582 , 32860 , 505 , 41 , 1 , 1 , 32814
+582 , 32861 , 505 , 41 , 1 , 1 , 32814
+582 , 32862 , 506 , 12 , 1 , 1 , 32814
+582 , 32863 , 505 , 12 , 1 , 1 , 32814
+582 , 32864 , 505 , 12 , 1 , 1 , 32814
+582 , 32865 , 504 , 12 , 1 , 1 , 32814
+582 , 32866 , 504 , 11 , 1 , 1 , 32814
+582 , 32867 , 504 , 13 , 1 , 1 , 32814
+582 , 32868 , 504 , 11 , 1 , 1 , 32814
+582 , 32869 , 504 , 11 , 1 , 1 , 32814
+582 , 32870 , 499 , 32 , 1 , 1 , 32814
+582 , 32871 , 499 , 32 , 1 , 1 , 32814
+582 , 32872 , 498 , 32 , 1 , 1 , 32814
+582 , 32873 , 498 , 32 , 1 , 1 , 32814
+582 , 32874 , 497 , 33 , 1 , 1 , 32814
+582 , 32875 , 497 , 33 , 1 , 1 , 32814
+582 , 32876 , 497 , 34 , 1 , 1 , 32814
+582 , 32877 , 496 , 32 , 1 , 1 , 32814
+582 , 32878 , 495 , 33 , 1 , 1 , 32814
+582 , 32879 , 495 , 33 , 1 , 1 , 32814
+582 , 32880 , 494 , 34 , 1 , 1 , 32814
+582 , 32881 , 493 , 34 , 1 , 1 , 32814
+582 , 32882 , 493 , 24 , 1 , 1 , 32814
+582 , 32883 , 493 , 21 , 1 , 1 , 32814
+582 , 32884 , 492 , 21 , 1 , 1 , 32814
+582 , 32885 , 492 , 21 , 1 , 1 , 32814
+582 , 32886 , 490 , 22 , 1 , 1 , 32814
+582 , 32887 , 489 , 22 , 1 , 1 , 32814
+582 , 32888 , 489 , 22 , 1 , 1 , 32814
+582 , 32889 , 489 , 21 , 1 , 1 , 32814
+582 , 32890 , 488 , 35 , 1 , 1 , 32814
+582 , 32891 , 488 , 34 , 1 , 1 , 32814
+582 , 32892 , 495 , 21 , 1 , 1 , 32814
+582 , 32893 , 487 , 34 , 1 , 1 , 32814
+582 , 32894 , 487 , 35 , 1 , 1 , 32814
+582 , 32895 , 486 , 24 , 1 , 1 , 32814
+582 , 32896 , 486 , 35 , 1 , 1 , 32814
+582 , 32897 , 485 , 21 , 1 , 1 , 32814
+582 , 32898 , 485 , 32 , 1 , 1 , 32814
+582 , 32899 , 484 , 21 , 1 , 1 , 32814
+582 , 32900 , 483 , 21 , 1 , 1 , 32814
+582 , 32901 , 492 , 22 , 1 , 1 , 32814
+582 , 32902 , 483 , 21 , 1 , 1 , 32814
+582 , 32903 , 483 , 22 , 1 , 1 , 32814
+582 , 32904 , 482 , 21 , 1 , 1 , 32814
+582 , 32905 , 482 , 32 , 1 , 1 , 32814
+582 , 32906 , 481 , 21 , 1 , 1 , 32814
+582 , 32907 , 480 , 22 , 1 , 1 , 32814
+582 , 32908 , 480 , 32 , 1 , 1 , 32814
+582 , 32909 , 480 , 32 , 1 , 1 , 32814
+582 , 32910 , 479 , 34 , 1 , 1 , 32814
+582 , 32911 , 488 , 21 , 1 , 1 , 32814
+582 , 32912 , 486 , 34 , 1 , 1 , 32814
+582 , 32913 , 485 , 24 , 1 , 1 , 32814
+582 , 32914 , 478 , 35 , 1 , 1 , 32814
+582 , 32915 , 479 , 34 , 1 , 1 , 32814
+582 , 32916 , 477 , 32 , 1 , 1 , 32814
+582 , 32917 , 477 , 33 , 1 , 1 , 32814
+582 , 32918 , 473 , 32 , 1 , 1 , 32814
+582 , 32919 , 472 , 32 , 1 , 1 , 32814
+582 , 32920 , 478 , 32 , 1 , 1 , 32814
+582 , 32921 , 472 , 33 , 1 , 1 , 32814
+582 , 32922 , 477 , 32 , 1 , 1 , 32814
+582 , 32923 , 467 , 36 , 1 , 1 , 32814
+582 , 32924 , 470 , 34 , 1 , 1 , 32814
+582 , 32925 , 463 , 32 , 1 , 1 , 32814
+582 , 32926 , 504 , 32 , 1 , 1 , 32814
+582 , 32927 , 479 , 34 , 1 , 1 , 32814
+582 , 32928 , 466 , 32 , 1 , 1 , 32814
+582 , 32929 , 547 , 32 , 1 , 1 , 32814
+582 , 32930 , 499 , 22 , 1 , 1 , 32814
+582 , 32931 , 463 , 32 , 1 , 1 , 32814
+582 , 32932 , 463 , 32 , 1 , 1 , 32814
+582 , 32933 , 455 , 34 , 1 , 1 , 32814
+582 , 32934 , 454 , 34 , 1 , 1 , 32814
+582 , 32935 , 494 , 21 , 1 , 1 , 32814
+582 , 32936 , 478 , 35 , 1 , 1 , 32814
+582 , 32937 , 472 , 32 , 1 , 1 , 32814
+582 , 32938 , 460 , 34 , 1 , 1 , 32814
+582 , 32939 , 495 , 21 , 1 , 1 , 32814
+582 , 32940 , 452 , 32 , 1 , 1 , 32814
+582 , 32941 , 465 , 82 , 1 , 1 , 32814
+582 , 32942 , 465 , 82 , 1 , 1 , 32814
+582 , 32943 , 465 , 82 , 1 , 1 , 32814
+582 , 32944 , 465 , 82 , 1 , 1 , 32814
+582 , 32945 , 465 , 82 , 1 , 1 , 32814
+582 , 32946 , 464 , 72 , 1 , 1 , 32814
+582 , 32947 , 462 , 82 , 1 , 1 , 32814
+582 , 32948 , 462 , 82 , 1 , 1 , 32814
+582 , 32949 , 462 , 82 , 1 , 1 , 32814
+582 , 32950 , 462 , 82 , 1 , 1 , 32814
+582 , 32951 , 462 , 82 , 1 , 1 , 32814
+582 , 32952 , 462 , 82 , 1 , 1 , 32814
+582 , 32953 , 462 , 82 , 1 , 1 , 32814
+582 , 32954 , 461 , 82 , 1 , 1 , 32814
+582 , 32955 , 461 , 82 , 1 , 1 , 32814
+582 , 32956 , 461 , 82 , 1 , 1 , 32814
+582 , 32957 , 459 , 93 , 1 , 1 , 32814
+582 , 32958 , 458 , 82 , 1 , 1 , 32814
+582 , 32959 , 458 , 82 , 1 , 1 , 32814
+582 , 32960 , 458 , 82 , 1 , 1 , 32814
+582 , 32961 , 458 , 82 , 1 , 1 , 32814
+582 , 32962 , 458 , 82 , 1 , 1 , 32814
+582 , 32963 , 458 , 82 , 1 , 1 , 32814
+582 , 32964 , 458 , 82 , 1 , 1 , 32814
+582 , 32965 , 458 , 82 , 1 , 1 , 32814
+582 , 32966 , 458 , 82 , 1 , 1 , 32814
+582 , 32967 , 455 , 82 , 1 , 1 , 32814
+582 , 32968 , 455 , 93 , 1 , 1 , 32814
+582 , 32969 , 454 , 72 , 1 , 1 , 32814
+582 , 32970 , 454 , 72 , 1 , 1 , 32814
+582 , 32971 , 454 , 93 , 1 , 1 , 32814
+582 , 32972 , 454 , 83 , 1 , 1 , 32814
+582 , 32973 , 454 , 73 , 1 , 1 , 32814
+582 , 32974 , 454 , 73 , 1 , 1 , 32814
+582 , 32975 , 454 , 82 , 1 , 1 , 32814
+582 , 32976 , 454 , 83 , 1 , 1 , 32814
+582 , 32977 , 452 , 82 , 1 , 1 , 32814
+582 , 32978 , 451 , 82 , 1 , 1 , 32814
+582 , 32979 , 451 , 82 , 1 , 1 , 32814
+582 , 32980 , 451 , 82 , 1 , 1 , 32814
+582 , 32981 , 451 , 82 , 1 , 1 , 32814
+582 , 32982 , 451 , 72 , 1 , 1 , 32814
+582 , 32983 , 451 , 72 , 1 , 1 , 32814
+582 , 32984 , 451 , 82 , 1 , 1 , 32814
+582 , 32985 , 450 , 82 , 1 , 1 , 32814
+582 , 32986 , 450 , 82 , 1 , 1 , 32814
+582 , 32987 , 450 , 82 , 1 , 1 , 32814
+582 , 32988 , 448 , 82 , 1 , 1 , 32814
+582 , 32989 , 448 , 82 , 1 , 1 , 32814
+582 , 32990 , 448 , 72 , 1 , 1 , 32814
+582 , 32991 , 448 , 72 , 1 , 1 , 32814
+582 , 32992 , 448 , 72 , 1 , 1 , 32814
+582 , 32993 , 448 , 72 , 1 , 1 , 32814
+582 , 32994 , 448 , 72 , 1 , 1 , 32814
+582 , 32995 , 448 , 72 , 1 , 1 , 32814
+582 , 32996 , 448 , 72 , 1 , 1 , 32814
+582 , 32997 , 448 , 72 , 1 , 1 , 32814
+582 , 32998 , 446 , 73 , 1 , 1 , 32814
+582 , 32999 , 446 , 72 , 1 , 1 , 32814
+582 , 33000 , 446 , 62 , 1 , 1 , 32814
+582 , 33001 , 446 , 72 , 1 , 1 , 32814
+582 , 33002 , 446 , 62 , 1 , 1 , 32814
+582 , 33003 , 446 , 62 , 1 , 1 , 32814
+582 , 33004 , 446 , 73 , 1 , 1 , 32814
+582 , 33005 , 446 , 62 , 1 , 1 , 32814
+582 , 33006 , 446 , 62 , 1 , 1 , 32814
+582 , 33007 , 446 , 62 , 1 , 1 , 32814
+582 , 33008 , 638 , 21 , 1 , 1 , 32966 32901 32835 32910 32947 32916 32921 32858 32900 32882 32878 32816 33003 32896 32863 32821 32904 32924 32846 32913 32943 32995 32946 32993 32899 32920 32937 32836 32876 32886 32956 32832 32911 32851 32945 32971 32907 32968 32817 32839 32838 33007 32957 32918 32845 32928 32931 32951 32831 32982 32948 32869 32989 32822 32870 32837 32823 32844 32872 32955 32919 32953 32996 32959 32979 32932 32984 32933 33005 32992 32825 32830 32893 32976 32853 32875 32925 32973 32952 32987 32912 32885 32994 32972 32969 32880 32964 32977 33001 32889 32902 32892 32926 32942 32962 32855 33004 32819 32871 32867 32986 32929 32879 32988 32967 32906 32840 32985 32898 32847 32940 32868 32909 32905 32895 32954 33006 32914 32891 32897 32834 33000 32960 32829 32917 32950 32887 32852 32833 32944 32975 32991 32848 32927 32949 32961 32888 32824 32999 32965 32874 32963 32981 32866 32820 32935 32970 32923 32859 32873 32856 32939 32958 32857 32854 32930 32936 32860 32828 32894 32842 32983 33002 32862 32922 32890 32843 32990 32941 32883 32850 32864 32908 32915 32974 32865 32938 32903 32826 32884 32861 32978 32997 32841 32827 32881 32849 32934 32980 32877 32815 32998 32818
+583 , 34182 , 2 , 11 , 1 , 1 ,
+583 , 34183 , 356 , 92 , 1 , 1 , 34182
+583 , 34184 , 355 , 174 , 1 , 1 , 34182
+583 , 34185 , 355 , 93 , 1 , 1 , 34182
+583 , 34186 , 355 , 174 , 1 , 1 , 34182
+583 , 34187 , 354 , 174 , 1 , 1 , 34182
+583 , 34188 , 354 , 174 , 1 , 1 , 34182
+583 , 34189 , 354 , 164 , 1 , 1 , 34182
+583 , 34190 , 354 , 93 , 1 , 1 , 34182
+583 , 34191 , 353 , 154 , 1 , 1 , 34182
+583 , 34192 , 353 , 82 , 1 , 1 , 34182
+583 , 34193 , 349 , 93 , 1 , 1 , 34182
+583 , 34194 , 348 , 134 , 1 , 1 , 34182
+583 , 34195 , 347 , 93 , 1 , 1 , 34182
+583 , 34196 , 347 , 82 , 1 , 1 , 34182
+583 , 34197 , 347 , 82 , 1 , 1 , 34182
+583 , 34198 , 347 , 114 , 1 , 1 , 34182
+583 , 34199 , 347 , 92 , 1 , 1 , 34182
+583 , 34200 , 347 , 82 , 1 , 1 , 34182
+583 , 34201 , 346 , 103 , 1 , 1 , 34182
+583 , 34202 , 302 , 245 , 1 , 1 , 34182
+583 , 34203 , 149 , 93 , 1 , 1 , 34182
+583 , 34204 , 96 , 274 , 1 , 1 , 34182
+583 , 34205 , 148 , 266 , 1 , 1 , 34182
+583 , 34206 , 143 , 62 , 1 , 1 , 34182
+583 , 34207 , 142 , 306 , 1 , 1 , 34182
+583 , 34208 , 119 , 123 , 1 , 1 , 34182
+583 , 34209 , 118 , 72 , 1 , 1 , 34182
+583 , 34210 , 105 , 246 , 1 , 1 , 34182
+583 , 34211 , 101 , 247 , 1 , 1 , 34182
+583 , 34212 , 101 , 257 , 1 , 1 , 34182
+583 , 34213 , 101 , 244 , 1 , 1 , 34182
+583 , 34214 , 101 , 237 , 1 , 1 , 34182
+583 , 34215 , 100 , 254 , 1 , 1 , 34182
+583 , 34216 , 118 , 62 , 1 , 1 , 34182
+583 , 34217 , 142 , 297 , 1 , 1 , 34182
+583 , 34218 , 141 , 72 , 1 , 1 , 34182
+583 , 34219 , 100 , 254 , 1 , 1 , 34182
+583 , 34220 , 100 , 249 , 1 , 1 , 34182
+583 , 34221 , 100 , 255 , 1 , 1 , 34182
+583 , 34222 , 100 , 254 , 1 , 1 , 34182
+583 , 34223 , 100 , 296 , 1 , 1 , 34182
+583 , 34224 , 100 , 264 , 1 , 1 , 34182
+583 , 34225 , 104 , 237 , 1 , 1 , 34182
+583 , 34226 , 140 , 72 , 1 , 1 , 34182
+583 , 34227 , 140 , 62 , 1 , 1 , 34182
+583 , 34228 , 139 , 62 , 1 , 1 , 34182
+583 , 34229 , 139 , 73 , 1 , 1 , 34182
+583 , 34230 , 138 , 62 , 1 , 1 , 34182
+583 , 34231 , 143 , 314 , 1 , 1 , 34182
+583 , 34232 , 302 , 254 , 1 , 1 , 34182
+583 , 34233 , 302 , 228 , 1 , 1 , 34182
+583 , 34234 , 302 , 232 , 1 , 1 , 34182
+583 , 34235 , 391 , 83 , 1 , 1 , 34182
+583 , 34236 , 281 , 52 , 1 , 1 , 34182
+583 , 34237 , 281 , 52 , 1 , 1 , 34182
+583 , 34238 , 281 , 62 , 1 , 1 , 34182
+583 , 34239 , 281 , 62 , 1 , 1 , 34182
+583 , 34240 , 281 , 52 , 1 , 1 , 34182
+583 , 34241 , 281 , 62 , 1 , 1 , 34182
+583 , 34242 , 281 , 62 , 1 , 1 , 34182
+583 , 34243 , 281 , 52 , 1 , 1 , 34182
+583 , 34244 , 281 , 41 , 1 , 1 , 34182
+583 , 34245 , 281 , 62 , 1 , 1 , 34182
+583 , 34246 , 161 , 52 , 1 , 1 , 34182
+583 , 34247 , 159 , 52 , 1 , 1 , 34182
+583 , 34248 , 158 , 52 , 1 , 1 , 34182
+583 , 34249 , 158 , 52 , 1 , 1 , 34182
+583 , 34250 , 157 , 52 , 1 , 1 , 34182
+583 , 34251 , 157 , 62 , 1 , 1 , 34182
+583 , 34252 , 157 , 62 , 1 , 1 , 34182
+583 , 34253 , 157 , 62 , 1 , 1 , 34182
+583 , 34254 , 157 , 62 , 1 , 1 , 34182
+583 , 34255 , 157 , 62 , 1 , 1 , 34182
+583 , 34256 , 155 , 62 , 1 , 1 , 34182
+583 , 34257 , 153 , 52 , 1 , 1 , 34182
+583 , 34258 , 117 , 62 , 1 , 1 , 34182
+583 , 34259 , 117 , 72 , 1 , 1 , 34182
+583 , 34260 , 116 , 277 , 1 , 1 , 34182
+583 , 34261 , 116 , 321 , 1 , 1 , 34182
+583 , 34262 , 118 , 90 , 1 , 1 , 34182
+583 , 34263 , 111 , 254 , 1 , 1 , 34182
+583 , 34264 , 110 , 244 , 1 , 1 , 34182
+583 , 34265 , 110 , 254 , 1 , 1 , 34182
+583 , 34266 , 109 , 253 , 1 , 1 , 34182
+583 , 34267 , 109 , 249 , 1 , 1 , 34182
+583 , 34268 , 153 , 62 , 1 , 1 , 34182
+583 , 34269 , 152 , 52 , 1 , 1 , 34182
+583 , 34270 , 152 , 62 , 1 , 1 , 34182
+583 , 34271 , 152 , 72 , 1 , 1 , 34182
+583 , 34272 , 149 , 62 , 1 , 1 , 34182
+583 , 34273 , 152 , 72 , 1 , 1 , 34182
+583 , 34274 , 152 , 52 , 1 , 1 , 34182
+583 , 34275 , 152 , 62 , 1 , 1 , 34182
+583 , 34276 , 103 , 246 , 1 , 1 , 34182
+583 , 34277 , 104 , 236 , 1 , 1 , 34182
+583 , 34278 , 152 , 62 , 1 , 1 , 34182
+583 , 34279 , 85 , 233 , 1 , 1 , 34182
+583 , 34280 , 94 , 247 , 1 , 1 , 34182
+583 , 34281 , 93 , 249 , 1 , 1 , 34182
+583 , 34282 , 151 , 62 , 1 , 1 , 34182
+583 , 34283 , 150 , 62 , 1 , 1 , 34182
+583 , 34284 , 272 , 41 , 1 , 1 , 34182
+583 , 34285 , 272 , 62 , 1 , 1 , 34182
+583 , 34286 , 272 , 52 , 1 , 1 , 34182
+583 , 34287 , 121 , 90 , 1 , 1 , 34182
+583 , 34288 , 120 , 72 , 1 , 1 , 34182
+583 , 34289 , 119 , 72 , 1 , 1 , 34182
+583 , 34290 , 119 , 78 , 1 , 1 , 34182
+583 , 34291 , 272 , 41 , 1 , 1 , 34182
+583 , 34292 , 272 , 52 , 1 , 1 , 34182
+583 , 34293 , 272 , 41 , 1 , 1 , 34182
+583 , 34294 , 272 , 41 , 1 , 1 , 34182
+583 , 34295 , 99 , 235 , 1 , 1 , 34182
+583 , 34296 , 99 , 235 , 1 , 1 , 34182
+583 , 34297 , 98 , 238 , 1 , 1 , 34182
+583 , 34298 , 98 , 242 , 1 , 1 , 34182
+583 , 34299 , 97 , 235 , 1 , 1 , 34182
+583 , 34300 , 97 , 242 , 1 , 1 , 34182
+583 , 34301 , 272 , 41 , 1 , 1 , 34182
+583 , 34302 , 95 , 253 , 1 , 1 , 34182
+583 , 34303 , 95 , 231 , 1 , 1 , 34182
+583 , 34304 , 95 , 243 , 1 , 1 , 34182
+583 , 34305 , 94 , 247 , 1 , 1 , 34182
+583 , 34306 , 94 , 230 , 1 , 1 , 34182
+583 , 34307 , 272 , 41 , 1 , 1 , 34182
+583 , 34308 , 272 , 41 , 1 , 1 , 34182
+583 , 34309 , 390 , 72 , 1 , 1 , 34182
+583 , 34310 , 386 , 82 , 1 , 1 , 34182
+583 , 34311 , 220 , 302 , 1 , 1 , 34182
+583 , 34312 , 220 , 301 , 1 , 1 , 34182
+583 , 34313 , 218 , 86 , 1 , 1 , 34182
+583 , 34314 , 385 , 72 , 1 , 1 , 34182
+583 , 34315 , 385 , 72 , 1 , 1 , 34182
+583 , 34316 , 384 , 72 , 1 , 1 , 34182
+583 , 34317 , 384 , 82 , 1 , 1 , 34182
+583 , 34318 , 384 , 82 , 1 , 1 , 34182
+583 , 34319 , 384 , 82 , 1 , 1 , 34182
+583 , 34320 , 384 , 82 , 1 , 1 , 34182
+583 , 34321 , 383 , 82 , 1 , 1 , 34182
+583 , 34322 , 383 , 83 , 1 , 1 , 34182
+583 , 34323 , 378 , 93 , 1 , 1 , 34182
+583 , 34324 , 378 , 83 , 1 , 1 , 34182
+583 , 34325 , 376 , 93 , 1 , 1 , 34182
+583 , 34326 , 376 , 83 , 1 , 1 , 34182
+583 , 34327 , 376 , 83 , 1 , 1 , 34182
+583 , 34328 , 376 , 103 , 1 , 1 , 34182
+583 , 34329 , 375 , 82 , 1 , 1 , 34182
+583 , 34330 , 375 , 92 , 1 , 1 , 34182
+583 , 34331 , 375 , 82 , 1 , 1 , 34182
+583 , 34332 , 204 , 75 , 1 , 1 , 34182
+583 , 34333 , 106 , 237 , 1 , 1 , 34182
+583 , 34334 , 105 , 246 , 1 , 1 , 34182
+583 , 34335 , 204 , 41 , 1 , 1 , 34182
+583 , 34336 , 203 , 42 , 1 , 1 , 34182
+583 , 34337 , 203 , 42 , 1 , 1 , 34182
+583 , 34338 , 203 , 42 , 1 , 1 , 34182
+583 , 34339 , 203 , 42 , 1 , 1 , 34182
+583 , 34340 , 203 , 89 , 1 , 1 , 34182
+583 , 34341 , 203 , 41 , 1 , 1 , 34182
+583 , 34342 , 133 , 62 , 1 , 1 , 34182
+583 , 34343 , 133 , 72 , 1 , 1 , 34182
+583 , 34344 , 132 , 72 , 1 , 1 , 34182
+583 , 34345 , 132 , 72 , 1 , 1 , 34182
+583 , 34346 , 129 , 255 , 1 , 1 , 34182
+583 , 34347 , 127 , 117 , 1 , 1 , 34182
+583 , 34348 , 124 , 236 , 1 , 1 , 34182
+583 , 34349 , 123 , 226 , 1 , 1 , 34182
+583 , 34350 , 128 , 73 , 1 , 1 , 34182
+583 , 34351 , 123 , 110 , 1 , 1 , 34182
+583 , 34352 , 128 , 73 , 1 , 1 , 34182
+583 , 34353 , 123 , 292 , 1 , 1 , 34182
+583 , 34354 , 123 , 89 , 1 , 1 , 34182
+583 , 34355 , 127 , 72 , 1 , 1 , 34182
+583 , 34356 , 127 , 113 , 1 , 1 , 34182
+583 , 34357 , 126 , 72 , 1 , 1 , 34182
+583 , 34358 , 125 , 72 , 1 , 1 , 34182
+583 , 34359 , 121 , 72 , 1 , 1 , 34182
+583 , 34360 , 122 , 72 , 1 , 1 , 34182
+583 , 34361 , 203 , 41 , 1 , 1 , 34182
+583 , 34362 , 200 , 89 , 1 , 1 , 34182
+583 , 34363 , 188 , 292 , 1 , 1 , 34182
+583 , 34364 , 177 , 296 , 1 , 1 , 34182
+583 , 34365 , 176 , 293 , 1 , 1 , 34182
+583 , 34366 , 173 , 277 , 1 , 1 , 34182
+583 , 34367 , 166 , 317 , 1 , 1 , 34182
+583 , 34368 , 100 , 254 , 1 , 1 , 34182
+583 , 34369 , 163 , 326 , 1 , 1 , 34182
+583 , 34370 , 374 , 93 , 1 , 1 , 34182
+583 , 34371 , 370 , 82 , 1 , 1 , 34182
+583 , 34372 , 369 , 93 , 1 , 1 , 34182
+583 , 34373 , 369 , 92 , 1 , 1 , 34182
+583 , 34374 , 368 , 103 , 1 , 1 , 34182
+583 , 34375 , 368 , 103 , 1 , 1 , 34182
+583 , 34376 , 1538 , 0 , 1 , 1 , 34367 34319 34184 34225 34198 34333 34196 34280 34309 34335 34274 34276 34230 34245 34253 34305 34317 34234 34202 34248 34368 34272 34221 34311 34307 34224 34242 34375 34269 34301 34345 34296 34364 34252 34342 34216 34322 34308 34298 34213 34299 34350 34304 34261 34313 34318 34228 34211 34369 34247 34306 34275 34239 34190 34273 34227 34271 34235 34316 34292 34347 34246 34199 34205 34360 34353 34365 34229 34270 34370 34356 34362 34354 34188 34325 34259 34231 34328 34278 34207 34186 34265 34226 34214 34343 34341 34290 34203 34233 34277 34200 34349 34254 34255 34340 34326 34339 34295 34337 34361 34263 34212 34284 34297 34371 34251 34294 34287 34312 34327 34185 34192 34264 34336 34201 34241 34249 34218 34358 34194 34302 34315 34357 34193 34331 34293 34191 34329 34373 34366 34374 34220 34260 34258 34183 34279 34320 34250 34197 34363 34195 34257 34283 34266 34215 34291 34232 34332 34222 34330 34286 34310 34204 34240 34244 34219 34352 34285 34344 34223 34256 34237 34187 34338 34262 34206 34372 34243 34189 34209 34288 34346 34236 34238 34208 34210 34321 34289 34334 34323 34303 34348 34300 34268 34217 34351 34281 34355 34282 34314 34324 34267 34359
+583 , 34377 , 1649 , 41 , 1 , 1 , 34376
+583 , 34378 , 1649 , 41 , 1 , 1 , 34376
+583 , 34379 , 1648 , 52 , 1 , 1 , 34376
+583 , 34380 , 1647 , 52 , 1 , 1 , 34376
+583 , 34381 , 1647 , 52 , 1 , 1 , 34376
+583 , 34382 , 1617 , 82 , 1 , 1 , 34376
+583 , 34383 , 1613 , 82 , 1 , 1 , 34376
+583 , 34384 , 1613 , 82 , 1 , 1 , 34376
+583 , 34385 , 1613 , 82 , 1 , 1 , 34376
+583 , 34386 , 1613 , 72 , 1 , 1 , 34376
+583 , 34387 , 1605 , 82 , 1 , 1 , 34376
+583 , 34388 , 1613 , 82 , 1 , 1 , 34376
+583 , 34389 , 1612 , 72 , 1 , 1 , 34376
+583 , 34390 , 1612 , 82 , 1 , 1 , 34376
+583 , 34391 , 1611 , 82 , 1 , 1 , 34376
+583 , 34392 , 1611 , 82 , 1 , 1 , 34376
+583 , 34393 , 1610 , 82 , 1 , 1 , 34376
+583 , 34394 , 1606 , 82 , 1 , 1 , 34376
+583 , 34395 , 1606 , 72 , 1 , 1 , 34376
+583 , 34396 , 1724 , 11 , 1 , 1 , 34376
+583 , 34397 , 1606 , 62 , 1 , 1 , 34376
+583 , 34398 , 1724 , 11 , 1 , 1 , 34376
+583 , 34399 , 1724 , 11 , 1 , 1 , 34376
+583 , 34400 , 1606 , 92 , 1 , 1 , 34376
+583 , 34401 , 1724 , 11 , 1 , 1 , 34376
+583 , 34402 , 1605 , 82 , 1 , 1 , 34376
+583 , 34403 , 1606 , 82 , 1 , 1 , 34376
+583 , 34404 , 1730 , 0 , 1 , 1 , 34376
+583 , 34405 , 1729 , 0 , 1 , 1 , 34376
+583 , 34406 , 1729 , 0 , 1 , 1 , 34376
+583 , 34407 , 1729 , 0 , 1 , 1 , 34376
+583 , 34408 , 1724 , 11 , 1 , 1 , 34376
+583 , 34409 , 1724 , 11 , 1 , 1 , 34376
+583 , 34410 , 1652 , 41 , 1 , 1 , 34376
+583 , 34411 , 1724 , 11 , 1 , 1 , 34376
+583 , 34412 , 1605 , 72 , 1 , 1 , 34376
+583 , 34413 , 1725 , 11 , 1 , 1 , 34376
+583 , 34414 , 1724 , 11 , 1 , 1 , 34376
+583 , 34415 , 1724 , 12 , 1 , 1 , 34376
+583 , 34416 , 1723 , 12 , 1 , 1 , 34376
+583 , 34417 , 1722 , 12 , 1 , 1 , 34376
+583 , 34418 , 1722 , 11 , 1 , 1 , 34376
+583 , 34419 , 1721 , 11 , 1 , 1 , 34376
+583 , 34420 , 1722 , 12 , 1 , 1 , 34376
+583 , 34421 , 1720 , 21 , 1 , 1 , 34376
+583 , 34422 , 1717 , 24 , 1 , 1 , 34376
+583 , 34423 , 1715 , 31 , 1 , 1 , 34376
+583 , 34424 , 1715 , 31 , 1 , 1 , 34376
+583 , 34425 , 1714 , 31 , 1 , 1 , 34376
+583 , 34426 , 1713 , 31 , 1 , 1 , 34376
+583 , 34427 , 1713 , 31 , 1 , 1 , 34376
+583 , 34428 , 1713 , 31 , 1 , 1 , 34376
+583 , 34429 , 1712 , 32 , 1 , 1 , 34376
+583 , 34430 , 1712 , 23 , 1 , 1 , 34376
+583 , 34431 , 1713 , 31 , 1 , 1 , 34376
+583 , 34432 , 1712 , 22 , 1 , 1 , 34376
+583 , 34433 , 1709 , 22 , 1 , 1 , 34376
+583 , 34434 , 1710 , 21 , 1 , 1 , 34376
+583 , 34435 , 1722 , 22 , 1 , 1 , 34376
+583 , 34436 , 1703 , 32 , 1 , 1 , 34376
+583 , 34437 , 1699 , 32 , 1 , 1 , 34376
+583 , 34438 , 1703 , 32 , 1 , 1 , 34376
+583 , 34439 , 1699 , 32 , 1 , 1 , 34376
+583 , 34440 , 1699 , 32 , 1 , 1 , 34376
+583 , 34441 , 1695 , 32 , 1 , 1 , 34376
+583 , 34442 , 1697 , 32 , 1 , 1 , 34376
+583 , 34443 , 1692 , 21 , 1 , 1 , 34376
+583 , 34444 , 1699 , 32 , 1 , 1 , 34376
+583 , 34445 , 1688 , 21 , 1 , 1 , 34376
+583 , 34446 , 1687 , 21 , 1 , 1 , 34376
+583 , 34447 , 1693 , 32 , 1 , 1 , 34376
+583 , 34448 , 1730 , 32 , 1 , 1 , 34376
+583 , 34449 , 1681 , 33 , 1 , 1 , 34376
+583 , 34450 , 1680 , 23 , 1 , 1 , 34376
+583 , 34451 , 1721 , 32 , 1 , 1 , 34376
+583 , 34452 , 1681 , 33 , 1 , 1 , 34376
+583 , 34453 , 1729 , 32 , 1 , 1 , 34376
+583 , 34454 , 1717 , 32 , 1 , 1 , 34376
+583 , 34455 , 1677 , 34 , 1 , 1 , 34376
+583 , 34456 , 1674 , 32 , 1 , 1 , 34376
+583 , 34457 , 1674 , 32 , 1 , 1 , 34376
+583 , 34458 , 1671 , 34 , 1 , 1 , 34376
+583 , 34459 , 1670 , 35 , 1 , 1 , 34376
+583 , 34460 , 1669 , 35 , 1 , 1 , 34376
+583 , 34461 , 1667 , 25 , 1 , 1 , 34376
+583 , 34462 , 1678 , 33 , 1 , 1 , 34376
+583 , 34463 , 1668 , 35 , 1 , 1 , 34376
+583 , 34464 , 1665 , 32 , 1 , 1 , 34376
+583 , 34465 , 1662 , 33 , 1 , 1 , 34376
+583 , 34466 , 1667 , 25 , 1 , 1 , 34376
+583 , 34467 , 1662 , 33 , 1 , 1 , 34376
+583 , 34468 , 1672 , 34 , 1 , 1 , 34376
+583 , 34469 , 1668 , 35 , 1 , 1 , 34376
+583 , 34470 , 1648 , 35 , 1 , 1 , 34376
+583 , 34471 , 1647 , 35 , 1 , 1 , 34376
+583 , 34472 , 1665 , 32 , 1 , 1 , 34376
+583 , 34473 , 1645 , 35 , 1 , 1 , 34376
+583 , 34474 , 1658 , 37 , 1 , 1 , 34376
+583 , 34475 , 1645 , 35 , 1 , 1 , 34376
+583 , 34476 , 1644 , 32 , 1 , 1 , 34376
+583 , 34477 , 1642 , 32 , 1 , 1 , 34376
+583 , 34478 , 1648 , 35 , 1 , 1 , 34376
+583 , 34479 , 1637 , 32 , 1 , 1 , 34376
+583 , 34480 , 1637 , 21 , 1 , 1 , 34376
+583 , 34481 , 1636 , 23 , 1 , 1 , 34376
+583 , 34482 , 1639 , 32 , 1 , 1 , 34376
+583 , 34483 , 1634 , 32 , 1 , 1 , 34376
+583 , 34484 , 1633 , 33 , 1 , 1 , 34376
+583 , 34485 , 1634 , 24 , 1 , 1 , 34376
+583 , 34486 , 1632 , 33 , 1 , 1 , 34376
+583 , 34487 , 1631 , 24 , 1 , 1 , 34376
+583 , 34488 , 1630 , 32 , 1 , 1 , 34376
+583 , 34489 , 1630 , 32 , 1 , 1 , 34376
+583 , 34490 , 1630 , 32 , 1 , 1 , 34376
+583 , 34491 , 1637 , 32 , 1 , 1 , 34376
+583 , 34492 , 1629 , 32 , 1 , 1 , 34376
+583 , 34493 , 1629 , 32 , 1 , 1 , 34376
+583 , 34494 , 1629 , 32 , 1 , 1 , 34376
+583 , 34495 , 1628 , 33 , 1 , 1 , 34376
+583 , 34496 , 1628 , 21 , 1 , 1 , 34376
+583 , 34497 , 1645 , 23 , 1 , 1 , 34376
+583 , 34498 , 1641 , 21 , 1 , 1 , 34376
+583 , 34499 , 1628 , 21 , 1 , 1 , 34376
+583 , 34500 , 1630 , 62 , 1 , 1 , 34376
+583 , 34501 , 1593 , 82 , 1 , 1 , 34376
+583 , 34502 , 1593 , 72 , 1 , 1 , 34376
+583 , 34503 , 1593 , 82 , 1 , 1 , 34376
+583 , 34504 , 1592 , 72 , 1 , 1 , 34376
+583 , 34505 , 1618 , 82 , 1 , 1 , 34376
+583 , 34506 , 1617 , 82 , 1 , 1 , 34376
+583 , 34507 , 1618 , 82 , 1 , 1 , 34376
+583 , 34508 , 1592 , 72 , 1 , 1 , 34376
+583 , 34509 , 1592 , 72 , 1 , 1 , 34376
+583 , 34510 , 1591 , 82 , 1 , 1 , 34376
+583 , 34511 , 1591 , 72 , 1 , 1 , 34376
+583 , 34512 , 1587 , 72 , 1 , 1 , 34376
+583 , 34513 , 1587 , 62 , 1 , 1 , 34376
+583 , 34514 , 1587 , 62 , 1 , 1 , 34376
+583 , 34515 , 1586 , 62 , 1 , 1 , 34376
+583 , 34516 , 1585 , 62 , 1 , 1 , 34376
+583 , 34517 , 1585 , 82 , 1 , 1 , 34376
+583 , 34518 , 1585 , 62 , 1 , 1 , 34376
+583 , 34519 , 1584 , 52 , 1 , 1 , 34376
+583 , 34520 , 1584 , 52 , 1 , 1 , 34376
+583 , 34521 , 1583 , 52 , 1 , 1 , 34376
+583 , 34522 , 1577 , 52 , 1 , 1 , 34376
+583 , 34523 , 1577 , 62 , 1 , 1 , 34376
+583 , 34524 , 1577 , 52 , 1 , 1 , 34376
+583 , 34525 , 1576 , 41 , 1 , 1 , 34376
+583 , 34526 , 1605 , 72 , 1 , 1 , 34376
+583 , 34527 , 1604 , 83 , 1 , 1 , 34376
+583 , 34528 , 1600 , 92 , 1 , 1 , 34376
+583 , 34529 , 1576 , 52 , 1 , 1 , 34376
+583 , 34530 , 1576 , 52 , 1 , 1 , 34376
+583 , 34531 , 1575 , 41 , 1 , 1 , 34376
+583 , 34532 , 1575 , 41 , 1 , 1 , 34376
+583 , 34533 , 1574 , 41 , 1 , 1 , 34376
+583 , 34534 , 1599 , 72 , 1 , 1 , 34376
+583 , 34535 , 1569 , 31 , 1 , 1 , 34376
+583 , 34536 , 1569 , 31 , 1 , 1 , 34376
+583 , 34537 , 1569 , 31 , 1 , 1 , 34376
+583 , 34538 , 1569 , 31 , 1 , 1 , 34376
+583 , 34539 , 1569 , 31 , 1 , 1 , 34376
+583 , 34540 , 1618 , 52 , 1 , 1 , 34376
+583 , 34541 , 1618 , 62 , 1 , 1 , 34376
+583 , 34542 , 1625 , 62 , 1 , 1 , 34376
+583 , 34543 , 1599 , 82 , 1 , 1 , 34376
+583 , 34544 , 1569 , 31 , 1 , 1 , 34376
+583 , 34545 , 1673 , 32 , 1 , 1 , 34376
+583 , 34546 , 1569 , 31 , 1 , 1 , 34376
+583 , 34547 , 1599 , 92 , 1 , 1 , 34376
+583 , 34548 , 1599 , 92 , 1 , 1 , 34376
+583 , 34549 , 1569 , 21 , 1 , 1 , 34376
+583 , 34550 , 1569 , 21 , 1 , 1 , 34376
+583 , 34551 , 1569 , 31 , 1 , 1 , 34376
+583 , 34552 , 1564 , 21 , 1 , 1 , 34376
+583 , 34553 , 1564 , 21 , 1 , 1 , 34376
+583 , 34554 , 1564 , 21 , 1 , 1 , 34376
+583 , 34555 , 1564 , 11 , 1 , 1 , 34376
+583 , 34556 , 1599 , 82 , 1 , 1 , 34376
+583 , 34557 , 1598 , 62 , 1 , 1 , 34376
+583 , 34558 , 1593 , 72 , 1 , 1 , 34376
+583 , 34559 , 1597 , 72 , 1 , 1 , 34376
+583 , 34560 , 1598 , 83 , 1 , 1 , 34376
+583 , 34561 , 1593 , 82 , 1 , 1 , 34376
+583 , 34562 , 1577 , 52 , 1 , 1 , 34376
+583 , 34563 , 1599 , 82 , 1 , 1 , 34376
+583 , 34564 , 1564 , 11 , 1 , 1 , 34376
+583 , 34565 , 1564 , 11 , 1 , 1 , 34376
+583 , 34566 , 1564 , 21 , 1 , 1 , 34376
+583 , 34567 , 1564 , 21 , 1 , 1 , 34376
+583 , 34568 , 1564 , 11 , 1 , 1 , 34376
+583 , 34569 , 1564 , 21 , 1 , 1 , 34376
+583 , 34570 , 1822 , 21 , 1 , 1 , 34381 34474 34508 34442 34463 34557 34420 34511 34391 34563 34394 34522 34535 34552 34466 34467 34449 34513 34496 34411 34540 34403 34392 34429 34564 34472 34417 34481 34405 34543 34539 34422 34393 34415 34476 34390 34518 34532 34469 34459 34443 34555 34383 34493 34505 34471 34395 34542 34398 34541 34558 34436 34530 34492 34550 34479 34509 34387 34384 34452 34424 34549 34498 34454 34523 34491 34554 34431 34507 34380 34502 34559 34455 34506 34460 34423 34457 34519 34418 34499 34483 34494 34504 34437 34470 34510 34427 34514 34526 34430 34548 34486 34534 34409 34566 34544 34435 34503 34538 34528 34426 34432 34419 34445 34490 34450 34475 34521 34446 34537 34404 34485 34545 34473 34406 34524 34402 34412 34529 34458 34385 34433 34517 34425 34465 34547 34461 34477 34397 34501 34525 34447 34456 34488 34515 34401 34438 34484 34531 34551 34448 34480 34414 34561 34487 34399 34439 34389 34556 34520 34468 34408 34512 34440 34434 34396 34451 34413 34478 34562 34382 34444 34569 34400 34500 34379 34536 34565 34489 34416 34453 34533 34497 34441 34410 34377 34495 34553 34482 34421 34516 34407 34462 34567 34527 34428 34464 34546 34388 34386 34568 34560 34378
+584 , 34571 , 4 , 11 , 1 , 1 ,
+584 , 34572 , 122 , 62 , 1 , 1 , 34571
+584 , 34573 , 121 , 73 , 1 , 1 , 34571
+584 , 34574 , 117 , 72 , 1 , 1 , 34571
+584 , 34575 , 117 , 72 , 1 , 1 , 34571
+584 , 34576 , 117 , 72 , 1 , 1 , 34571
+584 , 34577 , 116 , 72 , 1 , 1 , 34571
+584 , 34578 , 116 , 72 , 1 , 1 , 34571
+584 , 34579 , 115 , 73 , 1 , 1 , 34571
+584 , 34580 , 114 , 72 , 1 , 1 , 34571
+584 , 34581 , 110 , 82 , 1 , 1 , 34571
+584 , 34582 , 105 , 72 , 1 , 1 , 34571
+584 , 34583 , 102 , 82 , 1 , 1 , 34571
+584 , 34584 , 102 , 82 , 1 , 1 , 34571
+584 , 34585 , 101 , 82 , 1 , 1 , 34571
+584 , 34586 , 101 , 62 , 1 , 1 , 34571
+584 , 34587 , 101 , 82 , 1 , 1 , 34571
+584 , 34588 , 100 , 72 , 1 , 1 , 34571
+584 , 34589 , 100 , 82 , 1 , 1 , 34571
+584 , 34590 , 99 , 82 , 1 , 1 , 34571
+584 , 34591 , 99 , 93 , 1 , 1 , 34571
+584 , 34592 , 97 , 93 , 1 , 1 , 34571
+584 , 34593 , 97 , 92 , 1 , 1 , 34571
+584 , 34594 , 96 , 92 , 1 , 1 , 34571
+584 , 34595 , 95 , 93 , 1 , 1 , 34571
+584 , 34596 , 95 , 93 , 1 , 1 , 34571
+584 , 34597 , 95 , 93 , 1 , 1 , 34571
+584 , 34598 , 93 , 82 , 1 , 1 , 34571
+584 , 34599 , 93 , 93 , 1 , 1 , 34571
+584 , 34600 , 93 , 82 , 1 , 1 , 34571
+584 , 34601 , 84 , 83 , 1 , 1 , 34571
+584 , 34602 , 84 , 62 , 1 , 1 , 34571
+584 , 34603 , 72 , 93 , 1 , 1 , 34571
+584 , 34604 , 72 , 82 , 1 , 1 , 34571
+584 , 34605 , 72 , 72 , 1 , 1 , 34571
+584 , 34606 , 70 , 82 , 1 , 1 , 34571
+584 , 34607 , 70 , 88 , 1 , 1 , 34571
+584 , 34608 , 70 , 80 , 1 , 1 , 34571
+584 , 34609 , 70 , 87 , 1 , 1 , 34571
+584 , 34610 , 70 , 78 , 1 , 1 , 34571
+584 , 34611 , 70 , 87 , 1 , 1 , 34571
+584 , 34612 , 70 , 79 , 1 , 1 , 34571
+584 , 34613 , 70 , 77 , 1 , 1 , 34571
+584 , 34614 , 58 , 234 , 1 , 1 , 34571
+584 , 34615 , 58 , 234 , 1 , 1 , 34571
+584 , 34616 , 58 , 245 , 1 , 1 , 34571
+584 , 34617 , 58 , 245 , 1 , 1 , 34571
+584 , 34618 , 58 , 245 , 1 , 1 , 34571
+584 , 34619 , 58 , 245 , 1 , 1 , 34571
+584 , 34620 , 58 , 245 , 1 , 1 , 34571
+584 , 34621 , 58 , 245 , 1 , 1 , 34571
+584 , 34622 , 58 , 224 , 1 , 1 , 34571
+584 , 34623 , 58 , 255 , 1 , 1 , 34571
+584 , 34624 , 58 , 245 , 1 , 1 , 34571
+584 , 34625 , 58 , 245 , 1 , 1 , 34571
+584 , 34626 , 58 , 235 , 1 , 1 , 34571
+584 , 34627 , 58 , 245 , 1 , 1 , 34571
+584 , 34628 , 58 , 235 , 1 , 1 , 34571
+584 , 34629 , 57 , 235 , 1 , 1 , 34571
+584 , 34630 , 61 , 242 , 1 , 1 , 34571
+584 , 34631 , 61 , 250 , 1 , 1 , 34571
+584 , 34632 , 60 , 232 , 1 , 1 , 34571
+584 , 34633 , 60 , 253 , 1 , 1 , 34571
+584 , 34634 , 59 , 251 , 1 , 1 , 34571
+584 , 34635 , 59 , 229 , 1 , 1 , 34571
+584 , 34636 , 58 , 315 , 1 , 1 , 34571
+584 , 34637 , 58 , 250 , 1 , 1 , 34571
+584 , 34638 , 58 , 238 , 1 , 1 , 34571
+584 , 34639 , 57 , 295 , 1 , 1 , 34571
+584 , 34640 , 57 , 252 , 1 , 1 , 34571
+584 , 34641 , 57 , 249 , 1 , 1 , 34571
+584 , 34642 , 57 , 236 , 1 , 1 , 34571
+584 , 34643 , 56 , 250 , 1 , 1 , 34571
+584 , 34644 , 55 , 235 , 1 , 1 , 34571
+584 , 34645 , 55 , 302 , 1 , 1 , 34571
+584 , 34646 , 55 , 237 , 1 , 1 , 34571
+584 , 34647 , 55 , 338 , 1 , 1 , 34571
+584 , 34648 , 54 , 246 , 1 , 1 , 34571
+584 , 34649 , 54 , 250 , 1 , 1 , 34571
+584 , 34650 , 54 , 282 , 1 , 1 , 34571
+584 , 34651 , 53 , 246 , 1 , 1 , 34571
+584 , 34652 , 53 , 236 , 1 , 1 , 34571
+584 , 34653 , 52 , 293 , 1 , 1 , 34571
+584 , 34654 , 52 , 293 , 1 , 1 , 34571
+584 , 34655 , 52 , 247 , 1 , 1 , 34571
+584 , 34656 , 51 , 261 , 1 , 1 , 34571
+584 , 34657 , 51 , 249 , 1 , 1 , 34571
+584 , 34658 , 51 , 250 , 1 , 1 , 34571
+584 , 34659 , 51 , 239 , 1 , 1 , 34571
+584 , 34660 , 51 , 249 , 1 , 1 , 34571
+584 , 34661 , 50 , 248 , 1 , 1 , 34571
+584 , 34662 , 50 , 248 , 1 , 1 , 34571
+584 , 34663 , 50 , 327 , 1 , 1 , 34571
+584 , 34664 , 49 , 248 , 1 , 1 , 34571
+584 , 34665 , 49 , 327 , 1 , 1 , 34571
+584 , 34666 , 49 , 316 , 1 , 1 , 34571
+584 , 34667 , 48 , 248 , 1 , 1 , 34571
+584 , 34668 , 48 , 236 , 1 , 1 , 34571
+584 , 34669 , 48 , 248 , 1 , 1 , 34571
+584 , 34670 , 47 , 326 , 1 , 1 , 34571
+584 , 34671 , 47 , 257 , 1 , 1 , 34571
+584 , 34672 , 47 , 240 , 1 , 1 , 34571
+584 , 34673 , 46 , 245 , 1 , 1 , 34571
+584 , 34674 , 46 , 247 , 1 , 1 , 34571
+584 , 34675 , 46 , 240 , 1 , 1 , 34571
+584 , 34676 , 45 , 257 , 1 , 1 , 34571
+584 , 34677 , 45 , 324 , 1 , 1 , 34571
+584 , 34678 , 45 , 303 , 1 , 1 , 34571
+584 , 34679 , 44 , 247 , 1 , 1 , 34571
+584 , 34680 , 44 , 248 , 1 , 1 , 34571
+584 , 34681 , 44 , 259 , 1 , 1 , 34571
+584 , 34682 , 44 , 222 , 1 , 1 , 34571
+584 , 34683 , 43 , 238 , 1 , 1 , 34571
+584 , 34684 , 43 , 222 , 1 , 1 , 34571
+584 , 34685 , 43 , 238 , 1 , 1 , 34571
+584 , 34686 , 43 , 332 , 1 , 1 , 34571
+584 , 34687 , 43 , 302 , 1 , 1 , 34571
+584 , 34688 , 42 , 246 , 1 , 1 , 34571
+584 , 34689 , 42 , 237 , 1 , 1 , 34571
+584 , 34690 , 42 , 270 , 1 , 1 , 34571
+584 , 34691 , 41 , 238 , 1 , 1 , 34571
+584 , 34692 , 41 , 249 , 1 , 1 , 34571
+584 , 34693 , 41 , 325 , 1 , 1 , 34571
+584 , 34694 , 66 , 82 , 1 , 1 , 34571
+584 , 34695 , 65 , 72 , 1 , 1 , 34571
+584 , 34696 , 65 , 72 , 1 , 1 , 34571
+584 , 34697 , 65 , 62 , 1 , 1 , 34571
+584 , 34698 , 64 , 82 , 1 , 1 , 34571
+584 , 34699 , 62 , 82 , 1 , 1 , 34571
+584 , 34700 , 62 , 82 , 1 , 1 , 34571
+584 , 34701 , 60 , 82 , 1 , 1 , 34571
+584 , 34702 , 60 , 72 , 1 , 1 , 34571
+584 , 34703 , 58 , 72 , 1 , 1 , 34571
+584 , 34704 , 58 , 72 , 1 , 1 , 34571
+584 , 34705 , 57 , 72 , 1 , 1 , 34571
+584 , 34706 , 57 , 82 , 1 , 1 , 34571
+584 , 34707 , 57 , 62 , 1 , 1 , 34571
+584 , 34708 , 57 , 72 , 1 , 1 , 34571
+584 , 34709 , 56 , 73 , 1 , 1 , 34571
+584 , 34710 , 55 , 82 , 1 , 1 , 34571
+584 , 34711 , 55 , 82 , 1 , 1 , 34571
+584 , 34712 , 53 , 82 , 1 , 1 , 34571
+584 , 34713 , 53 , 72 , 1 , 1 , 34571
+584 , 34714 , 52 , 72 , 1 , 1 , 34571
+584 , 34715 , 52 , 72 , 1 , 1 , 34571
+584 , 34716 , 51 , 62 , 1 , 1 , 34571
+584 , 34717 , 51 , 72 , 1 , 1 , 34571
+584 , 34718 , 51 , 72 , 1 , 1 , 34571
+584 , 34719 , 50 , 72 , 1 , 1 , 34571
+584 , 34720 , 49 , 72 , 1 , 1 , 34571
+584 , 34721 , 49 , 62 , 1 , 1 , 34571
+584 , 34722 , 48 , 62 , 1 , 1 , 34571
+584 , 34723 , 47 , 52 , 1 , 1 , 34571
+584 , 34724 , 46 , 52 , 1 , 1 , 34571
+584 , 34725 , 45 , 72 , 1 , 1 , 34571
+584 , 34726 , 45 , 72 , 1 , 1 , 34571
+584 , 34727 , 45 , 72 , 1 , 1 , 34571
+584 , 34728 , 45 , 62 , 1 , 1 , 34571
+584 , 34729 , 44 , 62 , 1 , 1 , 34571
+584 , 34730 , 44 , 62 , 1 , 1 , 34571
+584 , 34731 , 43 , 62 , 1 , 1 , 34571
+584 , 34732 , 41 , 52 , 1 , 1 , 34571
+584 , 34733 , 40 , 72 , 1 , 1 , 34571
+584 , 34734 , 40 , 72 , 1 , 1 , 34571
+584 , 34735 , 39 , 62 , 1 , 1 , 34571
+584 , 34736 , 39 , 72 , 1 , 1 , 34571
+584 , 34737 , 39 , 62 , 1 , 1 , 34571
+584 , 34738 , 39 , 62 , 1 , 1 , 34571
+584 , 34739 , 38 , 62 , 1 , 1 , 34571
+584 , 34740 , 38 , 62 , 1 , 1 , 34571
+584 , 34741 , 37 , 52 , 1 , 1 , 34571
+584 , 34742 , 35 , 41 , 1 , 1 , 34571
+584 , 34743 , 35 , 52 , 1 , 1 , 34571
+584 , 34744 , 34 , 52 , 1 , 1 , 34571
+584 , 34745 , 33 , 52 , 1 , 1 , 34571
+584 , 34746 , 33 , 52 , 1 , 1 , 34571
+584 , 34747 , 32 , 52 , 1 , 1 , 34571
+584 , 34748 , 32 , 52 , 1 , 1 , 34571
+584 , 34749 , 32 , 52 , 1 , 1 , 34571
+584 , 34750 , 31 , 52 , 1 , 1 , 34571
+584 , 34751 , 31 , 52 , 1 , 1 , 34571
+584 , 34752 , 29 , 52 , 1 , 1 , 34571
+584 , 34753 , 28 , 52 , 1 , 1 , 34571
+584 , 34754 , 28 , 52 , 1 , 1 , 34571
+584 , 34755 , 28 , 52 , 1 , 1 , 34571
+584 , 34756 , 28 , 52 , 1 , 1 , 34571
+584 , 34757 , 28 , 52 , 1 , 1 , 34571
+584 , 34758 , 28 , 41 , 1 , 1 , 34571
+584 , 34759 , 28 , 41 , 1 , 1 , 34571
+584 , 34760 , 28 , 52 , 1 , 1 , 34571
+584 , 34761 , 28 , 52 , 1 , 1 , 34571
+584 , 34762 , 28 , 31 , 1 , 1 , 34571
+584 , 34763 , 28 , 31 , 1 , 1 , 34571
+584 , 34764 , 28 , 32 , 1 , 1 , 34571
+584 , 34765 , 574 , 11 , 1 , 1 , 34674 34705 34628 34757 34637 34690 34731 34652 34759 34614 34623 34592 34626 34749 34612 34684 34752 34709 34642 34737 34620 34660 34578 34655 34582 34661 34667 34585 34601 34616 34747 34764 34656 34587 34676 34603 34668 34743 34607 34723 34606 34719 34687 34636 34604 34580 34748 34613 34609 34677 34619 34648 34702 34746 34602 34683 34577 34641 34694 34640 34745 34727 34734 34635 34693 34720 34617 34657 34699 34711 34622 34732 34740 34629 34726 34647 34590 34634 34692 34572 34610 34696 34605 34633 34653 34735 34712 34750 34625 34685 34649 34621 34697 34608 34669 34708 34599 34598 34688 34701 34721 34689 34631 34624 34754 34583 34761 34575 34717 34670 34744 34671 34707 34665 34716 34686 34654 34756 34597 34753 34763 34730 34715 34700 34733 34703 34741 34659 34681 34706 34679 34644 34643 34589 34611 34710 34663 34682 34738 34627 34673 34593 34632 34725 34736 34596 34698 34739 34586 34650 34594 34714 34755 34658 34675 34762 34588 34672 34760 34651 34600 34615 34718 34573 34638 34722 34729 34576 34662 34574 34618 34666 34584 34646 34691 34639 34713 34680 34645 34579 34751 34742 34695 34664 34724 34591 34704 34678 34758 34630 34581 34595 34728
+584 , 34766 , 668 , 52 , 1 , 1 , 34765
+584 , 34767 , 668 , 62 , 1 , 1 , 34765
+584 , 34768 , 667 , 52 , 1 , 1 , 34765
+584 , 34769 , 667 , 52 , 1 , 1 , 34765
+584 , 34770 , 669 , 11 , 1 , 1 , 34765
+584 , 34771 , 666 , 52 , 1 , 1 , 34765
+584 , 34772 , 666 , 54 , 1 , 1 , 34765
+584 , 34773 , 662 , 12 , 1 , 1 , 34765
+584 , 34774 , 654 , 13 , 1 , 1 , 34765
+584 , 34775 , 651 , 11 , 1 , 1 , 34765
+584 , 34776 , 636 , 62 , 1 , 1 , 34765
+584 , 34777 , 636 , 52 , 1 , 1 , 34765
+584 , 34778 , 635 , 62 , 1 , 1 , 34765
+584 , 34779 , 635 , 74 , 1 , 1 , 34765
+584 , 34780 , 635 , 52 , 1 , 1 , 34765
+584 , 34781 , 635 , 62 , 1 , 1 , 34765
+584 , 34782 , 635 , 53 , 1 , 1 , 34765
+584 , 34783 , 632 , 64 , 1 , 1 , 34765
+584 , 34784 , 632 , 64 , 1 , 1 , 34765
+584 , 34785 , 632 , 64 , 1 , 1 , 34765
+584 , 34786 , 632 , 12 , 1 , 1 , 34765
+584 , 34787 , 633 , 14 , 1 , 1 , 34765
+584 , 34788 , 632 , 74 , 1 , 1 , 34765
+584 , 34789 , 632 , 74 , 1 , 1 , 34765
+584 , 34790 , 632 , 54 , 1 , 1 , 34765
+584 , 34791 , 648 , 12 , 1 , 1 , 34765
+584 , 34792 , 640 , 52 , 1 , 1 , 34765
+584 , 34793 , 640 , 41 , 1 , 1 , 34765
+584 , 34794 , 639 , 52 , 1 , 1 , 34765
+584 , 34795 , 645 , 11 , 1 , 1 , 34765
+584 , 34796 , 694 , 62 , 1 , 1 , 34765
+584 , 34797 , 698 , 12 , 1 , 1 , 34765
+584 , 34798 , 693 , 62 , 1 , 1 , 34765
+584 , 34799 , 697 , 11 , 1 , 1 , 34765
+584 , 34800 , 693 , 52 , 1 , 1 , 34765
+584 , 34801 , 693 , 52 , 1 , 1 , 34765
+584 , 34802 , 692 , 62 , 1 , 1 , 34765
+584 , 34803 , 692 , 62 , 1 , 1 , 34765
+584 , 34804 , 693 , 11 , 1 , 1 , 34765
+584 , 34805 , 692 , 11 , 1 , 1 , 34765
+584 , 34806 , 725 , 31 , 1 , 1 , 34765
+584 , 34807 , 724 , 41 , 1 , 1 , 34765
+584 , 34808 , 722 , 41 , 1 , 1 , 34765
+584 , 34809 , 722 , 41 , 1 , 1 , 34765
+584 , 34810 , 722 , 42 , 1 , 1 , 34765
+584 , 34811 , 723 , 11 , 1 , 1 , 34765
+584 , 34812 , 721 , 41 , 1 , 1 , 34765
+584 , 34813 , 722 , 11 , 1 , 1 , 34765
+584 , 34814 , 720 , 41 , 1 , 1 , 34765
+584 , 34815 , 720 , 41 , 1 , 1 , 34765
+584 , 34816 , 719 , 41 , 1 , 1 , 34765
+584 , 34817 , 718 , 41 , 1 , 1 , 34765
+584 , 34818 , 718 , 41 , 1 , 1 , 34765
+584 , 34819 , 718 , 41 , 1 , 1 , 34765
+584 , 34820 , 718 , 11 , 1 , 1 , 34765
+584 , 34821 , 717 , 41 , 1 , 1 , 34765
+584 , 34822 , 716 , 12 , 1 , 1 , 34765
+584 , 34823 , 713 , 41 , 1 , 1 , 34765
+584 , 34824 , 714 , 41 , 1 , 1 , 34765
+584 , 34825 , 714 , 52 , 1 , 1 , 34765
+584 , 34826 , 714 , 41 , 1 , 1 , 34765
+584 , 34827 , 714 , 41 , 1 , 1 , 34765
+584 , 34828 , 713 , 41 , 1 , 1 , 34765
+584 , 34829 , 713 , 41 , 1 , 1 , 34765
+584 , 34830 , 714 , 41 , 1 , 1 , 34765
+584 , 34831 , 713 , 41 , 1 , 1 , 34765
+584 , 34832 , 712 , 11 , 1 , 1 , 34765
+584 , 34833 , 711 , 41 , 1 , 1 , 34765
+584 , 34834 , 711 , 11 , 1 , 1 , 34765
+584 , 34835 , 710 , 52 , 1 , 1 , 34765
+584 , 34836 , 710 , 41 , 1 , 1 , 34765
+584 , 34837 , 710 , 52 , 1 , 1 , 34765
+584 , 34838 , 710 , 41 , 1 , 1 , 34765
+584 , 34839 , 707 , 52 , 1 , 1 , 34765
+584 , 34840 , 706 , 52 , 1 , 1 , 34765
+584 , 34841 , 706 , 52 , 1 , 1 , 34765
+584 , 34842 , 706 , 41 , 1 , 1 , 34765
+584 , 34843 , 706 , 11 , 1 , 1 , 34765
+584 , 34844 , 645 , 54 , 1 , 1 , 34765
+584 , 34845 , 650 , 52 , 1 , 1 , 34765
+584 , 34846 , 644 , 62 , 1 , 1 , 34765
+584 , 34847 , 641 , 52 , 1 , 1 , 34765
+584 , 34848 , 641 , 62 , 1 , 1 , 34765
+584 , 34849 , 641 , 52 , 1 , 1 , 34765
+584 , 34850 , 653 , 52 , 1 , 1 , 34765
+584 , 34851 , 641 , 52 , 1 , 1 , 34765
+584 , 34852 , 645 , 54 , 1 , 1 , 34765
+584 , 34853 , 653 , 52 , 1 , 1 , 34765
+584 , 34854 , 638 , 62 , 1 , 1 , 34765
+584 , 34855 , 706 , 52 , 1 , 1 , 34765
+584 , 34856 , 706 , 52 , 1 , 1 , 34765
+584 , 34857 , 706 , 41 , 1 , 1 , 34765
+584 , 34858 , 703 , 52 , 1 , 1 , 34765
+584 , 34859 , 705 , 52 , 1 , 1 , 34765
+584 , 34860 , 637 , 52 , 1 , 1 , 34765
+584 , 34861 , 652 , 41 , 1 , 1 , 34765
+584 , 34862 , 638 , 62 , 1 , 1 , 34765
+584 , 34863 , 637 , 62 , 1 , 1 , 34765
+584 , 34864 , 636 , 62 , 1 , 1 , 34765
+584 , 34865 , 637 , 62 , 1 , 1 , 34765
+584 , 34866 , 636 , 62 , 1 , 1 , 34765
+584 , 34867 , 644 , 44 , 1 , 1 , 34765
+584 , 34868 , 702 , 52 , 1 , 1 , 34765
+584 , 34869 , 692 , 52 , 1 , 1 , 34765
+584 , 34870 , 692 , 62 , 1 , 1 , 34765
+584 , 34871 , 689 , 62 , 1 , 1 , 34765
+584 , 34872 , 688 , 52 , 1 , 1 , 34765
+584 , 34873 , 688 , 52 , 1 , 1 , 34765
+584 , 34874 , 688 , 62 , 1 , 1 , 34765
+584 , 34875 , 688 , 62 , 1 , 1 , 34765
+584 , 34876 , 688 , 51 , 1 , 1 , 34765
+584 , 34877 , 685 , 72 , 1 , 1 , 34765
+584 , 34878 , 689 , 11 , 1 , 1 , 34765
+584 , 34879 , 702 , 52 , 1 , 1 , 34765
+584 , 34880 , 702 , 52 , 1 , 1 , 34765
+584 , 34881 , 702 , 52 , 1 , 1 , 34765
+584 , 34882 , 702 , 62 , 1 , 1 , 34765
+584 , 34883 , 702 , 41 , 1 , 1 , 34765
+584 , 34884 , 701 , 41 , 1 , 1 , 34765
+584 , 34885 , 699 , 13 , 1 , 1 , 34765
+584 , 34886 , 685 , 72 , 1 , 1 , 34765
+584 , 34887 , 684 , 52 , 1 , 1 , 34765
+584 , 34888 , 683 , 52 , 1 , 1 , 34765
+584 , 34889 , 683 , 62 , 1 , 1 , 34765
+584 , 34890 , 683 , 52 , 1 , 1 , 34765
+584 , 34891 , 683 , 52 , 1 , 1 , 34765
+584 , 34892 , 678 , 42 , 1 , 1 , 34765
+584 , 34893 , 680 , 11 , 1 , 1 , 34765
+584 , 34894 , 677 , 52 , 1 , 1 , 34765
+584 , 34895 , 676 , 63 , 1 , 1 , 34765
+584 , 34896 , 676 , 52 , 1 , 1 , 34765
+584 , 34897 , 672 , 42 , 1 , 1 , 34765
+584 , 34898 , 674 , 12 , 1 , 1 , 34765
+584 , 34899 , 671 , 52 , 1 , 1 , 34765
+584 , 34900 , 673 , 12 , 1 , 1 , 34765
+584 , 34901 , 668 , 52 , 1 , 1 , 34765
+584 , 34902 , 668 , 52 , 1 , 1 , 34765
+584 , 34903 , 632 , 54 , 1 , 1 , 34765
+584 , 34904 , 632 , 53 , 1 , 1 , 34765
+584 , 34905 , 627 , 11 , 1 , 1 , 34765
+584 , 34906 , 623 , 13 , 1 , 1 , 34765
+584 , 34907 , 632 , 63 , 1 , 1 , 34765
+584 , 34908 , 632 , 72 , 1 , 1 , 34765
+584 , 34909 , 629 , 62 , 1 , 1 , 34765
+584 , 34910 , 628 , 52 , 1 , 1 , 34765
+584 , 34911 , 628 , 62 , 1 , 1 , 34765
+584 , 34912 , 628 , 62 , 1 , 1 , 34765
+584 , 34913 , 628 , 72 , 1 , 1 , 34765
+584 , 34914 , 628 , 62 , 1 , 1 , 34765
+584 , 34915 , 628 , 62 , 1 , 1 , 34765
+584 , 34916 , 628 , 62 , 1 , 1 , 34765
+584 , 34917 , 628 , 62 , 1 , 1 , 34765
+584 , 34918 , 628 , 62 , 1 , 1 , 34765
+584 , 34919 , 625 , 62 , 1 , 1 , 34765
+584 , 34920 , 625 , 52 , 1 , 1 , 34765
+584 , 34921 , 625 , 62 , 1 , 1 , 34765
+584 , 34922 , 625 , 62 , 1 , 1 , 34765
+584 , 34923 , 624 , 52 , 1 , 1 , 34765
+584 , 34924 , 624 , 62 , 1 , 1 , 34765
+584 , 34925 , 624 , 62 , 1 , 1 , 34765
+584 , 34926 , 624 , 62 , 1 , 1 , 34765
+584 , 34927 , 624 , 52 , 1 , 1 , 34765
+584 , 34928 , 624 , 52 , 1 , 1 , 34765
+584 , 34929 , 621 , 51 , 1 , 1 , 34765
+584 , 34930 , 621 , 53 , 1 , 1 , 34765
+584 , 34931 , 621 , 41 , 1 , 1 , 34765
+584 , 34932 , 621 , 51 , 1 , 1 , 34765
+584 , 34933 , 621 , 51 , 1 , 1 , 34765
+584 , 34934 , 620 , 51 , 1 , 1 , 34765
+584 , 34935 , 620 , 41 , 1 , 1 , 34765
+584 , 34936 , 620 , 52 , 1 , 1 , 34765
+584 , 34937 , 620 , 52 , 1 , 1 , 34765
+584 , 34938 , 620 , 31 , 1 , 1 , 34765
+584 , 34939 , 616 , 62 , 1 , 1 , 34765
+584 , 34940 , 616 , 52 , 1 , 1 , 34765
+584 , 34941 , 616 , 52 , 1 , 1 , 34765
+584 , 34942 , 616 , 52 , 1 , 1 , 34765
+584 , 34943 , 615 , 52 , 1 , 1 , 34765
+584 , 34944 , 615 , 52 , 1 , 1 , 34765
+584 , 34945 , 615 , 52 , 1 , 1 , 34765
+584 , 34946 , 615 , 52 , 1 , 1 , 34765
+584 , 34947 , 615 , 42 , 1 , 1 , 34765
+584 , 34948 , 614 , 41 , 1 , 1 , 34765
+584 , 34949 , 610 , 52 , 1 , 1 , 34765
+584 , 34950 , 610 , 41 , 1 , 1 , 34765
+584 , 34951 , 610 , 52 , 1 , 1 , 34765
+584 , 34952 , 610 , 41 , 1 , 1 , 34765
+584 , 34953 , 610 , 42 , 1 , 1 , 34765
+584 , 34954 , 610 , 42 , 1 , 1 , 34765
+584 , 34955 , 610 , 62 , 1 , 1 , 34765
+584 , 34956 , 610 , 41 , 1 , 1 , 34765
+584 , 34957 , 610 , 42 , 1 , 1 , 34765
+584 , 34958 , 610 , 42 , 1 , 1 , 34765
+584 , 34959 , 811 , 21 , 1 , 1 , 34824 34932 34940 34859 34833 34843 34863 34933 34897 34954 34852 34934 34958 34805 34858 34775 34822 34922 34927 34796 34838 34890 34857 34823 34938 34800 34787 34842 34767 34946 34839 34815 34791 34803 34826 34784 34794 34768 34956 34813 34871 34802 34953 34881 34885 34925 34795 34955 34951 34918 34937 34817 34894 34825 34886 34828 34945 34864 34936 34924 34900 34779 34915 34950 34928 34801 34889 34814 34786 34773 34879 34912 34909 34914 34862 34851 34873 34832 34883 34931 34799 34944 34872 34870 34772 34777 34910 34766 34877 34868 34874 34904 34942 34789 34836 34788 34790 34919 34893 34926 34855 34892 34875 34930 34941 34867 34849 34780 34866 34793 34811 34783 34846 34898 34831 34907 34906 34887 34807 34820 34888 34776 34905 34929 34804 34947 34816 34876 34829 34841 34840 34895 34774 34771 34896 34770 34917 34798 34878 34884 34844 34781 34834 34821 34957 34869 34908 34952 34847 34902 34860 34845 34848 34792 34818 34911 34939 34948 34835 34913 34903 34882 34782 34830 34837 34808 34853 34827 34854 34810 34916 34856 34943 34891 34797 34923 34785 34935 34921 34880 34920 34949 34778 34865 34899 34861 34850 34819 34812 34806 34809 34901 34769
+585 , 34960 , 9 , 62 , 1 , 1 ,
+585 , 34961 , 280 , 52 , 1 , 1 , 34960
+585 , 34962 , 459 , 52 , 1 , 1 , 34960
+585 , 34963 , 450 , 230 , 1 , 1 , 34960
+585 , 34964 , 458 , 52 , 1 , 1 , 34960
+585 , 34965 , 458 , 52 , 1 , 1 , 34960
+585 , 34966 , 457 , 52 , 1 , 1 , 34960
+585 , 34967 , 457 , 62 , 1 , 1 , 34960
+585 , 34968 , 457 , 52 , 1 , 1 , 34960
+585 , 34969 , 275 , 52 , 1 , 1 , 34960
+585 , 34970 , 271 , 242 , 1 , 1 , 34960
+585 , 34971 , 270 , 62 , 1 , 1 , 34960
+585 , 34972 , 270 , 62 , 1 , 1 , 34960
+585 , 34973 , 137 , 72 , 1 , 1 , 34960
+585 , 34974 , 137 , 64 , 1 , 1 , 34960
+585 , 34975 , 270 , 62 , 1 , 1 , 34960
+585 , 34976 , 269 , 62 , 1 , 1 , 34960
+585 , 34977 , 268 , 42 , 1 , 1 , 34960
+585 , 34978 , 266 , 62 , 1 , 1 , 34960
+585 , 34979 , 267 , 62 , 1 , 1 , 34960
+585 , 34980 , 457 , 52 , 1 , 1 , 34960
+585 , 34981 , 441 , 231 , 1 , 1 , 34960
+585 , 34982 , 440 , 248 , 1 , 1 , 34960
+585 , 34983 , 440 , 257 , 1 , 1 , 34960
+585 , 34984 , 440 , 231 , 1 , 1 , 34960
+585 , 34985 , 285 , 52 , 1 , 1 , 34960
+585 , 34986 , 284 , 77 , 1 , 1 , 34960
+585 , 34987 , 282 , 327 , 1 , 1 , 34960
+585 , 34988 , 282 , 89 , 1 , 1 , 34960
+585 , 34989 , 457 , 52 , 1 , 1 , 34960
+585 , 34990 , 457 , 52 , 1 , 1 , 34960
+585 , 34991 , 456 , 52 , 1 , 1 , 34960
+585 , 34992 , 456 , 52 , 1 , 1 , 34960
+585 , 34993 , 254 , 52 , 1 , 1 , 34960
+585 , 34994 , 254 , 52 , 1 , 1 , 34960
+585 , 34995 , 250 , 52 , 1 , 1 , 34960
+585 , 34996 , 250 , 238 , 1 , 1 , 34960
+585 , 34997 , 250 , 238 , 1 , 1 , 34960
+585 , 34998 , 250 , 248 , 1 , 1 , 34960
+585 , 34999 , 250 , 238 , 1 , 1 , 34960
+585 , 35000 , 250 , 238 , 1 , 1 , 34960
+585 , 35001 , 250 , 245 , 1 , 1 , 34960
+585 , 35002 , 205 , 83 , 1 , 1 , 34960
+585 , 35003 , 205 , 92 , 1 , 1 , 34960
+585 , 35004 , 203 , 72 , 1 , 1 , 34960
+585 , 35005 , 202 , 103 , 1 , 1 , 34960
+585 , 35006 , 200 , 79 , 1 , 1 , 34960
+585 , 35007 , 198 , 79 , 1 , 1 , 34960
+585 , 35008 , 198 , 107 , 1 , 1 , 34960
+585 , 35009 , 193 , 82 , 1 , 1 , 34960
+585 , 35010 , 250 , 228 , 1 , 1 , 34960
+585 , 35011 , 250 , 228 , 1 , 1 , 34960
+585 , 35012 , 247 , 316 , 1 , 1 , 34960
+585 , 35013 , 247 , 243 , 1 , 1 , 34960
+585 , 35014 , 250 , 238 , 1 , 1 , 34960
+585 , 35015 , 455 , 52 , 1 , 1 , 34960
+585 , 35016 , 455 , 52 , 1 , 1 , 34960
+585 , 35017 , 418 , 62 , 1 , 1 , 34960
+585 , 35018 , 417 , 62 , 1 , 1 , 34960
+585 , 35019 , 416 , 52 , 1 , 1 , 34960
+585 , 35020 , 413 , 52 , 1 , 1 , 34960
+585 , 35021 , 412 , 41 , 1 , 1 , 34960
+585 , 35022 , 410 , 41 , 1 , 1 , 34960
+585 , 35023 , 409 , 42 , 1 , 1 , 34960
+585 , 35024 , 291 , 278 , 1 , 1 , 34960
+585 , 35025 , 289 , 277 , 1 , 1 , 34960
+585 , 35026 , 255 , 52 , 1 , 1 , 34960
+585 , 35027 , 286 , 52 , 1 , 1 , 34960
+585 , 35028 , 285 , 52 , 1 , 1 , 34960
+585 , 35029 , 403 , 41 , 1 , 1 , 34960
+585 , 35030 , 390 , 52 , 1 , 1 , 34960
+585 , 35031 , 389 , 42 , 1 , 1 , 34960
+585 , 35032 , 389 , 52 , 1 , 1 , 34960
+585 , 35033 , 385 , 80 , 1 , 1 , 34960
+585 , 35034 , 384 , 82 , 1 , 1 , 34960
+585 , 35035 , 383 , 31 , 1 , 1 , 34960
+585 , 35036 , 381 , 87 , 1 , 1 , 34960
+585 , 35037 , 341 , 62 , 1 , 1 , 34960
+585 , 35038 , 340 , 62 , 1 , 1 , 34960
+585 , 35039 , 340 , 62 , 1 , 1 , 34960
+585 , 35040 , 380 , 96 , 1 , 1 , 34960
+585 , 35041 , 220 , 233 , 1 , 1 , 34960
+585 , 35042 , 218 , 72 , 1 , 1 , 34960
+585 , 35043 , 220 , 238 , 1 , 1 , 34960
+585 , 35044 , 218 , 254 , 1 , 1 , 34960
+585 , 35045 , 214 , 82 , 1 , 1 , 34960
+585 , 35046 , 218 , 265 , 1 , 1 , 34960
+585 , 35047 , 214 , 93 , 1 , 1 , 34960
+585 , 35048 , 214 , 82 , 1 , 1 , 34960
+585 , 35049 , 213 , 82 , 1 , 1 , 34960
+585 , 35050 , 213 , 82 , 1 , 1 , 34960
+585 , 35051 , 218 , 238 , 1 , 1 , 34960
+585 , 35052 , 210 , 93 , 1 , 1 , 34960
+585 , 35053 , 209 , 92 , 1 , 1 , 34960
+585 , 35054 , 210 , 93 , 1 , 1 , 34960
+585 , 35055 , 379 , 62 , 1 , 1 , 34960
+585 , 35056 , 373 , 86 , 1 , 1 , 34960
+585 , 35057 , 371 , 85 , 1 , 1 , 34960
+585 , 35058 , 349 , 62 , 1 , 1 , 34960
+585 , 35059 , 349 , 52 , 1 , 1 , 34960
+585 , 35060 , 348 , 52 , 1 , 1 , 34960
+585 , 35061 , 132 , 62 , 1 , 1 , 34960
+585 , 35062 , 132 , 62 , 1 , 1 , 34960
+585 , 35063 , 131 , 72 , 1 , 1 , 34960
+585 , 35064 , 131 , 52 , 1 , 1 , 34960
+585 , 35065 , 130 , 52 , 1 , 1 , 34960
+585 , 35066 , 131 , 52 , 1 , 1 , 34960
+585 , 35067 , 311 , 41 , 1 , 1 , 34960
+585 , 35068 , 311 , 41 , 1 , 1 , 34960
+585 , 35069 , 311 , 322 , 1 , 1 , 34960
+585 , 35070 , 311 , 319 , 1 , 1 , 34960
+585 , 35071 , 239 , 62 , 1 , 1 , 34960
+585 , 35072 , 238 , 228 , 1 , 1 , 34960
+585 , 35073 , 239 , 240 , 1 , 1 , 34960
+585 , 35074 , 310 , 41 , 1 , 1 , 34960
+585 , 35075 , 310 , 41 , 1 , 1 , 34960
+585 , 35076 , 367 , 52 , 1 , 1 , 34960
+585 , 35077 , 281 , 52 , 1 , 1 , 34960
+585 , 35078 , 281 , 52 , 1 , 1 , 34960
+585 , 35079 , 367 , 52 , 1 , 1 , 34960
+585 , 35080 , 402 , 41 , 1 , 1 , 34960
+585 , 35081 , 455 , 52 , 1 , 1 , 34960
+585 , 35082 , 455 , 41 , 1 , 1 , 34960
+585 , 35083 , 455 , 41 , 1 , 1 , 34960
+585 , 35084 , 455 , 41 , 1 , 1 , 34960
+585 , 35085 , 245 , 239 , 1 , 1 , 34960
+585 , 35086 , 244 , 52 , 1 , 1 , 34960
+585 , 35087 , 240 , 62 , 1 , 1 , 34960
+585 , 35088 , 241 , 250 , 1 , 1 , 34960
+585 , 35089 , 240 , 250 , 1 , 1 , 34960
+585 , 35090 , 240 , 240 , 1 , 1 , 34960
+585 , 35091 , 454 , 41 , 1 , 1 , 34960
+585 , 35092 , 130 , 52 , 1 , 1 , 34960
+585 , 35093 , 130 , 72 , 1 , 1 , 34960
+585 , 35094 , 129 , 31 , 1 , 1 , 34960
+585 , 35095 , 129 , 31 , 1 , 1 , 34960
+585 , 35096 , 128 , 31 , 1 , 1 , 34960
+585 , 35097 , 127 , 31 , 1 , 1 , 34960
+585 , 35098 , 121 , 31 , 1 , 1 , 34960
+585 , 35099 , 120 , 31 , 1 , 1 , 34960
+585 , 35100 , 119 , 41 , 1 , 1 , 34960
+585 , 35101 , 119 , 41 , 1 , 1 , 34960
+585 , 35102 , 111 , 41 , 1 , 1 , 34960
+585 , 35103 , 111 , 42 , 1 , 1 , 34960
+585 , 35104 , 109 , 41 , 1 , 1 , 34960
+585 , 35105 , 107 , 41 , 1 , 1 , 34960
+585 , 35106 , 100 , 52 , 1 , 1 , 34960
+585 , 35107 , 103 , 91 , 1 , 1 , 34960
+585 , 35108 , 103 , 86 , 1 , 1 , 34960
+585 , 35109 , 103 , 88 , 1 , 1 , 34960
+585 , 35110 , 103 , 89 , 1 , 1 , 34960
+585 , 35111 , 103 , 76 , 1 , 1 , 34960
+585 , 35112 , 103 , 88 , 1 , 1 , 34960
+585 , 35113 , 98 , 52 , 1 , 1 , 34960
+585 , 35114 , 97 , 52 , 1 , 1 , 34960
+585 , 35115 , 97 , 52 , 1 , 1 , 34960
+585 , 35116 , 97 , 52 , 1 , 1 , 34960
+585 , 35117 , 97 , 52 , 1 , 1 , 34960
+585 , 35118 , 97 , 52 , 1 , 1 , 34960
+585 , 35119 , 103 , 87 , 1 , 1 , 34960
+585 , 35120 , 96 , 52 , 1 , 1 , 34960
+585 , 35121 , 95 , 52 , 1 , 1 , 34960
+585 , 35122 , 93 , 52 , 1 , 1 , 34960
+585 , 35123 , 93 , 52 , 1 , 1 , 34960
+585 , 35124 , 93 , 62 , 1 , 1 , 34960
+585 , 35125 , 93 , 62 , 1 , 1 , 34960
+585 , 35126 , 93 , 62 , 1 , 1 , 34960
+585 , 35127 , 93 , 62 , 1 , 1 , 34960
+585 , 35128 , 93 , 62 , 1 , 1 , 34960
+585 , 35129 , 92 , 62 , 1 , 1 , 34960
+585 , 35130 , 91 , 52 , 1 , 1 , 34960
+585 , 35131 , 91 , 62 , 1 , 1 , 34960
+585 , 35132 , 89 , 62 , 1 , 1 , 34960
+585 , 35133 , 89 , 62 , 1 , 1 , 34960
+585 , 35134 , 89 , 62 , 1 , 1 , 34960
+585 , 35135 , 89 , 62 , 1 , 1 , 34960
+585 , 35136 , 89 , 62 , 1 , 1 , 34960
+585 , 35137 , 88 , 62 , 1 , 1 , 34960
+585 , 35138 , 88 , 62 , 1 , 1 , 34960
+585 , 35139 , 88 , 62 , 1 , 1 , 34960
+585 , 35140 , 87 , 62 , 1 , 1 , 34960
+585 , 35141 , 87 , 62 , 1 , 1 , 34960
+585 , 35142 , 85 , 62 , 1 , 1 , 34960
+585 , 35143 , 85 , 62 , 1 , 1 , 34960
+585 , 35144 , 85 , 62 , 1 , 1 , 34960
+585 , 35145 , 85 , 62 , 1 , 1 , 34960
+585 , 35146 , 85 , 62 , 1 , 1 , 34960
+585 , 35147 , 85 , 62 , 1 , 1 , 34960
+585 , 35148 , 85 , 62 , 1 , 1 , 34960
+585 , 35149 , 85 , 52 , 1 , 1 , 34960
+585 , 35150 , 85 , 41 , 1 , 1 , 34960
+585 , 35151 , 85 , 41 , 1 , 1 , 34960
+585 , 35152 , 85 , 52 , 1 , 1 , 34960
+585 , 35153 , 85 , 41 , 1 , 1 , 34960
+585 , 35154 , 755 , 0 , 1 , 1 , 35127 35012 35079 35108 35123 35087 35034 35031 35124 34994 35102 35082 34973 35024 35150 35016 35077 35106 35051 35065 35075 35135 35018 35064 35140 35003 35019 34996 34962 34999 34964 35025 34965 35006 35104 35147 35083 34972 35046 35009 34969 35136 35056 35122 35101 35119 34997 34998 35085 35000 35105 35020 35058 35084 35103 35063 35061 35047 34993 35022 35098 35091 35121 35040 35036 35153 35017 35095 34983 34970 35114 35141 35125 35126 35008 35143 34975 34985 35090 35048 34968 34987 35076 34989 35138 35116 35132 35097 35110 34995 35026 34990 35007 35045 34979 35134 35148 35094 35073 35078 35052 34984 35149 35100 35030 35011 35092 35133 35028 35117 35033 35131 35112 35088 35037 35023 35038 35111 35151 35142 35001 34961 35055 35086 35120 35041 35042 35146 34976 35129 35089 35057 35107 35062 35081 35099 34991 35070 35093 35067 35152 34978 34988 34980 35109 35010 35128 35032 35139 35043 35118 35044 35002 34992 35130 35027 35060 35021 35053 35013 35054 35069 35015 34977 34963 35059 35049 35039 35113 35071 35004 35144 35014 35074 35068 35137 35029 34971 34966 35145 34967 35096 34974 35066 34986 35005 35080 35035 34981 34982 35115 35050 35072
+585 , 35155 , 1067 , 41 , 1 , 1 , 35154
+585 , 35156 , 1066 , 31 , 1 , 1 , 35154
+585 , 35157 , 1080 , 41 , 1 , 1 , 35154
+585 , 35158 , 1066 , 41 , 1 , 1 , 35154
+585 , 35159 , 1066 , 41 , 1 , 1 , 35154
+585 , 35160 , 1066 , 41 , 1 , 1 , 35154
+585 , 35161 , 1066 , 31 , 1 , 1 , 35154
+585 , 35162 , 1066 , 31 , 1 , 1 , 35154
+585 , 35163 , 1066 , 31 , 1 , 1 , 35154
+585 , 35164 , 1079 , 41 , 1 , 1 , 35154
+585 , 35165 , 1066 , 31 , 1 , 1 , 35154
+585 , 35166 , 1063 , 31 , 1 , 1 , 35154
+585 , 35167 , 1063 , 31 , 1 , 1 , 35154
+585 , 35168 , 1063 , 41 , 1 , 1 , 35154
+585 , 35169 , 1062 , 52 , 1 , 1 , 35154
+585 , 35170 , 1062 , 31 , 1 , 1 , 35154
+585 , 35171 , 1062 , 52 , 1 , 1 , 35154
+585 , 35172 , 1062 , 52 , 1 , 1 , 35154
+585 , 35173 , 1062 , 52 , 1 , 1 , 35154
+585 , 35174 , 1062 , 52 , 1 , 1 , 35154
+585 , 35175 , 1081 , 41 , 1 , 1 , 35154
+585 , 35176 , 1079 , 41 , 1 , 1 , 35154
+585 , 35177 , 1077 , 41 , 1 , 1 , 35154
+585 , 35178 , 1076 , 31 , 1 , 1 , 35154
+585 , 35179 , 1062 , 42 , 1 , 1 , 35154
+585 , 35180 , 1073 , 42 , 1 , 1 , 35154
+585 , 35181 , 1079 , 41 , 1 , 1 , 35154
+585 , 35182 , 1072 , 42 , 1 , 1 , 35154
+585 , 35183 , 1059 , 41 , 1 , 1 , 35154
+585 , 35184 , 1058 , 41 , 1 , 1 , 35154
+585 , 35185 , 1058 , 31 , 1 , 1 , 35154
+585 , 35186 , 1058 , 31 , 1 , 1 , 35154
+585 , 35187 , 1058 , 31 , 1 , 1 , 35154
+585 , 35188 , 1058 , 31 , 1 , 1 , 35154
+585 , 35189 , 1058 , 31 , 1 , 1 , 35154
+585 , 35190 , 1072 , 22 , 1 , 1 , 35154
+585 , 35191 , 1070 , 41 , 1 , 1 , 35154
+585 , 35192 , 1070 , 41 , 1 , 1 , 35154
+585 , 35193 , 1070 , 31 , 1 , 1 , 35154
+585 , 35194 , 1070 , 41 , 1 , 1 , 35154
+585 , 35195 , 1070 , 31 , 1 , 1 , 35154
+585 , 35196 , 1058 , 31 , 1 , 1 , 35154
+585 , 35197 , 1058 , 21 , 1 , 1 , 35154
+585 , 35198 , 1058 , 31 , 1 , 1 , 35154
+585 , 35199 , 1072 , 32 , 1 , 1 , 35154
+585 , 35200 , 1072 , 32 , 1 , 1 , 35154
+585 , 35201 , 1079 , 41 , 1 , 1 , 35154
+585 , 35202 , 1079 , 41 , 1 , 1 , 35154
+585 , 35203 , 1055 , 31 , 1 , 1 , 35154
+585 , 35204 , 1070 , 41 , 1 , 1 , 35154
+585 , 35205 , 1070 , 41 , 1 , 1 , 35154
+585 , 35206 , 1080 , 41 , 1 , 1 , 35154
+585 , 35207 , 1090 , 31 , 1 , 1 , 35154
+585 , 35208 , 1065 , 31 , 1 , 1 , 35154
+585 , 35209 , 1054 , 31 , 1 , 1 , 35154
+585 , 35210 , 1054 , 21 , 1 , 1 , 35154
+585 , 35211 , 1054 , 21 , 1 , 1 , 35154
+585 , 35212 , 1054 , 21 , 1 , 1 , 35154
+585 , 35213 , 1054 , 21 , 1 , 1 , 35154
+585 , 35214 , 1054 , 21 , 1 , 1 , 35154
+585 , 35215 , 1054 , 11 , 1 , 1 , 35154
+585 , 35216 , 1054 , 21 , 1 , 1 , 35154
+585 , 35217 , 1054 , 11 , 1 , 1 , 35154
+585 , 35218 , 1130 , 36 , 1 , 1 , 35154
+585 , 35219 , 1128 , 34 , 1 , 1 , 35154
+585 , 35220 , 1131 , 36 , 1 , 1 , 35154
+585 , 35221 , 1131 , 33 , 1 , 1 , 35154
+585 , 35222 , 1132 , 37 , 1 , 1 , 35154
+585 , 35223 , 1127 , 34 , 1 , 1 , 35154
+585 , 35224 , 1125 , 36 , 1 , 1 , 35154
+585 , 35225 , 1124 , 36 , 1 , 1 , 35154
+585 , 35226 , 1122 , 37 , 1 , 1 , 35154
+585 , 35227 , 1120 , 36 , 1 , 1 , 35154
+585 , 35228 , 1121 , 37 , 1 , 1 , 35154
+585 , 35229 , 1119 , 33 , 1 , 1 , 35154
+585 , 35230 , 1120 , 36 , 1 , 1 , 35154
+585 , 35231 , 1115 , 34 , 1 , 1 , 35154
+585 , 35232 , 1111 , 36 , 1 , 1 , 35154
+585 , 35233 , 1113 , 37 , 1 , 1 , 35154
+585 , 35234 , 1110 , 34 , 1 , 1 , 35154
+585 , 35235 , 1107 , 33 , 1 , 1 , 35154
+585 , 35236 , 1113 , 33 , 1 , 1 , 35154
+585 , 35237 , 1105 , 26 , 1 , 1 , 35154
+585 , 35238 , 1102 , 25 , 1 , 1 , 35154
+585 , 35239 , 1105 , 36 , 1 , 1 , 35154
+585 , 35240 , 1102 , 25 , 1 , 1 , 35154
+585 , 35241 , 1103 , 34 , 1 , 1 , 35154
+585 , 35242 , 1104 , 36 , 1 , 1 , 35154
+585 , 35243 , 1103 , 36 , 1 , 1 , 35154
+585 , 35244 , 1102 , 25 , 1 , 1 , 35154
+585 , 35245 , 1092 , 23 , 1 , 1 , 35154
+585 , 35246 , 1093 , 25 , 1 , 1 , 35154
+585 , 35247 , 1092 , 37 , 1 , 1 , 35154
+585 , 35248 , 1094 , 34 , 1 , 1 , 35154
+585 , 35249 , 1093 , 22 , 1 , 1 , 35154
+585 , 35250 , 1093 , 36 , 1 , 1 , 35154
+585 , 35251 , 1085 , 22 , 1 , 1 , 35154
+585 , 35252 , 1069 , 41 , 1 , 1 , 35154
+585 , 35253 , 814 , 11 , 1 , 1 , 35154
+585 , 35254 , 802 , 11 , 1 , 1 , 35154
+585 , 35255 , 802 , 0 , 1 , 1 , 35154
+585 , 35256 , 802 , 11 , 1 , 1 , 35154
+585 , 35257 , 802 , 12 , 1 , 1 , 35154
+585 , 35258 , 806 , 11 , 1 , 1 , 35154
+585 , 35259 , 793 , 31 , 1 , 1 , 35154
+585 , 35260 , 793 , 31 , 1 , 1 , 35154
+585 , 35261 , 793 , 42 , 1 , 1 , 35154
+585 , 35262 , 793 , 52 , 1 , 1 , 35154
+585 , 35263 , 801 , 21 , 1 , 1 , 35154
+585 , 35264 , 797 , 21 , 1 , 1 , 35154
+585 , 35265 , 790 , 52 , 1 , 1 , 35154
+585 , 35266 , 820 , 21 , 1 , 1 , 35154
+585 , 35267 , 796 , 21 , 1 , 1 , 35154
+585 , 35268 , 790 , 52 , 1 , 1 , 35154
+585 , 35269 , 790 , 52 , 1 , 1 , 35154
+585 , 35270 , 790 , 41 , 1 , 1 , 35154
+585 , 35271 , 790 , 52 , 1 , 1 , 35154
+585 , 35272 , 790 , 52 , 1 , 1 , 35154
+585 , 35273 , 790 , 52 , 1 , 1 , 35154
+585 , 35274 , 789 , 52 , 1 , 1 , 35154
+585 , 35275 , 789 , 52 , 1 , 1 , 35154
+585 , 35276 , 789 , 52 , 1 , 1 , 35154
+585 , 35277 , 787 , 52 , 1 , 1 , 35154
+585 , 35278 , 787 , 52 , 1 , 1 , 35154
+585 , 35279 , 794 , 21 , 1 , 1 , 35154
+585 , 35280 , 787 , 52 , 1 , 1 , 35154
+585 , 35281 , 787 , 52 , 1 , 1 , 35154
+585 , 35282 , 794 , 31 , 1 , 1 , 35154
+585 , 35283 , 794 , 31 , 1 , 1 , 35154
+585 , 35284 , 794 , 31 , 1 , 1 , 35154
+585 , 35285 , 787 , 52 , 1 , 1 , 35154
+585 , 35286 , 787 , 52 , 1 , 1 , 35154
+585 , 35287 , 786 , 52 , 1 , 1 , 35154
+585 , 35288 , 786 , 52 , 1 , 1 , 35154
+585 , 35289 , 786 , 52 , 1 , 1 , 35154
+585 , 35290 , 786 , 52 , 1 , 1 , 35154
+585 , 35291 , 784 , 52 , 1 , 1 , 35154
+585 , 35292 , 783 , 52 , 1 , 1 , 35154
+585 , 35293 , 783 , 52 , 1 , 1 , 35154
+585 , 35294 , 783 , 52 , 1 , 1 , 35154
+585 , 35295 , 783 , 52 , 1 , 1 , 35154
+585 , 35296 , 783 , 52 , 1 , 1 , 35154
+585 , 35297 , 783 , 52 , 1 , 1 , 35154
+585 , 35298 , 783 , 52 , 1 , 1 , 35154
+585 , 35299 , 783 , 52 , 1 , 1 , 35154
+585 , 35300 , 782 , 52 , 1 , 1 , 35154
+585 , 35301 , 798 , 31 , 1 , 1 , 35154
+585 , 35302 , 804 , 21 , 1 , 1 , 35154
+585 , 35303 , 798 , 31 , 1 , 1 , 35154
+585 , 35304 , 797 , 21 , 1 , 1 , 35154
+585 , 35305 , 796 , 31 , 1 , 1 , 35154
+585 , 35306 , 794 , 21 , 1 , 1 , 35154
+585 , 35307 , 779 , 52 , 1 , 1 , 35154
+585 , 35308 , 779 , 52 , 1 , 1 , 35154
+585 , 35309 , 779 , 52 , 1 , 1 , 35154
+585 , 35310 , 779 , 52 , 1 , 1 , 35154
+585 , 35311 , 779 , 52 , 1 , 1 , 35154
+585 , 35312 , 779 , 52 , 1 , 1 , 35154
+585 , 35313 , 794 , 31 , 1 , 1 , 35154
+585 , 35314 , 779 , 52 , 1 , 1 , 35154
+585 , 35315 , 778 , 52 , 1 , 1 , 35154
+585 , 35316 , 778 , 52 , 1 , 1 , 35154
+585 , 35317 , 778 , 52 , 1 , 1 , 35154
+585 , 35318 , 776 , 62 , 1 , 1 , 35154
+585 , 35319 , 776 , 52 , 1 , 1 , 35154
+585 , 35320 , 776 , 52 , 1 , 1 , 35154
+585 , 35321 , 776 , 62 , 1 , 1 , 35154
+585 , 35322 , 776 , 52 , 1 , 1 , 35154
+585 , 35323 , 775 , 52 , 1 , 1 , 35154
+585 , 35324 , 775 , 52 , 1 , 1 , 35154
+585 , 35325 , 775 , 53 , 1 , 1 , 35154
+585 , 35326 , 775 , 53 , 1 , 1 , 35154
+585 , 35327 , 775 , 53 , 1 , 1 , 35154
+585 , 35328 , 773 , 52 , 1 , 1 , 35154
+585 , 35329 , 773 , 41 , 1 , 1 , 35154
+585 , 35330 , 773 , 52 , 1 , 1 , 35154
+585 , 35331 , 773 , 41 , 1 , 1 , 35154
+585 , 35332 , 773 , 52 , 1 , 1 , 35154
+585 , 35333 , 773 , 52 , 1 , 1 , 35154
+585 , 35334 , 773 , 52 , 1 , 1 , 35154
+585 , 35335 , 773 , 53 , 1 , 1 , 35154
+585 , 35336 , 773 , 52 , 1 , 1 , 35154
+585 , 35337 , 773 , 52 , 1 , 1 , 35154
+585 , 35338 , 770 , 41 , 1 , 1 , 35154
+585 , 35339 , 770 , 41 , 1 , 1 , 35154
+585 , 35340 , 770 , 62 , 1 , 1 , 35154
+585 , 35341 , 770 , 52 , 1 , 1 , 35154
+585 , 35342 , 770 , 41 , 1 , 1 , 35154
+585 , 35343 , 770 , 52 , 1 , 1 , 35154
+585 , 35344 , 770 , 52 , 1 , 1 , 35154
+585 , 35345 , 770 , 41 , 1 , 1 , 35154
+585 , 35346 , 770 , 52 , 1 , 1 , 35154
+585 , 35347 , 770 , 52 , 1 , 1 , 35154
+585 , 35348 , 1358 , 21 , 1 , 1 , 35224 35193 35266 35231 35183 35324 35327 35247 35244 35163 35225 35303 35169 35322 35267 35279 35210 35337 35288 35201 35235 35160 35245 35270 35199 35254 35229 35338 35234 35197 35342 35316 35206 35271 35238 35255 35250 35331 35264 35179 35329 35233 35208 35188 35190 35249 35321 35246 35315 35284 35336 35312 35158 35240 35242 35346 35237 35286 35251 35272 35215 35194 35165 35214 35198 35294 35230 35265 35248 35253 35280 35345 35221 35236 35261 35243 35263 35314 35317 35191 35347 35213 35268 35330 35313 35304 35186 35217 35195 35196 35207 35257 35291 35202 35318 35162 35300 35239 35180 35341 35204 35326 35166 35273 35302 35259 35219 35172 35168 35290 35173 35296 35319 35220 35228 35211 35171 35181 35332 35283 35277 35182 35309 35184 35176 35216 35344 35325 35209 35301 35305 35292 35189 35185 35307 35278 35157 35167 35155 35258 35299 35223 35323 35226 35203 35306 35285 35178 35339 35256 35262 35205 35164 35289 35275 35328 35161 35241 35175 35310 35227 35311 35343 35170 35293 35295 35333 35232 35260 35187 35212 35200 35274 35177 35156 35320 35174 35298 35335 35222 35252 35276 35218 35281 35297 35340 35159 35269 35282 35334 35287 35308 35192
+586 , 35349 , 4 , 21 , 1 , 1 ,
+586 , 35350 , 384 , 31 , 1 , 1 , 35349
+586 , 35351 , 383 , 41 , 1 , 1 , 35349
+586 , 35352 , 383 , 31 , 1 , 1 , 35349
+586 , 35353 , 382 , 31 , 1 , 1 , 35349
+586 , 35354 , 364 , 62 , 1 , 1 , 35349
+586 , 35355 , 278 , 52 , 1 , 1 , 35349
+586 , 35356 , 362 , 62 , 1 , 1 , 35349
+586 , 35357 , 139 , 92 , 1 , 1 , 35349
+586 , 35358 , 139 , 92 , 1 , 1 , 35349
+586 , 35359 , 138 , 82 , 1 , 1 , 35349
+586 , 35360 , 138 , 82 , 1 , 1 , 35349
+586 , 35361 , 362 , 52 , 1 , 1 , 35349
+586 , 35362 , 362 , 62 , 1 , 1 , 35349
+586 , 35363 , 92 , 52 , 1 , 1 , 35349
+586 , 35364 , 248 , 62 , 1 , 1 , 35349
+586 , 35365 , 324 , 41 , 1 , 1 , 35349
+586 , 35366 , 359 , 62 , 1 , 1 , 35349
+586 , 35367 , 359 , 62 , 1 , 1 , 35349
+586 , 35368 , 370 , 72 , 1 , 1 , 35349
+586 , 35369 , 350 , 62 , 1 , 1 , 35349
+586 , 35370 , 349 , 62 , 1 , 1 , 35349
+586 , 35371 , 349 , 52 , 1 , 1 , 35349
+586 , 35372 , 349 , 52 , 1 , 1 , 35349
+586 , 35373 , 285 , 62 , 1 , 1 , 35349
+586 , 35374 , 284 , 52 , 1 , 1 , 35349
+586 , 35375 , 284 , 62 , 1 , 1 , 35349
+586 , 35376 , 349 , 52 , 1 , 1 , 35349
+586 , 35377 , 138 , 82 , 1 , 1 , 35349
+586 , 35378 , 138 , 93 , 1 , 1 , 35349
+586 , 35379 , 136 , 82 , 1 , 1 , 35349
+586 , 35380 , 135 , 93 , 1 , 1 , 35349
+586 , 35381 , 370 , 72 , 1 , 1 , 35349
+586 , 35382 , 168 , 248 , 1 , 1 , 35349
+586 , 35383 , 168 , 247 , 1 , 1 , 35349
+586 , 35384 , 167 , 251 , 1 , 1 , 35349
+586 , 35385 , 167 , 248 , 1 , 1 , 35349
+586 , 35386 , 166 , 248 , 1 , 1 , 35349
+586 , 35387 , 166 , 256 , 1 , 1 , 35349
+586 , 35388 , 166 , 266 , 1 , 1 , 35349
+586 , 35389 , 165 , 248 , 1 , 1 , 35349
+586 , 35390 , 164 , 248 , 1 , 1 , 35349
+586 , 35391 , 370 , 72 , 1 , 1 , 35349
+586 , 35392 , 370 , 113 , 1 , 1 , 35349
+586 , 35393 , 106 , 83 , 1 , 1 , 35349
+586 , 35394 , 102 , 92 , 1 , 1 , 35349
+586 , 35395 , 102 , 93 , 1 , 1 , 35349
+586 , 35396 , 102 , 82 , 1 , 1 , 35349
+586 , 35397 , 102 , 93 , 1 , 1 , 35349
+586 , 35398 , 205 , 52 , 1 , 1 , 35349
+586 , 35399 , 205 , 62 , 1 , 1 , 35349
+586 , 35400 , 205 , 52 , 1 , 1 , 35349
+586 , 35401 , 283 , 62 , 1 , 1 , 35349
+586 , 35402 , 211 , 62 , 1 , 1 , 35349
+586 , 35403 , 212 , 286 , 1 , 1 , 35349
+586 , 35404 , 283 , 52 , 1 , 1 , 35349
+586 , 35405 , 239 , 41 , 1 , 1 , 35349
+586 , 35406 , 239 , 41 , 1 , 1 , 35349
+586 , 35407 , 239 , 41 , 1 , 1 , 35349
+586 , 35408 , 65 , 62 , 1 , 1 , 35349
+586 , 35409 , 67 , 62 , 1 , 1 , 35349
+586 , 35410 , 177 , 235 , 1 , 1 , 35349
+586 , 35411 , 238 , 31 , 1 , 1 , 35349
+586 , 35412 , 102 , 72 , 1 , 1 , 35349
+586 , 35413 , 238 , 31 , 1 , 1 , 35349
+586 , 35414 , 233 , 278 , 1 , 1 , 35349
+586 , 35415 , 102 , 82 , 1 , 1 , 35349
+586 , 35416 , 102 , 93 , 1 , 1 , 35349
+586 , 35417 , 232 , 41 , 1 , 1 , 35349
+586 , 35418 , 65 , 62 , 1 , 1 , 35349
+586 , 35419 , 64 , 62 , 1 , 1 , 35349
+586 , 35420 , 64 , 62 , 1 , 1 , 35349
+586 , 35421 , 63 , 62 , 1 , 1 , 35349
+586 , 35422 , 63 , 72 , 1 , 1 , 35349
+586 , 35423 , 63 , 62 , 1 , 1 , 35349
+586 , 35424 , 232 , 41 , 1 , 1 , 35349
+586 , 35425 , 232 , 41 , 1 , 1 , 35349
+586 , 35426 , 231 , 42 , 1 , 1 , 35349
+586 , 35427 , 230 , 270 , 1 , 1 , 35349
+586 , 35428 , 229 , 41 , 1 , 1 , 35349
+586 , 35429 , 229 , 272 , 1 , 1 , 35349
+586 , 35430 , 92 , 62 , 1 , 1 , 35349
+586 , 35431 , 91 , 62 , 1 , 1 , 35349
+586 , 35432 , 91 , 62 , 1 , 1 , 35349
+586 , 35433 , 90 , 52 , 1 , 1 , 35349
+586 , 35434 , 90 , 53 , 1 , 1 , 35349
+586 , 35435 , 90 , 52 , 1 , 1 , 35349
+586 , 35436 , 88 , 41 , 1 , 1 , 35349
+586 , 35437 , 80 , 41 , 1 , 1 , 35349
+586 , 35438 , 79 , 62 , 1 , 1 , 35349
+586 , 35439 , 67 , 63 , 1 , 1 , 35349
+586 , 35440 , 69 , 62 , 1 , 1 , 35349
+586 , 35441 , 229 , 41 , 1 , 1 , 35349
+586 , 35442 , 222 , 257 , 1 , 1 , 35349
+586 , 35443 , 221 , 41 , 1 , 1 , 35349
+586 , 35444 , 241 , 41 , 1 , 1 , 35349
+586 , 35445 , 370 , 52 , 1 , 1 , 35349
+586 , 35446 , 370 , 72 , 1 , 1 , 35349
+586 , 35447 , 370 , 72 , 1 , 1 , 35349
+586 , 35448 , 370 , 52 , 1 , 1 , 35349
+586 , 35449 , 370 , 73 , 1 , 1 , 35349
+586 , 35450 , 277 , 52 , 1 , 1 , 35349
+586 , 35451 , 276 , 62 , 1 , 1 , 35349
+586 , 35452 , 276 , 62 , 1 , 1 , 35349
+586 , 35453 , 367 , 236 , 1 , 1 , 35349
+586 , 35454 , 367 , 72 , 1 , 1 , 35349
+586 , 35455 , 367 , 123 , 1 , 1 , 35349
+586 , 35456 , 364 , 72 , 1 , 1 , 35349
+586 , 35457 , 364 , 62 , 1 , 1 , 35349
+586 , 35458 , 365 , 62 , 1 , 1 , 35349
+586 , 35459 , 942 , 72 , 1 , 1 , 35349
+586 , 35460 , 269 , 52 , 1 , 1 , 35349
+586 , 35461 , 264 , 52 , 1 , 1 , 35349
+586 , 35462 , 258 , 315 , 1 , 1 , 35349
+586 , 35463 , 243 , 62 , 1 , 1 , 35349
+586 , 35464 , 252 , 62 , 1 , 1 , 35349
+586 , 35465 , 254 , 62 , 1 , 1 , 35349
+586 , 35466 , 942 , 42 , 1 , 1 , 35349
+586 , 35467 , 942 , 41 , 1 , 1 , 35349
+586 , 35468 , 942 , 41 , 1 , 1 , 35349
+586 , 35469 , 320 , 62 , 1 , 1 , 35349
+586 , 35470 , 248 , 62 , 1 , 1 , 35349
+586 , 35471 , 249 , 62 , 1 , 1 , 35349
+586 , 35472 , 942 , 41 , 1 , 1 , 35349
+586 , 35473 , 170 , 232 , 1 , 1 , 35349
+586 , 35474 , 170 , 62 , 1 , 1 , 35349
+586 , 35475 , 170 , 62 , 1 , 1 , 35349
+586 , 35476 , 169 , 52 , 1 , 1 , 35349
+586 , 35477 , 169 , 62 , 1 , 1 , 35349
+586 , 35478 , 942 , 41 , 1 , 1 , 35349
+586 , 35479 , 281 , 52 , 1 , 1 , 35349
+586 , 35480 , 280 , 52 , 1 , 1 , 35349
+586 , 35481 , 942 , 41 , 1 , 1 , 35349
+586 , 35482 , 63 , 62 , 1 , 1 , 35349
+586 , 35483 , 63 , 62 , 1 , 1 , 35349
+586 , 35484 , 63 , 62 , 1 , 1 , 35349
+586 , 35485 , 941 , 41 , 1 , 1 , 35349
+586 , 35486 , 940 , 41 , 1 , 1 , 35349
+586 , 35487 , 940 , 41 , 1 , 1 , 35349
+586 , 35488 , 940 , 31 , 1 , 1 , 35349
+586 , 35489 , 101 , 93 , 1 , 1 , 35349
+586 , 35490 , 101 , 83 , 1 , 1 , 35349
+586 , 35491 , 123 , 82 , 1 , 1 , 35349
+586 , 35492 , 164 , 248 , 1 , 1 , 35349
+586 , 35493 , 163 , 243 , 1 , 1 , 35349
+586 , 35494 , 940 , 41 , 1 , 1 , 35349
+586 , 35495 , 163 , 262 , 1 , 1 , 35349
+586 , 35496 , 162 , 249 , 1 , 1 , 35349
+586 , 35497 , 166 , 243 , 1 , 1 , 35349
+586 , 35498 , 162 , 253 , 1 , 1 , 35349
+586 , 35499 , 161 , 257 , 1 , 1 , 35349
+586 , 35500 , 161 , 243 , 1 , 1 , 35349
+586 , 35501 , 160 , 243 , 1 , 1 , 35349
+586 , 35502 , 160 , 243 , 1 , 1 , 35349
+586 , 35503 , 158 , 228 , 1 , 1 , 35349
+586 , 35504 , 156 , 72 , 1 , 1 , 35349
+586 , 35505 , 123 , 72 , 1 , 1 , 35349
+586 , 35506 , 123 , 88 , 1 , 1 , 35349
+586 , 35507 , 112 , 82 , 1 , 1 , 35349
+586 , 35508 , 98 , 83 , 1 , 1 , 35349
+586 , 35509 , 98 , 83 , 1 , 1 , 35349
+586 , 35510 , 112 , 72 , 1 , 1 , 35349
+586 , 35511 , 112 , 73 , 1 , 1 , 35349
+586 , 35512 , 112 , 83 , 1 , 1 , 35349
+586 , 35513 , 92 , 62 , 1 , 1 , 35349
+586 , 35514 , 92 , 62 , 1 , 1 , 35349
+586 , 35515 , 249 , 52 , 1 , 1 , 35349
+586 , 35516 , 320 , 52 , 1 , 1 , 35349
+586 , 35517 , 391 , 52 , 1 , 1 , 35349
+586 , 35518 , 240 , 280 , 1 , 1 , 35349
+586 , 35519 , 391 , 41 , 1 , 1 , 35349
+586 , 35520 , 274 , 52 , 1 , 1 , 35349
+586 , 35521 , 273 , 52 , 1 , 1 , 35349
+586 , 35522 , 272 , 62 , 1 , 1 , 35349
+586 , 35523 , 272 , 62 , 1 , 1 , 35349
+586 , 35524 , 271 , 52 , 1 , 1 , 35349
+586 , 35525 , 271 , 52 , 1 , 1 , 35349
+586 , 35526 , 240 , 287 , 1 , 1 , 35349
+586 , 35527 , 240 , 31 , 1 , 1 , 35349
+586 , 35528 , 391 , 41 , 1 , 1 , 35349
+586 , 35529 , 321 , 52 , 1 , 1 , 35349
+586 , 35530 , 158 , 244 , 1 , 1 , 35349
+586 , 35531 , 152 , 72 , 1 , 1 , 35349
+586 , 35532 , 152 , 72 , 1 , 1 , 35349
+586 , 35533 , 152 , 72 , 1 , 1 , 35349
+586 , 35534 , 158 , 243 , 1 , 1 , 35349
+586 , 35535 , 390 , 52 , 1 , 1 , 35349
+586 , 35536 , 390 , 52 , 1 , 1 , 35349
+586 , 35537 , 211 , 52 , 1 , 1 , 35349
+586 , 35538 , 390 , 52 , 1 , 1 , 35349
+586 , 35539 , 176 , 228 , 1 , 1 , 35349
+586 , 35540 , 175 , 239 , 1 , 1 , 35349
+586 , 35541 , 211 , 52 , 1 , 1 , 35349
+586 , 35542 , 210 , 52 , 1 , 1 , 35349
+586 , 35543 , 1079 , 0 , 1 , 1 , 35537 35424 35361 35492 35443 35472 35473 35516 35469 35512 35519 35413 35355 35387 35375 35485 35529 35391 35507 35460 35433 35502 35400 35395 35429 35496 35503 35465 35532 35436 35536 35455 35412 35513 35403 35497 35399 35468 35372 35457 35462 35430 35404 35446 35357 35487 35541 35463 35378 35509 35538 35411 35431 35380 35461 35425 35454 35530 35437 35440 35434 35370 35371 35353 35447 35419 35494 35427 35500 35366 35464 35363 35488 35495 35367 35359 35426 35441 35467 35531 35358 35478 35369 35393 35373 35354 35439 35438 35405 35414 35379 35423 35384 35401 35498 35445 35376 35517 35418 35409 35407 35499 35540 35386 35534 35539 35374 35397 35389 35480 35352 35422 35416 35382 35520 35511 35449 35501 35505 35448 35398 35522 35385 35524 35406 35388 35493 35392 35402 35521 35470 35383 35377 35515 35535 35428 35368 35415 35476 35365 35444 35408 35452 35456 35421 35504 35381 35394 35518 35360 35508 35484 35527 35458 35489 35486 35483 35350 35491 35417 35420 35528 35442 35451 35471 35490 35506 35396 35481 35514 35475 35351 35432 35450 35435 35510 35474 35364 35356 35477 35410 35523 35390 35466 35525 35542 35533 35526 35362 35459 35482 35479 35453
+586 , 35544 , 2756 , 31 , 1 , 1 , 35543
+586 , 35545 , 2755 , 31 , 1 , 1 , 35543
+586 , 35546 , 2751 , 41 , 1 , 1 , 35543
+586 , 35547 , 2750 , 41 , 1 , 1 , 35543
+586 , 35548 , 2749 , 41 , 1 , 1 , 35543
+586 , 35549 , 2749 , 41 , 1 , 1 , 35543
+586 , 35550 , 2749 , 41 , 1 , 1 , 35543
+586 , 35551 , 2748 , 41 , 1 , 1 , 35543
+586 , 35552 , 2747 , 41 , 1 , 1 , 35543
+586 , 35553 , 2747 , 42 , 1 , 1 , 35543
+586 , 35554 , 2747 , 42 , 1 , 1 , 35543
+586 , 35555 , 2746 , 42 , 1 , 1 , 35543
+586 , 35556 , 2744 , 41 , 1 , 1 , 35543
+586 , 35557 , 2744 , 41 , 1 , 1 , 35543
+586 , 35558 , 2744 , 41 , 1 , 1 , 35543
+586 , 35559 , 2744 , 31 , 1 , 1 , 35543
+586 , 35560 , 2744 , 31 , 1 , 1 , 35543
+586 , 35561 , 2743 , 31 , 1 , 1 , 35543
+586 , 35562 , 2743 , 41 , 1 , 1 , 35543
+586 , 35563 , 2743 , 41 , 1 , 1 , 35543
+586 , 35564 , 2743 , 41 , 1 , 1 , 35543
+586 , 35565 , 2743 , 41 , 1 , 1 , 35543
+586 , 35566 , 2741 , 42 , 1 , 1 , 35543
+586 , 35567 , 2741 , 42 , 1 , 1 , 35543
+586 , 35568 , 2741 , 31 , 1 , 1 , 35543
+586 , 35569 , 2741 , 32 , 1 , 1 , 35543
+586 , 35570 , 2741 , 32 , 1 , 1 , 35543
+586 , 35571 , 2741 , 42 , 1 , 1 , 35543
+586 , 35572 , 2740 , 41 , 1 , 1 , 35543
+586 , 35573 , 2740 , 41 , 1 , 1 , 35543
+586 , 35574 , 2740 , 42 , 1 , 1 , 35543
+586 , 35575 , 2740 , 42 , 1 , 1 , 35543
+586 , 35576 , 2775 , 31 , 1 , 1 , 35543
+586 , 35577 , 2773 , 31 , 1 , 1 , 35543
+586 , 35578 , 2775 , 31 , 1 , 1 , 35543
+586 , 35579 , 2773 , 31 , 1 , 1 , 35543
+586 , 35580 , 2773 , 32 , 1 , 1 , 35543
+586 , 35581 , 2775 , 31 , 1 , 1 , 35543
+586 , 35582 , 2773 , 31 , 1 , 1 , 35543
+586 , 35583 , 2775 , 21 , 1 , 1 , 35543
+586 , 35584 , 2829 , 32 , 1 , 1 , 35543
+586 , 35585 , 2832 , 33 , 1 , 1 , 35543
+586 , 35586 , 2828 , 33 , 1 , 1 , 35543
+586 , 35587 , 2828 , 33 , 1 , 1 , 35543
+586 , 35588 , 2827 , 31 , 1 , 1 , 35543
+586 , 35589 , 2826 , 31 , 1 , 1 , 35543
+586 , 35590 , 2826 , 31 , 1 , 1 , 35543
+586 , 35591 , 2825 , 32 , 1 , 1 , 35543
+586 , 35592 , 2825 , 32 , 1 , 1 , 35543
+586 , 35593 , 2833 , 34 , 1 , 1 , 35543
+586 , 35594 , 2832 , 32 , 1 , 1 , 35543
+586 , 35595 , 2824 , 33 , 1 , 1 , 35543
+586 , 35596 , 2824 , 23 , 1 , 1 , 35543
+586 , 35597 , 2823 , 24 , 1 , 1 , 35543
+586 , 35598 , 2822 , 21 , 1 , 1 , 35543
+586 , 35599 , 2822 , 21 , 1 , 1 , 35543
+586 , 35600 , 2829 , 21 , 1 , 1 , 35543
+586 , 35601 , 2822 , 22 , 1 , 1 , 35543
+586 , 35602 , 2822 , 22 , 1 , 1 , 35543
+586 , 35603 , 2821 , 22 , 1 , 1 , 35543
+586 , 35604 , 2239 , 11 , 1 , 1 , 35543
+586 , 35605 , 2181 , 31 , 1 , 1 , 35543
+586 , 35606 , 2181 , 31 , 1 , 1 , 35543
+586 , 35607 , 2181 , 31 , 1 , 1 , 35543
+586 , 35608 , 2239 , 11 , 1 , 1 , 35543
+586 , 35609 , 2179 , 31 , 1 , 1 , 35543
+586 , 35610 , 2178 , 32 , 1 , 1 , 35543
+586 , 35611 , 2178 , 32 , 1 , 1 , 35543
+586 , 35612 , 2168 , 31 , 1 , 1 , 35543
+586 , 35613 , 2168 , 41 , 1 , 1 , 35543
+586 , 35614 , 2168 , 31 , 1 , 1 , 35543
+586 , 35615 , 2167 , 31 , 1 , 1 , 35543
+586 , 35616 , 2167 , 31 , 1 , 1 , 35543
+586 , 35617 , 2167 , 31 , 1 , 1 , 35543
+586 , 35618 , 2240 , 0 , 1 , 1 , 35543
+586 , 35619 , 2240 , 12 , 1 , 1 , 35543
+586 , 35620 , 2239 , 13 , 1 , 1 , 35543
+586 , 35621 , 2239 , 12 , 1 , 1 , 35543
+586 , 35622 , 2237 , 11 , 1 , 1 , 35543
+586 , 35623 , 2236 , 11 , 1 , 1 , 35543
+586 , 35624 , 2236 , 11 , 1 , 1 , 35543
+586 , 35625 , 2239 , 12 , 1 , 1 , 35543
+586 , 35626 , 2236 , 35 , 1 , 1 , 35543
+586 , 35627 , 2236 , 35 , 1 , 1 , 35543
+586 , 35628 , 2783 , 32 , 1 , 1 , 35543
+586 , 35629 , 2783 , 32 , 1 , 1 , 35543
+586 , 35630 , 2783 , 32 , 1 , 1 , 35543
+586 , 35631 , 2793 , 32 , 1 , 1 , 35543
+586 , 35632 , 2777 , 32 , 1 , 1 , 35543
+586 , 35633 , 2798 , 32 , 1 , 1 , 35543
+586 , 35634 , 2794 , 32 , 1 , 1 , 35543
+586 , 35635 , 2791 , 25 , 1 , 1 , 35543
+586 , 35636 , 1647 , 11 , 1 , 1 , 35543
+586 , 35637 , 1647 , 11 , 1 , 1 , 35543
+586 , 35638 , 1647 , 12 , 1 , 1 , 35543
+586 , 35639 , 1647 , 13 , 1 , 1 , 35543
+586 , 35640 , 1647 , 12 , 1 , 1 , 35543
+586 , 35641 , 1647 , 0 , 1 , 1 , 35543
+586 , 35642 , 1647 , 13 , 1 , 1 , 35543
+586 , 35643 , 1647 , 13 , 1 , 1 , 35543
+586 , 35644 , 1646 , 33 , 1 , 1 , 35543
+586 , 35645 , 1640 , 43 , 1 , 1 , 35543
+586 , 35646 , 1637 , 42 , 1 , 1 , 35543
+586 , 35647 , 1637 , 42 , 1 , 1 , 35543
+586 , 35648 , 1641 , 43 , 1 , 1 , 35543
+586 , 35649 , 1647 , 42 , 1 , 1 , 35543
+586 , 35650 , 1637 , 21 , 1 , 1 , 35543
+586 , 35651 , 1637 , 32 , 1 , 1 , 35543
+586 , 35652 , 1637 , 42 , 1 , 1 , 35543
+586 , 35653 , 1637 , 43 , 1 , 1 , 35543
+586 , 35654 , 1637 , 42 , 1 , 1 , 35543
+586 , 35655 , 1637 , 42 , 1 , 1 , 35543
+586 , 35656 , 1637 , 32 , 1 , 1 , 35543
+586 , 35657 , 1637 , 21 , 1 , 1 , 35543
+586 , 35658 , 1637 , 32 , 1 , 1 , 35543
+586 , 35659 , 1637 , 21 , 1 , 1 , 35543
+586 , 35660 , 1626 , 21 , 1 , 1 , 35543
+586 , 35661 , 1627 , 21 , 1 , 1 , 35543
+586 , 35662 , 1625 , 21 , 1 , 1 , 35543
+586 , 35663 , 1623 , 21 , 1 , 1 , 35543
+586 , 35664 , 1620 , 21 , 1 , 1 , 35543
+586 , 35665 , 1625 , 32 , 1 , 1 , 35543
+586 , 35666 , 1620 , 21 , 1 , 1 , 35543
+586 , 35667 , 1618 , 32 , 1 , 1 , 35543
+586 , 35668 , 1618 , 32 , 1 , 1 , 35543
+586 , 35669 , 1630 , 21 , 1 , 1 , 35543
+586 , 35670 , 1624 , 21 , 1 , 1 , 35543
+586 , 35671 , 1616 , 22 , 1 , 1 , 35543
+586 , 35672 , 1615 , 22 , 1 , 1 , 35543
+586 , 35673 , 1616 , 21 , 1 , 1 , 35543
+586 , 35674 , 1624 , 32 , 1 , 1 , 35543
+586 , 35675 , 1613 , 22 , 1 , 1 , 35543
+586 , 35676 , 1613 , 22 , 1 , 1 , 35543
+586 , 35677 , 1619 , 21 , 1 , 1 , 35543
+586 , 35678 , 1614 , 22 , 1 , 1 , 35543
+586 , 35679 , 1609 , 32 , 1 , 1 , 35543
+586 , 35680 , 1612 , 21 , 1 , 1 , 35543
+586 , 35681 , 1610 , 32 , 1 , 1 , 35543
+586 , 35682 , 1609 , 21 , 1 , 1 , 35543
+586 , 35683 , 1606 , 32 , 1 , 1 , 35543
+586 , 35684 , 1605 , 32 , 1 , 1 , 35543
+586 , 35685 , 1624 , 32 , 1 , 1 , 35543
+586 , 35686 , 1607 , 21 , 1 , 1 , 35543
+586 , 35687 , 1604 , 22 , 1 , 1 , 35543
+586 , 35688 , 1603 , 22 , 1 , 1 , 35543
+586 , 35689 , 1602 , 22 , 1 , 1 , 35543
+586 , 35690 , 1602 , 21 , 1 , 1 , 35543
+586 , 35691 , 1602 , 22 , 1 , 1 , 35543
+586 , 35692 , 1601 , 33 , 1 , 1 , 35543
+586 , 35693 , 1601 , 33 , 1 , 1 , 35543
+586 , 35694 , 1600 , 23 , 1 , 1 , 35543
+586 , 35695 , 1600 , 23 , 1 , 1 , 35543
+586 , 35696 , 1600 , 32 , 1 , 1 , 35543
+586 , 35697 , 1599 , 32 , 1 , 1 , 35543
+586 , 35698 , 1603 , 22 , 1 , 1 , 35543
+586 , 35699 , 1603 , 33 , 1 , 1 , 35543
+586 , 35700 , 1598 , 32 , 1 , 1 , 35543
+586 , 35701 , 1598 , 32 , 1 , 1 , 35543
+586 , 35702 , 1597 , 34 , 1 , 1 , 35543
+586 , 35703 , 1599 , 32 , 1 , 1 , 35543
+586 , 35704 , 1598 , 32 , 1 , 1 , 35543
+586 , 35705 , 1595 , 32 , 1 , 1 , 35543
+586 , 35706 , 1595 , 32 , 1 , 1 , 35543
+586 , 35707 , 1601 , 22 , 1 , 1 , 35543
+586 , 35708 , 1602 , 22 , 1 , 1 , 35543
+586 , 35709 , 1592 , 34 , 1 , 1 , 35543
+586 , 35710 , 1592 , 34 , 1 , 1 , 35543
+586 , 35711 , 1588 , 32 , 1 , 1 , 35543
+586 , 35712 , 1588 , 32 , 1 , 1 , 35543
+586 , 35713 , 1605 , 33 , 1 , 1 , 35543
+586 , 35714 , 1589 , 32 , 1 , 1 , 35543
+586 , 35715 , 1583 , 32 , 1 , 1 , 35543
+586 , 35716 , 1584 , 32 , 1 , 1 , 35543
+586 , 35717 , 1579 , 32 , 1 , 1 , 35543
+586 , 35718 , 1588 , 32 , 1 , 1 , 35543
+586 , 35719 , 1608 , 21 , 1 , 1 , 35543
+586 , 35720 , 1571 , 33 , 1 , 1 , 35543
+586 , 35721 , 1574 , 35 , 1 , 1 , 35543
+586 , 35722 , 1571 , 33 , 1 , 1 , 35543
+586 , 35723 , 1613 , 22 , 1 , 1 , 35543
+586 , 35724 , 1585 , 31 , 1 , 1 , 35543
+586 , 35725 , 1583 , 31 , 1 , 1 , 35543
+586 , 35726 , 1582 , 31 , 1 , 1 , 35543
+586 , 35727 , 1582 , 31 , 1 , 1 , 35543
+586 , 35728 , 1588 , 21 , 1 , 1 , 35543
+586 , 35729 , 1582 , 41 , 1 , 1 , 35543
+586 , 35730 , 1582 , 41 , 1 , 1 , 35543
+586 , 35731 , 1582 , 31 , 1 , 1 , 35543
+586 , 35732 , 1581 , 21 , 1 , 1 , 35543
+586 , 35733 , 1588 , 21 , 1 , 1 , 35543
+586 , 35734 , 1588 , 21 , 1 , 1 , 35543
+586 , 35735 , 1581 , 31 , 1 , 1 , 35543
+586 , 35736 , 1581 , 41 , 1 , 1 , 35543
+586 , 35737 , 2978 , 21 , 1 , 1 , 35632 35703 35683 35580 35727 35687 35584 35603 35655 35595 35665 35618 35569 35720 35625 35735 35637 35545 35652 35608 35734 35640 35575 35730 35723 35630 35664 35606 35641 35678 35581 35654 35725 35600 35658 35643 35552 35610 35639 35692 35648 35670 35644 35695 35675 35710 35588 35565 35611 35555 35602 35614 35562 35551 35717 35619 35605 35698 35627 35631 35590 35615 35709 35708 35666 35616 35712 35731 35714 35613 35583 35560 35585 35622 35635 35690 35706 35662 35668 35645 35607 35559 35722 35705 35688 35604 35556 35550 35577 35594 35576 35546 35596 35589 35679 35674 35548 35663 35657 35628 35617 35729 35571 35582 35567 35620 35694 35624 35597 35626 35566 35653 35696 35716 35598 35612 35718 35726 35659 35711 35667 35719 35697 35638 35650 35553 35547 35685 35573 35633 35642 35677 35680 35736 35701 35672 35564 35629 35700 35561 35660 35544 35634 35686 35609 35704 35732 35715 35684 35549 35579 35636 35601 35572 35656 35682 35570 35699 35649 35724 35681 35599 35669 35728 35563 35721 35691 35587 35623 35651 35647 35676 35621 35591 35707 35554 35702 35693 35592 35671 35574 35558 35586 35689 35593 35557 35578 35568 35646 35673 35733 35661 35713
+587 , 35738 , 7 , 31 , 1 , 1 ,
+587 , 35739 , 831 , 72 , 1 , 1 , 35738
+587 , 35740 , 831 , 82 , 1 , 1 , 35738
+587 , 35741 , 831 , 82 , 1 , 1 , 35738
+587 , 35742 , 831 , 82 , 1 , 1 , 35738
+587 , 35743 , 830 , 82 , 1 , 1 , 35738
+587 , 35744 , 830 , 82 , 1 , 1 , 35738
+587 , 35745 , 830 , 82 , 1 , 1 , 35738
+587 , 35746 , 828 , 63 , 1 , 1 , 35738
+587 , 35747 , 828 , 73 , 1 , 1 , 35738
+587 , 35748 , 828 , 72 , 1 , 1 , 35738
+587 , 35749 , 851 , 52 , 1 , 1 , 35738
+587 , 35750 , 851 , 52 , 1 , 1 , 35738
+587 , 35751 , 851 , 52 , 1 , 1 , 35738
+587 , 35752 , 851 , 52 , 1 , 1 , 35738
+587 , 35753 , 850 , 52 , 1 , 1 , 35738
+587 , 35754 , 848 , 52 , 1 , 1 , 35738
+587 , 35755 , 848 , 52 , 1 , 1 , 35738
+587 , 35756 , 848 , 52 , 1 , 1 , 35738
+587 , 35757 , 847 , 52 , 1 , 1 , 35738
+587 , 35758 , 847 , 52 , 1 , 1 , 35738
+587 , 35759 , 847 , 52 , 1 , 1 , 35738
+587 , 35760 , 847 , 52 , 1 , 1 , 35738
+587 , 35761 , 847 , 52 , 1 , 1 , 35738
+587 , 35762 , 847 , 52 , 1 , 1 , 35738
+587 , 35763 , 846 , 52 , 1 , 1 , 35738
+587 , 35764 , 845 , 52 , 1 , 1 , 35738
+587 , 35765 , 845 , 72 , 1 , 1 , 35738
+587 , 35766 , 844 , 52 , 1 , 1 , 35738
+587 , 35767 , 843 , 62 , 1 , 1 , 35738
+587 , 35768 , 843 , 62 , 1 , 1 , 35738
+587 , 35769 , 843 , 62 , 1 , 1 , 35738
+587 , 35770 , 843 , 72 , 1 , 1 , 35738
+587 , 35771 , 843 , 62 , 1 , 1 , 35738
+587 , 35772 , 843 , 72 , 1 , 1 , 35738
+587 , 35773 , 842 , 72 , 1 , 1 , 35738
+587 , 35774 , 841 , 72 , 1 , 1 , 35738
+587 , 35775 , 841 , 72 , 1 , 1 , 35738
+587 , 35776 , 841 , 72 , 1 , 1 , 35738
+587 , 35777 , 840 , 82 , 1 , 1 , 35738
+587 , 35778 , 839 , 82 , 1 , 1 , 35738
+587 , 35779 , 839 , 82 , 1 , 1 , 35738
+587 , 35780 , 839 , 72 , 1 , 1 , 35738
+587 , 35781 , 839 , 72 , 1 , 1 , 35738
+587 , 35782 , 839 , 62 , 1 , 1 , 35738
+587 , 35783 , 839 , 62 , 1 , 1 , 35738
+587 , 35784 , 838 , 52 , 1 , 1 , 35738
+587 , 35785 , 838 , 82 , 1 , 1 , 35738
+587 , 35786 , 837 , 72 , 1 , 1 , 35738
+587 , 35787 , 836 , 72 , 1 , 1 , 35738
+587 , 35788 , 836 , 62 , 1 , 1 , 35738
+587 , 35789 , 836 , 72 , 1 , 1 , 35738
+587 , 35790 , 836 , 93 , 1 , 1 , 35738
+587 , 35791 , 836 , 72 , 1 , 1 , 35738
+587 , 35792 , 835 , 72 , 1 , 1 , 35738
+587 , 35793 , 835 , 83 , 1 , 1 , 35738
+587 , 35794 , 834 , 72 , 1 , 1 , 35738
+587 , 35795 , 834 , 72 , 1 , 1 , 35738
+587 , 35796 , 833 , 72 , 1 , 1 , 35738
+587 , 35797 , 832 , 72 , 1 , 1 , 35738
+587 , 35798 , 832 , 62 , 1 , 1 , 35738
+587 , 35799 , 831 , 82 , 1 , 1 , 35738
+587 , 35800 , 272 , 41 , 1 , 1 , 35738
+587 , 35801 , 272 , 62 , 1 , 1 , 35738
+587 , 35802 , 234 , 86 , 1 , 1 , 35738
+587 , 35803 , 234 , 80 , 1 , 1 , 35738
+587 , 35804 , 234 , 77 , 1 , 1 , 35738
+587 , 35805 , 234 , 81 , 1 , 1 , 35738
+587 , 35806 , 234 , 76 , 1 , 1 , 35738
+587 , 35807 , 234 , 78 , 1 , 1 , 35738
+587 , 35808 , 234 , 79 , 1 , 1 , 35738
+587 , 35809 , 234 , 75 , 1 , 1 , 35738
+587 , 35810 , 228 , 265 , 1 , 1 , 35738
+587 , 35811 , 228 , 244 , 1 , 1 , 35738
+587 , 35812 , 228 , 234 , 1 , 1 , 35738
+587 , 35813 , 228 , 224 , 1 , 1 , 35738
+587 , 35814 , 228 , 234 , 1 , 1 , 35738
+587 , 35815 , 228 , 234 , 1 , 1 , 35738
+587 , 35816 , 228 , 244 , 1 , 1 , 35738
+587 , 35817 , 228 , 244 , 1 , 1 , 35738
+587 , 35818 , 228 , 234 , 1 , 1 , 35738
+587 , 35819 , 228 , 244 , 1 , 1 , 35738
+587 , 35820 , 228 , 234 , 1 , 1 , 35738
+587 , 35821 , 228 , 234 , 1 , 1 , 35738
+587 , 35822 , 228 , 254 , 1 , 1 , 35738
+587 , 35823 , 228 , 244 , 1 , 1 , 35738
+587 , 35824 , 228 , 244 , 1 , 1 , 35738
+587 , 35825 , 228 , 244 , 1 , 1 , 35738
+587 , 35826 , 241 , 238 , 1 , 1 , 35738
+587 , 35827 , 240 , 249 , 1 , 1 , 35738
+587 , 35828 , 240 , 257 , 1 , 1 , 35738
+587 , 35829 , 240 , 346 , 1 , 1 , 35738
+587 , 35830 , 239 , 352 , 1 , 1 , 35738
+587 , 35831 , 239 , 279 , 1 , 1 , 35738
+587 , 35832 , 239 , 248 , 1 , 1 , 35738
+587 , 35833 , 238 , 243 , 1 , 1 , 35738
+587 , 35834 , 238 , 235 , 1 , 1 , 35738
+587 , 35835 , 238 , 245 , 1 , 1 , 35738
+587 , 35836 , 237 , 243 , 1 , 1 , 35738
+587 , 35837 , 237 , 334 , 1 , 1 , 35738
+587 , 35838 , 237 , 242 , 1 , 1 , 35738
+587 , 35839 , 236 , 245 , 1 , 1 , 35738
+587 , 35840 , 236 , 351 , 1 , 1 , 35738
+587 , 35841 , 236 , 245 , 1 , 1 , 35738
+587 , 35842 , 235 , 244 , 1 , 1 , 35738
+587 , 35843 , 235 , 244 , 1 , 1 , 35738
+587 , 35844 , 234 , 246 , 1 , 1 , 35738
+587 , 35845 , 233 , 249 , 1 , 1 , 35738
+587 , 35846 , 233 , 343 , 1 , 1 , 35738
+587 , 35847 , 233 , 323 , 1 , 1 , 35738
+587 , 35848 , 232 , 247 , 1 , 1 , 35738
+587 , 35849 , 232 , 247 , 1 , 1 , 35738
+587 , 35850 , 232 , 233 , 1 , 1 , 35738
+587 , 35851 , 232 , 247 , 1 , 1 , 35738
+587 , 35852 , 232 , 240 , 1 , 1 , 35738
+587 , 35853 , 232 , 341 , 1 , 1 , 35738
+587 , 35854 , 231 , 236 , 1 , 1 , 35738
+587 , 35855 , 230 , 310 , 1 , 1 , 35738
+587 , 35856 , 230 , 237 , 1 , 1 , 35738
+587 , 35857 , 230 , 237 , 1 , 1 , 35738
+587 , 35858 , 230 , 247 , 1 , 1 , 35738
+587 , 35859 , 230 , 233 , 1 , 1 , 35738
+587 , 35860 , 229 , 237 , 1 , 1 , 35738
+587 , 35861 , 229 , 299 , 1 , 1 , 35738
+587 , 35862 , 229 , 342 , 1 , 1 , 35738
+587 , 35863 , 228 , 242 , 1 , 1 , 35738
+587 , 35864 , 228 , 246 , 1 , 1 , 35738
+587 , 35865 , 228 , 245 , 1 , 1 , 35738
+587 , 35866 , 227 , 243 , 1 , 1 , 35738
+587 , 35867 , 227 , 330 , 1 , 1 , 35738
+587 , 35868 , 227 , 242 , 1 , 1 , 35738
+587 , 35869 , 226 , 244 , 1 , 1 , 35738
+587 , 35870 , 226 , 245 , 1 , 1 , 35738
+587 , 35871 , 226 , 331 , 1 , 1 , 35738
+587 , 35872 , 225 , 245 , 1 , 1 , 35738
+587 , 35873 , 225 , 257 , 1 , 1 , 35738
+587 , 35874 , 225 , 245 , 1 , 1 , 35738
+587 , 35875 , 224 , 248 , 1 , 1 , 35738
+587 , 35876 , 224 , 272 , 1 , 1 , 35738
+587 , 35877 , 224 , 343 , 1 , 1 , 35738
+587 , 35878 , 223 , 333 , 1 , 1 , 35738
+587 , 35879 , 223 , 261 , 1 , 1 , 35738
+587 , 35880 , 223 , 250 , 1 , 1 , 35738
+587 , 35881 , 222 , 250 , 1 , 1 , 35738
+587 , 35882 , 222 , 269 , 1 , 1 , 35738
+587 , 35883 , 222 , 258 , 1 , 1 , 35738
+587 , 35884 , 221 , 252 , 1 , 1 , 35738
+587 , 35885 , 221 , 352 , 1 , 1 , 35738
+587 , 35886 , 221 , 340 , 1 , 1 , 35738
+587 , 35887 , 220 , 256 , 1 , 1 , 35738
+587 , 35888 , 220 , 252 , 1 , 1 , 35738
+587 , 35889 , 220 , 265 , 1 , 1 , 35738
+587 , 35890 , 233 , 52 , 1 , 1 , 35738
+587 , 35891 , 232 , 52 , 1 , 1 , 35738
+587 , 35892 , 232 , 62 , 1 , 1 , 35738
+587 , 35893 , 231 , 62 , 1 , 1 , 35738
+587 , 35894 , 230 , 62 , 1 , 1 , 35738
+587 , 35895 , 230 , 62 , 1 , 1 , 35738
+587 , 35896 , 230 , 62 , 1 , 1 , 35738
+587 , 35897 , 229 , 52 , 1 , 1 , 35738
+587 , 35898 , 229 , 52 , 1 , 1 , 35738
+587 , 35899 , 229 , 62 , 1 , 1 , 35738
+587 , 35900 , 229 , 52 , 1 , 1 , 35738
+587 , 35901 , 229 , 62 , 1 , 1 , 35738
+587 , 35902 , 229 , 52 , 1 , 1 , 35738
+587 , 35903 , 228 , 62 , 1 , 1 , 35738
+587 , 35904 , 227 , 62 , 1 , 1 , 35738
+587 , 35905 , 227 , 62 , 1 , 1 , 35738
+587 , 35906 , 226 , 62 , 1 , 1 , 35738
+587 , 35907 , 226 , 63 , 1 , 1 , 35738
+587 , 35908 , 225 , 63 , 1 , 1 , 35738
+587 , 35909 , 225 , 63 , 1 , 1 , 35738
+587 , 35910 , 225 , 63 , 1 , 1 , 35738
+587 , 35911 , 225 , 63 , 1 , 1 , 35738
+587 , 35912 , 225 , 62 , 1 , 1 , 35738
+587 , 35913 , 223 , 62 , 1 , 1 , 35738
+587 , 35914 , 223 , 62 , 1 , 1 , 35738
+587 , 35915 , 222 , 62 , 1 , 1 , 35738
+587 , 35916 , 222 , 62 , 1 , 1 , 35738
+587 , 35917 , 222 , 62 , 1 , 1 , 35738
+587 , 35918 , 222 , 62 , 1 , 1 , 35738
+587 , 35919 , 222 , 62 , 1 , 1 , 35738
+587 , 35920 , 222 , 62 , 1 , 1 , 35738
+587 , 35921 , 221 , 62 , 1 , 1 , 35738
+587 , 35922 , 221 , 62 , 1 , 1 , 35738
+587 , 35923 , 219 , 62 , 1 , 1 , 35738
+587 , 35924 , 218 , 62 , 1 , 1 , 35738
+587 , 35925 , 218 , 62 , 1 , 1 , 35738
+587 , 35926 , 218 , 62 , 1 , 1 , 35738
+587 , 35927 , 218 , 62 , 1 , 1 , 35738
+587 , 35928 , 218 , 62 , 1 , 1 , 35738
+587 , 35929 , 217 , 62 , 1 , 1 , 35738
+587 , 35930 , 217 , 63 , 1 , 1 , 35738
+587 , 35931 , 217 , 52 , 1 , 1 , 35738
+587 , 35932 , 960 , 0 , 1 , 1 , 35797 35915 35773 35885 35838 35817 35762 35872 35848 35831 35763 35839 35835 35870 35875 35887 35902 35777 35907 35911 35756 35883 35794 35836 35757 35879 35813 35822 35786 35913 35760 35745 35784 35816 35829 35772 35882 35753 35740 35863 35747 35758 35910 35912 35826 35901 35904 35868 35809 35803 35888 35798 35795 35873 35892 35832 35865 35805 35877 35845 35800 35792 35899 35781 35825 35748 35767 35820 35895 35815 35922 35741 35776 35927 35833 35804 35749 35837 35799 35764 35900 35783 35801 35866 35894 35793 35789 35796 35861 35862 35864 35834 35742 35779 35787 35876 35746 35909 35807 35847 35930 35889 35924 35890 35750 35769 35898 35903 35827 35821 35806 35905 35914 35819 35852 35782 35790 35908 35811 35759 35810 35751 35818 35928 35765 35855 35744 35842 35874 35880 35780 35926 35768 35771 35788 35929 35918 35853 35931 35867 35739 35916 35920 35884 35823 35830 35921 35743 35896 35869 35775 35891 35841 35843 35824 35856 35858 35778 35851 35755 35850 35881 35854 35897 35917 35923 35754 35761 35886 35846 35919 35925 35844 35878 35766 35785 35770 35812 35860 35871 35893 35840 35791 35802 35859 35814 35828 35849 35752 35774 35808 35857 35906
+587 , 35933 , 1507 , 33 , 1 , 1 , 35932
+587 , 35934 , 1506 , 32 , 1 , 1 , 35932
+587 , 35935 , 1505 , 32 , 1 , 1 , 35932
+587 , 35936 , 1505 , 33 , 1 , 1 , 35932
+587 , 35937 , 1504 , 33 , 1 , 1 , 35932
+587 , 35938 , 1504 , 33 , 1 , 1 , 35932
+587 , 35939 , 1504 , 34 , 1 , 1 , 35932
+587 , 35940 , 1507 , 33 , 1 , 1 , 35932
+587 , 35941 , 1507 , 33 , 1 , 1 , 35932
+587 , 35942 , 1503 , 23 , 1 , 1 , 35932
+587 , 35943 , 1502 , 24 , 1 , 1 , 35932
+587 , 35944 , 1505 , 33 , 1 , 1 , 35932
+587 , 35945 , 1501 , 21 , 1 , 1 , 35932
+587 , 35946 , 1501 , 21 , 1 , 1 , 35932
+587 , 35947 , 1501 , 21 , 1 , 1 , 35932
+587 , 35948 , 1501 , 21 , 1 , 1 , 35932
+587 , 35949 , 1500 , 21 , 1 , 1 , 35932
+587 , 35950 , 1499 , 21 , 1 , 1 , 35932
+587 , 35951 , 1498 , 21 , 1 , 1 , 35932
+587 , 35952 , 1497 , 21 , 1 , 1 , 35932
+587 , 35953 , 1497 , 32 , 1 , 1 , 35932
+587 , 35954 , 1496 , 21 , 1 , 1 , 35932
+587 , 35955 , 1498 , 21 , 1 , 1 , 35932
+587 , 35956 , 1495 , 21 , 1 , 1 , 35932
+587 , 35957 , 1495 , 21 , 1 , 1 , 35932
+587 , 35958 , 1493 , 22 , 1 , 1 , 35932
+587 , 35959 , 1496 , 32 , 1 , 1 , 35932
+587 , 35960 , 1493 , 32 , 1 , 1 , 35932
+587 , 35961 , 1492 , 22 , 1 , 1 , 35932
+587 , 35962 , 1493 , 22 , 1 , 1 , 35932
+587 , 35963 , 1490 , 21 , 1 , 1 , 35932
+587 , 35964 , 1490 , 21 , 1 , 1 , 35932
+587 , 35965 , 1511 , 32 , 1 , 1 , 35932
+587 , 35966 , 1495 , 21 , 1 , 1 , 35932
+587 , 35967 , 1487 , 24 , 1 , 1 , 35932
+587 , 35968 , 1485 , 32 , 1 , 1 , 35932
+587 , 35969 , 1486 , 33 , 1 , 1 , 35932
+587 , 35970 , 1485 , 33 , 1 , 1 , 35932
+587 , 35971 , 1483 , 33 , 1 , 1 , 35932
+587 , 35972 , 1481 , 33 , 1 , 1 , 35932
+587 , 35973 , 1479 , 33 , 1 , 1 , 35932
+587 , 35974 , 1479 , 22 , 1 , 1 , 35932
+587 , 35975 , 1478 , 55 , 1 , 1 , 35932
+587 , 35976 , 1483 , 32 , 1 , 1 , 35932
+587 , 35977 , 1486 , 21 , 1 , 1 , 35932
+587 , 35978 , 1497 , 21 , 1 , 1 , 35932
+587 , 35979 , 1476 , 26 , 1 , 1 , 35932
+587 , 35980 , 1476 , 35 , 1 , 1 , 35932
+587 , 35981 , 1476 , 32 , 1 , 1 , 35932
+587 , 35982 , 1474 , 22 , 1 , 1 , 35932
+587 , 35983 , 1473 , 22 , 1 , 1 , 35932
+587 , 35984 , 1473 , 22 , 1 , 1 , 35932
+587 , 35985 , 1471 , 22 , 1 , 1 , 35932
+587 , 35986 , 1473 , 22 , 1 , 1 , 35932
+587 , 35987 , 1474 , 22 , 1 , 1 , 35932
+587 , 35988 , 1471 , 33 , 1 , 1 , 35932
+587 , 35989 , 1512 , 21 , 1 , 1 , 35932
+587 , 35990 , 1471 , 35 , 1 , 1 , 35932
+587 , 35991 , 1470 , 34 , 1 , 1 , 35932
+587 , 35992 , 1468 , 24 , 1 , 1 , 35932
+587 , 35993 , 1468 , 36 , 1 , 1 , 35932
+587 , 35994 , 1469 , 24 , 1 , 1 , 35932
+587 , 35995 , 1466 , 36 , 1 , 1 , 35932
+587 , 35996 , 1466 , 35 , 1 , 1 , 35932
+587 , 35997 , 1466 , 35 , 1 , 1 , 35932
+587 , 35998 , 1465 , 32 , 1 , 1 , 35932
+587 , 35999 , 1465 , 33 , 1 , 1 , 35932
+587 , 36000 , 1465 , 33 , 1 , 1 , 35932
+587 , 36001 , 1464 , 33 , 1 , 1 , 35932
+587 , 36002 , 1464 , 32 , 1 , 1 , 35932
+587 , 36003 , 1464 , 33 , 1 , 1 , 35932
+587 , 36004 , 1463 , 33 , 1 , 1 , 35932
+587 , 36005 , 1463 , 33 , 1 , 1 , 35932
+587 , 36006 , 1463 , 33 , 1 , 1 , 35932
+587 , 36007 , 1466 , 32 , 1 , 1 , 35932
+587 , 36008 , 1462 , 21 , 1 , 1 , 35932
+587 , 36009 , 1462 , 35 , 1 , 1 , 35932
+587 , 36010 , 1462 , 34 , 1 , 1 , 35932
+587 , 36011 , 1455 , 21 , 1 , 1 , 35932
+587 , 36012 , 1459 , 21 , 1 , 1 , 35932
+587 , 36013 , 1465 , 11 , 1 , 1 , 35932
+587 , 36014 , 1448 , 31 , 1 , 1 , 35932
+587 , 36015 , 1453 , 31 , 1 , 1 , 35932
+587 , 36016 , 1453 , 31 , 1 , 1 , 35932
+587 , 36017 , 1462 , 21 , 1 , 1 , 35932
+587 , 36018 , 1448 , 31 , 1 , 1 , 35932
+587 , 36019 , 1464 , 21 , 1 , 1 , 35932
+587 , 36020 , 1448 , 31 , 1 , 1 , 35932
+587 , 36021 , 1445 , 31 , 1 , 1 , 35932
+587 , 36022 , 1453 , 31 , 1 , 1 , 35932
+587 , 36023 , 1448 , 31 , 1 , 1 , 35932
+587 , 36024 , 1448 , 31 , 1 , 1 , 35932
+587 , 36025 , 1448 , 31 , 1 , 1 , 35932
+587 , 36026 , 1438 , 31 , 1 , 1 , 35932
+587 , 36027 , 1437 , 41 , 1 , 1 , 35932
+587 , 36028 , 1441 , 31 , 1 , 1 , 35932
+587 , 36029 , 1437 , 41 , 1 , 1 , 35932
+587 , 36030 , 1438 , 41 , 1 , 1 , 35932
+587 , 36031 , 1437 , 42 , 1 , 1 , 35932
+587 , 36032 , 1436 , 41 , 1 , 1 , 35932
+587 , 36033 , 1434 , 31 , 1 , 1 , 35932
+587 , 36034 , 1442 , 31 , 1 , 1 , 35932
+587 , 36035 , 1438 , 41 , 1 , 1 , 35932
+587 , 36036 , 1433 , 31 , 1 , 1 , 35932
+587 , 36037 , 1433 , 41 , 1 , 1 , 35932
+587 , 36038 , 1434 , 31 , 1 , 1 , 35932
+587 , 36039 , 1429 , 42 , 1 , 1 , 35932
+587 , 36040 , 1433 , 31 , 1 , 1 , 35932
+587 , 36041 , 1429 , 41 , 1 , 1 , 35932
+587 , 36042 , 1429 , 41 , 1 , 1 , 35932
+587 , 36043 , 1428 , 31 , 1 , 1 , 35932
+587 , 36044 , 1448 , 31 , 1 , 1 , 35932
+587 , 36045 , 1448 , 31 , 1 , 1 , 35932
+587 , 36046 , 1430 , 41 , 1 , 1 , 35932
+587 , 36047 , 1517 , 11 , 1 , 1 , 35932
+587 , 36048 , 1428 , 31 , 1 , 1 , 35932
+587 , 36049 , 1432 , 31 , 1 , 1 , 35932
+587 , 36050 , 1426 , 31 , 1 , 1 , 35932
+587 , 36051 , 1427 , 31 , 1 , 1 , 35932
+587 , 36052 , 1426 , 31 , 1 , 1 , 35932
+587 , 36053 , 1424 , 31 , 1 , 1 , 35932
+587 , 36054 , 1420 , 31 , 1 , 1 , 35932
+587 , 36055 , 1425 , 31 , 1 , 1 , 35932
+587 , 36056 , 1423 , 31 , 1 , 1 , 35932
+587 , 36057 , 1419 , 31 , 1 , 1 , 35932
+587 , 36058 , 1420 , 31 , 1 , 1 , 35932
+587 , 36059 , 1419 , 31 , 1 , 1 , 35932
+587 , 36060 , 1419 , 21 , 1 , 1 , 35932
+587 , 36061 , 1419 , 21 , 1 , 1 , 35932
+587 , 36062 , 1416 , 21 , 1 , 1 , 35932
+587 , 36063 , 1419 , 31 , 1 , 1 , 35932
+587 , 36064 , 1416 , 21 , 1 , 1 , 35932
+587 , 36065 , 1447 , 31 , 1 , 1 , 35932
+587 , 36066 , 1419 , 21 , 1 , 1 , 35932
+587 , 36067 , 1419 , 21 , 1 , 1 , 35932
+587 , 36068 , 1416 , 21 , 1 , 1 , 35932
+587 , 36069 , 1416 , 11 , 1 , 1 , 35932
+587 , 36070 , 1416 , 11 , 1 , 1 , 35932
+587 , 36071 , 1416 , 11 , 1 , 1 , 35932
+587 , 36072 , 1416 , 11 , 1 , 1 , 35932
+587 , 36073 , 1416 , 11 , 1 , 1 , 35932
+587 , 36074 , 1416 , 11 , 1 , 1 , 35932
+587 , 36075 , 1416 , 21 , 1 , 1 , 35932
+587 , 36076 , 2094 , 21 , 1 , 1 , 35932
+587 , 36077 , 2094 , 22 , 1 , 1 , 35932
+587 , 36078 , 2093 , 22 , 1 , 1 , 35932
+587 , 36079 , 2093 , 22 , 1 , 1 , 35932
+587 , 36080 , 2092 , 22 , 1 , 1 , 35932
+587 , 36081 , 2092 , 21 , 1 , 1 , 35932
+587 , 36082 , 2092 , 21 , 1 , 1 , 35932
+587 , 36083 , 2100 , 32 , 1 , 1 , 35932
+587 , 36084 , 2091 , 22 , 1 , 1 , 35932
+587 , 36085 , 2091 , 32 , 1 , 1 , 35932
+587 , 36086 , 2091 , 32 , 1 , 1 , 35932
+587 , 36087 , 2101 , 21 , 1 , 1 , 35932
+587 , 36088 , 2089 , 21 , 1 , 1 , 35932
+587 , 36089 , 2095 , 21 , 1 , 1 , 35932
+587 , 36090 , 2105 , 32 , 1 , 1 , 35932
+587 , 36091 , 2089 , 21 , 1 , 1 , 35932
+587 , 36092 , 2086 , 21 , 1 , 1 , 35932
+587 , 36093 , 2083 , 22 , 1 , 1 , 35932
+587 , 36094 , 2086 , 21 , 1 , 1 , 35932
+587 , 36095 , 2082 , 22 , 1 , 1 , 35932
+587 , 36096 , 2083 , 22 , 1 , 1 , 35932
+587 , 36097 , 2083 , 22 , 1 , 1 , 35932
+587 , 36098 , 2078 , 21 , 1 , 1 , 35932
+587 , 36099 , 2078 , 21 , 1 , 1 , 35932
+587 , 36100 , 2078 , 24 , 1 , 1 , 35932
+587 , 36101 , 2085 , 21 , 1 , 1 , 35932
+587 , 36102 , 2075 , 32 , 1 , 1 , 35932
+587 , 36103 , 2074 , 32 , 1 , 1 , 35932
+587 , 36104 , 2093 , 21 , 1 , 1 , 35932
+587 , 36105 , 2082 , 22 , 1 , 1 , 35932
+587 , 36106 , 2082 , 22 , 1 , 1 , 35932
+587 , 36107 , 2071 , 32 , 1 , 1 , 35932
+587 , 36108 , 2070 , 22 , 1 , 1 , 35932
+587 , 36109 , 2072 , 25 , 1 , 1 , 35932
+587 , 36110 , 2069 , 32 , 1 , 1 , 35932
+587 , 36111 , 2068 , 23 , 1 , 1 , 35932
+587 , 36112 , 2075 , 32 , 1 , 1 , 35932
+587 , 36113 , 2066 , 32 , 1 , 1 , 35932
+587 , 36114 , 2069 , 32 , 1 , 1 , 35932
+587 , 36115 , 2065 , 32 , 1 , 1 , 35932
+587 , 36116 , 2064 , 32 , 1 , 1 , 35932
+587 , 36117 , 2064 , 33 , 1 , 1 , 35932
+587 , 36118 , 2062 , 24 , 1 , 1 , 35932
+587 , 36119 , 2061 , 24 , 1 , 1 , 35932
+587 , 36120 , 2060 , 34 , 1 , 1 , 35932
+587 , 36121 , 2060 , 35 , 1 , 1 , 35932
+587 , 36122 , 2059 , 36 , 1 , 1 , 35932
+587 , 36123 , 2058 , 24 , 1 , 1 , 35932
+587 , 36124 , 2058 , 24 , 1 , 1 , 35932
+587 , 36125 , 2056 , 32 , 1 , 1 , 35932
+587 , 36126 , 2201 , 21 , 1 , 1 , 35993 35992 36109 35996 36018 35977 36040 35971 36107 35986 35933 36074 36101 36031 35937 36043 35991 35946 36095 36036 35968 36028 36044 36004 36068 35959 35960 35976 36053 36034 35945 36110 35988 35952 36090 35967 36087 36016 36080 36097 36066 35965 35995 36084 36005 36056 36065 36003 36061 36083 35966 36103 36002 35934 35941 36069 36067 35951 35961 36059 35939 36042 36062 36079 36006 35950 36122 36050 36077 35943 35978 36089 36011 35969 36026 35962 35980 36085 36023 36082 35990 35963 36029 35998 36081 36116 36009 36064 36070 35972 35953 36045 36020 36019 36012 35984 36038 36054 36001 36063 35981 35983 36058 36071 36120 35956 35975 36049 35974 35958 35944 35957 36086 36039 36125 35982 36108 36096 35979 36007 36118 36100 36105 35973 36057 36075 36055 35955 36030 36111 36060 36032 35940 35935 36119 35936 36051 36033 36115 35997 36047 36091 36124 35964 36014 36052 36093 36117 36024 36035 35942 36121 36113 35947 36078 36015 36025 36013 36041 36021 36088 36022 36092 36073 35989 35999 36076 36008 36046 36000 36102 36094 36027 35994 36010 35938 35970 36112 36048 36017 36104 36123 36037 35985 36098 36099 36114 35954 35948 36106 35987 36072 35949
+588 , 36127 , 4 , 164 , 1 , 1 ,
+588 , 36128 , 4 , 184 , 1 , 1 ,
+588 , 36129 , 4 , 215 , 1 , 1 ,
+588 , 36130 , 4 , 215 , 1 , 1 ,
+588 , 36131 , 4 , 194 , 1 , 1 ,
+588 , 36132 , 4 , 194 , 1 , 1 ,
+588 , 36133 , 4 , 194 , 1 , 1 ,
+588 , 36134 , 4 , 205 , 1 , 1 ,
+588 , 36135 , 4 , 184 , 1 , 1 ,
+588 , 36136 , 4 , 174 , 1 , 1 ,
+588 , 36137 , 233 , 41 , 1 , 1 , 36136 36133 36130 36128 36135 36131 36134 36132 36127 36129
+589 , 36138 , 58 , 92 , 1 , 1 ,
+589 , 36139 , 56 , 82 , 1 , 1 ,
+589 , 36140 , 56 , 103 , 1 , 1 ,
+589 , 36141 , 55 , 103 , 1 , 1 ,
+589 , 36142 , 55 , 113 , 1 , 1 ,
+589 , 36143 , 55 , 113 , 1 , 1 ,
+589 , 36144 , 55 , 113 , 1 , 1 ,
+589 , 36145 , 55 , 123 , 1 , 1 ,
+589 , 36146 , 55 , 113 , 1 , 1 ,
+589 , 36147 , 55 , 103 , 1 , 1 ,
+589 , 36148 , 55 , 103 , 1 , 1 ,
+589 , 36149 , 54 , 103 , 1 , 1 ,
+589 , 36150 , 53 , 103 , 1 , 1 ,
+589 , 36151 , 53 , 113 , 1 , 1 ,
+589 , 36152 , 53 , 113 , 1 , 1 ,
+589 , 36153 , 53 , 103 , 1 , 1 ,
+589 , 36154 , 53 , 113 , 1 , 1 ,
+589 , 36155 , 53 , 103 , 1 , 1 ,
+589 , 36156 , 53 , 103 , 1 , 1 ,
+589 , 36157 , 53 , 103 , 1 , 1 ,
+589 , 36158 , 192 , 31 , 1 , 1 , 36139 36156 36146 36147 36149 36145 36157 36141 36151 36140 36138 36153 36152 36154 36155 36142 36144 36148 36150 36143
+590 , 36159 , 7 , 92 , 1 , 1 ,
+590 , 36160 , 7 , 82 , 1 , 1 ,
+590 , 36161 , 4 , 92 , 1 , 1 ,
+590 , 36162 , 4 , 103 , 1 , 1 ,
+590 , 36163 , 4 , 113 , 1 , 1 ,
+590 , 36164 , 4 , 113 , 1 , 1 ,
+590 , 36165 , 4 , 113 , 1 , 1 ,
+590 , 36166 , 4 , 123 , 1 , 1 ,
+590 , 36167 , 4 , 113 , 1 , 1 ,
+590 , 36168 , 4 , 92 , 1 , 1 ,
+590 , 36169 , 2 , 92 , 1 , 1 ,
+590 , 36170 , 2 , 103 , 1 , 1 ,
+590 , 36171 , 2 , 92 , 1 , 1 ,
+590 , 36172 , 2 , 103 , 1 , 1 ,
+590 , 36173 , 2 , 103 , 1 , 1 ,
+590 , 36174 , 2 , 113 , 1 , 1 ,
+590 , 36175 , 2 , 113 , 1 , 1 ,
+590 , 36176 , 2 , 103 , 1 , 1 ,
+590 , 36177 , 2 , 103 , 1 , 1 ,
+590 , 36178 , 2 , 93 , 1 , 1 ,
+590 , 36179 , 140 , 31 , 1 , 1 , 36166 36169 36171 36173 36162 36161 36172 36165 36168 36160 36175 36174 36170 36164 36163 36167 36176 36159 36178 36177
+591 , 36180 , 4 , 11 , 1 , 1 ,
+591 , 36181 , 95 , 52 , 1 , 1 , 36180
+591 , 36182 , 109 , 41 , 1 , 1 , 36180
+591 , 36183 , 109 , 51 , 1 , 1 , 36180
+591 , 36184 , 108 , 41 , 1 , 1 , 36180
+591 , 36185 , 108 , 41 , 1 , 1 , 36180
+591 , 36186 , 107 , 41 , 1 , 1 , 36180
+591 , 36187 , 107 , 41 , 1 , 1 , 36180
+591 , 36188 , 106 , 41 , 1 , 1 , 36180
+591 , 36189 , 106 , 41 , 1 , 1 , 36180
+591 , 36190 , 106 , 41 , 1 , 1 , 36180
+591 , 36191 , 105 , 41 , 1 , 1 , 36180
+591 , 36192 , 105 , 52 , 1 , 1 , 36180
+591 , 36193 , 101 , 52 , 1 , 1 , 36180
+591 , 36194 , 99 , 52 , 1 , 1 , 36180
+591 , 36195 , 96 , 52 , 1 , 1 , 36180
+591 , 36196 , 96 , 52 , 1 , 1 , 36180
+591 , 36197 , 95 , 52 , 1 , 1 , 36180
+591 , 36198 , 95 , 52 , 1 , 1 , 36180
+591 , 36199 , 95 , 52 , 1 , 1 , 36180
+591 , 36200 , 94 , 52 , 1 , 1 , 36180
+591 , 36201 , 94 , 52 , 1 , 1 , 36180
+591 , 36202 , 94 , 52 , 1 , 1 , 36180
+591 , 36203 , 93 , 52 , 1 , 1 , 36180
+591 , 36204 , 93 , 52 , 1 , 1 , 36180
+591 , 36205 , 93 , 52 , 1 , 1 , 36180
+591 , 36206 , 91 , 52 , 1 , 1 , 36180
+591 , 36207 , 87 , 52 , 1 , 1 , 36180
+591 , 36208 , 86 , 41 , 1 , 1 , 36180
+591 , 36209 , 85 , 52 , 1 , 1 , 36180
+591 , 36210 , 85 , 52 , 1 , 1 , 36180
+591 , 36211 , 85 , 62 , 1 , 1 , 36180
+591 , 36212 , 83 , 41 , 1 , 1 , 36180
+591 , 36213 , 81 , 52 , 1 , 1 , 36180
+591 , 36214 , 91 , 87 , 1 , 1 , 36180
+591 , 36215 , 91 , 80 , 1 , 1 , 36180
+591 , 36216 , 91 , 80 , 1 , 1 , 36180
+591 , 36217 , 91 , 102 , 1 , 1 , 36180
+591 , 36218 , 91 , 80 , 1 , 1 , 36180
+591 , 36219 , 91 , 102 , 1 , 1 , 36180
+591 , 36220 , 91 , 81 , 1 , 1 , 36180
+591 , 36221 , 91 , 76 , 1 , 1 , 36180
+591 , 36222 , 80 , 254 , 1 , 1 , 36180
+591 , 36223 , 80 , 244 , 1 , 1 , 36180
+591 , 36224 , 80 , 244 , 1 , 1 , 36180
+591 , 36225 , 80 , 244 , 1 , 1 , 36180
+591 , 36226 , 80 , 254 , 1 , 1 , 36180
+591 , 36227 , 80 , 244 , 1 , 1 , 36180
+591 , 36228 , 79 , 234 , 1 , 1 , 36180
+591 , 36229 , 79 , 244 , 1 , 1 , 36180
+591 , 36230 , 79 , 239 , 1 , 1 , 36180
+591 , 36231 , 79 , 224 , 1 , 1 , 36180
+591 , 36232 , 79 , 244 , 1 , 1 , 36180
+591 , 36233 , 79 , 244 , 1 , 1 , 36180
+591 , 36234 , 79 , 244 , 1 , 1 , 36180
+591 , 36235 , 79 , 244 , 1 , 1 , 36180
+591 , 36236 , 79 , 245 , 1 , 1 , 36180
+591 , 36237 , 79 , 234 , 1 , 1 , 36180
+591 , 36238 , 71 , 327 , 1 , 1 , 36180
+591 , 36239 , 71 , 248 , 1 , 1 , 36180
+591 , 36240 , 71 , 232 , 1 , 1 , 36180
+591 , 36241 , 70 , 237 , 1 , 1 , 36180
+591 , 36242 , 70 , 249 , 1 , 1 , 36180
+591 , 36243 , 70 , 248 , 1 , 1 , 36180
+591 , 36244 , 69 , 294 , 1 , 1 , 36180
+591 , 36245 , 69 , 239 , 1 , 1 , 36180
+591 , 36246 , 69 , 249 , 1 , 1 , 36180
+591 , 36247 , 68 , 316 , 1 , 1 , 36180
+591 , 36248 , 68 , 250 , 1 , 1 , 36180
+591 , 36249 , 68 , 249 , 1 , 1 , 36180
+591 , 36250 , 67 , 249 , 1 , 1 , 36180
+591 , 36251 , 67 , 281 , 1 , 1 , 36180
+591 , 36252 , 66 , 238 , 1 , 1 , 36180
+591 , 36253 , 66 , 249 , 1 , 1 , 36180
+591 , 36254 , 66 , 239 , 1 , 1 , 36180
+591 , 36255 , 65 , 313 , 1 , 1 , 36180
+591 , 36256 , 65 , 258 , 1 , 1 , 36180
+591 , 36257 , 65 , 244 , 1 , 1 , 36180
+591 , 36258 , 64 , 262 , 1 , 1 , 36180
+591 , 36259 , 64 , 259 , 1 , 1 , 36180
+591 , 36260 , 64 , 283 , 1 , 1 , 36180
+591 , 36261 , 63 , 244 , 1 , 1 , 36180
+591 , 36262 , 63 , 260 , 1 , 1 , 36180
+591 , 36263 , 63 , 307 , 1 , 1 , 36180
+591 , 36264 , 63 , 255 , 1 , 1 , 36180
+591 , 36265 , 62 , 244 , 1 , 1 , 36180
+591 , 36266 , 61 , 262 , 1 , 1 , 36180
+591 , 36267 , 61 , 336 , 1 , 1 , 36180
+591 , 36268 , 61 , 260 , 1 , 1 , 36180
+591 , 36269 , 61 , 237 , 1 , 1 , 36180
+591 , 36270 , 60 , 249 , 1 , 1 , 36180
+591 , 36271 , 60 , 304 , 1 , 1 , 36180
+591 , 36272 , 60 , 249 , 1 , 1 , 36180
+591 , 36273 , 59 , 260 , 1 , 1 , 36180
+591 , 36274 , 59 , 249 , 1 , 1 , 36180
+591 , 36275 , 59 , 249 , 1 , 1 , 36180
+591 , 36276 , 59 , 238 , 1 , 1 , 36180
+591 , 36277 , 59 , 261 , 1 , 1 , 36180
+591 , 36278 , 58 , 250 , 1 , 1 , 36180
+591 , 36279 , 58 , 302 , 1 , 1 , 36180
+591 , 36280 , 58 , 238 , 1 , 1 , 36180
+591 , 36281 , 57 , 249 , 1 , 1 , 36180
+591 , 36282 , 57 , 250 , 1 , 1 , 36180
+591 , 36283 , 57 , 327 , 1 , 1 , 36180
+591 , 36284 , 56 , 284 , 1 , 1 , 36180
+591 , 36285 , 56 , 250 , 1 , 1 , 36180
+591 , 36286 , 56 , 237 , 1 , 1 , 36180
+591 , 36287 , 55 , 295 , 1 , 1 , 36180
+591 , 36288 , 55 , 253 , 1 , 1 , 36180
+591 , 36289 , 55 , 253 , 1 , 1 , 36180
+591 , 36290 , 54 , 246 , 1 , 1 , 36180
+591 , 36291 , 54 , 234 , 1 , 1 , 36180
+591 , 36292 , 54 , 300 , 1 , 1 , 36180
+591 , 36293 , 53 , 234 , 1 , 1 , 36180
+591 , 36294 , 53 , 329 , 1 , 1 , 36180
+591 , 36295 , 53 , 243 , 1 , 1 , 36180
+591 , 36296 , 52 , 247 , 1 , 1 , 36180
+591 , 36297 , 52 , 243 , 1 , 1 , 36180
+591 , 36298 , 52 , 272 , 1 , 1 , 36180
+591 , 36299 , 51 , 244 , 1 , 1 , 36180
+591 , 36300 , 51 , 267 , 1 , 1 , 36180
+591 , 36301 , 51 , 261 , 1 , 1 , 36180
+591 , 36302 , 81 , 52 , 1 , 1 , 36180
+591 , 36303 , 81 , 62 , 1 , 1 , 36180
+591 , 36304 , 81 , 52 , 1 , 1 , 36180
+591 , 36305 , 81 , 62 , 1 , 1 , 36180
+591 , 36306 , 81 , 52 , 1 , 1 , 36180
+591 , 36307 , 80 , 52 , 1 , 1 , 36180
+591 , 36308 , 80 , 52 , 1 , 1 , 36180
+591 , 36309 , 80 , 52 , 1 , 1 , 36180
+591 , 36310 , 78 , 42 , 1 , 1 , 36180
+591 , 36311 , 76 , 62 , 1 , 1 , 36180
+591 , 36312 , 75 , 41 , 1 , 1 , 36180
+591 , 36313 , 75 , 41 , 1 , 1 , 36180
+591 , 36314 , 75 , 41 , 1 , 1 , 36180
+591 , 36315 , 75 , 41 , 1 , 1 , 36180
+591 , 36316 , 75 , 62 , 1 , 1 , 36180
+591 , 36317 , 74 , 52 , 1 , 1 , 36180
+591 , 36318 , 74 , 52 , 1 , 1 , 36180
+591 , 36319 , 74 , 62 , 1 , 1 , 36180
+591 , 36320 , 71 , 52 , 1 , 1 , 36180
+591 , 36321 , 69 , 52 , 1 , 1 , 36180
+591 , 36322 , 67 , 52 , 1 , 1 , 36180
+591 , 36323 , 66 , 52 , 1 , 1 , 36180
+591 , 36324 , 66 , 52 , 1 , 1 , 36180
+591 , 36325 , 66 , 62 , 1 , 1 , 36180
+591 , 36326 , 66 , 52 , 1 , 1 , 36180
+591 , 36327 , 65 , 62 , 1 , 1 , 36180
+591 , 36328 , 64 , 52 , 1 , 1 , 36180
+591 , 36329 , 63 , 52 , 1 , 1 , 36180
+591 , 36330 , 60 , 62 , 1 , 1 , 36180
+591 , 36331 , 58 , 62 , 1 , 1 , 36180
+591 , 36332 , 56 , 52 , 1 , 1 , 36180
+591 , 36333 , 55 , 52 , 1 , 1 , 36180
+591 , 36334 , 55 , 62 , 1 , 1 , 36180
+591 , 36335 , 55 , 62 , 1 , 1 , 36180
+591 , 36336 , 54 , 62 , 1 , 1 , 36180
+591 , 36337 , 54 , 62 , 1 , 1 , 36180
+591 , 36338 , 53 , 52 , 1 , 1 , 36180
+591 , 36339 , 53 , 41 , 1 , 1 , 36180
+591 , 36340 , 49 , 41 , 1 , 1 , 36180
+591 , 36341 , 47 , 41 , 1 , 1 , 36180
+591 , 36342 , 44 , 41 , 1 , 1 , 36180
+591 , 36343 , 44 , 41 , 1 , 1 , 36180
+591 , 36344 , 43 , 41 , 1 , 1 , 36180
+591 , 36345 , 43 , 42 , 1 , 1 , 36180
+591 , 36346 , 43 , 41 , 1 , 1 , 36180
+591 , 36347 , 43 , 42 , 1 , 1 , 36180
+591 , 36348 , 42 , 42 , 1 , 1 , 36180
+591 , 36349 , 41 , 41 , 1 , 1 , 36180
+591 , 36350 , 37 , 42 , 1 , 1 , 36180
+591 , 36351 , 35 , 52 , 1 , 1 , 36180
+591 , 36352 , 32 , 41 , 1 , 1 , 36180
+591 , 36353 , 32 , 42 , 1 , 1 , 36180
+591 , 36354 , 32 , 42 , 1 , 1 , 36180
+591 , 36355 , 32 , 52 , 1 , 1 , 36180
+591 , 36356 , 32 , 41 , 1 , 1 , 36180
+591 , 36357 , 32 , 41 , 1 , 1 , 36180
+591 , 36358 , 31 , 41 , 1 , 1 , 36180
+591 , 36359 , 31 , 41 , 1 , 1 , 36180
+591 , 36360 , 29 , 52 , 1 , 1 , 36180
+591 , 36361 , 29 , 42 , 1 , 1 , 36180
+591 , 36362 , 28 , 41 , 1 , 1 , 36180
+591 , 36363 , 28 , 52 , 1 , 1 , 36180
+591 , 36364 , 28 , 52 , 1 , 1 , 36180
+591 , 36365 , 28 , 52 , 1 , 1 , 36180
+591 , 36366 , 28 , 41 , 1 , 1 , 36180
+591 , 36367 , 28 , 41 , 1 , 1 , 36180
+591 , 36368 , 28 , 52 , 1 , 1 , 36180
+591 , 36369 , 28 , 52 , 1 , 1 , 36180
+591 , 36370 , 28 , 41 , 1 , 1 , 36180
+591 , 36371 , 28 , 42 , 1 , 1 , 36180
+591 , 36372 , 28 , 52 , 1 , 1 , 36180
+591 , 36373 , 28 , 41 , 1 , 1 , 36180
+591 , 36374 , 430 , 0 , 1 , 1 , 36226 36237 36269 36366 36191 36215 36242 36199 36249 36286 36328 36225 36337 36372 36323 36187 36236 36339 36299 36335 36348 36182 36234 36229 36342 36232 36208 36218 36310 36309 36186 36272 36227 36271 36284 36273 36329 36301 36209 36202 36362 36257 36213 36302 36363 36304 36361 36369 36367 36204 36321 36359 36263 36281 36293 36308 36205 36256 36345 36248 36185 36276 36246 36307 36320 36352 36184 36373 36211 36287 36222 36253 36252 36274 36247 36347 36314 36312 36181 36212 36239 36216 36297 36206 36285 36351 36264 36262 36193 36340 36355 36243 36295 36277 36266 36358 36306 36305 36327 36365 36334 36228 36346 36371 36322 36196 36288 36265 36317 36296 36219 36292 36316 36250 36357 36324 36294 36241 36313 36278 36198 36223 36279 36244 36190 36203 36326 36189 36245 36233 36332 36270 36267 36350 36201 36231 36331 36230 36311 36338 36341 36254 36255 36197 36298 36217 36221 36251 36224 36360 36260 36289 36238 36207 36283 36210 36300 36192 36353 36318 36333 36330 36356 36319 36336 36195 36200 36280 36240 36291 36370 36268 36343 36261 36258 36275 36259 36188 36325 36354 36349 36183 36194 36368 36214 36303 36282 36344 36290 36315 36235 36220 36364
+591 , 36375 , 548 , 42 , 1 , 1 , 36374
+591 , 36376 , 548 , 41 , 1 , 1 , 36374
+591 , 36377 , 548 , 41 , 1 , 1 , 36374
+591 , 36378 , 547 , 41 , 1 , 1 , 36374
+591 , 36379 , 560 , 32 , 1 , 1 , 36374
+591 , 36380 , 560 , 32 , 1 , 1 , 36374
+591 , 36381 , 543 , 41 , 1 , 1 , 36374
+591 , 36382 , 543 , 31 , 1 , 1 , 36374
+591 , 36383 , 543 , 31 , 1 , 1 , 36374
+591 , 36384 , 541 , 32 , 1 , 1 , 36374
+591 , 36385 , 555 , 32 , 1 , 1 , 36374
+591 , 36386 , 538 , 42 , 1 , 1 , 36374
+591 , 36387 , 538 , 31 , 1 , 1 , 36374
+591 , 36388 , 566 , 31 , 1 , 1 , 36374
+591 , 36389 , 565 , 31 , 1 , 1 , 36374
+591 , 36390 , 570 , 32 , 1 , 1 , 36374
+591 , 36391 , 561 , 31 , 1 , 1 , 36374
+591 , 36392 , 569 , 32 , 1 , 1 , 36374
+591 , 36393 , 573 , 32 , 1 , 1 , 36374
+591 , 36394 , 570 , 32 , 1 , 1 , 36374
+591 , 36395 , 567 , 32 , 1 , 1 , 36374
+591 , 36396 , 574 , 32 , 1 , 1 , 36374
+591 , 36397 , 578 , 32 , 1 , 1 , 36374
+591 , 36398 , 572 , 41 , 1 , 1 , 36374
+591 , 36399 , 571 , 31 , 1 , 1 , 36374
+591 , 36400 , 574 , 32 , 1 , 1 , 36374
+591 , 36401 , 569 , 41 , 1 , 1 , 36374
+591 , 36402 , 538 , 41 , 1 , 1 , 36374
+591 , 36403 , 537 , 41 , 1 , 1 , 36374
+591 , 36404 , 537 , 41 , 1 , 1 , 36374
+591 , 36405 , 552 , 32 , 1 , 1 , 36374
+591 , 36406 , 533 , 42 , 1 , 1 , 36374
+591 , 36407 , 532 , 31 , 1 , 1 , 36374
+591 , 36408 , 543 , 41 , 1 , 1 , 36374
+591 , 36409 , 538 , 32 , 1 , 1 , 36374
+591 , 36410 , 538 , 32 , 1 , 1 , 36374
+591 , 36411 , 556 , 32 , 1 , 1 , 36374
+591 , 36412 , 547 , 31 , 1 , 1 , 36374
+591 , 36413 , 537 , 41 , 1 , 1 , 36374
+591 , 36414 , 537 , 41 , 1 , 1 , 36374
+591 , 36415 , 535 , 32 , 1 , 1 , 36374
+591 , 36416 , 534 , 32 , 1 , 1 , 36374
+591 , 36417 , 532 , 42 , 1 , 1 , 36374
+591 , 36418 , 532 , 41 , 1 , 1 , 36374
+591 , 36419 , 530 , 32 , 1 , 1 , 36374
+591 , 36420 , 529 , 41 , 1 , 1 , 36374
+591 , 36421 , 527 , 52 , 1 , 1 , 36374
+591 , 36422 , 526 , 31 , 1 , 1 , 36374
+591 , 36423 , 524 , 42 , 1 , 1 , 36374
+591 , 36424 , 522 , 32 , 1 , 1 , 36374
+591 , 36425 , 518 , 41 , 1 , 1 , 36374
+591 , 36426 , 512 , 21 , 1 , 1 , 36374
+591 , 36427 , 524 , 42 , 1 , 1 , 36374
+591 , 36428 , 521 , 52 , 1 , 1 , 36374
+591 , 36429 , 514 , 52 , 1 , 1 , 36374
+591 , 36430 , 513 , 52 , 1 , 1 , 36374
+591 , 36431 , 516 , 52 , 1 , 1 , 36374
+591 , 36432 , 524 , 52 , 1 , 1 , 36374
+591 , 36433 , 506 , 52 , 1 , 1 , 36374
+591 , 36434 , 506 , 62 , 1 , 1 , 36374
+591 , 36435 , 506 , 62 , 1 , 1 , 36374
+591 , 36436 , 504 , 52 , 1 , 1 , 36374
+591 , 36437 , 504 , 52 , 1 , 1 , 36374
+591 , 36438 , 501 , 62 , 1 , 1 , 36374
+591 , 36439 , 501 , 62 , 1 , 1 , 36374
+591 , 36440 , 500 , 62 , 1 , 1 , 36374
+591 , 36441 , 496 , 52 , 1 , 1 , 36374
+591 , 36442 , 495 , 41 , 1 , 1 , 36374
+591 , 36443 , 494 , 52 , 1 , 1 , 36374
+591 , 36444 , 493 , 62 , 1 , 1 , 36374
+591 , 36445 , 491 , 62 , 1 , 1 , 36374
+591 , 36446 , 491 , 52 , 1 , 1 , 36374
+591 , 36447 , 574 , 31 , 1 , 1 , 36374
+591 , 36448 , 573 , 32 , 1 , 1 , 36374
+591 , 36449 , 579 , 31 , 1 , 1 , 36374
+591 , 36450 , 570 , 31 , 1 , 1 , 36374
+591 , 36451 , 574 , 31 , 1 , 1 , 36374
+591 , 36452 , 594 , 21 , 1 , 1 , 36374
+591 , 36453 , 594 , 32 , 1 , 1 , 36374
+591 , 36454 , 594 , 11 , 1 , 1 , 36374
+591 , 36455 , 566 , 32 , 1 , 1 , 36374
+591 , 36456 , 594 , 11 , 1 , 1 , 36374
+591 , 36457 , 594 , 32 , 1 , 1 , 36374
+591 , 36458 , 592 , 21 , 1 , 1 , 36374
+591 , 36459 , 590 , 21 , 1 , 1 , 36374
+591 , 36460 , 589 , 21 , 1 , 1 , 36374
+591 , 36461 , 589 , 21 , 1 , 1 , 36374
+591 , 36462 , 589 , 32 , 1 , 1 , 36374
+591 , 36463 , 587 , 21 , 1 , 1 , 36374
+591 , 36464 , 586 , 21 , 1 , 1 , 36374
+591 , 36465 , 585 , 21 , 1 , 1 , 36374
+591 , 36466 , 586 , 21 , 1 , 1 , 36374
+591 , 36467 , 585 , 21 , 1 , 1 , 36374
+591 , 36468 , 582 , 31 , 1 , 1 , 36374
+591 , 36469 , 582 , 21 , 1 , 1 , 36374
+591 , 36470 , 582 , 21 , 1 , 1 , 36374
+591 , 36471 , 582 , 21 , 1 , 1 , 36374
+591 , 36472 , 580 , 21 , 1 , 1 , 36374
+591 , 36473 , 579 , 21 , 1 , 1 , 36374
+591 , 36474 , 579 , 31 , 1 , 1 , 36374
+591 , 36475 , 578 , 21 , 1 , 1 , 36374
+591 , 36476 , 576 , 31 , 1 , 1 , 36374
+591 , 36477 , 575 , 31 , 1 , 1 , 36374
+591 , 36478 , 578 , 32 , 1 , 1 , 36374
+591 , 36479 , 566 , 32 , 1 , 1 , 36374
+591 , 36480 , 565 , 31 , 1 , 1 , 36374
+591 , 36481 , 561 , 41 , 1 , 1 , 36374
+591 , 36482 , 560 , 31 , 1 , 1 , 36374
+591 , 36483 , 566 , 31 , 1 , 1 , 36374
+591 , 36484 , 570 , 31 , 1 , 1 , 36374
+591 , 36485 , 560 , 31 , 1 , 1 , 36374
+591 , 36486 , 560 , 32 , 1 , 1 , 36374
+591 , 36487 , 560 , 31 , 1 , 1 , 36374
+591 , 36488 , 578 , 31 , 1 , 1 , 36374
+591 , 36489 , 559 , 31 , 1 , 1 , 36374
+591 , 36490 , 556 , 32 , 1 , 1 , 36374
+591 , 36491 , 560 , 42 , 1 , 1 , 36374
+591 , 36492 , 491 , 52 , 1 , 1 , 36374
+591 , 36493 , 490 , 62 , 1 , 1 , 36374
+591 , 36494 , 490 , 62 , 1 , 1 , 36374
+591 , 36495 , 490 , 52 , 1 , 1 , 36374
+591 , 36496 , 483 , 62 , 1 , 1 , 36374
+591 , 36497 , 481 , 72 , 1 , 1 , 36374
+591 , 36498 , 481 , 62 , 1 , 1 , 36374
+591 , 36499 , 489 , 32 , 1 , 1 , 36374
+591 , 36500 , 496 , 32 , 1 , 1 , 36374
+591 , 36501 , 499 , 32 , 1 , 1 , 36374
+591 , 36502 , 497 , 32 , 1 , 1 , 36374
+591 , 36503 , 488 , 32 , 1 , 1 , 36374
+591 , 36504 , 477 , 32 , 1 , 1 , 36374
+591 , 36505 , 511 , 32 , 1 , 1 , 36374
+591 , 36506 , 490 , 32 , 1 , 1 , 36374
+591 , 36507 , 511 , 32 , 1 , 1 , 36374
+591 , 36508 , 469 , 32 , 1 , 1 , 36374
+591 , 36509 , 481 , 52 , 1 , 1 , 36374
+591 , 36510 , 480 , 52 , 1 , 1 , 36374
+591 , 36511 , 480 , 52 , 1 , 1 , 36374
+591 , 36512 , 480 , 41 , 1 , 1 , 36374
+591 , 36513 , 480 , 52 , 1 , 1 , 36374
+591 , 36514 , 480 , 52 , 1 , 1 , 36374
+591 , 36515 , 480 , 72 , 1 , 1 , 36374
+591 , 36516 , 479 , 62 , 1 , 1 , 36374
+591 , 36517 , 476 , 62 , 1 , 1 , 36374
+591 , 36518 , 476 , 62 , 1 , 1 , 36374
+591 , 36519 , 476 , 52 , 1 , 1 , 36374
+591 , 36520 , 475 , 52 , 1 , 1 , 36374
+591 , 36521 , 475 , 42 , 1 , 1 , 36374
+591 , 36522 , 475 , 41 , 1 , 1 , 36374
+591 , 36523 , 475 , 52 , 1 , 1 , 36374
+591 , 36524 , 475 , 31 , 1 , 1 , 36374
+591 , 36525 , 475 , 41 , 1 , 1 , 36374
+591 , 36526 , 473 , 51 , 1 , 1 , 36374
+591 , 36527 , 471 , 42 , 1 , 1 , 36374
+591 , 36528 , 470 , 52 , 1 , 1 , 36374
+591 , 36529 , 470 , 31 , 1 , 1 , 36374
+591 , 36530 , 470 , 41 , 1 , 1 , 36374
+591 , 36531 , 470 , 52 , 1 , 1 , 36374
+591 , 36532 , 470 , 52 , 1 , 1 , 36374
+591 , 36533 , 470 , 21 , 1 , 1 , 36374
+591 , 36534 , 470 , 42 , 1 , 1 , 36374
+591 , 36535 , 470 , 52 , 1 , 1 , 36374
+591 , 36536 , 469 , 42 , 1 , 1 , 36374
+591 , 36537 , 466 , 41 , 1 , 1 , 36374
+591 , 36538 , 465 , 41 , 1 , 1 , 36374
+591 , 36539 , 465 , 21 , 1 , 1 , 36374
+591 , 36540 , 464 , 21 , 1 , 1 , 36374
+591 , 36541 , 464 , 21 , 1 , 1 , 36374
+591 , 36542 , 464 , 21 , 1 , 1 , 36374
+591 , 36543 , 464 , 31 , 1 , 1 , 36374
+591 , 36544 , 464 , 21 , 1 , 1 , 36374
+591 , 36545 , 464 , 31 , 1 , 1 , 36374
+591 , 36546 , 463 , 21 , 1 , 1 , 36374
+591 , 36547 , 461 , 21 , 1 , 1 , 36374
+591 , 36548 , 459 , 21 , 1 , 1 , 36374
+591 , 36549 , 459 , 21 , 1 , 1 , 36374
+591 , 36550 , 459 , 21 , 1 , 1 , 36374
+591 , 36551 , 459 , 21 , 1 , 1 , 36374
+591 , 36552 , 459 , 21 , 1 , 1 , 36374
+591 , 36553 , 459 , 21 , 1 , 1 , 36374
+591 , 36554 , 459 , 11 , 1 , 1 , 36374
+591 , 36555 , 458 , 21 , 1 , 1 , 36374
+591 , 36556 , 458 , 11 , 1 , 1 , 36374
+591 , 36557 , 456 , 11 , 1 , 1 , 36374
+591 , 36558 , 456 , 11 , 1 , 1 , 36374
+591 , 36559 , 456 , 11 , 1 , 1 , 36374
+591 , 36560 , 456 , 11 , 1 , 1 , 36374
+591 , 36561 , 456 , 11 , 1 , 1 , 36374
+591 , 36562 , 456 , 11 , 1 , 1 , 36374
+591 , 36563 , 456 , 11 , 1 , 1 , 36374
+591 , 36564 , 456 , 11 , 1 , 1 , 36374
+591 , 36565 , 456 , 11 , 1 , 1 , 36374
+591 , 36566 , 455 , 11 , 1 , 1 , 36374
+591 , 36567 , 455 , 0 , 1 , 1 , 36374
+591 , 36568 , 695 , 21 , 1 , 1 , 36481 36548 36565 36451 36433 36515 36478 36402 36499 36517 36558 36542 36418 36516 36437 36450 36406 36537 36387 36540 36421 36426 36557 36560 36461 36504 36446 36439 36509 36550 36525 36420 36507 36425 36452 36435 36407 36460 36562 36470 36465 36494 36520 36490 36453 36543 36549 36529 36457 36497 36531 36484 36553 36408 36468 36483 36480 36514 36434 36411 36501 36389 36380 36544 36381 36436 36482 36559 36551 36524 36533 36546 36445 36432 36527 36379 36488 36522 36382 36416 36476 36486 36513 36454 36403 36469 36423 36458 36566 36503 36441 36528 36410 36386 36505 36473 36442 36563 36430 36493 36564 36375 36532 36443 36547 36477 36393 36512 36455 36534 36492 36390 36415 36552 36489 36456 36398 36388 36419 36536 36399 36545 36447 36535 36519 36377 36539 36500 36496 36511 36555 36508 36487 36429 36479 36448 36554 36506 36556 36431 36417 36498 36510 36538 36472 36428 36385 36401 36462 36395 36414 36412 36464 36396 36474 36561 36485 36491 36567 36502 36438 36541 36466 36475 36378 36526 36404 36409 36518 36530 36427 36495 36449 36467 36471 36523 36444 36397 36400 36376 36463 36521 36405 36413 36391 36392 36459 36394 36440 36384 36383 36422 36424
+592 , 36569 , 1 , 11 , 1 , 1 ,
+592 , 36570 , 137 , 52 , 1 , 1 , 36569
+592 , 36571 , 137 , 52 , 1 , 1 , 36569
+592 , 36572 , 148 , 263 , 1 , 1 , 36569
+592 , 36573 , 135 , 62 , 1 , 1 , 36569
+592 , 36574 , 135 , 52 , 1 , 1 , 36569
+592 , 36575 , 134 , 52 , 1 , 1 , 36569
+592 , 36576 , 131 , 62 , 1 , 1 , 36569
+592 , 36577 , 148 , 241 , 1 , 1 , 36569
+592 , 36578 , 131 , 62 , 1 , 1 , 36569
+592 , 36579 , 130 , 62 , 1 , 1 , 36569
+592 , 36580 , 129 , 62 , 1 , 1 , 36569
+592 , 36581 , 128 , 62 , 1 , 1 , 36569
+592 , 36582 , 128 , 62 , 1 , 1 , 36569
+592 , 36583 , 128 , 62 , 1 , 1 , 36569
+592 , 36584 , 127 , 62 , 1 , 1 , 36569
+592 , 36585 , 126 , 62 , 1 , 1 , 36569
+592 , 36586 , 126 , 52 , 1 , 1 , 36569
+592 , 36587 , 122 , 62 , 1 , 1 , 36569
+592 , 36588 , 122 , 62 , 1 , 1 , 36569
+592 , 36589 , 122 , 62 , 1 , 1 , 36569
+592 , 36590 , 121 , 72 , 1 , 1 , 36569
+592 , 36591 , 122 , 52 , 1 , 1 , 36569
+592 , 36592 , 153 , 41 , 1 , 1 , 36569
+592 , 36593 , 150 , 52 , 1 , 1 , 36569
+592 , 36594 , 149 , 52 , 1 , 1 , 36569
+592 , 36595 , 121 , 62 , 1 , 1 , 36569
+592 , 36596 , 140 , 86 , 1 , 1 , 36569
+592 , 36597 , 140 , 85 , 1 , 1 , 36569
+592 , 36598 , 151 , 241 , 1 , 1 , 36569
+592 , 36599 , 150 , 241 , 1 , 1 , 36569
+592 , 36600 , 149 , 52 , 1 , 1 , 36569
+592 , 36601 , 148 , 41 , 1 , 1 , 36569
+592 , 36602 , 147 , 41 , 1 , 1 , 36569
+592 , 36603 , 147 , 41 , 1 , 1 , 36569
+592 , 36604 , 138 , 78 , 1 , 1 , 36569
+592 , 36605 , 147 , 41 , 1 , 1 , 36569
+592 , 36606 , 145 , 52 , 1 , 1 , 36569
+592 , 36607 , 145 , 41 , 1 , 1 , 36569
+592 , 36608 , 150 , 241 , 1 , 1 , 36569
+592 , 36609 , 149 , 231 , 1 , 1 , 36569
+592 , 36610 , 149 , 231 , 1 , 1 , 36569
+592 , 36611 , 148 , 232 , 1 , 1 , 36569
+592 , 36612 , 134 , 77 , 1 , 1 , 36569
+592 , 36613 , 133 , 77 , 1 , 1 , 36569
+592 , 36614 , 133 , 77 , 1 , 1 , 36569
+592 , 36615 , 144 , 52 , 1 , 1 , 36569
+592 , 36616 , 121 , 52 , 1 , 1 , 36569
+592 , 36617 , 121 , 52 , 1 , 1 , 36569
+592 , 36618 , 121 , 82 , 1 , 1 , 36569
+592 , 36619 , 121 , 62 , 1 , 1 , 36569
+592 , 36620 , 121 , 72 , 1 , 1 , 36569
+592 , 36621 , 121 , 62 , 1 , 1 , 36569
+592 , 36622 , 113 , 62 , 1 , 1 , 36569
+592 , 36623 , 113 , 62 , 1 , 1 , 36569
+592 , 36624 , 98 , 42 , 1 , 1 , 36569
+592 , 36625 , 96 , 42 , 1 , 1 , 36569
+592 , 36626 , 96 , 52 , 1 , 1 , 36569
+592 , 36627 , 93 , 42 , 1 , 1 , 36569
+592 , 36628 , 92 , 42 , 1 , 1 , 36569
+592 , 36629 , 92 , 41 , 1 , 1 , 36569
+592 , 36630 , 92 , 41 , 1 , 1 , 36569
+592 , 36631 , 91 , 41 , 1 , 1 , 36569
+592 , 36632 , 91 , 42 , 1 , 1 , 36569
+592 , 36633 , 90 , 42 , 1 , 1 , 36569
+592 , 36634 , 89 , 42 , 1 , 1 , 36569
+592 , 36635 , 88 , 43 , 1 , 1 , 36569
+592 , 36636 , 87 , 44 , 1 , 1 , 36569
+592 , 36637 , 85 , 41 , 1 , 1 , 36569
+592 , 36638 , 85 , 52 , 1 , 1 , 36569
+592 , 36639 , 85 , 41 , 1 , 1 , 36569
+592 , 36640 , 85 , 41 , 1 , 1 , 36569
+592 , 36641 , 85 , 41 , 1 , 1 , 36569
+592 , 36642 , 84 , 52 , 1 , 1 , 36569
+592 , 36643 , 84 , 31 , 1 , 1 , 36569
+592 , 36644 , 84 , 41 , 1 , 1 , 36569
+592 , 36645 , 84 , 41 , 1 , 1 , 36569
+592 , 36646 , 84 , 42 , 1 , 1 , 36569
+592 , 36647 , 112 , 62 , 1 , 1 , 36569
+592 , 36648 , 111 , 62 , 1 , 1 , 36569
+592 , 36649 , 110 , 52 , 1 , 1 , 36569
+592 , 36650 , 108 , 62 , 1 , 1 , 36569
+592 , 36651 , 108 , 62 , 1 , 1 , 36569
+592 , 36652 , 108 , 62 , 1 , 1 , 36569
+592 , 36653 , 103 , 62 , 1 , 1 , 36569
+592 , 36654 , 103 , 62 , 1 , 1 , 36569
+592 , 36655 , 102 , 52 , 1 , 1 , 36569
+592 , 36656 , 102 , 62 , 1 , 1 , 36569
+592 , 36657 , 102 , 62 , 1 , 1 , 36569
+592 , 36658 , 102 , 72 , 1 , 1 , 36569
+592 , 36659 , 101 , 52 , 1 , 1 , 36569
+592 , 36660 , 101 , 72 , 1 , 1 , 36569
+592 , 36661 , 100 , 53 , 1 , 1 , 36569
+592 , 36662 , 98 , 62 , 1 , 1 , 36569
+592 , 36663 , 140 , 52 , 1 , 1 , 36569
+592 , 36664 , 139 , 52 , 1 , 1 , 36569
+592 , 36665 , 139 , 52 , 1 , 1 , 36569
+592 , 36666 , 138 , 52 , 1 , 1 , 36569
+592 , 36667 , 138 , 52 , 1 , 1 , 36569
+592 , 36668 , 76 , 42 , 1 , 1 , 36569
+592 , 36669 , 76 , 42 , 1 , 1 , 36569
+592 , 36670 , 76 , 42 , 1 , 1 , 36569
+592 , 36671 , 76 , 41 , 1 , 1 , 36569
+592 , 36672 , 76 , 42 , 1 , 1 , 36569
+592 , 36673 , 76 , 43 , 1 , 1 , 36569
+592 , 36674 , 76 , 43 , 1 , 1 , 36569
+592 , 36675 , 76 , 42 , 1 , 1 , 36569
+592 , 36676 , 76 , 42 , 1 , 1 , 36569
+592 , 36677 , 70 , 41 , 1 , 1 , 36569
+592 , 36678 , 69 , 41 , 1 , 1 , 36569
+592 , 36679 , 68 , 43 , 1 , 1 , 36569
+592 , 36680 , 67 , 43 , 1 , 1 , 36569
+592 , 36681 , 67 , 33 , 1 , 1 , 36569
+592 , 36682 , 45 , 86 , 1 , 1 , 36569
+592 , 36683 , 45 , 78 , 1 , 1 , 36569
+592 , 36684 , 45 , 86 , 1 , 1 , 36569
+592 , 36685 , 45 , 79 , 1 , 1 , 36569
+592 , 36686 , 45 , 76 , 1 , 1 , 36569
+592 , 36687 , 45 , 86 , 1 , 1 , 36569
+592 , 36688 , 45 , 78 , 1 , 1 , 36569
+592 , 36689 , 45 , 75 , 1 , 1 , 36569
+592 , 36690 , 59 , 52 , 1 , 1 , 36569
+592 , 36691 , 57 , 52 , 1 , 1 , 36569
+592 , 36692 , 56 , 31 , 1 , 1 , 36569
+592 , 36693 , 56 , 52 , 1 , 1 , 36569
+592 , 36694 , 56 , 52 , 1 , 1 , 36569
+592 , 36695 , 56 , 52 , 1 , 1 , 36569
+592 , 36696 , 56 , 52 , 1 , 1 , 36569
+592 , 36697 , 55 , 52 , 1 , 1 , 36569
+592 , 36698 , 55 , 52 , 1 , 1 , 36569
+592 , 36699 , 55 , 52 , 1 , 1 , 36569
+592 , 36700 , 54 , 52 , 1 , 1 , 36569
+592 , 36701 , 51 , 54 , 1 , 1 , 36569
+592 , 36702 , 51 , 43 , 1 , 1 , 36569
+592 , 36703 , 50 , 54 , 1 , 1 , 36569
+592 , 36704 , 50 , 54 , 1 , 1 , 36569
+592 , 36705 , 50 , 54 , 1 , 1 , 36569
+592 , 36706 , 50 , 54 , 1 , 1 , 36569
+592 , 36707 , 50 , 62 , 1 , 1 , 36569
+592 , 36708 , 50 , 62 , 1 , 1 , 36569
+592 , 36709 , 49 , 63 , 1 , 1 , 36569
+592 , 36710 , 48 , 62 , 1 , 1 , 36569
+592 , 36711 , 46 , 52 , 1 , 1 , 36569
+592 , 36712 , 46 , 52 , 1 , 1 , 36569
+592 , 36713 , 46 , 41 , 1 , 1 , 36569
+592 , 36714 , 46 , 41 , 1 , 1 , 36569
+592 , 36715 , 45 , 52 , 1 , 1 , 36569
+592 , 36716 , 45 , 41 , 1 , 1 , 36569
+592 , 36717 , 45 , 41 , 1 , 1 , 36569
+592 , 36718 , 45 , 41 , 1 , 1 , 36569
+592 , 36719 , 44 , 41 , 1 , 1 , 36569
+592 , 36720 , 44 , 41 , 1 , 1 , 36569
+592 , 36721 , 41 , 31 , 1 , 1 , 36569
+592 , 36722 , 41 , 31 , 1 , 1 , 36569
+592 , 36723 , 40 , 52 , 1 , 1 , 36569
+592 , 36724 , 40 , 52 , 1 , 1 , 36569
+592 , 36725 , 40 , 52 , 1 , 1 , 36569
+592 , 36726 , 40 , 42 , 1 , 1 , 36569
+592 , 36727 , 40 , 42 , 1 , 1 , 36569
+592 , 36728 , 40 , 41 , 1 , 1 , 36569
+592 , 36729 , 38 , 41 , 1 , 1 , 36569
+592 , 36730 , 37 , 31 , 1 , 1 , 36569
+592 , 36731 , 33 , 52 , 1 , 1 , 36569
+592 , 36732 , 33 , 42 , 1 , 1 , 36569
+592 , 36733 , 33 , 42 , 1 , 1 , 36569
+592 , 36734 , 33 , 41 , 1 , 1 , 36569
+592 , 36735 , 33 , 41 , 1 , 1 , 36569
+592 , 36736 , 33 , 31 , 1 , 1 , 36569
+592 , 36737 , 32 , 41 , 1 , 1 , 36569
+592 , 36738 , 32 , 41 , 1 , 1 , 36569
+592 , 36739 , 32 , 41 , 1 , 1 , 36569
+592 , 36740 , 31 , 41 , 1 , 1 , 36569
+592 , 36741 , 28 , 41 , 1 , 1 , 36569
+592 , 36742 , 28 , 41 , 1 , 1 , 36569
+592 , 36743 , 28 , 41 , 1 , 1 , 36569
+592 , 36744 , 28 , 41 , 1 , 1 , 36569
+592 , 36745 , 28 , 41 , 1 , 1 , 36569
+592 , 36746 , 28 , 41 , 1 , 1 , 36569
+592 , 36747 , 28 , 41 , 1 , 1 , 36569
+592 , 36748 , 28 , 41 , 1 , 1 , 36569
+592 , 36749 , 27 , 41 , 1 , 1 , 36569
+592 , 36750 , 26 , 41 , 1 , 1 , 36569
+592 , 36751 , 25 , 41 , 1 , 1 , 36569
+592 , 36752 , 25 , 41 , 1 , 1 , 36569
+592 , 36753 , 25 , 31 , 1 , 1 , 36569
+592 , 36754 , 25 , 41 , 1 , 1 , 36569
+592 , 36755 , 25 , 41 , 1 , 1 , 36569
+592 , 36756 , 25 , 41 , 1 , 1 , 36569
+592 , 36757 , 25 , 41 , 1 , 1 , 36569
+592 , 36758 , 25 , 41 , 1 , 1 , 36569
+592 , 36759 , 25 , 31 , 1 , 1 , 36569
+592 , 36760 , 25 , 31 , 1 , 1 , 36569
+592 , 36761 , 24 , 31 , 1 , 1 , 36569
+592 , 36762 , 24 , 31 , 1 , 1 , 36569
+592 , 36763 , 439 , 11 , 1 , 1 , 36660 36591 36747 36592 36650 36667 36625 36675 36608 36637 36644 36745 36734 36626 36676 36748 36635 36630 36737 36762 36594 36573 36694 36697 36601 36700 36741 36728 36724 36735 36576 36648 36613 36621 36673 36618 36679 36688 36589 36746 36657 36614 36719 36756 36661 36758 36706 36600 36682 36597 36759 36587 36571 36743 36620 36739 36686 36647 36607 36691 36617 36730 36642 36698 36645 36671 36574 36627 36663 36619 36586 36736 36638 36695 36749 36581 36583 36744 36712 36575 36684 36752 36711 36740 36754 36707 36640 36590 36662 36708 36598 36715 36634 36669 36709 36577 36731 36689 36701 36690 36685 36683 36722 36649 36750 36760 36651 36579 36713 36678 36588 36633 36605 36654 36656 36677 36699 36757 36655 36696 36723 36646 36603 36733 36611 36761 36585 36659 36720 36664 36610 36693 36580 36751 36718 36732 36636 36681 36721 36604 36702 36612 36687 36641 36615 36729 36753 36572 36714 36704 36595 36639 36632 36622 36616 36692 36727 36570 36672 36658 36599 36624 36643 36668 36670 36665 36602 36593 36629 36623 36726 36674 36705 36596 36666 36710 36703 36628 36609 36725 36680 36631 36606 36738 36584 36653 36717 36716 36582 36578 36742 36652 36755
+592 , 36764 , 825 , 33 , 1 , 1 , 36763
+592 , 36765 , 826 , 32 , 1 , 1 , 36763
+592 , 36766 , 822 , 33 , 1 , 1 , 36763
+592 , 36767 , 826 , 32 , 1 , 1 , 36763
+592 , 36768 , 856 , 32 , 1 , 1 , 36763
+592 , 36769 , 826 , 33 , 1 , 1 , 36763
+592 , 36770 , 817 , 34 , 1 , 1 , 36763
+592 , 36771 , 812 , 32 , 1 , 1 , 36763
+592 , 36772 , 807 , 34 , 1 , 1 , 36763
+592 , 36773 , 803 , 34 , 1 , 1 , 36763
+592 , 36774 , 816 , 31 , 1 , 1 , 36763
+592 , 36775 , 815 , 31 , 1 , 1 , 36763
+592 , 36776 , 815 , 31 , 1 , 1 , 36763
+592 , 36777 , 813 , 31 , 1 , 1 , 36763
+592 , 36778 , 813 , 31 , 1 , 1 , 36763
+592 , 36779 , 813 , 31 , 1 , 1 , 36763
+592 , 36780 , 813 , 31 , 1 , 1 , 36763
+592 , 36781 , 813 , 31 , 1 , 1 , 36763
+592 , 36782 , 676 , 0 , 1 , 1 , 36763
+592 , 36783 , 676 , 0 , 1 , 1 , 36763
+592 , 36784 , 676 , 0 , 1 , 1 , 36763
+592 , 36785 , 676 , 0 , 1 , 1 , 36763
+592 , 36786 , 676 , 11 , 1 , 1 , 36763
+592 , 36787 , 676 , 0 , 1 , 1 , 36763
+592 , 36788 , 676 , 0 , 1 , 1 , 36763
+592 , 36789 , 676 , 11 , 1 , 1 , 36763
+592 , 36790 , 677 , 0 , 1 , 1 , 36763
+592 , 36791 , 817 , 31 , 1 , 1 , 36763
+592 , 36792 , 822 , 21 , 1 , 1 , 36763
+592 , 36793 , 831 , 21 , 1 , 1 , 36763
+592 , 36794 , 812 , 31 , 1 , 1 , 36763
+592 , 36795 , 812 , 31 , 1 , 1 , 36763
+592 , 36796 , 812 , 32 , 1 , 1 , 36763
+592 , 36797 , 811 , 31 , 1 , 1 , 36763
+592 , 36798 , 822 , 31 , 1 , 1 , 36763
+592 , 36799 , 811 , 31 , 1 , 1 , 36763
+592 , 36800 , 810 , 31 , 1 , 1 , 36763
+592 , 36801 , 809 , 31 , 1 , 1 , 36763
+592 , 36802 , 817 , 31 , 1 , 1 , 36763
+592 , 36803 , 817 , 31 , 1 , 1 , 36763
+592 , 36804 , 817 , 31 , 1 , 1 , 36763
+592 , 36805 , 816 , 31 , 1 , 1 , 36763
+592 , 36806 , 854 , 0 , 1 , 1 , 36763
+592 , 36807 , 819 , 31 , 1 , 1 , 36763
+592 , 36808 , 844 , 11 , 1 , 1 , 36763
+592 , 36809 , 809 , 41 , 1 , 1 , 36763
+592 , 36810 , 809 , 31 , 1 , 1 , 36763
+592 , 36811 , 808 , 41 , 1 , 1 , 36763
+592 , 36812 , 808 , 41 , 1 , 1 , 36763
+592 , 36813 , 808 , 42 , 1 , 1 , 36763
+592 , 36814 , 808 , 31 , 1 , 1 , 36763
+592 , 36815 , 808 , 31 , 1 , 1 , 36763
+592 , 36816 , 807 , 31 , 1 , 1 , 36763
+592 , 36817 , 806 , 31 , 1 , 1 , 36763
+592 , 36818 , 805 , 31 , 1 , 1 , 36763
+592 , 36819 , 804 , 31 , 1 , 1 , 36763
+592 , 36820 , 804 , 31 , 1 , 1 , 36763
+592 , 36821 , 804 , 31 , 1 , 1 , 36763
+592 , 36822 , 804 , 31 , 1 , 1 , 36763
+592 , 36823 , 804 , 31 , 1 , 1 , 36763
+592 , 36824 , 803 , 31 , 1 , 1 , 36763
+592 , 36825 , 803 , 31 , 1 , 1 , 36763
+592 , 36826 , 803 , 31 , 1 , 1 , 36763
+592 , 36827 , 801 , 31 , 1 , 1 , 36763
+592 , 36828 , 800 , 31 , 1 , 1 , 36763
+592 , 36829 , 800 , 31 , 1 , 1 , 36763
+592 , 36830 , 800 , 31 , 1 , 1 , 36763
+592 , 36831 , 800 , 31 , 1 , 1 , 36763
+592 , 36832 , 800 , 31 , 1 , 1 , 36763
+592 , 36833 , 799 , 31 , 1 , 1 , 36763
+592 , 36834 , 799 , 31 , 1 , 1 , 36763
+592 , 36835 , 799 , 31 , 1 , 1 , 36763
+592 , 36836 , 799 , 31 , 1 , 1 , 36763
+592 , 36837 , 797 , 31 , 1 , 1 , 36763
+592 , 36838 , 797 , 31 , 1 , 1 , 36763
+592 , 36839 , 797 , 21 , 1 , 1 , 36763
+592 , 36840 , 797 , 31 , 1 , 1 , 36763
+592 , 36841 , 797 , 21 , 1 , 1 , 36763
+592 , 36842 , 797 , 21 , 1 , 1 , 36763
+592 , 36843 , 556 , 0 , 1 , 1 , 36763
+592 , 36844 , 556 , 0 , 1 , 1 , 36763
+592 , 36845 , 556 , 11 , 1 , 1 , 36763
+592 , 36846 , 556 , 0 , 1 , 1 , 36763
+592 , 36847 , 556 , 11 , 1 , 1 , 36763
+592 , 36848 , 556 , 11 , 1 , 1 , 36763
+592 , 36849 , 556 , 0 , 1 , 1 , 36763
+592 , 36850 , 556 , 11 , 1 , 1 , 36763
+592 , 36851 , 556 , 0 , 1 , 1 , 36763
+592 , 36852 , 797 , 21 , 1 , 1 , 36763
+592 , 36853 , 797 , 21 , 1 , 1 , 36763
+592 , 36854 , 796 , 11 , 1 , 1 , 36763
+592 , 36855 , 796 , 21 , 1 , 1 , 36763
+592 , 36856 , 796 , 21 , 1 , 1 , 36763
+592 , 36857 , 796 , 11 , 1 , 1 , 36763
+592 , 36858 , 796 , 11 , 1 , 1 , 36763
+592 , 36859 , 837 , 21 , 1 , 1 , 36763
+592 , 36860 , 837 , 21 , 1 , 1 , 36763
+592 , 36861 , 837 , 21 , 1 , 1 , 36763
+592 , 36862 , 841 , 21 , 1 , 1 , 36763
+592 , 36863 , 838 , 21 , 1 , 1 , 36763
+592 , 36864 , 834 , 21 , 1 , 1 , 36763
+592 , 36865 , 834 , 32 , 1 , 1 , 36763
+592 , 36866 , 839 , 32 , 1 , 1 , 36763
+592 , 36867 , 839 , 32 , 1 , 1 , 36763
+592 , 36868 , 831 , 24 , 1 , 1 , 36763
+592 , 36869 , 831 , 34 , 1 , 1 , 36763
+592 , 36870 , 831 , 23 , 1 , 1 , 36763
+592 , 36871 , 832 , 33 , 1 , 1 , 36763
+592 , 36872 , 828 , 33 , 1 , 1 , 36763
+592 , 36873 , 828 , 33 , 1 , 1 , 36763
+592 , 36874 , 828 , 34 , 1 , 1 , 36763
+592 , 36875 , 827 , 24 , 1 , 1 , 36763
+592 , 36876 , 827 , 32 , 1 , 1 , 36763
+592 , 36877 , 825 , 33 , 1 , 1 , 36763
+592 , 36878 , 825 , 33 , 1 , 1 , 36763
+592 , 36879 , 494 , 32 , 1 , 1 , 36763
+592 , 36880 , 494 , 32 , 1 , 1 , 36763
+592 , 36881 , 491 , 11 , 1 , 1 , 36763
+592 , 36882 , 492 , 21 , 1 , 1 , 36763
+592 , 36883 , 494 , 32 , 1 , 1 , 36763
+592 , 36884 , 493 , 32 , 1 , 1 , 36763
+592 , 36885 , 493 , 32 , 1 , 1 , 36763
+592 , 36886 , 493 , 32 , 1 , 1 , 36763
+592 , 36887 , 492 , 32 , 1 , 1 , 36763
+592 , 36888 , 492 , 32 , 1 , 1 , 36763
+592 , 36889 , 491 , 32 , 1 , 1 , 36763
+592 , 36890 , 500 , 32 , 1 , 1 , 36763
+592 , 36891 , 491 , 32 , 1 , 1 , 36763
+592 , 36892 , 490 , 32 , 1 , 1 , 36763
+592 , 36893 , 491 , 32 , 1 , 1 , 36763
+592 , 36894 , 490 , 32 , 1 , 1 , 36763
+592 , 36895 , 513 , 32 , 1 , 1 , 36763
+592 , 36896 , 492 , 32 , 1 , 1 , 36763
+592 , 36897 , 490 , 32 , 1 , 1 , 36763
+592 , 36898 , 470 , 32 , 1 , 1 , 36763
+592 , 36899 , 481 , 21 , 1 , 1 , 36763
+592 , 36900 , 481 , 31 , 1 , 1 , 36763
+592 , 36901 , 481 , 31 , 1 , 1 , 36763
+592 , 36902 , 481 , 31 , 1 , 1 , 36763
+592 , 36903 , 480 , 31 , 1 , 1 , 36763
+592 , 36904 , 480 , 32 , 1 , 1 , 36763
+592 , 36905 , 480 , 31 , 1 , 1 , 36763
+592 , 36906 , 480 , 21 , 1 , 1 , 36763
+592 , 36907 , 479 , 21 , 1 , 1 , 36763
+592 , 36908 , 478 , 31 , 1 , 1 , 36763
+592 , 36909 , 478 , 31 , 1 , 1 , 36763
+592 , 36910 , 478 , 31 , 1 , 1 , 36763
+592 , 36911 , 478 , 31 , 1 , 1 , 36763
+592 , 36912 , 477 , 31 , 1 , 1 , 36763
+592 , 36913 , 477 , 31 , 1 , 1 , 36763
+592 , 36914 , 477 , 31 , 1 , 1 , 36763
+592 , 36915 , 477 , 31 , 1 , 1 , 36763
+592 , 36916 , 477 , 31 , 1 , 1 , 36763
+592 , 36917 , 475 , 31 , 1 , 1 , 36763
+592 , 36918 , 475 , 31 , 1 , 1 , 36763
+592 , 36919 , 474 , 31 , 1 , 1 , 36763
+592 , 36920 , 474 , 31 , 1 , 1 , 36763
+592 , 36921 , 474 , 31 , 1 , 1 , 36763
+592 , 36922 , 474 , 31 , 1 , 1 , 36763
+592 , 36923 , 474 , 31 , 1 , 1 , 36763
+592 , 36924 , 474 , 21 , 1 , 1 , 36763
+592 , 36925 , 474 , 31 , 1 , 1 , 36763
+592 , 36926 , 473 , 31 , 1 , 1 , 36763
+592 , 36927 , 471 , 31 , 1 , 1 , 36763
+592 , 36928 , 471 , 31 , 1 , 1 , 36763
+592 , 36929 , 471 , 31 , 1 , 1 , 36763
+592 , 36930 , 470 , 31 , 1 , 1 , 36763
+592 , 36931 , 470 , 31 , 1 , 1 , 36763
+592 , 36932 , 470 , 31 , 1 , 1 , 36763
+592 , 36933 , 470 , 31 , 1 , 1 , 36763
+592 , 36934 , 470 , 31 , 1 , 1 , 36763
+592 , 36935 , 470 , 31 , 1 , 1 , 36763
+592 , 36936 , 470 , 31 , 1 , 1 , 36763
+592 , 36937 , 468 , 31 , 1 , 1 , 36763
+592 , 36938 , 468 , 31 , 1 , 1 , 36763
+592 , 36939 , 467 , 31 , 1 , 1 , 36763
+592 , 36940 , 467 , 21 , 1 , 1 , 36763
+592 , 36941 , 467 , 31 , 1 , 1 , 36763
+592 , 36942 , 467 , 21 , 1 , 1 , 36763
+592 , 36943 , 467 , 31 , 1 , 1 , 36763
+592 , 36944 , 467 , 31 , 1 , 1 , 36763
+592 , 36945 , 467 , 31 , 1 , 1 , 36763
+592 , 36946 , 467 , 21 , 1 , 1 , 36763
+592 , 36947 , 465 , 21 , 1 , 1 , 36763
+592 , 36948 , 465 , 31 , 1 , 1 , 36763
+592 , 36949 , 465 , 32 , 1 , 1 , 36763
+592 , 36950 , 465 , 21 , 1 , 1 , 36763
+592 , 36951 , 465 , 31 , 1 , 1 , 36763
+592 , 36952 , 465 , 21 , 1 , 1 , 36763
+592 , 36953 , 465 , 11 , 1 , 1 , 36763
+592 , 36954 , 465 , 21 , 1 , 1 , 36763
+592 , 36955 , 464 , 21 , 1 , 1 , 36763
+592 , 36956 , 464 , 11 , 1 , 1 , 36763
+592 , 36957 , 917 , 21 , 1 , 1 , 36845 36870 36839 36777 36952 36815 36800 36821 36911 36787 36784 36798 36843 36900 36890 36847 36783 36880 36878 36841 36831 36863 36927 36785 36811 36808 36889 36904 36917 36953 36859 36795 36794 36848 36908 36826 36844 36868 36862 36925 36830 36771 36805 36769 36817 36891 36774 36918 36860 36910 36883 36875 36909 36923 36913 36955 36931 36906 36822 36894 36899 36789 36898 36944 36929 36936 36781 36838 36780 36869 36895 36832 36930 36948 36842 36950 36893 36935 36877 36882 36924 36790 36896 36939 36873 36956 36866 36888 36932 36836 36879 36766 36801 36806 36854 36804 36778 36852 36816 36786 36812 36764 36772 36791 36856 36809 36872 36833 36829 36920 36782 36946 36840 36788 36846 36892 36949 36947 36885 36853 36855 36933 36907 36912 36886 36837 36765 36887 36825 36820 36803 36914 36823 36819 36871 36773 36810 36919 36881 36901 36792 36921 36940 36897 36851 36850 36941 36767 36867 36834 36849 36905 36874 36903 36934 36954 36802 36902 36828 36824 36922 36770 36835 36861 36858 36797 36768 36865 36928 36776 36884 36799 36938 36796 36876 36945 36864 36807 36813 36779 36915 36857 36818 36916 36951 36827 36793 36943 36775 36942 36926 36937 36814
+593 , 36958 , 9 , 174 , 1 , 1 ,
+593 , 36959 , 9 , 174 , 1 , 1 ,
+593 , 36960 , 9 , 184 , 1 , 1 ,
+593 , 36961 , 8 , 194 , 1 , 1 ,
+593 , 36962 , 8 , 215 , 1 , 1 ,
+593 , 36963 , 8 , 215 , 1 , 1 ,
+593 , 36964 , 8 , 235 , 1 , 1 ,
+593 , 36965 , 8 , 215 , 1 , 1 ,
+593 , 36966 , 8 , 194 , 1 , 1 ,
+593 , 36967 , 8 , 194 , 1 , 1 ,
+593 , 36968 , 5 , 194 , 1 , 1 ,
+593 , 36969 , 5 , 205 , 1 , 1 ,
+593 , 36970 , 5 , 184 , 1 , 1 ,
+593 , 36971 , 5 , 215 , 1 , 1 ,
+593 , 36972 , 5 , 205 , 1 , 1 ,
+593 , 36973 , 5 , 205 , 1 , 1 ,
+593 , 36974 , 5 , 215 , 1 , 1 ,
+593 , 36975 , 5 , 174 , 1 , 1 ,
+593 , 36976 , 5 , 184 , 1 , 1 ,
+593 , 36977 , 5 , 194 , 1 , 1 ,
+593 , 36978 , 258 , 52 , 1 , 1 , 36971 36959 36968 36965 36966 36973 36970 36972 36962 36963 36960 36964 36975 36974 36967 36969 36976 36977 36958 36961
+594 , 36979 , 2 , 11 , 1 , 1 ,
+594 , 36980 , 138 , 41 , 1 , 1 , 36979
+594 , 36981 , 138 , 41 , 1 , 1 , 36979
+594 , 36982 , 137 , 41 , 1 , 1 , 36979
+594 , 36983 , 137 , 41 , 1 , 1 , 36979
+594 , 36984 , 137 , 41 , 1 , 1 , 36979
+594 , 36985 , 136 , 41 , 1 , 1 , 36979
+594 , 36986 , 136 , 41 , 1 , 1 , 36979
+594 , 36987 , 135 , 31 , 1 , 1 , 36979
+594 , 36988 , 134 , 41 , 1 , 1 , 36979
+594 , 36989 , 134 , 41 , 1 , 1 , 36979
+594 , 36990 , 133 , 41 , 1 , 1 , 36979
+594 , 36991 , 132 , 41 , 1 , 1 , 36979
+594 , 36992 , 132 , 41 , 1 , 1 , 36979
+594 , 36993 , 132 , 42 , 1 , 1 , 36979
+594 , 36994 , 132 , 41 , 1 , 1 , 36979
+594 , 36995 , 131 , 41 , 1 , 1 , 36979
+594 , 36996 , 131 , 41 , 1 , 1 , 36979
+594 , 36997 , 129 , 41 , 1 , 1 , 36979
+594 , 36998 , 128 , 41 , 1 , 1 , 36979
+594 , 36999 , 128 , 41 , 1 , 1 , 36979
+594 , 37000 , 127 , 42 , 1 , 1 , 36979
+594 , 37001 , 127 , 42 , 1 , 1 , 36979
+594 , 37002 , 127 , 52 , 1 , 1 , 36979
+594 , 37003 , 126 , 42 , 1 , 1 , 36979
+594 , 37004 , 126 , 31 , 1 , 1 , 36979
+594 , 37005 , 125 , 41 , 1 , 1 , 36979
+594 , 37006 , 125 , 31 , 1 , 1 , 36979
+594 , 37007 , 123 , 32 , 1 , 1 , 36979
+594 , 37008 , 123 , 32 , 1 , 1 , 36979
+594 , 37009 , 123 , 32 , 1 , 1 , 36979
+594 , 37010 , 71 , 62 , 1 , 1 , 36979
+594 , 37011 , 71 , 82 , 1 , 1 , 36979
+594 , 37012 , 69 , 72 , 1 , 1 , 36979
+594 , 37013 , 69 , 62 , 1 , 1 , 36979
+594 , 37014 , 69 , 62 , 1 , 1 , 36979
+594 , 37015 , 64 , 82 , 1 , 1 , 36979
+594 , 37016 , 64 , 72 , 1 , 1 , 36979
+594 , 37017 , 63 , 72 , 1 , 1 , 36979
+594 , 37018 , 63 , 82 , 1 , 1 , 36979
+594 , 37019 , 68 , 85 , 1 , 1 , 36979
+594 , 37020 , 68 , 87 , 1 , 1 , 36979
+594 , 37021 , 68 , 86 , 1 , 1 , 36979
+594 , 37022 , 68 , 86 , 1 , 1 , 36979
+594 , 37023 , 68 , 75 , 1 , 1 , 36979
+594 , 37024 , 68 , 76 , 1 , 1 , 36979
+594 , 37025 , 68 , 77 , 1 , 1 , 36979
+594 , 37026 , 68 , 85 , 1 , 1 , 36979
+594 , 37027 , 51 , 245 , 1 , 1 , 36979
+594 , 37028 , 51 , 245 , 1 , 1 , 36979
+594 , 37029 , 51 , 225 , 1 , 1 , 36979
+594 , 37030 , 51 , 245 , 1 , 1 , 36979
+594 , 37031 , 51 , 245 , 1 , 1 , 36979
+594 , 37032 , 51 , 245 , 1 , 1 , 36979
+594 , 37033 , 51 , 246 , 1 , 1 , 36979
+594 , 37034 , 51 , 246 , 1 , 1 , 36979
+594 , 37035 , 51 , 246 , 1 , 1 , 36979
+594 , 37036 , 51 , 245 , 1 , 1 , 36979
+594 , 37037 , 51 , 256 , 1 , 1 , 36979
+594 , 37038 , 51 , 246 , 1 , 1 , 36979
+594 , 37039 , 51 , 245 , 1 , 1 , 36979
+594 , 37040 , 51 , 235 , 1 , 1 , 36979
+594 , 37041 , 51 , 225 , 1 , 1 , 36979
+594 , 37042 , 51 , 246 , 1 , 1 , 36979
+594 , 37043 , 57 , 289 , 1 , 1 , 36979
+594 , 37044 , 56 , 238 , 1 , 1 , 36979
+594 , 37045 , 56 , 238 , 1 , 1 , 36979
+594 , 37046 , 55 , 237 , 1 , 1 , 36979
+594 , 37047 , 55 , 259 , 1 , 1 , 36979
+594 , 37048 , 55 , 332 , 1 , 1 , 36979
+594 , 37049 , 55 , 247 , 1 , 1 , 36979
+594 , 37050 , 54 , 238 , 1 , 1 , 36979
+594 , 37051 , 54 , 301 , 1 , 1 , 36979
+594 , 37052 , 54 , 239 , 1 , 1 , 36979
+594 , 37053 , 53 , 239 , 1 , 1 , 36979
+594 , 37054 , 53 , 234 , 1 , 1 , 36979
+594 , 37055 , 53 , 251 , 1 , 1 , 36979
+594 , 37056 , 52 , 238 , 1 , 1 , 36979
+594 , 37057 , 52 , 244 , 1 , 1 , 36979
+594 , 37058 , 52 , 333 , 1 , 1 , 36979
+594 , 37059 , 51 , 239 , 1 , 1 , 36979
+594 , 37060 , 51 , 290 , 1 , 1 , 36979
+594 , 37061 , 50 , 238 , 1 , 1 , 36979
+594 , 37062 , 50 , 234 , 1 , 1 , 36979
+594 , 37063 , 50 , 233 , 1 , 1 , 36979
+594 , 37064 , 49 , 245 , 1 , 1 , 36979
+594 , 37065 , 49 , 246 , 1 , 1 , 36979
+594 , 37066 , 49 , 298 , 1 , 1 , 36979
+594 , 37067 , 48 , 289 , 1 , 1 , 36979
+594 , 37068 , 48 , 246 , 1 , 1 , 36979
+594 , 37069 , 48 , 247 , 1 , 1 , 36979
+594 , 37070 , 48 , 289 , 1 , 1 , 36979
+594 , 37071 , 47 , 257 , 1 , 1 , 36979
+594 , 37072 , 47 , 246 , 1 , 1 , 36979
+594 , 37073 , 46 , 246 , 1 , 1 , 36979
+594 , 37074 , 46 , 236 , 1 , 1 , 36979
+594 , 37075 , 46 , 236 , 1 , 1 , 36979
+594 , 37076 , 46 , 300 , 1 , 1 , 36979
+594 , 37077 , 45 , 236 , 1 , 1 , 36979
+594 , 37078 , 45 , 236 , 1 , 1 , 36979
+594 , 37079 , 45 , 237 , 1 , 1 , 36979
+594 , 37080 , 44 , 237 , 1 , 1 , 36979
+594 , 37081 , 44 , 356 , 1 , 1 , 36979
+594 , 37082 , 44 , 246 , 1 , 1 , 36979
+594 , 37083 , 44 , 293 , 1 , 1 , 36979
+594 , 37084 , 43 , 239 , 1 , 1 , 36979
+594 , 37085 , 43 , 235 , 1 , 1 , 36979
+594 , 37086 , 43 , 239 , 1 , 1 , 36979
+594 , 37087 , 42 , 258 , 1 , 1 , 36979
+594 , 37088 , 42 , 239 , 1 , 1 , 36979
+594 , 37089 , 42 , 239 , 1 , 1 , 36979
+594 , 37090 , 41 , 266 , 1 , 1 , 36979
+594 , 37091 , 41 , 272 , 1 , 1 , 36979
+594 , 37092 , 41 , 237 , 1 , 1 , 36979
+594 , 37093 , 41 , 235 , 1 , 1 , 36979
+594 , 37094 , 41 , 246 , 1 , 1 , 36979
+594 , 37095 , 40 , 268 , 1 , 1 , 36979
+594 , 37096 , 40 , 246 , 1 , 1 , 36979
+594 , 37097 , 40 , 247 , 1 , 1 , 36979
+594 , 37098 , 39 , 300 , 1 , 1 , 36979
+594 , 37099 , 39 , 298 , 1 , 1 , 36979
+594 , 37100 , 39 , 258 , 1 , 1 , 36979
+594 , 37101 , 38 , 258 , 1 , 1 , 36979
+594 , 37102 , 38 , 257 , 1 , 1 , 36979
+594 , 37103 , 38 , 257 , 1 , 1 , 36979
+594 , 37104 , 37 , 257 , 1 , 1 , 36979
+594 , 37105 , 37 , 247 , 1 , 1 , 36979
+594 , 37106 , 37 , 321 , 1 , 1 , 36979
+594 , 37107 , 63 , 82 , 1 , 1 , 36979
+594 , 37108 , 63 , 72 , 1 , 1 , 36979
+594 , 37109 , 63 , 82 , 1 , 1 , 36979
+594 , 37110 , 62 , 82 , 1 , 1 , 36979
+594 , 37111 , 61 , 82 , 1 , 1 , 36979
+594 , 37112 , 61 , 82 , 1 , 1 , 36979
+594 , 37113 , 57 , 82 , 1 , 1 , 36979
+594 , 37114 , 56 , 72 , 1 , 1 , 36979
+594 , 37115 , 56 , 82 , 1 , 1 , 36979
+594 , 37116 , 56 , 92 , 1 , 1 , 36979
+594 , 37117 , 55 , 72 , 1 , 1 , 36979
+594 , 37118 , 55 , 83 , 1 , 1 , 36979
+594 , 37119 , 55 , 82 , 1 , 1 , 36979
+594 , 37120 , 54 , 92 , 1 , 1 , 36979
+594 , 37121 , 54 , 82 , 1 , 1 , 36979
+594 , 37122 , 53 , 72 , 1 , 1 , 36979
+594 , 37123 , 49 , 83 , 1 , 1 , 36979
+594 , 37124 , 48 , 72 , 1 , 1 , 36979
+594 , 37125 , 48 , 92 , 1 , 1 , 36979
+594 , 37126 , 47 , 93 , 1 , 1 , 36979
+594 , 37127 , 47 , 92 , 1 , 1 , 36979
+594 , 37128 , 47 , 72 , 1 , 1 , 36979
+594 , 37129 , 46 , 72 , 1 , 1 , 36979
+594 , 37130 , 45 , 92 , 1 , 1 , 36979
+594 , 37131 , 45 , 72 , 1 , 1 , 36979
+594 , 37132 , 44 , 72 , 1 , 1 , 36979
+594 , 37133 , 41 , 72 , 1 , 1 , 36979
+594 , 37134 , 41 , 103 , 1 , 1 , 36979
+594 , 37135 , 40 , 72 , 1 , 1 , 36979
+594 , 37136 , 40 , 82 , 1 , 1 , 36979
+594 , 37137 , 40 , 72 , 1 , 1 , 36979
+594 , 37138 , 40 , 72 , 1 , 1 , 36979
+594 , 37139 , 40 , 72 , 1 , 1 , 36979
+594 , 37140 , 39 , 72 , 1 , 1 , 36979
+594 , 37141 , 39 , 82 , 1 , 1 , 36979
+594 , 37142 , 38 , 72 , 1 , 1 , 36979
+594 , 37143 , 35 , 113 , 1 , 1 , 36979
+594 , 37144 , 34 , 82 , 1 , 1 , 36979
+594 , 37145 , 34 , 83 , 1 , 1 , 36979
+594 , 37146 , 34 , 82 , 1 , 1 , 36979
+594 , 37147 , 34 , 72 , 1 , 1 , 36979
+594 , 37148 , 33 , 82 , 1 , 1 , 36979
+594 , 37149 , 33 , 82 , 1 , 1 , 36979
+594 , 37150 , 33 , 82 , 1 , 1 , 36979
+594 , 37151 , 33 , 82 , 1 , 1 , 36979
+594 , 37152 , 32 , 82 , 1 , 1 , 36979
+594 , 37153 , 30 , 82 , 1 , 1 , 36979
+594 , 37154 , 30 , 82 , 1 , 1 , 36979
+594 , 37155 , 30 , 82 , 1 , 1 , 36979
+594 , 37156 , 30 , 82 , 1 , 1 , 36979
+594 , 37157 , 30 , 82 , 1 , 1 , 36979
+594 , 37158 , 29 , 82 , 1 , 1 , 36979
+594 , 37159 , 29 , 82 , 1 , 1 , 36979
+594 , 37160 , 29 , 82 , 1 , 1 , 36979
+594 , 37161 , 29 , 72 , 1 , 1 , 36979
+594 , 37162 , 29 , 82 , 1 , 1 , 36979
+594 , 37163 , 26 , 82 , 1 , 1 , 36979
+594 , 37164 , 26 , 62 , 1 , 1 , 36979
+594 , 37165 , 26 , 82 , 1 , 1 , 36979
+594 , 37166 , 26 , 72 , 1 , 1 , 36979
+594 , 37167 , 26 , 82 , 1 , 1 , 36979
+594 , 37168 , 26 , 62 , 1 , 1 , 36979
+594 , 37169 , 26 , 62 , 1 , 1 , 36979
+594 , 37170 , 26 , 72 , 1 , 1 , 36979
+594 , 37171 , 26 , 72 , 1 , 1 , 36979
+594 , 37172 , 26 , 72 , 1 , 1 , 36979
+594 , 37173 , 423 , 0 , 1 , 1 , 37024 37012 37061 36993 37030 37102 37125 37059 37022 37162 37108 37147 36986 37064 37020 36983 37104 37117 37067 37121 37021 37101 37018 37037 37063 37123 36991 37153 37023 37006 37127 37068 37081 37094 37085 37172 37136 37096 37011 37091 37084 37066 37055 37008 37118 37100 37138 37160 37128 37043 37071 36984 37140 37004 37143 37170 37086 37035 37107 37135 37083 36996 37082 37065 37139 36998 37076 37041 36985 36988 37038 37003 37159 37124 36990 37105 37144 37005 37039 37053 36997 37119 37040 37013 37115 37133 37151 37009 36992 37033 37116 37137 37146 37171 37028 36989 37001 37092 37122 37042 37062 37058 37113 37154 37060 37166 37093 37099 37029 37157 37014 37057 37169 37047 37073 37034 37074 37111 37155 37112 37145 37130 37080 36995 37141 37134 37027 37095 37087 36987 37103 37054 37168 37049 37165 37077 37120 37036 37152 37025 36994 36980 37126 37046 37106 37161 37000 37010 37048 37110 37129 37072 37163 36999 37056 37158 37089 37164 37050 37016 37156 36981 37109 37051 37098 37045 37044 37131 37070 37090 37142 37031 37078 37167 37075 37052 37069 37097 37019 37114 37132 37032 37088 37149 37079 37017 37015 37002 37026 37148 37007 37150 36982
+594 , 37174 , 531 , 32 , 1 , 1 , 37173
+594 , 37175 , 530 , 32 , 1 , 1 , 37173
+594 , 37176 , 529 , 32 , 1 , 1 , 37173
+594 , 37177 , 529 , 32 , 1 , 1 , 37173
+594 , 37178 , 513 , 21 , 1 , 1 , 37173
+594 , 37179 , 512 , 21 , 1 , 1 , 37173
+594 , 37180 , 512 , 21 , 1 , 1 , 37173
+594 , 37181 , 512 , 21 , 1 , 1 , 37173
+594 , 37182 , 511 , 21 , 1 , 1 , 37173
+594 , 37183 , 510 , 21 , 1 , 1 , 37173
+594 , 37184 , 530 , 32 , 1 , 1 , 37173
+594 , 37185 , 527 , 32 , 1 , 1 , 37173
+594 , 37186 , 532 , 32 , 1 , 1 , 37173
+594 , 37187 , 527 , 32 , 1 , 1 , 37173
+594 , 37188 , 506 , 21 , 1 , 1 , 37173
+594 , 37189 , 506 , 21 , 1 , 1 , 37173
+594 , 37190 , 506 , 31 , 1 , 1 , 37173
+594 , 37191 , 526 , 32 , 1 , 1 , 37173
+594 , 37192 , 525 , 32 , 1 , 1 , 37173
+594 , 37193 , 502 , 31 , 1 , 1 , 37173
+594 , 37194 , 501 , 31 , 1 , 1 , 37173
+594 , 37195 , 524 , 33 , 1 , 1 , 37173
+594 , 37196 , 525 , 32 , 1 , 1 , 37173
+594 , 37197 , 522 , 24 , 1 , 1 , 37173
+594 , 37198 , 496 , 31 , 1 , 1 , 37173
+594 , 37199 , 495 , 31 , 1 , 1 , 37173
+594 , 37200 , 522 , 32 , 1 , 1 , 37173
+594 , 37201 , 521 , 32 , 1 , 1 , 37173
+594 , 37202 , 490 , 31 , 1 , 1 , 37173
+594 , 37203 , 489 , 31 , 1 , 1 , 37173
+594 , 37204 , 489 , 31 , 1 , 1 , 37173
+594 , 37205 , 519 , 32 , 1 , 1 , 37173
+594 , 37206 , 489 , 31 , 1 , 1 , 37173
+594 , 37207 , 485 , 31 , 1 , 1 , 37173
+594 , 37208 , 485 , 31 , 1 , 1 , 37173
+594 , 37209 , 533 , 21 , 1 , 1 , 37173
+594 , 37210 , 538 , 21 , 1 , 1 , 37173
+594 , 37211 , 479 , 41 , 1 , 1 , 37173
+594 , 37212 , 479 , 31 , 1 , 1 , 37173
+594 , 37213 , 518 , 21 , 1 , 1 , 37173
+594 , 37214 , 538 , 0 , 1 , 1 , 37173
+594 , 37215 , 518 , 21 , 1 , 1 , 37173
+594 , 37216 , 517 , 21 , 1 , 1 , 37173
+594 , 37217 , 512 , 21 , 1 , 1 , 37173
+594 , 37218 , 511 , 21 , 1 , 1 , 37173
+594 , 37219 , 511 , 21 , 1 , 1 , 37173
+594 , 37220 , 509 , 21 , 1 , 1 , 37173
+594 , 37221 , 508 , 21 , 1 , 1 , 37173
+594 , 37222 , 504 , 21 , 1 , 1 , 37173
+594 , 37223 , 504 , 21 , 1 , 1 , 37173
+594 , 37224 , 504 , 21 , 1 , 1 , 37173
+594 , 37225 , 504 , 31 , 1 , 1 , 37173
+594 , 37226 , 504 , 21 , 1 , 1 , 37173
+594 , 37227 , 506 , 12 , 1 , 1 , 37173
+594 , 37228 , 503 , 13 , 1 , 1 , 37173
+594 , 37229 , 503 , 11 , 1 , 1 , 37173
+594 , 37230 , 503 , 13 , 1 , 1 , 37173
+594 , 37231 , 503 , 12 , 1 , 1 , 37173
+594 , 37232 , 503 , 12 , 1 , 1 , 37173
+594 , 37233 , 499 , 44 , 1 , 1 , 37173
+594 , 37234 , 499 , 34 , 1 , 1 , 37173
+594 , 37235 , 498 , 31 , 1 , 1 , 37173
+594 , 37236 , 498 , 31 , 1 , 1 , 37173
+594 , 37237 , 497 , 51 , 1 , 1 , 37173
+594 , 37238 , 496 , 41 , 1 , 1 , 37173
+594 , 37239 , 496 , 31 , 1 , 1 , 37173
+594 , 37240 , 496 , 31 , 1 , 1 , 37173
+594 , 37241 , 496 , 31 , 1 , 1 , 37173
+594 , 37242 , 494 , 33 , 1 , 1 , 37173
+594 , 37243 , 494 , 33 , 1 , 1 , 37173
+594 , 37244 , 494 , 33 , 1 , 1 , 37173
+594 , 37245 , 494 , 33 , 1 , 1 , 37173
+594 , 37246 , 494 , 33 , 1 , 1 , 37173
+594 , 37247 , 494 , 43 , 1 , 1 , 37173
+594 , 37248 , 494 , 23 , 1 , 1 , 37173
+594 , 37249 , 489 , 32 , 1 , 1 , 37173
+594 , 37250 , 486 , 34 , 1 , 1 , 37173
+594 , 37251 , 486 , 35 , 1 , 1 , 37173
+594 , 37252 , 486 , 35 , 1 , 1 , 37173
+594 , 37253 , 491 , 21 , 1 , 1 , 37173
+594 , 37254 , 490 , 22 , 1 , 1 , 37173
+594 , 37255 , 485 , 35 , 1 , 1 , 37173
+594 , 37256 , 484 , 35 , 1 , 1 , 37173
+594 , 37257 , 483 , 35 , 1 , 1 , 37173
+594 , 37258 , 483 , 35 , 1 , 1 , 37173
+594 , 37259 , 483 , 25 , 1 , 1 , 37173
+594 , 37260 , 482 , 32 , 1 , 1 , 37173
+594 , 37261 , 481 , 32 , 1 , 1 , 37173
+594 , 37262 , 481 , 32 , 1 , 1 , 37173
+594 , 37263 , 480 , 32 , 1 , 1 , 37173
+594 , 37264 , 480 , 32 , 1 , 1 , 37173
+594 , 37265 , 479 , 33 , 1 , 1 , 37173
+594 , 37266 , 480 , 32 , 1 , 1 , 37173
+594 , 37267 , 479 , 22 , 1 , 1 , 37173
+594 , 37268 , 478 , 32 , 1 , 1 , 37173
+594 , 37269 , 479 , 32 , 1 , 1 , 37173
+594 , 37270 , 483 , 32 , 1 , 1 , 37173
+594 , 37271 , 478 , 33 , 1 , 1 , 37173
+594 , 37272 , 496 , 21 , 1 , 1 , 37173
+594 , 37273 , 478 , 33 , 1 , 1 , 37173
+594 , 37274 , 482 , 22 , 1 , 1 , 37173
+594 , 37275 , 477 , 34 , 1 , 1 , 37173
+594 , 37276 , 478 , 33 , 1 , 1 , 37173
+594 , 37277 , 477 , 34 , 1 , 1 , 37173
+594 , 37278 , 476 , 34 , 1 , 1 , 37173
+594 , 37279 , 477 , 34 , 1 , 1 , 37173
+594 , 37280 , 472 , 32 , 1 , 1 , 37173
+594 , 37281 , 471 , 33 , 1 , 1 , 37173
+594 , 37282 , 468 , 32 , 1 , 1 , 37173
+594 , 37283 , 477 , 34 , 1 , 1 , 37173
+594 , 37284 , 474 , 37 , 1 , 1 , 37173
+594 , 37285 , 465 , 33 , 1 , 1 , 37173
+594 , 37286 , 461 , 33 , 1 , 1 , 37173
+594 , 37287 , 468 , 32 , 1 , 1 , 37173
+594 , 37288 , 458 , 32 , 1 , 1 , 37173
+594 , 37289 , 534 , 32 , 1 , 1 , 37173
+594 , 37290 , 534 , 32 , 1 , 1 , 37173
+594 , 37291 , 533 , 32 , 1 , 1 , 37173
+594 , 37292 , 533 , 21 , 1 , 1 , 37173
+594 , 37293 , 486 , 35 , 1 , 1 , 37173
+594 , 37294 , 475 , 36 , 1 , 1 , 37173
+594 , 37295 , 464 , 34 , 1 , 1 , 37173
+594 , 37296 , 534 , 32 , 1 , 1 , 37173
+594 , 37297 , 457 , 32 , 1 , 1 , 37173
+594 , 37298 , 454 , 33 , 1 , 1 , 37173
+594 , 37299 , 451 , 32 , 1 , 1 , 37173
+594 , 37300 , 447 , 32 , 1 , 1 , 37173
+594 , 37301 , 471 , 42 , 1 , 1 , 37173
+594 , 37302 , 471 , 32 , 1 , 1 , 37173
+594 , 37303 , 471 , 52 , 1 , 1 , 37173
+594 , 37304 , 471 , 52 , 1 , 1 , 37173
+594 , 37305 , 471 , 52 , 1 , 1 , 37173
+594 , 37306 , 470 , 45 , 1 , 1 , 37173
+594 , 37307 , 467 , 52 , 1 , 1 , 37173
+594 , 37308 , 466 , 52 , 1 , 1 , 37173
+594 , 37309 , 466 , 52 , 1 , 1 , 37173
+594 , 37310 , 466 , 41 , 1 , 1 , 37173
+594 , 37311 , 466 , 42 , 1 , 1 , 37173
+594 , 37312 , 466 , 42 , 1 , 1 , 37173
+594 , 37313 , 466 , 42 , 1 , 1 , 37173
+594 , 37314 , 466 , 41 , 1 , 1 , 37173
+594 , 37315 , 465 , 41 , 1 , 1 , 37173
+594 , 37316 , 465 , 52 , 1 , 1 , 37173
+594 , 37317 , 461 , 41 , 1 , 1 , 37173
+594 , 37318 , 460 , 41 , 1 , 1 , 37173
+594 , 37319 , 460 , 41 , 1 , 1 , 37173
+594 , 37320 , 460 , 52 , 1 , 1 , 37173
+594 , 37321 , 460 , 41 , 1 , 1 , 37173
+594 , 37322 , 460 , 41 , 1 , 1 , 37173
+594 , 37323 , 460 , 41 , 1 , 1 , 37173
+594 , 37324 , 460 , 41 , 1 , 1 , 37173
+594 , 37325 , 459 , 52 , 1 , 1 , 37173
+594 , 37326 , 459 , 34 , 1 , 1 , 37173
+594 , 37327 , 455 , 41 , 1 , 1 , 37173
+594 , 37328 , 455 , 52 , 1 , 1 , 37173
+594 , 37329 , 455 , 41 , 1 , 1 , 37173
+594 , 37330 , 455 , 41 , 1 , 1 , 37173
+594 , 37331 , 454 , 41 , 1 , 1 , 37173
+594 , 37332 , 454 , 31 , 1 , 1 , 37173
+594 , 37333 , 454 , 52 , 1 , 1 , 37173
+594 , 37334 , 454 , 41 , 1 , 1 , 37173
+594 , 37335 , 454 , 52 , 1 , 1 , 37173
+594 , 37336 , 454 , 31 , 1 , 1 , 37173
+594 , 37337 , 448 , 52 , 1 , 1 , 37173
+594 , 37338 , 448 , 52 , 1 , 1 , 37173
+594 , 37339 , 448 , 52 , 1 , 1 , 37173
+594 , 37340 , 448 , 41 , 1 , 1 , 37173
+594 , 37341 , 448 , 41 , 1 , 1 , 37173
+594 , 37342 , 448 , 41 , 1 , 1 , 37173
+594 , 37343 , 447 , 31 , 1 , 1 , 37173
+594 , 37344 , 447 , 31 , 1 , 1 , 37173
+594 , 37345 , 447 , 21 , 1 , 1 , 37173
+594 , 37346 , 447 , 21 , 1 , 1 , 37173
+594 , 37347 , 443 , 32 , 1 , 1 , 37173
+594 , 37348 , 442 , 21 , 1 , 1 , 37173
+594 , 37349 , 442 , 31 , 1 , 1 , 37173
+594 , 37350 , 442 , 31 , 1 , 1 , 37173
+594 , 37351 , 442 , 31 , 1 , 1 , 37173
+594 , 37352 , 442 , 21 , 1 , 1 , 37173
+594 , 37353 , 442 , 21 , 1 , 1 , 37173
+594 , 37354 , 442 , 21 , 1 , 1 , 37173
+594 , 37355 , 442 , 21 , 1 , 1 , 37173
+594 , 37356 , 442 , 21 , 1 , 1 , 37173
+594 , 37357 , 438 , 21 , 1 , 1 , 37173
+594 , 37358 , 438 , 21 , 1 , 1 , 37173
+594 , 37359 , 438 , 21 , 1 , 1 , 37173
+594 , 37360 , 438 , 21 , 1 , 1 , 37173
+594 , 37361 , 438 , 11 , 1 , 1 , 37173
+594 , 37362 , 438 , 11 , 1 , 1 , 37173
+594 , 37363 , 438 , 11 , 1 , 1 , 37173
+594 , 37364 , 438 , 21 , 1 , 1 , 37173
+594 , 37365 , 438 , 21 , 1 , 1 , 37173
+594 , 37366 , 438 , 11 , 1 , 1 , 37173
+594 , 37367 , 633 , 21 , 1 , 1 , 37215 37256 37249 37349 37242 37332 37175 37218 37243 37291 37320 37328 37348 37359 37318 37304 37178 37192 37216 37225 37179 37208 37319 37189 37284 37202 37199 37268 37346 37193 37248 37205 37214 37350 37342 37250 37335 37325 37187 37324 37361 37290 37277 37239 37223 37254 37315 37220 37338 37200 37271 37229 37269 37283 37231 37357 37279 37354 37293 37236 37207 37258 37262 37245 37206 37278 37288 37336 37334 37234 37364 37181 37196 37297 37313 37212 37327 37345 37185 37210 37314 37301 37347 37309 37273 37180 37221 37311 37344 37362 37183 37232 37355 37188 37333 37317 37322 37289 37326 37358 37198 37244 37294 37360 37195 37298 37307 37227 37264 37204 37323 37285 37233 37296 37356 37197 37265 37292 37191 37213 37240 37182 37235 37194 37203 37321 37343 37226 37224 37310 37302 37363 37281 37337 37295 37260 37238 37270 37274 37286 37190 37211 37217 37209 37282 37219 37272 37339 37365 37341 37257 37201 37316 37275 37261 37237 37287 37329 37280 37263 37222 37351 37255 37251 37366 37184 37266 37230 37312 37252 37228 37186 37176 37246 37300 37259 37241 37340 37303 37352 37247 37306 37331 37177 37308 37174 37267 37299 37305 37330 37353 37253 37276
+595 , 37368 , 2 , 11 , 1 , 1 ,
+595 , 37369 , 47 , 231 , 1 , 1 , 37368
+595 , 37370 , 47 , 241 , 1 , 1 , 37368
+595 , 37371 , 46 , 241 , 1 , 1 , 37368
+595 , 37372 , 46 , 241 , 1 , 1 , 37368
+595 , 37373 , 46 , 231 , 1 , 1 , 37368
+595 , 37374 , 45 , 251 , 1 , 1 , 37368
+595 , 37375 , 45 , 231 , 1 , 1 , 37368
+595 , 37376 , 45 , 241 , 1 , 1 , 37368
+595 , 37377 , 44 , 241 , 1 , 1 , 37368
+595 , 37378 , 44 , 241 , 1 , 1 , 37368
+595 , 37379 , 44 , 252 , 1 , 1 , 37368
+595 , 37380 , 43 , 230 , 1 , 1 , 37368
+595 , 37381 , 43 , 241 , 1 , 1 , 37368
+595 , 37382 , 43 , 271 , 1 , 1 , 37368
+595 , 37383 , 42 , 240 , 1 , 1 , 37368
+595 , 37384 , 42 , 261 , 1 , 1 , 37368
+595 , 37385 , 42 , 240 , 1 , 1 , 37368
+595 , 37386 , 41 , 240 , 1 , 1 , 37368
+595 , 37387 , 41 , 240 , 1 , 1 , 37368
+595 , 37388 , 41 , 240 , 1 , 1 , 37368
+595 , 37389 , 40 , 240 , 1 , 1 , 37368
+595 , 37390 , 40 , 271 , 1 , 1 , 37368
+595 , 37391 , 40 , 240 , 1 , 1 , 37368
+595 , 37392 , 39 , 230 , 1 , 1 , 37368
+595 , 37393 , 39 , 261 , 1 , 1 , 37368
+595 , 37394 , 39 , 241 , 1 , 1 , 37368
+595 , 37395 , 38 , 262 , 1 , 1 , 37368
+595 , 37396 , 38 , 241 , 1 , 1 , 37368
+595 , 37397 , 38 , 241 , 1 , 1 , 37368
+595 , 37398 , 62 , 52 , 1 , 1 , 37368
+595 , 37399 , 62 , 52 , 1 , 1 , 37368
+595 , 37400 , 61 , 52 , 1 , 1 , 37368
+595 , 37401 , 60 , 52 , 1 , 1 , 37368
+595 , 37402 , 60 , 52 , 1 , 1 , 37368
+595 , 37403 , 60 , 52 , 1 , 1 , 37368
+595 , 37404 , 59 , 52 , 1 , 1 , 37368
+595 , 37405 , 58 , 62 , 1 , 1 , 37368
+595 , 37406 , 58 , 52 , 1 , 1 , 37368
+595 , 37407 , 58 , 52 , 1 , 1 , 37368
+595 , 37408 , 54 , 62 , 1 , 1 , 37368
+595 , 37409 , 54 , 62 , 1 , 1 , 37368
+595 , 37410 , 53 , 62 , 1 , 1 , 37368
+595 , 37411 , 52 , 62 , 1 , 1 , 37368
+595 , 37412 , 51 , 62 , 1 , 1 , 37368
+595 , 37413 , 51 , 52 , 1 , 1 , 37368
+595 , 37414 , 51 , 62 , 1 , 1 , 37368
+595 , 37415 , 50 , 62 , 1 , 1 , 37368
+595 , 37416 , 50 , 62 , 1 , 1 , 37368
+595 , 37417 , 50 , 62 , 1 , 1 , 37368
+595 , 37418 , 47 , 62 , 1 , 1 , 37368
+595 , 37419 , 46 , 62 , 1 , 1 , 37368
+595 , 37420 , 46 , 52 , 1 , 1 , 37368
+595 , 37421 , 45 , 62 , 1 , 1 , 37368
+595 , 37422 , 45 , 62 , 1 , 1 , 37368
+595 , 37423 , 45 , 62 , 1 , 1 , 37368
+595 , 37424 , 45 , 52 , 1 , 1 , 37368
+595 , 37425 , 45 , 52 , 1 , 1 , 37368
+595 , 37426 , 45 , 52 , 1 , 1 , 37368
+595 , 37427 , 44 , 41 , 1 , 1 , 37368
+595 , 37428 , 41 , 42 , 1 , 1 , 37368
+595 , 37429 , 41 , 62 , 1 , 1 , 37368
+595 , 37430 , 40 , 62 , 1 , 1 , 37368
+595 , 37431 , 40 , 62 , 1 , 1 , 37368
+595 , 37432 , 40 , 52 , 1 , 1 , 37368
+595 , 37433 , 40 , 52 , 1 , 1 , 37368
+595 , 37434 , 40 , 41 , 1 , 1 , 37368
+595 , 37435 , 39 , 41 , 1 , 1 , 37368
+595 , 37436 , 39 , 41 , 1 , 1 , 37368
+595 , 37437 , 38 , 52 , 1 , 1 , 37368
+595 , 37438 , 36 , 52 , 1 , 1 , 37368
+595 , 37439 , 35 , 52 , 1 , 1 , 37368
+595 , 37440 , 35 , 52 , 1 , 1 , 37368
+595 , 37441 , 35 , 41 , 1 , 1 , 37368
+595 , 37442 , 34 , 41 , 1 , 1 , 37368
+595 , 37443 , 34 , 41 , 1 , 1 , 37368
+595 , 37444 , 34 , 41 , 1 , 1 , 37368
+595 , 37445 , 33 , 41 , 1 , 1 , 37368
+595 , 37446 , 33 , 41 , 1 , 1 , 37368
+595 , 37447 , 32 , 52 , 1 , 1 , 37368
+595 , 37448 , 30 , 41 , 1 , 1 , 37368
+595 , 37449 , 30 , 52 , 1 , 1 , 37368
+595 , 37450 , 29 , 52 , 1 , 1 , 37368
+595 , 37451 , 28 , 52 , 1 , 1 , 37368
+595 , 37452 , 28 , 52 , 1 , 1 , 37368
+595 , 37453 , 28 , 52 , 1 , 1 , 37368
+595 , 37454 , 28 , 52 , 1 , 1 , 37368
+595 , 37455 , 28 , 52 , 1 , 1 , 37368
+595 , 37456 , 27 , 52 , 1 , 1 , 37368
+595 , 37457 , 27 , 52 , 1 , 1 , 37368
+595 , 37458 , 25 , 52 , 1 , 1 , 37368
+595 , 37459 , 25 , 52 , 1 , 1 , 37368
+595 , 37460 , 25 , 52 , 1 , 1 , 37368
+595 , 37461 , 25 , 52 , 1 , 1 , 37368
+595 , 37462 , 25 , 52 , 1 , 1 , 37368
+595 , 37463 , 25 , 52 , 1 , 1 , 37368
+595 , 37464 , 25 , 52 , 1 , 1 , 37368
+595 , 37465 , 25 , 52 , 1 , 1 , 37368
+595 , 37466 , 25 , 52 , 1 , 1 , 37368
+595 , 37467 , 25 , 52 , 1 , 1 , 37368
+595 , 37468 , 25 , 52 , 1 , 1 , 37368
+595 , 37469 , 332 , 0 , 1 , 1 , 37370 37450 37395 37418 37407 37429 37456 37378 37451 37398 37397 37459 37369 37430 37404 37388 37412 37401 37435 37421 37391 37383 37448 37417 37461 37414 37445 37381 37377 37465 37408 37420 37416 37393 37434 37411 37376 37466 37400 37422 37392 37438 37455 37452 37389 37424 37431 37374 37403 37440 37446 37396 37439 37406 37371 37372 37373 37426 37443 37380 37453 37409 37419 37464 37410 37449 37384 37423 37433 37385 37405 37432 37454 37427 37462 37399 37379 37425 37437 37457 37375 37386 37460 37382 37390 37402 37468 37441 37458 37444 37447 37394 37467 37413 37428 37415 37436 37387 37442 37463
+595 , 37470 , 383 , 32 , 1 , 1 , 37469
+595 , 37471 , 382 , 32 , 1 , 1 , 37469
+595 , 37472 , 383 , 32 , 1 , 1 , 37469
+595 , 37473 , 383 , 32 , 1 , 1 , 37469
+595 , 37474 , 381 , 32 , 1 , 1 , 37469
+595 , 37475 , 384 , 32 , 1 , 1 , 37469
+595 , 37476 , 384 , 32 , 1 , 1 , 37469
+595 , 37477 , 382 , 32 , 1 , 1 , 37469
+595 , 37478 , 382 , 21 , 1 , 1 , 37469
+595 , 37479 , 390 , 32 , 1 , 1 , 37469
+595 , 37480 , 380 , 32 , 1 , 1 , 37469
+595 , 37481 , 381 , 32 , 1 , 1 , 37469
+595 , 37482 , 377 , 32 , 1 , 1 , 37469
+595 , 37483 , 384 , 32 , 1 , 1 , 37469
+595 , 37484 , 373 , 33 , 1 , 1 , 37469
+595 , 37485 , 379 , 32 , 1 , 1 , 37469
+595 , 37486 , 376 , 32 , 1 , 1 , 37469
+595 , 37487 , 369 , 32 , 1 , 1 , 37469
+595 , 37488 , 367 , 32 , 1 , 1 , 37469
+595 , 37489 , 380 , 32 , 1 , 1 , 37469
+595 , 37490 , 366 , 32 , 1 , 1 , 37469
+595 , 37491 , 381 , 32 , 1 , 1 , 37469
+595 , 37492 , 380 , 32 , 1 , 1 , 37469
+595 , 37493 , 397 , 32 , 1 , 1 , 37469
+595 , 37494 , 370 , 32 , 1 , 1 , 37469
+595 , 37495 , 363 , 32 , 1 , 1 , 37469
+595 , 37496 , 374 , 32 , 1 , 1 , 37469
+595 , 37497 , 394 , 32 , 1 , 1 , 37469
+595 , 37498 , 393 , 32 , 1 , 1 , 37469
+595 , 37499 , 363 , 33 , 1 , 1 , 37469
+595 , 37500 , 356 , 32 , 1 , 1 , 37469
+595 , 37501 , 352 , 33 , 1 , 1 , 37469
+595 , 37502 , 375 , 31 , 1 , 1 , 37469
+595 , 37503 , 375 , 41 , 1 , 1 , 37469
+595 , 37504 , 375 , 31 , 1 , 1 , 37469
+595 , 37505 , 375 , 31 , 1 , 1 , 37469
+595 , 37506 , 374 , 41 , 1 , 1 , 37469
+595 , 37507 , 374 , 31 , 1 , 1 , 37469
+595 , 37508 , 374 , 31 , 1 , 1 , 37469
+595 , 37509 , 373 , 41 , 1 , 1 , 37469
+595 , 37510 , 371 , 41 , 1 , 1 , 37469
+595 , 37511 , 370 , 41 , 1 , 1 , 37469
+595 , 37512 , 370 , 41 , 1 , 1 , 37469
+595 , 37513 , 370 , 41 , 1 , 1 , 37469
+595 , 37514 , 370 , 41 , 1 , 1 , 37469
+595 , 37515 , 370 , 41 , 1 , 1 , 37469
+595 , 37516 , 369 , 31 , 1 , 1 , 37469
+595 , 37517 , 369 , 31 , 1 , 1 , 37469
+595 , 37518 , 369 , 42 , 1 , 1 , 37469
+595 , 37519 , 368 , 42 , 1 , 1 , 37469
+595 , 37520 , 366 , 41 , 1 , 1 , 37469
+595 , 37521 , 366 , 41 , 1 , 1 , 37469
+595 , 37522 , 365 , 41 , 1 , 1 , 37469
+595 , 37523 , 365 , 41 , 1 , 1 , 37469
+595 , 37524 , 365 , 52 , 1 , 1 , 37469
+595 , 37525 , 364 , 41 , 1 , 1 , 37469
+595 , 37526 , 364 , 41 , 1 , 1 , 37469
+595 , 37527 , 364 , 41 , 1 , 1 , 37469
+595 , 37528 , 364 , 41 , 1 , 1 , 37469
+595 , 37529 , 363 , 52 , 1 , 1 , 37469
+595 , 37530 , 361 , 41 , 1 , 1 , 37469
+595 , 37531 , 361 , 52 , 1 , 1 , 37469
+595 , 37532 , 361 , 52 , 1 , 1 , 37469
+595 , 37533 , 360 , 41 , 1 , 1 , 37469
+595 , 37534 , 360 , 41 , 1 , 1 , 37469
+595 , 37535 , 360 , 42 , 1 , 1 , 37469
+595 , 37536 , 360 , 41 , 1 , 1 , 37469
+595 , 37537 , 360 , 41 , 1 , 1 , 37469
+595 , 37538 , 360 , 42 , 1 , 1 , 37469
+595 , 37539 , 360 , 42 , 1 , 1 , 37469
+595 , 37540 , 355 , 52 , 1 , 1 , 37469
+595 , 37541 , 355 , 52 , 1 , 1 , 37469
+595 , 37542 , 355 , 52 , 1 , 1 , 37469
+595 , 37543 , 355 , 52 , 1 , 1 , 37469
+595 , 37544 , 355 , 52 , 1 , 1 , 37469
+595 , 37545 , 355 , 41 , 1 , 1 , 37469
+595 , 37546 , 355 , 41 , 1 , 1 , 37469
+595 , 37547 , 355 , 52 , 1 , 1 , 37469
+595 , 37548 , 354 , 52 , 1 , 1 , 37469
+595 , 37549 , 354 , 51 , 1 , 1 , 37469
+595 , 37550 , 351 , 52 , 1 , 1 , 37469
+595 , 37551 , 351 , 52 , 1 , 1 , 37469
+595 , 37552 , 351 , 52 , 1 , 1 , 37469
+595 , 37553 , 351 , 52 , 1 , 1 , 37469
+595 , 37554 , 351 , 52 , 1 , 1 , 37469
+595 , 37555 , 351 , 52 , 1 , 1 , 37469
+595 , 37556 , 350 , 52 , 1 , 1 , 37469
+595 , 37557 , 350 , 52 , 1 , 1 , 37469
+595 , 37558 , 350 , 52 , 1 , 1 , 37469
+595 , 37559 , 350 , 52 , 1 , 1 , 37469
+595 , 37560 , 347 , 52 , 1 , 1 , 37469
+595 , 37561 , 347 , 41 , 1 , 1 , 37469
+595 , 37562 , 347 , 41 , 1 , 1 , 37469
+595 , 37563 , 347 , 41 , 1 , 1 , 37469
+595 , 37564 , 347 , 41 , 1 , 1 , 37469
+595 , 37565 , 347 , 52 , 1 , 1 , 37469
+595 , 37566 , 347 , 41 , 1 , 1 , 37469
+595 , 37567 , 347 , 41 , 1 , 1 , 37469
+595 , 37568 , 347 , 41 , 1 , 1 , 37469
+595 , 37569 , 347 , 52 , 1 , 1 , 37469
+595 , 37570 , 455 , 11 , 1 , 1 , 37543 37502 37477 37558 37509 37494 37485 37510 37504 37503 37473 37566 37539 37556 37536 37555 37483 37475 37564 37481 37523 37552 37563 37560 37533 37479 37488 37499 37544 37490 37486 37524 37520 37514 37501 37569 37492 37529 37526 37522 37505 37493 37565 37554 37550 37482 37528 37547 37511 37480 37538 37470 37532 37516 37557 37562 37541 37568 37549 37548 37535 37487 37527 37540 37474 37471 37551 37500 37495 37489 37545 37561 37519 37506 37476 37491 37498 37553 37507 37508 37478 37542 37525 37497 37517 37515 37546 37567 37496 37512 37559 37472 37530 37484 37513 37531 37537 37518 37521 37534
+596 , 37571 , 21 , 189 , 1 , 1 ,
+596 , 37572 , 18 , 179 , 1 , 1 ,
+596 , 37573 , 18 , 179 , 1 , 1 ,
+596 , 37574 , 17 , 200 , 1 , 1 ,
+596 , 37575 , 17 , 197 , 1 , 1 ,
+596 , 37576 , 17 , 215 , 1 , 1 ,
+596 , 37577 , 17 , 207 , 1 , 1 ,
+596 , 37578 , 17 , 238 , 1 , 1 ,
+596 , 37579 , 17 , 228 , 1 , 1 ,
+596 , 37580 , 16 , 232 , 1 , 1 ,
+596 , 37581 , 13 , 243 , 1 , 1 ,
+596 , 37582 , 10 , 250 , 1 , 1 ,
+596 , 37583 , 10 , 229 , 1 , 1 ,
+596 , 37584 , 9 , 209 , 1 , 1 ,
+596 , 37585 , 9 , 199 , 1 , 1 ,
+596 , 37586 , 9 , 199 , 1 , 1 ,
+596 , 37587 , 9 , 210 , 1 , 1 ,
+596 , 37588 , 9 , 210 , 1 , 1 ,
+596 , 37589 , 9 , 200 , 1 , 1 ,
+596 , 37590 , 9 , 196 , 1 , 1 ,
+596 , 37591 , 3 , 203 , 1 , 1 ,
+596 , 37592 , 3 , 203 , 1 , 1 ,
+596 , 37593 , 3 , 206 , 1 , 1 ,
+596 , 37594 , 3 , 203 , 1 , 1 ,
+596 , 37595 , 3 , 224 , 1 , 1 ,
+596 , 37596 , 3 , 203 , 1 , 1 ,
+596 , 37597 , 3 , 193 , 1 , 1 ,
+596 , 37598 , 3 , 194 , 1 , 1 ,
+596 , 37599 , 3 , 203 , 1 , 1 ,
+596 , 37600 , 3 , 194 , 1 , 1 ,
+596 , 37601 , 278 , 92 , 1 , 1 , 37573 37599 37582 37589 37580 37597 37598 37572 37591 37571 37600 37587 37583 37595 37581 37577 37588 37585 37593 37578 37574 37586 37575 37592 37590 37596 37579 37576 37594 37584
+597 , 37602 , 20 , 189 , 1 , 1 ,
+597 , 37603 , 20 , 176 , 1 , 1 ,
+597 , 37604 , 20 , 154 , 1 , 1 ,
+597 , 37605 , 20 , 176 , 1 , 1 ,
+597 , 37606 , 20 , 187 , 1 , 1 ,
+597 , 37607 , 20 , 186 , 1 , 1 ,
+597 , 37608 , 20 , 198 , 1 , 1 ,
+597 , 37609 , 20 , 197 , 1 , 1 ,
+597 , 37610 , 20 , 209 , 1 , 1 ,
+597 , 37611 , 20 , 219 , 1 , 1 ,
+597 , 37612 , 10 , 221 , 1 , 1 ,
+597 , 37613 , 9 , 221 , 1 , 1 ,
+597 , 37614 , 9 , 220 , 1 , 1 ,
+597 , 37615 , 9 , 221 , 1 , 1 ,
+597 , 37616 , 9 , 241 , 1 , 1 ,
+597 , 37617 , 9 , 231 , 1 , 1 ,
+597 , 37618 , 9 , 208 , 1 , 1 ,
+597 , 37619 , 9 , 198 , 1 , 1 ,
+597 , 37620 , 9 , 207 , 1 , 1 ,
+597 , 37621 , 9 , 208 , 1 , 1 ,
+597 , 37622 , 6 , 199 , 1 , 1 ,
+597 , 37623 , 6 , 189 , 1 , 1 ,
+597 , 37624 , 6 , 212 , 1 , 1 ,
+597 , 37625 , 6 , 202 , 1 , 1 ,
+597 , 37626 , 6 , 199 , 1 , 1 ,
+597 , 37627 , 6 , 202 , 1 , 1 ,
+597 , 37628 , 6 , 209 , 1 , 1 ,
+597 , 37629 , 6 , 210 , 1 , 1 ,
+597 , 37630 , 6 , 199 , 1 , 1 ,
+597 , 37631 , 5 , 202 , 1 , 1 ,
+597 , 37632 , 2 , 210 , 1 , 1 ,
+597 , 37633 , 2 , 212 , 1 , 1 ,
+597 , 37634 , 2 , 220 , 1 , 1 ,
+597 , 37635 , 2 , 200 , 1 , 1 ,
+597 , 37636 , 2 , 200 , 1 , 1 ,
+597 , 37637 , 2 , 189 , 1 , 1 ,
+597 , 37638 , 2 , 189 , 1 , 1 ,
+597 , 37639 , 2 , 199 , 1 , 1 ,
+597 , 37640 , 2 , 199 , 1 , 1 ,
+597 , 37641 , 2 , 189 , 1 , 1 ,
+597 , 37642 , 273 , 113 , 1 , 1 , 37635 37623 37608 37630 37602 37622 37621 37609 37606 37628 37620 37610 37634 37633 37631 37613 37638 37637 37612 37632 37619 37611 37607 37616 37618 37624 37636 37614 37604 37615 37641 37629 37640 37603 37617 37625 37605 37626 37627 37639
+598 , 37643 , 7 , 52 , 1 , 1 ,
+598 , 37644 , 7 , 31 , 1 , 1 ,
+598 , 37645 , 7 , 41 , 1 , 1 ,
+598 , 37646 , 7 , 41 , 1 , 1 ,
+598 , 37647 , 7 , 52 , 1 , 1 ,
+598 , 37648 , 7 , 52 , 1 , 1 ,
+598 , 37649 , 7 , 52 , 1 , 1 ,
+598 , 37650 , 7 , 52 , 1 , 1 ,
+598 , 37651 , 7 , 52 , 1 , 1 ,
+598 , 37652 , 7 , 41 , 1 , 1 ,
+598 , 37653 , 2 , 41 , 1 , 1 ,
+598 , 37654 , 2 , 52 , 1 , 1 ,
+598 , 37655 , 2 , 41 , 1 , 1 ,
+598 , 37656 , 2 , 52 , 1 , 1 ,
+598 , 37657 , 2 , 52 , 1 , 1 ,
+598 , 37658 , 2 , 52 , 1 , 1 ,
+598 , 37659 , 2 , 52 , 1 , 1 ,
+598 , 37660 , 2 , 41 , 1 , 1 ,
+598 , 37661 , 2 , 52 , 1 , 1 ,
+598 , 37662 , 2 , 52 , 1 , 1 ,
+598 , 37663 , 75 , 11 , 1 , 1 , 37662 37648 37661 37652 37654 37658 37657 37655 37660 37647 37646 37651 37653 37644 37656 37659 37649 37643 37645 37650
+599 , 37664 , 7 , 41 , 1 , 1 ,
+599 , 37665 , 7 , 41 , 1 , 1 ,
+599 , 37666 , 6 , 41 , 1 , 1 ,
+599 , 37667 , 6 , 41 , 1 , 1 ,
+599 , 37668 , 6 , 41 , 1 , 1 ,
+599 , 37669 , 6 , 52 , 1 , 1 ,
+599 , 37670 , 6 , 52 , 1 , 1 ,
+599 , 37671 , 6 , 52 , 1 , 1 ,
+599 , 37672 , 6 , 52 , 1 , 1 ,
+599 , 37673 , 6 , 41 , 1 , 1 ,
+599 , 37674 , 2 , 51 , 1 , 1 ,
+599 , 37675 , 2 , 52 , 1 , 1 ,
+599 , 37676 , 2 , 52 , 1 , 1 ,
+599 , 37677 , 2 , 52 , 1 , 1 ,
+599 , 37678 , 2 , 41 , 1 , 1 ,
+599 , 37679 , 2 , 52 , 1 , 1 ,
+599 , 37680 , 2 , 52 , 1 , 1 ,
+599 , 37681 , 2 , 52 , 1 , 1 ,
+599 , 37682 , 2 , 52 , 1 , 1 ,
+599 , 37683 , 2 , 52 , 1 , 1 ,
+599 , 37684 , 76 , 11 , 1 , 1 , 37681 37683 37667 37673 37682 37664 37679 37678 37671 37677 37665 37668 37676 37669 37672 37674 37675 37666 37680 37670
+600 , 37685 , 7 , 41 , 1 , 1 ,
+600 , 37686 , 7 , 41 , 1 , 1 ,
+600 , 37687 , 7 , 41 , 1 , 1 ,
+600 , 37688 , 7 , 41 , 1 , 1 ,
+600 , 37689 , 7 , 52 , 1 , 1 ,
+600 , 37690 , 7 , 52 , 1 , 1 ,
+600 , 37691 , 7 , 52 , 1 , 1 ,
+600 , 37692 , 7 , 62 , 1 , 1 ,
+600 , 37693 , 7 , 52 , 1 , 1 ,
+600 , 37694 , 7 , 52 , 1 , 1 ,
+600 , 37695 , 2 , 52 , 1 , 1 ,
+600 , 37696 , 2 , 52 , 1 , 1 ,
+600 , 37697 , 2 , 41 , 1 , 1 ,
+600 , 37698 , 2 , 52 , 1 , 1 ,
+600 , 37699 , 2 , 52 , 1 , 1 ,
+600 , 37700 , 2 , 52 , 1 , 1 ,
+600 , 37701 , 2 , 52 , 1 , 1 ,
+600 , 37702 , 2 , 52 , 1 , 1 ,
+600 , 37703 , 2 , 52 , 1 , 1 ,
+600 , 37704 , 2 , 52 , 1 , 1 ,
+600 , 37705 , 85 , 11 , 1 , 1 , 37699 37702 37689 37692 37698 37693 37685 37686 37701 37690 37696 37697 37691 37703 37687 37695 37704 37700 37688 37694
+601 , 37706 , 7 , 41 , 1 , 1 ,
+601 , 37707 , 6 , 41 , 1 , 1 ,
+601 , 37708 , 6 , 41 , 1 , 1 ,
+601 , 37709 , 6 , 41 , 1 , 1 ,
+601 , 37710 , 6 , 41 , 1 , 1 ,
+601 , 37711 , 6 , 52 , 1 , 1 ,
+601 , 37712 , 6 , 52 , 1 , 1 ,
+601 , 37713 , 6 , 52 , 1 , 1 ,
+601 , 37714 , 5 , 52 , 1 , 1 ,
+601 , 37715 , 5 , 41 , 1 , 1 ,
+601 , 37716 , 1 , 52 , 1 , 1 ,
+601 , 37717 , 1 , 41 , 1 , 1 ,
+601 , 37718 , 1 , 41 , 1 , 1 ,
+601 , 37719 , 1 , 52 , 1 , 1 ,
+601 , 37720 , 1 , 52 , 1 , 1 ,
+601 , 37721 , 1 , 52 , 1 , 1 ,
+601 , 37722 , 1 , 52 , 1 , 1 ,
+601 , 37723 , 1 , 52 , 1 , 1 ,
+601 , 37724 , 1 , 52 , 1 , 1 ,
+601 , 37725 , 1 , 52 , 1 , 1 ,
+601 , 37726 , 76 , 11 , 1 , 1 , 37724 37717 37715 37710 37708 37720 37711 37716 37713 37718 37722 37719 37712 37723 37721 37714 37725 37706 37707 37709
+602 , 37727 , 7 , 41 , 1 , 1 ,
+602 , 37728 , 7 , 41 , 1 , 1 ,
+602 , 37729 , 7 , 41 , 1 , 1 ,
+602 , 37730 , 7 , 41 , 1 , 1 ,
+602 , 37731 , 7 , 52 , 1 , 1 ,
+602 , 37732 , 7 , 52 , 1 , 1 ,
+602 , 37733 , 7 , 52 , 1 , 1 ,
+602 , 37734 , 7 , 62 , 1 , 1 ,
+602 , 37735 , 6 , 52 , 1 , 1 ,
+602 , 37736 , 6 , 41 , 1 , 1 ,
+602 , 37737 , 2 , 41 , 1 , 1 ,
+602 , 37738 , 2 , 52 , 1 , 1 ,
+602 , 37739 , 2 , 52 , 1 , 1 ,
+602 , 37740 , 2 , 52 , 1 , 1 ,
+602 , 37741 , 2 , 41 , 1 , 1 ,
+602 , 37742 , 2 , 52 , 1 , 1 ,
+602 , 37743 , 2 , 52 , 1 , 1 ,
+602 , 37744 , 2 , 52 , 1 , 1 ,
+602 , 37745 , 2 , 41 , 1 , 1 ,
+602 , 37746 , 2 , 52 , 1 , 1 ,
+602 , 37747 , 84 , 11 , 1 , 1 , 37742 37738 37737 37745 37746 37735 37729 37732 37739 37743 37734 37744 37736 37741 37740 37727 37728 37731 37730 37733
+603 , 37748 , 185 , 148 , 1 , 1 ,
+603 , 37749 , 176 , 92 , 1 , 1 ,
+603 , 37750 , 132 , 103 , 1 , 1 ,
+603 , 37751 , 132 , 103 , 1 , 1 ,
+603 , 37752 , 127 , 82 , 1 , 1 ,
+603 , 37753 , 122 , 92 , 1 , 1 ,
+603 , 37754 , 122 , 93 , 1 , 1 ,
+603 , 37755 , 168 , 92 , 1 , 1 ,
+603 , 37756 , 176 , 92 , 1 , 1 ,
+603 , 37757 , 174 , 82 , 1 , 1 ,
+603 , 37758 , 172 , 82 , 1 , 1 ,
+603 , 37759 , 171 , 82 , 1 , 1 ,
+603 , 37760 , 170 , 92 , 1 , 1 ,
+603 , 37761 , 248 , 346 , 1 , 1 ,
+603 , 37762 , 246 , 324 , 1 , 1 ,
+603 , 37763 , 273 , 72 , 1 , 1 ,
+603 , 37764 , 273 , 313 , 1 , 1 ,
+603 , 37765 , 273 , 293 , 1 , 1 ,
+603 , 37766 , 273 , 314 , 1 , 1 ,
+603 , 37767 , 273 , 92 , 1 , 1 ,
+603 , 37768 , 272 , 103 , 1 , 1 ,
+603 , 37769 , 272 , 103 , 1 , 1 ,
+603 , 37770 , 143 , 103 , 1 , 1 ,
+603 , 37771 , 143 , 114 , 1 , 1 ,
+603 , 37772 , 142 , 103 , 1 , 1 ,
+603 , 37773 , 271 , 93 , 1 , 1 ,
+603 , 37774 , 269 , 240 , 1 , 1 ,
+603 , 37775 , 269 , 250 , 1 , 1 ,
+603 , 37776 , 286 , 92 , 1 , 1 ,
+603 , 37777 , 167 , 113 , 1 , 1 ,
+603 , 37778 , 162 , 113 , 1 , 1 ,
+603 , 37779 , 161 , 113 , 1 , 1 ,
+603 , 37780 , 161 , 113 , 1 , 1 ,
+603 , 37781 , 161 , 113 , 1 , 1 ,
+603 , 37782 , 160 , 113 , 1 , 1 ,
+603 , 37783 , 158 , 113 , 1 , 1 ,
+603 , 37784 , 158 , 123 , 1 , 1 ,
+603 , 37785 , 158 , 123 , 1 , 1 ,
+603 , 37786 , 158 , 123 , 1 , 1 ,
+603 , 37787 , 157 , 113 , 1 , 1 ,
+603 , 37788 , 155 , 123 , 1 , 1 ,
+603 , 37789 , 155 , 123 , 1 , 1 ,
+603 , 37790 , 284 , 103 , 1 , 1 ,
+603 , 37791 , 284 , 113 , 1 , 1 ,
+603 , 37792 , 283 , 103 , 1 , 1 ,
+603 , 37793 , 283 , 209 , 1 , 1 ,
+603 , 37794 , 283 , 230 , 1 , 1 ,
+603 , 37795 , 283 , 103 , 1 , 1 ,
+603 , 37796 , 282 , 113 , 1 , 1 ,
+603 , 37797 , 281 , 113 , 1 , 1 ,
+603 , 37798 , 170 , 113 , 1 , 1 ,
+603 , 37799 , 169 , 113 , 1 , 1 ,
+603 , 37800 , 168 , 113 , 1 , 1 ,
+603 , 37801 , 155 , 123 , 1 , 1 ,
+603 , 37802 , 154 , 123 , 1 , 1 ,
+603 , 37803 , 154 , 114 , 1 , 1 ,
+603 , 37804 , 148 , 123 , 1 , 1 ,
+603 , 37805 , 144 , 123 , 1 , 1 ,
+603 , 37806 , 167 , 123 , 1 , 1 ,
+603 , 37807 , 238 , 221 , 1 , 1 ,
+603 , 37808 , 238 , 113 , 1 , 1 ,
+603 , 37809 , 238 , 103 , 1 , 1 ,
+603 , 37810 , 238 , 113 , 1 , 1 ,
+603 , 37811 , 238 , 103 , 1 , 1 ,
+603 , 37812 , 142 , 133 , 1 , 1 ,
+603 , 37813 , 138 , 134 , 1 , 1 ,
+603 , 37814 , 137 , 134 , 1 , 1 ,
+603 , 37815 , 137 , 123 , 1 , 1 ,
+603 , 37816 , 238 , 113 , 1 , 1 ,
+603 , 37817 , 238 , 133 , 1 , 1 ,
+603 , 37818 , 238 , 133 , 1 , 1 ,
+603 , 37819 , 237 , 123 , 1 , 1 ,
+603 , 37820 , 237 , 124 , 1 , 1 ,
+603 , 37821 , 237 , 358 , 1 , 1 ,
+603 , 37822 , 237 , 361 , 1 , 1 ,
+603 , 37823 , 236 , 399 , 1 , 1 ,
+603 , 37824 , 281 , 113 , 1 , 1 ,
+603 , 37825 , 279 , 113 , 1 , 1 ,
+603 , 37826 , 278 , 113 , 1 , 1 ,
+603 , 37827 , 278 , 103 , 1 , 1 ,
+603 , 37828 , 236 , 439 , 1 , 1 ,
+603 , 37829 , 228 , 462 , 1 , 1 ,
+603 , 37830 , 137 , 123 , 1 , 1 ,
+603 , 37831 , 227 , 494 , 1 , 1 ,
+603 , 37832 , 226 , 504 , 1 , 1 ,
+603 , 37833 , 169 , 103 , 1 , 1 ,
+603 , 37834 , 225 , 103 , 1 , 1 ,
+603 , 37835 , 225 , 92 , 1 , 1 ,
+603 , 37836 , 276 , 489 , 1 , 1 ,
+603 , 37837 , 137 , 113 , 1 , 1 ,
+603 , 37838 , 134 , 103 , 1 , 1 ,
+603 , 37839 , 133 , 113 , 1 , 1 ,
+603 , 37840 , 132 , 113 , 1 , 1 ,
+603 , 37841 , 132 , 113 , 1 , 1 ,
+603 , 37842 , 269 , 594 , 1 , 1 ,
+603 , 37843 , 268 , 103 , 1 , 1 ,
+603 , 37844 , 169 , 103 , 1 , 1 ,
+603 , 37845 , 168 , 103 , 1 , 1 ,
+603 , 37846 , 262 , 522 , 1 , 1 ,
+603 , 37847 , 259 , 542 , 1 , 1 ,
+603 , 37848 , 225 , 82 , 1 , 1 ,
+603 , 37849 , 220 , 82 , 1 , 1 ,
+603 , 37850 , 215 , 82 , 1 , 1 ,
+603 , 37851 , 189 , 159 , 1 , 1 ,
+603 , 37852 , 122 , 93 , 1 , 1 ,
+603 , 37853 , 112 , 92 , 1 , 1 ,
+603 , 37854 , 22 , 154 , 1 , 1 ,
+603 , 37855 , 22 , 156 , 1 , 1 ,
+603 , 37856 , 15 , 466 , 1 , 1 ,
+603 , 37857 , 15 , 486 , 1 , 1 ,
+603 , 37858 , 15 , 466 , 1 , 1 ,
+603 , 37859 , 15 , 456 , 1 , 1 ,
+603 , 37860 , 15 , 436 , 1 , 1 ,
+603 , 37861 , 21 , 440 , 1 , 1 ,
+603 , 37862 , 20 , 417 , 1 , 1 ,
+603 , 37863 , 20 , 388 , 1 , 1 ,
+603 , 37864 , 20 , 388 , 1 , 1 ,
+603 , 37865 , 19 , 356 , 1 , 1 ,
+603 , 37866 , 19 , 336 , 1 , 1 ,
+603 , 37867 , 19 , 345 , 1 , 1 ,
+603 , 37868 , 19 , 308 , 1 , 1 ,
+603 , 37869 , 18 , 283 , 1 , 1 ,
+603 , 37870 , 18 , 277 , 1 , 1 ,
+603 , 37871 , 18 , 262 , 1 , 1 ,
+603 , 37872 , 17 , 268 , 1 , 1 ,
+603 , 37873 , 17 , 272 , 1 , 1 ,
+603 , 37874 , 17 , 254 , 1 , 1 ,
+603 , 37875 , 16 , 243 , 1 , 1 ,
+603 , 37876 , 16 , 275 , 1 , 1 ,
+603 , 37877 , 16 , 254 , 1 , 1 ,
+603 , 37878 , 15 , 266 , 1 , 1 ,
+603 , 37879 , 15 , 245 , 1 , 1 ,
+603 , 37880 , 15 , 241 , 1 , 1 ,
+603 , 37881 , 14 , 242 , 1 , 1 ,
+603 , 37882 , 14 , 256 , 1 , 1 ,
+603 , 37883 , 14 , 246 , 1 , 1 ,
+603 , 37884 , 13 , 233 , 1 , 1 ,
+603 , 37885 , 13 , 222 , 1 , 1 ,
+603 , 37886 , 13 , 242 , 1 , 1 ,
+603 , 37887 , 12 , 210 , 1 , 1 ,
+603 , 37888 , 12 , 211 , 1 , 1 ,
+603 , 37889 , 12 , 221 , 1 , 1 ,
+603 , 37890 , 11 , 213 , 1 , 1 ,
+603 , 37891 , 11 , 223 , 1 , 1 ,
+603 , 37892 , 11 , 214 , 1 , 1 ,
+603 , 37893 , 10 , 226 , 1 , 1 ,
+603 , 37894 , 10 , 201 , 1 , 1 ,
+603 , 37895 , 10 , 223 , 1 , 1 ,
+603 , 37896 , 34 , 123 , 1 , 1 ,
+603 , 37897 , 34 , 123 , 1 , 1 ,
+603 , 37898 , 29 , 123 , 1 , 1 ,
+603 , 37899 , 28 , 123 , 1 , 1 ,
+603 , 37900 , 28 , 123 , 1 , 1 ,
+603 , 37901 , 28 , 113 , 1 , 1 ,
+603 , 37902 , 28 , 123 , 1 , 1 ,
+603 , 37903 , 28 , 113 , 1 , 1 ,
+603 , 37904 , 27 , 123 , 1 , 1 ,
+603 , 37905 , 27 , 113 , 1 , 1 ,
+603 , 37906 , 27 , 123 , 1 , 1 ,
+603 , 37907 , 27 , 123 , 1 , 1 ,
+603 , 37908 , 22 , 123 , 1 , 1 ,
+603 , 37909 , 21 , 133 , 1 , 1 ,
+603 , 37910 , 21 , 133 , 1 , 1 ,
+603 , 37911 , 21 , 133 , 1 , 1 ,
+603 , 37912 , 21 , 133 , 1 , 1 ,
+603 , 37913 , 20 , 123 , 1 , 1 ,
+603 , 37914 , 20 , 123 , 1 , 1 ,
+603 , 37915 , 20 , 123 , 1 , 1 ,
+603 , 37916 , 20 , 133 , 1 , 1 ,
+603 , 37917 , 20 , 123 , 1 , 1 ,
+603 , 37918 , 14 , 123 , 1 , 1 ,
+603 , 37919 , 14 , 123 , 1 , 1 ,
+603 , 37920 , 14 , 103 , 1 , 1 ,
+603 , 37921 , 14 , 123 , 1 , 1 ,
+603 , 37922 , 14 , 123 , 1 , 1 ,
+603 , 37923 , 14 , 113 , 1 , 1 ,
+603 , 37924 , 14 , 123 , 1 , 1 ,
+603 , 37925 , 14 , 103 , 1 , 1 ,
+603 , 37926 , 13 , 113 , 1 , 1 ,
+603 , 37927 , 13 , 113 , 1 , 1 ,
+603 , 37928 , 9 , 113 , 1 , 1 ,
+603 , 37929 , 9 , 133 , 1 , 1 ,
+603 , 37930 , 9 , 123 , 1 , 1 ,
+603 , 37931 , 9 , 113 , 1 , 1 ,
+603 , 37932 , 9 , 113 , 1 , 1 ,
+603 , 37933 , 9 , 113 , 1 , 1 ,
+603 , 37934 , 9 , 113 , 1 , 1 ,
+603 , 37935 , 9 , 144 , 1 , 1 ,
+603 , 37936 , 8 , 133 , 1 , 1 ,
+603 , 37937 , 8 , 103 , 1 , 1 ,
+603 , 37938 , 4 , 123 , 1 , 1 ,
+603 , 37939 , 4 , 103 , 1 , 1 ,
+603 , 37940 , 4 , 92 , 1 , 1 ,
+603 , 37941 , 4 , 113 , 1 , 1 ,
+603 , 37942 , 4 , 123 , 1 , 1 ,
+603 , 37943 , 4 , 113 , 1 , 1 ,
+603 , 37944 , 4 , 113 , 1 , 1 ,
+603 , 37945 , 4 , 113 , 1 , 1 ,
+603 , 37946 , 4 , 103 , 1 , 1 ,
+603 , 37947 , 4 , 103 , 1 , 1 ,
+603 , 37948 , 881 , 347 , 1 , 1 , 37777 37821 37812 37811 37884 37938 37834 37832 37880 37840 37802 37783 37820 37853 37862 37894 37897 37765 37940 37748 37800 37766 37796 37828 37817 37813 37833 37874 37780 37925 37881 37761 37835 37771 37804 37904 37887 37922 37926 37877 37819 37826 37929 37829 37857 37855 37770 37849 37918 37920 37934 37825 37798 37841 37751 37790 37908 37890 37921 37837 37876 37935 37850 37774 37852 37893 37781 37847 37750 37831 37773 37901 37846 37803 37787 37776 37762 37793 37888 37808 37939 37903 37856 37916 37823 37945 37905 37943 37786 37870 37941 37757 37861 37927 37763 37789 37865 37809 37797 37848 37919 37930 37782 37936 37775 37801 37779 37845 37807 37791 37810 37932 37799 37768 37942 37868 37911 37844 37910 37749 37760 37859 37822 37838 37818 37895 37864 37830 37891 37886 37756 37878 37784 37754 37883 37937 37806 37843 37794 37858 37914 37842 37866 37917 37869 37815 37879 37898 37795 37860 37873 37933 37900 37752 37913 37839 37755 37867 37946 37924 37805 37931 37909 37915 37947 37928 37899 37906 37824 37875 37769 37792 37785 37889 37836 37902 37816 37788 37827 37871 37759 37882 37923 37778 37854 37851 37912 37772 37764 37814 37863 37872 37767 37907 37944 37753 37896 37885 37758 37892
+604 , 37949 , 4 , 11 , 1 , 1 ,
+604 , 37950 , 32 , 41 , 1 , 1 , 37949
+604 , 37951 , 31 , 31 , 1 , 1 , 37949
+604 , 37952 , 31 , 41 , 1 , 1 , 37949
+604 , 37953 , 31 , 41 , 1 , 1 , 37949
+604 , 37954 , 31 , 31 , 1 , 1 , 37949
+604 , 37955 , 31 , 41 , 1 , 1 , 37949
+604 , 37956 , 30 , 41 , 1 , 1 , 37949
+604 , 37957 , 27 , 41 , 1 , 1 , 37949
+604 , 37958 , 27 , 41 , 1 , 1 , 37949
+604 , 37959 , 27 , 41 , 1 , 1 , 37949
+604 , 37960 , 27 , 41 , 1 , 1 , 37949
+604 , 37961 , 27 , 41 , 1 , 1 , 37949
+604 , 37962 , 27 , 41 , 1 , 1 , 37949
+604 , 37963 , 27 , 31 , 1 , 1 , 37949
+604 , 37964 , 27 , 41 , 1 , 1 , 37949
+604 , 37965 , 27 , 41 , 1 , 1 , 37949
+604 , 37966 , 27 , 31 , 1 , 1 , 37949
+604 , 37967 , 27 , 31 , 1 , 1 , 37949
+604 , 37968 , 27 , 31 , 1 , 1 , 37949
+604 , 37969 , 90 , 0 , 1 , 1 , 37959 37964 37950 37956 37967 37965 37951 37963 37952 37968 37966 37954 37958 37962 37953 37955 37957 37961 37960
+604 , 37970 , 108 , 21 , 1 , 1 , 37969
+604 , 37971 , 108 , 21 , 1 , 1 , 37969
+604 , 37972 , 108 , 21 , 1 , 1 , 37969
+604 , 37973 , 108 , 21 , 1 , 1 , 37969
+604 , 37974 , 107 , 21 , 1 , 1 , 37969
+604 , 37975 , 107 , 21 , 1 , 1 , 37969
+604 , 37976 , 107 , 21 , 1 , 1 , 37969
+604 , 37977 , 107 , 21 , 1 , 1 , 37969
+604 , 37978 , 106 , 21 , 1 , 1 , 37969
+604 , 37979 , 104 , 22 , 1 , 1 , 37969
+604 , 37980 , 104 , 21 , 1 , 1 , 37969
+604 , 37981 , 104 , 22 , 1 , 1 , 37969
+604 , 37982 , 104 , 32 , 1 , 1 , 37969
+604 , 37983 , 104 , 22 , 1 , 1 , 37969
+604 , 37984 , 104 , 32 , 1 , 1 , 37969
+604 , 37985 , 104 , 32 , 1 , 1 , 37969
+604 , 37986 , 104 , 31 , 1 , 1 , 37969
+604 , 37987 , 104 , 22 , 1 , 1 , 37969
+604 , 37988 , 104 , 32 , 1 , 1 , 37969
+604 , 37989 , 160 , 0 , 1 , 1 , 37986 37982 37988 37970 37978 37981 37974 37976 37973 37972 37975 37979 37985 37983 37977 37987 37984 37971 37980
+605 , 37990 , 2 , 11 , 1 , 1 ,
+605 , 37991 , 36 , 31 , 1 , 1 , 37990
+605 , 37992 , 36 , 31 , 1 , 1 , 37990
+605 , 37993 , 36 , 31 , 1 , 1 , 37990
+605 , 37994 , 36 , 31 , 1 , 1 , 37990
+605 , 37995 , 35 , 31 , 1 , 1 , 37990
+605 , 37996 , 34 , 31 , 1 , 1 , 37990
+605 , 37997 , 33 , 31 , 1 , 1 , 37990
+605 , 37998 , 32 , 31 , 1 , 1 , 37990
+605 , 37999 , 32 , 31 , 1 , 1 , 37990
+605 , 38000 , 29 , 32 , 1 , 1 , 37990
+605 , 38001 , 29 , 32 , 1 , 1 , 37990
+605 , 38002 , 29 , 32 , 1 , 1 , 37990
+605 , 38003 , 29 , 33 , 1 , 1 , 37990
+605 , 38004 , 28 , 33 , 1 , 1 , 37990
+605 , 38005 , 28 , 31 , 1 , 1 , 37990
+605 , 38006 , 27 , 41 , 1 , 1 , 37990
+605 , 38007 , 26 , 31 , 1 , 1 , 37990
+605 , 38008 , 26 , 31 , 1 , 1 , 37990
+605 , 38009 , 26 , 41 , 1 , 1 , 37990
+605 , 38010 , 87 , 0 , 1 , 1 , 38007 37991 38008 37998 38002 38009 37999 38004 37997 38005 38000 37995 38006 37993 38001 38003 37994 37992 37996
+605 , 38011 , 112 , 11 , 1 , 1 , 38010
+605 , 38012 , 111 , 21 , 1 , 1 , 38010
+605 , 38013 , 111 , 11 , 1 , 1 , 38010
+605 , 38014 , 111 , 21 , 1 , 1 , 38010
+605 , 38015 , 111 , 21 , 1 , 1 , 38010
+605 , 38016 , 111 , 21 , 1 , 1 , 38010
+605 , 38017 , 111 , 11 , 1 , 1 , 38010
+605 , 38018 , 110 , 11 , 1 , 1 , 38010
+605 , 38019 , 110 , 11 , 1 , 1 , 38010
+605 , 38020 , 105 , 21 , 1 , 1 , 38010
+605 , 38021 , 105 , 21 , 1 , 1 , 38010
+605 , 38022 , 105 , 21 , 1 , 1 , 38010
+605 , 38023 , 105 , 21 , 1 , 1 , 38010
+605 , 38024 , 105 , 21 , 1 , 1 , 38010
+605 , 38025 , 105 , 21 , 1 , 1 , 38010
+605 , 38026 , 105 , 21 , 1 , 1 , 38010
+605 , 38027 , 104 , 21 , 1 , 1 , 38010
+605 , 38028 , 104 , 21 , 1 , 1 , 38010
+605 , 38029 , 104 , 21 , 1 , 1 , 38010
+605 , 38030 , 152 , 0 , 1 , 1 , 38019 38018 38024 38026 38021 38017 38022 38012 38014 38027 38016 38020 38011 38029 38015 38028 38025 38023 38013
+606 , 38031 , 16 , 74 , 1 , 1 ,
+606 , 38032 , 15 , 74 , 1 , 1 ,
+606 , 38033 , 15 , 85 , 1 , 1 ,
+606 , 38034 , 15 , 84 , 1 , 1 ,
+606 , 38035 , 15 , 74 , 1 , 1 ,
+606 , 38036 , 14 , 74 , 1 , 1 ,
+606 , 38037 , 14 , 74 , 1 , 1 ,
+606 , 38038 , 14 , 63 , 1 , 1 ,
+606 , 38039 , 13 , 63 , 1 , 1 ,
+606 , 38040 , 13 , 63 , 1 , 1 ,
+606 , 38041 , 13 , 63 , 1 , 1 ,
+606 , 38042 , 13 , 63 , 1 , 1 ,
+606 , 38043 , 12 , 53 , 1 , 1 ,
+606 , 38044 , 12 , 53 , 1 , 1 ,
+606 , 38045 , 12 , 53 , 1 , 1 ,
+606 , 38046 , 12 , 53 , 1 , 1 ,
+606 , 38047 , 11 , 53 , 1 , 1 ,
+606 , 38048 , 11 , 53 , 1 , 1 ,
+606 , 38049 , 11 , 53 , 1 , 1 ,
+606 , 38050 , 10 , 53 , 1 , 1 ,
+606 , 38051 , 10 , 53 , 1 , 1 ,
+606 , 38052 , 10 , 53 , 1 , 1 ,
+606 , 38053 , 9 , 53 , 1 , 1 ,
+606 , 38054 , 9 , 53 , 1 , 1 ,
+606 , 38055 , 9 , 53 , 1 , 1 ,
+606 , 38056 , 8 , 42 , 1 , 1 ,
+606 , 38057 , 8 , 53 , 1 , 1 ,
+606 , 38058 , 8 , 53 , 1 , 1 ,
+606 , 38059 , 47 , 31 , 1 , 1 ,
+606 , 38060 , 47 , 41 , 1 , 1 ,
+606 , 38061 , 43 , 41 , 1 , 1 ,
+606 , 38062 , 43 , 41 , 1 , 1 ,
+606 , 38063 , 43 , 41 , 1 , 1 ,
+606 , 38064 , 43 , 31 , 1 , 1 ,
+606 , 38065 , 43 , 41 , 1 , 1 ,
+606 , 38066 , 42 , 41 , 1 , 1 ,
+606 , 38067 , 42 , 41 , 1 , 1 ,
+606 , 38068 , 42 , 41 , 1 , 1 ,
+606 , 38069 , 42 , 42 , 1 , 1 ,
+606 , 38070 , 42 , 32 , 1 , 1 ,
+606 , 38071 , 36 , 31 , 1 , 1 ,
+606 , 38072 , 36 , 41 , 1 , 1 ,
+606 , 38073 , 36 , 31 , 1 , 1 ,
+606 , 38074 , 36 , 31 , 1 , 1 ,
+606 , 38075 , 36 , 41 , 1 , 1 ,
+606 , 38076 , 35 , 31 , 1 , 1 ,
+606 , 38077 , 35 , 41 , 1 , 1 ,
+606 , 38078 , 35 , 41 , 1 , 1 ,
+606 , 38079 , 35 , 41 , 1 , 1 ,
+606 , 38080 , 35 , 31 , 1 , 1 ,
+606 , 38081 , 28 , 41 , 1 , 1 ,
+606 , 38082 , 28 , 41 , 1 , 1 ,
+606 , 38083 , 28 , 52 , 1 , 1 ,
+606 , 38084 , 27 , 41 , 1 , 1 ,
+606 , 38085 , 27 , 52 , 1 , 1 ,
+606 , 38086 , 27 , 52 , 1 , 1 ,
+606 , 38087 , 27 , 52 , 1 , 1 ,
+606 , 38088 , 27 , 52 , 1 , 1 ,
+606 , 38089 , 27 , 41 , 1 , 1 ,
+606 , 38090 , 27 , 41 , 1 , 1 ,
+606 , 38091 , 20 , 41 , 1 , 1 ,
+606 , 38092 , 20 , 41 , 1 , 1 ,
+606 , 38093 , 20 , 41 , 1 , 1 ,
+606 , 38094 , 20 , 31 , 1 , 1 ,
+606 , 38095 , 19 , 31 , 1 , 1 ,
+606 , 38096 , 19 , 31 , 1 , 1 ,
+606 , 38097 , 19 , 31 , 1 , 1 ,
+606 , 38098 , 19 , 31 , 1 , 1 ,
+606 , 38099 , 19 , 31 , 1 , 1 ,
+606 , 38100 , 19 , 31 , 1 , 1 ,
+606 , 38101 , 14 , 31 , 1 , 1 ,
+606 , 38102 , 14 , 41 , 1 , 1 ,
+606 , 38103 , 13 , 42 , 1 , 1 ,
+606 , 38104 , 13 , 32 , 1 , 1 ,
+606 , 38105 , 13 , 41 , 1 , 1 ,
+606 , 38106 , 13 , 41 , 1 , 1 ,
+606 , 38107 , 13 , 41 , 1 , 1 ,
+606 , 38108 , 13 , 31 , 1 , 1 ,
+606 , 38109 , 13 , 41 , 1 , 1 ,
+606 , 38110 , 12 , 41 , 1 , 1 ,
+606 , 38111 , 7 , 41 , 1 , 1 ,
+606 , 38112 , 7 , 41 , 1 , 1 ,
+606 , 38113 , 7 , 41 , 1 , 1 ,
+606 , 38114 , 7 , 42 , 1 , 1 ,
+606 , 38115 , 7 , 41 , 1 , 1 ,
+606 , 38116 , 7 , 41 , 1 , 1 ,
+606 , 38117 , 6 , 41 , 1 , 1 ,
+606 , 38118 , 6 , 31 , 1 , 1 ,
+606 , 38119 , 6 , 41 , 1 , 1 ,
+606 , 38120 , 6 , 31 , 1 , 1 ,
+606 , 38121 , 2 , 31 , 1 , 1 ,
+606 , 38122 , 2 , 41 , 1 , 1 ,
+606 , 38123 , 2 , 31 , 1 , 1 ,
+606 , 38124 , 2 , 41 , 1 , 1 ,
+606 , 38125 , 2 , 31 , 1 , 1 ,
+606 , 38126 , 2 , 31 , 1 , 1 ,
+606 , 38127 , 2 , 31 , 1 , 1 ,
+606 , 38128 , 2 , 31 , 1 , 1 ,
+606 , 38129 , 2 , 32 , 1 , 1 ,
+606 , 38130 , 2 , 32 , 1 , 1 ,
+606 , 38131 , 112 , 31 , 1 , 1 , 38060 38065 38113 38119 38092 38101 38129 38050 38103 38064 38121 38043 38059 38048 38118 38032 38066 38087 38124 38097 38055 38046 38042 38114 38044 38070 38126 38085 38088 38067 38107 38069 38125 38105 38077 38062 38104 38106 38063 38109 38080 38090 38073 38108 38033 38115 38075 38089 38037 38052 38061 38095 38111 38100 38041 38072 38081 38116 38038 38128 38082 38099 38130 38102 38040 38078 38057 38091 38045 38034 38035 38096 38083 38074 38054 38039 38117 38093 38031 38086 38084 38068 38123 38127 38047 38094 38053 38071 38120 38079 38112 38076 38110 38049 38051 38056 38036 38058 38098 38122
+607 , 38132 , 2 , 11 , 1 , 1 ,
+607 , 38133 , 106 , 41 , 1 , 1 , 38132
+607 , 38134 , 102 , 41 , 1 , 1 , 38132
+607 , 38135 , 102 , 52 , 1 , 1 , 38132
+607 , 38136 , 102 , 52 , 1 , 1 , 38132
+607 , 38137 , 110 , 41 , 1 , 1 , 38132
+607 , 38138 , 110 , 41 , 1 , 1 , 38132
+607 , 38139 , 110 , 41 , 1 , 1 , 38132
+607 , 38140 , 109 , 41 , 1 , 1 , 38132
+607 , 38141 , 109 , 41 , 1 , 1 , 38132
+607 , 38142 , 109 , 41 , 1 , 1 , 38132
+607 , 38143 , 109 , 41 , 1 , 1 , 38132
+607 , 38144 , 102 , 41 , 1 , 1 , 38132
+607 , 38145 , 107 , 41 , 1 , 1 , 38132
+607 , 38146 , 102 , 41 , 1 , 1 , 38132
+607 , 38147 , 102 , 52 , 1 , 1 , 38132
+607 , 38148 , 101 , 41 , 1 , 1 , 38132
+607 , 38149 , 101 , 52 , 1 , 1 , 38132
+607 , 38150 , 100 , 41 , 1 , 1 , 38132
+607 , 38151 , 100 , 52 , 1 , 1 , 38132
+607 , 38152 , 96 , 52 , 1 , 1 , 38132
+607 , 38153 , 96 , 62 , 1 , 1 , 38132
+607 , 38154 , 96 , 72 , 1 , 1 , 38132
+607 , 38155 , 96 , 72 , 1 , 1 , 38132
+607 , 38156 , 96 , 72 , 1 , 1 , 38132
+607 , 38157 , 95 , 62 , 1 , 1 , 38132
+607 , 38158 , 92 , 62 , 1 , 1 , 38132
+607 , 38159 , 68 , 62 , 1 , 1 , 38132
+607 , 38160 , 68 , 72 , 1 , 1 , 38132
+607 , 38161 , 68 , 62 , 1 , 1 , 38132
+607 , 38162 , 68 , 72 , 1 , 1 , 38132
+607 , 38163 , 67 , 62 , 1 , 1 , 38132
+607 , 38164 , 66 , 62 , 1 , 1 , 38132
+607 , 38165 , 66 , 63 , 1 , 1 , 38132
+607 , 38166 , 63 , 72 , 1 , 1 , 38132
+607 , 38167 , 63 , 72 , 1 , 1 , 38132
+607 , 38168 , 83 , 79 , 1 , 1 , 38132
+607 , 38169 , 83 , 103 , 1 , 1 , 38132
+607 , 38170 , 83 , 81 , 1 , 1 , 38132
+607 , 38171 , 83 , 89 , 1 , 1 , 38132
+607 , 38172 , 83 , 80 , 1 , 1 , 38132
+607 , 38173 , 83 , 102 , 1 , 1 , 38132
+607 , 38174 , 83 , 81 , 1 , 1 , 38132
+607 , 38175 , 83 , 79 , 1 , 1 , 38132
+607 , 38176 , 66 , 246 , 1 , 1 , 38132
+607 , 38177 , 66 , 236 , 1 , 1 , 38132
+607 , 38178 , 66 , 246 , 1 , 1 , 38132
+607 , 38179 , 66 , 246 , 1 , 1 , 38132
+607 , 38180 , 66 , 246 , 1 , 1 , 38132
+607 , 38181 , 66 , 246 , 1 , 1 , 38132
+607 , 38182 , 65 , 226 , 1 , 1 , 38132
+607 , 38183 , 65 , 226 , 1 , 1 , 38132
+607 , 38184 , 65 , 256 , 1 , 1 , 38132
+607 , 38185 , 65 , 246 , 1 , 1 , 38132
+607 , 38186 , 65 , 236 , 1 , 1 , 38132
+607 , 38187 , 65 , 246 , 1 , 1 , 38132
+607 , 38188 , 65 , 236 , 1 , 1 , 38132
+607 , 38189 , 65 , 236 , 1 , 1 , 38132
+607 , 38190 , 65 , 246 , 1 , 1 , 38132
+607 , 38191 , 65 , 246 , 1 , 1 , 38132
+607 , 38192 , 66 , 320 , 1 , 1 , 38132
+607 , 38193 , 65 , 247 , 1 , 1 , 38132
+607 , 38194 , 65 , 241 , 1 , 1 , 38132
+607 , 38195 , 64 , 236 , 1 , 1 , 38132
+607 , 38196 , 64 , 256 , 1 , 1 , 38132
+607 , 38197 , 64 , 245 , 1 , 1 , 38132
+607 , 38198 , 63 , 339 , 1 , 1 , 38132
+607 , 38199 , 63 , 234 , 1 , 1 , 38132
+607 , 38200 , 63 , 246 , 1 , 1 , 38132
+607 , 38201 , 62 , 328 , 1 , 1 , 38132
+607 , 38202 , 62 , 247 , 1 , 1 , 38132
+607 , 38203 , 61 , 237 , 1 , 1 , 38132
+607 , 38204 , 61 , 237 , 1 , 1 , 38132
+607 , 38205 , 61 , 265 , 1 , 1 , 38132
+607 , 38206 , 60 , 247 , 1 , 1 , 38132
+607 , 38207 , 59 , 279 , 1 , 1 , 38132
+607 , 38208 , 59 , 237 , 1 , 1 , 38132
+607 , 38209 , 59 , 237 , 1 , 1 , 38132
+607 , 38210 , 58 , 237 , 1 , 1 , 38132
+607 , 38211 , 58 , 243 , 1 , 1 , 38132
+607 , 38212 , 58 , 244 , 1 , 1 , 38132
+607 , 38213 , 57 , 246 , 1 , 1 , 38132
+607 , 38214 , 57 , 349 , 1 , 1 , 38132
+607 , 38215 , 57 , 246 , 1 , 1 , 38132
+607 , 38216 , 57 , 245 , 1 , 1 , 38132
+607 , 38217 , 56 , 321 , 1 , 1 , 38132
+607 , 38218 , 56 , 246 , 1 , 1 , 38132
+607 , 38219 , 56 , 247 , 1 , 1 , 38132
+607 , 38220 , 55 , 245 , 1 , 1 , 38132
+607 , 38221 , 55 , 247 , 1 , 1 , 38132
+607 , 38222 , 55 , 298 , 1 , 1 , 38132
+607 , 38223 , 54 , 246 , 1 , 1 , 38132
+607 , 38224 , 54 , 235 , 1 , 1 , 38132
+607 , 38225 , 54 , 244 , 1 , 1 , 38132
+607 , 38226 , 53 , 237 , 1 , 1 , 38132
+607 , 38227 , 53 , 297 , 1 , 1 , 38132
+607 , 38228 , 53 , 266 , 1 , 1 , 38132
+607 , 38229 , 52 , 245 , 1 , 1 , 38132
+607 , 38230 , 52 , 238 , 1 , 1 , 38132
+607 , 38231 , 52 , 234 , 1 , 1 , 38132
+607 , 38232 , 52 , 300 , 1 , 1 , 38132
+607 , 38233 , 52 , 258 , 1 , 1 , 38132
+607 , 38234 , 51 , 248 , 1 , 1 , 38132
+607 , 38235 , 51 , 255 , 1 , 1 , 38132
+607 , 38236 , 51 , 238 , 1 , 1 , 38132
+607 , 38237 , 51 , 249 , 1 , 1 , 38132
+607 , 38238 , 50 , 286 , 1 , 1 , 38132
+607 , 38239 , 50 , 227 , 1 , 1 , 38132
+607 , 38240 , 50 , 235 , 1 , 1 , 38132
+607 , 38241 , 49 , 278 , 1 , 1 , 38132
+607 , 38242 , 49 , 223 , 1 , 1 , 38132
+607 , 38243 , 49 , 302 , 1 , 1 , 38132
+607 , 38244 , 48 , 224 , 1 , 1 , 38132
+607 , 38245 , 48 , 241 , 1 , 1 , 38132
+607 , 38246 , 48 , 331 , 1 , 1 , 38132
+607 , 38247 , 47 , 257 , 1 , 1 , 38132
+607 , 38248 , 47 , 256 , 1 , 1 , 38132
+607 , 38249 , 47 , 288 , 1 , 1 , 38132
+607 , 38250 , 46 , 237 , 1 , 1 , 38132
+607 , 38251 , 46 , 238 , 1 , 1 , 38132
+607 , 38252 , 46 , 245 , 1 , 1 , 38132
+607 , 38253 , 45 , 233 , 1 , 1 , 38132
+607 , 38254 , 45 , 289 , 1 , 1 , 38132
+607 , 38255 , 45 , 277 , 1 , 1 , 38132
+607 , 38256 , 63 , 72 , 1 , 1 , 38132
+607 , 38257 , 63 , 72 , 1 , 1 , 38132
+607 , 38258 , 63 , 62 , 1 , 1 , 38132
+607 , 38259 , 63 , 62 , 1 , 1 , 38132
+607 , 38260 , 62 , 52 , 1 , 1 , 38132
+607 , 38261 , 62 , 72 , 1 , 1 , 38132
+607 , 38262 , 61 , 52 , 1 , 1 , 38132
+607 , 38263 , 60 , 73 , 1 , 1 , 38132
+607 , 38264 , 58 , 62 , 1 , 1 , 38132
+607 , 38265 , 58 , 72 , 1 , 1 , 38132
+607 , 38266 , 58 , 62 , 1 , 1 , 38132
+607 , 38267 , 58 , 62 , 1 , 1 , 38132
+607 , 38268 , 58 , 62 , 1 , 1 , 38132
+607 , 38269 , 57 , 52 , 1 , 1 , 38132
+607 , 38270 , 57 , 72 , 1 , 1 , 38132
+607 , 38271 , 56 , 72 , 1 , 1 , 38132
+607 , 38272 , 56 , 72 , 1 , 1 , 38132
+607 , 38273 , 54 , 62 , 1 , 1 , 38132
+607 , 38274 , 52 , 72 , 1 , 1 , 38132
+607 , 38275 , 52 , 62 , 1 , 1 , 38132
+607 , 38276 , 52 , 62 , 1 , 1 , 38132
+607 , 38277 , 51 , 51 , 1 , 1 , 38132
+607 , 38278 , 51 , 62 , 1 , 1 , 38132
+607 , 38279 , 51 , 72 , 1 , 1 , 38132
+607 , 38280 , 51 , 72 , 1 , 1 , 38132
+607 , 38281 , 50 , 62 , 1 , 1 , 38132
+607 , 38282 , 50 , 52 , 1 , 1 , 38132
+607 , 38283 , 48 , 41 , 1 , 1 , 38132
+607 , 38284 , 46 , 42 , 1 , 1 , 38132
+607 , 38285 , 46 , 42 , 1 , 1 , 38132
+607 , 38286 , 46 , 52 , 1 , 1 , 38132
+607 , 38287 , 46 , 52 , 1 , 1 , 38132
+607 , 38288 , 46 , 52 , 1 , 1 , 38132
+607 , 38289 , 45 , 52 , 1 , 1 , 38132
+607 , 38290 , 45 , 52 , 1 , 1 , 38132
+607 , 38291 , 45 , 42 , 1 , 1 , 38132
+607 , 38292 , 44 , 41 , 1 , 1 , 38132
+607 , 38293 , 42 , 41 , 1 , 1 , 38132
+607 , 38294 , 40 , 62 , 1 , 1 , 38132
+607 , 38295 , 40 , 52 , 1 , 1 , 38132
+607 , 38296 , 40 , 52 , 1 , 1 , 38132
+607 , 38297 , 40 , 52 , 1 , 1 , 38132
+607 , 38298 , 40 , 52 , 1 , 1 , 38132
+607 , 38299 , 40 , 52 , 1 , 1 , 38132
+607 , 38300 , 39 , 52 , 1 , 1 , 38132
+607 , 38301 , 39 , 41 , 1 , 1 , 38132
+607 , 38302 , 38 , 52 , 1 , 1 , 38132
+607 , 38303 , 37 , 52 , 1 , 1 , 38132
+607 , 38304 , 34 , 52 , 1 , 1 , 38132
+607 , 38305 , 34 , 52 , 1 , 1 , 38132
+607 , 38306 , 34 , 41 , 1 , 1 , 38132
+607 , 38307 , 34 , 52 , 1 , 1 , 38132
+607 , 38308 , 34 , 52 , 1 , 1 , 38132
+607 , 38309 , 34 , 52 , 1 , 1 , 38132
+607 , 38310 , 33 , 52 , 1 , 1 , 38132
+607 , 38311 , 31 , 41 , 1 , 1 , 38132
+607 , 38312 , 31 , 52 , 1 , 1 , 38132
+607 , 38313 , 28 , 41 , 1 , 1 , 38132
+607 , 38314 , 26 , 52 , 1 , 1 , 38132
+607 , 38315 , 26 , 52 , 1 , 1 , 38132
+607 , 38316 , 26 , 52 , 1 , 1 , 38132
+607 , 38317 , 26 , 41 , 1 , 1 , 38132
+607 , 38318 , 26 , 52 , 1 , 1 , 38132
+607 , 38319 , 26 , 41 , 1 , 1 , 38132
+607 , 38320 , 26 , 52 , 1 , 1 , 38132
+607 , 38321 , 26 , 31 , 1 , 1 , 38132
+607 , 38322 , 26 , 41 , 1 , 1 , 38132
+607 , 38323 , 26 , 41 , 1 , 1 , 38132
+607 , 38324 , 26 , 31 , 1 , 1 , 38132
+607 , 38325 , 26 , 42 , 1 , 1 , 38132
+607 , 38326 , 541 , 0 , 1 , 1 , 38280 38247 38187 38270 38305 38233 38321 38147 38197 38151 38139 38259 38292 38285 38294 38319 38194 38231 38286 38174 38138 38210 38135 38156 38320 38242 38324 38144 38179 38306 38173 38288 38186 38180 38269 38293 38249 38257 38170 38261 38199 38228 38314 38136 38311 38160 38313 38263 38167 38256 38142 38289 38300 38202 38203 38184 38137 38218 38271 38141 38223 38165 38240 38222 38192 38208 38198 38133 38168 38172 38272 38140 38164 38216 38182 38195 38278 38297 38217 38176 38302 38299 38162 38251 38189 38169 38290 38214 38234 38244 38230 38177 38315 38146 38181 38207 38149 38213 38309 38226 38171 38248 38163 38236 38215 38134 38237 38190 38276 38209 38241 38148 38206 38250 38225 38254 38232 38166 38239 38229 38204 38155 38303 38246 38265 38159 38307 38287 38201 38245 38212 38158 38227 38317 38152 38196 38157 38310 38143 38262 38283 38264 38258 38273 38150 38322 38243 38260 38295 38275 38200 38325 38266 38219 38238 38267 38296 38220 38193 38153 38274 38291 38185 38268 38284 38318 38224 38252 38279 38191 38316 38312 38255 38161 38145 38154 38277 38205 38282 38253 38323 38281 38304 38188 38301 38211 38175 38298 38183 38308 38221 38178 38235
+607 , 38327 , 672 , 32 , 1 , 1 , 38326
+607 , 38328 , 672 , 32 , 1 , 1 , 38326
+607 , 38329 , 669 , 32 , 1 , 1 , 38326
+607 , 38330 , 681 , 32 , 1 , 1 , 38326
+607 , 38331 , 688 , 32 , 1 , 1 , 38326
+607 , 38332 , 680 , 32 , 1 , 1 , 38326
+607 , 38333 , 634 , 21 , 1 , 1 , 38326
+607 , 38334 , 692 , 32 , 1 , 1 , 38326
+607 , 38335 , 615 , 21 , 1 , 1 , 38326
+607 , 38336 , 615 , 21 , 1 , 1 , 38326
+607 , 38337 , 615 , 21 , 1 , 1 , 38326
+607 , 38338 , 614 , 21 , 1 , 1 , 38326
+607 , 38339 , 614 , 21 , 1 , 1 , 38326
+607 , 38340 , 610 , 21 , 1 , 1 , 38326
+607 , 38341 , 601 , 21 , 1 , 1 , 38326
+607 , 38342 , 600 , 31 , 1 , 1 , 38326
+607 , 38343 , 654 , 32 , 1 , 1 , 38326
+607 , 38344 , 611 , 21 , 1 , 1 , 38326
+607 , 38345 , 611 , 21 , 1 , 1 , 38326
+607 , 38346 , 688 , 32 , 1 , 1 , 38326
+607 , 38347 , 688 , 32 , 1 , 1 , 38326
+607 , 38348 , 687 , 32 , 1 , 1 , 38326
+607 , 38349 , 684 , 32 , 1 , 1 , 38326
+607 , 38350 , 684 , 32 , 1 , 1 , 38326
+607 , 38351 , 641 , 11 , 1 , 1 , 38326
+607 , 38352 , 641 , 21 , 1 , 1 , 38326
+607 , 38353 , 681 , 21 , 1 , 1 , 38326
+607 , 38354 , 650 , 32 , 1 , 1 , 38326
+607 , 38355 , 627 , 21 , 1 , 1 , 38326
+607 , 38356 , 626 , 21 , 1 , 1 , 38326
+607 , 38357 , 626 , 21 , 1 , 1 , 38326
+607 , 38358 , 626 , 21 , 1 , 1 , 38326
+607 , 38359 , 626 , 21 , 1 , 1 , 38326
+607 , 38360 , 625 , 21 , 1 , 1 , 38326
+607 , 38361 , 625 , 21 , 1 , 1 , 38326
+607 , 38362 , 654 , 11 , 1 , 1 , 38326
+607 , 38363 , 690 , 0 , 1 , 1 , 38326
+607 , 38364 , 647 , 11 , 1 , 1 , 38326
+607 , 38365 , 647 , 11 , 1 , 1 , 38326
+607 , 38366 , 650 , 11 , 1 , 1 , 38326
+607 , 38367 , 684 , 11 , 1 , 1 , 38326
+607 , 38368 , 652 , 11 , 1 , 1 , 38326
+607 , 38369 , 672 , 32 , 1 , 1 , 38326
+607 , 38370 , 670 , 32 , 1 , 1 , 38326
+607 , 38371 , 670 , 32 , 1 , 1 , 38326
+607 , 38372 , 656 , 11 , 1 , 1 , 38326
+607 , 38373 , 675 , 0 , 1 , 1 , 38326
+607 , 38374 , 660 , 11 , 1 , 1 , 38326
+607 , 38375 , 658 , 11 , 1 , 1 , 38326
+607 , 38376 , 694 , 0 , 1 , 1 , 38326
+607 , 38377 , 656 , 11 , 1 , 1 , 38326
+607 , 38378 , 654 , 32 , 1 , 1 , 38326
+607 , 38379 , 651 , 32 , 1 , 1 , 38326
+607 , 38380 , 652 , 32 , 1 , 1 , 38326
+607 , 38381 , 671 , 0 , 1 , 1 , 38326
+607 , 38382 , 680 , 0 , 1 , 1 , 38326
+607 , 38383 , 687 , 0 , 1 , 1 , 38326
+607 , 38384 , 683 , 0 , 1 , 1 , 38326
+607 , 38385 , 688 , 0 , 1 , 1 , 38326
+607 , 38386 , 643 , 21 , 1 , 1 , 38326
+607 , 38387 , 647 , 11 , 1 , 1 , 38326
+607 , 38388 , 639 , 11 , 1 , 1 , 38326
+607 , 38389 , 639 , 11 , 1 , 1 , 38326
+607 , 38390 , 663 , 11 , 1 , 1 , 38326
+607 , 38391 , 725 , 0 , 1 , 1 , 38326
+607 , 38392 , 639 , 0 , 1 , 1 , 38326
+607 , 38393 , 637 , 13 , 1 , 1 , 38326
+607 , 38394 , 637 , 13 , 1 , 1 , 38326
+607 , 38395 , 637 , 13 , 1 , 1 , 38326
+607 , 38396 , 639 , 13 , 1 , 1 , 38326
+607 , 38397 , 637 , 12 , 1 , 1 , 38326
+607 , 38398 , 637 , 11 , 1 , 1 , 38326
+607 , 38399 , 637 , 11 , 1 , 1 , 38326
+607 , 38400 , 624 , 35 , 1 , 1 , 38326
+607 , 38401 , 623 , 41 , 1 , 1 , 38326
+607 , 38402 , 623 , 41 , 1 , 1 , 38326
+607 , 38403 , 622 , 41 , 1 , 1 , 38326
+607 , 38404 , 622 , 41 , 1 , 1 , 38326
+607 , 38405 , 621 , 41 , 1 , 1 , 38326
+607 , 38406 , 621 , 42 , 1 , 1 , 38326
+607 , 38407 , 621 , 42 , 1 , 1 , 38326
+607 , 38408 , 620 , 42 , 1 , 1 , 38326
+607 , 38409 , 620 , 52 , 1 , 1 , 38326
+607 , 38410 , 624 , 41 , 1 , 1 , 38326
+607 , 38411 , 619 , 43 , 1 , 1 , 38326
+607 , 38412 , 619 , 33 , 1 , 1 , 38326
+607 , 38413 , 619 , 23 , 1 , 1 , 38326
+607 , 38414 , 619 , 33 , 1 , 1 , 38326
+607 , 38415 , 620 , 42 , 1 , 1 , 38326
+607 , 38416 , 612 , 32 , 1 , 1 , 38326
+607 , 38417 , 610 , 21 , 1 , 1 , 38326
+607 , 38418 , 610 , 32 , 1 , 1 , 38326
+607 , 38419 , 609 , 32 , 1 , 1 , 38326
+607 , 38420 , 621 , 21 , 1 , 1 , 38326
+607 , 38421 , 616 , 21 , 1 , 1 , 38326
+607 , 38422 , 609 , 21 , 1 , 1 , 38326
+607 , 38423 , 609 , 32 , 1 , 1 , 38326
+607 , 38424 , 608 , 32 , 1 , 1 , 38326
+607 , 38425 , 608 , 32 , 1 , 1 , 38326
+607 , 38426 , 607 , 32 , 1 , 1 , 38326
+607 , 38427 , 607 , 32 , 1 , 1 , 38326
+607 , 38428 , 606 , 32 , 1 , 1 , 38326
+607 , 38429 , 605 , 32 , 1 , 1 , 38326
+607 , 38430 , 608 , 32 , 1 , 1 , 38326
+607 , 38431 , 607 , 32 , 1 , 1 , 38326
+607 , 38432 , 605 , 32 , 1 , 1 , 38326
+607 , 38433 , 605 , 32 , 1 , 1 , 38326
+607 , 38434 , 605 , 35 , 1 , 1 , 38326
+607 , 38435 , 604 , 35 , 1 , 1 , 38326
+607 , 38436 , 604 , 35 , 1 , 1 , 38326
+607 , 38437 , 604 , 35 , 1 , 1 , 38326
+607 , 38438 , 618 , 21 , 1 , 1 , 38326
+607 , 38439 , 633 , 21 , 1 , 1 , 38326
+607 , 38440 , 615 , 21 , 1 , 1 , 38326
+607 , 38441 , 615 , 24 , 1 , 1 , 38326
+607 , 38442 , 602 , 35 , 1 , 1 , 38326
+607 , 38443 , 602 , 35 , 1 , 1 , 38326
+607 , 38444 , 601 , 35 , 1 , 1 , 38326
+607 , 38445 , 601 , 35 , 1 , 1 , 38326
+607 , 38446 , 600 , 32 , 1 , 1 , 38326
+607 , 38447 , 600 , 32 , 1 , 1 , 38326
+607 , 38448 , 603 , 35 , 1 , 1 , 38326
+607 , 38449 , 599 , 32 , 1 , 1 , 38326
+607 , 38450 , 599 , 32 , 1 , 1 , 38326
+607 , 38451 , 598 , 32 , 1 , 1 , 38326
+607 , 38452 , 597 , 32 , 1 , 1 , 38326
+607 , 38453 , 600 , 32 , 1 , 1 , 38326
+607 , 38454 , 596 , 34 , 1 , 1 , 38326
+607 , 38455 , 595 , 34 , 1 , 1 , 38326
+607 , 38456 , 595 , 35 , 1 , 1 , 38326
+607 , 38457 , 644 , 32 , 1 , 1 , 38326
+607 , 38458 , 597 , 32 , 1 , 1 , 38326
+607 , 38459 , 606 , 32 , 1 , 1 , 38326
+607 , 38460 , 592 , 33 , 1 , 1 , 38326
+607 , 38461 , 592 , 33 , 1 , 1 , 38326
+607 , 38462 , 626 , 21 , 1 , 1 , 38326
+607 , 38463 , 601 , 22 , 1 , 1 , 38326
+607 , 38464 , 593 , 32 , 1 , 1 , 38326
+607 , 38465 , 578 , 32 , 1 , 1 , 38326
+607 , 38466 , 589 , 21 , 1 , 1 , 38326
+607 , 38467 , 589 , 21 , 1 , 1 , 38326
+607 , 38468 , 588 , 31 , 1 , 1 , 38326
+607 , 38469 , 585 , 62 , 1 , 1 , 38326
+607 , 38470 , 584 , 62 , 1 , 1 , 38326
+607 , 38471 , 584 , 62 , 1 , 1 , 38326
+607 , 38472 , 584 , 52 , 1 , 1 , 38326
+607 , 38473 , 584 , 62 , 1 , 1 , 38326
+607 , 38474 , 584 , 41 , 1 , 1 , 38326
+607 , 38475 , 583 , 41 , 1 , 1 , 38326
+607 , 38476 , 583 , 31 , 1 , 1 , 38326
+607 , 38477 , 583 , 31 , 1 , 1 , 38326
+607 , 38478 , 583 , 31 , 1 , 1 , 38326
+607 , 38479 , 580 , 52 , 1 , 1 , 38326
+607 , 38480 , 580 , 52 , 1 , 1 , 38326
+607 , 38481 , 579 , 31 , 1 , 1 , 38326
+607 , 38482 , 579 , 41 , 1 , 1 , 38326
+607 , 38483 , 579 , 41 , 1 , 1 , 38326
+607 , 38484 , 579 , 41 , 1 , 1 , 38326
+607 , 38485 , 578 , 41 , 1 , 1 , 38326
+607 , 38486 , 578 , 31 , 1 , 1 , 38326
+607 , 38487 , 578 , 31 , 1 , 1 , 38326
+607 , 38488 , 578 , 52 , 1 , 1 , 38326
+607 , 38489 , 575 , 52 , 1 , 1 , 38326
+607 , 38490 , 574 , 52 , 1 , 1 , 38326
+607 , 38491 , 574 , 52 , 1 , 1 , 38326
+607 , 38492 , 574 , 41 , 1 , 1 , 38326
+607 , 38493 , 574 , 41 , 1 , 1 , 38326
+607 , 38494 , 574 , 41 , 1 , 1 , 38326
+607 , 38495 , 573 , 31 , 1 , 1 , 38326
+607 , 38496 , 573 , 31 , 1 , 1 , 38326
+607 , 38497 , 573 , 31 , 1 , 1 , 38326
+607 , 38498 , 572 , 31 , 1 , 1 , 38326
+607 , 38499 , 570 , 41 , 1 , 1 , 38326
+607 , 38500 , 569 , 31 , 1 , 1 , 38326
+607 , 38501 , 569 , 41 , 1 , 1 , 38326
+607 , 38502 , 569 , 41 , 1 , 1 , 38326
+607 , 38503 , 568 , 31 , 1 , 1 , 38326
+607 , 38504 , 568 , 31 , 1 , 1 , 38326
+607 , 38505 , 568 , 41 , 1 , 1 , 38326
+607 , 38506 , 568 , 31 , 1 , 1 , 38326
+607 , 38507 , 568 , 31 , 1 , 1 , 38326
+607 , 38508 , 568 , 31 , 1 , 1 , 38326
+607 , 38509 , 566 , 21 , 1 , 1 , 38326
+607 , 38510 , 565 , 21 , 1 , 1 , 38326
+607 , 38511 , 565 , 31 , 1 , 1 , 38326
+607 , 38512 , 565 , 21 , 1 , 1 , 38326
+607 , 38513 , 565 , 21 , 1 , 1 , 38326
+607 , 38514 , 565 , 21 , 1 , 1 , 38326
+607 , 38515 , 565 , 21 , 1 , 1 , 38326
+607 , 38516 , 565 , 31 , 1 , 1 , 38326
+607 , 38517 , 565 , 31 , 1 , 1 , 38326
+607 , 38518 , 565 , 11 , 1 , 1 , 38326
+607 , 38519 , 565 , 21 , 1 , 1 , 38326
+607 , 38520 , 792 , 21 , 1 , 1 , 38464 38454 38386 38348 38503 38493 38446 38456 38417 38413 38405 38340 38439 38422 38460 38457 38412 38341 38344 38389 38382 38331 38500 38362 38517 38407 38486 38491 38490 38508 38433 38357 38511 38338 38467 38468 38471 38410 38419 38383 38443 38507 38387 38447 38484 38505 38350 38336 38332 38442 38465 38370 38396 38441 38418 38368 38445 38397 38423 38448 38381 38499 38377 38438 38496 38330 38463 38328 38365 38501 38476 38361 38411 38333 38355 38474 38376 38494 38395 38375 38356 38483 38479 38351 38513 38339 38393 38384 38372 38369 38477 38431 38379 38358 38451 38401 38487 38349 38426 38364 38424 38360 38398 38475 38427 38400 38510 38470 38485 38519 38429 38432 38506 38404 38504 38408 38403 38428 38480 38374 38515 38516 38478 38453 38482 38434 38342 38354 38444 38414 38378 38394 38373 38346 38450 38392 38385 38367 38345 38449 38416 38334 38437 38518 38353 38436 38371 38462 38440 38391 38329 38435 38455 38469 38497 38473 38495 38509 38415 38459 38421 38409 38406 38337 38512 38347 38430 38461 38502 38327 38472 38380 38492 38488 38388 38335 38366 38420 38402 38363 38452 38390 38489 38514 38359 38343 38466 38399 38481 38352 38425 38458 38498
+608 , 38521 , 55 , 215 , 1 , 1 ,
+608 , 38522 , 53 , 194 , 1 , 1 ,
+608 , 38523 , 52 , 205 , 1 , 1 ,
+608 , 38524 , 52 , 225 , 1 , 1 ,
+608 , 38525 , 52 , 215 , 1 , 1 ,
+608 , 38526 , 52 , 225 , 1 , 1 ,
+608 , 38527 , 52 , 235 , 1 , 1 ,
+608 , 38528 , 52 , 245 , 1 , 1 ,
+608 , 38529 , 52 , 225 , 1 , 1 ,
+608 , 38530 , 51 , 256 , 1 , 1 ,
+608 , 38531 , 50 , 266 , 1 , 1 ,
+608 , 38532 , 48 , 266 , 1 , 1 ,
+608 , 38533 , 48 , 256 , 1 , 1 ,
+608 , 38534 , 47 , 225 , 1 , 1 ,
+608 , 38535 , 47 , 225 , 1 , 1 ,
+608 , 38536 , 47 , 194 , 1 , 1 ,
+608 , 38537 , 47 , 215 , 1 , 1 ,
+608 , 38538 , 47 , 225 , 1 , 1 ,
+608 , 38539 , 47 , 215 , 1 , 1 ,
+608 , 38540 , 47 , 225 , 1 , 1 ,
+608 , 38541 , 43 , 246 , 1 , 1 ,
+608 , 38542 , 43 , 225 , 1 , 1 ,
+608 , 38543 , 43 , 246 , 1 , 1 ,
+608 , 38544 , 43 , 245 , 1 , 1 ,
+608 , 38545 , 43 , 246 , 1 , 1 ,
+608 , 38546 , 43 , 235 , 1 , 1 ,
+608 , 38547 , 43 , 235 , 1 , 1 ,
+608 , 38548 , 43 , 235 , 1 , 1 ,
+608 , 38549 , 43 , 225 , 1 , 1 ,
+608 , 38550 , 43 , 215 , 1 , 1 ,
+608 , 38551 , 342 , 82 , 1 , 1 , 38546 38535 38543 38548 38549 38527 38523 38536 38550 38531 38541 38545 38542 38528 38522 38534 38540 38539 38547 38530 38529 38521 38537 38538 38525 38544 38524 38532 38533 38526
+609 , 38552 , 127 , 62 , 1 , 1 ,
+609 , 38553 , 126 , 62 , 1 , 1 ,
+609 , 38554 , 133 , 32 , 1 , 1 ,
+609 , 38555 , 131 , 62 , 1 , 1 ,
+609 , 38556 , 185 , 31 , 1 , 1 ,
+609 , 38557 , 185 , 31 , 1 , 1 ,
+609 , 38558 , 184 , 31 , 1 , 1 ,
+609 , 38559 , 183 , 22 , 1 , 1 ,
+609 , 38560 , 160 , 80 , 1 , 1 ,
+609 , 38561 , 159 , 52 , 1 , 1 ,
+609 , 38562 , 159 , 77 , 1 , 1 ,
+609 , 38563 , 159 , 52 , 1 , 1 ,
+609 , 38564 , 159 , 22 , 1 , 1 ,
+609 , 38565 , 158 , 78 , 1 , 1 ,
+609 , 38566 , 152 , 33 , 1 , 1 ,
+609 , 38567 , 151 , 52 , 1 , 1 ,
+609 , 38568 , 151 , 52 , 1 , 1 ,
+609 , 38569 , 149 , 34 , 1 , 1 ,
+609 , 38570 , 79 , 82 , 1 , 1 ,
+609 , 38571 , 83 , 74 , 1 , 1 ,
+609 , 38572 , 122 , 52 , 1 , 1 ,
+609 , 38573 , 121 , 64 , 1 , 1 ,
+609 , 38574 , 120 , 67 , 1 , 1 ,
+609 , 38575 , 109 , 52 , 1 , 1 ,
+609 , 38576 , 147 , 32 , 1 , 1 ,
+609 , 38577 , 69 , 41 , 1 , 1 ,
+609 , 38578 , 69 , 32 , 1 , 1 ,
+609 , 38579 , 67 , 41 , 1 , 1 ,
+609 , 38580 , 67 , 42 , 1 , 1 ,
+609 , 38581 , 147 , 54 , 1 , 1 ,
+609 , 38582 , 146 , 64 , 1 , 1 ,
+609 , 38583 , 146 , 55 , 1 , 1 ,
+609 , 38584 , 146 , 54 , 1 , 1 ,
+609 , 38585 , 126 , 62 , 1 , 1 ,
+609 , 38586 , 145 , 55 , 1 , 1 ,
+609 , 38587 , 145 , 52 , 1 , 1 ,
+609 , 38588 , 145 , 22 , 1 , 1 ,
+609 , 38589 , 73 , 52 , 1 , 1 ,
+609 , 38590 , 79 , 53 , 1 , 1 ,
+609 , 38591 , 144 , 56 , 1 , 1 ,
+609 , 38592 , 141 , 62 , 1 , 1 ,
+609 , 38593 , 84 , 77 , 1 , 1 ,
+609 , 38594 , 83 , 72 , 1 , 1 ,
+609 , 38595 , 82 , 62 , 1 , 1 ,
+609 , 38596 , 78 , 64 , 1 , 1 ,
+609 , 38597 , 78 , 64 , 1 , 1 ,
+609 , 38598 , 78 , 64 , 1 , 1 ,
+609 , 38599 , 77 , 54 , 1 , 1 ,
+609 , 38600 , 77 , 55 , 1 , 1 ,
+609 , 38601 , 75 , 48 , 1 , 1 ,
+609 , 38602 , 75 , 47 , 1 , 1 ,
+609 , 38603 , 141 , 72 , 1 , 1 ,
+609 , 38604 , 158 , 46 , 1 , 1 ,
+609 , 38605 , 158 , 52 , 1 , 1 ,
+609 , 38606 , 75 , 47 , 1 , 1 ,
+609 , 38607 , 155 , 52 , 1 , 1 ,
+609 , 38608 , 81 , 53 , 1 , 1 ,
+609 , 38609 , 82 , 82 , 1 , 1 ,
+609 , 38610 , 79 , 72 , 1 , 1 ,
+609 , 38611 , 82 , 62 , 1 , 1 ,
+609 , 38612 , 155 , 52 , 1 , 1 ,
+609 , 38613 , 82 , 72 , 1 , 1 ,
+609 , 38614 , 155 , 52 , 1 , 1 ,
+609 , 38615 , 155 , 52 , 1 , 1 ,
+609 , 38616 , 153 , 44 , 1 , 1 ,
+609 , 38617 , 80 , 53 , 1 , 1 ,
+609 , 38618 , 74 , 59 , 1 , 1 ,
+609 , 38619 , 72 , 41 , 1 , 1 ,
+609 , 38620 , 70 , 33 , 1 , 1 ,
+609 , 38621 , 69 , 33 , 1 , 1 ,
+609 , 38622 , 69 , 34 , 1 , 1 ,
+609 , 38623 , 153 , 78 , 1 , 1 ,
+609 , 38624 , 152 , 62 , 1 , 1 ,
+609 , 38625 , 152 , 52 , 1 , 1 ,
+609 , 38626 , 82 , 72 , 1 , 1 ,
+609 , 38627 , 83 , 72 , 1 , 1 ,
+609 , 38628 , 181 , 33 , 1 , 1 ,
+609 , 38629 , 83 , 66 , 1 , 1 ,
+609 , 38630 , 181 , 32 , 1 , 1 ,
+609 , 38631 , 174 , 54 , 1 , 1 ,
+609 , 38632 , 175 , 41 , 1 , 1 ,
+609 , 38633 , 174 , 41 , 1 , 1 ,
+609 , 38634 , 169 , 52 , 1 , 1 ,
+609 , 38635 , 169 , 41 , 1 , 1 ,
+609 , 38636 , 174 , 41 , 1 , 1 ,
+609 , 38637 , 169 , 52 , 1 , 1 ,
+609 , 38638 , 169 , 52 , 1 , 1 ,
+609 , 38639 , 166 , 62 , 1 , 1 ,
+609 , 38640 , 166 , 43 , 1 , 1 ,
+609 , 38641 , 67 , 43 , 1 , 1 ,
+609 , 38642 , 166 , 33 , 1 , 1 ,
+609 , 38643 , 109 , 62 , 1 , 1 ,
+609 , 38644 , 109 , 55 , 1 , 1 ,
+609 , 38645 , 108 , 124 , 1 , 1 ,
+609 , 38646 , 107 , 125 , 1 , 1 ,
+609 , 38647 , 106 , 32 , 1 , 1 ,
+609 , 38648 , 106 , 52 , 1 , 1 ,
+609 , 38649 , 74 , 59 , 1 , 1 ,
+609 , 38650 , 66 , 42 , 1 , 1 ,
+609 , 38651 , 77 , 72 , 1 , 1 ,
+609 , 38652 , 105 , 62 , 1 , 1 ,
+609 , 38653 , 104 , 43 , 1 , 1 ,
+609 , 38654 , 84 , 55 , 1 , 1 ,
+609 , 38655 , 100 , 33 , 1 , 1 ,
+609 , 38656 , 99 , 54 , 1 , 1 ,
+609 , 38657 , 99 , 54 , 1 , 1 ,
+609 , 38658 , 97 , 47 , 1 , 1 ,
+609 , 38659 , 97 , 47 , 1 , 1 ,
+609 , 38660 , 141 , 72 , 1 , 1 ,
+609 , 38661 , 140 , 52 , 1 , 1 ,
+609 , 38662 , 139 , 72 , 1 , 1 ,
+609 , 38663 , 90 , 72 , 1 , 1 ,
+609 , 38664 , 82 , 43 , 1 , 1 ,
+609 , 38665 , 126 , 62 , 1 , 1 ,
+609 , 38666 , 126 , 72 , 1 , 1 ,
+609 , 38667 , 139 , 56 , 1 , 1 ,
+609 , 38668 , 139 , 46 , 1 , 1 ,
+609 , 38669 , 66 , 42 , 1 , 1 ,
+609 , 38670 , 66 , 42 , 1 , 1 ,
+609 , 38671 , 166 , 62 , 1 , 1 ,
+609 , 38672 , 166 , 43 , 1 , 1 ,
+609 , 38673 , 126 , 72 , 1 , 1 ,
+609 , 38674 , 74 , 49 , 1 , 1 ,
+609 , 38675 , 73 , 42 , 1 , 1 ,
+609 , 38676 , 165 , 52 , 1 , 1 ,
+609 , 38677 , 116 , 103 , 1 , 1 ,
+609 , 38678 , 164 , 52 , 1 , 1 ,
+609 , 38679 , 164 , 54 , 1 , 1 ,
+609 , 38680 , 160 , 46 , 1 , 1 ,
+609 , 38681 , 73 , 52 , 1 , 1 ,
+609 , 38682 , 73 , 52 , 1 , 1 ,
+609 , 38683 , 73 , 62 , 1 , 1 ,
+609 , 38684 , 73 , 62 , 1 , 1 ,
+609 , 38685 , 73 , 82 , 1 , 1 ,
+609 , 38686 , 87 , 141 , 1 , 1 ,
+609 , 38687 , 87 , 144 , 1 , 1 ,
+609 , 38688 , 86 , 136 , 1 , 1 ,
+609 , 38689 , 171 , 52 , 1 , 1 ,
+609 , 38690 , 89 , 75 , 1 , 1 ,
+609 , 38691 , 89 , 154 , 1 , 1 ,
+609 , 38692 , 72 , 66 , 1 , 1 ,
+609 , 38693 , 170 , 84 , 1 , 1 ,
+609 , 38694 , 170 , 85 , 1 , 1 ,
+609 , 38695 , 179 , 41 , 1 , 1 ,
+609 , 38696 , 179 , 41 , 1 , 1 ,
+609 , 38697 , 179 , 41 , 1 , 1 ,
+609 , 38698 , 178 , 41 , 1 , 1 ,
+609 , 38699 , 176 , 41 , 1 , 1 ,
+609 , 38700 , 72 , 65 , 1 , 1 ,
+609 , 38701 , 175 , 52 , 1 , 1 ,
+609 , 38702 , 175 , 41 , 1 , 1 ,
+609 , 38703 , 116 , 62 , 1 , 1 ,
+609 , 38704 , 79 , 72 , 1 , 1 ,
+609 , 38705 , 82 , 74 , 1 , 1 ,
+609 , 38706 , 82 , 74 , 1 , 1 ,
+609 , 38707 , 81 , 85 , 1 , 1 ,
+609 , 38708 , 116 , 62 , 1 , 1 ,
+609 , 38709 , 116 , 82 , 1 , 1 ,
+609 , 38710 , 114 , 52 , 1 , 1 ,
+609 , 38711 , 86 , 146 , 1 , 1 ,
+609 , 38712 , 87 , 175 , 1 , 1 ,
+609 , 38713 , 88 , 182 , 1 , 1 ,
+609 , 38714 , 114 , 87 , 1 , 1 ,
+609 , 38715 , 111 , 44 , 1 , 1 ,
+609 , 38716 , 90 , 62 , 1 , 1 ,
+609 , 38717 , 89 , 72 , 1 , 1 ,
+609 , 38718 , 91 , 172 , 1 , 1 ,
+609 , 38719 , 91 , 96 , 1 , 1 ,
+609 , 38720 , 110 , 62 , 1 , 1 ,
+609 , 38721 , 67 , 42 , 1 , 1 ,
+609 , 38722 , 67 , 128 , 1 , 1 ,
+609 , 38723 , 110 , 44 , 1 , 1 ,
+609 , 38724 , 110 , 62 , 1 , 1 ,
+609 , 38725 , 72 , 86 , 1 , 1 ,
+609 , 38726 , 77 , 103 , 1 , 1 ,
+609 , 38727 , 74 , 62 , 1 , 1 ,
+609 , 38728 , 73 , 62 , 1 , 1 ,
+609 , 38729 , 73 , 52 , 1 , 1 ,
+609 , 38730 , 110 , 34 , 1 , 1 ,
+609 , 38731 , 109 , 52 , 1 , 1 ,
+609 , 38732 , 85 , 93 , 1 , 1 ,
+609 , 38733 , 85 , 121 , 1 , 1 ,
+609 , 38734 , 139 , 99 , 1 , 1 ,
+609 , 38735 , 90 , 97 , 1 , 1 ,
+609 , 38736 , 131 , 62 , 1 , 1 ,
+609 , 38737 , 130 , 111 , 1 , 1 ,
+609 , 38738 , 175 , 41 , 1 , 1 ,
+609 , 38739 , 174 , 117 , 1 , 1 ,
+609 , 38740 , 185 , 41 , 1 , 1 ,
+609 , 38741 , 185 , 31 , 1 , 1 ,
+609 , 38742 , 170 , 105 , 1 , 1 ,
+609 , 38743 , 170 , 52 , 1 , 1 ,
+609 , 38744 , 79 , 106 , 1 , 1 ,
+609 , 38745 , 79 , 107 , 1 , 1 ,
+609 , 38746 , 76 , 32 , 1 , 1 ,
+609 , 38747 , 79 , 62 , 1 , 1 ,
+609 , 38748 , 79 , 62 , 1 , 1 ,
+609 , 38749 , 78 , 62 , 1 , 1 ,
+609 , 38750 , 78 , 62 , 1 , 1 ,
+609 , 38751 , 169 , 41 , 1 , 1 ,
+609 , 38752 , 169 , 41 , 1 , 1 ,
+609 , 38753 , 138 , 98 , 1 , 1 ,
+609 , 38754 , 138 , 99 , 1 , 1 ,
+609 , 38755 , 137 , 91 , 1 , 1 ,
+609 , 38756 , 137 , 88 , 1 , 1 ,
+609 , 38757 , 137 , 98 , 1 , 1 ,
+609 , 38758 , 136 , 103 , 1 , 1 ,
+609 , 38759 , 130 , 62 , 1 , 1 ,
+609 , 38760 , 120 , 72 , 1 , 1 ,
+609 , 38761 , 120 , 72 , 1 , 1 ,
+609 , 38762 , 119 , 109 , 1 , 1 ,
+609 , 38763 , 119 , 98 , 1 , 1 ,
+609 , 38764 , 116 , 62 , 1 , 1 ,
+609 , 38765 , 73 , 52 , 1 , 1 ,
+609 , 38766 , 118 , 33 , 1 , 1 ,
+609 , 38767 , 130 , 93 , 1 , 1 ,
+609 , 38768 , 97 , 104 , 1 , 1 ,
+609 , 38769 , 95 , 52 , 1 , 1 ,
+609 , 38770 , 95 , 62 , 1 , 1 ,
+609 , 38771 , 95 , 72 , 1 , 1 ,
+609 , 38772 , 85 , 121 , 1 , 1 ,
+609 , 38773 , 95 , 62 , 1 , 1 ,
+609 , 38774 , 93 , 181 , 1 , 1 ,
+609 , 38775 , 90 , 82 , 1 , 1 ,
+609 , 38776 , 90 , 72 , 1 , 1 ,
+609 , 38777 , 90 , 72 , 1 , 1 ,
+609 , 38778 , 129 , 87 , 1 , 1 ,
+609 , 38779 , 126 , 62 , 1 , 1 ,
+609 , 38780 , 77 , 52 , 1 , 1 ,
+609 , 38781 , 126 , 103 , 1 , 1 ,
+609 , 38782 , 125 , 62 , 1 , 1 ,
+609 , 38783 , 125 , 62 , 1 , 1 ,
+609 , 38784 , 90 , 76 , 1 , 1 ,
+609 , 38785 , 90 , 77 , 1 , 1 ,
+609 , 38786 , 89 , 76 , 1 , 1 ,
+609 , 38787 , 123 , 52 , 1 , 1 ,
+609 , 38788 , 122 , 72 , 1 , 1 ,
+609 , 38789 , 122 , 73 , 1 , 1 ,
+609 , 38790 , 128 , 66 , 1 , 1 ,
+609 , 38791 , 128 , 66 , 1 , 1 ,
+609 , 38792 , 66 , 32 , 1 , 1 ,
+609 , 38793 , 61 , 41 , 1 , 1 ,
+609 , 38794 , 24 , 33 , 1 , 1 ,
+609 , 38795 , 24 , 36 , 1 , 1 ,
+609 , 38796 , 24 , 45 , 1 , 1 ,
+609 , 38797 , 24 , 36 , 1 , 1 ,
+609 , 38798 , 24 , 34 , 1 , 1 ,
+609 , 38799 , 24 , 36 , 1 , 1 ,
+609 , 38800 , 24 , 35 , 1 , 1 ,
+609 , 38801 , 24 , 37 , 1 , 1 ,
+609 , 38802 , 17 , 196 , 1 , 1 ,
+609 , 38803 , 17 , 190 , 1 , 1 ,
+609 , 38804 , 17 , 196 , 1 , 1 ,
+609 , 38805 , 17 , 196 , 1 , 1 ,
+609 , 38806 , 17 , 196 , 1 , 1 ,
+609 , 38807 , 17 , 196 , 1 , 1 ,
+609 , 38808 , 17 , 196 , 1 , 1 ,
+609 , 38809 , 17 , 196 , 1 , 1 ,
+609 , 38810 , 17 , 196 , 1 , 1 ,
+609 , 38811 , 17 , 175 , 1 , 1 ,
+609 , 38812 , 17 , 196 , 1 , 1 ,
+609 , 38813 , 17 , 186 , 1 , 1 ,
+609 , 38814 , 17 , 175 , 1 , 1 ,
+609 , 38815 , 17 , 186 , 1 , 1 ,
+609 , 38816 , 17 , 175 , 1 , 1 ,
+609 , 38817 , 17 , 186 , 1 , 1 ,
+609 , 38818 , 30 , 44 , 1 , 1 ,
+609 , 38819 , 30 , 54 , 1 , 1 ,
+609 , 38820 , 29 , 55 , 1 , 1 ,
+609 , 38821 , 29 , 55 , 1 , 1 ,
+609 , 38822 , 29 , 56 , 1 , 1 ,
+609 , 38823 , 29 , 86 , 1 , 1 ,
+609 , 38824 , 28 , 76 , 1 , 1 ,
+609 , 38825 , 27 , 55 , 1 , 1 ,
+609 , 38826 , 27 , 55 , 1 , 1 ,
+609 , 38827 , 27 , 55 , 1 , 1 ,
+609 , 38828 , 26 , 44 , 1 , 1 ,
+609 , 38829 , 26 , 76 , 1 , 1 ,
+609 , 38830 , 26 , 75 , 1 , 1 ,
+609 , 38831 , 25 , 44 , 1 , 1 ,
+609 , 38832 , 25 , 55 , 1 , 1 ,
+609 , 38833 , 25 , 55 , 1 , 1 ,
+609 , 38834 , 25 , 76 , 1 , 1 ,
+609 , 38835 , 24 , 44 , 1 , 1 ,
+609 , 38836 , 24 , 76 , 1 , 1 ,
+609 , 38837 , 23 , 44 , 1 , 1 ,
+609 , 38838 , 23 , 34 , 1 , 1 ,
+609 , 38839 , 23 , 54 , 1 , 1 ,
+609 , 38840 , 22 , 55 , 1 , 1 ,
+609 , 38841 , 22 , 56 , 1 , 1 ,
+609 , 38842 , 22 , 44 , 1 , 1 ,
+609 , 38843 , 21 , 55 , 1 , 1 ,
+609 , 38844 , 21 , 45 , 1 , 1 ,
+609 , 38845 , 21 , 67 , 1 , 1 ,
+609 , 38846 , 20 , 75 , 1 , 1 ,
+609 , 38847 , 20 , 54 , 1 , 1 ,
+609 , 38848 , 20 , 44 , 1 , 1 ,
+609 , 38849 , 19 , 45 , 1 , 1 ,
+609 , 38850 , 19 , 44 , 1 , 1 ,
+609 , 38851 , 19 , 44 , 1 , 1 ,
+609 , 38852 , 19 , 54 , 1 , 1 ,
+609 , 38853 , 18 , 65 , 1 , 1 ,
+609 , 38854 , 18 , 76 , 1 , 1 ,
+609 , 38855 , 18 , 56 , 1 , 1 ,
+609 , 38856 , 17 , 55 , 1 , 1 ,
+609 , 38857 , 17 , 54 , 1 , 1 ,
+609 , 38858 , 17 , 56 , 1 , 1 ,
+609 , 38859 , 16 , 76 , 1 , 1 ,
+609 , 38860 , 16 , 56 , 1 , 1 ,
+609 , 38861 , 16 , 55 , 1 , 1 ,
+609 , 38862 , 16 , 76 , 1 , 1 ,
+609 , 38863 , 15 , 56 , 1 , 1 ,
+609 , 38864 , 15 , 55 , 1 , 1 ,
+609 , 38865 , 15 , 55 , 1 , 1 ,
+609 , 38866 , 14 , 55 , 1 , 1 ,
+609 , 38867 , 14 , 56 , 1 , 1 ,
+609 , 38868 , 14 , 56 , 1 , 1 ,
+609 , 38869 , 13 , 68 , 1 , 1 ,
+609 , 38870 , 13 , 67 , 1 , 1 ,
+609 , 38871 , 13 , 57 , 1 , 1 ,
+609 , 38872 , 13 , 57 , 1 , 1 ,
+609 , 38873 , 12 , 57 , 1 , 1 ,
+609 , 38874 , 12 , 58 , 1 , 1 ,
+609 , 38875 , 12 , 58 , 1 , 1 ,
+609 , 38876 , 11 , 59 , 1 , 1 ,
+609 , 38877 , 11 , 69 , 1 , 1 ,
+609 , 38878 , 11 , 69 , 1 , 1 ,
+609 , 38879 , 10 , 54 , 1 , 1 ,
+609 , 38880 , 10 , 54 , 1 , 1 ,
+609 , 38881 , 10 , 87 , 1 , 1 ,
+609 , 38882 , 38 , 72 , 1 , 1 ,
+609 , 38883 , 38 , 62 , 1 , 1 ,
+609 , 38884 , 38 , 72 , 1 , 1 ,
+609 , 38885 , 37 , 72 , 1 , 1 ,
+609 , 38886 , 37 , 62 , 1 , 1 ,
+609 , 38887 , 37 , 62 , 1 , 1 ,
+609 , 38888 , 37 , 72 , 1 , 1 ,
+609 , 38889 , 37 , 73 , 1 , 1 ,
+609 , 38890 , 37 , 63 , 1 , 1 ,
+609 , 38891 , 37 , 74 , 1 , 1 ,
+609 , 38892 , 34 , 62 , 1 , 1 ,
+609 , 38893 , 34 , 82 , 1 , 1 ,
+609 , 38894 , 33 , 83 , 1 , 1 ,
+609 , 38895 , 33 , 72 , 1 , 1 ,
+609 , 38896 , 33 , 62 , 1 , 1 ,
+609 , 38897 , 33 , 82 , 1 , 1 ,
+609 , 38898 , 33 , 72 , 1 , 1 ,
+609 , 38899 , 33 , 62 , 1 , 1 ,
+609 , 38900 , 33 , 62 , 1 , 1 ,
+609 , 38901 , 32 , 62 , 1 , 1 ,
+609 , 38902 , 29 , 82 , 1 , 1 ,
+609 , 38903 , 28 , 62 , 1 , 1 ,
+609 , 38904 , 28 , 72 , 1 , 1 ,
+609 , 38905 , 28 , 52 , 1 , 1 ,
+609 , 38906 , 28 , 52 , 1 , 1 ,
+609 , 38907 , 27 , 52 , 1 , 1 ,
+609 , 38908 , 27 , 62 , 1 , 1 ,
+609 , 38909 , 27 , 52 , 1 , 1 ,
+609 , 38910 , 27 , 82 , 1 , 1 ,
+609 , 38911 , 27 , 82 , 1 , 1 ,
+609 , 38912 , 23 , 52 , 1 , 1 ,
+609 , 38913 , 22 , 41 , 1 , 1 ,
+609 , 38914 , 22 , 52 , 1 , 1 ,
+609 , 38915 , 21 , 52 , 1 , 1 ,
+609 , 38916 , 21 , 52 , 1 , 1 ,
+609 , 38917 , 21 , 52 , 1 , 1 ,
+609 , 38918 , 21 , 52 , 1 , 1 ,
+609 , 38919 , 21 , 92 , 1 , 1 ,
+609 , 38920 , 21 , 42 , 1 , 1 ,
+609 , 38921 , 21 , 42 , 1 , 1 ,
+609 , 38922 , 17 , 41 , 1 , 1 ,
+609 , 38923 , 17 , 41 , 1 , 1 ,
+609 , 38924 , 16 , 41 , 1 , 1 ,
+609 , 38925 , 16 , 41 , 1 , 1 ,
+609 , 38926 , 16 , 41 , 1 , 1 ,
+609 , 38927 , 16 , 41 , 1 , 1 ,
+609 , 38928 , 15 , 41 , 1 , 1 ,
+609 , 38929 , 15 , 41 , 1 , 1 ,
+609 , 38930 , 15 , 41 , 1 , 1 ,
+609 , 38931 , 15 , 52 , 1 , 1 ,
+609 , 38932 , 11 , 41 , 1 , 1 ,
+609 , 38933 , 11 , 52 , 1 , 1 ,
+609 , 38934 , 10 , 52 , 1 , 1 ,
+609 , 38935 , 10 , 41 , 1 , 1 ,
+609 , 38936 , 10 , 52 , 1 , 1 ,
+609 , 38937 , 10 , 52 , 1 , 1 ,
+609 , 38938 , 10 , 52 , 1 , 1 ,
+609 , 38939 , 9 , 41 , 1 , 1 ,
+609 , 38940 , 9 , 52 , 1 , 1 ,
+609 , 38941 , 9 , 41 , 1 , 1 ,
+609 , 38942 , 7 , 52 , 1 , 1 ,
+609 , 38943 , 7 , 52 , 1 , 1 ,
+609 , 38944 , 7 , 52 , 1 , 1 ,
+609 , 38945 , 7 , 52 , 1 , 1 ,
+609 , 38946 , 7 , 52 , 1 , 1 ,
+609 , 38947 , 7 , 52 , 1 , 1 ,
+609 , 38948 , 6 , 52 , 1 , 1 ,
+609 , 38949 , 6 , 52 , 1 , 1 ,
+609 , 38950 , 6 , 52 , 1 , 1 ,
+609 , 38951 , 6 , 41 , 1 , 1 ,
+609 , 38952 , 336 , 154 , 1 , 1 , 38837 38857 38729 38791 38948 38741 38738 38872 38730 38615 38662 38947 38686 38937 38641 38901 38740 38716 38768 38649 38936 38744 38604 38607 38733 38632 38580 38878 38739 38576 38774 38860 38921 38622 38779 38847 38737 38599 38609 38721 38711 38939 38600 38896 38827 38764 38673 38850 38889 38777 38893 38897 38639 38675 38781 38780 38690 38570 38571 38586 38602 38700 38778 38745 38877 38903 38819 38843 38862 38698 38757 38870 38894 38918 38824 38724 38773 38697 38663 38884 38888 38720 38655 38708 38605 38840 38672 38659 38770 38704 38844 38587 38854 38597 38804 38596 38593 38758 38949 38643 38933 38807 38623 38575 38661 38695 38788 38789 38688 38915 38715 38866 38782 38683 38917 38801 38831 38560 38657 38753 38946 38626 38760 38569 38900 38687 38943 38876 38676 38613 38924 38642 38902 38934 38759 38891 38606 38620 38855 38685 38566 38638 38691 38835 38554 38630 38942 38944 38669 38909 38811 38627 38755 38795 38890 38839 38828 38635 38664 38656 38861 38851 38701 38572 38614 38696 38907 38769 38578 38621 38825 38922 38682 38734 38736 38858 38574 38772 38651 38787 38805 38723 38868 38892 38727 38728 38793 38671 38874 38719 38564 38693 38598 38611 38853 38624 38817 38713 38864 38684 38612 38585 38603 38750 38923 38809 38816 38833 38631 38885 38913 38910 38665 38714 38699 38821 38856 38800 38814 38583 38660 38608 38706 38928 38555 38718 38743 38869 38681 38908 38629 38653 38930 38834 38938 38899 38710 38846 38678 38818 38838 38765 38650 38717 38763 38929 38796 38927 38887 38709 38898 38712 38776 38645 38594 38581 38852 38561 38689 38601 38829 38658 38562 38592 38806 38568 38762 38867 38871 38722 38830 38951 38618 38756 38732 38752 38584 38553 38799 38904 38565 38735 38747 38879 38573 38646 38563 38558 38794 38610 38797 38619 38826 38725 38940 38775 38591 38859 38677 38625 38647 38652 38912 38702 38786 38751 38823 38916 38906 38579 38808 38582 38798 38679 38783 38790 38926 38692 38588 38552 38813 38595 38873 38748 38746 38875 38648 38628 38822 38792 38841 38886 38667 38577 38802 38883 38674 38640 38742 38703 38935 38920 38670 38941 38812 38637 38634 38616 38749 38849 38636 38680 38767 38832 38945 38617 38705 38567 38590 38559 38633 38815 38842 38919 38848 38845 38556 38761 38589 38881 38754 38803 38666 38820 38905 38644 38784 38880 38771 38731 38694 38557 38668 38895 38931 38785 38836 38863 38707 38865 38911 38654 38932 38766 38925 38810 38914 38882 38726 38950
+610 , 38953 , 2 , 11 , 1 , 1 ,
+610 , 38954 , 107 , 41 , 1 , 1 , 38953
+610 , 38955 , 119 , 41 , 1 , 1 , 38953
+610 , 38956 , 117 , 41 , 1 , 1 , 38953
+610 , 38957 , 117 , 41 , 1 , 1 , 38953
+610 , 38958 , 117 , 41 , 1 , 1 , 38953
+610 , 38959 , 116 , 41 , 1 , 1 , 38953
+610 , 38960 , 116 , 41 , 1 , 1 , 38953
+610 , 38961 , 116 , 41 , 1 , 1 , 38953
+610 , 38962 , 114 , 41 , 1 , 1 , 38953
+610 , 38963 , 112 , 41 , 1 , 1 , 38953
+610 , 38964 , 112 , 52 , 1 , 1 , 38953
+610 , 38965 , 112 , 41 , 1 , 1 , 38953
+610 , 38966 , 112 , 52 , 1 , 1 , 38953
+610 , 38967 , 112 , 41 , 1 , 1 , 38953
+610 , 38968 , 112 , 52 , 1 , 1 , 38953
+610 , 38969 , 112 , 52 , 1 , 1 , 38953
+610 , 38970 , 112 , 52 , 1 , 1 , 38953
+610 , 38971 , 112 , 52 , 1 , 1 , 38953
+610 , 38972 , 109 , 52 , 1 , 1 , 38953
+610 , 38973 , 108 , 41 , 1 , 1 , 38953
+610 , 38974 , 107 , 52 , 1 , 1 , 38953
+610 , 38975 , 83 , 52 , 1 , 1 , 38953
+610 , 38976 , 83 , 62 , 1 , 1 , 38953
+610 , 38977 , 83 , 52 , 1 , 1 , 38953
+610 , 38978 , 83 , 62 , 1 , 1 , 38953
+610 , 38979 , 83 , 52 , 1 , 1 , 38953
+610 , 38980 , 83 , 52 , 1 , 1 , 38953
+610 , 38981 , 83 , 52 , 1 , 1 , 38953
+610 , 38982 , 83 , 52 , 1 , 1 , 38953
+610 , 38983 , 83 , 52 , 1 , 1 , 38953
+610 , 38984 , 78 , 83 , 1 , 1 , 38953
+610 , 38985 , 70 , 82 , 1 , 1 , 38953
+610 , 38986 , 68 , 82 , 1 , 1 , 38953
+610 , 38987 , 73 , 78 , 1 , 1 , 38953
+610 , 38988 , 73 , 75 , 1 , 1 , 38953
+610 , 38989 , 73 , 77 , 1 , 1 , 38953
+610 , 38990 , 73 , 80 , 1 , 1 , 38953
+610 , 38991 , 73 , 81 , 1 , 1 , 38953
+610 , 38992 , 73 , 74 , 1 , 1 , 38953
+610 , 38993 , 73 , 77 , 1 , 1 , 38953
+610 , 38994 , 73 , 86 , 1 , 1 , 38953
+610 , 38995 , 76 , 244 , 1 , 1 , 38953
+610 , 38996 , 75 , 244 , 1 , 1 , 38953
+610 , 38997 , 75 , 234 , 1 , 1 , 38953
+610 , 38998 , 75 , 244 , 1 , 1 , 38953
+610 , 38999 , 75 , 244 , 1 , 1 , 38953
+610 , 39000 , 75 , 254 , 1 , 1 , 38953
+610 , 39001 , 75 , 233 , 1 , 1 , 38953
+610 , 39002 , 75 , 244 , 1 , 1 , 38953
+610 , 39003 , 75 , 254 , 1 , 1 , 38953
+610 , 39004 , 75 , 254 , 1 , 1 , 38953
+610 , 39005 , 75 , 254 , 1 , 1 , 38953
+610 , 39006 , 75 , 244 , 1 , 1 , 38953
+610 , 39007 , 75 , 254 , 1 , 1 , 38953
+610 , 39008 , 75 , 234 , 1 , 1 , 38953
+610 , 39009 , 75 , 223 , 1 , 1 , 38953
+610 , 39010 , 75 , 254 , 1 , 1 , 38953
+610 , 39011 , 58 , 232 , 1 , 1 , 38953
+610 , 39012 , 58 , 232 , 1 , 1 , 38953
+610 , 39013 , 57 , 242 , 1 , 1 , 38953
+610 , 39014 , 57 , 264 , 1 , 1 , 38953
+610 , 39015 , 57 , 268 , 1 , 1 , 38953
+610 , 39016 , 56 , 232 , 1 , 1 , 38953
+610 , 39017 , 56 , 244 , 1 , 1 , 38953
+610 , 39018 , 56 , 243 , 1 , 1 , 38953
+610 , 39019 , 55 , 243 , 1 , 1 , 38953
+610 , 39020 , 55 , 254 , 1 , 1 , 38953
+610 , 39021 , 54 , 306 , 1 , 1 , 38953
+610 , 39022 , 54 , 335 , 1 , 1 , 38953
+610 , 39023 , 54 , 264 , 1 , 1 , 38953
+610 , 39024 , 53 , 254 , 1 , 1 , 38953
+610 , 39025 , 53 , 247 , 1 , 1 , 38953
+610 , 39026 , 52 , 247 , 1 , 1 , 38953
+610 , 39027 , 52 , 223 , 1 , 1 , 38953
+610 , 39028 , 52 , 244 , 1 , 1 , 38953
+610 , 39029 , 52 , 255 , 1 , 1 , 38953
+610 , 39030 , 51 , 307 , 1 , 1 , 38953
+610 , 39031 , 51 , 350 , 1 , 1 , 38953
+610 , 39032 , 51 , 255 , 1 , 1 , 38953
+610 , 39033 , 50 , 256 , 1 , 1 , 38953
+610 , 39034 , 50 , 245 , 1 , 1 , 38953
+610 , 39035 , 50 , 244 , 1 , 1 , 38953
+610 , 39036 , 49 , 256 , 1 , 1 , 38953
+610 , 39037 , 49 , 278 , 1 , 1 , 38953
+610 , 39038 , 49 , 245 , 1 , 1 , 38953
+610 , 39039 , 48 , 262 , 1 , 1 , 38953
+610 , 39040 , 48 , 330 , 1 , 1 , 38953
+610 , 39041 , 48 , 252 , 1 , 1 , 38953
+610 , 39042 , 47 , 251 , 1 , 1 , 38953
+610 , 39043 , 47 , 252 , 1 , 1 , 38953
+610 , 39044 , 47 , 257 , 1 , 1 , 38953
+610 , 39045 , 46 , 260 , 1 , 1 , 38953
+610 , 39046 , 46 , 277 , 1 , 1 , 38953
+610 , 39047 , 46 , 308 , 1 , 1 , 38953
+610 , 39048 , 46 , 253 , 1 , 1 , 38953
+610 , 39049 , 45 , 253 , 1 , 1 , 38953
+610 , 39050 , 45 , 253 , 1 , 1 , 38953
+610 , 39051 , 45 , 256 , 1 , 1 , 38953
+610 , 39052 , 44 , 313 , 1 , 1 , 38953
+610 , 39053 , 44 , 257 , 1 , 1 , 38953
+610 , 39054 , 44 , 253 , 1 , 1 , 38953
+610 , 39055 , 44 , 299 , 1 , 1 , 38953
+610 , 39056 , 43 , 253 , 1 , 1 , 38953
+610 , 39057 , 43 , 253 , 1 , 1 , 38953
+610 , 39058 , 43 , 254 , 1 , 1 , 38953
+610 , 39059 , 43 , 254 , 1 , 1 , 38953
+610 , 39060 , 42 , 222 , 1 , 1 , 38953
+610 , 39061 , 42 , 307 , 1 , 1 , 38953
+610 , 39062 , 42 , 260 , 1 , 1 , 38953
+610 , 39063 , 41 , 266 , 1 , 1 , 38953
+610 , 39064 , 41 , 235 , 1 , 1 , 38953
+610 , 39065 , 41 , 235 , 1 , 1 , 38953
+610 , 39066 , 40 , 236 , 1 , 1 , 38953
+610 , 39067 , 40 , 264 , 1 , 1 , 38953
+610 , 39068 , 40 , 262 , 1 , 1 , 38953
+610 , 39069 , 39 , 252 , 1 , 1 , 38953
+610 , 39070 , 39 , 295 , 1 , 1 , 38953
+610 , 39071 , 39 , 352 , 1 , 1 , 38953
+610 , 39072 , 38 , 260 , 1 , 1 , 38953
+610 , 39073 , 38 , 264 , 1 , 1 , 38953
+610 , 39074 , 38 , 253 , 1 , 1 , 38953
+610 , 39075 , 67 , 82 , 1 , 1 , 38953
+610 , 39076 , 66 , 72 , 1 , 1 , 38953
+610 , 39077 , 66 , 72 , 1 , 1 , 38953
+610 , 39078 , 66 , 62 , 1 , 1 , 38953
+610 , 39079 , 66 , 62 , 1 , 1 , 38953
+610 , 39080 , 65 , 82 , 1 , 1 , 38953
+610 , 39081 , 65 , 62 , 1 , 1 , 38953
+610 , 39082 , 65 , 72 , 1 , 1 , 38953
+610 , 39083 , 62 , 83 , 1 , 1 , 38953
+610 , 39084 , 58 , 82 , 1 , 1 , 38953
+610 , 39085 , 58 , 72 , 1 , 1 , 38953
+610 , 39086 , 57 , 72 , 1 , 1 , 38953
+610 , 39087 , 57 , 72 , 1 , 1 , 38953
+610 , 39088 , 57 , 72 , 1 , 1 , 38953
+610 , 39089 , 57 , 82 , 1 , 1 , 38953
+610 , 39090 , 57 , 72 , 1 , 1 , 38953
+610 , 39091 , 56 , 72 , 1 , 1 , 38953
+610 , 39092 , 56 , 72 , 1 , 1 , 38953
+610 , 39093 , 53 , 82 , 1 , 1 , 38953
+610 , 39094 , 49 , 82 , 1 , 1 , 38953
+610 , 39095 , 48 , 82 , 1 , 1 , 38953
+610 , 39096 , 48 , 72 , 1 , 1 , 38953
+610 , 39097 , 48 , 82 , 1 , 1 , 38953
+610 , 39098 , 47 , 62 , 1 , 1 , 38953
+610 , 39099 , 47 , 103 , 1 , 1 , 38953
+610 , 39100 , 47 , 103 , 1 , 1 , 38953
+610 , 39101 , 47 , 82 , 1 , 1 , 38953
+610 , 39102 , 47 , 82 , 1 , 1 , 38953
+610 , 39103 , 43 , 72 , 1 , 1 , 38953
+610 , 39104 , 40 , 62 , 1 , 1 , 38953
+610 , 39105 , 39 , 72 , 1 , 1 , 38953
+610 , 39106 , 39 , 62 , 1 , 1 , 38953
+610 , 39107 , 39 , 93 , 1 , 1 , 38953
+610 , 39108 , 39 , 82 , 1 , 1 , 38953
+610 , 39109 , 39 , 62 , 1 , 1 , 38953
+610 , 39110 , 39 , 73 , 1 , 1 , 38953
+610 , 39111 , 39 , 62 , 1 , 1 , 38953
+610 , 39112 , 38 , 52 , 1 , 1 , 38953
+610 , 39113 , 37 , 62 , 1 , 1 , 38953
+610 , 39114 , 35 , 62 , 1 , 1 , 38953
+610 , 39115 , 34 , 83 , 1 , 1 , 38953
+610 , 39116 , 34 , 73 , 1 , 1 , 38953
+610 , 39117 , 34 , 73 , 1 , 1 , 38953
+610 , 39118 , 34 , 63 , 1 , 1 , 38953
+610 , 39119 , 34 , 63 , 1 , 1 , 38953
+610 , 39120 , 34 , 63 , 1 , 1 , 38953
+610 , 39121 , 34 , 63 , 1 , 1 , 38953
+610 , 39122 , 34 , 52 , 1 , 1 , 38953
+610 , 39123 , 32 , 62 , 1 , 1 , 38953
+610 , 39124 , 30 , 72 , 1 , 1 , 38953
+610 , 39125 , 29 , 62 , 1 , 1 , 38953
+610 , 39126 , 29 , 62 , 1 , 1 , 38953
+610 , 39127 , 29 , 72 , 1 , 1 , 38953
+610 , 39128 , 29 , 72 , 1 , 1 , 38953
+610 , 39129 , 29 , 62 , 1 , 1 , 38953
+610 , 39130 , 29 , 62 , 1 , 1 , 38953
+610 , 39131 , 29 , 72 , 1 , 1 , 38953
+610 , 39132 , 29 , 62 , 1 , 1 , 38953
+610 , 39133 , 27 , 72 , 1 , 1 , 38953
+610 , 39134 , 26 , 72 , 1 , 1 , 38953
+610 , 39135 , 26 , 73 , 1 , 1 , 38953
+610 , 39136 , 26 , 62 , 1 , 1 , 38953
+610 , 39137 , 26 , 62 , 1 , 1 , 38953
+610 , 39138 , 26 , 73 , 1 , 1 , 38953
+610 , 39139 , 26 , 73 , 1 , 1 , 38953
+610 , 39140 , 26 , 62 , 1 , 1 , 38953
+610 , 39141 , 26 , 62 , 1 , 1 , 38953
+610 , 39142 , 26 , 76 , 1 , 1 , 38953
+610 , 39143 , 26 , 31 , 1 , 1 , 38953
+610 , 39144 , 26 , 31 , 1 , 1 , 38953
+610 , 39145 , 26 , 41 , 1 , 1 , 38953
+610 , 39146 , 26 , 62 , 1 , 1 , 38953
+610 , 39147 , 421 , 0 , 1 , 1 , 39002 39066 38979 39087 39039 38992 39096 39085 39140 39044 39100 39032 38954 39102 38976 39129 39031 39136 39144 39018 39038 39076 39080 39143 38969 38991 39008 39089 39061 38964 38962 39091 38963 39110 39033 39141 39021 39010 39077 39040 39026 39074 39088 39009 39042 39065 39101 38980 39052 39059 38981 39117 39115 38974 39046 39034 38967 39028 39138 38993 39058 39121 39086 39011 39075 39103 38983 38973 39062 39027 39005 38956 39007 38996 39116 39071 39079 39108 39051 39128 39095 38965 39069 38989 39142 38999 38972 39072 38975 39001 38961 39099 39057 39068 39145 39050 38958 39036 39025 39035 39083 38955 39056 39067 39047 39106 38970 39118 39090 39109 39124 38986 39123 39105 39113 39097 39019 39133 38985 38988 39119 39048 39063 39045 39070 39054 39107 39030 38997 39127 39015 38971 38968 39084 39016 39029 39134 39012 39049 38966 39078 39104 38960 39023 38957 39014 39082 38959 38978 39135 39139 38990 39006 38998 39093 38977 39053 39073 38987 39024 38994 39017 39013 39064 39146 39137 39114 39003 39020 39098 39081 39041 39092 39004 38984 39043 39122 39126 39094 39131 39060 39037 38995 39111 39022 39000 39132 38982 39125 39130 39055 39112 39120
+610 , 39148 , 485 , 33 , 1 , 1 , 39147
+610 , 39149 , 485 , 33 , 1 , 1 , 39147
+610 , 39150 , 485 , 43 , 1 , 1 , 39147
+610 , 39151 , 485 , 44 , 1 , 1 , 39147
+610 , 39152 , 485 , 44 , 1 , 1 , 39147
+610 , 39153 , 485 , 44 , 1 , 1 , 39147
+610 , 39154 , 485 , 44 , 1 , 1 , 39147
+610 , 39155 , 481 , 43 , 1 , 1 , 39147
+610 , 39156 , 481 , 41 , 1 , 1 , 39147
+610 , 39157 , 481 , 41 , 1 , 1 , 39147
+610 , 39158 , 481 , 31 , 1 , 1 , 39147
+610 , 39159 , 481 , 52 , 1 , 1 , 39147
+610 , 39160 , 481 , 41 , 1 , 1 , 39147
+610 , 39161 , 481 , 52 , 1 , 1 , 39147
+610 , 39162 , 481 , 42 , 1 , 1 , 39147
+610 , 39163 , 481 , 42 , 1 , 1 , 39147
+610 , 39164 , 481 , 42 , 1 , 1 , 39147
+610 , 39165 , 512 , 0 , 1 , 1 , 39147
+610 , 39166 , 490 , 43 , 1 , 1 , 39147
+610 , 39167 , 486 , 33 , 1 , 1 , 39147
+610 , 39168 , 485 , 33 , 1 , 1 , 39147
+610 , 39169 , 510 , 34 , 1 , 1 , 39147
+610 , 39170 , 508 , 35 , 1 , 1 , 39147
+610 , 39171 , 485 , 42 , 1 , 1 , 39147
+610 , 39172 , 477 , 53 , 1 , 1 , 39147
+610 , 39173 , 474 , 55 , 1 , 1 , 39147
+610 , 39174 , 474 , 53 , 1 , 1 , 39147
+610 , 39175 , 474 , 53 , 1 , 1 , 39147
+610 , 39176 , 474 , 54 , 1 , 1 , 39147
+610 , 39177 , 474 , 54 , 1 , 1 , 39147
+610 , 39178 , 473 , 54 , 1 , 1 , 39147
+610 , 39179 , 473 , 54 , 1 , 1 , 39147
+610 , 39180 , 473 , 52 , 1 , 1 , 39147
+610 , 39181 , 509 , 13 , 1 , 1 , 39147
+610 , 39182 , 509 , 11 , 1 , 1 , 39147
+610 , 39183 , 509 , 11 , 1 , 1 , 39147
+610 , 39184 , 509 , 13 , 1 , 1 , 39147
+610 , 39185 , 509 , 13 , 1 , 1 , 39147
+610 , 39186 , 509 , 0 , 1 , 1 , 39147
+610 , 39187 , 509 , 13 , 1 , 1 , 39147
+610 , 39188 , 509 , 12 , 1 , 1 , 39147
+610 , 39189 , 505 , 33 , 1 , 1 , 39147
+610 , 39190 , 505 , 33 , 1 , 1 , 39147
+610 , 39191 , 505 , 34 , 1 , 1 , 39147
+610 , 39192 , 505 , 34 , 1 , 1 , 39147
+610 , 39193 , 505 , 33 , 1 , 1 , 39147
+610 , 39194 , 504 , 34 , 1 , 1 , 39147
+610 , 39195 , 504 , 34 , 1 , 1 , 39147
+610 , 39196 , 504 , 24 , 1 , 1 , 39147
+610 , 39197 , 504 , 34 , 1 , 1 , 39147
+610 , 39198 , 504 , 34 , 1 , 1 , 39147
+610 , 39199 , 504 , 24 , 1 , 1 , 39147
+610 , 39200 , 504 , 34 , 1 , 1 , 39147
+610 , 39201 , 504 , 24 , 1 , 1 , 39147
+610 , 39202 , 504 , 24 , 1 , 1 , 39147
+610 , 39203 , 505 , 33 , 1 , 1 , 39147
+610 , 39204 , 504 , 24 , 1 , 1 , 39147
+610 , 39205 , 501 , 24 , 1 , 1 , 39147
+610 , 39206 , 502 , 22 , 1 , 1 , 39147
+610 , 39207 , 501 , 22 , 1 , 1 , 39147
+610 , 39208 , 501 , 24 , 1 , 1 , 39147
+610 , 39209 , 500 , 34 , 1 , 1 , 39147
+610 , 39210 , 500 , 34 , 1 , 1 , 39147
+610 , 39211 , 498 , 32 , 1 , 1 , 39147
+610 , 39212 , 498 , 32 , 1 , 1 , 39147
+610 , 39213 , 498 , 11 , 1 , 1 , 39147
+610 , 39214 , 498 , 28 , 1 , 1 , 39147
+610 , 39215 , 497 , 21 , 1 , 1 , 39147
+610 , 39216 , 497 , 22 , 1 , 1 , 39147
+610 , 39217 , 497 , 36 , 1 , 1 , 39147
+610 , 39218 , 496 , 22 , 1 , 1 , 39147
+610 , 39219 , 496 , 11 , 1 , 1 , 39147
+610 , 39220 , 500 , 34 , 1 , 1 , 39147
+610 , 39221 , 496 , 21 , 1 , 1 , 39147
+610 , 39222 , 496 , 11 , 1 , 1 , 39147
+610 , 39223 , 495 , 11 , 1 , 1 , 39147
+610 , 39224 , 495 , 21 , 1 , 1 , 39147
+610 , 39225 , 494 , 22 , 1 , 1 , 39147
+610 , 39226 , 512 , 22 , 1 , 1 , 39147
+610 , 39227 , 495 , 21 , 1 , 1 , 39147
+610 , 39228 , 494 , 33 , 1 , 1 , 39147
+610 , 39229 , 493 , 24 , 1 , 1 , 39147
+610 , 39230 , 507 , 21 , 1 , 1 , 39147
+610 , 39231 , 493 , 34 , 1 , 1 , 39147
+610 , 39232 , 492 , 34 , 1 , 1 , 39147
+610 , 39233 , 493 , 34 , 1 , 1 , 39147
+610 , 39234 , 492 , 34 , 1 , 1 , 39147
+610 , 39235 , 489 , 22 , 1 , 1 , 39147
+610 , 39236 , 485 , 38 , 1 , 1 , 39147
+610 , 39237 , 485 , 35 , 1 , 1 , 39147
+610 , 39238 , 499 , 34 , 1 , 1 , 39147
+610 , 39239 , 482 , 28 , 1 , 1 , 39147
+610 , 39240 , 492 , 34 , 1 , 1 , 39147
+610 , 39241 , 489 , 35 , 1 , 1 , 39147
+610 , 39242 , 480 , 34 , 1 , 1 , 39147
+610 , 39243 , 480 , 34 , 1 , 1 , 39147
+610 , 39244 , 493 , 33 , 1 , 1 , 39147
+610 , 39245 , 477 , 36 , 1 , 1 , 39147
+610 , 39246 , 475 , 37 , 1 , 1 , 39147
+610 , 39247 , 472 , 25 , 1 , 1 , 39147
+610 , 39248 , 482 , 33 , 1 , 1 , 39147
+610 , 39249 , 469 , 35 , 1 , 1 , 39147
+610 , 39250 , 469 , 34 , 1 , 1 , 39147
+610 , 39251 , 466 , 32 , 1 , 1 , 39147
+610 , 39252 , 537 , 32 , 1 , 1 , 39147
+610 , 39253 , 465 , 32 , 1 , 1 , 39147
+610 , 39254 , 462 , 35 , 1 , 1 , 39147
+610 , 39255 , 537 , 32 , 1 , 1 , 39147
+610 , 39256 , 454 , 32 , 1 , 1 , 39147
+610 , 39257 , 480 , 33 , 1 , 1 , 39147
+610 , 39258 , 480 , 33 , 1 , 1 , 39147
+610 , 39259 , 473 , 40 , 1 , 1 , 39147
+610 , 39260 , 494 , 34 , 1 , 1 , 39147
+610 , 39261 , 461 , 36 , 1 , 1 , 39147
+610 , 39262 , 458 , 34 , 1 , 1 , 39147
+610 , 39263 , 533 , 32 , 1 , 1 , 39147
+610 , 39264 , 533 , 32 , 1 , 1 , 39147
+610 , 39265 , 450 , 32 , 1 , 1 , 39147
+610 , 39266 , 449 , 32 , 1 , 1 , 39147
+610 , 39267 , 445 , 32 , 1 , 1 , 39147
+610 , 39268 , 444 , 32 , 1 , 1 , 39147
+610 , 39269 , 473 , 52 , 1 , 1 , 39147
+610 , 39270 , 472 , 52 , 1 , 1 , 39147
+610 , 39271 , 469 , 63 , 1 , 1 , 39147
+610 , 39272 , 469 , 52 , 1 , 1 , 39147
+610 , 39273 , 469 , 52 , 1 , 1 , 39147
+610 , 39274 , 468 , 52 , 1 , 1 , 39147
+610 , 39275 , 468 , 52 , 1 , 1 , 39147
+610 , 39276 , 468 , 53 , 1 , 1 , 39147
+610 , 39277 , 468 , 52 , 1 , 1 , 39147
+610 , 39278 , 468 , 52 , 1 , 1 , 39147
+610 , 39279 , 467 , 52 , 1 , 1 , 39147
+610 , 39280 , 467 , 62 , 1 , 1 , 39147
+610 , 39281 , 464 , 64 , 1 , 1 , 39147
+610 , 39282 , 464 , 52 , 1 , 1 , 39147
+610 , 39283 , 464 , 52 , 1 , 1 , 39147
+610 , 39284 , 463 , 52 , 1 , 1 , 39147
+610 , 39285 , 463 , 64 , 1 , 1 , 39147
+610 , 39286 , 463 , 64 , 1 , 1 , 39147
+610 , 39287 , 463 , 52 , 1 , 1 , 39147
+610 , 39288 , 463 , 64 , 1 , 1 , 39147
+610 , 39289 , 462 , 52 , 1 , 1 , 39147
+610 , 39290 , 462 , 52 , 1 , 1 , 39147
+610 , 39291 , 459 , 52 , 1 , 1 , 39147
+610 , 39292 , 458 , 62 , 1 , 1 , 39147
+610 , 39293 , 458 , 73 , 1 , 1 , 39147
+610 , 39294 , 457 , 63 , 1 , 1 , 39147
+610 , 39295 , 457 , 52 , 1 , 1 , 39147
+610 , 39296 , 456 , 52 , 1 , 1 , 39147
+610 , 39297 , 456 , 62 , 1 , 1 , 39147
+610 , 39298 , 456 , 52 , 1 , 1 , 39147
+610 , 39299 , 455 , 52 , 1 , 1 , 39147
+610 , 39300 , 455 , 52 , 1 , 1 , 39147
+610 , 39301 , 449 , 52 , 1 , 1 , 39147
+610 , 39302 , 449 , 62 , 1 , 1 , 39147
+610 , 39303 , 448 , 52 , 1 , 1 , 39147
+610 , 39304 , 448 , 52 , 1 , 1 , 39147
+610 , 39305 , 448 , 62 , 1 , 1 , 39147
+610 , 39306 , 448 , 52 , 1 , 1 , 39147
+610 , 39307 , 448 , 52 , 1 , 1 , 39147
+610 , 39308 , 448 , 52 , 1 , 1 , 39147
+610 , 39309 , 447 , 52 , 1 , 1 , 39147
+610 , 39310 , 447 , 62 , 1 , 1 , 39147
+610 , 39311 , 443 , 52 , 1 , 1 , 39147
+610 , 39312 , 443 , 41 , 1 , 1 , 39147
+610 , 39313 , 443 , 52 , 1 , 1 , 39147
+610 , 39314 , 443 , 41 , 1 , 1 , 39147
+610 , 39315 , 443 , 62 , 1 , 1 , 39147
+610 , 39316 , 442 , 52 , 1 , 1 , 39147
+610 , 39317 , 442 , 41 , 1 , 1 , 39147
+610 , 39318 , 442 , 41 , 1 , 1 , 39147
+610 , 39319 , 442 , 52 , 1 , 1 , 39147
+610 , 39320 , 442 , 52 , 1 , 1 , 39147
+610 , 39321 , 439 , 52 , 1 , 1 , 39147
+610 , 39322 , 439 , 52 , 1 , 1 , 39147
+610 , 39323 , 439 , 41 , 1 , 1 , 39147
+610 , 39324 , 439 , 41 , 1 , 1 , 39147
+610 , 39325 , 439 , 52 , 1 , 1 , 39147
+610 , 39326 , 439 , 41 , 1 , 1 , 39147
+610 , 39327 , 438 , 52 , 1 , 1 , 39147
+610 , 39328 , 438 , 52 , 1 , 1 , 39147
+610 , 39329 , 438 , 52 , 1 , 1 , 39147
+610 , 39330 , 438 , 52 , 1 , 1 , 39147
+610 , 39331 , 436 , 21 , 1 , 1 , 39147
+610 , 39332 , 436 , 31 , 1 , 1 , 39147
+610 , 39333 , 436 , 21 , 1 , 1 , 39147
+610 , 39334 , 436 , 21 , 1 , 1 , 39147
+610 , 39335 , 436 , 21 , 1 , 1 , 39147
+610 , 39336 , 436 , 21 , 1 , 1 , 39147
+610 , 39337 , 436 , 31 , 1 , 1 , 39147
+610 , 39338 , 436 , 31 , 1 , 1 , 39147
+610 , 39339 , 436 , 31 , 1 , 1 , 39147
+610 , 39340 , 436 , 31 , 1 , 1 , 39147
+610 , 39341 , 621 , 21 , 1 , 1 , 39312 39314 39331 39211 39327 39252 39189 39322 39203 39167 39185 39194 39190 39336 39176 39172 39159 39205 39316 39215 39339 39199 39253 39294 39166 39295 39272 39326 39310 39313 39148 39171 39151 39280 39161 39232 39334 39198 39315 39265 39261 39287 39212 39178 39229 39319 39240 39197 39170 39307 39244 39221 39238 39155 39269 39318 39219 39275 39192 39222 39276 39323 39337 39168 39173 39150 39291 39304 39183 39152 39217 39157 39247 39290 39224 39239 39231 39223 39216 39288 39184 39163 39324 39257 39289 39279 39299 39193 39260 39174 39264 39254 39268 39149 39201 39246 39262 39187 39188 39208 39250 39234 39258 39325 39338 39236 39177 39235 39298 39242 39179 39293 39233 39227 39175 39214 39284 39286 39270 39186 39248 39303 39154 39267 39321 39158 39156 39220 39281 39300 39237 39241 39195 39328 39282 39271 39226 39305 39210 39255 39200 39181 39191 39317 39207 39329 39206 39285 39263 39256 39332 39169 39225 39297 39301 39243 39230 39165 39277 39309 39333 39266 39204 39162 39160 39209 39259 39251 39180 39278 39296 39196 39228 39249 39311 39213 39182 39153 39283 39164 39245 39202 39274 39292 39218 39273 39330 39335 39302 39306 39340 39320 39308
+611 , 39342 , 8 , 92 , 1 , 1 ,
+611 , 39343 , 8 , 82 , 1 , 1 ,
+611 , 39344 , 8 , 92 , 1 , 1 ,
+611 , 39345 , 8 , 103 , 1 , 1 ,
+611 , 39346 , 8 , 103 , 1 , 1 ,
+611 , 39347 , 8 , 113 , 1 , 1 ,
+611 , 39348 , 8 , 113 , 1 , 1 ,
+611 , 39349 , 8 , 123 , 1 , 1 ,
+611 , 39350 , 7 , 113 , 1 , 1 ,
+611 , 39351 , 7 , 103 , 1 , 1 ,
+611 , 39352 , 5 , 103 , 1 , 1 ,
+611 , 39353 , 5 , 113 , 1 , 1 ,
+611 , 39354 , 5 , 92 , 1 , 1 ,
+611 , 39355 , 5 , 113 , 1 , 1 ,
+611 , 39356 , 4 , 103 , 1 , 1 ,
+611 , 39357 , 4 , 113 , 1 , 1 ,
+611 , 39358 , 4 , 103 , 1 , 1 ,
+611 , 39359 , 4 , 103 , 1 , 1 ,
+611 , 39360 , 4 , 103 , 1 , 1 ,
+611 , 39361 , 4 , 103 , 1 , 1 ,
+611 , 39362 , 145 , 31 , 1 , 1 , 39360 39344 39349 39357 39350 39352 39353 39361 39346 39343 39359 39345 39351 39342 39354 39356 39355 39347 39358 39348
+612 , 39363 , 205 , 62 , 1 , 1 ,
+612 , 39364 , 204 , 52 , 1 , 1 ,
+612 , 39365 , 204 , 72 , 1 , 1 ,
+612 , 39366 , 420 , 52 , 1 , 1 ,
+612 , 39367 , 420 , 52 , 1 , 1 ,
+612 , 39368 , 420 , 41 , 1 , 1 ,
+612 , 39369 , 337 , 152 , 1 , 1 ,
+612 , 39370 , 336 , 152 , 1 , 1 ,
+612 , 39371 , 337 , 148 , 1 , 1 ,
+612 , 39372 , 420 , 41 , 1 , 1 ,
+612 , 39373 , 362 , 52 , 1 , 1 ,
+612 , 39374 , 362 , 72 , 1 , 1 ,
+612 , 39375 , 417 , 151 , 1 , 1 ,
+612 , 39376 , 417 , 136 , 1 , 1 ,
+612 , 39377 , 101 , 62 , 1 , 1 ,
+612 , 39378 , 210 , 62 , 1 , 1 ,
+612 , 39379 , 210 , 62 , 1 , 1 ,
+612 , 39380 , 63 , 41 , 1 , 1 ,
+612 , 39381 , 62 , 52 , 1 , 1 ,
+612 , 39382 , 60 , 52 , 1 , 1 ,
+612 , 39383 , 60 , 52 , 1 , 1 ,
+612 , 39384 , 60 , 52 , 1 , 1 ,
+612 , 39385 , 60 , 52 , 1 , 1 ,
+612 , 39386 , 60 , 52 , 1 , 1 ,
+612 , 39387 , 60 , 52 , 1 , 1 ,
+612 , 39388 , 60 , 52 , 1 , 1 ,
+612 , 39389 , 59 , 52 , 1 , 1 ,
+612 , 39390 , 210 , 52 , 1 , 1 ,
+612 , 39391 , 210 , 93 , 1 , 1 ,
+612 , 39392 , 209 , 72 , 1 , 1 ,
+612 , 39393 , 209 , 72 , 1 , 1 ,
+612 , 39394 , 220 , 102 , 1 , 1 ,
+612 , 39395 , 275 , 52 , 1 , 1 ,
+612 , 39396 , 275 , 142 , 1 , 1 ,
+612 , 39397 , 245 , 98 , 1 , 1 ,
+612 , 39398 , 80 , 73 , 1 , 1 ,
+612 , 39399 , 80 , 73 , 1 , 1 ,
+612 , 39400 , 272 , 52 , 1 , 1 ,
+612 , 39401 , 59 , 63 , 1 , 1 ,
+612 , 39402 , 59 , 64 , 1 , 1 ,
+612 , 39403 , 17 , 77 , 1 , 1 ,
+612 , 39404 , 17 , 81 , 1 , 1 ,
+612 , 39405 , 17 , 75 , 1 , 1 ,
+612 , 39406 , 17 , 60 , 1 , 1 ,
+612 , 39407 , 17 , 81 , 1 , 1 ,
+612 , 39408 , 17 , 79 , 1 , 1 ,
+612 , 39409 , 17 , 89 , 1 , 1 ,
+612 , 39410 , 17 , 79 , 1 , 1 ,
+612 , 39411 , 9 , 355 , 1 , 1 ,
+612 , 39412 , 9 , 345 , 1 , 1 ,
+612 , 39413 , 9 , 355 , 1 , 1 ,
+612 , 39414 , 9 , 345 , 1 , 1 ,
+612 , 39415 , 9 , 345 , 1 , 1 ,
+612 , 39416 , 9 , 355 , 1 , 1 ,
+612 , 39417 , 9 , 345 , 1 , 1 ,
+612 , 39418 , 9 , 305 , 1 , 1 ,
+612 , 39419 , 9 , 315 , 1 , 1 ,
+612 , 39420 , 9 , 304 , 1 , 1 ,
+612 , 39421 , 9 , 345 , 1 , 1 ,
+612 , 39422 , 9 , 254 , 1 , 1 ,
+612 , 39423 , 9 , 355 , 1 , 1 ,
+612 , 39424 , 9 , 355 , 1 , 1 ,
+612 , 39425 , 9 , 355 , 1 , 1 ,
+612 , 39426 , 9 , 356 , 1 , 1 ,
+612 , 39427 , 28 , 118 , 1 , 1 ,
+612 , 39428 , 28 , 107 , 1 , 1 ,
+612 , 39429 , 28 , 174 , 1 , 1 ,
+612 , 39430 , 27 , 128 , 1 , 1 ,
+612 , 39431 , 27 , 139 , 1 , 1 ,
+612 , 39432 , 27 , 138 , 1 , 1 ,
+612 , 39433 , 26 , 213 , 1 , 1 ,
+612 , 39434 , 26 , 151 , 1 , 1 ,
+612 , 39435 , 26 , 151 , 1 , 1 ,
+612 , 39436 , 25 , 201 , 1 , 1 ,
+612 , 39437 , 25 , 157 , 1 , 1 ,
+612 , 39438 , 25 , 156 , 1 , 1 ,
+612 , 39439 , 24 , 164 , 1 , 1 ,
+612 , 39440 , 23 , 163 , 1 , 1 ,
+612 , 39441 , 23 , 238 , 1 , 1 ,
+612 , 39442 , 23 , 184 , 1 , 1 ,
+612 , 39443 , 22 , 174 , 1 , 1 ,
+612 , 39444 , 22 , 185 , 1 , 1 ,
+612 , 39445 , 22 , 255 , 1 , 1 ,
+612 , 39446 , 21 , 196 , 1 , 1 ,
+612 , 39447 , 21 , 196 , 1 , 1 ,
+612 , 39448 , 21 , 292 , 1 , 1 ,
+612 , 39449 , 21 , 196 , 1 , 1 ,
+612 , 39450 , 20 , 196 , 1 , 1 ,
+612 , 39451 , 20 , 195 , 1 , 1 ,
+612 , 39452 , 20 , 281 , 1 , 1 ,
+612 , 39453 , 20 , 266 , 1 , 1 ,
+612 , 39454 , 19 , 207 , 1 , 1 ,
+612 , 39455 , 18 , 218 , 1 , 1 ,
+612 , 39456 , 18 , 219 , 1 , 1 ,
+612 , 39457 , 18 , 240 , 1 , 1 ,
+612 , 39458 , 17 , 232 , 1 , 1 ,
+612 , 39459 , 17 , 220 , 1 , 1 ,
+612 , 39460 , 17 , 221 , 1 , 1 ,
+612 , 39461 , 17 , 212 , 1 , 1 ,
+612 , 39462 , 17 , 253 , 1 , 1 ,
+612 , 39463 , 16 , 212 , 1 , 1 ,
+612 , 39464 , 16 , 186 , 1 , 1 ,
+612 , 39465 , 16 , 234 , 1 , 1 ,
+612 , 39466 , 16 , 212 , 1 , 1 ,
+612 , 39467 , 15 , 285 , 1 , 1 ,
+612 , 39468 , 15 , 212 , 1 , 1 ,
+612 , 39469 , 15 , 196 , 1 , 1 ,
+612 , 39470 , 14 , 271 , 1 , 1 ,
+612 , 39471 , 14 , 196 , 1 , 1 ,
+612 , 39472 , 14 , 212 , 1 , 1 ,
+612 , 39473 , 13 , 198 , 1 , 1 ,
+612 , 39474 , 13 , 198 , 1 , 1 ,
+612 , 39475 , 13 , 197 , 1 , 1 ,
+612 , 39476 , 12 , 179 , 1 , 1 ,
+612 , 39477 , 12 , 228 , 1 , 1 ,
+612 , 39478 , 12 , 153 , 1 , 1 ,
+612 , 39479 , 11 , 149 , 1 , 1 ,
+612 , 39480 , 11 , 217 , 1 , 1 ,
+612 , 39481 , 11 , 142 , 1 , 1 ,
+612 , 39482 , 10 , 128 , 1 , 1 ,
+612 , 39483 , 10 , 140 , 1 , 1 ,
+612 , 39484 , 10 , 132 , 1 , 1 ,
+612 , 39485 , 9 , 130 , 1 , 1 ,
+612 , 39486 , 9 , 117 , 1 , 1 ,
+612 , 39487 , 9 , 107 , 1 , 1 ,
+612 , 39488 , 9 , 130 , 1 , 1 ,
+612 , 39489 , 9 , 109 , 1 , 1 ,
+612 , 39490 , 9 , 109 , 1 , 1 ,
+612 , 39491 , 37 , 62 , 1 , 1 ,
+612 , 39492 , 37 , 62 , 1 , 1 ,
+612 , 39493 , 34 , 52 , 1 , 1 ,
+612 , 39494 , 34 , 62 , 1 , 1 ,
+612 , 39495 , 33 , 62 , 1 , 1 ,
+612 , 39496 , 33 , 52 , 1 , 1 ,
+612 , 39497 , 33 , 52 , 1 , 1 ,
+612 , 39498 , 33 , 62 , 1 , 1 ,
+612 , 39499 , 33 , 62 , 1 , 1 ,
+612 , 39500 , 33 , 62 , 1 , 1 ,
+612 , 39501 , 32 , 62 , 1 , 1 ,
+612 , 39502 , 32 , 62 , 1 , 1 ,
+612 , 39503 , 29 , 62 , 1 , 1 ,
+612 , 39504 , 29 , 62 , 1 , 1 ,
+612 , 39505 , 28 , 62 , 1 , 1 ,
+612 , 39506 , 28 , 62 , 1 , 1 ,
+612 , 39507 , 28 , 62 , 1 , 1 ,
+612 , 39508 , 28 , 62 , 1 , 1 ,
+612 , 39509 , 28 , 62 , 1 , 1 ,
+612 , 39510 , 27 , 52 , 1 , 1 ,
+612 , 39511 , 27 , 52 , 1 , 1 ,
+612 , 39512 , 26 , 52 , 1 , 1 ,
+612 , 39513 , 23 , 52 , 1 , 1 ,
+612 , 39514 , 22 , 62 , 1 , 1 ,
+612 , 39515 , 22 , 62 , 1 , 1 ,
+612 , 39516 , 22 , 62 , 1 , 1 ,
+612 , 39517 , 22 , 62 , 1 , 1 ,
+612 , 39518 , 22 , 62 , 1 , 1 ,
+612 , 39519 , 21 , 62 , 1 , 1 ,
+612 , 39520 , 21 , 62 , 1 , 1 ,
+612 , 39521 , 21 , 62 , 1 , 1 ,
+612 , 39522 , 21 , 52 , 1 , 1 ,
+612 , 39523 , 18 , 72 , 1 , 1 ,
+612 , 39524 , 17 , 72 , 1 , 1 ,
+612 , 39525 , 17 , 72 , 1 , 1 ,
+612 , 39526 , 17 , 72 , 1 , 1 ,
+612 , 39527 , 17 , 72 , 1 , 1 ,
+612 , 39528 , 17 , 62 , 1 , 1 ,
+612 , 39529 , 17 , 62 , 1 , 1 ,
+612 , 39530 , 16 , 62 , 1 , 1 ,
+612 , 39531 , 16 , 52 , 1 , 1 ,
+612 , 39532 , 16 , 52 , 1 , 1 ,
+612 , 39533 , 12 , 52 , 1 , 1 ,
+612 , 39534 , 12 , 52 , 1 , 1 ,
+612 , 39535 , 11 , 52 , 1 , 1 ,
+612 , 39536 , 11 , 52 , 1 , 1 ,
+612 , 39537 , 11 , 52 , 1 , 1 ,
+612 , 39538 , 11 , 52 , 1 , 1 ,
+612 , 39539 , 11 , 52 , 1 , 1 ,
+612 , 39540 , 11 , 52 , 1 , 1 ,
+612 , 39541 , 10 , 52 , 1 , 1 ,
+612 , 39542 , 10 , 52 , 1 , 1 ,
+612 , 39543 , 7 , 62 , 1 , 1 ,
+612 , 39544 , 7 , 52 , 1 , 1 ,
+612 , 39545 , 7 , 52 , 1 , 1 ,
+612 , 39546 , 7 , 62 , 1 , 1 ,
+612 , 39547 , 7 , 52 , 1 , 1 ,
+612 , 39548 , 7 , 52 , 1 , 1 ,
+612 , 39549 , 7 , 51 , 1 , 1 ,
+612 , 39550 , 7 , 62 , 1 , 1 ,
+612 , 39551 , 7 , 52 , 1 , 1 ,
+612 , 39552 , 7 , 62 , 1 , 1 ,
+612 , 39553 , 3 , 52 , 1 , 1 ,
+612 , 39554 , 3 , 52 , 1 , 1 ,
+612 , 39555 , 3 , 62 , 1 , 1 ,
+612 , 39556 , 3 , 62 , 1 , 1 ,
+612 , 39557 , 3 , 52 , 1 , 1 ,
+612 , 39558 , 3 , 52 , 1 , 1 ,
+612 , 39559 , 3 , 52 , 1 , 1 ,
+612 , 39560 , 3 , 42 , 1 , 1 ,
+612 , 39561 , 3 , 42 , 1 , 1 ,
+612 , 39562 , 3 , 41 , 1 , 1 ,
+612 , 39563 , 603 , 164 , 1 , 1 , 39561 39367 39455 39402 39450 39488 39371 39476 39512 39426 39418 39516 39396 39545 39505 39404 39437 39408 39419 39518 39465 39429 39481 39478 39496 39548 39508 39413 39424 39509 39499 39544 39484 39439 39463 39432 39387 39431 39433 39475 39554 39497 39458 39440 39381 39384 39363 39474 39393 39459 39536 39435 39370 39531 39535 39513 39506 39537 39399 39523 39543 39380 39557 39415 39517 39479 39495 39470 39530 39547 39365 39498 39520 39445 39420 39519 39383 39442 39527 39401 39436 39366 39534 39559 39556 39364 39522 39368 39560 39486 39443 39542 39453 39555 39462 39550 39528 39477 39405 39391 39494 39558 39466 39493 39397 39438 39553 39525 39541 39374 39514 39448 39414 39425 39406 39378 39467 39532 39423 39468 39422 39389 39409 39377 39511 39452 39373 39540 39428 39483 39372 39529 39500 39379 39507 39416 39388 39407 39490 39410 39417 39369 39400 39515 39562 39457 39421 39473 39489 39504 39446 39526 39546 39394 39447 39501 39491 39376 39449 39390 39441 39461 39382 39392 39456 39386 39444 39411 39471 39427 39472 39510 39538 39451 39375 39521 39551 39454 39434 39403 39485 39430 39502 39552 39395 39524 39398 39460 39533 39492 39469 39549 39480 39539 39412 39464 39487 39385 39482 39503
+613 , 39564 , 395 , 41 , 1 , 1 ,
+613 , 39565 , 154 , 170 , 1 , 1 ,
+613 , 39566 , 395 , 41 , 1 , 1 ,
+613 , 39567 , 285 , 62 , 1 , 1 ,
+613 , 39568 , 284 , 93 , 1 , 1 ,
+613 , 39569 , 283 , 73 , 1 , 1 ,
+613 , 39570 , 283 , 74 , 1 , 1 ,
+613 , 39571 , 92 , 72 , 1 , 1 ,
+613 , 39572 , 92 , 72 , 1 , 1 ,
+613 , 39573 , 227 , 52 , 1 , 1 ,
+613 , 39574 , 282 , 63 , 1 , 1 ,
+613 , 39575 , 395 , 31 , 1 , 1 ,
+613 , 39576 , 281 , 62 , 1 , 1 ,
+613 , 39577 , 200 , 72 , 1 , 1 ,
+613 , 39578 , 200 , 52 , 1 , 1 ,
+613 , 39579 , 70 , 52 , 1 , 1 ,
+613 , 39580 , 69 , 52 , 1 , 1 ,
+613 , 39581 , 67 , 62 , 1 , 1 ,
+613 , 39582 , 67 , 62 , 1 , 1 ,
+613 , 39583 , 330 , 52 , 1 , 1 ,
+613 , 39584 , 330 , 145 , 1 , 1 ,
+613 , 39585 , 329 , 62 , 1 , 1 ,
+613 , 39586 , 178 , 133 , 1 , 1 ,
+613 , 39587 , 176 , 64 , 1 , 1 ,
+613 , 39588 , 329 , 62 , 1 , 1 ,
+613 , 39589 , 330 , 68 , 1 , 1 ,
+613 , 39590 , 351 , 52 , 1 , 1 ,
+613 , 39591 , 351 , 101 , 1 , 1 ,
+613 , 39592 , 350 , 72 , 1 , 1 ,
+613 , 39593 , 379 , 108 , 1 , 1 ,
+613 , 39594 , 378 , 52 , 1 , 1 ,
+613 , 39595 , 195 , 52 , 1 , 1 ,
+613 , 39596 , 191 , 52 , 1 , 1 ,
+613 , 39597 , 191 , 93 , 1 , 1 ,
+613 , 39598 , 86 , 62 , 1 , 1 ,
+613 , 39599 , 85 , 62 , 1 , 1 ,
+613 , 39600 , 191 , 73 , 1 , 1 ,
+613 , 39601 , 191 , 62 , 1 , 1 ,
+613 , 39602 , 191 , 82 , 1 , 1 ,
+613 , 39603 , 191 , 72 , 1 , 1 ,
+613 , 39604 , 191 , 72 , 1 , 1 ,
+613 , 39605 , 191 , 72 , 1 , 1 ,
+613 , 39606 , 74 , 63 , 1 , 1 ,
+613 , 39607 , 71 , 72 , 1 , 1 ,
+613 , 39608 , 396 , 41 , 1 , 1 ,
+613 , 39609 , 279 , 72 , 1 , 1 ,
+613 , 39610 , 396 , 41 , 1 , 1 ,
+613 , 39611 , 130 , 62 , 1 , 1 ,
+613 , 39612 , 71 , 72 , 1 , 1 ,
+613 , 39613 , 71 , 72 , 1 , 1 ,
+613 , 39614 , 411 , 52 , 1 , 1 ,
+613 , 39615 , 210 , 92 , 1 , 1 ,
+613 , 39616 , 207 , 96 , 1 , 1 ,
+613 , 39617 , 411 , 52 , 1 , 1 ,
+613 , 39618 , 119 , 72 , 1 , 1 ,
+613 , 39619 , 224 , 79 , 1 , 1 ,
+613 , 39620 , 223 , 89 , 1 , 1 ,
+613 , 39621 , 223 , 112 , 1 , 1 ,
+613 , 39622 , 223 , 89 , 1 , 1 ,
+613 , 39623 , 206 , 98 , 1 , 1 ,
+613 , 39624 , 207 , 85 , 1 , 1 ,
+613 , 39625 , 158 , 75 , 1 , 1 ,
+613 , 39626 , 92 , 93 , 1 , 1 ,
+613 , 39627 , 155 , 62 , 1 , 1 ,
+613 , 39628 , 155 , 72 , 1 , 1 ,
+613 , 39629 , 222 , 111 , 1 , 1 ,
+613 , 39630 , 222 , 82 , 1 , 1 ,
+613 , 39631 , 222 , 114 , 1 , 1 ,
+613 , 39632 , 411 , 52 , 1 , 1 ,
+613 , 39633 , 411 , 62 , 1 , 1 ,
+613 , 39634 , 356 , 72 , 1 , 1 ,
+613 , 39635 , 355 , 72 , 1 , 1 ,
+613 , 39636 , 227 , 72 , 1 , 1 ,
+613 , 39637 , 355 , 72 , 1 , 1 ,
+613 , 39638 , 354 , 73 , 1 , 1 ,
+613 , 39639 , 354 , 73 , 1 , 1 ,
+613 , 39640 , 354 , 73 , 1 , 1 ,
+613 , 39641 , 409 , 62 , 1 , 1 ,
+613 , 39642 , 222 , 165 , 1 , 1 ,
+613 , 39643 , 218 , 62 , 1 , 1 ,
+613 , 39644 , 216 , 82 , 1 , 1 ,
+613 , 39645 , 215 , 62 , 1 , 1 ,
+613 , 39646 , 215 , 62 , 1 , 1 ,
+613 , 39647 , 212 , 183 , 1 , 1 ,
+613 , 39648 , 216 , 62 , 1 , 1 ,
+613 , 39649 , 409 , 193 , 1 , 1 ,
+613 , 39650 , 309 , 194 , 1 , 1 ,
+613 , 39651 , 282 , 194 , 1 , 1 ,
+613 , 39652 , 130 , 62 , 1 , 1 ,
+613 , 39653 , 128 , 63 , 1 , 1 ,
+613 , 39654 , 282 , 62 , 1 , 1 ,
+613 , 39655 , 309 , 197 , 1 , 1 ,
+613 , 39656 , 309 , 208 , 1 , 1 ,
+613 , 39657 , 308 , 218 , 1 , 1 ,
+613 , 39658 , 154 , 62 , 1 , 1 ,
+613 , 39659 , 154 , 62 , 1 , 1 ,
+613 , 39660 , 153 , 52 , 1 , 1 ,
+613 , 39661 , 152 , 52 , 1 , 1 ,
+613 , 39662 , 150 , 226 , 1 , 1 ,
+613 , 39663 , 149 , 42 , 1 , 1 ,
+613 , 39664 , 148 , 42 , 1 , 1 ,
+613 , 39665 , 147 , 181 , 1 , 1 ,
+613 , 39666 , 144 , 42 , 1 , 1 ,
+613 , 39667 , 143 , 200 , 1 , 1 ,
+613 , 39668 , 141 , 41 , 1 , 1 ,
+613 , 39669 , 407 , 198 , 1 , 1 ,
+613 , 39670 , 128 , 63 , 1 , 1 ,
+613 , 39671 , 127 , 200 , 1 , 1 ,
+613 , 39672 , 119 , 72 , 1 , 1 ,
+613 , 39673 , 85 , 62 , 1 , 1 ,
+613 , 39674 , 85 , 63 , 1 , 1 ,
+613 , 39675 , 119 , 72 , 1 , 1 ,
+613 , 39676 , 288 , 82 , 1 , 1 ,
+613 , 39677 , 283 , 215 , 1 , 1 ,
+613 , 39678 , 155 , 62 , 1 , 1 ,
+613 , 39679 , 168 , 63 , 1 , 1 ,
+613 , 39680 , 161 , 151 , 1 , 1 ,
+613 , 39681 , 159 , 144 , 1 , 1 ,
+613 , 39682 , 415 , 128 , 1 , 1 ,
+613 , 39683 , 414 , 128 , 1 , 1 ,
+613 , 39684 , 141 , 52 , 1 , 1 ,
+613 , 39685 , 141 , 171 , 1 , 1 ,
+613 , 39686 , 140 , 162 , 1 , 1 ,
+613 , 39687 , 138 , 53 , 1 , 1 ,
+613 , 39688 , 136 , 104 , 1 , 1 ,
+613 , 39689 , 135 , 52 , 1 , 1 ,
+613 , 39690 , 133 , 52 , 1 , 1 ,
+613 , 39691 , 132 , 98 , 1 , 1 ,
+613 , 39692 , 414 , 64 , 1 , 1 ,
+613 , 39693 , 414 , 98 , 1 , 1 ,
+613 , 39694 , 412 , 92 , 1 , 1 ,
+613 , 39695 , 412 , 92 , 1 , 1 ,
+613 , 39696 , 363 , 62 , 1 , 1 ,
+613 , 39697 , 155 , 52 , 1 , 1 ,
+613 , 39698 , 154 , 62 , 1 , 1 ,
+613 , 39699 , 362 , 62 , 1 , 1 ,
+613 , 39700 , 229 , 62 , 1 , 1 ,
+613 , 39701 , 228 , 62 , 1 , 1 ,
+613 , 39702 , 362 , 63 , 1 , 1 ,
+613 , 39703 , 295 , 90 , 1 , 1 ,
+613 , 39704 , 292 , 62 , 1 , 1 ,
+613 , 39705 , 228 , 79 , 1 , 1 ,
+613 , 39706 , 291 , 83 , 1 , 1 ,
+613 , 39707 , 291 , 72 , 1 , 1 ,
+613 , 39708 , 291 , 62 , 1 , 1 ,
+613 , 39709 , 291 , 72 , 1 , 1 ,
+613 , 39710 , 291 , 73 , 1 , 1 ,
+613 , 39711 , 291 , 73 , 1 , 1 ,
+613 , 39712 , 291 , 83 , 1 , 1 ,
+613 , 39713 , 291 , 63 , 1 , 1 ,
+613 , 39714 , 291 , 82 , 1 , 1 ,
+613 , 39715 , 361 , 72 , 1 , 1 ,
+613 , 39716 , 132 , 62 , 1 , 1 ,
+613 , 39717 , 360 , 62 , 1 , 1 ,
+613 , 39718 , 359 , 76 , 1 , 1 ,
+613 , 39719 , 359 , 62 , 1 , 1 ,
+613 , 39720 , 359 , 62 , 1 , 1 ,
+613 , 39721 , 359 , 72 , 1 , 1 ,
+613 , 39722 , 330 , 92 , 1 , 1 ,
+613 , 39723 , 359 , 92 , 1 , 1 ,
+613 , 39724 , 178 , 97 , 1 , 1 ,
+613 , 39725 , 107 , 72 , 1 , 1 ,
+613 , 39726 , 359 , 92 , 1 , 1 ,
+613 , 39727 , 359 , 102 , 1 , 1 ,
+613 , 39728 , 359 , 92 , 1 , 1 ,
+613 , 39729 , 71 , 73 , 1 , 1 ,
+613 , 39730 , 71 , 72 , 1 , 1 ,
+613 , 39731 , 70 , 62 , 1 , 1 ,
+613 , 39732 , 70 , 72 , 1 , 1 ,
+613 , 39733 , 70 , 72 , 1 , 1 ,
+613 , 39734 , 154 , 62 , 1 , 1 ,
+613 , 39735 , 358 , 62 , 1 , 1 ,
+613 , 39736 , 358 , 72 , 1 , 1 ,
+613 , 39737 , 196 , 115 , 1 , 1 ,
+613 , 39738 , 196 , 92 , 1 , 1 ,
+613 , 39739 , 196 , 62 , 1 , 1 ,
+613 , 39740 , 107 , 72 , 1 , 1 ,
+613 , 39741 , 107 , 72 , 1 , 1 ,
+613 , 39742 , 101 , 64 , 1 , 1 ,
+613 , 39743 , 101 , 65 , 1 , 1 ,
+613 , 39744 , 101 , 68 , 1 , 1 ,
+613 , 39745 , 101 , 68 , 1 , 1 ,
+613 , 39746 , 101 , 67 , 1 , 1 ,
+613 , 39747 , 104 , 73 , 1 , 1 ,
+613 , 39748 , 104 , 73 , 1 , 1 ,
+613 , 39749 , 99 , 73 , 1 , 1 ,
+613 , 39750 , 99 , 73 , 1 , 1 ,
+613 , 39751 , 99 , 73 , 1 , 1 ,
+613 , 39752 , 99 , 83 , 1 , 1 ,
+613 , 39753 , 99 , 73 , 1 , 1 ,
+613 , 39754 , 99 , 72 , 1 , 1 ,
+613 , 39755 , 99 , 73 , 1 , 1 ,
+613 , 39756 , 99 , 73 , 1 , 1 ,
+613 , 39757 , 99 , 72 , 1 , 1 ,
+613 , 39758 , 99 , 74 , 1 , 1 ,
+613 , 39759 , 101 , 66 , 1 , 1 ,
+613 , 39760 , 359 , 163 , 1 , 1 ,
+613 , 39761 , 196 , 62 , 1 , 1 ,
+613 , 39762 , 107 , 72 , 1 , 1 ,
+613 , 39763 , 357 , 72 , 1 , 1 ,
+613 , 39764 , 634 , 133 , 1 , 1 , 39623 39732 39650 39719 39738 39599 39696 39595 39658 39590 39592 39647 39614 39699 39712 39581 39705 39627 39597 39625 39629 39630 39714 39718 39584 39608 39570 39646 39759 39591 39737 39589 39667 39690 39681 39734 39598 39566 39717 39620 39618 39679 39607 39723 39715 39637 39662 39617 39631 39736 39654 39720 39747 39576 39639 39593 39695 39603 39610 39757 39642 39661 39709 39761 39671 39697 39583 39615 39730 39672 39657 39628 39652 39742 39578 39673 39564 39755 39619 39716 39680 39693 39704 39713 39588 39632 39740 39568 39574 39626 39594 39691 39760 39609 39660 39700 39721 39739 39726 39727 39745 39641 39643 39582 39605 39743 39749 39670 39575 39567 39651 39682 39708 39698 39686 39758 39649 39702 39744 39676 39569 39687 39633 39663 39741 39735 39622 39587 39572 39750 39707 39601 39621 39648 39666 39669 39613 39573 39624 39653 39664 39675 39634 39585 39596 39753 39677 39748 39616 39602 39763 39579 39600 39606 39710 39674 39644 39701 39636 39668 39751 39683 39640 39656 39678 39762 39724 39655 39722 39684 39611 39645 39692 39752 39635 39746 39685 39756 39565 39571 39577 39612 39665 39703 39688 39638 39733 39725 39711 39728 39580 39586 39729 39659 39754 39731 39604 39694 39689 39706
+614 , 39765 , 134 , 42 , 1 , 1 ,
+614 , 39766 , 214 , 62 , 1 , 1 ,
+614 , 39767 , 329 , 21 , 1 , 1 ,
+614 , 39768 , 328 , 31 , 1 , 1 ,
+614 , 39769 , 244 , 83 , 1 , 1 ,
+614 , 39770 , 312 , 41 , 1 , 1 ,
+614 , 39771 , 265 , 112 , 1 , 1 ,
+614 , 39772 , 106 , 72 , 1 , 1 ,
+614 , 39773 , 311 , 32 , 1 , 1 ,
+614 , 39774 , 18 , 43 , 1 , 1 ,
+614 , 39775 , 16 , 42 , 1 , 1 ,
+614 , 39776 , 14 , 41 , 1 , 1 ,
+614 , 39777 , 10 , 21 , 1 , 1 ,
+614 , 39778 , 10 , 31 , 1 , 1 ,
+614 , 39779 , 106 , 58 , 1 , 1 ,
+614 , 39780 , 105 , 41 , 1 , 1 ,
+614 , 39781 , 105 , 31 , 1 , 1 ,
+614 , 39782 , 105 , 42 , 1 , 1 ,
+614 , 39783 , 105 , 41 , 1 , 1 ,
+614 , 39784 , 105 , 31 , 1 , 1 ,
+614 , 39785 , 105 , 42 , 1 , 1 ,
+614 , 39786 , 105 , 41 , 1 , 1 ,
+614 , 39787 , 105 , 41 , 1 , 1 ,
+614 , 39788 , 53 , 52 , 1 , 1 ,
+614 , 39789 , 52 , 41 , 1 , 1 ,
+614 , 39790 , 52 , 41 , 1 , 1 ,
+614 , 39791 , 52 , 52 , 1 , 1 ,
+614 , 39792 , 52 , 52 , 1 , 1 ,
+614 , 39793 , 52 , 52 , 1 , 1 ,
+614 , 39794 , 51 , 52 , 1 , 1 ,
+614 , 39795 , 54 , 44 , 1 , 1 ,
+614 , 39796 , 54 , 56 , 1 , 1 ,
+614 , 39797 , 54 , 44 , 1 , 1 ,
+614 , 39798 , 44 , 52 , 1 , 1 ,
+614 , 39799 , 42 , 52 , 1 , 1 ,
+614 , 39800 , 41 , 62 , 1 , 1 ,
+614 , 39801 , 41 , 52 , 1 , 1 ,
+614 , 39802 , 26 , 52 , 1 , 1 ,
+614 , 39803 , 41 , 52 , 1 , 1 ,
+614 , 39804 , 92 , 22 , 1 , 1 ,
+614 , 39805 , 92 , 22 , 1 , 1 ,
+614 , 39806 , 103 , 42 , 1 , 1 ,
+614 , 39807 , 105 , 41 , 1 , 1 ,
+614 , 39808 , 311 , 41 , 1 , 1 ,
+614 , 39809 , 311 , 41 , 1 , 1 ,
+614 , 39810 , 311 , 41 , 1 , 1 ,
+614 , 39811 , 328 , 31 , 1 , 1 ,
+614 , 39812 , 327 , 31 , 1 , 1 ,
+614 , 39813 , 311 , 41 , 1 , 1 ,
+614 , 39814 , 311 , 41 , 1 , 1 ,
+614 , 39815 , 309 , 44 , 1 , 1 ,
+614 , 39816 , 193 , 52 , 1 , 1 ,
+614 , 39817 , 309 , 34 , 1 , 1 ,
+614 , 39818 , 305 , 43 , 1 , 1 ,
+614 , 39819 , 177 , 31 , 1 , 1 ,
+614 , 39820 , 327 , 31 , 1 , 1 ,
+614 , 39821 , 207 , 52 , 1 , 1 ,
+614 , 39822 , 206 , 66 , 1 , 1 ,
+614 , 39823 , 88 , 31 , 1 , 1 ,
+614 , 39824 , 206 , 74 , 1 , 1 ,
+614 , 39825 , 204 , 38 , 1 , 1 ,
+614 , 39826 , 203 , 52 , 1 , 1 ,
+614 , 39827 , 203 , 52 , 1 , 1 ,
+614 , 39828 , 326 , 31 , 1 , 1 ,
+614 , 39829 , 177 , 31 , 1 , 1 ,
+614 , 39830 , 129 , 52 , 1 , 1 ,
+614 , 39831 , 173 , 31 , 1 , 1 ,
+614 , 39832 , 41 , 62 , 1 , 1 ,
+614 , 39833 , 176 , 31 , 1 , 1 ,
+614 , 39834 , 341 , 53 , 1 , 1 ,
+614 , 39835 , 340 , 32 , 1 , 1 ,
+614 , 39836 , 341 , 73 , 1 , 1 ,
+614 , 39837 , 214 , 62 , 1 , 1 ,
+614 , 39838 , 112 , 45 , 1 , 1 ,
+614 , 39839 , 26 , 62 , 1 , 1 ,
+614 , 39840 , 339 , 31 , 1 , 1 ,
+614 , 39841 , 300 , 52 , 1 , 1 ,
+614 , 39842 , 299 , 33 , 1 , 1 ,
+614 , 39843 , 291 , 42 , 1 , 1 ,
+614 , 39844 , 290 , 52 , 1 , 1 ,
+614 , 39845 , 298 , 42 , 1 , 1 ,
+614 , 39846 , 298 , 100 , 1 , 1 ,
+614 , 39847 , 298 , 42 , 1 , 1 ,
+614 , 39848 , 297 , 42 , 1 , 1 ,
+614 , 39849 , 297 , 45 , 1 , 1 ,
+614 , 39850 , 341 , 105 , 1 , 1 ,
+614 , 39851 , 345 , 31 , 1 , 1 ,
+614 , 39852 , 338 , 97 , 1 , 1 ,
+614 , 39853 , 160 , 32 , 1 , 1 ,
+614 , 39854 , 337 , 21 , 1 , 1 ,
+614 , 39855 , 225 , 52 , 1 , 1 ,
+614 , 39856 , 224 , 52 , 1 , 1 ,
+614 , 39857 , 223 , 52 , 1 , 1 ,
+614 , 39858 , 337 , 21 , 1 , 1 ,
+614 , 39859 , 337 , 108 , 1 , 1 ,
+614 , 39860 , 333 , 31 , 1 , 1 ,
+614 , 39861 , 223 , 52 , 1 , 1 ,
+614 , 39862 , 222 , 62 , 1 , 1 ,
+614 , 39863 , 305 , 108 , 1 , 1 ,
+614 , 39864 , 304 , 108 , 1 , 1 ,
+614 , 39865 , 303 , 41 , 1 , 1 ,
+614 , 39866 , 261 , 103 , 1 , 1 ,
+614 , 39867 , 261 , 41 , 1 , 1 ,
+614 , 39868 , 193 , 52 , 1 , 1 ,
+614 , 39869 , 192 , 38 , 1 , 1 ,
+614 , 39870 , 192 , 52 , 1 , 1 ,
+614 , 39871 , 260 , 52 , 1 , 1 ,
+614 , 39872 , 286 , 41 , 1 , 1 ,
+614 , 39873 , 211 , 52 , 1 , 1 ,
+614 , 39874 , 112 , 43 , 1 , 1 ,
+614 , 39875 , 93 , 21 , 1 , 1 ,
+614 , 39876 , 112 , 45 , 1 , 1 ,
+614 , 39877 , 93 , 21 , 1 , 1 ,
+614 , 39878 , 26 , 72 , 1 , 1 ,
+614 , 39879 , 92 , 21 , 1 , 1 ,
+614 , 39880 , 25 , 52 , 1 , 1 ,
+614 , 39881 , 25 , 52 , 1 , 1 ,
+614 , 39882 , 23 , 52 , 1 , 1 ,
+614 , 39883 , 20 , 52 , 1 , 1 ,
+614 , 39884 , 303 , 72 , 1 , 1 ,
+614 , 39885 , 92 , 62 , 1 , 1 ,
+614 , 39886 , 229 , 54 , 1 , 1 ,
+614 , 39887 , 212 , 41 , 1 , 1 ,
+614 , 39888 , 303 , 61 , 1 , 1 ,
+614 , 39889 , 303 , 61 , 1 , 1 ,
+614 , 39890 , 303 , 51 , 1 , 1 ,
+614 , 39891 , 303 , 61 , 1 , 1 ,
+614 , 39892 , 208 , 42 , 1 , 1 ,
+614 , 39893 , 303 , 51 , 1 , 1 ,
+614 , 39894 , 161 , 41 , 1 , 1 ,
+614 , 39895 , 161 , 42 , 1 , 1 ,
+614 , 39896 , 217 , 55 , 1 , 1 ,
+614 , 39897 , 302 , 41 , 1 , 1 ,
+614 , 39898 , 303 , 51 , 1 , 1 ,
+614 , 39899 , 301 , 41 , 1 , 1 ,
+614 , 39900 , 158 , 41 , 1 , 1 ,
+614 , 39901 , 10 , 41 , 1 , 1 ,
+614 , 39902 , 10 , 41 , 1 , 1 ,
+614 , 39903 , 9 , 41 , 1 , 1 ,
+614 , 39904 , 159 , 57 , 1 , 1 ,
+614 , 39905 , 214 , 52 , 1 , 1 ,
+614 , 39906 , 213 , 52 , 1 , 1 ,
+614 , 39907 , 213 , 72 , 1 , 1 ,
+614 , 39908 , 158 , 33 , 1 , 1 ,
+614 , 39909 , 192 , 52 , 1 , 1 ,
+614 , 39910 , 191 , 41 , 1 , 1 ,
+614 , 39911 , 191 , 52 , 1 , 1 ,
+614 , 39912 , 190 , 41 , 1 , 1 ,
+614 , 39913 , 173 , 31 , 1 , 1 ,
+614 , 39914 , 189 , 49 , 1 , 1 ,
+614 , 39915 , 129 , 41 , 1 , 1 ,
+614 , 39916 , 333 , 31 , 1 , 1 ,
+614 , 39917 , 333 , 32 , 1 , 1 ,
+614 , 39918 , 203 , 41 , 1 , 1 ,
+614 , 39919 , 202 , 52 , 1 , 1 ,
+614 , 39920 , 250 , 34 , 1 , 1 ,
+614 , 39921 , 202 , 72 , 1 , 1 ,
+614 , 39922 , 201 , 52 , 1 , 1 ,
+614 , 39923 , 26 , 52 , 1 , 1 ,
+614 , 39924 , 250 , 38 , 1 , 1 ,
+614 , 39925 , 246 , 31 , 1 , 1 ,
+614 , 39926 , 173 , 31 , 1 , 1 ,
+614 , 39927 , 172 , 31 , 1 , 1 ,
+614 , 39928 , 331 , 31 , 1 , 1 ,
+614 , 39929 , 327 , 54 , 1 , 1 ,
+614 , 39930 , 326 , 53 , 1 , 1 ,
+614 , 39931 , 263 , 52 , 1 , 1 ,
+614 , 39932 , 41 , 52 , 1 , 1 ,
+614 , 39933 , 263 , 52 , 1 , 1 ,
+614 , 39934 , 285 , 52 , 1 , 1 ,
+614 , 39935 , 285 , 57 , 1 , 1 ,
+614 , 39936 , 326 , 53 , 1 , 1 ,
+614 , 39937 , 180 , 58 , 1 , 1 ,
+614 , 39938 , 179 , 47 , 1 , 1 ,
+614 , 39939 , 179 , 71 , 1 , 1 ,
+614 , 39940 , 169 , 56 , 1 , 1 ,
+614 , 39941 , 168 , 78 , 1 , 1 ,
+614 , 39942 , 66 , 55 , 1 , 1 ,
+614 , 39943 , 66 , 41 , 1 , 1 ,
+614 , 39944 , 65 , 66 , 1 , 1 ,
+614 , 39945 , 64 , 41 , 1 , 1 ,
+614 , 39946 , 168 , 77 , 1 , 1 ,
+614 , 39947 , 129 , 41 , 1 , 1 ,
+614 , 39948 , 168 , 87 , 1 , 1 ,
+614 , 39949 , 167 , 78 , 1 , 1 ,
+614 , 39950 , 163 , 36 , 1 , 1 ,
+614 , 39951 , 139 , 41 , 1 , 1 ,
+614 , 39952 , 178 , 92 , 1 , 1 ,
+614 , 39953 , 177 , 31 , 1 , 1 ,
+614 , 39954 , 331 , 98 , 1 , 1 ,
+614 , 39955 , 331 , 21 , 1 , 1 ,
+614 , 39956 , 189 , 120 , 1 , 1 ,
+614 , 39957 , 265 , 35 , 1 , 1 ,
+614 , 39958 , 265 , 52 , 1 , 1 ,
+614 , 39959 , 211 , 72 , 1 , 1 ,
+614 , 39960 , 89 , 31 , 1 , 1 ,
+614 , 39961 , 89 , 31 , 1 , 1 ,
+614 , 39962 , 211 , 41 , 1 , 1 ,
+614 , 39963 , 208 , 109 , 1 , 1 ,
+614 , 39964 , 264 , 41 , 1 , 1 ,
+614 , 39965 , 472 , 72 , 1 , 1 , 39932 39934 39845 39802 39905 39786 39868 39844 39940 39778 39936 39951 39846 39855 39879 39926 39945 39765 39925 39858 39833 39953 39816 39878 39963 39854 39794 39843 39869 39922 39789 39848 39767 39813 39893 39931 39948 39906 39920 39888 39960 39891 39772 39856 39862 39859 39959 39769 39865 39773 39896 39823 39831 39898 39771 39892 39821 39886 39874 39880 39792 39807 39938 39952 39902 39921 39958 39853 39810 39899 39785 39839 39780 39900 39939 39882 39923 39889 39928 39796 39826 39955 39787 39803 39901 39809 39782 39766 39795 39909 39872 39817 39962 39851 39915 39830 39828 39911 39806 39812 39797 39861 39847 39864 39943 39866 39781 39837 39954 39820 39894 39908 39941 39924 39838 39910 39883 39870 39885 39834 39871 39949 39770 39801 39903 39937 39788 39918 39884 39840 39800 39961 39947 39827 39927 39798 39783 39791 39799 39776 39824 39917 39829 39912 39956 39935 39867 39929 39784 39768 39832 39913 39790 39944 39919 39805 39811 39904 39914 39873 39897 39860 39881 39842 39814 39907 39850 39825 39775 39804 39916 39835 39849 39942 39877 39887 39930 39875 39957 39836 39808 39876 39946 39777 39933 39857 39793 39950 39774 39819 39815 39779 39852 39822 39841 39818 39863 39895 39964 39890
+615 , 39966 , 40 , 76 , 1 , 1 ,
+615 , 39967 , 121 , 52 , 1 , 1 ,
+615 , 39968 , 121 , 41 , 1 , 1 ,
+615 , 39969 , 240 , 74 , 1 , 1 ,
+615 , 39970 , 240 , 74 , 1 , 1 ,
+615 , 39971 , 239 , 85 , 1 , 1 ,
+615 , 39972 , 97 , 52 , 1 , 1 ,
+615 , 39973 , 93 , 52 , 1 , 1 ,
+615 , 39974 , 96 , 52 , 1 , 1 ,
+615 , 39975 , 46 , 106 , 1 , 1 ,
+615 , 39976 , 45 , 81 , 1 , 1 ,
+615 , 39977 , 164 , 71 , 1 , 1 ,
+615 , 39978 , 163 , 62 , 1 , 1 ,
+615 , 39979 , 88 , 70 , 1 , 1 ,
+615 , 39980 , 39 , 41 , 1 , 1 ,
+615 , 39981 , 40 , 60 , 1 , 1 ,
+615 , 39982 , 87 , 23 , 1 , 1 ,
+615 , 39983 , 86 , 21 , 1 , 1 ,
+615 , 39984 , 239 , 64 , 1 , 1 ,
+615 , 39985 , 226 , 64 , 1 , 1 ,
+615 , 39986 , 225 , 31 , 1 , 1 ,
+615 , 39987 , 225 , 31 , 1 , 1 ,
+615 , 39988 , 184 , 52 , 1 , 1 ,
+615 , 39989 , 184 , 78 , 1 , 1 ,
+615 , 39990 , 182 , 56 , 1 , 1 ,
+615 , 39991 , 160 , 52 , 1 , 1 ,
+615 , 39992 , 107 , 42 , 1 , 1 ,
+615 , 39993 , 60 , 32 , 1 , 1 ,
+615 , 39994 , 108 , 72 , 1 , 1 ,
+615 , 39995 , 39 , 41 , 1 , 1 ,
+615 , 39996 , 38 , 42 , 1 , 1 ,
+615 , 39997 , 38 , 31 , 1 , 1 ,
+615 , 39998 , 60 , 31 , 1 , 1 ,
+615 , 39999 , 59 , 41 , 1 , 1 ,
+615 , 40000 , 160 , 52 , 1 , 1 ,
+615 , 40001 , 159 , 41 , 1 , 1 ,
+615 , 40002 , 159 , 57 , 1 , 1 ,
+615 , 40003 , 159 , 31 , 1 , 1 ,
+615 , 40004 , 158 , 52 , 1 , 1 ,
+615 , 40005 , 182 , 35 , 1 , 1 ,
+615 , 40006 , 182 , 53 , 1 , 1 ,
+615 , 40007 , 72 , 31 , 1 , 1 ,
+615 , 40008 , 37 , 41 , 1 , 1 ,
+615 , 40009 , 37 , 42 , 1 , 1 ,
+615 , 40010 , 142 , 55 , 1 , 1 ,
+615 , 40011 , 144 , 52 , 1 , 1 ,
+615 , 40012 , 146 , 35 , 1 , 1 ,
+615 , 40013 , 86 , 31 , 1 , 1 ,
+615 , 40014 , 85 , 52 , 1 , 1 ,
+615 , 40015 , 84 , 44 , 1 , 1 ,
+615 , 40016 , 82 , 31 , 1 , 1 ,
+615 , 40017 , 81 , 31 , 1 , 1 ,
+615 , 40018 , 80 , 46 , 1 , 1 ,
+615 , 40019 , 72 , 31 , 1 , 1 ,
+615 , 40020 , 70 , 45 , 1 , 1 ,
+615 , 40021 , 70 , 56 , 1 , 1 ,
+615 , 40022 , 181 , 41 , 1 , 1 ,
+615 , 40023 , 180 , 44 , 1 , 1 ,
+615 , 40024 , 177 , 42 , 1 , 1 ,
+615 , 40025 , 176 , 41 , 1 , 1 ,
+615 , 40026 , 174 , 41 , 1 , 1 ,
+615 , 40027 , 163 , 72 , 1 , 1 ,
+615 , 40028 , 39 , 41 , 1 , 1 ,
+615 , 40029 , 174 , 48 , 1 , 1 ,
+615 , 40030 , 115 , 79 , 1 , 1 ,
+615 , 40031 , 25 , 52 , 1 , 1 ,
+615 , 40032 , 115 , 97 , 1 , 1 ,
+615 , 40033 , 157 , 31 , 1 , 1 ,
+615 , 40034 , 36 , 52 , 1 , 1 ,
+615 , 40035 , 35 , 60 , 1 , 1 ,
+615 , 40036 , 157 , 31 , 1 , 1 ,
+615 , 40037 , 156 , 46 , 1 , 1 ,
+615 , 40038 , 173 , 41 , 1 , 1 ,
+615 , 40039 , 173 , 67 , 1 , 1 ,
+615 , 40040 , 142 , 67 , 1 , 1 ,
+615 , 40041 , 141 , 77 , 1 , 1 ,
+615 , 40042 , 140 , 77 , 1 , 1 ,
+615 , 40043 , 173 , 41 , 1 , 1 ,
+615 , 40044 , 112 , 52 , 1 , 1 ,
+615 , 40045 , 111 , 41 , 1 , 1 ,
+615 , 40046 , 172 , 95 , 1 , 1 ,
+615 , 40047 , 170 , 52 , 1 , 1 ,
+615 , 40048 , 121 , 62 , 1 , 1 ,
+615 , 40049 , 93 , 52 , 1 , 1 ,
+615 , 40050 , 94 , 106 , 1 , 1 ,
+615 , 40051 , 60 , 42 , 1 , 1 ,
+615 , 40052 , 36 , 41 , 1 , 1 ,
+615 , 40053 , 93 , 52 , 1 , 1 ,
+615 , 40054 , 93 , 112 , 1 , 1 ,
+615 , 40055 , 93 , 131 , 1 , 1 ,
+615 , 40056 , 115 , 132 , 1 , 1 ,
+615 , 40057 , 166 , 52 , 1 , 1 ,
+615 , 40058 , 165 , 52 , 1 , 1 ,
+615 , 40059 , 238 , 106 , 1 , 1 ,
+615 , 40060 , 238 , 115 , 1 , 1 ,
+615 , 40061 , 242 , 31 , 1 , 1 ,
+615 , 40062 , 257 , 106 , 1 , 1 ,
+615 , 40063 , 34 , 41 , 1 , 1 ,
+615 , 40064 , 256 , 21 , 1 , 1 ,
+615 , 40065 , 255 , 31 , 1 , 1 ,
+615 , 40066 , 88 , 111 , 1 , 1 ,
+615 , 40067 , 89 , 52 , 1 , 1 ,
+615 , 40068 , 254 , 92 , 1 , 1 ,
+615 , 40069 , 88 , 41 , 1 , 1 ,
+615 , 40070 , 254 , 31 , 1 , 1 ,
+615 , 40071 , 224 , 31 , 1 , 1 ,
+615 , 40072 , 140 , 98 , 1 , 1 ,
+615 , 40073 , 134 , 27 , 1 , 1 ,
+615 , 40074 , 132 , 102 , 1 , 1 ,
+615 , 40075 , 131 , 100 , 1 , 1 ,
+615 , 40076 , 121 , 63 , 1 , 1 ,
+615 , 40077 , 119 , 62 , 1 , 1 ,
+615 , 40078 , 119 , 62 , 1 , 1 ,
+615 , 40079 , 30 , 86 , 1 , 1 ,
+615 , 40080 , 33 , 41 , 1 , 1 ,
+615 , 40081 , 119 , 62 , 1 , 1 ,
+615 , 40082 , 187 , 78 , 1 , 1 ,
+615 , 40083 , 119 , 52 , 1 , 1 ,
+615 , 40084 , 186 , 90 , 1 , 1 ,
+615 , 40085 , 186 , 68 , 1 , 1 ,
+615 , 40086 , 222 , 31 , 1 , 1 ,
+615 , 40087 , 222 , 21 , 1 , 1 ,
+615 , 40088 , 220 , 55 , 1 , 1 ,
+615 , 40089 , 219 , 21 , 1 , 1 ,
+615 , 40090 , 93 , 52 , 1 , 1 ,
+615 , 40091 , 218 , 31 , 1 , 1 ,
+615 , 40092 , 217 , 31 , 1 , 1 ,
+615 , 40093 , 216 , 33 , 1 , 1 ,
+615 , 40094 , 215 , 42 , 1 , 1 ,
+615 , 40095 , 215 , 31 , 1 , 1 ,
+615 , 40096 , 165 , 52 , 1 , 1 ,
+615 , 40097 , 215 , 33 , 1 , 1 ,
+615 , 40098 , 158 , 41 , 1 , 1 ,
+615 , 40099 , 157 , 41 , 1 , 1 ,
+615 , 40100 , 63 , 31 , 1 , 1 ,
+615 , 40101 , 63 , 43 , 1 , 1 ,
+615 , 40102 , 215 , 53 , 1 , 1 ,
+615 , 40103 , 211 , 31 , 1 , 1 ,
+615 , 40104 , 214 , 54 , 1 , 1 ,
+615 , 40105 , 214 , 41 , 1 , 1 ,
+615 , 40106 , 213 , 55 , 1 , 1 ,
+615 , 40107 , 187 , 43 , 1 , 1 ,
+615 , 40108 , 186 , 42 , 1 , 1 ,
+615 , 40109 , 254 , 31 , 1 , 1 ,
+615 , 40110 , 201 , 41 , 1 , 1 ,
+615 , 40111 , 121 , 52 , 1 , 1 ,
+615 , 40112 , 253 , 31 , 1 , 1 ,
+615 , 40113 , 253 , 31 , 1 , 1 ,
+615 , 40114 , 25 , 42 , 1 , 1 ,
+615 , 40115 , 24 , 41 , 1 , 1 ,
+615 , 40116 , 25 , 32 , 1 , 1 ,
+615 , 40117 , 25 , 50 , 1 , 1 ,
+615 , 40118 , 25 , 49 , 1 , 1 ,
+615 , 40119 , 20 , 73 , 1 , 1 ,
+615 , 40120 , 20 , 41 , 1 , 1 ,
+615 , 40121 , 20 , 41 , 1 , 1 ,
+615 , 40122 , 20 , 73 , 1 , 1 ,
+615 , 40123 , 20 , 41 , 1 , 1 ,
+615 , 40124 , 25 , 33 , 1 , 1 ,
+615 , 40125 , 24 , 46 , 1 , 1 ,
+615 , 40126 , 23 , 55 , 1 , 1 ,
+615 , 40127 , 23 , 46 , 1 , 1 ,
+615 , 40128 , 18 , 42 , 1 , 1 ,
+615 , 40129 , 18 , 42 , 1 , 1 ,
+615 , 40130 , 18 , 41 , 1 , 1 ,
+615 , 40131 , 18 , 41 , 1 , 1 ,
+615 , 40132 , 18 , 41 , 1 , 1 ,
+615 , 40133 , 23 , 56 , 1 , 1 ,
+615 , 40134 , 156 , 21 , 1 , 1 ,
+615 , 40135 , 155 , 31 , 1 , 1 ,
+615 , 40136 , 155 , 31 , 1 , 1 ,
+615 , 40137 , 253 , 53 , 1 , 1 ,
+615 , 40138 , 250 , 53 , 1 , 1 ,
+615 , 40139 , 250 , 53 , 1 , 1 ,
+615 , 40140 , 250 , 53 , 1 , 1 ,
+615 , 40141 , 155 , 21 , 1 , 1 ,
+615 , 40142 , 155 , 56 , 1 , 1 ,
+615 , 40143 , 153 , 31 , 1 , 1 ,
+615 , 40144 , 107 , 41 , 1 , 1 ,
+615 , 40145 , 154 , 67 , 1 , 1 ,
+615 , 40146 , 113 , 41 , 1 , 1 ,
+615 , 40147 , 112 , 41 , 1 , 1 ,
+615 , 40148 , 93 , 78 , 1 , 1 ,
+615 , 40149 , 154 , 78 , 1 , 1 ,
+615 , 40150 , 152 , 82 , 1 , 1 ,
+615 , 40151 , 144 , 89 , 1 , 1 ,
+615 , 40152 , 154 , 108 , 1 , 1 ,
+615 , 40153 , 153 , 108 , 1 , 1 ,
+615 , 40154 , 153 , 88 , 1 , 1 ,
+615 , 40155 , 35 , 92 , 1 , 1 ,
+615 , 40156 , 153 , 89 , 1 , 1 ,
+615 , 40157 , 152 , 88 , 1 , 1 ,
+615 , 40158 , 152 , 125 , 1 , 1 ,
+615 , 40159 , 77 , 31 , 1 , 1 ,
+615 , 40160 , 152 , 109 , 1 , 1 ,
+615 , 40161 , 130 , 92 , 1 , 1 ,
+615 , 40162 , 152 , 32 , 1 , 1 ,
+615 , 40163 , 152 , 82 , 1 , 1 ,
+615 , 40164 , 150 , 32 , 1 , 1 ,
+615 , 40165 , 249 , 32 , 1 , 1 ,
+615 , 40166 , 393 , 72 , 1 , 1 , 40126 40050 39993 40122 40125 40028 40134 40049 40133 40136 40153 40016 40022 40110 40116 40094 40147 40074 39983 39995 40029 40138 40106 39988 39994 40057 40139 40001 40099 40024 40020 40068 39996 40037 40067 40082 40008 40051 40060 40091 40112 40002 40025 40066 40164 40129 39999 39981 39992 40004 40120 40036 40142 40064 40103 40140 40092 40048 40044 40093 40079 40090 40005 40062 40145 40148 40032 40013 40033 39986 39998 40081 40010 40054 39975 40144 40152 40021 40111 40159 40019 40146 40043 40031 39979 40038 40104 40154 40101 40121 40150 40161 40018 40117 40143 40023 40102 40151 40123 40160 39970 40098 40157 39987 40003 40086 40095 39972 40114 40047 40056 40149 40130 40009 39971 40041 40158 40077 40080 40052 40034 40071 40087 39997 40015 39968 40108 40063 40061 40115 40075 40040 40027 40072 40073 40163 40137 39967 40141 40069 40131 40088 40132 39978 40165 39969 40097 39980 40000 39985 40070 39984 39974 40006 40045 40084 40089 40113 40026 40127 40118 40046 40017 40107 40156 39990 40042 39966 39976 40030 39989 40076 40059 40083 40128 40053 39973 40039 40085 40011 40109 40105 40055 40065 40014 40007 40135 40035 40100 40078 39991 40058 40162 40155 39982 40012 40119 40096 39977 40124
+616 , 40167 , 108 , 62 , 1 , 1 ,
+616 , 40168 , 108 , 52 , 1 , 1 ,
+616 , 40169 , 108 , 52 , 1 , 1 ,
+616 , 40170 , 211 , 158 , 1 , 1 ,
+616 , 40171 , 190 , 41 , 1 , 1 ,
+616 , 40172 , 211 , 41 , 1 , 1 ,
+616 , 40173 , 211 , 41 , 1 , 1 ,
+616 , 40174 , 154 , 52 , 1 , 1 ,
+616 , 40175 , 210 , 158 , 1 , 1 ,
+616 , 40176 , 210 , 41 , 1 , 1 ,
+616 , 40177 , 200 , 130 , 1 , 1 ,
+616 , 40178 , 199 , 41 , 1 , 1 ,
+616 , 40179 , 199 , 42 , 1 , 1 ,
+616 , 40180 , 199 , 41 , 1 , 1 ,
+616 , 40181 , 199 , 41 , 1 , 1 ,
+616 , 40182 , 105 , 52 , 1 , 1 ,
+616 , 40183 , 101 , 62 , 1 , 1 ,
+616 , 40184 , 190 , 41 , 1 , 1 ,
+616 , 40185 , 188 , 64 , 1 , 1 ,
+616 , 40186 , 187 , 41 , 1 , 1 ,
+616 , 40187 , 161 , 52 , 1 , 1 ,
+616 , 40188 , 187 , 42 , 1 , 1 ,
+616 , 40189 , 132 , 52 , 1 , 1 ,
+616 , 40190 , 131 , 42 , 1 , 1 ,
+616 , 40191 , 131 , 42 , 1 , 1 ,
+616 , 40192 , 186 , 41 , 1 , 1 ,
+616 , 40193 , 185 , 53 , 1 , 1 ,
+616 , 40194 , 185 , 41 , 1 , 1 ,
+616 , 40195 , 184 , 41 , 1 , 1 ,
+616 , 40196 , 184 , 41 , 1 , 1 ,
+616 , 40197 , 184 , 41 , 1 , 1 ,
+616 , 40198 , 199 , 41 , 1 , 1 ,
+616 , 40199 , 101 , 62 , 1 , 1 ,
+616 , 40200 , 104 , 62 , 1 , 1 ,
+616 , 40201 , 104 , 52 , 1 , 1 ,
+616 , 40202 , 199 , 52 , 1 , 1 ,
+616 , 40203 , 199 , 52 , 1 , 1 ,
+616 , 40204 , 199 , 52 , 1 , 1 ,
+616 , 40205 , 199 , 52 , 1 , 1 ,
+616 , 40206 , 198 , 52 , 1 , 1 ,
+616 , 40207 , 197 , 52 , 1 , 1 ,
+616 , 40208 , 196 , 52 , 1 , 1 ,
+616 , 40209 , 195 , 52 , 1 , 1 ,
+616 , 40210 , 193 , 86 , 1 , 1 ,
+616 , 40211 , 134 , 52 , 1 , 1 ,
+616 , 40212 , 191 , 75 , 1 , 1 ,
+616 , 40213 , 191 , 52 , 1 , 1 ,
+616 , 40214 , 191 , 52 , 1 , 1 ,
+616 , 40215 , 159 , 62 , 1 , 1 ,
+616 , 40216 , 135 , 52 , 1 , 1 ,
+616 , 40217 , 191 , 52 , 1 , 1 ,
+616 , 40218 , 210 , 41 , 1 , 1 ,
+616 , 40219 , 67 , 52 , 1 , 1 ,
+616 , 40220 , 12 , 71 , 1 , 1 ,
+616 , 40221 , 12 , 88 , 1 , 1 ,
+616 , 40222 , 12 , 70 , 1 , 1 ,
+616 , 40223 , 12 , 76 , 1 , 1 ,
+616 , 40224 , 12 , 72 , 1 , 1 ,
+616 , 40225 , 12 , 77 , 1 , 1 ,
+616 , 40226 , 12 , 77 , 1 , 1 ,
+616 , 40227 , 12 , 78 , 1 , 1 ,
+616 , 40228 , 9 , 234 , 1 , 1 ,
+616 , 40229 , 9 , 244 , 1 , 1 ,
+616 , 40230 , 9 , 244 , 1 , 1 ,
+616 , 40231 , 9 , 244 , 1 , 1 ,
+616 , 40232 , 9 , 256 , 1 , 1 ,
+616 , 40233 , 9 , 254 , 1 , 1 ,
+616 , 40234 , 9 , 254 , 1 , 1 ,
+616 , 40235 , 8 , 254 , 1 , 1 ,
+616 , 40236 , 8 , 264 , 1 , 1 ,
+616 , 40237 , 8 , 276 , 1 , 1 ,
+616 , 40238 , 8 , 274 , 1 , 1 ,
+616 , 40239 , 8 , 275 , 1 , 1 ,
+616 , 40240 , 8 , 275 , 1 , 1 ,
+616 , 40241 , 8 , 284 , 1 , 1 ,
+616 , 40242 , 8 , 285 , 1 , 1 ,
+616 , 40243 , 8 , 285 , 1 , 1 ,
+616 , 40244 , 26 , 160 , 1 , 1 ,
+616 , 40245 , 25 , 176 , 1 , 1 ,
+616 , 40246 , 25 , 174 , 1 , 1 ,
+616 , 40247 , 25 , 186 , 1 , 1 ,
+616 , 40248 , 24 , 189 , 1 , 1 ,
+616 , 40249 , 24 , 187 , 1 , 1 ,
+616 , 40250 , 24 , 251 , 1 , 1 ,
+616 , 40251 , 23 , 204 , 1 , 1 ,
+616 , 40252 , 23 , 200 , 1 , 1 ,
+616 , 40253 , 23 , 252 , 1 , 1 ,
+616 , 40254 , 22 , 203 , 1 , 1 ,
+616 , 40255 , 22 , 203 , 1 , 1 ,
+616 , 40256 , 21 , 193 , 1 , 1 ,
+616 , 40257 , 21 , 200 , 1 , 1 ,
+616 , 40258 , 20 , 247 , 1 , 1 ,
+616 , 40259 , 20 , 215 , 1 , 1 ,
+616 , 40260 , 20 , 270 , 1 , 1 ,
+616 , 40261 , 19 , 225 , 1 , 1 ,
+616 , 40262 , 19 , 220 , 1 , 1 ,
+616 , 40263 , 19 , 214 , 1 , 1 ,
+616 , 40264 , 18 , 218 , 1 , 1 ,
+616 , 40265 , 18 , 218 , 1 , 1 ,
+616 , 40266 , 17 , 256 , 1 , 1 ,
+616 , 40267 , 17 , 197 , 1 , 1 ,
+616 , 40268 , 17 , 180 , 1 , 1 ,
+616 , 40269 , 17 , 237 , 1 , 1 ,
+616 , 40270 , 16 , 213 , 1 , 1 ,
+616 , 40271 , 16 , 224 , 1 , 1 ,
+616 , 40272 , 16 , 206 , 1 , 1 ,
+616 , 40273 , 15 , 192 , 1 , 1 ,
+616 , 40274 , 15 , 199 , 1 , 1 ,
+616 , 40275 , 15 , 266 , 1 , 1 ,
+616 , 40276 , 15 , 199 , 1 , 1 ,
+616 , 40277 , 14 , 199 , 1 , 1 ,
+616 , 40278 , 14 , 199 , 1 , 1 ,
+616 , 40279 , 13 , 192 , 1 , 1 ,
+616 , 40280 , 13 , 231 , 1 , 1 ,
+616 , 40281 , 13 , 175 , 1 , 1 ,
+616 , 40282 , 13 , 164 , 1 , 1 ,
+616 , 40283 , 13 , 214 , 1 , 1 ,
+616 , 40284 , 12 , 132 , 1 , 1 ,
+616 , 40285 , 12 , 165 , 1 , 1 ,
+616 , 40286 , 12 , 122 , 1 , 1 ,
+616 , 40287 , 11 , 126 , 1 , 1 ,
+616 , 40288 , 11 , 120 , 1 , 1 ,
+616 , 40289 , 11 , 120 , 1 , 1 ,
+616 , 40290 , 10 , 144 , 1 , 1 ,
+616 , 40291 , 10 , 109 , 1 , 1 ,
+616 , 40292 , 10 , 109 , 1 , 1 ,
+616 , 40293 , 9 , 123 , 1 , 1 ,
+616 , 40294 , 9 , 98 , 1 , 1 ,
+616 , 40295 , 9 , 99 , 1 , 1 ,
+616 , 40296 , 8 , 110 , 1 , 1 ,
+616 , 40297 , 8 , 100 , 1 , 1 ,
+616 , 40298 , 8 , 140 , 1 , 1 ,
+616 , 40299 , 7 , 97 , 1 , 1 ,
+616 , 40300 , 7 , 107 , 1 , 1 ,
+616 , 40301 , 7 , 118 , 1 , 1 ,
+616 , 40302 , 6 , 107 , 1 , 1 ,
+616 , 40303 , 6 , 98 , 1 , 1 ,
+616 , 40304 , 6 , 97 , 1 , 1 ,
+616 , 40305 , 5 , 98 , 1 , 1 ,
+616 , 40306 , 5 , 119 , 1 , 1 ,
+616 , 40307 , 5 , 87 , 1 , 1 ,
+616 , 40308 , 20 , 62 , 1 , 1 ,
+616 , 40309 , 20 , 72 , 1 , 1 ,
+616 , 40310 , 19 , 62 , 1 , 1 ,
+616 , 40311 , 19 , 62 , 1 , 1 ,
+616 , 40312 , 19 , 72 , 1 , 1 ,
+616 , 40313 , 19 , 52 , 1 , 1 ,
+616 , 40314 , 19 , 72 , 1 , 1 ,
+616 , 40315 , 19 , 72 , 1 , 1 ,
+616 , 40316 , 19 , 72 , 1 , 1 ,
+616 , 40317 , 16 , 62 , 1 , 1 ,
+616 , 40318 , 16 , 72 , 1 , 1 ,
+616 , 40319 , 16 , 72 , 1 , 1 ,
+616 , 40320 , 16 , 62 , 1 , 1 ,
+616 , 40321 , 16 , 72 , 1 , 1 ,
+616 , 40322 , 16 , 72 , 1 , 1 ,
+616 , 40323 , 15 , 72 , 1 , 1 ,
+616 , 40324 , 15 , 72 , 1 , 1 ,
+616 , 40325 , 15 , 72 , 1 , 1 ,
+616 , 40326 , 15 , 72 , 1 , 1 ,
+616 , 40327 , 12 , 62 , 1 , 1 ,
+616 , 40328 , 12 , 72 , 1 , 1 ,
+616 , 40329 , 12 , 72 , 1 , 1 ,
+616 , 40330 , 12 , 82 , 1 , 1 ,
+616 , 40331 , 12 , 72 , 1 , 1 ,
+616 , 40332 , 12 , 72 , 1 , 1 ,
+616 , 40333 , 11 , 72 , 1 , 1 ,
+616 , 40334 , 11 , 62 , 1 , 1 ,
+616 , 40335 , 11 , 72 , 1 , 1 ,
+616 , 40336 , 11 , 72 , 1 , 1 ,
+616 , 40337 , 8 , 83 , 1 , 1 ,
+616 , 40338 , 8 , 62 , 1 , 1 ,
+616 , 40339 , 8 , 73 , 1 , 1 ,
+616 , 40340 , 8 , 62 , 1 , 1 ,
+616 , 40341 , 8 , 63 , 1 , 1 ,
+616 , 40342 , 8 , 63 , 1 , 1 ,
+616 , 40343 , 7 , 62 , 1 , 1 ,
+616 , 40344 , 7 , 72 , 1 , 1 ,
+616 , 40345 , 7 , 62 , 1 , 1 ,
+616 , 40346 , 7 , 82 , 1 , 1 ,
+616 , 40347 , 5 , 62 , 1 , 1 ,
+616 , 40348 , 5 , 62 , 1 , 1 ,
+616 , 40349 , 5 , 72 , 1 , 1 ,
+616 , 40350 , 5 , 62 , 1 , 1 ,
+616 , 40351 , 5 , 62 , 1 , 1 ,
+616 , 40352 , 5 , 72 , 1 , 1 ,
+616 , 40353 , 5 , 52 , 1 , 1 ,
+616 , 40354 , 5 , 62 , 1 , 1 ,
+616 , 40355 , 5 , 62 , 1 , 1 ,
+616 , 40356 , 5 , 52 , 1 , 1 ,
+616 , 40357 , 3 , 62 , 1 , 1 ,
+616 , 40358 , 3 , 62 , 1 , 1 ,
+616 , 40359 , 3 , 62 , 1 , 1 ,
+616 , 40360 , 3 , 52 , 1 , 1 ,
+616 , 40361 , 3 , 62 , 1 , 1 ,
+616 , 40362 , 3 , 62 , 1 , 1 ,
+616 , 40363 , 3 , 52 , 1 , 1 ,
+616 , 40364 , 3 , 62 , 1 , 1 ,
+616 , 40365 , 3 , 52 , 1 , 1 ,
+616 , 40366 , 3 , 52 , 1 , 1 ,
+616 , 40367 , 407 , 184 , 1 , 1 , 40190 40328 40269 40312 40363 40224 40211 40321 40220 40196 40223 40233 40335 40295 40277 40240 40218 40337 40344 40180 40274 40296 40272 40359 40271 40309 40216 40342 40358 40225 40194 40351 40213 40245 40267 40181 40169 40230 40299 40338 40291 40302 40329 40253 40332 40256 40176 40346 40192 40244 40173 40185 40193 40280 40234 40232 40239 40241 40263 40360 40268 40349 40350 40281 40276 40222 40285 40215 40318 40324 40352 40297 40183 40364 40172 40250 40204 40345 40184 40202 40189 40326 40339 40356 40247 40221 40286 40210 40200 40316 40323 40325 40205 40231 40226 40301 40252 40251 40287 40182 40255 40217 40275 40228 40178 40288 40305 40313 40168 40354 40206 40207 40300 40266 40273 40238 40174 40303 40186 40187 40308 40170 40357 40284 40199 40365 40306 40260 40282 40259 40289 40262 40270 40293 40249 40177 40361 40175 40304 40214 40265 40343 40167 40331 40307 40330 40283 40320 40227 40246 40254 40242 40314 40298 40347 40179 40248 40311 40292 40201 40341 40195 40317 40258 40257 40315 40355 40237 40243 40334 40191 40348 40327 40336 40208 40322 40366 40261 40290 40353 40279 40340 40197 40171 40294 40188 40362 40278 40235 40310 40229 40219 40236 40319 40203 40264 40198 40209 40333 40212
+617 , 40368 , 202 , 77 , 1 , 1 ,
+617 , 40369 , 202 , 88 , 1 , 1 ,
+617 , 40370 , 216 , 74 , 1 , 1 ,
+617 , 40371 , 182 , 21 , 1 , 1 ,
+617 , 40372 , 182 , 96 , 1 , 1 ,
+617 , 40373 , 100 , 41 , 1 , 1 ,
+617 , 40374 , 102 , 41 , 1 , 1 ,
+617 , 40375 , 159 , 31 , 1 , 1 ,
+617 , 40376 , 159 , 68 , 1 , 1 ,
+617 , 40377 , 105 , 31 , 1 , 1 ,
+617 , 40378 , 105 , 31 , 1 , 1 ,
+617 , 40379 , 105 , 31 , 1 , 1 ,
+617 , 40380 , 104 , 41 , 1 , 1 ,
+617 , 40381 , 150 , 32 , 1 , 1 ,
+617 , 40382 , 149 , 23 , 1 , 1 ,
+617 , 40383 , 149 , 70 , 1 , 1 ,
+617 , 40384 , 148 , 33 , 1 , 1 ,
+617 , 40385 , 147 , 34 , 1 , 1 ,
+617 , 40386 , 129 , 21 , 1 , 1 ,
+617 , 40387 , 129 , 21 , 1 , 1 ,
+617 , 40388 , 128 , 21 , 1 , 1 ,
+617 , 40389 , 128 , 21 , 1 , 1 ,
+617 , 40390 , 127 , 21 , 1 , 1 ,
+617 , 40391 , 126 , 78 , 1 , 1 ,
+617 , 40392 , 125 , 58 , 1 , 1 ,
+617 , 40393 , 120 , 55 , 1 , 1 ,
+617 , 40394 , 119 , 56 , 1 , 1 ,
+617 , 40395 , 146 , 33 , 1 , 1 ,
+617 , 40396 , 145 , 49 , 1 , 1 ,
+617 , 40397 , 135 , 41 , 1 , 1 ,
+617 , 40398 , 135 , 42 , 1 , 1 ,
+617 , 40399 , 159 , 41 , 1 , 1 ,
+617 , 40400 , 180 , 44 , 1 , 1 ,
+617 , 40401 , 157 , 41 , 1 , 1 ,
+617 , 40402 , 155 , 31 , 1 , 1 ,
+617 , 40403 , 155 , 41 , 1 , 1 ,
+617 , 40404 , 154 , 41 , 1 , 1 ,
+617 , 40405 , 154 , 41 , 1 , 1 ,
+617 , 40406 , 180 , 43 , 1 , 1 ,
+617 , 40407 , 175 , 31 , 1 , 1 ,
+617 , 40408 , 99 , 41 , 1 , 1 ,
+617 , 40409 , 97 , 44 , 1 , 1 ,
+617 , 40410 , 97 , 44 , 1 , 1 ,
+617 , 40411 , 88 , 31 , 1 , 1 ,
+617 , 40412 , 87 , 31 , 1 , 1 ,
+617 , 40413 , 85 , 31 , 1 , 1 ,
+617 , 40414 , 83 , 41 , 1 , 1 ,
+617 , 40415 , 83 , 41 , 1 , 1 ,
+617 , 40416 , 83 , 41 , 1 , 1 ,
+617 , 40417 , 83 , 41 , 1 , 1 ,
+617 , 40418 , 97 , 43 , 1 , 1 ,
+617 , 40419 , 97 , 32 , 1 , 1 ,
+617 , 40420 , 97 , 43 , 1 , 1 ,
+617 , 40421 , 98 , 42 , 1 , 1 ,
+617 , 40422 , 98 , 42 , 1 , 1 ,
+617 , 40423 , 98 , 41 , 1 , 1 ,
+617 , 40424 , 98 , 42 , 1 , 1 ,
+617 , 40425 , 97 , 41 , 1 , 1 ,
+617 , 40426 , 97 , 41 , 1 , 1 ,
+617 , 40427 , 97 , 41 , 1 , 1 ,
+617 , 40428 , 100 , 67 , 1 , 1 ,
+617 , 40429 , 95 , 41 , 1 , 1 ,
+617 , 40430 , 95 , 52 , 1 , 1 ,
+617 , 40431 , 78 , 41 , 1 , 1 ,
+617 , 40432 , 78 , 41 , 1 , 1 ,
+617 , 40433 , 78 , 41 , 1 , 1 ,
+617 , 40434 , 77 , 41 , 1 , 1 ,
+617 , 40435 , 77 , 42 , 1 , 1 ,
+617 , 40436 , 77 , 42 , 1 , 1 ,
+617 , 40437 , 77 , 41 , 1 , 1 ,
+617 , 40438 , 77 , 41 , 1 , 1 ,
+617 , 40439 , 77 , 41 , 1 , 1 ,
+617 , 40440 , 77 , 41 , 1 , 1 ,
+617 , 40441 , 95 , 52 , 1 , 1 ,
+617 , 40442 , 95 , 52 , 1 , 1 ,
+617 , 40443 , 95 , 41 , 1 , 1 ,
+617 , 40444 , 95 , 41 , 1 , 1 ,
+617 , 40445 , 95 , 41 , 1 , 1 ,
+617 , 40446 , 97 , 43 , 1 , 1 ,
+617 , 40447 , 89 , 31 , 1 , 1 ,
+617 , 40448 , 172 , 31 , 1 , 1 ,
+617 , 40449 , 172 , 31 , 1 , 1 ,
+617 , 40450 , 135 , 41 , 1 , 1 ,
+617 , 40451 , 133 , 41 , 1 , 1 ,
+617 , 40452 , 77 , 41 , 1 , 1 ,
+617 , 40453 , 170 , 128 , 1 , 1 ,
+617 , 40454 , 179 , 31 , 1 , 1 ,
+617 , 40455 , 133 , 41 , 1 , 1 ,
+617 , 40456 , 177 , 101 , 1 , 1 ,
+617 , 40457 , 177 , 92 , 1 , 1 ,
+617 , 40458 , 176 , 31 , 1 , 1 ,
+617 , 40459 , 160 , 41 , 1 , 1 ,
+617 , 40460 , 175 , 32 , 1 , 1 ,
+617 , 40461 , 215 , 21 , 1 , 1 ,
+617 , 40462 , 189 , 31 , 1 , 1 ,
+617 , 40463 , 188 , 123 , 1 , 1 ,
+617 , 40464 , 188 , 123 , 1 , 1 ,
+617 , 40465 , 152 , 31 , 1 , 1 ,
+617 , 40466 , 188 , 32 , 1 , 1 ,
+617 , 40467 , 188 , 43 , 1 , 1 ,
+617 , 40468 , 188 , 31 , 1 , 1 ,
+617 , 40469 , 145 , 125 , 1 , 1 ,
+617 , 40470 , 137 , 120 , 1 , 1 ,
+617 , 40471 , 135 , 41 , 1 , 1 ,
+617 , 40472 , 188 , 21 , 1 , 1 ,
+617 , 40473 , 215 , 21 , 1 , 1 ,
+617 , 40474 , 214 , 21 , 1 , 1 ,
+617 , 40475 , 132 , 41 , 1 , 1 ,
+617 , 40476 , 132 , 41 , 1 , 1 ,
+617 , 40477 , 131 , 104 , 1 , 1 ,
+617 , 40478 , 131 , 41 , 1 , 1 ,
+617 , 40479 , 132 , 41 , 1 , 1 ,
+617 , 40480 , 132 , 92 , 1 , 1 ,
+617 , 40481 , 160 , 41 , 1 , 1 ,
+617 , 40482 , 160 , 78 , 1 , 1 ,
+617 , 40483 , 119 , 96 , 1 , 1 ,
+617 , 40484 , 117 , 31 , 1 , 1 ,
+617 , 40485 , 115 , 83 , 1 , 1 ,
+617 , 40486 , 77 , 41 , 1 , 1 ,
+617 , 40487 , 76 , 31 , 1 , 1 ,
+617 , 40488 , 159 , 41 , 1 , 1 ,
+617 , 40489 , 158 , 31 , 1 , 1 ,
+617 , 40490 , 158 , 41 , 1 , 1 ,
+617 , 40491 , 157 , 41 , 1 , 1 ,
+617 , 40492 , 160 , 46 , 1 , 1 ,
+617 , 40493 , 160 , 41 , 1 , 1 ,
+617 , 40494 , 159 , 41 , 1 , 1 ,
+617 , 40495 , 214 , 21 , 1 , 1 ,
+617 , 40496 , 133 , 41 , 1 , 1 ,
+617 , 40497 , 214 , 21 , 1 , 1 ,
+617 , 40498 , 214 , 21 , 1 , 1 ,
+617 , 40499 , 214 , 21 , 1 , 1 ,
+617 , 40500 , 152 , 41 , 1 , 1 ,
+617 , 40501 , 152 , 31 , 1 , 1 ,
+617 , 40502 , 150 , 52 , 1 , 1 ,
+617 , 40503 , 115 , 46 , 1 , 1 ,
+617 , 40504 , 103 , 41 , 1 , 1 ,
+617 , 40505 , 102 , 41 , 1 , 1 ,
+617 , 40506 , 114 , 47 , 1 , 1 ,
+617 , 40507 , 114 , 35 , 1 , 1 ,
+617 , 40508 , 108 , 49 , 1 , 1 ,
+617 , 40509 , 108 , 36 , 1 , 1 ,
+617 , 40510 , 133 , 42 , 1 , 1 ,
+617 , 40511 , 150 , 41 , 1 , 1 ,
+617 , 40512 , 154 , 41 , 1 , 1 ,
+617 , 40513 , 152 , 42 , 1 , 1 ,
+617 , 40514 , 212 , 31 , 1 , 1 ,
+617 , 40515 , 150 , 31 , 1 , 1 ,
+617 , 40516 , 150 , 42 , 1 , 1 ,
+617 , 40517 , 211 , 21 , 1 , 1 ,
+617 , 40518 , 211 , 31 , 1 , 1 ,
+617 , 40519 , 150 , 21 , 1 , 1 ,
+617 , 40520 , 210 , 31 , 1 , 1 ,
+617 , 40521 , 209 , 21 , 1 , 1 ,
+617 , 40522 , 217 , 21 , 1 , 1 ,
+617 , 40523 , 217 , 21 , 1 , 1 ,
+617 , 40524 , 170 , 43 , 1 , 1 ,
+617 , 40525 , 169 , 41 , 1 , 1 ,
+617 , 40526 , 161 , 42 , 1 , 1 ,
+617 , 40527 , 161 , 41 , 1 , 1 ,
+617 , 40528 , 100 , 41 , 1 , 1 ,
+617 , 40529 , 100 , 42 , 1 , 1 ,
+617 , 40530 , 168 , 31 , 1 , 1 ,
+617 , 40531 , 167 , 59 , 1 , 1 ,
+617 , 40532 , 167 , 60 , 1 , 1 ,
+617 , 40533 , 166 , 49 , 1 , 1 ,
+617 , 40534 , 166 , 49 , 1 , 1 ,
+617 , 40535 , 163 , 32 , 1 , 1 ,
+617 , 40536 , 162 , 41 , 1 , 1 ,
+617 , 40537 , 108 , 59 , 1 , 1 ,
+617 , 40538 , 107 , 31 , 1 , 1 ,
+617 , 40539 , 107 , 31 , 1 , 1 ,
+617 , 40540 , 105 , 35 , 1 , 1 ,
+617 , 40541 , 104 , 49 , 1 , 1 ,
+617 , 40542 , 104 , 60 , 1 , 1 ,
+617 , 40543 , 106 , 41 , 1 , 1 ,
+617 , 40544 , 162 , 41 , 1 , 1 ,
+617 , 40545 , 217 , 21 , 1 , 1 ,
+617 , 40546 , 216 , 21 , 1 , 1 ,
+617 , 40547 , 216 , 21 , 1 , 1 ,
+617 , 40548 , 219 , 63 , 1 , 1 ,
+617 , 40549 , 219 , 74 , 1 , 1 ,
+617 , 40550 , 218 , 74 , 1 , 1 ,
+617 , 40551 , 218 , 84 , 1 , 1 ,
+617 , 40552 , 217 , 74 , 1 , 1 ,
+617 , 40553 , 216 , 21 , 1 , 1 ,
+617 , 40554 , 76 , 41 , 1 , 1 ,
+617 , 40555 , 75 , 21 , 1 , 1 ,
+617 , 40556 , 68 , 21 , 1 , 1 ,
+617 , 40557 , 67 , 21 , 1 , 1 ,
+617 , 40558 , 67 , 21 , 1 , 1 ,
+617 , 40559 , 67 , 21 , 1 , 1 ,
+617 , 40560 , 67 , 21 , 1 , 1 ,
+617 , 40561 , 217 , 94 , 1 , 1 ,
+617 , 40562 , 216 , 94 , 1 , 1 ,
+617 , 40563 , 150 , 31 , 1 , 1 ,
+617 , 40564 , 150 , 42 , 1 , 1 ,
+617 , 40565 , 216 , 21 , 1 , 1 ,
+617 , 40566 , 216 , 73 , 1 , 1 ,
+617 , 40567 , 209 , 21 , 1 , 1 ,
+617 , 40568 , 341 , 72 , 1 , 1 , 40542 40540 40460 40391 40525 40485 40465 40566 40476 40401 40406 40550 40484 40516 40399 40439 40409 40385 40493 40490 40523 40524 40423 40381 40429 40376 40400 40471 40559 40436 40535 40425 40394 40548 40521 40502 40437 40532 40555 40377 40449 40562 40563 40369 40519 40475 40543 40506 40526 40472 40374 40549 40486 40403 40495 40455 40426 40501 40415 40530 40384 40512 40507 40450 40424 40418 40544 40451 40427 40396 40417 40551 40448 40469 40398 40538 40457 40558 40464 40473 40488 40557 40511 40527 40499 40458 40430 40389 40386 40432 40536 40508 40518 40479 40446 40459 40372 40487 40513 40541 40546 40489 40517 40382 40383 40444 40419 40447 40492 40393 40503 40392 40402 40478 40522 40421 40379 40467 40380 40560 40387 40497 40496 40474 40494 40510 40410 40556 40434 40375 40428 40416 40533 40547 40456 40483 40498 40390 40408 40552 40413 40534 40433 40438 40466 40481 40397 40422 40468 40545 40452 40388 40520 40411 40378 40491 40440 40442 40500 40531 40414 40370 40371 40373 40405 40461 40537 40407 40443 40412 40420 40477 40395 40554 40514 40453 40529 40435 40470 40404 40504 40482 40567 40462 40480 40515 40445 40454 40539 40368 40509 40441 40564 40431 40528 40565 40561 40463 40505 40553
+618 , 40569 , 92 , 41 , 1 , 1 ,
+618 , 40570 , 92 , 41 , 1 , 1 ,
+618 , 40571 , 92 , 41 , 1 , 1 ,
+618 , 40572 , 92 , 52 , 1 , 1 ,
+618 , 40573 , 92 , 64 , 1 , 1 ,
+618 , 40574 , 90 , 52 , 1 , 1 ,
+618 , 40575 , 89 , 52 , 1 , 1 ,
+618 , 40576 , 88 , 53 , 1 , 1 ,
+618 , 40577 , 87 , 53 , 1 , 1 ,
+618 , 40578 , 87 , 43 , 1 , 1 ,
+618 , 40579 , 87 , 43 , 1 , 1 ,
+618 , 40580 , 84 , 52 , 1 , 1 ,
+618 , 40581 , 84 , 52 , 1 , 1 ,
+618 , 40582 , 84 , 52 , 1 , 1 ,
+618 , 40583 , 84 , 52 , 1 , 1 ,
+618 , 40584 , 84 , 52 , 1 , 1 ,
+618 , 40585 , 83 , 52 , 1 , 1 ,
+618 , 40586 , 83 , 52 , 1 , 1 ,
+618 , 40587 , 83 , 52 , 1 , 1 ,
+618 , 40588 , 83 , 52 , 1 , 1 ,
+618 , 40589 , 83 , 52 , 1 , 1 ,
+618 , 40590 , 83 , 52 , 1 , 1 ,
+618 , 40591 , 82 , 52 , 1 , 1 ,
+618 , 40592 , 82 , 52 , 1 , 1 ,
+618 , 40593 , 80 , 52 , 1 , 1 ,
+618 , 40594 , 80 , 52 , 1 , 1 ,
+618 , 40595 , 80 , 62 , 1 , 1 ,
+618 , 40596 , 94 , 41 , 1 , 1 ,
+618 , 40597 , 94 , 52 , 1 , 1 ,
+618 , 40598 , 94 , 52 , 1 , 1 ,
+618 , 40599 , 93 , 52 , 1 , 1 ,
+618 , 40600 , 80 , 52 , 1 , 1 ,
+618 , 40601 , 80 , 62 , 1 , 1 ,
+618 , 40602 , 80 , 52 , 1 , 1 ,
+618 , 40603 , 80 , 52 , 1 , 1 ,
+618 , 40604 , 79 , 52 , 1 , 1 ,
+618 , 40605 , 78 , 42 , 1 , 1 ,
+618 , 40606 , 78 , 52 , 1 , 1 ,
+618 , 40607 , 93 , 52 , 1 , 1 ,
+618 , 40608 , 93 , 75 , 1 , 1 ,
+618 , 40609 , 92 , 52 , 1 , 1 ,
+618 , 40610 , 92 , 52 , 1 , 1 ,
+618 , 40611 , 92 , 52 , 1 , 1 ,
+618 , 40612 , 46 , 52 , 1 , 1 ,
+618 , 40613 , 46 , 52 , 1 , 1 ,
+618 , 40614 , 46 , 52 , 1 , 1 ,
+618 , 40615 , 46 , 52 , 1 , 1 ,
+618 , 40616 , 45 , 52 , 1 , 1 ,
+618 , 40617 , 45 , 52 , 1 , 1 ,
+618 , 40618 , 45 , 53 , 1 , 1 ,
+618 , 40619 , 45 , 51 , 1 , 1 ,
+618 , 40620 , 45 , 52 , 1 , 1 ,
+618 , 40621 , 12 , 71 , 1 , 1 ,
+618 , 40622 , 12 , 87 , 1 , 1 ,
+618 , 40623 , 12 , 76 , 1 , 1 ,
+618 , 40624 , 12 , 74 , 1 , 1 ,
+618 , 40625 , 12 , 70 , 1 , 1 ,
+618 , 40626 , 12 , 76 , 1 , 1 ,
+618 , 40627 , 12 , 77 , 1 , 1 ,
+618 , 40628 , 12 , 77 , 1 , 1 ,
+618 , 40629 , 9 , 224 , 1 , 1 ,
+618 , 40630 , 9 , 223 , 1 , 1 ,
+618 , 40631 , 9 , 224 , 1 , 1 ,
+618 , 40632 , 9 , 234 , 1 , 1 ,
+618 , 40633 , 9 , 235 , 1 , 1 ,
+618 , 40634 , 9 , 234 , 1 , 1 ,
+618 , 40635 , 8 , 254 , 1 , 1 ,
+618 , 40636 , 8 , 254 , 1 , 1 ,
+618 , 40637 , 8 , 254 , 1 , 1 ,
+618 , 40638 , 8 , 265 , 1 , 1 ,
+618 , 40639 , 8 , 274 , 1 , 1 ,
+618 , 40640 , 8 , 274 , 1 , 1 ,
+618 , 40641 , 8 , 264 , 1 , 1 ,
+618 , 40642 , 8 , 264 , 1 , 1 ,
+618 , 40643 , 8 , 274 , 1 , 1 ,
+618 , 40644 , 8 , 285 , 1 , 1 ,
+618 , 40645 , 26 , 163 , 1 , 1 ,
+618 , 40646 , 25 , 165 , 1 , 1 ,
+618 , 40647 , 25 , 174 , 1 , 1 ,
+618 , 40648 , 25 , 217 , 1 , 1 ,
+618 , 40649 , 24 , 176 , 1 , 1 ,
+618 , 40650 , 24 , 205 , 1 , 1 ,
+618 , 40651 , 23 , 196 , 1 , 1 ,
+618 , 40652 , 22 , 198 , 1 , 1 ,
+618 , 40653 , 22 , 208 , 1 , 1 ,
+618 , 40654 , 22 , 197 , 1 , 1 ,
+618 , 40655 , 21 , 192 , 1 , 1 ,
+618 , 40656 , 21 , 234 , 1 , 1 ,
+618 , 40657 , 21 , 234 , 1 , 1 ,
+618 , 40658 , 20 , 180 , 1 , 1 ,
+618 , 40659 , 20 , 193 , 1 , 1 ,
+618 , 40660 , 20 , 193 , 1 , 1 ,
+618 , 40661 , 19 , 215 , 1 , 1 ,
+618 , 40662 , 19 , 236 , 1 , 1 ,
+618 , 40663 , 18 , 236 , 1 , 1 ,
+618 , 40664 , 18 , 248 , 1 , 1 ,
+618 , 40665 , 18 , 237 , 1 , 1 ,
+618 , 40666 , 18 , 214 , 1 , 1 ,
+618 , 40667 , 17 , 217 , 1 , 1 ,
+618 , 40668 , 17 , 206 , 1 , 1 ,
+618 , 40669 , 17 , 195 , 1 , 1 ,
+618 , 40670 , 16 , 236 , 1 , 1 ,
+618 , 40671 , 16 , 196 , 1 , 1 ,
+618 , 40672 , 16 , 237 , 1 , 1 ,
+618 , 40673 , 15 , 206 , 1 , 1 ,
+618 , 40674 , 15 , 216 , 1 , 1 ,
+618 , 40675 , 15 , 206 , 1 , 1 ,
+618 , 40676 , 14 , 205 , 1 , 1 ,
+618 , 40677 , 14 , 195 , 1 , 1 ,
+618 , 40678 , 14 , 197 , 1 , 1 ,
+618 , 40679 , 13 , 196 , 1 , 1 ,
+618 , 40680 , 13 , 227 , 1 , 1 ,
+618 , 40681 , 13 , 187 , 1 , 1 ,
+618 , 40682 , 12 , 176 , 1 , 1 ,
+618 , 40683 , 12 , 164 , 1 , 1 ,
+618 , 40684 , 12 , 197 , 1 , 1 ,
+618 , 40685 , 11 , 143 , 1 , 1 ,
+618 , 40686 , 11 , 143 , 1 , 1 ,
+618 , 40687 , 11 , 143 , 1 , 1 ,
+618 , 40688 , 11 , 156 , 1 , 1 ,
+618 , 40689 , 10 , 146 , 1 , 1 ,
+618 , 40690 , 10 , 123 , 1 , 1 ,
+618 , 40691 , 10 , 109 , 1 , 1 ,
+618 , 40692 , 9 , 109 , 1 , 1 ,
+618 , 40693 , 9 , 109 , 1 , 1 ,
+618 , 40694 , 9 , 142 , 1 , 1 ,
+618 , 40695 , 9 , 110 , 1 , 1 ,
+618 , 40696 , 9 , 109 , 1 , 1 ,
+618 , 40697 , 8 , 132 , 1 , 1 ,
+618 , 40698 , 8 , 110 , 1 , 1 ,
+618 , 40699 , 8 , 100 , 1 , 1 ,
+618 , 40700 , 7 , 107 , 1 , 1 ,
+618 , 40701 , 7 , 111 , 1 , 1 ,
+618 , 40702 , 7 , 101 , 1 , 1 ,
+618 , 40703 , 6 , 108 , 1 , 1 ,
+618 , 40704 , 6 , 120 , 1 , 1 ,
+618 , 40705 , 6 , 119 , 1 , 1 ,
+618 , 40706 , 5 , 97 , 1 , 1 ,
+618 , 40707 , 5 , 97 , 1 , 1 ,
+618 , 40708 , 5 , 98 , 1 , 1 ,
+618 , 40709 , 18 , 63 , 1 , 1 ,
+618 , 40710 , 18 , 62 , 1 , 1 ,
+618 , 40711 , 18 , 52 , 1 , 1 ,
+618 , 40712 , 18 , 62 , 1 , 1 ,
+618 , 40713 , 18 , 52 , 1 , 1 ,
+618 , 40714 , 18 , 62 , 1 , 1 ,
+618 , 40715 , 18 , 63 , 1 , 1 ,
+618 , 40716 , 18 , 62 , 1 , 1 ,
+618 , 40717 , 18 , 52 , 1 , 1 ,
+618 , 40718 , 18 , 62 , 1 , 1 ,
+618 , 40719 , 15 , 63 , 1 , 1 ,
+618 , 40720 , 15 , 53 , 1 , 1 ,
+618 , 40721 , 15 , 63 , 1 , 1 ,
+618 , 40722 , 14 , 63 , 1 , 1 ,
+618 , 40723 , 14 , 63 , 1 , 1 ,
+618 , 40724 , 14 , 63 , 1 , 1 ,
+618 , 40725 , 14 , 63 , 1 , 1 ,
+618 , 40726 , 14 , 63 , 1 , 1 ,
+618 , 40727 , 14 , 53 , 1 , 1 ,
+618 , 40728 , 14 , 73 , 1 , 1 ,
+618 , 40729 , 11 , 73 , 1 , 1 ,
+618 , 40730 , 11 , 73 , 1 , 1 ,
+618 , 40731 , 11 , 63 , 1 , 1 ,
+618 , 40732 , 10 , 73 , 1 , 1 ,
+618 , 40733 , 10 , 74 , 1 , 1 ,
+618 , 40734 , 10 , 64 , 1 , 1 ,
+618 , 40735 , 10 , 74 , 1 , 1 ,
+618 , 40736 , 10 , 63 , 1 , 1 ,
+618 , 40737 , 10 , 63 , 1 , 1 ,
+618 , 40738 , 10 , 63 , 1 , 1 ,
+618 , 40739 , 8 , 63 , 1 , 1 ,
+618 , 40740 , 7 , 63 , 1 , 1 ,
+618 , 40741 , 7 , 72 , 1 , 1 ,
+618 , 40742 , 7 , 62 , 1 , 1 ,
+618 , 40743 , 7 , 62 , 1 , 1 ,
+618 , 40744 , 7 , 62 , 1 , 1 ,
+618 , 40745 , 7 , 62 , 1 , 1 ,
+618 , 40746 , 6 , 72 , 1 , 1 ,
+618 , 40747 , 6 , 62 , 1 , 1 ,
+618 , 40748 , 6 , 62 , 1 , 1 ,
+618 , 40749 , 5 , 72 , 1 , 1 ,
+618 , 40750 , 4 , 62 , 1 , 1 ,
+618 , 40751 , 4 , 52 , 1 , 1 ,
+618 , 40752 , 4 , 62 , 1 , 1 ,
+618 , 40753 , 4 , 62 , 1 , 1 ,
+618 , 40754 , 4 , 62 , 1 , 1 ,
+618 , 40755 , 4 , 62 , 1 , 1 ,
+618 , 40756 , 4 , 52 , 1 , 1 ,
+618 , 40757 , 4 , 62 , 1 , 1 ,
+618 , 40758 , 4 , 63 , 1 , 1 ,
+618 , 40759 , 2 , 54 , 1 , 1 ,
+618 , 40760 , 2 , 63 , 1 , 1 ,
+618 , 40761 , 2 , 53 , 1 , 1 ,
+618 , 40762 , 2 , 63 , 1 , 1 ,
+618 , 40763 , 2 , 62 , 1 , 1 ,
+618 , 40764 , 2 , 53 , 1 , 1 ,
+618 , 40765 , 2 , 63 , 1 , 1 ,
+618 , 40766 , 2 , 53 , 1 , 1 ,
+618 , 40767 , 2 , 52 , 1 , 1 ,
+618 , 40768 , 2 , 53 , 1 , 1 ,
+618 , 40769 , 329 , 154 , 1 , 1 , 40694 40601 40628 40730 40593 40674 40701 40611 40722 40583 40680 40648 40636 40724 40745 40761 40726 40762 40754 40699 40627 40609 40585 40698 40708 40667 40629 40663 40600 40752 40661 40738 40717 40742 40677 40578 40740 40646 40725 40619 40644 40574 40612 40710 40606 40572 40687 40706 40586 40741 40732 40681 40767 40689 40715 40686 40610 40576 40587 40758 40641 40571 40735 40751 40639 40716 40580 40599 40712 40676 40665 40637 40756 40705 40765 40747 40748 40719 40728 40658 40620 40664 40626 40696 40652 40736 40630 40678 40766 40621 40734 40608 40757 40656 40697 40640 40617 40633 40746 40700 40596 40613 40671 40733 40720 40615 40690 40624 40702 40703 40666 40577 40591 40582 40692 40743 40614 40679 40579 40654 40672 40763 40645 40764 40623 40683 40618 40721 40588 40739 40749 40760 40759 40707 40688 40631 40669 40693 40653 40638 40605 40711 40597 40657 40584 40575 40632 40731 40589 40592 40737 40744 40625 40598 40727 40602 40755 40634 40590 40673 40685 40642 40660 40709 40729 40651 40684 40573 40695 40718 40595 40622 40649 40635 40569 40603 40670 40659 40643 40650 40753 40594 40662 40675 40713 40570 40604 40616 40768 40581 40668 40682 40714 40691 40704 40647 40750 40723 40607 40655
+619 , 40770 , 106 , 41 , 1 , 1 ,
+619 , 40771 , 106 , 41 , 1 , 1 ,
+619 , 40772 , 104 , 41 , 1 , 1 ,
+619 , 40773 , 103 , 65 , 1 , 1 ,
+619 , 40774 , 103 , 41 , 1 , 1 ,
+619 , 40775 , 103 , 65 , 1 , 1 ,
+619 , 40776 , 102 , 65 , 1 , 1 ,
+619 , 40777 , 101 , 64 , 1 , 1 ,
+619 , 40778 , 101 , 41 , 1 , 1 ,
+619 , 40779 , 100 , 41 , 1 , 1 ,
+619 , 40780 , 100 , 41 , 1 , 1 ,
+619 , 40781 , 99 , 53 , 1 , 1 ,
+619 , 40782 , 98 , 41 , 1 , 1 ,
+619 , 40783 , 96 , 41 , 1 , 1 ,
+619 , 40784 , 96 , 64 , 1 , 1 ,
+619 , 40785 , 96 , 41 , 1 , 1 ,
+619 , 40786 , 94 , 41 , 1 , 1 ,
+619 , 40787 , 94 , 41 , 1 , 1 ,
+619 , 40788 , 90 , 52 , 1 , 1 ,
+619 , 40789 , 90 , 52 , 1 , 1 ,
+619 , 40790 , 90 , 52 , 1 , 1 ,
+619 , 40791 , 89 , 52 , 1 , 1 ,
+619 , 40792 , 89 , 52 , 1 , 1 ,
+619 , 40793 , 89 , 52 , 1 , 1 ,
+619 , 40794 , 106 , 106 , 1 , 1 ,
+619 , 40795 , 106 , 41 , 1 , 1 ,
+619 , 40796 , 106 , 41 , 1 , 1 ,
+619 , 40797 , 106 , 41 , 1 , 1 ,
+619 , 40798 , 106 , 41 , 1 , 1 ,
+619 , 40799 , 89 , 52 , 1 , 1 ,
+619 , 40800 , 88 , 52 , 1 , 1 ,
+619 , 40801 , 88 , 52 , 1 , 1 ,
+619 , 40802 , 84 , 52 , 1 , 1 ,
+619 , 40803 , 84 , 52 , 1 , 1 ,
+619 , 40804 , 84 , 52 , 1 , 1 ,
+619 , 40805 , 84 , 62 , 1 , 1 ,
+619 , 40806 , 84 , 62 , 1 , 1 ,
+619 , 40807 , 84 , 62 , 1 , 1 ,
+619 , 40808 , 84 , 62 , 1 , 1 ,
+619 , 40809 , 83 , 62 , 1 , 1 ,
+619 , 40810 , 83 , 62 , 1 , 1 ,
+619 , 40811 , 80 , 41 , 1 , 1 ,
+619 , 40812 , 77 , 41 , 1 , 1 ,
+619 , 40813 , 12 , 106 , 1 , 1 ,
+619 , 40814 , 12 , 79 , 1 , 1 ,
+619 , 40815 , 12 , 102 , 1 , 1 ,
+619 , 40816 , 12 , 81 , 1 , 1 ,
+619 , 40817 , 12 , 80 , 1 , 1 ,
+619 , 40818 , 12 , 74 , 1 , 1 ,
+619 , 40819 , 12 , 81 , 1 , 1 ,
+619 , 40820 , 12 , 78 , 1 , 1 ,
+619 , 40821 , 8 , 284 , 1 , 1 ,
+619 , 40822 , 8 , 325 , 1 , 1 ,
+619 , 40823 , 8 , 213 , 1 , 1 ,
+619 , 40824 , 8 , 304 , 1 , 1 ,
+619 , 40825 , 8 , 274 , 1 , 1 ,
+619 , 40826 , 8 , 315 , 1 , 1 ,
+619 , 40827 , 7 , 325 , 1 , 1 ,
+619 , 40828 , 7 , 325 , 1 , 1 ,
+619 , 40829 , 7 , 325 , 1 , 1 ,
+619 , 40830 , 7 , 325 , 1 , 1 ,
+619 , 40831 , 7 , 315 , 1 , 1 ,
+619 , 40832 , 7 , 325 , 1 , 1 ,
+619 , 40833 , 7 , 335 , 1 , 1 ,
+619 , 40834 , 7 , 335 , 1 , 1 ,
+619 , 40835 , 7 , 335 , 1 , 1 ,
+619 , 40836 , 7 , 334 , 1 , 1 ,
+619 , 40837 , 25 , 130 , 1 , 1 ,
+619 , 40838 , 25 , 129 , 1 , 1 ,
+619 , 40839 , 24 , 131 , 1 , 1 ,
+619 , 40840 , 24 , 195 , 1 , 1 ,
+619 , 40841 , 24 , 173 , 1 , 1 ,
+619 , 40842 , 23 , 150 , 1 , 1 ,
+619 , 40843 , 23 , 142 , 1 , 1 ,
+619 , 40844 , 22 , 152 , 1 , 1 ,
+619 , 40845 , 22 , 159 , 1 , 1 ,
+619 , 40846 , 22 , 152 , 1 , 1 ,
+619 , 40847 , 21 , 161 , 1 , 1 ,
+619 , 40848 , 21 , 224 , 1 , 1 ,
+619 , 40849 , 21 , 222 , 1 , 1 ,
+619 , 40850 , 20 , 181 , 1 , 1 ,
+619 , 40851 , 20 , 184 , 1 , 1 ,
+619 , 40852 , 20 , 182 , 1 , 1 ,
+619 , 40853 , 19 , 182 , 1 , 1 ,
+619 , 40854 , 19 , 193 , 1 , 1 ,
+619 , 40855 , 19 , 193 , 1 , 1 ,
+619 , 40856 , 18 , 194 , 1 , 1 ,
+619 , 40857 , 18 , 225 , 1 , 1 ,
+619 , 40858 , 18 , 194 , 1 , 1 ,
+619 , 40859 , 17 , 236 , 1 , 1 ,
+619 , 40860 , 17 , 193 , 1 , 1 ,
+619 , 40861 , 17 , 235 , 1 , 1 ,
+619 , 40862 , 16 , 205 , 1 , 1 ,
+619 , 40863 , 16 , 235 , 1 , 1 ,
+619 , 40864 , 16 , 234 , 1 , 1 ,
+619 , 40865 , 15 , 215 , 1 , 1 ,
+619 , 40866 , 15 , 236 , 1 , 1 ,
+619 , 40867 , 15 , 216 , 1 , 1 ,
+619 , 40868 , 14 , 208 , 1 , 1 ,
+619 , 40869 , 14 , 208 , 1 , 1 ,
+619 , 40870 , 14 , 197 , 1 , 1 ,
+619 , 40871 , 13 , 219 , 1 , 1 ,
+619 , 40872 , 13 , 196 , 1 , 1 ,
+619 , 40873 , 13 , 208 , 1 , 1 ,
+619 , 40874 , 12 , 208 , 1 , 1 ,
+619 , 40875 , 12 , 251 , 1 , 1 ,
+619 , 40876 , 12 , 198 , 1 , 1 ,
+619 , 40877 , 11 , 197 , 1 , 1 ,
+619 , 40878 , 11 , 208 , 1 , 1 ,
+619 , 40879 , 11 , 196 , 1 , 1 ,
+619 , 40880 , 11 , 228 , 1 , 1 ,
+619 , 40881 , 11 , 214 , 1 , 1 ,
+619 , 40882 , 10 , 188 , 1 , 1 ,
+619 , 40883 , 10 , 172 , 1 , 1 ,
+619 , 40884 , 10 , 165 , 1 , 1 ,
+619 , 40885 , 9 , 154 , 1 , 1 ,
+619 , 40886 , 9 , 139 , 1 , 1 ,
+619 , 40887 , 9 , 149 , 1 , 1 ,
+619 , 40888 , 9 , 182 , 1 , 1 ,
+619 , 40889 , 8 , 129 , 1 , 1 ,
+619 , 40890 , 8 , 138 , 1 , 1 ,
+619 , 40891 , 8 , 161 , 1 , 1 ,
+619 , 40892 , 7 , 120 , 1 , 1 ,
+619 , 40893 , 7 , 118 , 1 , 1 ,
+619 , 40894 , 7 , 107 , 1 , 1 ,
+619 , 40895 , 6 , 141 , 1 , 1 ,
+619 , 40896 , 6 , 152 , 1 , 1 ,
+619 , 40897 , 6 , 98 , 1 , 1 ,
+619 , 40898 , 5 , 109 , 1 , 1 ,
+619 , 40899 , 5 , 110 , 1 , 1 ,
+619 , 40900 , 5 , 100 , 1 , 1 ,
+619 , 40901 , 29 , 72 , 1 , 1 ,
+619 , 40902 , 29 , 72 , 1 , 1 ,
+619 , 40903 , 29 , 72 , 1 , 1 ,
+619 , 40904 , 29 , 72 , 1 , 1 ,
+619 , 40905 , 28 , 72 , 1 , 1 ,
+619 , 40906 , 28 , 72 , 1 , 1 ,
+619 , 40907 , 28 , 62 , 1 , 1 ,
+619 , 40908 , 28 , 73 , 1 , 1 ,
+619 , 40909 , 28 , 72 , 1 , 1 ,
+619 , 40910 , 25 , 72 , 1 , 1 ,
+619 , 40911 , 25 , 72 , 1 , 1 ,
+619 , 40912 , 25 , 72 , 1 , 1 ,
+619 , 40913 , 25 , 72 , 1 , 1 ,
+619 , 40914 , 24 , 82 , 1 , 1 ,
+619 , 40915 , 24 , 72 , 1 , 1 ,
+619 , 40916 , 24 , 72 , 1 , 1 ,
+619 , 40917 , 24 , 72 , 1 , 1 ,
+619 , 40918 , 23 , 72 , 1 , 1 ,
+619 , 40919 , 23 , 72 , 1 , 1 ,
+619 , 40920 , 20 , 82 , 1 , 1 ,
+619 , 40921 , 20 , 72 , 1 , 1 ,
+619 , 40922 , 19 , 82 , 1 , 1 ,
+619 , 40923 , 19 , 72 , 1 , 1 ,
+619 , 40924 , 19 , 72 , 1 , 1 ,
+619 , 40925 , 18 , 62 , 1 , 1 ,
+619 , 40926 , 18 , 72 , 1 , 1 ,
+619 , 40927 , 18 , 72 , 1 , 1 ,
+619 , 40928 , 17 , 83 , 1 , 1 ,
+619 , 40929 , 17 , 73 , 1 , 1 ,
+619 , 40930 , 13 , 82 , 1 , 1 ,
+619 , 40931 , 13 , 82 , 1 , 1 ,
+619 , 40932 , 13 , 82 , 1 , 1 ,
+619 , 40933 , 13 , 83 , 1 , 1 ,
+619 , 40934 , 12 , 72 , 1 , 1 ,
+619 , 40935 , 12 , 82 , 1 , 1 ,
+619 , 40936 , 12 , 72 , 1 , 1 ,
+619 , 40937 , 12 , 82 , 1 , 1 ,
+619 , 40938 , 11 , 82 , 1 , 1 ,
+619 , 40939 , 11 , 82 , 1 , 1 ,
+619 , 40940 , 8 , 82 , 1 , 1 ,
+619 , 40941 , 8 , 82 , 1 , 1 ,
+619 , 40942 , 7 , 83 , 1 , 1 ,
+619 , 40943 , 7 , 62 , 1 , 1 ,
+619 , 40944 , 7 , 62 , 1 , 1 ,
+619 , 40945 , 7 , 73 , 1 , 1 ,
+619 , 40946 , 7 , 62 , 1 , 1 ,
+619 , 40947 , 7 , 72 , 1 , 1 ,
+619 , 40948 , 7 , 72 , 1 , 1 ,
+619 , 40949 , 7 , 82 , 1 , 1 ,
+619 , 40950 , 5 , 93 , 1 , 1 ,
+619 , 40951 , 5 , 72 , 1 , 1 ,
+619 , 40952 , 5 , 62 , 1 , 1 ,
+619 , 40953 , 5 , 72 , 1 , 1 ,
+619 , 40954 , 4 , 72 , 1 , 1 ,
+619 , 40955 , 4 , 72 , 1 , 1 ,
+619 , 40956 , 4 , 72 , 1 , 1 ,
+619 , 40957 , 4 , 82 , 1 , 1 ,
+619 , 40958 , 4 , 72 , 1 , 1 ,
+619 , 40959 , 4 , 72 , 1 , 1 ,
+619 , 40960 , 2 , 72 , 1 , 1 ,
+619 , 40961 , 2 , 82 , 1 , 1 ,
+619 , 40962 , 2 , 72 , 1 , 1 ,
+619 , 40963 , 2 , 72 , 1 , 1 ,
+619 , 40964 , 2 , 72 , 1 , 1 ,
+619 , 40965 , 2 , 72 , 1 , 1 ,
+619 , 40966 , 2 , 62 , 1 , 1 ,
+619 , 40967 , 2 , 72 , 1 , 1 ,
+619 , 40968 , 2 , 72 , 1 , 1 ,
+619 , 40969 , 2 , 72 , 1 , 1 ,
+619 , 40970 , 376 , 164 , 1 , 1 , 40789 40822 40845 40882 40780 40889 40874 40799 40785 40819 40887 40950 40959 40831 40896 40931 40788 40813 40818 40875 40948 40862 40902 40864 40926 40840 40920 40965 40820 40936 40856 40815 40942 40812 40834 40848 40830 40837 40791 40884 40969 40782 40854 40964 40851 40899 40909 40937 40915 40918 40838 40802 40863 40868 40808 40858 40772 40849 40853 40949 40895 40922 40943 40796 40880 40779 40869 40904 40855 40878 40921 40953 40867 40783 40919 40774 40932 40870 40908 40800 40770 40828 40913 40798 40842 40814 40938 40906 40781 40917 40939 40945 40787 40873 40805 40910 40852 40916 40857 40784 40790 40786 40832 40958 40825 40794 40885 40912 40859 40954 40914 40901 40811 40846 40866 40801 40886 40944 40952 40792 40797 40951 40893 40927 40892 40835 40956 40809 40826 40778 40823 40816 40829 40891 40966 40960 40905 40907 40827 40933 40771 40957 40860 40777 40824 40861 40890 40847 40833 40876 40850 40967 40844 40843 40883 40923 40925 40865 40817 40955 40804 40793 40839 40941 40773 40810 40930 40841 40897 40894 40968 40911 40879 40871 40961 40806 40795 40935 40934 40821 40872 40963 40803 40898 40881 40903 40947 40888 40946 40900 40807 40775 40940 40877 40962 40928 40776 40929 40924 40836
+620 , 40971 , 16 , 31 , 1 , 1 ,
+620 , 40972 , 15 , 31 , 1 , 1 ,
+620 , 40973 , 15 , 31 , 1 , 1 ,
+620 , 40974 , 15 , 31 , 1 , 1 ,
+620 , 40975 , 15 , 31 , 1 , 1 ,
+620 , 40976 , 15 , 31 , 1 , 1 ,
+620 , 40977 , 15 , 31 , 1 , 1 ,
+620 , 40978 , 14 , 31 , 1 , 1 ,
+620 , 40979 , 13 , 31 , 1 , 1 ,
+620 , 40980 , 13 , 31 , 1 , 1 ,
+620 , 40981 , 9 , 41 , 1 , 1 ,
+620 , 40982 , 8 , 31 , 1 , 1 ,
+620 , 40983 , 8 , 31 , 1 , 1 ,
+620 , 40984 , 8 , 31 , 1 , 1 ,
+620 , 40985 , 8 , 41 , 1 , 1 ,
+620 , 40986 , 7 , 31 , 1 , 1 ,
+620 , 40987 , 7 , 31 , 1 , 1 ,
+620 , 40988 , 6 , 31 , 1 , 1 ,
+620 , 40989 , 6 , 31 , 1 , 1 ,
+620 , 40990 , 6 , 31 , 1 , 1 ,
+620 , 40991 , 5 , 31 , 1 , 1 ,
+620 , 40992 , 4 , 31 , 1 , 1 ,
+620 , 40993 , 4 , 41 , 1 , 1 ,
+620 , 40994 , 4 , 41 , 1 , 1 ,
+620 , 40995 , 4 , 31 , 1 , 1 ,
+620 , 40996 , 4 , 31 , 1 , 1 ,
+620 , 40997 , 4 , 41 , 1 , 1 ,
+620 , 40998 , 4 , 41 , 1 , 1 ,
+620 , 40999 , 4 , 41 , 1 , 1 ,
+620 , 41000 , 4 , 31 , 1 , 1 ,
+620 , 41001 , 3 , 41 , 1 , 1 ,
+620 , 41002 , 3 , 31 , 1 , 1 ,
+620 , 41003 , 3 , 41 , 1 , 1 ,
+620 , 41004 , 3 , 31 , 1 , 1 ,
+620 , 41005 , 3 , 41 , 1 , 1 ,
+620 , 41006 , 3 , 31 , 1 , 1 ,
+620 , 41007 , 3 , 31 , 1 , 1 ,
+620 , 41008 , 3 , 31 , 1 , 1 ,
+620 , 41009 , 3 , 42 , 1 , 1 ,
+620 , 41010 , 3 , 31 , 1 , 1 ,
+620 , 41011 , 68 , 21 , 1 , 1 , 40990 40986 40995 40983 41010 40975 40972 40988 40982 40976 41005 40992 40971 40977 41008 41000 41009 40994 41006 41003 40997 40987 40978 40979 40974 40973 40996 40984 40993 40998 41001 40985 41007 41004 41002 40989 40991 40999 40981 40980
+621 , 41012 , 12 , 31 , 1 , 1 ,
+621 , 41013 , 12 , 31 , 1 , 1 ,
+621 , 41014 , 12 , 21 , 1 , 1 ,
+621 , 41015 , 12 , 31 , 1 , 1 ,
+621 , 41016 , 12 , 31 , 1 , 1 ,
+621 , 41017 , 12 , 31 , 1 , 1 ,
+621 , 41018 , 12 , 31 , 1 , 1 ,
+621 , 41019 , 11 , 31 , 1 , 1 ,
+621 , 41020 , 11 , 31 , 1 , 1 ,
+621 , 41021 , 11 , 31 , 1 , 1 ,
+621 , 41022 , 10 , 41 , 1 , 1 ,
+621 , 41023 , 9 , 31 , 1 , 1 ,
+621 , 41024 , 9 , 41 , 1 , 1 ,
+621 , 41025 , 9 , 41 , 1 , 1 ,
+621 , 41026 , 9 , 41 , 1 , 1 ,
+621 , 41027 , 9 , 41 , 1 , 1 ,
+621 , 41028 , 9 , 31 , 1 , 1 ,
+621 , 41029 , 9 , 41 , 1 , 1 ,
+621 , 41030 , 9 , 31 , 1 , 1 ,
+621 , 41031 , 8 , 41 , 1 , 1 ,
+621 , 41032 , 7 , 31 , 1 , 1 ,
+621 , 41033 , 7 , 31 , 1 , 1 ,
+621 , 41034 , 7 , 41 , 1 , 1 ,
+621 , 41035 , 7 , 41 , 1 , 1 ,
+621 , 41036 , 7 , 31 , 1 , 1 ,
+621 , 41037 , 7 , 31 , 1 , 1 ,
+621 , 41038 , 7 , 41 , 1 , 1 ,
+621 , 41039 , 7 , 41 , 1 , 1 ,
+621 , 41040 , 7 , 41 , 1 , 1 ,
+621 , 41041 , 6 , 31 , 1 , 1 ,
+621 , 41042 , 5 , 41 , 1 , 1 ,
+621 , 41043 , 5 , 41 , 1 , 1 ,
+621 , 41044 , 5 , 31 , 1 , 1 ,
+621 , 41045 , 5 , 31 , 1 , 1 ,
+621 , 41046 , 5 , 41 , 1 , 1 ,
+621 , 41047 , 5 , 31 , 1 , 1 ,
+621 , 41048 , 5 , 31 , 1 , 1 ,
+621 , 41049 , 5 , 31 , 1 , 1 ,
+621 , 41050 , 5 , 41 , 1 , 1 ,
+621 , 41051 , 5 , 31 , 1 , 1 ,
+621 , 41052 , 65 , 21 , 1 , 1 , 41045 41026 41023 41048 41024 41046 41049 41043 41032 41050 41020 41041 41025 41037 41019 41051 41029 41031 41034 41027 41038 41021 41036 41013 41012 41015 41014 41033 41018 41022 41030 41044 41017 41047 41039 41016 41035 41040 41042 41028
+622 , 41053 , 70 , 52 , 1 , 1 ,
+622 , 41054 , 69 , 42 , 1 , 1 ,
+622 , 41055 , 69 , 52 , 1 , 1 ,
+622 , 41056 , 69 , 52 , 1 , 1 ,
+622 , 41057 , 69 , 52 , 1 , 1 ,
+622 , 41058 , 69 , 52 , 1 , 1 ,
+622 , 41059 , 67 , 41 , 1 , 1 ,
+622 , 41060 , 66 , 41 , 1 , 1 ,
+622 , 41061 , 66 , 52 , 1 , 1 ,
+622 , 41062 , 66 , 52 , 1 , 1 ,
+622 , 41063 , 66 , 52 , 1 , 1 ,
+622 , 41064 , 66 , 52 , 1 , 1 ,
+622 , 41065 , 65 , 52 , 1 , 1 ,
+622 , 41066 , 61 , 41 , 1 , 1 ,
+622 , 41067 , 61 , 41 , 1 , 1 ,
+622 , 41068 , 60 , 52 , 1 , 1 ,
+622 , 41069 , 60 , 52 , 1 , 1 ,
+622 , 41070 , 58 , 52 , 1 , 1 ,
+622 , 41071 , 58 , 62 , 1 , 1 ,
+622 , 41072 , 58 , 52 , 1 , 1 ,
+622 , 41073 , 58 , 52 , 1 , 1 ,
+622 , 41074 , 58 , 41 , 1 , 1 ,
+622 , 41075 , 65 , 52 , 1 , 1 ,
+622 , 41076 , 65 , 52 , 1 , 1 ,
+622 , 41077 , 57 , 41 , 1 , 1 ,
+622 , 41078 , 57 , 52 , 1 , 1 ,
+622 , 41079 , 64 , 41 , 1 , 1 ,
+622 , 41080 , 63 , 52 , 1 , 1 ,
+622 , 41081 , 63 , 52 , 1 , 1 ,
+622 , 41082 , 63 , 52 , 1 , 1 ,
+622 , 41083 , 62 , 52 , 1 , 1 ,
+622 , 41084 , 62 , 52 , 1 , 1 ,
+622 , 41085 , 61 , 52 , 1 , 1 ,
+622 , 41086 , 70 , 52 , 1 , 1 ,
+622 , 41087 , 70 , 41 , 1 , 1 ,
+622 , 41088 , 70 , 52 , 1 , 1 ,
+622 , 41089 , 70 , 52 , 1 , 1 ,
+622 , 41090 , 57 , 52 , 1 , 1 ,
+622 , 41091 , 57 , 42 , 1 , 1 ,
+622 , 41092 , 56 , 41 , 1 , 1 ,
+622 , 41093 , 10 , 43 , 1 , 1 ,
+622 , 41094 , 10 , 44 , 1 , 1 ,
+622 , 41095 , 10 , 32 , 1 , 1 ,
+622 , 41096 , 10 , 43 , 1 , 1 ,
+622 , 41097 , 10 , 45 , 1 , 1 ,
+622 , 41098 , 10 , 43 , 1 , 1 ,
+622 , 41099 , 10 , 32 , 1 , 1 ,
+622 , 41100 , 10 , 43 , 1 , 1 ,
+622 , 41101 , 7 , 186 , 1 , 1 ,
+622 , 41102 , 7 , 196 , 1 , 1 ,
+622 , 41103 , 7 , 196 , 1 , 1 ,
+622 , 41104 , 7 , 196 , 1 , 1 ,
+622 , 41105 , 7 , 196 , 1 , 1 ,
+622 , 41106 , 7 , 174 , 1 , 1 ,
+622 , 41107 , 7 , 175 , 1 , 1 ,
+622 , 41108 , 7 , 196 , 1 , 1 ,
+622 , 41109 , 7 , 196 , 1 , 1 ,
+622 , 41110 , 7 , 186 , 1 , 1 ,
+622 , 41111 , 7 , 196 , 1 , 1 ,
+622 , 41112 , 7 , 196 , 1 , 1 ,
+622 , 41113 , 7 , 186 , 1 , 1 ,
+622 , 41114 , 7 , 175 , 1 , 1 ,
+622 , 41115 , 7 , 196 , 1 , 1 ,
+622 , 41116 , 7 , 196 , 1 , 1 ,
+622 , 41117 , 25 , 54 , 1 , 1 ,
+622 , 41118 , 25 , 67 , 1 , 1 ,
+622 , 41119 , 25 , 65 , 1 , 1 ,
+622 , 41120 , 25 , 100 , 1 , 1 ,
+622 , 41121 , 24 , 110 , 1 , 1 ,
+622 , 41122 , 24 , 77 , 1 , 1 ,
+622 , 41123 , 24 , 65 , 1 , 1 ,
+622 , 41124 , 23 , 64 , 1 , 1 ,
+622 , 41125 , 23 , 64 , 1 , 1 ,
+622 , 41126 , 23 , 64 , 1 , 1 ,
+622 , 41127 , 22 , 116 , 1 , 1 ,
+622 , 41128 , 22 , 76 , 1 , 1 ,
+622 , 41129 , 22 , 75 , 1 , 1 ,
+622 , 41130 , 21 , 116 , 1 , 1 ,
+622 , 41131 , 21 , 83 , 1 , 1 ,
+622 , 41132 , 20 , 75 , 1 , 1 ,
+622 , 41133 , 20 , 86 , 1 , 1 ,
+622 , 41134 , 20 , 96 , 1 , 1 ,
+622 , 41135 , 19 , 96 , 1 , 1 ,
+622 , 41136 , 19 , 152 , 1 , 1 ,
+622 , 41137 , 19 , 152 , 1 , 1 ,
+622 , 41138 , 19 , 110 , 1 , 1 ,
+622 , 41139 , 18 , 100 , 1 , 1 ,
+622 , 41140 , 18 , 100 , 1 , 1 ,
+622 , 41141 , 18 , 109 , 1 , 1 ,
+622 , 41142 , 17 , 99 , 1 , 1 ,
+622 , 41143 , 17 , 98 , 1 , 1 ,
+622 , 41144 , 17 , 151 , 1 , 1 ,
+622 , 41145 , 16 , 110 , 1 , 1 ,
+622 , 41146 , 16 , 120 , 1 , 1 ,
+622 , 41147 , 16 , 121 , 1 , 1 ,
+622 , 41148 , 15 , 171 , 1 , 1 ,
+622 , 41149 , 15 , 110 , 1 , 1 ,
+622 , 41150 , 15 , 110 , 1 , 1 ,
+622 , 41151 , 14 , 110 , 1 , 1 ,
+622 , 41152 , 14 , 151 , 1 , 1 ,
+622 , 41153 , 14 , 152 , 1 , 1 ,
+622 , 41154 , 14 , 103 , 1 , 1 ,
+622 , 41155 , 13 , 103 , 1 , 1 ,
+622 , 41156 , 13 , 111 , 1 , 1 ,
+622 , 41157 , 13 , 110 , 1 , 1 ,
+622 , 41158 , 13 , 110 , 1 , 1 ,
+622 , 41159 , 12 , 113 , 1 , 1 ,
+622 , 41160 , 12 , 142 , 1 , 1 ,
+622 , 41161 , 12 , 110 , 1 , 1 ,
+622 , 41162 , 11 , 113 , 1 , 1 ,
+622 , 41163 , 11 , 131 , 1 , 1 ,
+622 , 41164 , 11 , 104 , 1 , 1 ,
+622 , 41165 , 10 , 104 , 1 , 1 ,
+622 , 41166 , 10 , 88 , 1 , 1 ,
+622 , 41167 , 10 , 90 , 1 , 1 ,
+622 , 41168 , 10 , 109 , 1 , 1 ,
+622 , 41169 , 9 , 88 , 1 , 1 ,
+622 , 41170 , 9 , 77 , 1 , 1 ,
+622 , 41171 , 9 , 78 , 1 , 1 ,
+622 , 41172 , 8 , 78 , 1 , 1 ,
+622 , 41173 , 8 , 68 , 1 , 1 ,
+622 , 41174 , 8 , 68 , 1 , 1 ,
+622 , 41175 , 7 , 69 , 1 , 1 ,
+622 , 41176 , 7 , 79 , 1 , 1 ,
+622 , 41177 , 7 , 65 , 1 , 1 ,
+622 , 41178 , 6 , 55 , 1 , 1 ,
+622 , 41179 , 6 , 55 , 1 , 1 ,
+622 , 41180 , 6 , 54 , 1 , 1 ,
+622 , 41181 , 25 , 53 , 1 , 1 ,
+622 , 41182 , 25 , 53 , 1 , 1 ,
+622 , 41183 , 23 , 64 , 1 , 1 ,
+622 , 41184 , 23 , 63 , 1 , 1 ,
+622 , 41185 , 23 , 52 , 1 , 1 ,
+622 , 41186 , 23 , 62 , 1 , 1 ,
+622 , 41187 , 22 , 52 , 1 , 1 ,
+622 , 41188 , 22 , 62 , 1 , 1 ,
+622 , 41189 , 22 , 52 , 1 , 1 ,
+622 , 41190 , 22 , 62 , 1 , 1 ,
+622 , 41191 , 22 , 72 , 1 , 1 ,
+622 , 41192 , 21 , 52 , 1 , 1 ,
+622 , 41193 , 19 , 72 , 1 , 1 ,
+622 , 41194 , 19 , 62 , 1 , 1 ,
+622 , 41195 , 19 , 52 , 1 , 1 ,
+622 , 41196 , 19 , 62 , 1 , 1 ,
+622 , 41197 , 19 , 52 , 1 , 1 ,
+622 , 41198 , 18 , 52 , 1 , 1 ,
+622 , 41199 , 18 , 62 , 1 , 1 ,
+622 , 41200 , 18 , 52 , 1 , 1 ,
+622 , 41201 , 18 , 62 , 1 , 1 ,
+622 , 41202 , 18 , 72 , 1 , 1 ,
+622 , 41203 , 16 , 62 , 1 , 1 ,
+622 , 41204 , 16 , 52 , 1 , 1 ,
+622 , 41205 , 15 , 72 , 1 , 1 ,
+622 , 41206 , 15 , 72 , 1 , 1 ,
+622 , 41207 , 15 , 62 , 1 , 1 ,
+622 , 41208 , 15 , 72 , 1 , 1 ,
+622 , 41209 , 15 , 62 , 1 , 1 ,
+622 , 41210 , 15 , 73 , 1 , 1 ,
+622 , 41211 , 15 , 52 , 1 , 1 ,
+622 , 41212 , 15 , 52 , 1 , 1 ,
+622 , 41213 , 11 , 52 , 1 , 1 ,
+622 , 41214 , 11 , 41 , 1 , 1 ,
+622 , 41215 , 11 , 62 , 1 , 1 ,
+622 , 41216 , 11 , 62 , 1 , 1 ,
+622 , 41217 , 11 , 82 , 1 , 1 ,
+622 , 41218 , 11 , 62 , 1 , 1 ,
+622 , 41219 , 11 , 41 , 1 , 1 ,
+622 , 41220 , 11 , 72 , 1 , 1 ,
+622 , 41221 , 10 , 41 , 1 , 1 ,
+622 , 41222 , 10 , 41 , 1 , 1 ,
+622 , 41223 , 8 , 52 , 1 , 1 ,
+622 , 41224 , 8 , 52 , 1 , 1 ,
+622 , 41225 , 8 , 52 , 1 , 1 ,
+622 , 41226 , 8 , 62 , 1 , 1 ,
+622 , 41227 , 8 , 41 , 1 , 1 ,
+622 , 41228 , 7 , 52 , 1 , 1 ,
+622 , 41229 , 7 , 41 , 1 , 1 ,
+622 , 41230 , 7 , 41 , 1 , 1 ,
+622 , 41231 , 7 , 42 , 1 , 1 ,
+622 , 41232 , 7 , 42 , 1 , 1 ,
+622 , 41233 , 6 , 52 , 1 , 1 ,
+622 , 41234 , 5 , 52 , 1 , 1 ,
+622 , 41235 , 5 , 41 , 1 , 1 ,
+622 , 41236 , 5 , 41 , 1 , 1 ,
+622 , 41237 , 5 , 41 , 1 , 1 ,
+622 , 41238 , 5 , 41 , 1 , 1 ,
+622 , 41239 , 5 , 42 , 1 , 1 ,
+622 , 41240 , 5 , 42 , 1 , 1 ,
+622 , 41241 , 5 , 42 , 1 , 1 ,
+622 , 41242 , 4 , 52 , 1 , 1 ,
+622 , 41243 , 2 , 41 , 1 , 1 ,
+622 , 41244 , 2 , 41 , 1 , 1 ,
+622 , 41245 , 2 , 41 , 1 , 1 ,
+622 , 41246 , 2 , 41 , 1 , 1 ,
+622 , 41247 , 2 , 41 , 1 , 1 ,
+622 , 41248 , 2 , 41 , 1 , 1 ,
+622 , 41249 , 2 , 41 , 1 , 1 ,
+622 , 41250 , 2 , 41 , 1 , 1 ,
+622 , 41251 , 2 , 41 , 1 , 1 ,
+622 , 41252 , 2 , 41 , 1 , 1 ,
+622 , 41253 , 234 , 82 , 1 , 1 , 41177 41057 41215 41153 41118 41088 41228 41230 41221 41113 41229 41242 41186 41218 41207 41106 41185 41225 41102 41126 41213 41252 41142 41222 41076 41238 41193 41226 41080 41234 41204 41152 41146 41103 41139 41122 41074 41094 41200 41237 41205 41123 41170 41143 41172 41220 41203 41247 41082 41073 41101 41240 41158 41137 41239 41178 41120 41182 41246 41055 41133 41060 41150 41138 41071 41244 41092 41208 41119 41171 41100 41211 41231 41131 41098 41155 41161 41192 41243 41124 41181 41127 41196 41201 41160 41168 41141 41175 41114 41116 41085 41169 41245 41214 41066 41132 41084 41249 41202 41248 41149 41212 41087 41075 41095 41174 41187 41065 41062 41235 41232 41224 41081 41173 41070 41090 41130 41053 41061 41191 41197 41151 41162 41108 41112 41194 41188 41063 41144 41209 41129 41219 41236 41216 41227 41110 41104 41058 41086 41069 41115 41125 41148 41167 41067 41117 41121 41109 41068 41097 41180 41083 41251 41198 41136 41135 41078 41154 41233 41107 41064 41072 41145 41128 41059 41089 41157 41096 41179 41217 41105 41210 41199 41183 41195 41079 41241 41166 41250 41163 41147 41093 41156 41190 41056 41111 41091 41223 41054 41077 41159 41164 41099 41206 41140 41184 41189 41176 41165 41134
+623 , 41254 , 89 , 52 , 1 , 1 ,
+623 , 41255 , 89 , 41 , 1 , 1 ,
+623 , 41256 , 88 , 41 , 1 , 1 ,
+623 , 41257 , 87 , 52 , 1 , 1 ,
+623 , 41258 , 89 , 52 , 1 , 1 ,
+623 , 41259 , 81 , 52 , 1 , 1 ,
+623 , 41260 , 81 , 52 , 1 , 1 ,
+623 , 41261 , 81 , 41 , 1 , 1 ,
+623 , 41262 , 81 , 41 , 1 , 1 ,
+623 , 41263 , 81 , 52 , 1 , 1 ,
+623 , 41264 , 81 , 42 , 1 , 1 ,
+623 , 41265 , 81 , 52 , 1 , 1 ,
+623 , 41266 , 81 , 52 , 1 , 1 ,
+623 , 41267 , 81 , 43 , 1 , 1 ,
+623 , 41268 , 81 , 32 , 1 , 1 ,
+623 , 41269 , 79 , 31 , 1 , 1 ,
+623 , 41270 , 101 , 41 , 1 , 1 ,
+623 , 41271 , 101 , 41 , 1 , 1 ,
+623 , 41272 , 101 , 41 , 1 , 1 ,
+623 , 41273 , 101 , 64 , 1 , 1 ,
+623 , 41274 , 98 , 52 , 1 , 1 ,
+623 , 41275 , 98 , 51 , 1 , 1 ,
+623 , 41276 , 97 , 52 , 1 , 1 ,
+623 , 41277 , 96 , 52 , 1 , 1 ,
+623 , 41278 , 95 , 52 , 1 , 1 ,
+623 , 41279 , 95 , 64 , 1 , 1 ,
+623 , 41280 , 95 , 41 , 1 , 1 ,
+623 , 41281 , 95 , 64 , 1 , 1 ,
+623 , 41282 , 93 , 64 , 1 , 1 ,
+623 , 41283 , 92 , 52 , 1 , 1 ,
+623 , 41284 , 92 , 52 , 1 , 1 ,
+623 , 41285 , 92 , 52 , 1 , 1 ,
+623 , 41286 , 92 , 52 , 1 , 1 ,
+623 , 41287 , 92 , 52 , 1 , 1 ,
+623 , 41288 , 91 , 52 , 1 , 1 ,
+623 , 41289 , 91 , 52 , 1 , 1 ,
+623 , 41290 , 89 , 52 , 1 , 1 ,
+623 , 41291 , 79 , 41 , 1 , 1 ,
+623 , 41292 , 78 , 41 , 1 , 1 ,
+623 , 41293 , 78 , 41 , 1 , 1 ,
+623 , 41294 , 78 , 41 , 1 , 1 ,
+623 , 41295 , 14 , 70 , 1 , 1 ,
+623 , 41296 , 14 , 71 , 1 , 1 ,
+623 , 41297 , 14 , 79 , 1 , 1 ,
+623 , 41298 , 14 , 88 , 1 , 1 ,
+623 , 41299 , 14 , 75 , 1 , 1 ,
+623 , 41300 , 14 , 79 , 1 , 1 ,
+623 , 41301 , 14 , 78 , 1 , 1 ,
+623 , 41302 , 14 , 69 , 1 , 1 ,
+623 , 41303 , 9 , 264 , 1 , 1 ,
+623 , 41304 , 9 , 328 , 1 , 1 ,
+623 , 41305 , 9 , 348 , 1 , 1 ,
+623 , 41306 , 9 , 341 , 1 , 1 ,
+623 , 41307 , 9 , 307 , 1 , 1 ,
+623 , 41308 , 9 , 328 , 1 , 1 ,
+623 , 41309 , 8 , 328 , 1 , 1 ,
+623 , 41310 , 8 , 338 , 1 , 1 ,
+623 , 41311 , 8 , 338 , 1 , 1 ,
+623 , 41312 , 8 , 351 , 1 , 1 ,
+623 , 41313 , 8 , 297 , 1 , 1 ,
+623 , 41314 , 8 , 341 , 1 , 1 ,
+623 , 41315 , 8 , 348 , 1 , 1 ,
+623 , 41316 , 8 , 351 , 1 , 1 ,
+623 , 41317 , 8 , 348 , 1 , 1 ,
+623 , 41318 , 8 , 351 , 1 , 1 ,
+623 , 41319 , 26 , 161 , 1 , 1 ,
+623 , 41320 , 25 , 161 , 1 , 1 ,
+623 , 41321 , 25 , 119 , 1 , 1 ,
+623 , 41322 , 25 , 128 , 1 , 1 ,
+623 , 41323 , 24 , 140 , 1 , 1 ,
+623 , 41324 , 24 , 141 , 1 , 1 ,
+623 , 41325 , 24 , 150 , 1 , 1 ,
+623 , 41326 , 23 , 151 , 1 , 1 ,
+623 , 41327 , 23 , 141 , 1 , 1 ,
+623 , 41328 , 22 , 151 , 1 , 1 ,
+623 , 41329 , 22 , 150 , 1 , 1 ,
+623 , 41330 , 22 , 204 , 1 , 1 ,
+623 , 41331 , 21 , 204 , 1 , 1 ,
+623 , 41332 , 21 , 173 , 1 , 1 ,
+623 , 41333 , 21 , 173 , 1 , 1 ,
+623 , 41334 , 20 , 184 , 1 , 1 ,
+623 , 41335 , 20 , 183 , 1 , 1 ,
+623 , 41336 , 19 , 194 , 1 , 1 ,
+623 , 41337 , 19 , 193 , 1 , 1 ,
+623 , 41338 , 18 , 255 , 1 , 1 ,
+623 , 41339 , 18 , 246 , 1 , 1 ,
+623 , 41340 , 18 , 198 , 1 , 1 ,
+623 , 41341 , 18 , 195 , 1 , 1 ,
+623 , 41342 , 18 , 190 , 1 , 1 ,
+623 , 41343 , 17 , 193 , 1 , 1 ,
+623 , 41344 , 17 , 193 , 1 , 1 ,
+623 , 41345 , 17 , 202 , 1 , 1 ,
+623 , 41346 , 17 , 254 , 1 , 1 ,
+623 , 41347 , 16 , 223 , 1 , 1 ,
+623 , 41348 , 16 , 276 , 1 , 1 ,
+623 , 41349 , 16 , 234 , 1 , 1 ,
+623 , 41350 , 15 , 214 , 1 , 1 ,
+623 , 41351 , 15 , 276 , 1 , 1 ,
+623 , 41352 , 15 , 213 , 1 , 1 ,
+623 , 41353 , 14 , 202 , 1 , 1 ,
+623 , 41354 , 14 , 235 , 1 , 1 ,
+623 , 41355 , 14 , 193 , 1 , 1 ,
+623 , 41356 , 13 , 193 , 1 , 1 ,
+623 , 41357 , 13 , 203 , 1 , 1 ,
+623 , 41358 , 13 , 205 , 1 , 1 ,
+623 , 41359 , 12 , 203 , 1 , 1 ,
+623 , 41360 , 12 , 203 , 1 , 1 ,
+623 , 41361 , 12 , 196 , 1 , 1 ,
+623 , 41362 , 11 , 194 , 1 , 1 ,
+623 , 41363 , 11 , 225 , 1 , 1 ,
+623 , 41364 , 11 , 236 , 1 , 1 ,
+623 , 41365 , 10 , 184 , 1 , 1 ,
+623 , 41366 , 10 , 184 , 1 , 1 ,
+623 , 41367 , 10 , 173 , 1 , 1 ,
+623 , 41368 , 10 , 158 , 1 , 1 ,
+623 , 41369 , 9 , 161 , 1 , 1 ,
+623 , 41370 , 9 , 174 , 1 , 1 ,
+623 , 41371 , 9 , 175 , 1 , 1 ,
+623 , 41372 , 9 , 140 , 1 , 1 ,
+623 , 41373 , 9 , 129 , 1 , 1 ,
+623 , 41374 , 8 , 129 , 1 , 1 ,
+623 , 41375 , 8 , 120 , 1 , 1 ,
+623 , 41376 , 8 , 120 , 1 , 1 ,
+623 , 41377 , 7 , 121 , 1 , 1 ,
+623 , 41378 , 7 , 131 , 1 , 1 ,
+623 , 41379 , 7 , 133 , 1 , 1 ,
+623 , 41380 , 6 , 108 , 1 , 1 ,
+623 , 41381 , 6 , 108 , 1 , 1 ,
+623 , 41382 , 6 , 108 , 1 , 1 ,
+623 , 41383 , 28 , 72 , 1 , 1 ,
+623 , 41384 , 26 , 52 , 1 , 1 ,
+623 , 41385 , 26 , 73 , 1 , 1 ,
+623 , 41386 , 26 , 72 , 1 , 1 ,
+623 , 41387 , 26 , 72 , 1 , 1 ,
+623 , 41388 , 26 , 72 , 1 , 1 ,
+623 , 41389 , 26 , 72 , 1 , 1 ,
+623 , 41390 , 26 , 72 , 1 , 1 ,
+623 , 41391 , 26 , 62 , 1 , 1 ,
+623 , 41392 , 26 , 72 , 1 , 1 ,
+623 , 41393 , 25 , 62 , 1 , 1 ,
+623 , 41394 , 23 , 72 , 1 , 1 ,
+623 , 41395 , 23 , 72 , 1 , 1 ,
+623 , 41396 , 23 , 82 , 1 , 1 ,
+623 , 41397 , 23 , 72 , 1 , 1 ,
+623 , 41398 , 23 , 82 , 1 , 1 ,
+623 , 41399 , 23 , 72 , 1 , 1 ,
+623 , 41400 , 23 , 62 , 1 , 1 ,
+623 , 41401 , 23 , 82 , 1 , 1 ,
+623 , 41402 , 23 , 72 , 1 , 1 ,
+623 , 41403 , 22 , 62 , 1 , 1 ,
+623 , 41404 , 20 , 72 , 1 , 1 ,
+623 , 41405 , 20 , 82 , 1 , 1 ,
+623 , 41406 , 19 , 82 , 1 , 1 ,
+623 , 41407 , 19 , 82 , 1 , 1 ,
+623 , 41408 , 19 , 72 , 1 , 1 ,
+623 , 41409 , 19 , 62 , 1 , 1 ,
+623 , 41410 , 19 , 82 , 1 , 1 ,
+623 , 41411 , 19 , 72 , 1 , 1 ,
+623 , 41412 , 19 , 62 , 1 , 1 ,
+623 , 41413 , 19 , 83 , 1 , 1 ,
+623 , 41414 , 15 , 83 , 1 , 1 ,
+623 , 41415 , 15 , 82 , 1 , 1 ,
+623 , 41416 , 14 , 83 , 1 , 1 ,
+623 , 41417 , 14 , 62 , 1 , 1 ,
+623 , 41418 , 14 , 83 , 1 , 1 ,
+623 , 41419 , 14 , 83 , 1 , 1 ,
+623 , 41420 , 14 , 83 , 1 , 1 ,
+623 , 41421 , 14 , 62 , 1 , 1 ,
+623 , 41422 , 13 , 72 , 1 , 1 ,
+623 , 41423 , 13 , 72 , 1 , 1 ,
+623 , 41424 , 9 , 82 , 1 , 1 ,
+623 , 41425 , 9 , 62 , 1 , 1 ,
+623 , 41426 , 9 , 82 , 1 , 1 ,
+623 , 41427 , 9 , 82 , 1 , 1 ,
+623 , 41428 , 9 , 72 , 1 , 1 ,
+623 , 41429 , 9 , 62 , 1 , 1 ,
+623 , 41430 , 9 , 62 , 1 , 1 ,
+623 , 41431 , 9 , 62 , 1 , 1 ,
+623 , 41432 , 9 , 62 , 1 , 1 ,
+623 , 41433 , 8 , 72 , 1 , 1 ,
+623 , 41434 , 6 , 72 , 1 , 1 ,
+623 , 41435 , 6 , 72 , 1 , 1 ,
+623 , 41436 , 6 , 62 , 1 , 1 ,
+623 , 41437 , 6 , 72 , 1 , 1 ,
+623 , 41438 , 6 , 62 , 1 , 1 ,
+623 , 41439 , 6 , 62 , 1 , 1 ,
+623 , 41440 , 6 , 62 , 1 , 1 ,
+623 , 41441 , 6 , 62 , 1 , 1 ,
+623 , 41442 , 6 , 62 , 1 , 1 ,
+623 , 41443 , 6 , 73 , 1 , 1 ,
+623 , 41444 , 3 , 62 , 1 , 1 ,
+623 , 41445 , 3 , 72 , 1 , 1 ,
+623 , 41446 , 3 , 72 , 1 , 1 ,
+623 , 41447 , 3 , 72 , 1 , 1 ,
+623 , 41448 , 3 , 62 , 1 , 1 ,
+623 , 41449 , 3 , 62 , 1 , 1 ,
+623 , 41450 , 3 , 72 , 1 , 1 ,
+623 , 41451 , 3 , 72 , 1 , 1 ,
+623 , 41452 , 3 , 62 , 1 , 1 ,
+623 , 41453 , 3 , 62 , 1 , 1 ,
+623 , 41454 , 390 , 164 , 1 , 1 , 41448 41406 41417 41282 41440 41354 41276 41384 41340 41346 41320 41337 41314 41372 41332 41423 41261 41254 41392 41452 41280 41395 41425 41270 41364 41357 41299 41255 41356 41306 41438 41398 41436 41322 41321 41374 41397 41450 41359 41427 41277 41327 41303 41366 41446 41272 41317 41408 41273 41334 41260 41293 41379 41396 41361 41383 41451 41380 41274 41291 41439 41329 41330 41419 41341 41344 41311 41275 41349 41414 41304 41279 41409 41333 41369 41305 41297 41350 41319 41376 41310 41352 41298 41331 41422 41405 41302 41268 41339 41263 41390 41353 41407 41418 41441 41442 41258 41444 41370 41281 41399 41432 41358 41431 41256 41378 41313 41267 41428 41308 41347 41284 41375 41377 41413 41373 41294 41307 41429 41257 41266 41318 41265 41391 41393 41433 41386 41345 41295 41271 41289 41362 41269 41301 41285 41400 41385 41360 41287 41348 41410 41335 41424 41404 41445 41290 41415 41371 41437 41338 41411 41401 41447 41326 41402 41416 41421 41412 41262 41426 41355 41343 41342 41363 41296 41300 41351 41316 41387 41283 41420 41381 41259 41388 41292 41336 41323 41449 41312 41325 41286 41288 41309 41403 41365 41264 41368 41434 41278 41435 41324 41367 41389 41394 41315 41382 41328 41430 41453 41443
+624 , 41455 , 69 , 41 , 1 , 1 ,
+624 , 41456 , 67 , 52 , 1 , 1 ,
+624 , 41457 , 67 , 52 , 1 , 1 ,
+624 , 41458 , 66 , 32 , 1 , 1 ,
+624 , 41459 , 70 , 70 , 1 , 1 ,
+624 , 41460 , 62 , 68 , 1 , 1 ,
+624 , 41461 , 61 , 42 , 1 , 1 ,
+624 , 41462 , 61 , 79 , 1 , 1 ,
+624 , 41463 , 74 , 42 , 1 , 1 ,
+624 , 41464 , 73 , 41 , 1 , 1 ,
+624 , 41465 , 149 , 84 , 1 , 1 ,
+624 , 41466 , 148 , 84 , 1 , 1 ,
+624 , 41467 , 148 , 74 , 1 , 1 ,
+624 , 41468 , 148 , 73 , 1 , 1 ,
+624 , 41469 , 148 , 21 , 1 , 1 ,
+624 , 41470 , 140 , 85 , 1 , 1 ,
+624 , 41471 , 139 , 84 , 1 , 1 ,
+624 , 41472 , 60 , 41 , 1 , 1 ,
+624 , 41473 , 139 , 64 , 1 , 1 ,
+624 , 41474 , 139 , 73 , 1 , 1 ,
+624 , 41475 , 137 , 74 , 1 , 1 ,
+624 , 41476 , 148 , 21 , 1 , 1 ,
+624 , 41477 , 134 , 31 , 1 , 1 ,
+624 , 41478 , 126 , 64 , 1 , 1 ,
+624 , 41479 , 66 , 23 , 1 , 1 ,
+624 , 41480 , 69 , 71 , 1 , 1 ,
+624 , 41481 , 133 , 21 , 1 , 1 ,
+624 , 41482 , 133 , 64 , 1 , 1 ,
+624 , 41483 , 96 , 41 , 1 , 1 ,
+624 , 41484 , 73 , 41 , 1 , 1 ,
+624 , 41485 , 73 , 24 , 1 , 1 ,
+624 , 41486 , 96 , 41 , 1 , 1 ,
+624 , 41487 , 96 , 41 , 1 , 1 ,
+624 , 41488 , 96 , 41 , 1 , 1 ,
+624 , 41489 , 75 , 59 , 1 , 1 ,
+624 , 41490 , 85 , 57 , 1 , 1 ,
+624 , 41491 , 84 , 70 , 1 , 1 ,
+624 , 41492 , 96 , 41 , 1 , 1 ,
+624 , 41493 , 95 , 31 , 1 , 1 ,
+624 , 41494 , 62 , 32 , 1 , 1 ,
+624 , 41495 , 65 , 67 , 1 , 1 ,
+624 , 41496 , 65 , 57 , 1 , 1 ,
+624 , 41497 , 65 , 79 , 1 , 1 ,
+624 , 41498 , 64 , 57 , 1 , 1 ,
+624 , 41499 , 64 , 68 , 1 , 1 ,
+624 , 41500 , 64 , 56 , 1 , 1 ,
+624 , 41501 , 63 , 58 , 1 , 1 ,
+624 , 41502 , 95 , 41 , 1 , 1 ,
+624 , 41503 , 78 , 41 , 1 , 1 ,
+624 , 41504 , 78 , 41 , 1 , 1 ,
+624 , 41505 , 78 , 42 , 1 , 1 ,
+624 , 41506 , 78 , 42 , 1 , 1 ,
+624 , 41507 , 75 , 58 , 1 , 1 ,
+624 , 41508 , 75 , 48 , 1 , 1 ,
+624 , 41509 , 68 , 60 , 1 , 1 ,
+624 , 41510 , 74 , 48 , 1 , 1 ,
+624 , 41511 , 71 , 42 , 1 , 1 ,
+624 , 41512 , 68 , 49 , 1 , 1 ,
+624 , 41513 , 70 , 52 , 1 , 1 ,
+624 , 41514 , 70 , 41 , 1 , 1 ,
+624 , 41515 , 78 , 41 , 1 , 1 ,
+624 , 41516 , 78 , 41 , 1 , 1 ,
+624 , 41517 , 78 , 31 , 1 , 1 ,
+624 , 41518 , 78 , 31 , 1 , 1 ,
+624 , 41519 , 67 , 44 , 1 , 1 ,
+624 , 41520 , 78 , 41 , 1 , 1 ,
+624 , 41521 , 95 , 41 , 1 , 1 ,
+624 , 41522 , 118 , 56 , 1 , 1 ,
+624 , 41523 , 117 , 53 , 1 , 1 ,
+624 , 41524 , 116 , 31 , 1 , 1 ,
+624 , 41525 , 84 , 46 , 1 , 1 ,
+624 , 41526 , 84 , 51 , 1 , 1 ,
+624 , 41527 , 83 , 35 , 1 , 1 ,
+624 , 41528 , 83 , 49 , 1 , 1 ,
+624 , 41529 , 82 , 64 , 1 , 1 ,
+624 , 41530 , 81 , 47 , 1 , 1 ,
+624 , 41531 , 148 , 31 , 1 , 1 ,
+624 , 41532 , 137 , 43 , 1 , 1 ,
+624 , 41533 , 147 , 21 , 1 , 1 ,
+624 , 41534 , 132 , 31 , 1 , 1 ,
+624 , 41535 , 132 , 31 , 1 , 1 ,
+624 , 41536 , 131 , 31 , 1 , 1 ,
+624 , 41537 , 114 , 54 , 1 , 1 ,
+624 , 41538 , 67 , 45 , 1 , 1 ,
+624 , 41539 , 65 , 43 , 1 , 1 ,
+624 , 41540 , 64 , 43 , 1 , 1 ,
+624 , 41541 , 63 , 43 , 1 , 1 ,
+624 , 41542 , 114 , 65 , 1 , 1 ,
+624 , 41543 , 113 , 43 , 1 , 1 ,
+624 , 41544 , 113 , 31 , 1 , 1 ,
+624 , 41545 , 112 , 31 , 1 , 1 ,
+624 , 41546 , 112 , 42 , 1 , 1 ,
+624 , 41547 , 131 , 31 , 1 , 1 ,
+624 , 41548 , 131 , 32 , 1 , 1 ,
+624 , 41549 , 129 , 31 , 1 , 1 ,
+624 , 41550 , 73 , 48 , 1 , 1 ,
+624 , 41551 , 129 , 31 , 1 , 1 ,
+624 , 41552 , 126 , 31 , 1 , 1 ,
+624 , 41553 , 146 , 31 , 1 , 1 ,
+624 , 41554 , 61 , 52 , 1 , 1 ,
+624 , 41555 , 144 , 31 , 1 , 1 ,
+624 , 41556 , 68 , 44 , 1 , 1 ,
+624 , 41557 , 67 , 45 , 1 , 1 ,
+624 , 41558 , 144 , 31 , 1 , 1 ,
+624 , 41559 , 144 , 42 , 1 , 1 ,
+624 , 41560 , 91 , 41 , 1 , 1 ,
+624 , 41561 , 90 , 41 , 1 , 1 ,
+624 , 41562 , 89 , 48 , 1 , 1 ,
+624 , 41563 , 81 , 58 , 1 , 1 ,
+624 , 41564 , 80 , 43 , 1 , 1 ,
+624 , 41565 , 80 , 57 , 1 , 1 ,
+624 , 41566 , 80 , 57 , 1 , 1 ,
+624 , 41567 , 78 , 57 , 1 , 1 ,
+624 , 41568 , 89 , 41 , 1 , 1 ,
+624 , 41569 , 137 , 42 , 1 , 1 ,
+624 , 41570 , 134 , 31 , 1 , 1 ,
+624 , 41571 , 91 , 47 , 1 , 1 ,
+624 , 41572 , 91 , 41 , 1 , 1 ,
+624 , 41573 , 94 , 52 , 1 , 1 ,
+624 , 41574 , 141 , 53 , 1 , 1 ,
+624 , 41575 , 133 , 43 , 1 , 1 ,
+624 , 41576 , 112 , 41 , 1 , 1 ,
+624 , 41577 , 110 , 41 , 1 , 1 ,
+624 , 41578 , 73 , 48 , 1 , 1 ,
+624 , 41579 , 69 , 41 , 1 , 1 ,
+624 , 41580 , 72 , 48 , 1 , 1 ,
+624 , 41581 , 106 , 45 , 1 , 1 ,
+624 , 41582 , 103 , 32 , 1 , 1 ,
+624 , 41583 , 103 , 65 , 1 , 1 ,
+624 , 41584 , 94 , 52 , 1 , 1 ,
+624 , 41585 , 92 , 52 , 1 , 1 ,
+624 , 41586 , 85 , 68 , 1 , 1 ,
+624 , 41587 , 60 , 52 , 1 , 1 ,
+624 , 41588 , 60 , 52 , 1 , 1 ,
+624 , 41589 , 59 , 52 , 1 , 1 ,
+624 , 41590 , 58 , 41 , 1 , 1 ,
+624 , 41591 , 88 , 42 , 1 , 1 ,
+624 , 41592 , 92 , 52 , 1 , 1 ,
+624 , 41593 , 91 , 42 , 1 , 1 ,
+624 , 41594 , 91 , 52 , 1 , 1 ,
+624 , 41595 , 102 , 52 , 1 , 1 ,
+624 , 41596 , 132 , 41 , 1 , 1 ,
+624 , 41597 , 132 , 31 , 1 , 1 ,
+624 , 41598 , 141 , 74 , 1 , 1 ,
+624 , 41599 , 91 , 41 , 1 , 1 ,
+624 , 41600 , 58 , 52 , 1 , 1 ,
+624 , 41601 , 91 , 62 , 1 , 1 ,
+624 , 41602 , 72 , 69 , 1 , 1 ,
+624 , 41603 , 144 , 73 , 1 , 1 ,
+624 , 41604 , 144 , 31 , 1 , 1 ,
+624 , 41605 , 125 , 31 , 1 , 1 ,
+624 , 41606 , 124 , 31 , 1 , 1 ,
+624 , 41607 , 95 , 52 , 1 , 1 ,
+624 , 41608 , 62 , 42 , 1 , 1 ,
+624 , 41609 , 86 , 68 , 1 , 1 ,
+624 , 41610 , 115 , 31 , 1 , 1 ,
+624 , 41611 , 62 , 42 , 1 , 1 ,
+624 , 41612 , 62 , 52 , 1 , 1 ,
+624 , 41613 , 114 , 95 , 1 , 1 ,
+624 , 41614 , 114 , 31 , 1 , 1 ,
+624 , 41615 , 124 , 31 , 1 , 1 ,
+624 , 41616 , 124 , 31 , 1 , 1 ,
+624 , 41617 , 123 , 31 , 1 , 1 ,
+624 , 41618 , 123 , 31 , 1 , 1 ,
+624 , 41619 , 122 , 31 , 1 , 1 ,
+624 , 41620 , 123 , 31 , 1 , 1 ,
+624 , 41621 , 76 , 90 , 1 , 1 ,
+624 , 41622 , 144 , 31 , 1 , 1 ,
+624 , 41623 , 126 , 31 , 1 , 1 ,
+624 , 41624 , 127 , 95 , 1 , 1 ,
+624 , 41625 , 143 , 32 , 1 , 1 ,
+624 , 41626 , 143 , 94 , 1 , 1 ,
+624 , 41627 , 143 , 31 , 1 , 1 ,
+624 , 41628 , 89 , 62 , 1 , 1 ,
+624 , 41629 , 89 , 41 , 1 , 1 ,
+624 , 41630 , 88 , 41 , 1 , 1 ,
+624 , 41631 , 95 , 42 , 1 , 1 ,
+624 , 41632 , 58 , 42 , 1 , 1 ,
+624 , 41633 , 58 , 41 , 1 , 1 ,
+624 , 41634 , 58 , 32 , 1 , 1 ,
+624 , 41635 , 58 , 42 , 1 , 1 ,
+624 , 41636 , 58 , 31 , 1 , 1 ,
+624 , 41637 , 58 , 41 , 1 , 1 ,
+624 , 41638 , 94 , 41 , 1 , 1 ,
+624 , 41639 , 63 , 101 , 1 , 1 ,
+624 , 41640 , 62 , 101 , 1 , 1 ,
+624 , 41641 , 94 , 41 , 1 , 1 ,
+624 , 41642 , 143 , 31 , 1 , 1 ,
+624 , 41643 , 78 , 109 , 1 , 1 ,
+624 , 41644 , 143 , 115 , 1 , 1 ,
+624 , 41645 , 69 , 52 , 1 , 1 ,
+624 , 41646 , 142 , 31 , 1 , 1 ,
+624 , 41647 , 86 , 119 , 1 , 1 ,
+624 , 41648 , 141 , 31 , 1 , 1 ,
+624 , 41649 , 141 , 31 , 1 , 1 ,
+624 , 41650 , 140 , 31 , 1 , 1 ,
+624 , 41651 , 140 , 115 , 1 , 1 ,
+624 , 41652 , 141 , 105 , 1 , 1 ,
+624 , 41653 , 140 , 31 , 1 , 1 ,
+624 , 41654 , 71 , 101 , 1 , 1 ,
+624 , 41655 , 143 , 105 , 1 , 1 ,
+624 , 41656 , 142 , 105 , 1 , 1 ,
+624 , 41657 , 116 , 31 , 1 , 1 ,
+624 , 41658 , 102 , 31 , 1 , 1 ,
+624 , 41659 , 101 , 42 , 1 , 1 ,
+624 , 41660 , 100 , 41 , 1 , 1 ,
+624 , 41661 , 99 , 41 , 1 , 1 ,
+624 , 41662 , 98 , 33 , 1 , 1 ,
+624 , 41663 , 96 , 129 , 1 , 1 ,
+624 , 41664 , 91 , 41 , 1 , 1 ,
+624 , 41665 , 96 , 131 , 1 , 1 ,
+624 , 41666 , 96 , 41 , 1 , 1 ,
+624 , 41667 , 116 , 33 , 1 , 1 ,
+624 , 41668 , 86 , 89 , 1 , 1 ,
+624 , 41669 , 85 , 89 , 1 , 1 ,
+624 , 41670 , 115 , 33 , 1 , 1 ,
+624 , 41671 , 62 , 52 , 1 , 1 ,
+624 , 41672 , 138 , 31 , 1 , 1 ,
+624 , 41673 , 126 , 31 , 1 , 1 ,
+624 , 41674 , 126 , 95 , 1 , 1 ,
+624 , 41675 , 126 , 31 , 1 , 1 ,
+624 , 41676 , 126 , 95 , 1 , 1 ,
+624 , 41677 , 122 , 31 , 1 , 1 ,
+624 , 41678 , 122 , 31 , 1 , 1 ,
+624 , 41679 , 121 , 31 , 1 , 1 ,
+624 , 41680 , 121 , 31 , 1 , 1 ,
+624 , 41681 , 119 , 85 , 1 , 1 ,
+624 , 41682 , 119 , 85 , 1 , 1 ,
+624 , 41683 , 118 , 31 , 1 , 1 ,
+624 , 41684 , 118 , 32 , 1 , 1 ,
+624 , 41685 , 142 , 84 , 1 , 1 ,
+624 , 41686 , 140 , 84 , 1 , 1 ,
+624 , 41687 , 149 , 31 , 1 , 1 ,
+624 , 41688 , 74 , 69 , 1 , 1 ,
+624 , 41689 , 74 , 73 , 1 , 1 ,
+624 , 41690 , 149 , 74 , 1 , 1 ,
+624 , 41691 , 78 , 54 , 1 , 1 ,
+624 , 41692 , 77 , 31 , 1 , 1 ,
+624 , 41693 , 70 , 69 , 1 , 1 ,
+624 , 41694 , 58 , 31 , 1 , 1 ,
+624 , 41695 , 19 , 35 , 1 , 1 ,
+624 , 41696 , 19 , 37 , 1 , 1 ,
+624 , 41697 , 19 , 45 , 1 , 1 ,
+624 , 41698 , 19 , 35 , 1 , 1 ,
+624 , 41699 , 19 , 36 , 1 , 1 ,
+624 , 41700 , 19 , 36 , 1 , 1 ,
+624 , 41701 , 19 , 37 , 1 , 1 ,
+624 , 41702 , 19 , 32 , 1 , 1 ,
+624 , 41703 , 10 , 195 , 1 , 1 ,
+624 , 41704 , 10 , 195 , 1 , 1 ,
+624 , 41705 , 10 , 195 , 1 , 1 ,
+624 , 41706 , 10 , 195 , 1 , 1 ,
+624 , 41707 , 10 , 195 , 1 , 1 ,
+624 , 41708 , 10 , 195 , 1 , 1 ,
+624 , 41709 , 10 , 185 , 1 , 1 ,
+624 , 41710 , 10 , 173 , 1 , 1 ,
+624 , 41711 , 10 , 195 , 1 , 1 ,
+624 , 41712 , 10 , 195 , 1 , 1 ,
+624 , 41713 , 10 , 195 , 1 , 1 ,
+624 , 41714 , 10 , 195 , 1 , 1 ,
+624 , 41715 , 10 , 195 , 1 , 1 ,
+624 , 41716 , 10 , 185 , 1 , 1 ,
+624 , 41717 , 10 , 173 , 1 , 1 ,
+624 , 41718 , 10 , 185 , 1 , 1 ,
+624 , 41719 , 26 , 44 , 1 , 1 ,
+624 , 41720 , 26 , 45 , 1 , 1 ,
+624 , 41721 , 25 , 43 , 1 , 1 ,
+624 , 41722 , 25 , 79 , 1 , 1 ,
+624 , 41723 , 25 , 56 , 1 , 1 ,
+624 , 41724 , 25 , 80 , 1 , 1 ,
+624 , 41725 , 25 , 57 , 1 , 1 ,
+624 , 41726 , 24 , 55 , 1 , 1 ,
+624 , 41727 , 24 , 55 , 1 , 1 ,
+624 , 41728 , 24 , 55 , 1 , 1 ,
+624 , 41729 , 23 , 91 , 1 , 1 ,
+624 , 41730 , 22 , 56 , 1 , 1 ,
+624 , 41731 , 22 , 55 , 1 , 1 ,
+624 , 41732 , 22 , 91 , 1 , 1 ,
+624 , 41733 , 21 , 45 , 1 , 1 ,
+624 , 41734 , 21 , 45 , 1 , 1 ,
+624 , 41735 , 21 , 45 , 1 , 1 ,
+624 , 41736 , 20 , 56 , 1 , 1 ,
+624 , 41737 , 20 , 46 , 1 , 1 ,
+624 , 41738 , 20 , 80 , 1 , 1 ,
+624 , 41739 , 20 , 46 , 1 , 1 ,
+624 , 41740 , 20 , 57 , 1 , 1 ,
+624 , 41741 , 19 , 43 , 1 , 1 ,
+624 , 41742 , 19 , 46 , 1 , 1 ,
+624 , 41743 , 19 , 92 , 1 , 1 ,
+624 , 41744 , 18 , 43 , 1 , 1 ,
+624 , 41745 , 18 , 57 , 1 , 1 ,
+624 , 41746 , 18 , 56 , 1 , 1 ,
+624 , 41747 , 17 , 90 , 1 , 1 ,
+624 , 41748 , 17 , 80 , 1 , 1 ,
+624 , 41749 , 17 , 43 , 1 , 1 ,
+624 , 41750 , 16 , 43 , 1 , 1 ,
+624 , 41751 , 16 , 43 , 1 , 1 ,
+624 , 41752 , 16 , 44 , 1 , 1 ,
+624 , 41753 , 15 , 55 , 1 , 1 ,
+624 , 41754 , 15 , 78 , 1 , 1 ,
+624 , 41755 , 15 , 66 , 1 , 1 ,
+624 , 41756 , 14 , 44 , 1 , 1 ,
+624 , 41757 , 14 , 55 , 1 , 1 ,
+624 , 41758 , 14 , 55 , 1 , 1 ,
+624 , 41759 , 13 , 44 , 1 , 1 ,
+624 , 41760 , 13 , 65 , 1 , 1 ,
+624 , 41761 , 13 , 44 , 1 , 1 ,
+624 , 41762 , 12 , 44 , 1 , 1 ,
+624 , 41763 , 12 , 78 , 1 , 1 ,
+624 , 41764 , 12 , 44 , 1 , 1 ,
+624 , 41765 , 11 , 48 , 1 , 1 ,
+624 , 41766 , 11 , 48 , 1 , 1 ,
+624 , 41767 , 11 , 48 , 1 , 1 ,
+624 , 41768 , 10 , 56 , 1 , 1 ,
+624 , 41769 , 10 , 56 , 1 , 1 ,
+624 , 41770 , 10 , 79 , 1 , 1 ,
+624 , 41771 , 10 , 68 , 1 , 1 ,
+624 , 41772 , 9 , 57 , 1 , 1 ,
+624 , 41773 , 9 , 57 , 1 , 1 ,
+624 , 41774 , 9 , 54 , 1 , 1 ,
+624 , 41775 , 9 , 54 , 1 , 1 ,
+624 , 41776 , 9 , 55 , 1 , 1 ,
+624 , 41777 , 8 , 68 , 1 , 1 ,
+624 , 41778 , 8 , 68 , 1 , 1 ,
+624 , 41779 , 8 , 79 , 1 , 1 ,
+624 , 41780 , 7 , 56 , 1 , 1 ,
+624 , 41781 , 7 , 56 , 1 , 1 ,
+624 , 41782 , 7 , 56 , 1 , 1 ,
+624 , 41783 , 32 , 52 , 1 , 1 ,
+624 , 41784 , 31 , 52 , 1 , 1 ,
+624 , 41785 , 30 , 52 , 1 , 1 ,
+624 , 41786 , 30 , 52 , 1 , 1 ,
+624 , 41787 , 29 , 52 , 1 , 1 ,
+624 , 41788 , 29 , 41 , 1 , 1 ,
+624 , 41789 , 29 , 52 , 1 , 1 ,
+624 , 41790 , 29 , 52 , 1 , 1 ,
+624 , 41791 , 29 , 52 , 1 , 1 ,
+624 , 41792 , 28 , 52 , 1 , 1 ,
+624 , 41793 , 28 , 52 , 1 , 1 ,
+624 , 41794 , 28 , 52 , 1 , 1 ,
+624 , 41795 , 27 , 52 , 1 , 1 ,
+624 , 41796 , 26 , 52 , 1 , 1 ,
+624 , 41797 , 26 , 62 , 1 , 1 ,
+624 , 41798 , 26 , 52 , 1 , 1 ,
+624 , 41799 , 26 , 52 , 1 , 1 ,
+624 , 41800 , 25 , 52 , 1 , 1 ,
+624 , 41801 , 25 , 52 , 1 , 1 ,
+624 , 41802 , 25 , 52 , 1 , 1 ,
+624 , 41803 , 25 , 52 , 1 , 1 ,
+624 , 41804 , 24 , 52 , 1 , 1 ,
+624 , 41805 , 23 , 52 , 1 , 1 ,
+624 , 41806 , 22 , 62 , 1 , 1 ,
+624 , 41807 , 22 , 52 , 1 , 1 ,
+624 , 41808 , 22 , 53 , 1 , 1 ,
+624 , 41809 , 22 , 52 , 1 , 1 ,
+624 , 41810 , 22 , 52 , 1 , 1 ,
+624 , 41811 , 22 , 52 , 1 , 1 ,
+624 , 41812 , 21 , 41 , 1 , 1 ,
+624 , 41813 , 21 , 52 , 1 , 1 ,
+624 , 41814 , 21 , 52 , 1 , 1 ,
+624 , 41815 , 19 , 62 , 1 , 1 ,
+624 , 41816 , 19 , 52 , 1 , 1 ,
+624 , 41817 , 19 , 52 , 1 , 1 ,
+624 , 41818 , 18 , 62 , 1 , 1 ,
+624 , 41819 , 18 , 41 , 1 , 1 ,
+624 , 41820 , 17 , 41 , 1 , 1 ,
+624 , 41821 , 17 , 52 , 1 , 1 ,
+624 , 41822 , 17 , 41 , 1 , 1 ,
+624 , 41823 , 17 , 62 , 1 , 1 ,
+624 , 41824 , 15 , 62 , 1 , 1 ,
+624 , 41825 , 10 , 41 , 1 , 1 ,
+624 , 41826 , 10 , 62 , 1 , 1 ,
+624 , 41827 , 10 , 52 , 1 , 1 ,
+624 , 41828 , 10 , 41 , 1 , 1 ,
+624 , 41829 , 9 , 41 , 1 , 1 ,
+624 , 41830 , 9 , 41 , 1 , 1 ,
+624 , 41831 , 8 , 41 , 1 , 1 ,
+624 , 41832 , 8 , 52 , 1 , 1 ,
+624 , 41833 , 8 , 41 , 1 , 1 ,
+624 , 41834 , 7 , 41 , 1 , 1 ,
+624 , 41835 , 6 , 42 , 1 , 1 ,
+624 , 41836 , 6 , 41 , 1 , 1 ,
+624 , 41837 , 6 , 41 , 1 , 1 ,
+624 , 41838 , 6 , 41 , 1 , 1 ,
+624 , 41839 , 5 , 41 , 1 , 1 ,
+624 , 41840 , 5 , 41 , 1 , 1 ,
+624 , 41841 , 5 , 41 , 1 , 1 ,
+624 , 41842 , 5 , 41 , 1 , 1 ,
+624 , 41843 , 5 , 41 , 1 , 1 ,
+624 , 41844 , 5 , 41 , 1 , 1 ,
+624 , 41845 , 4 , 42 , 1 , 1 ,
+624 , 41846 , 4 , 42 , 1 , 1 ,
+624 , 41847 , 4 , 41 , 1 , 1 ,
+624 , 41848 , 4 , 42 , 1 , 1 ,
+624 , 41849 , 4 , 42 , 1 , 1 ,
+624 , 41850 , 4 , 41 , 1 , 1 ,
+624 , 41851 , 4 , 42 , 1 , 1 ,
+624 , 41852 , 4 , 42 , 1 , 1 ,
+624 , 41853 , 4 , 42 , 1 , 1 ,
+624 , 41854 , 4 , 52 , 1 , 1 ,
+624 , 41855 , 309 , 133 , 1 , 1 , 41788 41509 41833 41677 41810 41530 41728 41817 41590 41707 41774 41652 41602 41687 41595 41758 41559 41643 41611 41840 41554 41764 41767 41796 41703 41651 41808 41670 41488 41547 41766 41785 41555 41845 41746 41598 41553 41676 41787 41724 41630 41637 41479 41461 41648 41723 41733 41722 41591 41548 41773 41629 41725 41614 41691 41646 41709 41839 41799 41623 41804 41527 41538 41769 41749 41784 41505 41533 41626 41536 41544 41660 41517 41639 41462 41579 41620 41612 41613 41814 41518 41484 41600 41782 41589 41469 41755 41551 41557 41498 41586 41632 41849 41706 41615 41737 41496 41503 41516 41848 41504 41700 41635 41649 41477 41686 41820 41531 41812 41512 41489 41528 41740 41568 41736 41679 41675 41497 41661 41738 41826 41763 41463 41699 41464 41665 41694 41560 41696 41797 41801 41647 41574 41768 41654 41664 41608 41678 41673 41705 41601 41739 41495 41693 41838 41853 41831 41471 41846 41588 41460 41735 41663 41566 41467 41772 41546 41824 41789 41482 41556 41524 41522 41770 41741 41490 41719 41532 41606 41847 41621 41744 41717 41636 41819 41580 41827 41506 41780 41779 41656 41571 41550 41603 41563 41510 41798 41695 41604 41777 41843 41743 41753 41682 41619 41748 41851 41478 41835 41508 41607 41569 41704 41809 41716 41514 41834 41485 41596 41684 41501 41759 41537 41790 41483 41778 41711 41829 41786 41564 41605 41480 41513 41561 41747 41659 41587 41669 41552 41655 41625 41515 41816 41592 41708 41470 41526 41543 41481 41811 41570 41472 41731 41624 41499 41781 41823 41671 41507 41714 41455 41468 41593 41825 41521 41841 41487 41750 41803 41558 41745 41493 41850 41573 41765 41658 41627 41818 41628 41585 41802 41653 41807 41634 41500 41674 41475 41494 41756 41822 41583 41541 41534 41680 41685 41844 41713 41576 41457 41688 41697 41715 41760 41535 41599 41793 41542 41650 41692 41662 41575 41795 41562 41800 41622 41545 41852 41734 41776 41805 41609 41474 41581 41565 41771 41456 41645 41837 41523 41832 41633 41761 41751 41610 41584 41762 41729 41458 41721 41828 41830 41644 41732 41491 41539 41702 41641 41667 41794 41672 41718 41689 41842 41473 41783 41540 41668 41681 41549 41567 41815 41617 41806 41657 41712 41642 41597 41492 41476 41631 41640 41727 41638 41813 41854 41698 41742 41486 41519 41710 41502 41690 41459 41720 41666 41791 41525 41466 41618 41701 41752 41577 41616 41757 41775 41529 41683 41572 41578 41792 41594 41511 41465 41520 41821 41726 41754 41836 41582 41730
+625 , 41856 , 3 , 11 , 1 , 1 ,
+625 , 41857 , 89 , 41 , 1 , 1 , 41856
+625 , 41858 , 89 , 42 , 1 , 1 , 41856
+625 , 41859 , 87 , 41 , 1 , 1 , 41856
+625 , 41860 , 99 , 31 , 1 , 1 , 41856
+625 , 41861 , 97 , 41 , 1 , 1 , 41856
+625 , 41862 , 94 , 42 , 1 , 1 , 41856
+625 , 41863 , 94 , 42 , 1 , 1 , 41856
+625 , 41864 , 94 , 41 , 1 , 1 , 41856
+625 , 41865 , 93 , 41 , 1 , 1 , 41856
+625 , 41866 , 93 , 41 , 1 , 1 , 41856
+625 , 41867 , 93 , 41 , 1 , 1 , 41856
+625 , 41868 , 92 , 31 , 1 , 1 , 41856
+625 , 41869 , 91 , 42 , 1 , 1 , 41856
+625 , 41870 , 91 , 41 , 1 , 1 , 41856
+625 , 41871 , 90 , 41 , 1 , 1 , 41856
+625 , 41872 , 89 , 41 , 1 , 1 , 41856
+625 , 41873 , 89 , 41 , 1 , 1 , 41856
+625 , 41874 , 87 , 41 , 1 , 1 , 41856
+625 , 41875 , 86 , 41 , 1 , 1 , 41856
+625 , 41876 , 84 , 31 , 1 , 1 , 41856
+625 , 41877 , 84 , 41 , 1 , 1 , 41856
+625 , 41878 , 83 , 41 , 1 , 1 , 41856
+625 , 41879 , 83 , 41 , 1 , 1 , 41856
+625 , 41880 , 81 , 31 , 1 , 1 , 41856
+625 , 41881 , 52 , 31 , 1 , 1 , 41856
+625 , 41882 , 52 , 41 , 1 , 1 , 41856
+625 , 41883 , 52 , 41 , 1 , 1 , 41856
+625 , 41884 , 52 , 32 , 1 , 1 , 41856
+625 , 41885 , 52 , 42 , 1 , 1 , 41856
+625 , 41886 , 51 , 41 , 1 , 1 , 41856
+625 , 41887 , 50 , 31 , 1 , 1 , 41856
+625 , 41888 , 50 , 41 , 1 , 1 , 41856
+625 , 41889 , 50 , 41 , 1 , 1 , 41856
+625 , 41890 , 50 , 80 , 1 , 1 , 41856
+625 , 41891 , 50 , 79 , 1 , 1 , 41856
+625 , 41892 , 50 , 81 , 1 , 1 , 41856
+625 , 41893 , 50 , 111 , 1 , 1 , 41856
+625 , 41894 , 50 , 80 , 1 , 1 , 41856
+625 , 41895 , 50 , 100 , 1 , 1 , 41856
+625 , 41896 , 50 , 77 , 1 , 1 , 41856
+625 , 41897 , 50 , 79 , 1 , 1 , 41856
+625 , 41898 , 44 , 245 , 1 , 1 , 41856
+625 , 41899 , 44 , 235 , 1 , 1 , 41856
+625 , 41900 , 44 , 235 , 1 , 1 , 41856
+625 , 41901 , 44 , 245 , 1 , 1 , 41856
+625 , 41902 , 44 , 245 , 1 , 1 , 41856
+625 , 41903 , 43 , 245 , 1 , 1 , 41856
+625 , 41904 , 43 , 245 , 1 , 1 , 41856
+625 , 41905 , 43 , 235 , 1 , 1 , 41856
+625 , 41906 , 43 , 223 , 1 , 1 , 41856
+625 , 41907 , 43 , 255 , 1 , 1 , 41856
+625 , 41908 , 43 , 245 , 1 , 1 , 41856
+625 , 41909 , 43 , 245 , 1 , 1 , 41856
+625 , 41910 , 43 , 245 , 1 , 1 , 41856
+625 , 41911 , 43 , 234 , 1 , 1 , 41856
+625 , 41912 , 43 , 245 , 1 , 1 , 41856
+625 , 41913 , 43 , 245 , 1 , 1 , 41856
+625 , 41914 , 57 , 259 , 1 , 1 , 41856
+625 , 41915 , 56 , 238 , 1 , 1 , 41856
+625 , 41916 , 56 , 238 , 1 , 1 , 41856
+625 , 41917 , 56 , 244 , 1 , 1 , 41856
+625 , 41918 , 56 , 244 , 1 , 1 , 41856
+625 , 41919 , 56 , 234 , 1 , 1 , 41856
+625 , 41920 , 56 , 234 , 1 , 1 , 41856
+625 , 41921 , 55 , 338 , 1 , 1 , 41856
+625 , 41922 , 55 , 244 , 1 , 1 , 41856
+625 , 41923 , 55 , 265 , 1 , 1 , 41856
+625 , 41924 , 54 , 256 , 1 , 1 , 41856
+625 , 41925 , 54 , 244 , 1 , 1 , 41856
+625 , 41926 , 53 , 245 , 1 , 1 , 41856
+625 , 41927 , 52 , 277 , 1 , 1 , 41856
+625 , 41928 , 52 , 234 , 1 , 1 , 41856
+625 , 41929 , 52 , 233 , 1 , 1 , 41856
+625 , 41930 , 51 , 319 , 1 , 1 , 41856
+625 , 41931 , 51 , 234 , 1 , 1 , 41856
+625 , 41932 , 51 , 234 , 1 , 1 , 41856
+625 , 41933 , 50 , 247 , 1 , 1 , 41856
+625 , 41934 , 50 , 248 , 1 , 1 , 41856
+625 , 41935 , 50 , 248 , 1 , 1 , 41856
+625 , 41936 , 49 , 247 , 1 , 1 , 41856
+625 , 41937 , 49 , 342 , 1 , 1 , 41856
+625 , 41938 , 49 , 237 , 1 , 1 , 41856
+625 , 41939 , 49 , 269 , 1 , 1 , 41856
+625 , 41940 , 48 , 238 , 1 , 1 , 41856
+625 , 41941 , 48 , 248 , 1 , 1 , 41856
+625 , 41942 , 47 , 248 , 1 , 1 , 41856
+625 , 41943 , 47 , 248 , 1 , 1 , 41856
+625 , 41944 , 47 , 238 , 1 , 1 , 41856
+625 , 41945 , 46 , 300 , 1 , 1 , 41856
+625 , 41946 , 46 , 339 , 1 , 1 , 41856
+625 , 41947 , 46 , 247 , 1 , 1 , 41856
+625 , 41948 , 46 , 248 , 1 , 1 , 41856
+625 , 41949 , 46 , 237 , 1 , 1 , 41856
+625 , 41950 , 45 , 238 , 1 , 1 , 41856
+625 , 41951 , 45 , 237 , 1 , 1 , 41856
+625 , 41952 , 45 , 244 , 1 , 1 , 41856
+625 , 41953 , 44 , 276 , 1 , 1 , 41856
+625 , 41954 , 44 , 252 , 1 , 1 , 41856
+625 , 41955 , 44 , 237 , 1 , 1 , 41856
+625 , 41956 , 43 , 237 , 1 , 1 , 41856
+625 , 41957 , 43 , 244 , 1 , 1 , 41856
+625 , 41958 , 43 , 238 , 1 , 1 , 41856
+625 , 41959 , 42 , 234 , 1 , 1 , 41856
+625 , 41960 , 42 , 258 , 1 , 1 , 41856
+625 , 41961 , 42 , 341 , 1 , 1 , 41856
+625 , 41962 , 42 , 319 , 1 , 1 , 41856
+625 , 41963 , 41 , 236 , 1 , 1 , 41856
+625 , 41964 , 41 , 258 , 1 , 1 , 41856
+625 , 41965 , 41 , 247 , 1 , 1 , 41856
+625 , 41966 , 40 , 248 , 1 , 1 , 41856
+625 , 41967 , 40 , 235 , 1 , 1 , 41856
+625 , 41968 , 40 , 235 , 1 , 1 , 41856
+625 , 41969 , 39 , 235 , 1 , 1 , 41856
+625 , 41970 , 39 , 281 , 1 , 1 , 41856
+625 , 41971 , 39 , 333 , 1 , 1 , 41856
+625 , 41972 , 38 , 237 , 1 , 1 , 41856
+625 , 41973 , 38 , 256 , 1 , 1 , 41856
+625 , 41974 , 38 , 271 , 1 , 1 , 41856
+625 , 41975 , 37 , 251 , 1 , 1 , 41856
+625 , 41976 , 37 , 247 , 1 , 1 , 41856
+625 , 41977 , 37 , 331 , 1 , 1 , 41856
+625 , 41978 , 49 , 62 , 1 , 1 , 41856
+625 , 41979 , 48 , 62 , 1 , 1 , 41856
+625 , 41980 , 48 , 62 , 1 , 1 , 41856
+625 , 41981 , 48 , 62 , 1 , 1 , 41856
+625 , 41982 , 48 , 62 , 1 , 1 , 41856
+625 , 41983 , 48 , 52 , 1 , 1 , 41856
+625 , 41984 , 47 , 62 , 1 , 1 , 41856
+625 , 41985 , 46 , 52 , 1 , 1 , 41856
+625 , 41986 , 46 , 62 , 1 , 1 , 41856
+625 , 41987 , 45 , 62 , 1 , 1 , 41856
+625 , 41988 , 44 , 62 , 1 , 1 , 41856
+625 , 41989 , 44 , 62 , 1 , 1 , 41856
+625 , 41990 , 44 , 62 , 1 , 1 , 41856
+625 , 41991 , 44 , 62 , 1 , 1 , 41856
+625 , 41992 , 43 , 62 , 1 , 1 , 41856
+625 , 41993 , 43 , 52 , 1 , 1 , 41856
+625 , 41994 , 43 , 62 , 1 , 1 , 41856
+625 , 41995 , 42 , 62 , 1 , 1 , 41856
+625 , 41996 , 42 , 62 , 1 , 1 , 41856
+625 , 41997 , 41 , 62 , 1 , 1 , 41856
+625 , 41998 , 40 , 63 , 1 , 1 , 41856
+625 , 41999 , 40 , 62 , 1 , 1 , 41856
+625 , 42000 , 40 , 62 , 1 , 1 , 41856
+625 , 42001 , 40 , 52 , 1 , 1 , 41856
+625 , 42002 , 40 , 52 , 1 , 1 , 41856
+625 , 42003 , 40 , 52 , 1 , 1 , 41856
+625 , 42004 , 39 , 52 , 1 , 1 , 41856
+625 , 42005 , 38 , 62 , 1 , 1 , 41856
+625 , 42006 , 38 , 52 , 1 , 1 , 41856
+625 , 42007 , 38 , 41 , 1 , 1 , 41856
+625 , 42008 , 37 , 52 , 1 , 1 , 41856
+625 , 42009 , 37 , 52 , 1 , 1 , 41856
+625 , 42010 , 37 , 62 , 1 , 1 , 41856
+625 , 42011 , 37 , 62 , 1 , 1 , 41856
+625 , 42012 , 36 , 41 , 1 , 1 , 41856
+625 , 42013 , 36 , 52 , 1 , 1 , 41856
+625 , 42014 , 35 , 42 , 1 , 1 , 41856
+625 , 42015 , 35 , 52 , 1 , 1 , 41856
+625 , 42016 , 35 , 62 , 1 , 1 , 41856
+625 , 42017 , 34 , 62 , 1 , 1 , 41856
+625 , 42018 , 33 , 41 , 1 , 1 , 41856
+625 , 42019 , 32 , 41 , 1 , 1 , 41856
+625 , 42020 , 32 , 41 , 1 , 1 , 41856
+625 , 42021 , 32 , 52 , 1 , 1 , 41856
+625 , 42022 , 32 , 51 , 1 , 1 , 41856
+625 , 42023 , 32 , 41 , 1 , 1 , 41856
+625 , 42024 , 31 , 42 , 1 , 1 , 41856
+625 , 42025 , 31 , 42 , 1 , 1 , 41856
+625 , 42026 , 31 , 52 , 1 , 1 , 41856
+625 , 42027 , 31 , 41 , 1 , 1 , 41856
+625 , 42028 , 29 , 62 , 1 , 1 , 41856
+625 , 42029 , 29 , 52 , 1 , 1 , 41856
+625 , 42030 , 28 , 52 , 1 , 1 , 41856
+625 , 42031 , 28 , 41 , 1 , 1 , 41856
+625 , 42032 , 28 , 52 , 1 , 1 , 41856
+625 , 42033 , 28 , 41 , 1 , 1 , 41856
+625 , 42034 , 28 , 41 , 1 , 1 , 41856
+625 , 42035 , 28 , 52 , 1 , 1 , 41856
+625 , 42036 , 28 , 52 , 1 , 1 , 41856
+625 , 42037 , 28 , 41 , 1 , 1 , 41856
+625 , 42038 , 27 , 42 , 1 , 1 , 41856
+625 , 42039 , 26 , 52 , 1 , 1 , 41856
+625 , 42040 , 26 , 41 , 1 , 1 , 41856
+625 , 42041 , 26 , 41 , 1 , 1 , 41856
+625 , 42042 , 26 , 41 , 1 , 1 , 41856
+625 , 42043 , 26 , 41 , 1 , 1 , 41856
+625 , 42044 , 26 , 41 , 1 , 1 , 41856
+625 , 42045 , 26 , 41 , 1 , 1 , 41856
+625 , 42046 , 26 , 41 , 1 , 1 , 41856
+625 , 42047 , 26 , 52 , 1 , 1 , 41856
+625 , 42048 , 26 , 31 , 1 , 1 , 41856
+625 , 42049 , 26 , 41 , 1 , 1 , 41856
+625 , 42050 , 416 , 11 , 1 , 1 , 41967 42014 42033 42001 41915 41927 41980 41906 41922 41938 41972 41895 42036 41954 42023 41920 42019 42028 42006 41910 42029 41950 41917 42031 41937 41891 41875 41885 41996 41900 41947 41992 41946 41987 42008 41948 41965 41886 41921 41897 42017 42024 42030 41949 41986 42000 41956 41960 41985 41924 42007 41997 41865 42032 41877 41876 41889 41880 41864 42018 41989 41969 41959 41893 41934 41857 41901 41990 42016 41907 41941 41935 42022 41867 42012 42020 41933 41878 41928 41874 41958 41881 41861 42010 41982 41916 41898 41957 41968 41998 41931 41882 42015 42013 42026 41902 41879 41871 41999 41952 41859 41970 41862 41977 42002 41978 42005 41870 41983 42003 41908 41962 41966 41964 41936 41909 41914 41976 41866 42009 41993 41884 41919 41981 41911 41955 42046 42035 42021 41926 42044 42039 41991 41939 41932 41888 41912 41872 41930 41890 42047 42025 41995 41925 41984 42037 41887 41944 41896 41918 41963 42042 42027 41899 41974 41894 42034 41940 42045 42041 42004 42049 41945 41883 41961 41873 41943 41892 41942 42040 41988 42011 41913 41863 41973 42043 41975 42048 41994 41923 41971 41929 41903 41905 41858 41953 41904 41979 41860 42038 41951 41868 41869
+625 , 42051 , 497 , 42 , 1 , 1 , 42050
+625 , 42052 , 495 , 42 , 1 , 1 , 42050
+625 , 42053 , 495 , 52 , 1 , 1 , 42050
+625 , 42054 , 495 , 42 , 1 , 1 , 42050
+625 , 42055 , 486 , 52 , 1 , 1 , 42050
+625 , 42056 , 486 , 52 , 1 , 1 , 42050
+625 , 42057 , 486 , 52 , 1 , 1 , 42050
+625 , 42058 , 494 , 52 , 1 , 1 , 42050
+625 , 42059 , 494 , 41 , 1 , 1 , 42050
+625 , 42060 , 494 , 41 , 1 , 1 , 42050
+625 , 42061 , 494 , 41 , 1 , 1 , 42050
+625 , 42062 , 494 , 41 , 1 , 1 , 42050
+625 , 42063 , 493 , 41 , 1 , 1 , 42050
+625 , 42064 , 493 , 41 , 1 , 1 , 42050
+625 , 42065 , 492 , 52 , 1 , 1 , 42050
+625 , 42066 , 491 , 52 , 1 , 1 , 42050
+625 , 42067 , 491 , 52 , 1 , 1 , 42050
+625 , 42068 , 491 , 52 , 1 , 1 , 42050
+625 , 42069 , 490 , 52 , 1 , 1 , 42050
+625 , 42070 , 490 , 52 , 1 , 1 , 42050
+625 , 42071 , 490 , 52 , 1 , 1 , 42050
+625 , 42072 , 490 , 41 , 1 , 1 , 42050
+625 , 42073 , 489 , 52 , 1 , 1 , 42050
+625 , 42074 , 489 , 52 , 1 , 1 , 42050
+625 , 42075 , 487 , 52 , 1 , 1 , 42050
+625 , 42076 , 487 , 52 , 1 , 1 , 42050
+625 , 42077 , 497 , 42 , 1 , 1 , 42050
+625 , 42078 , 497 , 52 , 1 , 1 , 42050
+625 , 42079 , 497 , 42 , 1 , 1 , 42050
+625 , 42080 , 486 , 52 , 1 , 1 , 42050
+625 , 42081 , 486 , 42 , 1 , 1 , 42050
+625 , 42082 , 485 , 52 , 1 , 1 , 42050
+625 , 42083 , 485 , 52 , 1 , 1 , 42050
+625 , 42084 , 519 , 11 , 1 , 1 , 42050
+625 , 42085 , 519 , 12 , 1 , 1 , 42050
+625 , 42086 , 519 , 12 , 1 , 1 , 42050
+625 , 42087 , 519 , 11 , 1 , 1 , 42050
+625 , 42088 , 519 , 13 , 1 , 1 , 42050
+625 , 42089 , 519 , 11 , 1 , 1 , 42050
+625 , 42090 , 520 , 12 , 1 , 1 , 42050
+625 , 42091 , 519 , 12 , 1 , 1 , 42050
+625 , 42092 , 515 , 33 , 1 , 1 , 42050
+625 , 42093 , 515 , 33 , 1 , 1 , 42050
+625 , 42094 , 514 , 33 , 1 , 1 , 42050
+625 , 42095 , 514 , 33 , 1 , 1 , 42050
+625 , 42096 , 514 , 33 , 1 , 1 , 42050
+625 , 42097 , 514 , 34 , 1 , 1 , 42050
+625 , 42098 , 514 , 34 , 1 , 1 , 42050
+625 , 42099 , 513 , 35 , 1 , 1 , 42050
+625 , 42100 , 516 , 42 , 1 , 1 , 42050
+625 , 42101 , 515 , 43 , 1 , 1 , 42050
+625 , 42102 , 516 , 42 , 1 , 1 , 42050
+625 , 42103 , 521 , 33 , 1 , 1 , 42050
+625 , 42104 , 513 , 24 , 1 , 1 , 42050
+625 , 42105 , 513 , 24 , 1 , 1 , 42050
+625 , 42106 , 513 , 24 , 1 , 1 , 42050
+625 , 42107 , 512 , 21 , 1 , 1 , 42050
+625 , 42108 , 513 , 21 , 1 , 1 , 42050
+625 , 42109 , 512 , 21 , 1 , 1 , 42050
+625 , 42110 , 511 , 32 , 1 , 1 , 42050
+625 , 42111 , 512 , 21 , 1 , 1 , 42050
+625 , 42112 , 511 , 21 , 1 , 1 , 42050
+625 , 42113 , 511 , 21 , 1 , 1 , 42050
+625 , 42114 , 510 , 32 , 1 , 1 , 42050
+625 , 42115 , 509 , 35 , 1 , 1 , 42050
+625 , 42116 , 510 , 35 , 1 , 1 , 42050
+625 , 42117 , 509 , 32 , 1 , 1 , 42050
+625 , 42118 , 509 , 32 , 1 , 1 , 42050
+625 , 42119 , 508 , 32 , 1 , 1 , 42050
+625 , 42120 , 508 , 32 , 1 , 1 , 42050
+625 , 42121 , 508 , 32 , 1 , 1 , 42050
+625 , 42122 , 507 , 32 , 1 , 1 , 42050
+625 , 42123 , 507 , 32 , 1 , 1 , 42050
+625 , 42124 , 510 , 34 , 1 , 1 , 42050
+625 , 42125 , 506 , 21 , 1 , 1 , 42050
+625 , 42126 , 506 , 21 , 1 , 1 , 42050
+625 , 42127 , 506 , 21 , 1 , 1 , 42050
+625 , 42128 , 505 , 21 , 1 , 1 , 42050
+625 , 42129 , 505 , 32 , 1 , 1 , 42050
+625 , 42130 , 505 , 32 , 1 , 1 , 42050
+625 , 42131 , 504 , 32 , 1 , 1 , 42050
+625 , 42132 , 504 , 32 , 1 , 1 , 42050
+625 , 42133 , 503 , 32 , 1 , 1 , 42050
+625 , 42134 , 503 , 32 , 1 , 1 , 42050
+625 , 42135 , 503 , 32 , 1 , 1 , 42050
+625 , 42136 , 502 , 32 , 1 , 1 , 42050
+625 , 42137 , 506 , 32 , 1 , 1 , 42050
+625 , 42138 , 502 , 32 , 1 , 1 , 42050
+625 , 42139 , 502 , 32 , 1 , 1 , 42050
+625 , 42140 , 500 , 24 , 1 , 1 , 42050
+625 , 42141 , 500 , 34 , 1 , 1 , 42050
+625 , 42142 , 513 , 21 , 1 , 1 , 42050
+625 , 42143 , 497 , 32 , 1 , 1 , 42050
+625 , 42144 , 501 , 34 , 1 , 1 , 42050
+625 , 42145 , 493 , 33 , 1 , 1 , 42050
+625 , 42146 , 496 , 32 , 1 , 1 , 42050
+625 , 42147 , 523 , 21 , 1 , 1 , 42050
+625 , 42148 , 492 , 34 , 1 , 1 , 42050
+625 , 42149 , 489 , 32 , 1 , 1 , 42050
+625 , 42150 , 486 , 32 , 1 , 1 , 42050
+625 , 42151 , 502 , 32 , 1 , 1 , 42050
+625 , 42152 , 482 , 33 , 1 , 1 , 42050
+625 , 42153 , 482 , 34 , 1 , 1 , 42050
+625 , 42154 , 485 , 32 , 1 , 1 , 42050
+625 , 42155 , 492 , 34 , 1 , 1 , 42050
+625 , 42156 , 475 , 32 , 1 , 1 , 42050
+625 , 42157 , 542 , 32 , 1 , 1 , 42050
+625 , 42158 , 471 , 34 , 1 , 1 , 42050
+625 , 42159 , 471 , 34 , 1 , 1 , 42050
+625 , 42160 , 513 , 21 , 1 , 1 , 42050
+625 , 42161 , 514 , 21 , 1 , 1 , 42050
+625 , 42162 , 496 , 32 , 1 , 1 , 42050
+625 , 42163 , 546 , 32 , 1 , 1 , 42050
+625 , 42164 , 489 , 32 , 1 , 1 , 42050
+625 , 42165 , 478 , 32 , 1 , 1 , 42050
+625 , 42166 , 475 , 32 , 1 , 1 , 42050
+625 , 42167 , 536 , 32 , 1 , 1 , 42050
+625 , 42168 , 467 , 32 , 1 , 1 , 42050
+625 , 42169 , 463 , 32 , 1 , 1 , 42050
+625 , 42170 , 459 , 32 , 1 , 1 , 42050
+625 , 42171 , 456 , 32 , 1 , 1 , 42050
+625 , 42172 , 484 , 41 , 1 , 1 , 42050
+625 , 42173 , 482 , 52 , 1 , 1 , 42050
+625 , 42174 , 480 , 52 , 1 , 1 , 42050
+625 , 42175 , 480 , 51 , 1 , 1 , 42050
+625 , 42176 , 480 , 51 , 1 , 1 , 42050
+625 , 42177 , 480 , 41 , 1 , 1 , 42050
+625 , 42178 , 479 , 51 , 1 , 1 , 42050
+625 , 42179 , 479 , 52 , 1 , 1 , 42050
+625 , 42180 , 479 , 52 , 1 , 1 , 42050
+625 , 42181 , 478 , 52 , 1 , 1 , 42050
+625 , 42182 , 478 , 52 , 1 , 1 , 42050
+625 , 42183 , 475 , 52 , 1 , 1 , 42050
+625 , 42184 , 474 , 41 , 1 , 1 , 42050
+625 , 42185 , 474 , 62 , 1 , 1 , 42050
+625 , 42186 , 473 , 52 , 1 , 1 , 42050
+625 , 42187 , 473 , 52 , 1 , 1 , 42050
+625 , 42188 , 473 , 52 , 1 , 1 , 42050
+625 , 42189 , 473 , 62 , 1 , 1 , 42050
+625 , 42190 , 472 , 52 , 1 , 1 , 42050
+625 , 42191 , 472 , 52 , 1 , 1 , 42050
+625 , 42192 , 471 , 52 , 1 , 1 , 42050
+625 , 42193 , 469 , 62 , 1 , 1 , 42050
+625 , 42194 , 467 , 52 , 1 , 1 , 42050
+625 , 42195 , 467 , 62 , 1 , 1 , 42050
+625 , 42196 , 466 , 52 , 1 , 1 , 42050
+625 , 42197 , 466 , 52 , 1 , 1 , 42050
+625 , 42198 , 465 , 52 , 1 , 1 , 42050
+625 , 42199 , 465 , 41 , 1 , 1 , 42050
+625 , 42200 , 465 , 41 , 1 , 1 , 42050
+625 , 42201 , 464 , 52 , 1 , 1 , 42050
+625 , 42202 , 463 , 52 , 1 , 1 , 42050
+625 , 42203 , 460 , 52 , 1 , 1 , 42050
+625 , 42204 , 458 , 42 , 1 , 1 , 42050
+625 , 42205 , 458 , 41 , 1 , 1 , 42050
+625 , 42206 , 458 , 41 , 1 , 1 , 42050
+625 , 42207 , 458 , 41 , 1 , 1 , 42050
+625 , 42208 , 458 , 31 , 1 , 1 , 42050
+625 , 42209 , 457 , 31 , 1 , 1 , 42050
+625 , 42210 , 457 , 52 , 1 , 1 , 42050
+625 , 42211 , 457 , 31 , 1 , 1 , 42050
+625 , 42212 , 456 , 31 , 1 , 1 , 42050
+625 , 42213 , 453 , 31 , 1 , 1 , 42050
+625 , 42214 , 451 , 41 , 1 , 1 , 42050
+625 , 42215 , 451 , 41 , 1 , 1 , 42050
+625 , 42216 , 450 , 31 , 1 , 1 , 42050
+625 , 42217 , 450 , 31 , 1 , 1 , 42050
+625 , 42218 , 450 , 21 , 1 , 1 , 42050
+625 , 42219 , 449 , 32 , 1 , 1 , 42050
+625 , 42220 , 449 , 21 , 1 , 1 , 42050
+625 , 42221 , 449 , 21 , 1 , 1 , 42050
+625 , 42222 , 448 , 31 , 1 , 1 , 42050
+625 , 42223 , 445 , 21 , 1 , 1 , 42050
+625 , 42224 , 443 , 31 , 1 , 1 , 42050
+625 , 42225 , 443 , 31 , 1 , 1 , 42050
+625 , 42226 , 443 , 21 , 1 , 1 , 42050
+625 , 42227 , 443 , 21 , 1 , 1 , 42050
+625 , 42228 , 442 , 21 , 1 , 1 , 42050
+625 , 42229 , 442 , 31 , 1 , 1 , 42050
+625 , 42230 , 442 , 31 , 1 , 1 , 42050
+625 , 42231 , 442 , 21 , 1 , 1 , 42050
+625 , 42232 , 442 , 21 , 1 , 1 , 42050
+625 , 42233 , 441 , 21 , 1 , 1 , 42050
+625 , 42234 , 441 , 21 , 1 , 1 , 42050
+625 , 42235 , 441 , 21 , 1 , 1 , 42050
+625 , 42236 , 441 , 21 , 1 , 1 , 42050
+625 , 42237 , 441 , 21 , 1 , 1 , 42050
+625 , 42238 , 441 , 21 , 1 , 1 , 42050
+625 , 42239 , 441 , 21 , 1 , 1 , 42050
+625 , 42240 , 441 , 21 , 1 , 1 , 42050
+625 , 42241 , 441 , 11 , 1 , 1 , 42050
+625 , 42242 , 441 , 21 , 1 , 1 , 42050
+625 , 42243 , 441 , 11 , 1 , 1 , 42050
+625 , 42244 , 628 , 21 , 1 , 1 , 42059 42070 42187 42132 42137 42134 42128 42156 42057 42125 42060 42225 42083 42177 42210 42123 42171 42106 42056 42240 42126 42202 42131 42145 42105 42218 42124 42108 42163 42170 42189 42074 42052 42068 42165 42053 42092 42205 42164 42062 42175 42086 42158 42139 42055 42174 42099 42236 42179 42216 42231 42146 42217 42182 42215 42157 42173 42069 42116 42064 42208 42154 42169 42147 42133 42150 42200 42223 42212 42201 42082 42198 42166 42214 42161 42084 42219 42081 42135 42235 42241 42080 42103 42117 42230 42101 42193 42237 42091 42199 42065 42088 42071 42243 42197 42113 42176 42160 42206 42242 42155 42196 42121 42192 42061 42238 42162 42076 42096 42153 42148 42136 42144 42168 42090 42075 42213 42094 42185 42089 42087 42118 42207 42222 42178 42073 42239 42181 42067 42115 42102 42138 42152 42184 42191 42114 42098 42054 42220 42143 42221 42058 42063 42233 42130 42183 42203 42209 42151 42100 42228 42097 42077 42079 42224 42129 42085 42190 42226 42229 42180 42122 42149 42109 42194 42234 42140 42188 42142 42172 42211 42093 42095 42167 42107 42204 42078 42111 42072 42051 42104 42195 42120 42066 42227 42119 42112 42232 42110 42186 42127 42159 42141
+626 , 42245 , 2 , 11 , 1 , 1 ,
+626 , 42246 , 99 , 31 , 1 , 1 , 42245
+626 , 42247 , 99 , 31 , 1 , 1 , 42245
+626 , 42248 , 99 , 31 , 1 , 1 , 42245
+626 , 42249 , 98 , 31 , 1 , 1 , 42245
+626 , 42250 , 98 , 31 , 1 , 1 , 42245
+626 , 42251 , 98 , 31 , 1 , 1 , 42245
+626 , 42252 , 97 , 31 , 1 , 1 , 42245
+626 , 42253 , 97 , 31 , 1 , 1 , 42245
+626 , 42254 , 96 , 31 , 1 , 1 , 42245
+626 , 42255 , 95 , 31 , 1 , 1 , 42245
+626 , 42256 , 95 , 31 , 1 , 1 , 42245
+626 , 42257 , 95 , 31 , 1 , 1 , 42245
+626 , 42258 , 95 , 31 , 1 , 1 , 42245
+626 , 42259 , 95 , 31 , 1 , 1 , 42245
+626 , 42260 , 94 , 31 , 1 , 1 , 42245
+626 , 42261 , 94 , 31 , 1 , 1 , 42245
+626 , 42262 , 94 , 31 , 1 , 1 , 42245
+626 , 42263 , 93 , 31 , 1 , 1 , 42245
+626 , 42264 , 93 , 31 , 1 , 1 , 42245
+626 , 42265 , 92 , 31 , 1 , 1 , 42245
+626 , 42266 , 90 , 31 , 1 , 1 , 42245
+626 , 42267 , 90 , 31 , 1 , 1 , 42245
+626 , 42268 , 90 , 21 , 1 , 1 , 42245
+626 , 42269 , 84 , 31 , 1 , 1 , 42245
+626 , 42270 , 63 , 31 , 1 , 1 , 42245
+626 , 42271 , 63 , 31 , 1 , 1 , 42245
+626 , 42272 , 63 , 41 , 1 , 1 , 42245
+626 , 42273 , 63 , 41 , 1 , 1 , 42245
+626 , 42274 , 63 , 41 , 1 , 1 , 42245
+626 , 42275 , 63 , 41 , 1 , 1 , 42245
+626 , 42276 , 63 , 41 , 1 , 1 , 42245
+626 , 42277 , 63 , 41 , 1 , 1 , 42245
+626 , 42278 , 63 , 41 , 1 , 1 , 42245
+626 , 42279 , 51 , 75 , 1 , 1 , 42245
+626 , 42280 , 51 , 75 , 1 , 1 , 42245
+626 , 42281 , 51 , 75 , 1 , 1 , 42245
+626 , 42282 , 51 , 75 , 1 , 1 , 42245
+626 , 42283 , 51 , 86 , 1 , 1 , 42245
+626 , 42284 , 51 , 78 , 1 , 1 , 42245
+626 , 42285 , 51 , 75 , 1 , 1 , 42245
+626 , 42286 , 51 , 75 , 1 , 1 , 42245
+626 , 42287 , 48 , 259 , 1 , 1 , 42245
+626 , 42288 , 48 , 260 , 1 , 1 , 42245
+626 , 42289 , 48 , 260 , 1 , 1 , 42245
+626 , 42290 , 48 , 260 , 1 , 1 , 42245
+626 , 42291 , 48 , 260 , 1 , 1 , 42245
+626 , 42292 , 48 , 260 , 1 , 1 , 42245
+626 , 42293 , 48 , 237 , 1 , 1 , 42245
+626 , 42294 , 48 , 237 , 1 , 1 , 42245
+626 , 42295 , 48 , 226 , 1 , 1 , 42245
+626 , 42296 , 48 , 250 , 1 , 1 , 42245
+626 , 42297 , 48 , 260 , 1 , 1 , 42245
+626 , 42298 , 48 , 260 , 1 , 1 , 42245
+626 , 42299 , 48 , 260 , 1 , 1 , 42245
+626 , 42300 , 48 , 256 , 1 , 1 , 42245
+626 , 42301 , 48 , 256 , 1 , 1 , 42245
+626 , 42302 , 48 , 256 , 1 , 1 , 42245
+626 , 42303 , 55 , 237 , 1 , 1 , 42245
+626 , 42304 , 54 , 248 , 1 , 1 , 42245
+626 , 42305 , 54 , 235 , 1 , 1 , 42245
+626 , 42306 , 54 , 267 , 1 , 1 , 42245
+626 , 42307 , 53 , 267 , 1 , 1 , 42245
+626 , 42308 , 53 , 234 , 1 , 1 , 42245
+626 , 42309 , 53 , 256 , 1 , 1 , 42245
+626 , 42310 , 52 , 245 , 1 , 1 , 42245
+626 , 42311 , 52 , 260 , 1 , 1 , 42245
+626 , 42312 , 51 , 245 , 1 , 1 , 42245
+626 , 42313 , 50 , 245 , 1 , 1 , 42245
+626 , 42314 , 50 , 352 , 1 , 1 , 42245
+626 , 42315 , 50 , 246 , 1 , 1 , 42245
+626 , 42316 , 49 , 289 , 1 , 1 , 42245
+626 , 42317 , 49 , 234 , 1 , 1 , 42245
+626 , 42318 , 49 , 255 , 1 , 1 , 42245
+626 , 42319 , 49 , 236 , 1 , 1 , 42245
+626 , 42320 , 48 , 237 , 1 , 1 , 42245
+626 , 42321 , 48 , 247 , 1 , 1 , 42245
+626 , 42322 , 48 , 237 , 1 , 1 , 42245
+626 , 42323 , 48 , 290 , 1 , 1 , 42245
+626 , 42324 , 47 , 346 , 1 , 1 , 42245
+626 , 42325 , 47 , 237 , 1 , 1 , 42245
+626 , 42326 , 47 , 247 , 1 , 1 , 42245
+626 , 42327 , 46 , 247 , 1 , 1 , 42245
+626 , 42328 , 45 , 248 , 1 , 1 , 42245
+626 , 42329 , 45 , 237 , 1 , 1 , 42245
+626 , 42330 , 45 , 269 , 1 , 1 , 42245
+626 , 42331 , 44 , 248 , 1 , 1 , 42245
+626 , 42332 , 44 , 312 , 1 , 1 , 42245
+626 , 42333 , 44 , 241 , 1 , 1 , 42245
+626 , 42334 , 43 , 238 , 1 , 1 , 42245
+626 , 42335 , 43 , 224 , 1 , 1 , 42245
+626 , 42336 , 43 , 242 , 1 , 1 , 42245
+626 , 42337 , 42 , 239 , 1 , 1 , 42245
+626 , 42338 , 42 , 238 , 1 , 1 , 42245
+626 , 42339 , 42 , 323 , 1 , 1 , 42245
+626 , 42340 , 42 , 312 , 1 , 1 , 42245
+626 , 42341 , 41 , 249 , 1 , 1 , 42245
+626 , 42342 , 41 , 238 , 1 , 1 , 42245
+626 , 42343 , 41 , 239 , 1 , 1 , 42245
+626 , 42344 , 40 , 238 , 1 , 1 , 42245
+626 , 42345 , 40 , 239 , 1 , 1 , 42245
+626 , 42346 , 40 , 344 , 1 , 1 , 42245
+626 , 42347 , 40 , 279 , 1 , 1 , 42245
+626 , 42348 , 39 , 235 , 1 , 1 , 42245
+626 , 42349 , 39 , 247 , 1 , 1 , 42245
+626 , 42350 , 39 , 237 , 1 , 1 , 42245
+626 , 42351 , 38 , 238 , 1 , 1 , 42245
+626 , 42352 , 38 , 258 , 1 , 1 , 42245
+626 , 42353 , 38 , 237 , 1 , 1 , 42245
+626 , 42354 , 38 , 322 , 1 , 1 , 42245
+626 , 42355 , 37 , 259 , 1 , 1 , 42245
+626 , 42356 , 37 , 353 , 1 , 1 , 42245
+626 , 42357 , 37 , 238 , 1 , 1 , 42245
+626 , 42358 , 36 , 239 , 1 , 1 , 42245
+626 , 42359 , 36 , 246 , 1 , 1 , 42245
+626 , 42360 , 36 , 257 , 1 , 1 , 42245
+626 , 42361 , 35 , 240 , 1 , 1 , 42245
+626 , 42362 , 35 , 292 , 1 , 1 , 42245
+626 , 42363 , 35 , 289 , 1 , 1 , 42245
+626 , 42364 , 34 , 262 , 1 , 1 , 42245
+626 , 42365 , 34 , 241 , 1 , 1 , 42245
+626 , 42366 , 34 , 241 , 1 , 1 , 42245
+626 , 42367 , 49 , 62 , 1 , 1 , 42245
+626 , 42368 , 49 , 62 , 1 , 1 , 42245
+626 , 42369 , 49 , 62 , 1 , 1 , 42245
+626 , 42370 , 49 , 62 , 1 , 1 , 42245
+626 , 42371 , 49 , 52 , 1 , 1 , 42245
+626 , 42372 , 48 , 52 , 1 , 1 , 42245
+626 , 42373 , 48 , 52 , 1 , 1 , 42245
+626 , 42374 , 48 , 52 , 1 , 1 , 42245
+626 , 42375 , 47 , 63 , 1 , 1 , 42245
+626 , 42376 , 47 , 62 , 1 , 1 , 42245
+626 , 42377 , 45 , 62 , 1 , 1 , 42245
+626 , 42378 , 45 , 62 , 1 , 1 , 42245
+626 , 42379 , 45 , 62 , 1 , 1 , 42245
+626 , 42380 , 45 , 52 , 1 , 1 , 42245
+626 , 42381 , 45 , 52 , 1 , 1 , 42245
+626 , 42382 , 44 , 52 , 1 , 1 , 42245
+626 , 42383 , 44 , 62 , 1 , 1 , 42245
+626 , 42384 , 44 , 62 , 1 , 1 , 42245
+626 , 42385 , 44 , 62 , 1 , 1 , 42245
+626 , 42386 , 43 , 62 , 1 , 1 , 42245
+626 , 42387 , 42 , 52 , 1 , 1 , 42245
+626 , 42388 , 41 , 52 , 1 , 1 , 42245
+626 , 42389 , 41 , 52 , 1 , 1 , 42245
+626 , 42390 , 41 , 52 , 1 , 1 , 42245
+626 , 42391 , 41 , 52 , 1 , 1 , 42245
+626 , 42392 , 40 , 52 , 1 , 1 , 42245
+626 , 42393 , 40 , 41 , 1 , 1 , 42245
+626 , 42394 , 40 , 52 , 1 , 1 , 42245
+626 , 42395 , 40 , 52 , 1 , 1 , 42245
+626 , 42396 , 39 , 41 , 1 , 1 , 42245
+626 , 42397 , 37 , 62 , 1 , 1 , 42245
+626 , 42398 , 37 , 52 , 1 , 1 , 42245
+626 , 42399 , 37 , 52 , 1 , 1 , 42245
+626 , 42400 , 36 , 52 , 1 , 1 , 42245
+626 , 42401 , 36 , 41 , 1 , 1 , 42245
+626 , 42402 , 36 , 62 , 1 , 1 , 42245
+626 , 42403 , 36 , 52 , 1 , 1 , 42245
+626 , 42404 , 36 , 52 , 1 , 1 , 42245
+626 , 42405 , 35 , 52 , 1 , 1 , 42245
+626 , 42406 , 35 , 52 , 1 , 1 , 42245
+626 , 42407 , 33 , 52 , 1 , 1 , 42245
+626 , 42408 , 33 , 52 , 1 , 1 , 42245
+626 , 42409 , 32 , 52 , 1 , 1 , 42245
+626 , 42410 , 32 , 52 , 1 , 1 , 42245
+626 , 42411 , 32 , 52 , 1 , 1 , 42245
+626 , 42412 , 32 , 52 , 1 , 1 , 42245
+626 , 42413 , 32 , 52 , 1 , 1 , 42245
+626 , 42414 , 32 , 52 , 1 , 1 , 42245
+626 , 42415 , 31 , 52 , 1 , 1 , 42245
+626 , 42416 , 31 , 52 , 1 , 1 , 42245
+626 , 42417 , 29 , 52 , 1 , 1 , 42245
+626 , 42418 , 28 , 52 , 1 , 1 , 42245
+626 , 42419 , 28 , 52 , 1 , 1 , 42245
+626 , 42420 , 28 , 52 , 1 , 1 , 42245
+626 , 42421 , 28 , 52 , 1 , 1 , 42245
+626 , 42422 , 28 , 52 , 1 , 1 , 42245
+626 , 42423 , 28 , 41 , 1 , 1 , 42245
+626 , 42424 , 28 , 52 , 1 , 1 , 42245
+626 , 42425 , 27 , 52 , 1 , 1 , 42245
+626 , 42426 , 27 , 52 , 1 , 1 , 42245
+626 , 42427 , 26 , 41 , 1 , 1 , 42245
+626 , 42428 , 26 , 52 , 1 , 1 , 42245
+626 , 42429 , 26 , 41 , 1 , 1 , 42245
+626 , 42430 , 26 , 52 , 1 , 1 , 42245
+626 , 42431 , 26 , 41 , 1 , 1 , 42245
+626 , 42432 , 26 , 41 , 1 , 1 , 42245
+626 , 42433 , 26 , 52 , 1 , 1 , 42245
+626 , 42434 , 26 , 41 , 1 , 1 , 42245
+626 , 42435 , 25 , 41 , 1 , 1 , 42245
+626 , 42436 , 25 , 41 , 1 , 1 , 42245
+626 , 42437 , 25 , 41 , 1 , 1 , 42245
+626 , 42438 , 25 , 41 , 1 , 1 , 42245
+626 , 42439 , 427 , 0 , 1 , 1 , 42259 42332 42409 42408 42318 42298 42357 42405 42253 42394 42413 42361 42374 42268 42351 42286 42309 42345 42329 42417 42369 42425 42248 42330 42265 42326 42416 42341 42294 42252 42426 42384 42307 42382 42410 42322 42283 42411 42376 42250 42383 42282 42346 42387 42407 42335 42256 42273 42354 42274 42378 42285 42388 42302 42359 42287 42292 42365 42433 42260 42437 42338 42375 42379 42347 42303 42430 42358 42336 42278 42343 42371 42344 42263 42316 42432 42390 42380 42323 42269 42291 42284 42331 42296 42342 42295 42289 42301 42334 42397 42414 42423 42436 42424 42315 42304 42300 42373 42427 42246 42297 42348 42392 42400 42401 42428 42421 42275 42271 42434 42266 42280 42337 42308 42258 42311 42418 42438 42352 42435 42333 42320 42364 42314 42276 42281 42325 42321 42290 42310 42355 42386 42431 42391 42419 42349 42299 42406 42362 42404 42403 42267 42312 42372 42254 42327 42398 42429 42370 42393 42319 42261 42420 42305 42272 42377 42396 42395 42340 42339 42277 42412 42324 42249 42367 42353 42385 42317 42257 42313 42255 42247 42288 42363 42251 42264 42389 42415 42328 42402 42368 42366 42422 42270 42399 42306 42360 42350 42293 42279 42356 42381 42262
+626 , 42440 , 494 , 41 , 1 , 1 , 42439
+626 , 42441 , 494 , 41 , 1 , 1 , 42439
+626 , 42442 , 494 , 52 , 1 , 1 , 42439
+626 , 42443 , 493 , 52 , 1 , 1 , 42439
+626 , 42444 , 493 , 52 , 1 , 1 , 42439
+626 , 42445 , 491 , 52 , 1 , 1 , 42439
+626 , 42446 , 491 , 52 , 1 , 1 , 42439
+626 , 42447 , 490 , 52 , 1 , 1 , 42439
+626 , 42448 , 490 , 52 , 1 , 1 , 42439
+626 , 42449 , 490 , 62 , 1 , 1 , 42439
+626 , 42450 , 490 , 62 , 1 , 1 , 42439
+626 , 42451 , 490 , 62 , 1 , 1 , 42439
+626 , 42452 , 490 , 62 , 1 , 1 , 42439
+626 , 42453 , 490 , 62 , 1 , 1 , 42439
+626 , 42454 , 490 , 62 , 1 , 1 , 42439
+626 , 42455 , 486 , 62 , 1 , 1 , 42439
+626 , 42456 , 486 , 62 , 1 , 1 , 42439
+626 , 42457 , 486 , 62 , 1 , 1 , 42439
+626 , 42458 , 486 , 52 , 1 , 1 , 42439
+626 , 42459 , 486 , 62 , 1 , 1 , 42439
+626 , 42460 , 486 , 41 , 1 , 1 , 42439
+626 , 42461 , 486 , 62 , 1 , 1 , 42439
+626 , 42462 , 486 , 62 , 1 , 1 , 42439
+626 , 42463 , 486 , 62 , 1 , 1 , 42439
+626 , 42464 , 486 , 52 , 1 , 1 , 42439
+626 , 42465 , 481 , 62 , 1 , 1 , 42439
+626 , 42466 , 481 , 62 , 1 , 1 , 42439
+626 , 42467 , 481 , 72 , 1 , 1 , 42439
+626 , 42468 , 481 , 62 , 1 , 1 , 42439
+626 , 42469 , 481 , 62 , 1 , 1 , 42439
+626 , 42470 , 480 , 42 , 1 , 1 , 42439
+626 , 42471 , 480 , 52 , 1 , 1 , 42439
+626 , 42472 , 480 , 62 , 1 , 1 , 42439
+626 , 42473 , 511 , 12 , 1 , 1 , 42439
+626 , 42474 , 511 , 13 , 1 , 1 , 42439
+626 , 42475 , 511 , 12 , 1 , 1 , 42439
+626 , 42476 , 511 , 13 , 1 , 1 , 42439
+626 , 42477 , 511 , 11 , 1 , 1 , 42439
+626 , 42478 , 511 , 13 , 1 , 1 , 42439
+626 , 42479 , 511 , 11 , 1 , 1 , 42439
+626 , 42480 , 511 , 13 , 1 , 1 , 42439
+626 , 42481 , 510 , 41 , 1 , 1 , 42439
+626 , 42482 , 508 , 43 , 1 , 1 , 42439
+626 , 42483 , 508 , 43 , 1 , 1 , 42439
+626 , 42484 , 508 , 43 , 1 , 1 , 42439
+626 , 42485 , 508 , 43 , 1 , 1 , 42439
+626 , 42486 , 508 , 43 , 1 , 1 , 42439
+626 , 42487 , 508 , 43 , 1 , 1 , 42439
+626 , 42488 , 508 , 43 , 1 , 1 , 42439
+626 , 42489 , 508 , 43 , 1 , 1 , 42439
+626 , 42490 , 508 , 43 , 1 , 1 , 42439
+626 , 42491 , 508 , 43 , 1 , 1 , 42439
+626 , 42492 , 508 , 43 , 1 , 1 , 42439
+626 , 42493 , 508 , 33 , 1 , 1 , 42439
+626 , 42494 , 508 , 33 , 1 , 1 , 42439
+626 , 42495 , 509 , 42 , 1 , 1 , 42439
+626 , 42496 , 508 , 33 , 1 , 1 , 42439
+626 , 42497 , 505 , 33 , 1 , 1 , 42439
+626 , 42498 , 504 , 21 , 1 , 1 , 42439
+626 , 42499 , 504 , 21 , 1 , 1 , 42439
+626 , 42500 , 509 , 22 , 1 , 1 , 42439
+626 , 42501 , 509 , 21 , 1 , 1 , 42439
+626 , 42502 , 502 , 22 , 1 , 1 , 42439
+626 , 42503 , 503 , 21 , 1 , 1 , 42439
+626 , 42504 , 503 , 21 , 1 , 1 , 42439
+626 , 42505 , 501 , 21 , 1 , 1 , 42439
+626 , 42506 , 502 , 21 , 1 , 1 , 42439
+626 , 42507 , 501 , 22 , 1 , 1 , 42439
+626 , 42508 , 501 , 21 , 1 , 1 , 42439
+626 , 42509 , 502 , 21 , 1 , 1 , 42439
+626 , 42510 , 504 , 21 , 1 , 1 , 42439
+626 , 42511 , 500 , 32 , 1 , 1 , 42439
+626 , 42512 , 498 , 32 , 1 , 1 , 42439
+626 , 42513 , 505 , 32 , 1 , 1 , 42439
+626 , 42514 , 500 , 32 , 1 , 1 , 42439
+626 , 42515 , 498 , 32 , 1 , 1 , 42439
+626 , 42516 , 498 , 32 , 1 , 1 , 42439
+626 , 42517 , 500 , 32 , 1 , 1 , 42439
+626 , 42518 , 497 , 32 , 1 , 1 , 42439
+626 , 42519 , 496 , 22 , 1 , 1 , 42439
+626 , 42520 , 496 , 33 , 1 , 1 , 42439
+626 , 42521 , 495 , 34 , 1 , 1 , 42439
+626 , 42522 , 495 , 35 , 1 , 1 , 42439
+626 , 42523 , 492 , 32 , 1 , 1 , 42439
+626 , 42524 , 492 , 32 , 1 , 1 , 42439
+626 , 42525 , 488 , 22 , 1 , 1 , 42439
+626 , 42526 , 493 , 22 , 1 , 1 , 42439
+626 , 42527 , 488 , 22 , 1 , 1 , 42439
+626 , 42528 , 488 , 32 , 1 , 1 , 42439
+626 , 42529 , 527 , 21 , 1 , 1 , 42439
+626 , 42530 , 527 , 32 , 1 , 1 , 42439
+626 , 42531 , 487 , 32 , 1 , 1 , 42439
+626 , 42532 , 486 , 32 , 1 , 1 , 42439
+626 , 42533 , 486 , 32 , 1 , 1 , 42439
+626 , 42534 , 486 , 32 , 1 , 1 , 42439
+626 , 42535 , 487 , 32 , 1 , 1 , 42439
+626 , 42536 , 482 , 32 , 1 , 1 , 42439
+626 , 42537 , 497 , 32 , 1 , 1 , 42439
+626 , 42538 , 479 , 32 , 1 , 1 , 42439
+626 , 42539 , 480 , 33 , 1 , 1 , 42439
+626 , 42540 , 476 , 32 , 1 , 1 , 42439
+626 , 42541 , 513 , 21 , 1 , 1 , 42439
+626 , 42542 , 479 , 33 , 1 , 1 , 42439
+626 , 42543 , 487 , 21 , 1 , 1 , 42439
+626 , 42544 , 473 , 24 , 1 , 1 , 42439
+626 , 42545 , 472 , 32 , 1 , 1 , 42439
+626 , 42546 , 469 , 33 , 1 , 1 , 42439
+626 , 42547 , 468 , 33 , 1 , 1 , 42439
+626 , 42548 , 466 , 36 , 1 , 1 , 42439
+626 , 42549 , 498 , 21 , 1 , 1 , 42439
+626 , 42550 , 483 , 33 , 1 , 1 , 42439
+626 , 42551 , 483 , 33 , 1 , 1 , 42439
+626 , 42552 , 475 , 33 , 1 , 1 , 42439
+626 , 42553 , 475 , 33 , 1 , 1 , 42439
+626 , 42554 , 550 , 32 , 1 , 1 , 42439
+626 , 42555 , 485 , 32 , 1 , 1 , 42439
+626 , 42556 , 502 , 21 , 1 , 1 , 42439
+626 , 42557 , 465 , 32 , 1 , 1 , 42439
+626 , 42558 , 463 , 34 , 1 , 1 , 42439
+626 , 42559 , 462 , 35 , 1 , 1 , 42439
+626 , 42560 , 459 , 32 , 1 , 1 , 42439
+626 , 42561 , 478 , 62 , 1 , 1 , 42439
+626 , 42562 , 478 , 62 , 1 , 1 , 42439
+626 , 42563 , 478 , 62 , 1 , 1 , 42439
+626 , 42564 , 478 , 52 , 1 , 1 , 42439
+626 , 42565 , 478 , 82 , 1 , 1 , 42439
+626 , 42566 , 477 , 82 , 1 , 1 , 42439
+626 , 42567 , 477 , 82 , 1 , 1 , 42439
+626 , 42568 , 476 , 72 , 1 , 1 , 42439
+626 , 42569 , 476 , 62 , 1 , 1 , 42439
+626 , 42570 , 476 , 83 , 1 , 1 , 42439
+626 , 42571 , 474 , 52 , 1 , 1 , 42439
+626 , 42572 , 474 , 41 , 1 , 1 , 42439
+626 , 42573 , 474 , 72 , 1 , 1 , 42439
+626 , 42574 , 474 , 62 , 1 , 1 , 42439
+626 , 42575 , 473 , 41 , 1 , 1 , 42439
+626 , 42576 , 473 , 52 , 1 , 1 , 42439
+626 , 42577 , 473 , 72 , 1 , 1 , 42439
+626 , 42578 , 473 , 52 , 1 , 1 , 42439
+626 , 42579 , 473 , 63 , 1 , 1 , 42439
+626 , 42580 , 473 , 63 , 1 , 1 , 42439
+626 , 42581 , 470 , 62 , 1 , 1 , 42439
+626 , 42582 , 470 , 52 , 1 , 1 , 42439
+626 , 42583 , 470 , 52 , 1 , 1 , 42439
+626 , 42584 , 469 , 41 , 1 , 1 , 42439
+626 , 42585 , 469 , 73 , 1 , 1 , 42439
+626 , 42586 , 469 , 63 , 1 , 1 , 42439
+626 , 42587 , 469 , 52 , 1 , 1 , 42439
+626 , 42588 , 468 , 41 , 1 , 1 , 42439
+626 , 42589 , 468 , 31 , 1 , 1 , 42439
+626 , 42590 , 467 , 41 , 1 , 1 , 42439
+626 , 42591 , 465 , 42 , 1 , 1 , 42439
+626 , 42592 , 465 , 62 , 1 , 1 , 42439
+626 , 42593 , 465 , 62 , 1 , 1 , 42439
+626 , 42594 , 465 , 52 , 1 , 1 , 42439
+626 , 42595 , 465 , 52 , 1 , 1 , 42439
+626 , 42596 , 464 , 52 , 1 , 1 , 42439
+626 , 42597 , 464 , 41 , 1 , 1 , 42439
+626 , 42598 , 463 , 41 , 1 , 1 , 42439
+626 , 42599 , 463 , 31 , 1 , 1 , 42439
+626 , 42600 , 463 , 31 , 1 , 1 , 42439
+626 , 42601 , 461 , 72 , 1 , 1 , 42439
+626 , 42602 , 460 , 62 , 1 , 1 , 42439
+626 , 42603 , 460 , 52 , 1 , 1 , 42439
+626 , 42604 , 460 , 52 , 1 , 1 , 42439
+626 , 42605 , 460 , 52 , 1 , 1 , 42439
+626 , 42606 , 460 , 52 , 1 , 1 , 42439
+626 , 42607 , 460 , 41 , 1 , 1 , 42439
+626 , 42608 , 458 , 41 , 1 , 1 , 42439
+626 , 42609 , 458 , 31 , 1 , 1 , 42439
+626 , 42610 , 458 , 31 , 1 , 1 , 42439
+626 , 42611 , 456 , 31 , 1 , 1 , 42439
+626 , 42612 , 456 , 21 , 1 , 1 , 42439
+626 , 42613 , 455 , 31 , 1 , 1 , 42439
+626 , 42614 , 455 , 21 , 1 , 1 , 42439
+626 , 42615 , 455 , 21 , 1 , 1 , 42439
+626 , 42616 , 455 , 21 , 1 , 1 , 42439
+626 , 42617 , 455 , 21 , 1 , 1 , 42439
+626 , 42618 , 454 , 21 , 1 , 1 , 42439
+626 , 42619 , 454 , 21 , 1 , 1 , 42439
+626 , 42620 , 454 , 21 , 1 , 1 , 42439
+626 , 42621 , 452 , 21 , 1 , 1 , 42439
+626 , 42622 , 452 , 11 , 1 , 1 , 42439
+626 , 42623 , 452 , 21 , 1 , 1 , 42439
+626 , 42624 , 452 , 21 , 1 , 1 , 42439
+626 , 42625 , 452 , 11 , 1 , 1 , 42439
+626 , 42626 , 452 , 11 , 1 , 1 , 42439
+626 , 42627 , 452 , 11 , 1 , 1 , 42439
+626 , 42628 , 452 , 11 , 1 , 1 , 42439
+626 , 42629 , 452 , 21 , 1 , 1 , 42439
+626 , 42630 , 452 , 11 , 1 , 1 , 42439
+626 , 42631 , 452 , 11 , 1 , 1 , 42439
+626 , 42632 , 452 , 11 , 1 , 1 , 42439
+626 , 42633 , 635 , 21 , 1 , 1 , 42508 42458 42469 42462 42525 42488 42617 42465 42512 42605 42607 42568 42571 42478 42591 42615 42578 42453 42586 42563 42557 42517 42515 42479 42490 42503 42559 42620 42505 42539 42444 42581 42521 42489 42623 42548 42454 42507 42564 42562 42509 42452 42518 42614 42537 42527 42463 42545 42621 42593 42491 42561 42604 42532 42510 42572 42570 42625 42480 42596 42497 42519 42580 42610 42579 42472 42486 42500 42477 42467 42595 42511 42487 42577 42468 42590 42459 42514 42484 42550 42471 42600 42611 42482 42494 42543 42632 42442 42449 42585 42603 42542 42628 42440 42481 42575 42626 42501 42584 42470 42630 42566 42504 42629 42546 42473 42583 42461 42606 42496 42540 42589 42522 42601 42547 42513 42573 42529 42599 42457 42622 42526 42624 42554 42485 42451 42523 42466 42538 42560 42551 42594 42544 42618 42602 42450 42613 42447 42520 42533 42536 42567 42541 42506 42597 42588 42598 42612 42616 42608 42627 42549 42574 42582 42502 42556 42569 42530 42475 42558 42443 42499 42441 42609 42460 42492 42498 42448 42455 42483 42555 42464 42456 42576 42474 42565 42516 42619 42476 42534 42552 42553 42531 42631 42528 42587 42445 42493 42446 42535 42592 42495 42524
+627 , 42634 , 32 , 92 , 1 , 1 ,
+627 , 42635 , 32 , 92 , 1 , 1 ,
+627 , 42636 , 32 , 92 , 1 , 1 ,
+627 , 42637 , 32 , 92 , 1 , 1 ,
+627 , 42638 , 32 , 92 , 1 , 1 ,
+627 , 42639 , 32 , 92 , 1 , 1 ,
+627 , 42640 , 32 , 82 , 1 , 1 ,
+627 , 42641 , 32 , 93 , 1 , 1 ,
+627 , 42642 , 32 , 92 , 1 , 1 ,
+627 , 42643 , 31 , 92 , 1 , 1 ,
+627 , 42644 , 30 , 103 , 1 , 1 ,
+627 , 42645 , 30 , 103 , 1 , 1 ,
+627 , 42646 , 30 , 92 , 1 , 1 ,
+627 , 42647 , 29 , 92 , 1 , 1 ,
+627 , 42648 , 29 , 92 , 1 , 1 ,
+627 , 42649 , 29 , 103 , 1 , 1 ,
+627 , 42650 , 29 , 103 , 1 , 1 ,
+627 , 42651 , 29 , 103 , 1 , 1 ,
+627 , 42652 , 28 , 92 , 1 , 1 ,
+627 , 42653 , 28 , 104 , 1 , 1 ,
+627 , 42654 , 26 , 103 , 1 , 1 ,
+627 , 42655 , 26 , 113 , 1 , 1 ,
+627 , 42656 , 25 , 113 , 1 , 1 ,
+627 , 42657 , 25 , 103 , 1 , 1 ,
+627 , 42658 , 24 , 113 , 1 , 1 ,
+627 , 42659 , 24 , 113 , 1 , 1 ,
+627 , 42660 , 24 , 113 , 1 , 1 ,
+627 , 42661 , 24 , 113 , 1 , 1 ,
+627 , 42662 , 24 , 113 , 1 , 1 ,
+627 , 42663 , 23 , 123 , 1 , 1 ,
+627 , 42664 , 22 , 123 , 1 , 1 ,
+627 , 42665 , 22 , 133 , 1 , 1 ,
+627 , 42666 , 22 , 123 , 1 , 1 ,
+627 , 42667 , 21 , 133 , 1 , 1 ,
+627 , 42668 , 21 , 143 , 1 , 1 ,
+627 , 42669 , 21 , 143 , 1 , 1 ,
+627 , 42670 , 21 , 133 , 1 , 1 ,
+627 , 42671 , 21 , 133 , 1 , 1 ,
+627 , 42672 , 21 , 133 , 1 , 1 ,
+627 , 42673 , 21 , 133 , 1 , 1 ,
+627 , 42674 , 19 , 134 , 1 , 1 ,
+627 , 42675 , 19 , 123 , 1 , 1 ,
+627 , 42676 , 19 , 123 , 1 , 1 ,
+627 , 42677 , 19 , 123 , 1 , 1 ,
+627 , 42678 , 18 , 113 , 1 , 1 ,
+627 , 42679 , 18 , 113 , 1 , 1 ,
+627 , 42680 , 18 , 113 , 1 , 1 ,
+627 , 42681 , 18 , 123 , 1 , 1 ,
+627 , 42682 , 18 , 123 , 1 , 1 ,
+627 , 42683 , 18 , 123 , 1 , 1 ,
+627 , 42684 , 15 , 103 , 1 , 1 ,
+627 , 42685 , 15 , 123 , 1 , 1 ,
+627 , 42686 , 15 , 123 , 1 , 1 ,
+627 , 42687 , 15 , 123 , 1 , 1 ,
+627 , 42688 , 14 , 123 , 1 , 1 ,
+627 , 42689 , 14 , 123 , 1 , 1 ,
+627 , 42690 , 14 , 133 , 1 , 1 ,
+627 , 42691 , 14 , 123 , 1 , 1 ,
+627 , 42692 , 13 , 123 , 1 , 1 ,
+627 , 42693 , 13 , 133 , 1 , 1 ,
+627 , 42694 , 11 , 123 , 1 , 1 ,
+627 , 42695 , 10 , 123 , 1 , 1 ,
+627 , 42696 , 10 , 123 , 1 , 1 ,
+627 , 42697 , 10 , 123 , 1 , 1 ,
+627 , 42698 , 9 , 113 , 1 , 1 ,
+627 , 42699 , 9 , 133 , 1 , 1 ,
+627 , 42700 , 9 , 133 , 1 , 1 ,
+627 , 42701 , 8 , 144 , 1 , 1 ,
+627 , 42702 , 8 , 133 , 1 , 1 ,
+627 , 42703 , 8 , 133 , 1 , 1 ,
+627 , 42704 , 7 , 133 , 1 , 1 ,
+627 , 42705 , 7 , 133 , 1 , 1 ,
+627 , 42706 , 6 , 133 , 1 , 1 ,
+627 , 42707 , 6 , 133 , 1 , 1 ,
+627 , 42708 , 6 , 123 , 1 , 1 ,
+627 , 42709 , 6 , 133 , 1 , 1 ,
+627 , 42710 , 6 , 133 , 1 , 1 ,
+627 , 42711 , 6 , 123 , 1 , 1 ,
+627 , 42712 , 6 , 143 , 1 , 1 ,
+627 , 42713 , 6 , 144 , 1 , 1 ,
+627 , 42714 , 5 , 144 , 1 , 1 ,
+627 , 42715 , 4 , 144 , 1 , 1 ,
+627 , 42716 , 4 , 144 , 1 , 1 ,
+627 , 42717 , 4 , 144 , 1 , 1 ,
+627 , 42718 , 4 , 134 , 1 , 1 ,
+627 , 42719 , 4 , 133 , 1 , 1 ,
+627 , 42720 , 4 , 124 , 1 , 1 ,
+627 , 42721 , 4 , 123 , 1 , 1 ,
+627 , 42722 , 4 , 123 , 1 , 1 ,
+627 , 42723 , 4 , 123 , 1 , 1 ,
+627 , 42724 , 2 , 123 , 1 , 1 ,
+627 , 42725 , 2 , 123 , 1 , 1 ,
+627 , 42726 , 2 , 123 , 1 , 1 ,
+627 , 42727 , 2 , 133 , 1 , 1 ,
+627 , 42728 , 2 , 123 , 1 , 1 ,
+627 , 42729 , 2 , 133 , 1 , 1 ,
+627 , 42730 , 2 , 123 , 1 , 1 ,
+627 , 42731 , 2 , 123 , 1 , 1 ,
+627 , 42732 , 2 , 123 , 1 , 1 ,
+627 , 42733 , 2 , 123 , 1 , 1 ,
+627 , 42734 , 256 , 144 , 1 , 1 , 42667 42661 42703 42647 42635 42727 42653 42650 42725 42668 42671 42639 42641 42655 42713 42724 42732 42670 42649 42728 42702 42657 42683 42697 42664 42681 42700 42660 42708 42666 42662 42644 42730 42669 42699 42717 42719 42722 42637 42682 42691 42696 42706 42678 42646 42652 42674 42711 42695 42715 42712 42642 42688 42709 42720 42679 42693 42656 42654 42733 42704 42677 42701 42658 42731 42690 42648 42645 42689 42634 42692 42718 42726 42694 42643 42659 42675 42729 42723 42676 42651 42710 42687 42673 42714 42707 42686 42672 42665 42685 42636 42640 42638 42698 42705 42684 42680 42716 42721 42663
+628 , 42735 , 163 , 82 , 1 , 1 ,
+628 , 42736 , 163 , 82 , 1 , 1 ,
+628 , 42737 , 161 , 92 , 1 , 1 ,
+628 , 42738 , 158 , 92 , 1 , 1 ,
+628 , 42739 , 157 , 93 , 1 , 1 ,
+628 , 42740 , 157 , 93 , 1 , 1 ,
+628 , 42741 , 157 , 92 , 1 , 1 ,
+628 , 42742 , 152 , 83 , 1 , 1 ,
+628 , 42743 , 150 , 82 , 1 , 1 ,
+628 , 42744 , 150 , 82 , 1 , 1 ,
+628 , 42745 , 150 , 82 , 1 , 1 ,
+628 , 42746 , 174 , 82 , 1 , 1 ,
+628 , 42747 , 174 , 82 , 1 , 1 ,
+628 , 42748 , 174 , 82 , 1 , 1 ,
+628 , 42749 , 173 , 82 , 1 , 1 ,
+628 , 42750 , 174 , 83 , 1 , 1 ,
+628 , 42751 , 174 , 83 , 1 , 1 ,
+628 , 42752 , 174 , 83 , 1 , 1 ,
+628 , 42753 , 174 , 82 , 1 , 1 ,
+628 , 42754 , 173 , 92 , 1 , 1 ,
+628 , 42755 , 173 , 92 , 1 , 1 ,
+628 , 42756 , 169 , 92 , 1 , 1 ,
+628 , 42757 , 169 , 92 , 1 , 1 ,
+628 , 42758 , 169 , 92 , 1 , 1 ,
+628 , 42759 , 169 , 92 , 1 , 1 ,
+628 , 42760 , 152 , 82 , 1 , 1 ,
+628 , 42761 , 152 , 93 , 1 , 1 ,
+628 , 42762 , 169 , 92 , 1 , 1 ,
+628 , 42763 , 153 , 93 , 1 , 1 ,
+628 , 42764 , 157 , 93 , 1 , 1 ,
+628 , 42765 , 169 , 82 , 1 , 1 ,
+628 , 42766 , 168 , 92 , 1 , 1 ,
+628 , 42767 , 163 , 102 , 1 , 1 ,
+628 , 42768 , 163 , 103 , 1 , 1 ,
+628 , 42769 , 163 , 92 , 1 , 1 ,
+628 , 42770 , 163 , 103 , 1 , 1 ,
+628 , 42771 , 69 , 93 , 1 , 1 ,
+628 , 42772 , 69 , 103 , 1 , 1 ,
+628 , 42773 , 69 , 93 , 1 , 1 ,
+628 , 42774 , 69 , 93 , 1 , 1 ,
+628 , 42775 , 69 , 103 , 1 , 1 ,
+628 , 42776 , 69 , 103 , 1 , 1 ,
+628 , 42777 , 69 , 103 , 1 , 1 ,
+628 , 42778 , 69 , 103 , 1 , 1 ,
+628 , 42779 , 69 , 103 , 1 , 1 ,
+628 , 42780 , 15 , 235 , 1 , 1 ,
+628 , 42781 , 15 , 179 , 1 , 1 ,
+628 , 42782 , 15 , 179 , 1 , 1 ,
+628 , 42783 , 15 , 187 , 1 , 1 ,
+628 , 42784 , 15 , 187 , 1 , 1 ,
+628 , 42785 , 15 , 180 , 1 , 1 ,
+628 , 42786 , 15 , 231 , 1 , 1 ,
+628 , 42787 , 15 , 188 , 1 , 1 ,
+628 , 42788 , 8 , 487 , 1 , 1 ,
+628 , 42789 , 8 , 467 , 1 , 1 ,
+628 , 42790 , 8 , 457 , 1 , 1 ,
+628 , 42791 , 8 , 477 , 1 , 1 ,
+628 , 42792 , 8 , 487 , 1 , 1 ,
+628 , 42793 , 8 , 477 , 1 , 1 ,
+628 , 42794 , 8 , 477 , 1 , 1 ,
+628 , 42795 , 8 , 500 , 1 , 1 ,
+628 , 42796 , 8 , 510 , 1 , 1 ,
+628 , 42797 , 8 , 510 , 1 , 1 ,
+628 , 42798 , 8 , 520 , 1 , 1 ,
+628 , 42799 , 8 , 520 , 1 , 1 ,
+628 , 42800 , 8 , 531 , 1 , 1 ,
+628 , 42801 , 8 , 551 , 1 , 1 ,
+628 , 42802 , 8 , 551 , 1 , 1 ,
+628 , 42803 , 8 , 571 , 1 , 1 ,
+628 , 42804 , 27 , 345 , 1 , 1 ,
+628 , 42805 , 27 , 397 , 1 , 1 ,
+628 , 42806 , 26 , 356 , 1 , 1 ,
+628 , 42807 , 26 , 377 , 1 , 1 ,
+628 , 42808 , 25 , 356 , 1 , 1 ,
+628 , 42809 , 25 , 440 , 1 , 1 ,
+628 , 42810 , 25 , 387 , 1 , 1 ,
+628 , 42811 , 24 , 389 , 1 , 1 ,
+628 , 42812 , 24 , 405 , 1 , 1 ,
+628 , 42813 , 23 , 531 , 1 , 1 ,
+628 , 42814 , 23 , 426 , 1 , 1 ,
+628 , 42815 , 23 , 454 , 1 , 1 ,
+628 , 42816 , 22 , 458 , 1 , 1 ,
+628 , 42817 , 22 , 520 , 1 , 1 ,
+628 , 42818 , 22 , 479 , 1 , 1 ,
+628 , 42819 , 21 , 500 , 1 , 1 ,
+628 , 42820 , 20 , 489 , 1 , 1 ,
+628 , 42821 , 20 , 602 , 1 , 1 ,
+628 , 42822 , 20 , 479 , 1 , 1 ,
+628 , 42823 , 19 , 478 , 1 , 1 ,
+628 , 42824 , 19 , 469 , 1 , 1 ,
+628 , 42825 , 19 , 479 , 1 , 1 ,
+628 , 42826 , 18 , 596 , 1 , 1 ,
+628 , 42827 , 18 , 526 , 1 , 1 ,
+628 , 42828 , 18 , 555 , 1 , 1 ,
+628 , 42829 , 17 , 658 , 1 , 1 ,
+628 , 42830 , 17 , 562 , 1 , 1 ,
+628 , 42831 , 17 , 543 , 1 , 1 ,
+628 , 42832 , 16 , 532 , 1 , 1 ,
+628 , 42833 , 16 , 606 , 1 , 1 ,
+628 , 42834 , 16 , 514 , 1 , 1 ,
+628 , 42835 , 15 , 504 , 1 , 1 ,
+628 , 42836 , 15 , 589 , 1 , 1 ,
+628 , 42837 , 15 , 481 , 1 , 1 ,
+628 , 42838 , 14 , 514 , 1 , 1 ,
+628 , 42839 , 14 , 516 , 1 , 1 ,
+628 , 42840 , 14 , 525 , 1 , 1 ,
+628 , 42841 , 14 , 498 , 1 , 1 ,
+628 , 42842 , 14 , 581 , 1 , 1 ,
+628 , 42843 , 13 , 478 , 1 , 1 ,
+628 , 42844 , 13 , 501 , 1 , 1 ,
+628 , 42845 , 13 , 541 , 1 , 1 ,
+628 , 42846 , 13 , 469 , 1 , 1 ,
+628 , 42847 , 12 , 470 , 1 , 1 ,
+628 , 42848 , 12 , 438 , 1 , 1 ,
+628 , 42849 , 12 , 418 , 1 , 1 ,
+628 , 42850 , 11 , 478 , 1 , 1 ,
+628 , 42851 , 11 , 363 , 1 , 1 ,
+628 , 42852 , 11 , 365 , 1 , 1 ,
+628 , 42853 , 10 , 468 , 1 , 1 ,
+628 , 42854 , 10 , 324 , 1 , 1 ,
+628 , 42855 , 10 , 306 , 1 , 1 ,
+628 , 42856 , 9 , 282 , 1 , 1 ,
+628 , 42857 , 9 , 270 , 1 , 1 ,
+628 , 42858 , 9 , 320 , 1 , 1 ,
+628 , 42859 , 8 , 267 , 1 , 1 ,
+628 , 42860 , 8 , 257 , 1 , 1 ,
+628 , 42861 , 8 , 311 , 1 , 1 ,
+628 , 42862 , 7 , 258 , 1 , 1 ,
+628 , 42863 , 7 , 255 , 1 , 1 ,
+628 , 42864 , 7 , 269 , 1 , 1 ,
+628 , 42865 , 6 , 244 , 1 , 1 ,
+628 , 42866 , 6 , 324 , 1 , 1 ,
+628 , 42867 , 6 , 245 , 1 , 1 ,
+628 , 42868 , 31 , 143 , 1 , 1 ,
+628 , 42869 , 31 , 143 , 1 , 1 ,
+628 , 42870 , 30 , 143 , 1 , 1 ,
+628 , 42871 , 30 , 143 , 1 , 1 ,
+628 , 42872 , 30 , 133 , 1 , 1 ,
+628 , 42873 , 30 , 133 , 1 , 1 ,
+628 , 42874 , 30 , 133 , 1 , 1 ,
+628 , 42875 , 26 , 133 , 1 , 1 ,
+628 , 42876 , 26 , 133 , 1 , 1 ,
+628 , 42877 , 26 , 133 , 1 , 1 ,
+628 , 42878 , 25 , 133 , 1 , 1 ,
+628 , 42879 , 25 , 133 , 1 , 1 ,
+628 , 42880 , 25 , 133 , 1 , 1 ,
+628 , 42881 , 25 , 133 , 1 , 1 ,
+628 , 42882 , 25 , 123 , 1 , 1 ,
+628 , 42883 , 25 , 133 , 1 , 1 ,
+628 , 42884 , 25 , 144 , 1 , 1 ,
+628 , 42885 , 21 , 144 , 1 , 1 ,
+628 , 42886 , 21 , 144 , 1 , 1 ,
+628 , 42887 , 20 , 144 , 1 , 1 ,
+628 , 42888 , 20 , 143 , 1 , 1 ,
+628 , 42889 , 20 , 143 , 1 , 1 ,
+628 , 42890 , 20 , 133 , 1 , 1 ,
+628 , 42891 , 20 , 144 , 1 , 1 ,
+628 , 42892 , 20 , 144 , 1 , 1 ,
+628 , 42893 , 19 , 133 , 1 , 1 ,
+628 , 42894 , 19 , 133 , 1 , 1 ,
+628 , 42895 , 15 , 144 , 1 , 1 ,
+628 , 42896 , 15 , 154 , 1 , 1 ,
+628 , 42897 , 15 , 154 , 1 , 1 ,
+628 , 42898 , 15 , 154 , 1 , 1 ,
+628 , 42899 , 14 , 144 , 1 , 1 ,
+628 , 42900 , 14 , 144 , 1 , 1 ,
+628 , 42901 , 14 , 144 , 1 , 1 ,
+628 , 42902 , 14 , 143 , 1 , 1 ,
+628 , 42903 , 13 , 133 , 1 , 1 ,
+628 , 42904 , 13 , 144 , 1 , 1 ,
+628 , 42905 , 9 , 143 , 1 , 1 ,
+628 , 42906 , 9 , 143 , 1 , 1 ,
+628 , 42907 , 9 , 143 , 1 , 1 ,
+628 , 42908 , 9 , 143 , 1 , 1 ,
+628 , 42909 , 9 , 133 , 1 , 1 ,
+628 , 42910 , 8 , 123 , 1 , 1 ,
+628 , 42911 , 8 , 133 , 1 , 1 ,
+628 , 42912 , 8 , 133 , 1 , 1 ,
+628 , 42913 , 8 , 133 , 1 , 1 ,
+628 , 42914 , 8 , 133 , 1 , 1 ,
+628 , 42915 , 6 , 144 , 1 , 1 ,
+628 , 42916 , 6 , 143 , 1 , 1 ,
+628 , 42917 , 6 , 123 , 1 , 1 ,
+628 , 42918 , 6 , 123 , 1 , 1 ,
+628 , 42919 , 6 , 133 , 1 , 1 ,
+628 , 42920 , 6 , 133 , 1 , 1 ,
+628 , 42921 , 6 , 133 , 1 , 1 ,
+628 , 42922 , 6 , 144 , 1 , 1 ,
+628 , 42923 , 6 , 133 , 1 , 1 ,
+628 , 42924 , 6 , 144 , 1 , 1 ,
+628 , 42925 , 4 , 143 , 1 , 1 ,
+628 , 42926 , 4 , 123 , 1 , 1 ,
+628 , 42927 , 4 , 123 , 1 , 1 ,
+628 , 42928 , 4 , 113 , 1 , 1 ,
+628 , 42929 , 4 , 133 , 1 , 1 ,
+628 , 42930 , 4 , 133 , 1 , 1 ,
+628 , 42931 , 4 , 133 , 1 , 1 ,
+628 , 42932 , 4 , 123 , 1 , 1 ,
+628 , 42933 , 4 , 123 , 1 , 1 ,
+628 , 42934 , 4 , 133 , 1 , 1 ,
+628 , 42935 , 710 , 399 , 1 , 1 , 42780 42890 42737 42882 42910 42755 42760 42771 42898 42809 42744 42863 42918 42889 42794 42768 42770 42867 42887 42776 42779 42831 42822 42861 42899 42919 42789 42815 42761 42870 42860 42924 42786 42872 42748 42926 42792 42816 42751 42769 42908 42813 42843 42920 42814 42787 42766 42818 42735 42754 42777 42880 42873 42823 42901 42736 42902 42893 42878 42906 42852 42824 42894 42782 42869 42850 42916 42900 42807 42839 42747 42874 42856 42832 42849 42828 42799 42881 42806 42772 42904 42875 42784 42897 42928 42927 42864 42759 42750 42868 42837 42866 42853 42767 42812 42842 42743 42841 42858 42801 42895 42922 42877 42905 42798 42741 42854 42793 42783 42909 42810 42907 42753 42903 42804 42757 42930 42791 42862 42911 42934 42871 42790 42800 42785 42876 42879 42763 42778 42834 42781 42921 42912 42802 42838 42885 42745 42764 42914 42788 42827 42857 42738 42883 42833 42830 42758 42740 42888 42746 42756 42886 42932 42820 42891 42931 42817 42808 42855 42803 42742 42892 42796 42917 42797 42835 42896 42826 42773 42805 42825 42821 42847 42829 42915 42845 42851 42811 42775 42749 42848 42836 42865 42859 42925 42765 42762 42923 42819 42844 42884 42795 42913 42774 42846 42739 42933 42929 42752 42840
+629 , 42936 , 4 , 11 , 1 , 1 ,
+629 , 42937 , 29 , 31 , 1 , 1 , 42936
+629 , 42938 , 29 , 31 , 1 , 1 , 42936
+629 , 42939 , 29 , 31 , 1 , 1 , 42936
+629 , 42940 , 29 , 31 , 1 , 1 , 42936
+629 , 42941 , 29 , 31 , 1 , 1 , 42936
+629 , 42942 , 28 , 31 , 1 , 1 , 42936
+629 , 42943 , 28 , 31 , 1 , 1 , 42936
+629 , 42944 , 27 , 31 , 1 , 1 , 42936
+629 , 42945 , 27 , 31 , 1 , 1 , 42936
+629 , 42946 , 27 , 31 , 1 , 1 , 42936
+629 , 42947 , 27 , 31 , 1 , 1 , 42936
+629 , 42948 , 27 , 31 , 1 , 1 , 42936
+629 , 42949 , 27 , 31 , 1 , 1 , 42936
+629 , 42950 , 27 , 31 , 1 , 1 , 42936
+629 , 42951 , 27 , 31 , 1 , 1 , 42936
+629 , 42952 , 27 , 31 , 1 , 1 , 42936
+629 , 42953 , 27 , 31 , 1 , 1 , 42936
+629 , 42954 , 27 , 31 , 1 , 1 , 42936
+629 , 42955 , 27 , 31 , 1 , 1 , 42936
+629 , 42956 , 74 , 0 , 1 , 1 , 42943 42944 42953 42947 42949 42954 42951 42939 42948 42955 42941 42938 42946 42940 42937 42950 42952 42942 42945
+629 , 42957 , 90 , 11 , 1 , 1 , 42956
+629 , 42958 , 90 , 11 , 1 , 1 , 42956
+629 , 42959 , 90 , 11 , 1 , 1 , 42956
+629 , 42960 , 89 , 11 , 1 , 1 , 42956
+629 , 42961 , 89 , 11 , 1 , 1 , 42956
+629 , 42962 , 89 , 11 , 1 , 1 , 42956
+629 , 42963 , 89 , 11 , 1 , 1 , 42956
+629 , 42964 , 89 , 11 , 1 , 1 , 42956
+629 , 42965 , 89 , 11 , 1 , 1 , 42956
+629 , 42966 , 87 , 11 , 1 , 1 , 42956
+629 , 42967 , 87 , 11 , 1 , 1 , 42956
+629 , 42968 , 87 , 11 , 1 , 1 , 42956
+629 , 42969 , 87 , 11 , 1 , 1 , 42956
+629 , 42970 , 87 , 11 , 1 , 1 , 42956
+629 , 42971 , 87 , 11 , 1 , 1 , 42956
+629 , 42972 , 87 , 11 , 1 , 1 , 42956
+629 , 42973 , 87 , 11 , 1 , 1 , 42956
+629 , 42974 , 87 , 11 , 1 , 1 , 42956
+629 , 42975 , 87 , 11 , 1 , 1 , 42956
+629 , 42976 , 114 , 0 , 1 , 1 , 42961 42968 42958 42974 42970 42971 42962 42969 42972 42965 42966 42957 42975 42973 42963 42959 42967 42960 42964
+630 , 42977 , 2 , 11 , 1 , 1 ,
+630 , 42978 , 26 , 31 , 1 , 1 , 42977
+630 , 42979 , 26 , 31 , 1 , 1 , 42977
+630 , 42980 , 26 , 31 , 1 , 1 , 42977
+630 , 42981 , 26 , 31 , 1 , 1 , 42977
+630 , 42982 , 26 , 31 , 1 , 1 , 42977
+630 , 42983 , 26 , 31 , 1 , 1 , 42977
+630 , 42984 , 26 , 31 , 1 , 1 , 42977
+630 , 42985 , 26 , 31 , 1 , 1 , 42977
+630 , 42986 , 25 , 31 , 1 , 1 , 42977
+630 , 42987 , 24 , 41 , 1 , 1 , 42977
+630 , 42988 , 24 , 31 , 1 , 1 , 42977
+630 , 42989 , 24 , 31 , 1 , 1 , 42977
+630 , 42990 , 24 , 31 , 1 , 1 , 42977
+630 , 42991 , 24 , 41 , 1 , 1 , 42977
+630 , 42992 , 24 , 31 , 1 , 1 , 42977
+630 , 42993 , 24 , 31 , 1 , 1 , 42977
+630 , 42994 , 24 , 41 , 1 , 1 , 42977
+630 , 42995 , 24 , 31 , 1 , 1 , 42977
+630 , 42996 , 24 , 31 , 1 , 1 , 42977
+630 , 42997 , 79 , 0 , 1 , 1 , 42995 42993 42983 42980 42992 42989 42990 42996 42981 42978 42994 42987 42988 42985 42986 42982 42984 42979 42991
+630 , 42998 , 94 , 11 , 1 , 1 , 42997
+630 , 42999 , 94 , 11 , 1 , 1 , 42997
+630 , 43000 , 94 , 11 , 1 , 1 , 42997
+630 , 43001 , 94 , 11 , 1 , 1 , 42997
+630 , 43002 , 94 , 0 , 1 , 1 , 42997
+630 , 43003 , 93 , 11 , 1 , 1 , 42997
+630 , 43004 , 93 , 11 , 1 , 1 , 42997
+630 , 43005 , 93 , 11 , 1 , 1 , 42997
+630 , 43006 , 93 , 11 , 1 , 1 , 42997
+630 , 43007 , 92 , 11 , 1 , 1 , 42997
+630 , 43008 , 92 , 11 , 1 , 1 , 42997
+630 , 43009 , 92 , 11 , 1 , 1 , 42997
+630 , 43010 , 92 , 11 , 1 , 1 , 42997
+630 , 43011 , 92 , 11 , 1 , 1 , 42997
+630 , 43012 , 92 , 11 , 1 , 1 , 42997
+630 , 43013 , 92 , 11 , 1 , 1 , 42997
+630 , 43014 , 92 , 11 , 1 , 1 , 42997
+630 , 43015 , 92 , 11 , 1 , 1 , 42997
+630 , 43016 , 92 , 11 , 1 , 1 , 42997
+630 , 43017 , 120 , 0 , 1 , 1 , 42998 43013 43008 42999 43005 43007 43015 43002 43012 43001 43004 43016 43011 43006 43014 43003 43009 43010 43000
+631 , 43018 , 2 , 41 , 1 , 1 ,
+631 , 43019 , 2 , 41 , 1 , 1 ,
+631 , 43020 , 2 , 41 , 1 , 1 ,
+631 , 43021 , 55 , 0 , 1 , 1 , 43020 43018 43019
+632 , 43022 , 1 , 11 , 1 , 1 ,
+632 , 43023 , 90 , 31 , 1 , 1 , 43022
+632 , 43024 , 90 , 31 , 1 , 1 , 43022
+632 , 43025 , 90 , 31 , 1 , 1 , 43022
+632 , 43026 , 88 , 31 , 1 , 1 , 43022
+632 , 43027 , 88 , 31 , 1 , 1 , 43022
+632 , 43028 , 88 , 31 , 1 , 1 , 43022
+632 , 43029 , 87 , 31 , 1 , 1 , 43022
+632 , 43030 , 86 , 31 , 1 , 1 , 43022
+632 , 43031 , 84 , 21 , 1 , 1 , 43022
+632 , 43032 , 80 , 21 , 1 , 1 , 43022
+632 , 43033 , 80 , 31 , 1 , 1 , 43022
+632 , 43034 , 94 , 31 , 1 , 1 , 43022
+632 , 43035 , 94 , 31 , 1 , 1 , 43022
+632 , 43036 , 94 , 31 , 1 , 1 , 43022
+632 , 43037 , 94 , 31 , 1 , 1 , 43022
+632 , 43038 , 93 , 31 , 1 , 1 , 43022
+632 , 43039 , 92 , 31 , 1 , 1 , 43022
+632 , 43040 , 92 , 31 , 1 , 1 , 43022
+632 , 43041 , 92 , 31 , 1 , 1 , 43022
+632 , 43042 , 92 , 31 , 1 , 1 , 43022
+632 , 43043 , 92 , 31 , 1 , 1 , 43022
+632 , 43044 , 91 , 31 , 1 , 1 , 43022
+632 , 43045 , 91 , 31 , 1 , 1 , 43022
+632 , 43046 , 91 , 31 , 1 , 1 , 43022
+632 , 43047 , 91 , 31 , 1 , 1 , 43022
+632 , 43048 , 90 , 32 , 1 , 1 , 43022
+632 , 43049 , 90 , 31 , 1 , 1 , 43022
+632 , 43050 , 90 , 32 , 1 , 1 , 43022
+632 , 43051 , 80 , 31 , 1 , 1 , 43022
+632 , 43052 , 79 , 31 , 1 , 1 , 43022
+632 , 43053 , 77 , 21 , 1 , 1 , 43022
+632 , 43054 , 77 , 32 , 1 , 1 , 43022
+632 , 43055 , 77 , 31 , 1 , 1 , 43022
+632 , 43056 , 48 , 78 , 1 , 1 , 43022
+632 , 43057 , 48 , 64 , 1 , 1 , 43022
+632 , 43058 , 48 , 83 , 1 , 1 , 43022
+632 , 43059 , 48 , 77 , 1 , 1 , 43022
+632 , 43060 , 48 , 97 , 1 , 1 , 43022
+632 , 43061 , 48 , 80 , 1 , 1 , 43022
+632 , 43062 , 48 , 82 , 1 , 1 , 43022
+632 , 43063 , 48 , 79 , 1 , 1 , 43022
+632 , 43064 , 40 , 234 , 1 , 1 , 43022
+632 , 43065 , 40 , 234 , 1 , 1 , 43022
+632 , 43066 , 40 , 244 , 1 , 1 , 43022
+632 , 43067 , 40 , 234 , 1 , 1 , 43022
+632 , 43068 , 40 , 244 , 1 , 1 , 43022
+632 , 43069 , 40 , 244 , 1 , 1 , 43022
+632 , 43070 , 39 , 234 , 1 , 1 , 43022
+632 , 43071 , 39 , 244 , 1 , 1 , 43022
+632 , 43072 , 39 , 223 , 1 , 1 , 43022
+632 , 43073 , 39 , 223 , 1 , 1 , 43022
+632 , 43074 , 39 , 245 , 1 , 1 , 43022
+632 , 43075 , 39 , 245 , 1 , 1 , 43022
+632 , 43076 , 39 , 235 , 1 , 1 , 43022
+632 , 43077 , 39 , 245 , 1 , 1 , 43022
+632 , 43078 , 39 , 234 , 1 , 1 , 43022
+632 , 43079 , 39 , 245 , 1 , 1 , 43022
+632 , 43080 , 51 , 303 , 1 , 1 , 43022
+632 , 43081 , 50 , 251 , 1 , 1 , 43022
+632 , 43082 , 50 , 251 , 1 , 1 , 43022
+632 , 43083 , 50 , 252 , 1 , 1 , 43022
+632 , 43084 , 49 , 235 , 1 , 1 , 43022
+632 , 43085 , 49 , 252 , 1 , 1 , 43022
+632 , 43086 , 49 , 225 , 1 , 1 , 43022
+632 , 43087 , 48 , 310 , 1 , 1 , 43022
+632 , 43088 , 48 , 237 , 1 , 1 , 43022
+632 , 43089 , 47 , 237 , 1 , 1 , 43022
+632 , 43090 , 47 , 248 , 1 , 1 , 43022
+632 , 43091 , 46 , 351 , 1 , 1 , 43022
+632 , 43092 , 46 , 248 , 1 , 1 , 43022
+632 , 43093 , 46 , 248 , 1 , 1 , 43022
+632 , 43094 , 45 , 241 , 1 , 1 , 43022
+632 , 43095 , 45 , 291 , 1 , 1 , 43022
+632 , 43096 , 45 , 300 , 1 , 1 , 43022
+632 , 43097 , 44 , 240 , 1 , 1 , 43022
+632 , 43098 , 44 , 237 , 1 , 1 , 43022
+632 , 43099 , 44 , 248 , 1 , 1 , 43022
+632 , 43100 , 43 , 248 , 1 , 1 , 43022
+632 , 43101 , 43 , 259 , 1 , 1 , 43022
+632 , 43102 , 42 , 352 , 1 , 1 , 43022
+632 , 43103 , 42 , 280 , 1 , 1 , 43022
+632 , 43104 , 42 , 248 , 1 , 1 , 43022
+632 , 43105 , 41 , 236 , 1 , 1 , 43022
+632 , 43106 , 41 , 248 , 1 , 1 , 43022
+632 , 43107 , 41 , 249 , 1 , 1 , 43022
+632 , 43108 , 40 , 262 , 1 , 1 , 43022
+632 , 43109 , 40 , 248 , 1 , 1 , 43022
+632 , 43110 , 40 , 238 , 1 , 1 , 43022
+632 , 43111 , 39 , 303 , 1 , 1 , 43022
+632 , 43112 , 39 , 262 , 1 , 1 , 43022
+632 , 43113 , 39 , 249 , 1 , 1 , 43022
+632 , 43114 , 38 , 249 , 1 , 1 , 43022
+632 , 43115 , 38 , 236 , 1 , 1 , 43022
+632 , 43116 , 38 , 249 , 1 , 1 , 43022
+632 , 43117 , 37 , 273 , 1 , 1 , 43022
+632 , 43118 , 37 , 237 , 1 , 1 , 43022
+632 , 43119 , 37 , 262 , 1 , 1 , 43022
+632 , 43120 , 36 , 299 , 1 , 1 , 43022
+632 , 43121 , 36 , 274 , 1 , 1 , 43022
+632 , 43122 , 36 , 250 , 1 , 1 , 43022
+632 , 43123 , 35 , 241 , 1 , 1 , 43022
+632 , 43124 , 35 , 241 , 1 , 1 , 43022
+632 , 43125 , 35 , 253 , 1 , 1 , 43022
+632 , 43126 , 35 , 293 , 1 , 1 , 43022
+632 , 43127 , 35 , 242 , 1 , 1 , 43022
+632 , 43128 , 34 , 283 , 1 , 1 , 43022
+632 , 43129 , 34 , 270 , 1 , 1 , 43022
+632 , 43130 , 34 , 248 , 1 , 1 , 43022
+632 , 43131 , 34 , 247 , 1 , 1 , 43022
+632 , 43132 , 33 , 226 , 1 , 1 , 43022
+632 , 43133 , 33 , 248 , 1 , 1 , 43022
+632 , 43134 , 33 , 260 , 1 , 1 , 43022
+632 , 43135 , 32 , 265 , 1 , 1 , 43022
+632 , 43136 , 32 , 238 , 1 , 1 , 43022
+632 , 43137 , 32 , 334 , 1 , 1 , 43022
+632 , 43138 , 31 , 249 , 1 , 1 , 43022
+632 , 43139 , 31 , 226 , 1 , 1 , 43022
+632 , 43140 , 31 , 250 , 1 , 1 , 43022
+632 , 43141 , 30 , 251 , 1 , 1 , 43022
+632 , 43142 , 30 , 273 , 1 , 1 , 43022
+632 , 43143 , 30 , 263 , 1 , 1 , 43022
+632 , 43144 , 47 , 52 , 1 , 1 , 43022
+632 , 43145 , 47 , 52 , 1 , 1 , 43022
+632 , 43146 , 47 , 52 , 1 , 1 , 43022
+632 , 43147 , 47 , 52 , 1 , 1 , 43022
+632 , 43148 , 47 , 52 , 1 , 1 , 43022
+632 , 43149 , 46 , 41 , 1 , 1 , 43022
+632 , 43150 , 46 , 52 , 1 , 1 , 43022
+632 , 43151 , 46 , 52 , 1 , 1 , 43022
+632 , 43152 , 46 , 52 , 1 , 1 , 43022
+632 , 43153 , 44 , 62 , 1 , 1 , 43022
+632 , 43154 , 44 , 52 , 1 , 1 , 43022
+632 , 43155 , 44 , 52 , 1 , 1 , 43022
+632 , 43156 , 43 , 52 , 1 , 1 , 43022
+632 , 43157 , 43 , 52 , 1 , 1 , 43022
+632 , 43158 , 43 , 41 , 1 , 1 , 43022
+632 , 43159 , 43 , 41 , 1 , 1 , 43022
+632 , 43160 , 42 , 62 , 1 , 1 , 43022
+632 , 43161 , 42 , 62 , 1 , 1 , 43022
+632 , 43162 , 42 , 62 , 1 , 1 , 43022
+632 , 43163 , 40 , 62 , 1 , 1 , 43022
+632 , 43164 , 40 , 62 , 1 , 1 , 43022
+632 , 43165 , 40 , 62 , 1 , 1 , 43022
+632 , 43166 , 40 , 52 , 1 , 1 , 43022
+632 , 43167 , 39 , 52 , 1 , 1 , 43022
+632 , 43168 , 39 , 62 , 1 , 1 , 43022
+632 , 43169 , 39 , 63 , 1 , 1 , 43022
+632 , 43170 , 38 , 62 , 1 , 1 , 43022
+632 , 43171 , 38 , 62 , 1 , 1 , 43022
+632 , 43172 , 38 , 62 , 1 , 1 , 43022
+632 , 43173 , 36 , 52 , 1 , 1 , 43022
+632 , 43174 , 36 , 52 , 1 , 1 , 43022
+632 , 43175 , 36 , 52 , 1 , 1 , 43022
+632 , 43176 , 36 , 41 , 1 , 1 , 43022
+632 , 43177 , 35 , 41 , 1 , 1 , 43022
+632 , 43178 , 34 , 41 , 1 , 1 , 43022
+632 , 43179 , 34 , 42 , 1 , 1 , 43022
+632 , 43180 , 34 , 41 , 1 , 1 , 43022
+632 , 43181 , 34 , 52 , 1 , 1 , 43022
+632 , 43182 , 34 , 52 , 1 , 1 , 43022
+632 , 43183 , 32 , 41 , 1 , 1 , 43022
+632 , 43184 , 32 , 41 , 1 , 1 , 43022
+632 , 43185 , 31 , 41 , 1 , 1 , 43022
+632 , 43186 , 31 , 52 , 1 , 1 , 43022
+632 , 43187 , 31 , 52 , 1 , 1 , 43022
+632 , 43188 , 31 , 52 , 1 , 1 , 43022
+632 , 43189 , 30 , 41 , 1 , 1 , 43022
+632 , 43190 , 30 , 52 , 1 , 1 , 43022
+632 , 43191 , 30 , 52 , 1 , 1 , 43022
+632 , 43192 , 30 , 41 , 1 , 1 , 43022
+632 , 43193 , 28 , 41 , 1 , 1 , 43022
+632 , 43194 , 28 , 52 , 1 , 1 , 43022
+632 , 43195 , 28 , 52 , 1 , 1 , 43022
+632 , 43196 , 27 , 52 , 1 , 1 , 43022
+632 , 43197 , 27 , 52 , 1 , 1 , 43022
+632 , 43198 , 27 , 52 , 1 , 1 , 43022
+632 , 43199 , 27 , 52 , 1 , 1 , 43022
+632 , 43200 , 27 , 52 , 1 , 1 , 43022
+632 , 43201 , 27 , 52 , 1 , 1 , 43022
+632 , 43202 , 27 , 52 , 1 , 1 , 43022
+632 , 43203 , 25 , 52 , 1 , 1 , 43022
+632 , 43204 , 25 , 52 , 1 , 1 , 43022
+632 , 43205 , 25 , 52 , 1 , 1 , 43022
+632 , 43206 , 25 , 41 , 1 , 1 , 43022
+632 , 43207 , 25 , 52 , 1 , 1 , 43022
+632 , 43208 , 25 , 41 , 1 , 1 , 43022
+632 , 43209 , 25 , 52 , 1 , 1 , 43022
+632 , 43210 , 25 , 41 , 1 , 1 , 43022
+632 , 43211 , 25 , 52 , 1 , 1 , 43022
+632 , 43212 , 25 , 41 , 1 , 1 , 43022
+632 , 43213 , 25 , 41 , 1 , 1 , 43022
+632 , 43214 , 25 , 41 , 1 , 1 , 43022
+632 , 43215 , 25 , 41 , 1 , 1 , 43022
+632 , 43216 , 431 , 0 , 1 , 1 , 43194 43182 43152 43179 43206 43100 43091 43158 43063 43025 43140 43107 43040 43133 43141 43041 43088 43135 43042 43207 43030 43049 43052 43128 43151 43112 43032 43161 43165 43094 43195 43191 43184 43116 43131 43026 43170 43055 43065 43124 43119 43086 43061 43060 43076 43099 43038 43189 43113 43180 43043 43137 43132 43139 43089 43072 43188 43044 43143 43202 43197 43101 43209 43062 43067 43175 43208 43075 43212 43095 43050 43190 43148 43130 43150 43168 43046 43106 43147 43023 43203 43108 43129 43167 43064 43111 43073 43027 43033 43153 43056 43199 43174 43029 43185 43172 43171 43120 43058 43166 43173 43092 43080 43169 43134 43138 43122 43160 43123 43110 43154 43211 43164 43105 43196 43205 43214 43068 43039 43051 43183 43163 43066 43213 43193 43087 43177 43035 43176 43192 43053 43082 43155 43187 43144 43145 43115 43136 43070 43081 43031 43181 43215 43077 43069 43162 43059 43102 43159 43098 43054 43121 43204 43071 43142 43125 43024 43117 43097 43157 43210 43083 43036 43045 43028 43118 43156 43186 43093 43127 43109 43149 43084 43114 43048 43034 43078 43090 43057 43096 43126 43104 43037 43085 43178 43103 43074 43079 43201 43200 43047 43198 43146
+632 , 43217 , 501 , 52 , 1 , 1 , 43216
+632 , 43218 , 501 , 52 , 1 , 1 , 43216
+632 , 43219 , 501 , 53 , 1 , 1 , 43216
+632 , 43220 , 497 , 54 , 1 , 1 , 43216
+632 , 43221 , 497 , 54 , 1 , 1 , 43216
+632 , 43222 , 497 , 44 , 1 , 1 , 43216
+632 , 43223 , 497 , 54 , 1 , 1 , 43216
+632 , 43224 , 497 , 54 , 1 , 1 , 43216
+632 , 43225 , 497 , 44 , 1 , 1 , 43216
+632 , 43226 , 496 , 65 , 1 , 1 , 43216
+632 , 43227 , 496 , 55 , 1 , 1 , 43216
+632 , 43228 , 496 , 65 , 1 , 1 , 43216
+632 , 43229 , 496 , 62 , 1 , 1 , 43216
+632 , 43230 , 492 , 62 , 1 , 1 , 43216
+632 , 43231 , 492 , 72 , 1 , 1 , 43216
+632 , 43232 , 492 , 62 , 1 , 1 , 43216
+632 , 43233 , 492 , 72 , 1 , 1 , 43216
+632 , 43234 , 492 , 82 , 1 , 1 , 43216
+632 , 43235 , 492 , 72 , 1 , 1 , 43216
+632 , 43236 , 492 , 72 , 1 , 1 , 43216
+632 , 43237 , 492 , 71 , 1 , 1 , 43216
+632 , 43238 , 491 , 82 , 1 , 1 , 43216
+632 , 43239 , 491 , 72 , 1 , 1 , 43216
+632 , 43240 , 488 , 74 , 1 , 1 , 43216
+632 , 43241 , 488 , 74 , 1 , 1 , 43216
+632 , 43242 , 488 , 74 , 1 , 1 , 43216
+632 , 43243 , 488 , 64 , 1 , 1 , 43216
+632 , 43244 , 488 , 74 , 1 , 1 , 43216
+632 , 43245 , 488 , 85 , 1 , 1 , 43216
+632 , 43246 , 488 , 74 , 1 , 1 , 43216
+632 , 43247 , 488 , 85 , 1 , 1 , 43216
+632 , 43248 , 488 , 85 , 1 , 1 , 43216
+632 , 43249 , 488 , 85 , 1 , 1 , 43216
+632 , 43250 , 525 , 41 , 1 , 1 , 43216
+632 , 43251 , 525 , 41 , 1 , 1 , 43216
+632 , 43252 , 519 , 42 , 1 , 1 , 43216
+632 , 43253 , 524 , 41 , 1 , 1 , 43216
+632 , 43254 , 525 , 41 , 1 , 1 , 43216
+632 , 43255 , 519 , 42 , 1 , 1 , 43216
+632 , 43256 , 519 , 42 , 1 , 1 , 43216
+632 , 43257 , 519 , 42 , 1 , 1 , 43216
+632 , 43258 , 518 , 42 , 1 , 1 , 43216
+632 , 43259 , 518 , 41 , 1 , 1 , 43216
+632 , 43260 , 518 , 31 , 1 , 1 , 43216
+632 , 43261 , 518 , 42 , 1 , 1 , 43216
+632 , 43262 , 516 , 52 , 1 , 1 , 43216
+632 , 43263 , 514 , 52 , 1 , 1 , 43216
+632 , 43264 , 514 , 52 , 1 , 1 , 43216
+632 , 43265 , 514 , 52 , 1 , 1 , 43216
+632 , 43266 , 516 , 11 , 1 , 1 , 43216
+632 , 43267 , 515 , 13 , 1 , 1 , 43216
+632 , 43268 , 514 , 12 , 1 , 1 , 43216
+632 , 43269 , 514 , 11 , 1 , 1 , 43216
+632 , 43270 , 514 , 11 , 1 , 1 , 43216
+632 , 43271 , 513 , 11 , 1 , 1 , 43216
+632 , 43272 , 513 , 12 , 1 , 1 , 43216
+632 , 43273 , 512 , 11 , 1 , 1 , 43216
+632 , 43274 , 509 , 22 , 1 , 1 , 43216
+632 , 43275 , 509 , 23 , 1 , 1 , 43216
+632 , 43276 , 508 , 24 , 1 , 1 , 43216
+632 , 43277 , 511 , 22 , 1 , 1 , 43216
+632 , 43278 , 507 , 24 , 1 , 1 , 43216
+632 , 43279 , 512 , 21 , 1 , 1 , 43216
+632 , 43280 , 512 , 21 , 1 , 1 , 43216
+632 , 43281 , 506 , 32 , 1 , 1 , 43216
+632 , 43282 , 519 , 11 , 1 , 1 , 43216
+632 , 43283 , 508 , 24 , 1 , 1 , 43216
+632 , 43284 , 506 , 21 , 1 , 1 , 43216
+632 , 43285 , 505 , 32 , 1 , 1 , 43216
+632 , 43286 , 507 , 21 , 1 , 1 , 43216
+632 , 43287 , 506 , 21 , 1 , 1 , 43216
+632 , 43288 , 503 , 24 , 1 , 1 , 43216
+632 , 43289 , 500 , 33 , 1 , 1 , 43216
+632 , 43290 , 499 , 34 , 1 , 1 , 43216
+632 , 43291 , 496 , 21 , 1 , 1 , 43216
+632 , 43292 , 494 , 21 , 1 , 1 , 43216
+632 , 43293 , 493 , 21 , 1 , 1 , 43216
+632 , 43294 , 490 , 35 , 1 , 1 , 43216
+632 , 43295 , 490 , 34 , 1 , 1 , 43216
+632 , 43296 , 490 , 32 , 1 , 1 , 43216
+632 , 43297 , 502 , 32 , 1 , 1 , 43216
+632 , 43298 , 489 , 32 , 1 , 1 , 43216
+632 , 43299 , 489 , 32 , 1 , 1 , 43216
+632 , 43300 , 488 , 32 , 1 , 1 , 43216
+632 , 43301 , 488 , 32 , 1 , 1 , 43216
+632 , 43302 , 488 , 22 , 1 , 1 , 43216
+632 , 43303 , 488 , 33 , 1 , 1 , 43216
+632 , 43304 , 487 , 32 , 1 , 1 , 43216
+632 , 43305 , 486 , 22 , 1 , 1 , 43216
+632 , 43306 , 529 , 21 , 1 , 1 , 43216
+632 , 43307 , 486 , 32 , 1 , 1 , 43216
+632 , 43308 , 529 , 32 , 1 , 1 , 43216
+632 , 43309 , 485 , 22 , 1 , 1 , 43216
+632 , 43310 , 485 , 32 , 1 , 1 , 43216
+632 , 43311 , 484 , 56 , 1 , 1 , 43216
+632 , 43312 , 485 , 21 , 1 , 1 , 43216
+632 , 43313 , 484 , 32 , 1 , 1 , 43216
+632 , 43314 , 504 , 32 , 1 , 1 , 43216
+632 , 43315 , 481 , 33 , 1 , 1 , 43216
+632 , 43316 , 484 , 34 , 1 , 1 , 43216
+632 , 43317 , 482 , 35 , 1 , 1 , 43216
+632 , 43318 , 476 , 33 , 1 , 1 , 43216
+632 , 43319 , 475 , 33 , 1 , 1 , 43216
+632 , 43320 , 489 , 32 , 1 , 1 , 43216
+632 , 43321 , 473 , 34 , 1 , 1 , 43216
+632 , 43322 , 479 , 32 , 1 , 1 , 43216
+632 , 43323 , 470 , 33 , 1 , 1 , 43216
+632 , 43324 , 470 , 34 , 1 , 1 , 43216
+632 , 43325 , 468 , 32 , 1 , 1 , 43216
+632 , 43326 , 551 , 32 , 1 , 1 , 43216
+632 , 43327 , 551 , 32 , 1 , 1 , 43216
+632 , 43328 , 507 , 21 , 1 , 1 , 43216
+632 , 43329 , 489 , 32 , 1 , 1 , 43216
+632 , 43330 , 493 , 34 , 1 , 1 , 43216
+632 , 43331 , 486 , 32 , 1 , 1 , 43216
+632 , 43332 , 478 , 32 , 1 , 1 , 43216
+632 , 43333 , 472 , 35 , 1 , 1 , 43216
+632 , 43334 , 467 , 32 , 1 , 1 , 43216
+632 , 43335 , 465 , 33 , 1 , 1 , 43216
+632 , 43336 , 465 , 34 , 1 , 1 , 43216
+632 , 43337 , 463 , 32 , 1 , 1 , 43216
+632 , 43338 , 478 , 74 , 1 , 1 , 43216
+632 , 43339 , 478 , 74 , 1 , 1 , 43216
+632 , 43340 , 477 , 64 , 1 , 1 , 43216
+632 , 43341 , 477 , 64 , 1 , 1 , 43216
+632 , 43342 , 477 , 95 , 1 , 1 , 43216
+632 , 43343 , 476 , 65 , 1 , 1 , 43216
+632 , 43344 , 476 , 65 , 1 , 1 , 43216
+632 , 43345 , 476 , 62 , 1 , 1 , 43216
+632 , 43346 , 474 , 72 , 1 , 1 , 43216
+632 , 43347 , 474 , 93 , 1 , 1 , 43216
+632 , 43348 , 474 , 92 , 1 , 1 , 43216
+632 , 43349 , 474 , 93 , 1 , 1 , 43216
+632 , 43350 , 474 , 83 , 1 , 1 , 43216
+632 , 43351 , 473 , 72 , 1 , 1 , 43216
+632 , 43352 , 473 , 72 , 1 , 1 , 43216
+632 , 43353 , 472 , 62 , 1 , 1 , 43216
+632 , 43354 , 472 , 103 , 1 , 1 , 43216
+632 , 43355 , 472 , 103 , 1 , 1 , 43216
+632 , 43356 , 470 , 93 , 1 , 1 , 43216
+632 , 43357 , 470 , 93 , 1 , 1 , 43216
+632 , 43358 , 470 , 82 , 1 , 1 , 43216
+632 , 43359 , 470 , 72 , 1 , 1 , 43216
+632 , 43360 , 470 , 72 , 1 , 1 , 43216
+632 , 43361 , 469 , 72 , 1 , 1 , 43216
+632 , 43362 , 469 , 93 , 1 , 1 , 43216
+632 , 43363 , 469 , 95 , 1 , 1 , 43216
+632 , 43364 , 468 , 95 , 1 , 1 , 43216
+632 , 43365 , 468 , 95 , 1 , 1 , 43216
+632 , 43366 , 466 , 85 , 1 , 1 , 43216
+632 , 43367 , 466 , 82 , 1 , 1 , 43216
+632 , 43368 , 466 , 82 , 1 , 1 , 43216
+632 , 43369 , 466 , 92 , 1 , 1 , 43216
+632 , 43370 , 466 , 62 , 1 , 1 , 43216
+632 , 43371 , 465 , 92 , 1 , 1 , 43216
+632 , 43372 , 465 , 92 , 1 , 1 , 43216
+632 , 43373 , 465 , 83 , 1 , 1 , 43216
+632 , 43374 , 465 , 73 , 1 , 1 , 43216
+632 , 43375 , 464 , 72 , 1 , 1 , 43216
+632 , 43376 , 463 , 62 , 1 , 1 , 43216
+632 , 43377 , 463 , 52 , 1 , 1 , 43216
+632 , 43378 , 463 , 72 , 1 , 1 , 43216
+632 , 43379 , 462 , 72 , 1 , 1 , 43216
+632 , 43380 , 462 , 72 , 1 , 1 , 43216
+632 , 43381 , 462 , 73 , 1 , 1 , 43216
+632 , 43382 , 461 , 72 , 1 , 1 , 43216
+632 , 43383 , 461 , 62 , 1 , 1 , 43216
+632 , 43384 , 461 , 62 , 1 , 1 , 43216
+632 , 43385 , 460 , 72 , 1 , 1 , 43216
+632 , 43386 , 459 , 62 , 1 , 1 , 43216
+632 , 43387 , 459 , 62 , 1 , 1 , 43216
+632 , 43388 , 458 , 72 , 1 , 1 , 43216
+632 , 43389 , 458 , 62 , 1 , 1 , 43216
+632 , 43390 , 458 , 62 , 1 , 1 , 43216
+632 , 43391 , 458 , 62 , 1 , 1 , 43216
+632 , 43392 , 458 , 62 , 1 , 1 , 43216
+632 , 43393 , 458 , 62 , 1 , 1 , 43216
+632 , 43394 , 458 , 52 , 1 , 1 , 43216
+632 , 43395 , 458 , 52 , 1 , 1 , 43216
+632 , 43396 , 456 , 52 , 1 , 1 , 43216
+632 , 43397 , 456 , 52 , 1 , 1 , 43216
+632 , 43398 , 456 , 52 , 1 , 1 , 43216
+632 , 43399 , 456 , 42 , 1 , 1 , 43216
+632 , 43400 , 456 , 41 , 1 , 1 , 43216
+632 , 43401 , 456 , 41 , 1 , 1 , 43216
+632 , 43402 , 456 , 31 , 1 , 1 , 43216
+632 , 43403 , 456 , 31 , 1 , 1 , 43216
+632 , 43404 , 456 , 31 , 1 , 1 , 43216
+632 , 43405 , 456 , 31 , 1 , 1 , 43216
+632 , 43406 , 456 , 21 , 1 , 1 , 43216
+632 , 43407 , 456 , 21 , 1 , 1 , 43216
+632 , 43408 , 456 , 21 , 1 , 1 , 43216
+632 , 43409 , 456 , 21 , 1 , 1 , 43216
+632 , 43410 , 647 , 21 , 1 , 1 , 43230 43239 43269 43288 43259 43338 43283 43305 43314 43246 43389 43394 43337 43400 43265 43234 43219 43306 43330 43285 43310 43390 43255 43266 43350 43404 43375 43260 43378 43346 43279 43250 43278 43229 43370 43379 43270 43380 43298 43403 43297 43355 43317 43295 43301 43409 43241 43397 43296 43318 43309 43291 43332 43349 43218 43307 43284 43365 43322 43360 43238 43245 43366 43343 43326 43313 43359 43287 43342 43368 43347 43286 43262 43382 43402 43272 43244 43363 43256 43300 43231 43223 43302 43353 43325 43362 43261 43221 43225 43340 43319 43321 43240 43381 43289 43280 43267 43281 43293 43251 43384 43401 43356 43357 43273 43336 43226 43271 43364 43328 43352 43294 43348 43222 43232 43407 43312 43341 43292 43398 43275 43249 43373 43371 43228 43233 43253 43377 43344 43258 43315 43333 43254 43224 43383 43220 43304 43247 43367 43282 43331 43335 43303 43274 43392 43243 43372 43277 43217 43235 43387 43374 43257 43405 43408 43290 43311 43264 43395 43320 43369 43386 43248 43351 43276 43329 43391 43361 43242 43396 43316 43323 43393 43354 43308 43227 43345 43406 43388 43376 43236 43334 43385 43399 43324 43263 43327 43339 43237 43252 43358 43268 43299
+633 , 43607 , 9 , 41 , 1 , 1 ,
+633 , 43608 , 9 , 41 , 1 , 1 ,
+633 , 43609 , 9 , 41 , 1 , 1 ,
+633 , 43610 , 9 , 41 , 1 , 1 ,
+633 , 43611 , 9 , 41 , 1 , 1 ,
+633 , 43612 , 8 , 52 , 1 , 1 ,
+633 , 43613 , 8 , 52 , 1 , 1 ,
+633 , 43614 , 8 , 52 , 1 , 1 ,
+633 , 43615 , 7 , 52 , 1 , 1 ,
+633 , 43616 , 7 , 41 , 1 , 1 ,
+633 , 43617 , 7 , 52 , 1 , 1 ,
+633 , 43618 , 7 , 52 , 1 , 1 ,
+633 , 43619 , 7 , 52 , 1 , 1 ,
+633 , 43620 , 7 , 52 , 1 , 1 ,
+633 , 43621 , 7 , 52 , 1 , 1 ,
+633 , 43622 , 7 , 41 , 1 , 1 ,
+633 , 43623 , 7 , 52 , 1 , 1 ,
+633 , 43624 , 7 , 41 , 1 , 1 ,
+633 , 43625 , 7 , 52 , 1 , 1 ,
+633 , 43626 , 7 , 52 , 1 , 1 ,
+633 , 43627 , 74 , 11 , 1 , 1 , 43607 43619 43612 43613 43623 43620 43618 43624 43611 43615 43609 43617 43621 43608 43616 43614 43626 43622 43610 43625
+634 , 43628 , 5 , 41 , 1 , 1 ,
+634 , 43629 , 5 , 41 , 1 , 1 ,
+634 , 43630 , 5 , 41 , 1 , 1 ,
+634 , 43631 , 5 , 41 , 1 , 1 ,
+634 , 43632 , 5 , 52 , 1 , 1 ,
+634 , 43633 , 5 , 41 , 1 , 1 ,
+634 , 43634 , 5 , 52 , 1 , 1 ,
+634 , 43635 , 5 , 52 , 1 , 1 ,
+634 , 43636 , 5 , 52 , 1 , 1 ,
+634 , 43637 , 4 , 52 , 1 , 1 ,
+634 , 43638 , 4 , 41 , 1 , 1 ,
+634 , 43639 , 4 , 41 , 1 , 1 ,
+634 , 43640 , 4 , 41 , 1 , 1 ,
+634 , 43641 , 4 , 41 , 1 , 1 ,
+634 , 43642 , 4 , 52 , 1 , 1 ,
+634 , 43643 , 4 , 52 , 1 , 1 ,
+634 , 43644 , 4 , 52 , 1 , 1 ,
+634 , 43645 , 4 , 41 , 1 , 1 ,
+634 , 43646 , 3 , 41 , 1 , 1 ,
+634 , 43647 , 3 , 41 , 1 , 1 ,
+634 , 43648 , 69 , 11 , 1 , 1 , 43647 43640 43636 43630 43632 43629 43641 43644 43628 43633 43639 43642 43637 43645 43631 43634 43646 43635 43643 43638
+635 , 43649 , 5 , 41 , 1 , 1 ,
+635 , 43650 , 5 , 41 , 1 , 1 ,
+635 , 43651 , 5 , 41 , 1 , 1 ,
+635 , 43652 , 5 , 52 , 1 , 1 ,
+635 , 43653 , 4 , 52 , 1 , 1 ,
+635 , 43654 , 4 , 52 , 1 , 1 ,
+635 , 43655 , 4 , 52 , 1 , 1 ,
+635 , 43656 , 4 , 52 , 1 , 1 ,
+635 , 43657 , 4 , 52 , 1 , 1 ,
+635 , 43658 , 3 , 41 , 1 , 1 ,
+635 , 43659 , 3 , 52 , 1 , 1 ,
+635 , 43660 , 3 , 52 , 1 , 1 ,
+635 , 43661 , 3 , 41 , 1 , 1 ,
+635 , 43662 , 3 , 52 , 1 , 1 ,
+635 , 43663 , 3 , 41 , 1 , 1 ,
+635 , 43664 , 3 , 52 , 1 , 1 ,
+635 , 43665 , 3 , 52 , 1 , 1 ,
+635 , 43666 , 3 , 41 , 1 , 1 ,
+635 , 43667 , 3 , 52 , 1 , 1 ,
+635 , 43668 , 3 , 41 , 1 , 1 ,
+635 , 43669 , 69 , 11 , 1 , 1 , 43668 43654 43667 43665 43662 43653 43659 43666 43658 43657 43663 43656 43660 43661 43655 43649 43652 43651 43664 43650
+636 , 43670 , 17 , 123 , 1 , 1 ,
+636 , 43671 , 17 , 113 , 1 , 1 ,
+636 , 43672 , 17 , 103 , 1 , 1 ,
+636 , 43673 , 17 , 113 , 1 , 1 ,
+636 , 43674 , 16 , 113 , 1 , 1 ,
+636 , 43675 , 16 , 123 , 1 , 1 ,
+636 , 43676 , 16 , 123 , 1 , 1 ,
+636 , 43677 , 16 , 123 , 1 , 1 ,
+636 , 43678 , 15 , 113 , 1 , 1 ,
+636 , 43679 , 14 , 133 , 1 , 1 ,
+636 , 43680 , 14 , 133 , 1 , 1 ,
+636 , 43681 , 14 , 143 , 1 , 1 ,
+636 , 43682 , 14 , 143 , 1 , 1 ,
+636 , 43683 , 13 , 143 , 1 , 1 ,
+636 , 43684 , 13 , 133 , 1 , 1 ,
+636 , 43685 , 13 , 133 , 1 , 1 ,
+636 , 43686 , 13 , 154 , 1 , 1 ,
+636 , 43687 , 13 , 164 , 1 , 1 ,
+636 , 43688 , 12 , 164 , 1 , 1 ,
+636 , 43689 , 11 , 143 , 1 , 1 ,
+636 , 43690 , 11 , 143 , 1 , 1 ,
+636 , 43691 , 11 , 123 , 1 , 1 ,
+636 , 43692 , 11 , 133 , 1 , 1 ,
+636 , 43693 , 10 , 133 , 1 , 1 ,
+636 , 43694 , 10 , 133 , 1 , 1 ,
+636 , 43695 , 10 , 123 , 1 , 1 ,
+636 , 43696 , 10 , 113 , 1 , 1 ,
+636 , 43697 , 10 , 133 , 1 , 1 ,
+636 , 43698 , 8 , 133 , 1 , 1 ,
+636 , 43699 , 8 , 134 , 1 , 1 ,
+636 , 43700 , 7 , 133 , 1 , 1 ,
+636 , 43701 , 7 , 123 , 1 , 1 ,
+636 , 43702 , 7 , 133 , 1 , 1 ,
+636 , 43703 , 7 , 144 , 1 , 1 ,
+636 , 43704 , 7 , 133 , 1 , 1 ,
+636 , 43705 , 7 , 133 , 1 , 1 ,
+636 , 43706 , 7 , 133 , 1 , 1 ,
+636 , 43707 , 7 , 133 , 1 , 1 ,
+636 , 43708 , 6 , 133 , 1 , 1 ,
+636 , 43709 , 6 , 133 , 1 , 1 ,
+636 , 43710 , 5 , 133 , 1 , 1 ,
+636 , 43711 , 5 , 143 , 1 , 1 ,
+636 , 43712 , 5 , 133 , 1 , 1 ,
+636 , 43713 , 5 , 123 , 1 , 1 ,
+636 , 43714 , 5 , 113 , 1 , 1 ,
+636 , 43715 , 5 , 123 , 1 , 1 ,
+636 , 43716 , 5 , 123 , 1 , 1 ,
+636 , 43717 , 5 , 133 , 1 , 1 ,
+636 , 43718 , 5 , 133 , 1 , 1 ,
+636 , 43719 , 5 , 123 , 1 , 1 ,
+636 , 43720 , 191 , 93 , 1 , 1 , 43707 43698 43697 43702 43692 43710 43683 43700 43676 43689 43691 43682 43673 43684 43688 43680 43677 43694 43701 43681 43704 43670 43687 43678 43718 43672 43716 43712 43679 43705 43671 43703 43711 43696 43714 43719 43675 43715 43674 43708 43699 43690 43717 43709 43713 43685 43686 43693 43706 43695
+637 , 43721 , 5 , 41 , 1 , 1 ,
+637 , 43722 , 5 , 41 , 1 , 1 ,
+637 , 43723 , 5 , 41 , 1 , 1 ,
+637 , 43724 , 5 , 41 , 1 , 1 ,
+637 , 43725 , 5 , 52 , 1 , 1 ,
+637 , 43726 , 5 , 52 , 1 , 1 ,
+637 , 43727 , 5 , 52 , 1 , 1 ,
+637 , 43728 , 4 , 52 , 1 , 1 ,
+637 , 43729 , 4 , 52 , 1 , 1 ,
+637 , 43730 , 4 , 41 , 1 , 1 ,
+637 , 43731 , 3 , 41 , 1 , 1 ,
+637 , 43732 , 3 , 52 , 1 , 1 ,
+637 , 43733 , 3 , 52 , 1 , 1 ,
+637 , 43734 , 3 , 52 , 1 , 1 ,
+637 , 43735 , 3 , 52 , 1 , 1 ,
+637 , 43736 , 3 , 52 , 1 , 1 ,
+637 , 43737 , 3 , 52 , 1 , 1 ,
+637 , 43738 , 3 , 41 , 1 , 1 ,
+637 , 43739 , 3 , 51 , 1 , 1 ,
+637 , 43740 , 2 , 51 , 1 , 1 ,
+637 , 43741 , 69 , 21 , 1 , 1 , 43738 43731 43737 43734 43739 43740 43733 43730 43736 43722 43728 43724 43727 43726 43725 43721 43735 43723 43732 43729
+638 , 43742 , 4 , 11 , 1 , 1 ,
+639 , 43743 , 4 , 0 , 1 , 1 ,
+639 , 43744 , 4 , 0 , 1 , 1 ,
+639 , 43745 , 4 , 0 , 1 , 1 ,
+639 , 43746 , 17 , 0 , 1 , 1 , 43743
+639 , 43747 , 19 , 0 , 1 , 1 , 43743
+639 , 43748 , 19 , 0 , 1 , 1 , 43743
+639 , 43749 , 17 , 0 , 1 , 1 , 43743
+639 , 43750 , 16 , 0 , 1 , 1 , 43744
+639 , 43751 , 19 , 0 , 1 , 1 , 43744
+639 , 43752 , 19 , 0 , 1 , 1 , 43744
+639 , 43753 , 16 , 0 , 1 , 1 , 43744
+639 , 43754 , 16 , 0 , 1 , 1 , 43745
+639 , 43755 , 19 , 0 , 1 , 1 , 43745
+639 , 43756 , 19 , 0 , 1 , 1 , 43745
+639 , 43757 , 16 , 0 , 1 , 1 , 43745
+639 , 43758 , 44 , 0 , 1 , 1 , 43746
+639 , 43759 , 40 , 0 , 1 , 1 , 43747
+639 , 43760 , 37 , 0 , 1 , 1 , 43747
+639 , 43761 , 34 , 11 , 1 , 1 , 43748
+639 , 43762 , 33 , 0 , 1 , 1 , 43748
+639 , 43763 , 43 , 0 , 1 , 1 , 43749
+639 , 43764 , 30 , 0 , 1 , 1 , 43750
+639 , 43765 , 40 , 11 , 1 , 1 , 43751
+639 , 43766 , 37 , 0 , 1 , 1 , 43751
+639 , 43767 , 34 , 0 , 1 , 1 , 43752
+639 , 43768 , 33 , 0 , 1 , 1 , 43752
+639 , 43769 , 41 , 0 , 1 , 1 , 43753
+639 , 43770 , 28 , 0 , 1 , 1 , 43754
+639 , 43771 , 40 , 11 , 1 , 1 , 43755
+639 , 43772 , 37 , 11 , 1 , 1 , 43755
+639 , 43773 , 34 , 0 , 1 , 1 , 43756
+639 , 43774 , 33 , 0 , 1 , 1 , 43756
+639 , 43775 , 28 , 0 , 1 , 1 , 43757
+639 , 43776 , 65 , 0 , 1 , 1 , 43759 43762 43760 43763 43761
+639 , 43777 , 64 , 0 , 1 , 1 , 43766 43767 43769 43765 43768
+639 , 43778 , 64 , 0 , 1 , 1 , 43774 43773 43771 43772 43775
+639 , 43779 , 78 , 0 , 1 , 1 , 43758 43776
+639 , 43780 , 78 , 0 , 1 , 1 , 43758 43776
+639 , 43781 , 78 , 0 , 1 , 1 , 43758 43776
+639 , 43782 , 78 , 0 , 1 , 1 , 43758 43776
+639 , 43783 , 78 , 0 , 1 , 1 , 43758 43776
+639 , 43784 , 75 , 0 , 1 , 1 , 43777 43764
+639 , 43785 , 75 , 0 , 1 , 1 , 43777 43764
+639 , 43786 , 75 , 0 , 1 , 1 , 43777 43764
+639 , 43787 , 75 , 0 , 1 , 1 , 43777 43764
+639 , 43788 , 75 , 0 , 1 , 1 , 43777 43764
+639 , 43789 , 75 , 0 , 1 , 1 , 43778 43770
+639 , 43790 , 75 , 0 , 1 , 1 , 43778 43770
+639 , 43791 , 75 , 11 , 1 , 1 , 43778 43770
+639 , 43792 , 75 , 0 , 1 , 1 , 43778 43770
+639 , 43793 , 75 , 0 , 1 , 1 , 43778 43770
+640 , 43795 , 4 , 0 , 1 , 1 ,
+640 , 43796 , 4 , 0 , 1 , 1 ,
+640 , 43797 , 4 , 0 , 1 , 1 ,
+640 , 43798 , 17 , 0 , 1 , 1 , 43795
+640 , 43799 , 16 , 0 , 1 , 1 , 43795
+640 , 43800 , 16 , 0 , 1 , 1 , 43795
+640 , 43801 , 17 , 0 , 1 , 1 , 43795
+640 , 43802 , 19 , 0 , 1 , 1 , 43796
+640 , 43803 , 16 , 0 , 1 , 1 , 43796
+640 , 43804 , 16 , 0 , 1 , 1 , 43796
+640 , 43805 , 19 , 0 , 1 , 1 , 43796
+640 , 43806 , 15 , 0 , 1 , 1 , 43797
+640 , 43807 , 16 , 0 , 1 , 1 , 43797
+640 , 43808 , 16 , 0 , 1 , 1 , 43797
+640 , 43809 , 15 , 0 , 1 , 1 , 43797
+640 , 43810 , 43 , 0 , 1 , 1 , 43798
+640 , 43811 , 39 , 0 , 1 , 1 , 43799
+640 , 43812 , 39 , 0 , 1 , 1 , 43799
+640 , 43813 , 39 , 0 , 1 , 1 , 43800
+640 , 43814 , 39 , 0 , 1 , 1 , 43800
+640 , 43815 , 32 , 0 , 1 , 1 , 43801
+640 , 43816 , 34 , 0 , 1 , 1 , 43802
+640 , 43817 , 39 , 0 , 1 , 1 , 43803
+640 , 43818 , 39 , 0 , 1 , 1 , 43803
+640 , 43819 , 39 , 0 , 1 , 1 , 43804
+640 , 43820 , 39 , 0 , 1 , 1 , 43804
+640 , 43821 , 35 , 0 , 1 , 1 , 43805
+640 , 43822 , 27 , 0 , 1 , 1 , 43806
+640 , 43823 , 31 , 0 , 1 , 1 , 43807
+640 , 43824 , 30 , 0 , 1 , 1 , 43807
+640 , 43825 , 39 , 0 , 1 , 1 , 43808
+640 , 43826 , 39 , 0 , 1 , 1 , 43808
+640 , 43827 , 27 , 0 , 1 , 1 , 43809
+640 , 43828 , 55 , 0 , 1 , 1 , 43813 43812 43814 43811 43815
+640 , 43829 , 66 , 0 , 1 , 1 , 43817 43820 43819 43821 43818
+640 , 43830 , 66 , 0 , 1 , 1 , 43823 43826 43824 43825 43827
+640 , 43831 , 67 , 0 , 1 , 1 , 43810 43828
+640 , 43832 , 67 , 0 , 1 , 1 , 43810 43828
+640 , 43833 , 67 , 0 , 1 , 1 , 43810 43828
+640 , 43834 , 67 , 0 , 1 , 1 , 43810 43828
+640 , 43835 , 67 , 0 , 1 , 1 , 43810 43828
+640 , 43836 , 77 , 11 , 1 , 1 , 43829 43816
+640 , 43837 , 77 , 0 , 1 , 1 , 43829 43816
+640 , 43838 , 77 , 0 , 1 , 1 , 43829 43816
+640 , 43839 , 77 , 0 , 1 , 1 , 43829 43816
+640 , 43840 , 77 , 0 , 1 , 1 , 43829 43816
+640 , 43841 , 77 , 0 , 1 , 1 , 43822 43830
+640 , 43842 , 77 , 0 , 1 , 1 , 43822 43830
+640 , 43843 , 77 , 0 , 1 , 1 , 43822 43830
+640 , 43844 , 77 , 0 , 1 , 1 , 43822 43830
+640 , 43845 , 77 , 0 , 1 , 1 , 43822 43830
+641 , 43907 , 331 , 763 , 1 , 1 ,
+641 , 43908 , 331 , 785 , 1 , 1 ,
+641 , 43909 , 331 , 721 , 1 , 1 ,
+641 , 43910 , 330 , 722 , 1 , 1 ,
+641 , 43911 , 330 , 617 , 1 , 1 ,
+641 , 43912 , 330 , 608 , 1 , 1 ,
+641 , 43913 , 330 , 618 , 1 , 1 ,
+641 , 43914 , 329 , 524 , 1 , 1 ,
+641 , 43915 , 328 , 485 , 1 , 1 ,
+641 , 43916 , 328 , 440 , 1 , 1 ,
+641 , 43917 , 328 , 474 , 1 , 1 ,
+641 , 43918 , 327 , 451 , 1 , 1 ,
+641 , 43919 , 327 , 461 , 1 , 1 ,
+641 , 43920 , 327 , 439 , 1 , 1 ,
+641 , 43921 , 326 , 431 , 1 , 1 ,
+641 , 43922 , 326 , 442 , 1 , 1 ,
+641 , 43923 , 326 , 441 , 1 , 1 ,
+641 , 43924 , 325 , 452 , 1 , 1 ,
+641 , 43925 , 325 , 472 , 1 , 1 ,
+641 , 43926 , 325 , 535 , 1 , 1 ,
+641 , 43927 , 318 , 412 , 1 , 1 ,
+641 , 43928 , 316 , 742 , 1 , 1 ,
+641 , 43929 , 316 , 774 , 1 , 1 ,
+641 , 43930 , 316 , 851 , 1 , 1 ,
+641 , 43931 , 316 , 972 , 1 , 1 ,
+641 , 43932 , 316 , 993 , 1 , 1 ,
+641 , 43933 , 316 , 989 , 1 , 1 ,
+641 , 43934 , 316 , 1044 , 1 , 1 ,
+641 , 43935 , 316 , 925 , 1 , 1 ,
+641 , 43936 , 316 , 935 , 1 , 1 ,
+641 , 43937 , 311 , 309 , 1 , 1 ,
+641 , 43938 , 198 , 927 , 1 , 1 ,
+641 , 43939 , 198 , 934 , 1 , 1 ,
+641 , 43940 , 198 , 942 , 1 , 1 ,
+641 , 43941 , 197 , 816 , 1 , 1 ,
+641 , 43942 , 197 , 676 , 1 , 1 ,
+641 , 43943 , 197 , 588 , 1 , 1 ,
+641 , 43944 , 196 , 526 , 1 , 1 ,
+641 , 43945 , 196 , 493 , 1 , 1 ,
+641 , 43946 , 196 , 505 , 1 , 1 ,
+641 , 43947 , 81 , 493 , 1 , 1 ,
+641 , 43948 , 81 , 463 , 1 , 1 ,
+641 , 43949 , 81 , 419 , 1 , 1 ,
+641 , 43950 , 80 , 410 , 1 , 1 ,
+641 , 43951 , 80 , 440 , 1 , 1 ,
+641 , 43952 , 80 , 413 , 1 , 1 ,
+641 , 43953 , 79 , 440 , 1 , 1 ,
+641 , 43954 , 79 , 456 , 1 , 1 ,
+641 , 43955 , 79 , 482 , 1 , 1 ,
+641 , 43956 , 5 , 456 , 1 , 1 ,
+641 , 43957 , 5 , 347 , 1 , 1 ,
+641 , 43958 , 5 , 319 , 1 , 1 ,
+641 , 43959 , 5 , 295 , 1 , 1 ,
+641 , 43960 , 5 , 302 , 1 , 1 ,
+641 , 43961 , 5 , 309 , 1 , 1 ,
+641 , 43962 , 5 , 320 , 1 , 1 ,
+641 , 43963 , 5 , 428 , 1 , 1 ,
+641 , 43964 , 1 , 922 , 1 , 1 ,
+641 , 43965 , 1 , 876 , 1 , 1 ,
+641 , 43966 , 1 , 771 , 1 , 1 ,
+641 , 43967 , 1543 , 481 , 1 , 1 , 43931 43935 43964 43959 43929 43960 43911 43942 43919 43948 43950 43924 43932 43937 43907 43955 43913 43916 43928 43945 43947 43915 43912 43946 43914 43966 43954 43927 43934 43938 43909 43933 43963 43936 43958 43908 43941 43926 43921 43961 43917 43922 43918 43940 43957 43956 43939 43953 43949 43923 43925 43944 43920 43962 43965 43952 43930 43910 43943 43951
+642 , 43968 , 3 , 126 , 1 , 1 ,
+642 , 43969 , 3 , 157 , 1 , 1 ,
+642 , 43970 , 3 , 94 , 1 , 1 ,
+642 , 43971 , 288 , 11 , 1 , 1 , 43969 43970 43968
+643 , 43972 , 19 , 164 , 1 , 1 ,
+643 , 43973 , 19 , 174 , 1 , 1 ,
+643 , 43974 , 18 , 154 , 1 , 1 ,
+643 , 43975 , 18 , 154 , 1 , 1 ,
+643 , 43976 , 18 , 164 , 1 , 1 ,
+643 , 43977 , 18 , 174 , 1 , 1 ,
+643 , 43978 , 18 , 194 , 1 , 1 ,
+643 , 43979 , 17 , 184 , 1 , 1 ,
+643 , 43980 , 17 , 184 , 1 , 1 ,
+643 , 43981 , 17 , 174 , 1 , 1 ,
+643 , 43982 , 16 , 205 , 1 , 1 ,
+643 , 43983 , 15 , 205 , 1 , 1 ,
+643 , 43984 , 15 , 215 , 1 , 1 ,
+643 , 43985 , 15 , 215 , 1 , 1 ,
+643 , 43986 , 15 , 215 , 1 , 1 ,
+643 , 43987 , 15 , 225 , 1 , 1 ,
+643 , 43988 , 14 , 215 , 1 , 1 ,
+643 , 43989 , 14 , 225 , 1 , 1 ,
+643 , 43990 , 14 , 205 , 1 , 1 ,
+643 , 43991 , 14 , 235 , 1 , 1 ,
+643 , 43992 , 13 , 245 , 1 , 1 ,
+643 , 43993 , 13 , 256 , 1 , 1 ,
+643 , 43994 , 13 , 245 , 1 , 1 ,
+643 , 43995 , 13 , 235 , 1 , 1 ,
+643 , 43996 , 13 , 205 , 1 , 1 ,
+643 , 43997 , 12 , 215 , 1 , 1 ,
+643 , 43998 , 12 , 184 , 1 , 1 ,
+643 , 43999 , 12 , 205 , 1 , 1 ,
+643 , 44000 , 11 , 205 , 1 , 1 ,
+643 , 44001 , 11 , 194 , 1 , 1 ,
+643 , 44002 , 10 , 194 , 1 , 1 ,
+643 , 44003 , 10 , 205 , 1 , 1 ,
+643 , 44004 , 9 , 205 , 1 , 1 ,
+643 , 44005 , 9 , 215 , 1 , 1 ,
+643 , 44006 , 9 , 205 , 1 , 1 ,
+643 , 44007 , 9 , 205 , 1 , 1 ,
+643 , 44008 , 9 , 184 , 1 , 1 ,
+643 , 44009 , 9 , 194 , 1 , 1 ,
+643 , 44010 , 8 , 205 , 1 , 1 ,
+643 , 44011 , 8 , 215 , 1 , 1 ,
+643 , 44012 , 7 , 225 , 1 , 1 ,
+643 , 44013 , 7 , 215 , 1 , 1 ,
+643 , 44014 , 7 , 215 , 1 , 1 ,
+643 , 44015 , 7 , 215 , 1 , 1 ,
+643 , 44016 , 7 , 215 , 1 , 1 ,
+643 , 44017 , 7 , 205 , 1 , 1 ,
+643 , 44018 , 7 , 205 , 1 , 1 ,
+643 , 44019 , 7 , 215 , 1 , 1 ,
+643 , 44020 , 7 , 205 , 1 , 1 ,
+643 , 44021 , 7 , 225 , 1 , 1 ,
+643 , 44022 , 5 , 194 , 1 , 1 ,
+643 , 44023 , 5 , 205 , 1 , 1 ,
+643 , 44024 , 5 , 194 , 1 , 1 ,
+643 , 44025 , 5 , 194 , 1 , 1 ,
+643 , 44026 , 5 , 195 , 1 , 1 ,
+643 , 44027 , 5 , 205 , 1 , 1 ,
+643 , 44028 , 5 , 215 , 1 , 1 ,
+643 , 44029 , 5 , 194 , 1 , 1 ,
+643 , 44030 , 5 , 205 , 1 , 1 ,
+643 , 44031 , 5 , 194 , 1 , 1 ,
+643 , 44032 , 282 , 174 , 1 , 1 , 43986 43984 44019 43989 43997 44010 44023 44005 43994 44000 44031 43977 44012 43991 44002 44018 43978 44009 44013 43995 43987 44008 44028 44016 43973 44007 43992 44004 43981 43980 44030 44024 43988 44020 43996 44001 44003 44006 43985 43983 43979 43998 44021 44022 43972 44025 44011 43990 43975 43974 44014 44027 43999 44026 44029 43976 44015 43993 43982 44017
+644 , 44042 , 20 , 174 , 1 , 1 ,
+644 , 44043 , 20 , 184 , 1 , 1 ,
+644 , 44044 , 20 , 174 , 1 , 1 ,
+644 , 44045 , 19 , 174 , 1 , 1 ,
+644 , 44046 , 19 , 154 , 1 , 1 ,
+644 , 44047 , 19 , 164 , 1 , 1 ,
+644 , 44048 , 19 , 184 , 1 , 1 ,
+644 , 44049 , 19 , 174 , 1 , 1 ,
+644 , 44050 , 19 , 174 , 1 , 1 ,
+644 , 44051 , 18 , 184 , 1 , 1 ,
+644 , 44052 , 17 , 184 , 1 , 1 ,
+644 , 44053 , 17 , 194 , 1 , 1 ,
+644 , 44054 , 16 , 205 , 1 , 1 ,
+644 , 44055 , 16 , 205 , 1 , 1 ,
+644 , 44056 , 16 , 205 , 1 , 1 ,
+644 , 44057 , 16 , 205 , 1 , 1 ,
+644 , 44058 , 15 , 205 , 1 , 1 ,
+644 , 44059 , 15 , 205 , 1 , 1 ,
+644 , 44060 , 15 , 205 , 1 , 1 ,
+644 , 44061 , 14 , 215 , 1 , 1 ,
+644 , 44062 , 13 , 245 , 1 , 1 ,
+644 , 44063 , 13 , 256 , 1 , 1 ,
+644 , 44064 , 13 , 235 , 1 , 1 ,
+644 , 44065 , 13 , 235 , 1 , 1 ,
+644 , 44066 , 13 , 215 , 1 , 1 ,
+644 , 44067 , 12 , 215 , 1 , 1 ,
+644 , 44068 , 12 , 194 , 1 , 1 ,
+644 , 44069 , 12 , 194 , 1 , 1 ,
+644 , 44070 , 12 , 205 , 1 , 1 ,
+644 , 44071 , 12 , 194 , 1 , 1 ,
+644 , 44072 , 10 , 194 , 1 , 1 ,
+644 , 44073 , 10 , 194 , 1 , 1 ,
+644 , 44074 , 10 , 194 , 1 , 1 ,
+644 , 44075 , 10 , 215 , 1 , 1 ,
+644 , 44076 , 10 , 215 , 1 , 1 ,
+644 , 44077 , 9 , 205 , 1 , 1 ,
+644 , 44078 , 9 , 194 , 1 , 1 ,
+644 , 44079 , 9 , 184 , 1 , 1 ,
+644 , 44080 , 9 , 205 , 1 , 1 ,
+644 , 44081 , 8 , 215 , 1 , 1 ,
+644 , 44082 , 7 , 225 , 1 , 1 ,
+644 , 44083 , 7 , 215 , 1 , 1 ,
+644 , 44084 , 7 , 215 , 1 , 1 ,
+644 , 44085 , 7 , 215 , 1 , 1 ,
+644 , 44086 , 7 , 215 , 1 , 1 ,
+644 , 44087 , 7 , 215 , 1 , 1 ,
+644 , 44088 , 7 , 215 , 1 , 1 ,
+644 , 44089 , 7 , 215 , 1 , 1 ,
+644 , 44090 , 7 , 215 , 1 , 1 ,
+644 , 44091 , 7 , 225 , 1 , 1 ,
+644 , 44092 , 5 , 215 , 1 , 1 ,
+644 , 44093 , 5 , 205 , 1 , 1 ,
+644 , 44094 , 5 , 184 , 1 , 1 ,
+644 , 44095 , 5 , 184 , 1 , 1 ,
+644 , 44096 , 5 , 184 , 1 , 1 ,
+644 , 44097 , 5 , 194 , 1 , 1 ,
+644 , 44098 , 5 , 205 , 1 , 1 ,
+644 , 44099 , 5 , 205 , 1 , 1 ,
+644 , 44100 , 5 , 195 , 1 , 1 ,
+644 , 44101 , 5 , 184 , 1 , 1 ,
+644 , 44102 , 283 , 174 , 1 , 1 , 44088 44059 44098 44092 44054 44085 44069 44049 44056 44068 44042 44087 44066 44082 44090 44051 44045 44094 44099 44058 44048 44079 44060 44083 44075 44078 44096 44077 44070 44050 44071 44047 44062 44061 44053 44073 44080 44095 44072 44044 44100 44043 44091 44057 44084 44097 44076 44055 44101 44093 44074 44081 44064 44063 44052 44046 44086 44067 44089 44065
+645 , 44104 , 4 , 11 , 1 , 1 ,
+646 , 44135 , 5 , 11 , 1 , 1 ,
+647 , 44136 , 1 , 11 , 1 , 1 ,
+648 , 44137 , 4 , 11 , 1 , 1 ,
+649 , 44138 , 1 , 11 , 1 , 1 ,
+650 , 44139 , 2 , 11 , 1 , 1 ,
+651 , 44140 , 2 , 11 , 1 , 1 ,
+652 , 44142 , 4 , 11 , 1 , 1 ,
+653 , 44143 , 5 , 11 , 1 , 1 ,
+654 , 44144 , 4 , 10 , 1 , 1 ,
+655 , 44145 , 5 , 11 , 1 , 1 ,
+656 , 44146 , 4 , 11 , 1 , 1 ,
+657 , 44147 , 4 , 11 , 1 , 1 ,
+658 , 44148 , 3 , 11 , 1 , 1 ,
+659 , 44149 , 3 , 11 , 1 , 1 ,
+660 , 44150 , 2 , 11 , 1 , 1 ,
+661 , 44151 , 3 , 11 , 1 , 1 ,
+662 , 44152 , 1 , 11 , 1 , 1 ,
+663 , 44153 , 1 , 11 , 1 , 1 ,
+664 , 44154 , 1 , 11 , 1 , 1 ,
+665 , 44155 , 3 , 11 , 1 , 1 ,
+666 , 44156 , 2 , 0 , 1 , 1 ,
+667 , 44157 , 3 , 11 , 1 , 1 ,
+668 , 44158 , 1 , 11 , 1 , 1 ,
+669 , 44159 , 3 , 11 , 1 , 1 ,
+670 , 44160 , 2 , 11 , 1 , 1 ,
+671 , 44161 , 3 , 11 , 1 , 1 ,
+672 , 44162 , 3 , 11 , 1 , 1 ,
+673 , 44163 , 1 , 11 , 1 , 1 ,
+674 , 44164 , 3 , 11 , 1 , 1 ,
+675 , 44165 , 2 , 11 , 1 , 1 ,
+676 , 44166 , 3 , 11 , 1 , 1 ,
+677 , 44167 , 1 , 11 , 1 , 1 ,
+678 , 44168 , 2 , 11 , 1 , 1 ,
+679 , 44169 , 2 , 11 , 1 , 1 ,
+680 , 44170 , 2 , 11 , 1 , 1 ,
+681 , 44171 , 40 , 11 , 1 , 1 ,
+682 , 44172 , 1 , 11 , 1 , 1 ,
+683 , 44173 , 1 , 11 , 1 , 1 ,
+684 , 44174 , 4 , 11 , 1 , 1 ,
+685 , 44175 , 1 , 11 , 1 , 1 ,
+686 , 44176 , 1 , 11 , 1 , 1 ,
+687 , 44177 , 3 , 11 , 1 , 1 ,
+688 , 44178 , 2 , 11 , 1 , 1 ,
+689 , 44179 , 2 , 11 , 1 , 1 ,
+690 , 44180 , 3 , 11 , 1 , 1 ,
+691 , 44181 , 2 , 11 , 1 , 1 ,
+692 , 44182 , 1 , 11 , 1 , 1 ,
+693 , 44183 , 2 , 11 , 1 , 1 ,
+694 , 44184 , 2 , 11 , 1 , 1 ,
+695 , 44185 , 1 , 11 , 1 , 1 ,
+696 , 44186 , 1 , 11 , 1 , 1 ,
+697 , 44188 , 4 , 11 , 1 , 1 ,
+698 , 44189 , 4 , 0 , 1 , 1 ,
+699 , 44190 , 3 , 0 , 1 , 1 ,
+700 , 44191 , 2 , 11 , 1 , 1 ,
+701 , 44192 , 1 , 51 , 1 , 1 ,
+702 , 44193 , 2 , 51 , 1 , 1 ,
+703 , 44195 , 2 , 11 , 1 , 1 ,
+704 , 44196 , 1 , 11 , 1 , 1 ,
+705 , 44197 , 3 , 11 , 1 , 1 ,
+706 , 44198 , 4 , 11 , 1 , 1 ,
+707 , 44199 , 3 , 11 , 1 , 1 ,
+708 , 44200 , 3 , 11 , 1 , 1 ,
+709 , 44201 , 1 , 11 , 1 , 1 ,
+710 , 44202 , 3 , 11 , 1 , 1 ,
+711 , 44203 , 5 , 11 , 1 , 1 ,
+711 , 44204 , 5 , 1 , 1 , 1 ,
+712 , 44205 , 1 , 11 , 1 , 1 ,
+712 , 44206 , 1 , 21 , 1 , 1 ,
+713 , 44207 , 1 , 11 , 1 , 1 ,
+713 , 44208 , 1 , 21 , 1 , 1 ,
+714 , 44209 , 3 , 11 , 1 , 1 ,
+714 , 44210 , 3 , 21 , 1 , 1 ,
+715 , 44213 , 4 , 11 , 1 , 1 ,
+715 , 44214 , 4 , 21 , 1 , 1 ,
+716 , 44215 , 2 , 11 , 1 , 1 ,
+716 , 44216 , 2 , 21 , 1 , 1 ,
+717 , 44217 , 1 , 11 , 1 , 1 ,
+717 , 44218 , 1 , 21 , 1 , 1 ,
+718 , 44219 , 6 , 11 , 1 , 1 ,
+718 , 44220 , 6 , 21 , 1 , 1 ,
+719 , 44221 , 1 , 11 , 1 , 1 ,
+719 , 44222 , 1 , 21 , 1 , 1 ,
+720 , 44223 , 2 , 11 , 1 , 1 ,
+720 , 44224 , 2 , 21 , 1 , 1 ,
+721 , 44229 , 4 , 41 , 1 , 1 ,
+721 , 44230 , 4 , 52 , 1 , 1 ,
+721 , 44231 , 4 , 41 , 1 , 1 ,
+721 , 44232 , 67 , 0 , 1 , 1 , 44230 44231 44229
+722 , 44233 , 1 , 41 , 1 , 1 ,
+722 , 44234 , 1 , 51 , 1 , 1 ,
+722 , 44235 , 1 , 41 , 1 , 1 ,
+722 , 44236 , 64 , 0 , 1 , 1 , 44233 44235 44234
+723 , 44237 , 1 , 41 , 1 , 1 ,
+723 , 44238 , 1 , 52 , 1 , 1 ,
+723 , 44239 , 1 , 41 , 1 , 1 ,
+723 , 44240 , 64 , 0 , 1 , 1 , 44238 44237 44239
+724 , 44244 , 94 , 174 , 1 , 1 ,
+724 , 44245 , 94 , 184 , 1 , 1 ,
+724 , 44246 , 94 , 164 , 1 , 1 ,
+724 , 44247 , 94 , 164 , 1 , 1 ,
+724 , 44248 , 90 , 164 , 1 , 1 ,
+724 , 44249 , 90 , 184 , 1 , 1 ,
+724 , 44250 , 90 , 174 , 1 , 1 ,
+724 , 44251 , 90 , 184 , 1 , 1 ,
+724 , 44252 , 90 , 184 , 1 , 1 ,
+724 , 44253 , 90 , 194 , 1 , 1 ,
+724 , 44254 , 90 , 184 , 1 , 1 ,
+724 , 44255 , 90 , 205 , 1 , 1 ,
+724 , 44256 , 90 , 205 , 1 , 1 ,
+724 , 44257 , 90 , 215 , 1 , 1 ,
+724 , 44258 , 86 , 205 , 1 , 1 ,
+724 , 44259 , 86 , 195 , 1 , 1 ,
+724 , 44260 , 86 , 215 , 1 , 1 ,
+724 , 44261 , 86 , 215 , 1 , 1 ,
+724 , 44262 , 86 , 215 , 1 , 1 ,
+724 , 44263 , 86 , 215 , 1 , 1 ,
+724 , 44264 , 86 , 225 , 1 , 1 ,
+724 , 44265 , 86 , 246 , 1 , 1 ,
+724 , 44266 , 86 , 216 , 1 , 1 ,
+724 , 44267 , 86 , 215 , 1 , 1 ,
+724 , 44268 , 83 , 215 , 1 , 1 ,
+724 , 44269 , 83 , 205 , 1 , 1 ,
+724 , 44270 , 83 , 184 , 1 , 1 ,
+724 , 44271 , 83 , 194 , 1 , 1 ,
+724 , 44272 , 83 , 194 , 1 , 1 ,
+724 , 44273 , 83 , 194 , 1 , 1 ,
+724 , 44274 , 83 , 164 , 1 , 1 ,
+724 , 44275 , 83 , 184 , 1 , 1 ,
+724 , 44276 , 83 , 194 , 1 , 1 ,
+724 , 44277 , 83 , 205 , 1 , 1 ,
+724 , 44278 , 80 , 194 , 1 , 1 ,
+724 , 44279 , 80 , 194 , 1 , 1 ,
+724 , 44280 , 80 , 184 , 1 , 1 ,
+724 , 44281 , 80 , 184 , 1 , 1 ,
+724 , 44282 , 80 , 184 , 1 , 1 ,
+724 , 44283 , 80 , 194 , 1 , 1 ,
+724 , 44284 , 80 , 194 , 1 , 1 ,
+724 , 44285 , 80 , 205 , 1 , 1 ,
+724 , 44286 , 76 , 205 , 1 , 1 ,
+724 , 44287 , 76 , 205 , 1 , 1 ,
+724 , 44288 , 76 , 184 , 1 , 1 ,
+724 , 44289 , 76 , 184 , 1 , 1 ,
+724 , 44290 , 76 , 205 , 1 , 1 ,
+724 , 44291 , 76 , 205 , 1 , 1 ,
+724 , 44292 , 73 , 215 , 1 , 1 ,
+724 , 44293 , 73 , 205 , 1 , 1 ,
+724 , 44294 , 73 , 184 , 1 , 1 ,
+724 , 44295 , 73 , 184 , 1 , 1 ,
+724 , 44296 , 73 , 174 , 1 , 1 ,
+724 , 44297 , 73 , 184 , 1 , 1 ,
+724 , 44298 , 73 , 164 , 1 , 1 ,
+724 , 44299 , 73 , 194 , 1 , 1 ,
+724 , 44300 , 73 , 194 , 1 , 1 ,
+724 , 44301 , 73 , 194 , 1 , 1 ,
+724 , 44302 , 69 , 185 , 1 , 1 ,
+724 , 44303 , 69 , 185 , 1 , 1 ,
+724 , 44304 , 352 , 174 , 1 , 1 , 44259 44280 44270 44267 44299 44264 44255 44286 44244 44303 44250 44285 44248 44296 44271 44278 44298 44293 44249 44252 44251 44276 44260 44300 44279 44287 44262 44288 44297 44277 44272 44283 44265 44247 44263 44257 44273 44268 44281 44290 44292 44266 44269 44245 44302 44282 44284 44253 44294 44261 44258 44254 44301 44295 44274 44291 44256 44246 44289 44275
+725 , 44349 , 3 , 11 , 1 , 1 ,
+725 , 44350 , 28 , 31 , 1 , 1 , 44349
+725 , 44351 , 28 , 31 , 1 , 1 , 44349
+725 , 44352 , 28 , 31 , 1 , 1 , 44349
+725 , 44353 , 28 , 31 , 1 , 1 , 44349
+725 , 44354 , 28 , 31 , 1 , 1 , 44349
+725 , 44355 , 27 , 0 , 1 , 1 , 44349
+725 , 44356 , 27 , 0 , 1 , 1 , 44349
+725 , 44357 , 27 , 31 , 1 , 1 , 44349
+725 , 44358 , 27 , 0 , 1 , 1 , 44349
+725 , 44359 , 27 , 31 , 1 , 1 , 44349
+725 , 44360 , 27 , 31 , 1 , 1 , 44349
+725 , 44361 , 27 , 0 , 1 , 1 , 44349
+725 , 44362 , 27 , 31 , 1 , 1 , 44349
+725 , 44363 , 26 , 0 , 1 , 1 , 44349
+725 , 44364 , 26 , 0 , 1 , 1 , 44349
+725 , 44365 , 26 , 31 , 1 , 1 , 44349
+725 , 44366 , 26 , 31 , 1 , 1 , 44349
+725 , 44367 , 26 , 31 , 1 , 1 , 44349
+725 , 44368 , 26 , 31 , 1 , 1 , 44349
+725 , 44369 , 73 , 0 , 1 , 1 , 44366 44354 44365 44351 44353 44363 44367 44360 44364 44368 44359 44356 44350 44361 44352 44362 44355 44357 44358
+725 , 44370 , 89 , 0 , 1 , 1 , 44369
+725 , 44371 , 89 , 0 , 1 , 1 , 44369
+725 , 44372 , 88 , 0 , 1 , 1 , 44369
+725 , 44373 , 88 , 0 , 1 , 1 , 44369
+725 , 44374 , 88 , 0 , 1 , 1 , 44369
+725 , 44375 , 88 , 0 , 1 , 1 , 44369
+725 , 44376 , 88 , 0 , 1 , 1 , 44369
+725 , 44377 , 88 , 0 , 1 , 1 , 44369
+725 , 44378 , 87 , 0 , 1 , 1 , 44369
+725 , 44379 , 87 , 11 , 1 , 1 , 44369
+725 , 44380 , 87 , 0 , 1 , 1 , 44369
+725 , 44381 , 87 , 0 , 1 , 1 , 44369
+725 , 44382 , 87 , 0 , 1 , 1 , 44369
+725 , 44383 , 87 , 0 , 1 , 1 , 44369
+725 , 44384 , 87 , 0 , 1 , 1 , 44369
+725 , 44385 , 87 , 0 , 1 , 1 , 44369
+725 , 44386 , 87 , 0 , 1 , 1 , 44369
+725 , 44387 , 87 , 0 , 1 , 1 , 44369
+725 , 44388 , 87 , 0 , 1 , 1 , 44369
+725 , 44389 , 114 , 0 , 1 , 1 , 44387 44383 44370 44373 44381 44374 44377 44380 44384 44382 44379 44372 44376 44388 44375 44378 44371 44386 44385
+726 , 44431 , 6 , 73 , 1 , 1 ,
+726 , 44432 , 88 , 231 , 1 , 1 , 44431
+726 , 44433 , 88 , 241 , 1 , 1 , 44431
+726 , 44434 , 88 , 241 , 1 , 1 , 44431
+726 , 44435 , 87 , 241 , 1 , 1 , 44431
+726 , 44436 , 87 , 241 , 1 , 1 , 44431
+726 , 44437 , 87 , 241 , 1 , 1 , 44431
+726 , 44438 , 86 , 241 , 1 , 1 , 44431
+726 , 44439 , 86 , 241 , 1 , 1 , 44431
+726 , 44440 , 86 , 241 , 1 , 1 , 44431
+726 , 44441 , 86 , 240 , 1 , 1 , 44431
+726 , 44442 , 85 , 230 , 1 , 1 , 44431
+726 , 44443 , 85 , 230 , 1 , 1 , 44431
+726 , 44444 , 85 , 241 , 1 , 1 , 44431
+726 , 44445 , 84 , 250 , 1 , 1 , 44431
+726 , 44446 , 84 , 241 , 1 , 1 , 44431
+726 , 44447 , 84 , 241 , 1 , 1 , 44431
+726 , 44448 , 83 , 261 , 1 , 1 , 44431
+726 , 44449 , 83 , 240 , 1 , 1 , 44431
+726 , 44450 , 83 , 240 , 1 , 1 , 44431
+726 , 44451 , 349 , 11 , 1 , 1 , 44446 44441 44434 44436 44447 44432 44442 44449 44443 44448 44444 44435 44437 44445 44433 44438 44440 44450 44439
+726 , 44452 , 371 , 32 , 1 , 1 , 44451
+726 , 44453 , 370 , 32 , 1 , 1 , 44451
+726 , 44454 , 370 , 32 , 1 , 1 , 44451
+726 , 44455 , 370 , 32 , 1 , 1 , 44451
+726 , 44456 , 370 , 32 , 1 , 1 , 44451
+726 , 44457 , 369 , 32 , 1 , 1 , 44451
+726 , 44458 , 369 , 21 , 1 , 1 , 44451
+726 , 44459 , 369 , 21 , 1 , 1 , 44451
+726 , 44460 , 368 , 21 , 1 , 1 , 44451
+726 , 44461 , 368 , 22 , 1 , 1 , 44451
+726 , 44462 , 368 , 21 , 1 , 1 , 44451
+726 , 44463 , 367 , 21 , 1 , 1 , 44451
+726 , 44464 , 367 , 21 , 1 , 1 , 44451
+726 , 44465 , 367 , 32 , 1 , 1 , 44451
+726 , 44466 , 366 , 32 , 1 , 1 , 44451
+726 , 44467 , 366 , 32 , 1 , 1 , 44451
+726 , 44468 , 366 , 32 , 1 , 1 , 44451
+726 , 44469 , 366 , 32 , 1 , 1 , 44451
+726 , 44470 , 366 , 32 , 1 , 1 , 44451
+726 , 44471 , 411 , 21 , 1 , 1 , 44460 44470 44463 44461 44465 44464 44452 44456 44462 44453 44458 44459 44457 44454 44467 44455 44468 44466 44469
+727 , 44472 , 3 , 73 , 1 , 1 ,
+727 , 44473 , 85 , 230 , 1 , 1 , 44472
+727 , 44474 , 85 , 240 , 1 , 1 , 44472
+727 , 44475 , 85 , 240 , 1 , 1 , 44472
+727 , 44476 , 85 , 240 , 1 , 1 , 44472
+727 , 44477 , 84 , 251 , 1 , 1 , 44472
+727 , 44478 , 84 , 251 , 1 , 1 , 44472
+727 , 44479 , 84 , 240 , 1 , 1 , 44472
+727 , 44480 , 83 , 230 , 1 , 1 , 44472
+727 , 44481 , 83 , 230 , 1 , 1 , 44472
+727 , 44482 , 83 , 240 , 1 , 1 , 44472
+727 , 44483 , 82 , 230 , 1 , 1 , 44472
+727 , 44484 , 82 , 230 , 1 , 1 , 44472
+727 , 44485 , 82 , 240 , 1 , 1 , 44472
+727 , 44486 , 81 , 240 , 1 , 1 , 44472
+727 , 44487 , 81 , 230 , 1 , 1 , 44472
+727 , 44488 , 81 , 230 , 1 , 1 , 44472
+727 , 44489 , 80 , 251 , 1 , 1 , 44472
+727 , 44490 , 80 , 230 , 1 , 1 , 44472
+727 , 44491 , 80 , 261 , 1 , 1 , 44472
+727 , 44492 , 349 , 11 , 1 , 1 , 44476 44482 44488 44486 44480 44483 44484 44491 44489 44475 44477 44479 44474 44490 44481 44487 44478 44473 44485
+727 , 44493 , 371 , 32 , 1 , 1 , 44492
+727 , 44494 , 370 , 21 , 1 , 1 , 44492
+727 , 44495 , 370 , 32 , 1 , 1 , 44492
+727 , 44496 , 370 , 32 , 1 , 1 , 44492
+727 , 44497 , 369 , 21 , 1 , 1 , 44492
+727 , 44498 , 369 , 32 , 1 , 1 , 44492
+727 , 44499 , 369 , 32 , 1 , 1 , 44492
+727 , 44500 , 368 , 21 , 1 , 1 , 44492
+727 , 44501 , 368 , 32 , 1 , 1 , 44492
+727 , 44502 , 368 , 32 , 1 , 1 , 44492
+727 , 44503 , 367 , 21 , 1 , 1 , 44492
+727 , 44504 , 367 , 32 , 1 , 1 , 44492
+727 , 44505 , 367 , 32 , 1 , 1 , 44492
+727 , 44506 , 366 , 32 , 1 , 1 , 44492
+727 , 44507 , 366 , 32 , 1 , 1 , 44492
+727 , 44508 , 366 , 32 , 1 , 1 , 44492
+727 , 44509 , 365 , 32 , 1 , 1 , 44492
+727 , 44510 , 365 , 32 , 1 , 1 , 44492
+727 , 44511 , 365 , 32 , 1 , 1 , 44492
+727 , 44512 , 409 , 22 , 1 , 1 , 44511 44493 44500 44510 44499 44508 44502 44498 44494 44496 44509 44501 44503 44507 44506 44497 44495 44504 44505
+728 , 44616 , 9 , 167 , 1 , 1 ,
+728 , 44617 , 9 , 136 , 1 , 1 ,
+728 , 44618 , 9 , 116 , 1 , 1 ,
+728 , 44619 , 8 , 94 , 1 , 1 ,
+728 , 44620 , 8 , 95 , 1 , 1 ,
+728 , 44621 , 8 , 95 , 1 , 1 ,
+728 , 44622 , 8 , 105 , 1 , 1 ,
+728 , 44623 , 7 , 147 , 1 , 1 ,
+728 , 44624 , 7 , 189 , 1 , 1 ,
+728 , 44625 , 7 , 219 , 1 , 1 ,
+728 , 44626 , 7 , 198 , 1 , 1 ,
+728 , 44627 , 6 , 178 , 1 , 1 ,
+728 , 44628 , 6 , 115 , 1 , 1 ,
+728 , 44629 , 6 , 105 , 1 , 1 ,
+728 , 44630 , 5 , 94 , 1 , 1 ,
+728 , 44631 , 5 , 94 , 1 , 1 ,
+728 , 44632 , 5 , 105 , 1 , 1 ,
+728 , 44633 , 4 , 115 , 1 , 1 ,
+728 , 44634 , 4 , 157 , 1 , 1 ,
+728 , 44635 , 4 , 188 , 1 , 1 ,
+728 , 44636 , 233 , 42 , 1 , 1 , 44634 44625 44630 44629 44627 44628 44632 44616 44626 44633 44619 44624 44623 44617 44618 44622 44635 44631 44620 44621
+729 , 44637 , 24 , 150 , 1 , 1 ,
+729 , 44638 , 23 , 153 , 1 , 1 ,
+729 , 44639 , 23 , 164 , 1 , 1 ,
+729 , 44640 , 23 , 149 , 1 , 1 ,
+729 , 44641 , 8 , 55 , 1 , 1 ,
+729 , 44642 , 8 , 54 , 1 , 1 ,
+729 , 44643 , 8 , 56 , 1 , 1 ,
+729 , 44644 , 8 , 64 , 1 , 1 ,
+729 , 44645 , 8 , 54 , 1 , 1 ,
+729 , 44646 , 8 , 65 , 1 , 1 ,
+729 , 44647 , 8 , 65 , 1 , 1 ,
+729 , 44648 , 8 , 66 , 1 , 1 ,
+729 , 44649 , 8 , 67 , 1 , 1 ,
+729 , 44650 , 22 , 102 , 1 , 1 ,
+729 , 44651 , 22 , 124 , 1 , 1 ,
+729 , 44652 , 22 , 102 , 1 , 1 ,
+729 , 44653 , 21 , 88 , 1 , 1 ,
+729 , 44654 , 20 , 102 , 1 , 1 ,
+729 , 44655 , 20 , 134 , 1 , 1 ,
+729 , 44656 , 20 , 90 , 1 , 1 ,
+729 , 44657 , 19 , 95 , 1 , 1 ,
+729 , 44658 , 19 , 98 , 1 , 1 ,
+729 , 44659 , 19 , 109 , 1 , 1 ,
+729 , 44660 , 18 , 144 , 1 , 1 ,
+729 , 44661 , 18 , 133 , 1 , 1 ,
+729 , 44662 , 18 , 144 , 1 , 1 ,
+729 , 44663 , 17 , 155 , 1 , 1 ,
+729 , 44664 , 17 , 175 , 1 , 1 ,
+729 , 44665 , 16 , 196 , 1 , 1 ,
+729 , 44666 , 15 , 196 , 1 , 1 ,
+729 , 44667 , 15 , 238 , 1 , 1 ,
+729 , 44668 , 15 , 196 , 1 , 1 ,
+729 , 44669 , 15 , 214 , 1 , 1 ,
+729 , 44670 , 14 , 228 , 1 , 1 ,
+729 , 44671 , 14 , 248 , 1 , 1 ,
+729 , 44672 , 14 , 195 , 1 , 1 ,
+729 , 44673 , 14 , 217 , 1 , 1 ,
+729 , 44674 , 13 , 238 , 1 , 1 ,
+729 , 44675 , 13 , 196 , 1 , 1 ,
+729 , 44676 , 13 , 186 , 1 , 1 ,
+729 , 44677 , 12 , 164 , 1 , 1 ,
+729 , 44678 , 12 , 133 , 1 , 1 ,
+729 , 44679 , 12 , 123 , 1 , 1 ,
+729 , 44680 , 11 , 112 , 1 , 1 ,
+729 , 44681 , 11 , 133 , 1 , 1 ,
+729 , 44682 , 11 , 99 , 1 , 1 ,
+729 , 44683 , 10 , 112 , 1 , 1 ,
+729 , 44684 , 10 , 138 , 1 , 1 ,
+729 , 44685 , 10 , 90 , 1 , 1 ,
+729 , 44686 , 9 , 124 , 1 , 1 ,
+729 , 44687 , 9 , 90 , 1 , 1 ,
+729 , 44688 , 9 , 85 , 1 , 1 ,
+729 , 44689 , 8 , 99 , 1 , 1 ,
+729 , 44690 , 8 , 90 , 1 , 1 ,
+729 , 44691 , 8 , 86 , 1 , 1 ,
+729 , 44692 , 7 , 90 , 1 , 1 ,
+729 , 44693 , 7 , 96 , 1 , 1 ,
+729 , 44694 , 7 , 100 , 1 , 1 ,
+729 , 44695 , 6 , 119 , 1 , 1 ,
+729 , 44696 , 6 , 110 , 1 , 1 ,
+729 , 44697 , 6 , 110 , 1 , 1 ,
+729 , 44698 , 5 , 110 , 1 , 1 ,
+729 , 44699 , 5 , 153 , 1 , 1 ,
+729 , 44700 , 5 , 146 , 1 , 1 ,
+729 , 44701 , 5 , 168 , 1 , 1 ,
+729 , 44702 , 4 , 179 , 1 , 1 ,
+729 , 44703 , 4 , 216 , 1 , 1 ,
+729 , 44704 , 4 , 175 , 1 , 1 ,
+729 , 44705 , 4 , 191 , 1 , 1 ,
+729 , 44706 , 4 , 154 , 1 , 1 ,
+729 , 44707 , 268 , 126 , 1 , 1 , 44684 44696 44672 44697 44655 44691 44686 44673 44704 44658 44643 44647 44677 44695 44699 44668 44692 44645 44685 44637 44698 44654 44670 44690 44640 44641 44703 44660 44669 44666 44674 44676 44650 44663 44653 44667 44644 44683 44678 44664 44702 44638 44651 44642 44665 44661 44657 44693 44694 44662 44705 44671 44681 44682 44639 44679 44680 44688 44706 44656 44689 44649 44701 44646 44659 44675 44652 44648 44687 44700
+730 , 44708 , 4 , 73 , 1 , 1 ,
+730 , 44709 , 87 , 230 , 1 , 1 , 44708
+730 , 44710 , 86 , 240 , 1 , 1 , 44708
+730 , 44711 , 86 , 241 , 1 , 1 , 44708
+730 , 44712 , 86 , 241 , 1 , 1 , 44708
+730 , 44713 , 85 , 241 , 1 , 1 , 44708
+730 , 44714 , 85 , 241 , 1 , 1 , 44708
+730 , 44715 , 85 , 250 , 1 , 1 , 44708
+730 , 44716 , 84 , 241 , 1 , 1 , 44708
+730 , 44717 , 84 , 240 , 1 , 1 , 44708
+730 , 44718 , 84 , 241 , 1 , 1 , 44708
+730 , 44719 , 83 , 240 , 1 , 1 , 44708
+730 , 44720 , 83 , 240 , 1 , 1 , 44708
+730 , 44721 , 83 , 240 , 1 , 1 , 44708
+730 , 44722 , 82 , 261 , 1 , 1 , 44708
+730 , 44723 , 82 , 240 , 1 , 1 , 44708
+730 , 44724 , 82 , 250 , 1 , 1 , 44708
+730 , 44725 , 81 , 230 , 1 , 1 , 44708
+730 , 44726 , 81 , 251 , 1 , 1 , 44708
+730 , 44727 , 81 , 251 , 1 , 1 , 44708
+730 , 44728 , 358 , 11 , 1 , 1 , 44709 44710 44716 44721 44724 44719 44712 44717 44715 44727 44713 44725 44720 44722 44714 44726 44718 44723 44711
+730 , 44729 , 379 , 32 , 1 , 1 , 44728
+730 , 44730 , 379 , 32 , 1 , 1 , 44728
+730 , 44731 , 379 , 32 , 1 , 1 , 44728
+730 , 44732 , 379 , 32 , 1 , 1 , 44728
+730 , 44733 , 378 , 32 , 1 , 1 , 44728
+730 , 44734 , 378 , 32 , 1 , 1 , 44728
+730 , 44735 , 378 , 32 , 1 , 1 , 44728
+730 , 44736 , 377 , 32 , 1 , 1 , 44728
+730 , 44737 , 377 , 32 , 1 , 1 , 44728
+730 , 44738 , 377 , 32 , 1 , 1 , 44728
+730 , 44739 , 376 , 21 , 1 , 1 , 44728
+730 , 44740 , 376 , 21 , 1 , 1 , 44728
+730 , 44741 , 376 , 21 , 1 , 1 , 44728
+730 , 44742 , 375 , 32 , 1 , 1 , 44728
+730 , 44743 , 375 , 32 , 1 , 1 , 44728
+730 , 44744 , 375 , 32 , 1 , 1 , 44728
+730 , 44745 , 374 , 32 , 1 , 1 , 44728
+730 , 44746 , 374 , 32 , 1 , 1 , 44728
+730 , 44747 , 374 , 32 , 1 , 1 , 44728
+730 , 44748 , 437 , 21 , 1 , 1 , 44747 44743 44745 44738 44742 44732 44740 44731 44736 44741 44739 44746 44729 44730 44733 44735 44744 44734 44737
+731 , 44749 , 3 , 73 , 1 , 1 ,
+731 , 44750 , 85 , 240 , 1 , 1 , 44749
+731 , 44751 , 85 , 241 , 1 , 1 , 44749
+731 , 44752 , 85 , 241 , 1 , 1 , 44749
+731 , 44753 , 84 , 241 , 1 , 1 , 44749
+731 , 44754 , 84 , 262 , 1 , 1 , 44749
+731 , 44755 , 84 , 241 , 1 , 1 , 44749
+731 , 44756 , 84 , 262 , 1 , 1 , 44749
+731 , 44757 , 83 , 241 , 1 , 1 , 44749
+731 , 44758 , 83 , 240 , 1 , 1 , 44749
+731 , 44759 , 83 , 262 , 1 , 1 , 44749
+731 , 44760 , 82 , 231 , 1 , 1 , 44749
+731 , 44761 , 82 , 230 , 1 , 1 , 44749
+731 , 44762 , 82 , 240 , 1 , 1 , 44749
+731 , 44763 , 81 , 250 , 1 , 1 , 44749
+731 , 44764 , 81 , 261 , 1 , 1 , 44749
+731 , 44765 , 81 , 230 , 1 , 1 , 44749
+731 , 44766 , 80 , 261 , 1 , 1 , 44749
+731 , 44767 , 80 , 240 , 1 , 1 , 44749
+731 , 44768 , 80 , 240 , 1 , 1 , 44749
+731 , 44769 , 560 , 11 , 1 , 1 , 44756 44767 44751 44766 44753 44759 44757 44752 44758 44760 44768 44765 44764 44755 44761 44750 44754 44762 44763
+731 , 44770 , 581 , 33 , 1 , 1 , 44769
+731 , 44771 , 580 , 33 , 1 , 1 , 44769
+731 , 44772 , 580 , 33 , 1 , 1 , 44769
+731 , 44773 , 580 , 33 , 1 , 1 , 44769
+731 , 44774 , 579 , 33 , 1 , 1 , 44769
+731 , 44775 , 579 , 33 , 1 , 1 , 44769
+731 , 44776 , 579 , 33 , 1 , 1 , 44769
+731 , 44777 , 578 , 33 , 1 , 1 , 44769
+731 , 44778 , 578 , 33 , 1 , 1 , 44769
+731 , 44779 , 578 , 23 , 1 , 1 , 44769
+731 , 44780 , 577 , 32 , 1 , 1 , 44769
+731 , 44781 , 577 , 32 , 1 , 1 , 44769
+731 , 44782 , 577 , 32 , 1 , 1 , 44769
+731 , 44783 , 576 , 32 , 1 , 1 , 44769
+731 , 44784 , 576 , 32 , 1 , 1 , 44769
+731 , 44785 , 576 , 32 , 1 , 1 , 44769
+731 , 44786 , 576 , 21 , 1 , 1 , 44769
+731 , 44787 , 576 , 21 , 1 , 1 , 44769
+731 , 44788 , 576 , 32 , 1 , 1 , 44769
+731 , 44789 , 620 , 21 , 1 , 1 , 44772 44774 44779 44781 44770 44775 44777 44782 44786 44771 44785 44784 44780 44776 44788 44778 44787 44783 44773
+732 , 44790 , 4 , 73 , 1 , 1 ,
+732 , 44791 , 331 , 242 , 1 , 1 , 44790
+732 , 44792 , 330 , 243 , 1 , 1 , 44790
+732 , 44793 , 329 , 235 , 1 , 1 , 44790
+732 , 44794 , 329 , 236 , 1 , 1 , 44790
+732 , 44795 , 326 , 233 , 1 , 1 , 44790
+732 , 44796 , 322 , 243 , 1 , 1 , 44790
+732 , 44797 , 322 , 234 , 1 , 1 , 44790
+732 , 44798 , 322 , 234 , 1 , 1 , 44790
+732 , 44799 , 320 , 235 , 1 , 1 , 44790
+732 , 44800 , 312 , 264 , 1 , 1 , 44790
+732 , 44801 , 263 , 237 , 1 , 1 , 44790
+732 , 44802 , 263 , 237 , 1 , 1 , 44790
+732 , 44803 , 263 , 236 , 1 , 1 , 44790
+732 , 44804 , 262 , 233 , 1 , 1 , 44790
+732 , 44805 , 262 , 233 , 1 , 1 , 44790
+732 , 44806 , 262 , 244 , 1 , 1 , 44790
+732 , 44807 , 261 , 234 , 1 , 1 , 44790
+732 , 44808 , 261 , 243 , 1 , 1 , 44790
+732 , 44809 , 261 , 234 , 1 , 1 , 44790
+732 , 44810 , 144 , 238 , 1 , 1 , 44790
+732 , 44811 , 144 , 239 , 1 , 1 , 44790
+732 , 44812 , 144 , 232 , 1 , 1 , 44790
+732 , 44813 , 143 , 253 , 1 , 1 , 44790
+732 , 44814 , 143 , 237 , 1 , 1 , 44790
+732 , 44815 , 143 , 237 , 1 , 1 , 44790
+732 , 44816 , 141 , 242 , 1 , 1 , 44790
+732 , 44817 , 141 , 233 , 1 , 1 , 44790
+732 , 44818 , 141 , 236 , 1 , 1 , 44790
+732 , 44819 , 84 , 244 , 1 , 1 , 44790
+732 , 44820 , 84 , 234 , 1 , 1 , 44790
+732 , 44821 , 84 , 233 , 1 , 1 , 44790
+732 , 44822 , 84 , 264 , 1 , 1 , 44790
+732 , 44823 , 84 , 234 , 1 , 1 , 44790
+732 , 44824 , 84 , 244 , 1 , 1 , 44790
+732 , 44825 , 84 , 234 , 1 , 1 , 44790
+732 , 44826 , 84 , 254 , 1 , 1 , 44790
+732 , 44827 , 84 , 234 , 1 , 1 , 44790
+732 , 44828 , 84 , 234 , 1 , 1 , 44790
+732 , 44829 , 84 , 234 , 1 , 1 , 44790
+732 , 44830 , 84 , 234 , 1 , 1 , 44790
+732 , 44831 , 84 , 264 , 1 , 1 , 44790
+732 , 44832 , 84 , 244 , 1 , 1 , 44790
+732 , 44833 , 84 , 234 , 1 , 1 , 44790
+732 , 44834 , 84 , 244 , 1 , 1 , 44790
+732 , 44835 , 100 , 240 , 1 , 1 , 44790
+732 , 44836 , 99 , 241 , 1 , 1 , 44790
+732 , 44837 , 99 , 325 , 1 , 1 , 44790
+732 , 44838 , 98 , 315 , 1 , 1 , 44790
+732 , 44839 , 98 , 239 , 1 , 1 , 44790
+732 , 44840 , 97 , 241 , 1 , 1 , 44790
+732 , 44841 , 97 , 241 , 1 , 1 , 44790
+732 , 44842 , 97 , 242 , 1 , 1 , 44790
+732 , 44843 , 96 , 243 , 1 , 1 , 44790
+732 , 44844 , 96 , 241 , 1 , 1 , 44790
+732 , 44845 , 96 , 284 , 1 , 1 , 44790
+732 , 44846 , 95 , 368 , 1 , 1 , 44790
+732 , 44847 , 95 , 246 , 1 , 1 , 44790
+732 , 44848 , 95 , 236 , 1 , 1 , 44790
+732 , 44849 , 94 , 246 , 1 , 1 , 44790
+732 , 44850 , 94 , 237 , 1 , 1 , 44790
+732 , 44851 , 93 , 269 , 1 , 1 , 44790
+732 , 44852 , 93 , 302 , 1 , 1 , 44790
+732 , 44853 , 93 , 246 , 1 , 1 , 44790
+732 , 44854 , 92 , 281 , 1 , 1 , 44790
+732 , 44855 , 92 , 247 , 1 , 1 , 44790
+732 , 44856 , 92 , 236 , 1 , 1 , 44790
+732 , 44857 , 91 , 236 , 1 , 1 , 44790
+732 , 44858 , 91 , 236 , 1 , 1 , 44790
+732 , 44859 , 91 , 236 , 1 , 1 , 44790
+732 , 44860 , 90 , 238 , 1 , 1 , 44790
+732 , 44861 , 90 , 240 , 1 , 1 , 44790
+732 , 44862 , 90 , 370 , 1 , 1 , 44790
+732 , 44863 , 90 , 248 , 1 , 1 , 44790
+732 , 44864 , 89 , 236 , 1 , 1 , 44790
+732 , 44865 , 88 , 241 , 1 , 1 , 44790
+732 , 44866 , 88 , 271 , 1 , 1 , 44790
+732 , 44867 , 88 , 240 , 1 , 1 , 44790
+732 , 44868 , 88 , 328 , 1 , 1 , 44790
+732 , 44869 , 87 , 282 , 1 , 1 , 44790
+732 , 44870 , 87 , 325 , 1 , 1 , 44790
+732 , 44871 , 87 , 240 , 1 , 1 , 44790
+732 , 44872 , 87 , 240 , 1 , 1 , 44790
+732 , 44873 , 86 , 241 , 1 , 1 , 44790
+732 , 44874 , 86 , 231 , 1 , 1 , 44790
+732 , 44875 , 86 , 253 , 1 , 1 , 44790
+732 , 44876 , 85 , 360 , 1 , 1 , 44790
+732 , 44877 , 85 , 242 , 1 , 1 , 44790
+732 , 44878 , 85 , 285 , 1 , 1 , 44790
+732 , 44879 , 84 , 237 , 1 , 1 , 44790
+732 , 44880 , 84 , 244 , 1 , 1 , 44790
+732 , 44881 , 84 , 240 , 1 , 1 , 44790
+732 , 44882 , 83 , 233 , 1 , 1 , 44790
+732 , 44883 , 83 , 241 , 1 , 1 , 44790
+732 , 44884 , 83 , 247 , 1 , 1 , 44790
+732 , 44885 , 82 , 357 , 1 , 1 , 44790
+732 , 44886 , 82 , 315 , 1 , 1 , 44790
+732 , 44887 , 82 , 238 , 1 , 1 , 44790
+732 , 44888 , 81 , 239 , 1 , 1 , 44790
+732 , 44889 , 81 , 228 , 1 , 1 , 44790
+732 , 44890 , 81 , 250 , 1 , 1 , 44790
+732 , 44891 , 617 , 21 , 1 , 1 , 44841 44817 44815 44889 44793 44826 44831 44834 44870 44801 44829 44814 44840 44818 44871 44888 44812 44856 44884 44843 44838 44819 44830 44797 44844 44837 44822 44825 44842 44823 44885 44810 44869 44848 44821 44858 44880 44791 44807 44806 44833 44816 44795 44857 44805 44861 44853 44850 44832 44878 44877 44867 44872 44824 44883 44794 44811 44828 44886 44800 44792 44851 44875 44890 44820 44860 44855 44804 44887 44809 44863 44854 44876 44864 44849 44862 44836 44798 44881 44852 44799 44803 44859 44865 44873 44813 44846 44866 44802 44868 44845 44882 44835 44796 44847 44808 44879 44874 44839 44827
+732 , 44892 , 688 , 22 , 1 , 1 , 44891
+732 , 44893 , 688 , 22 , 1 , 1 , 44891
+732 , 44894 , 690 , 21 , 1 , 1 , 44891
+732 , 44895 , 688 , 21 , 1 , 1 , 44891
+732 , 44896 , 683 , 32 , 1 , 1 , 44891
+732 , 44897 , 686 , 31 , 1 , 1 , 44891
+732 , 44898 , 681 , 21 , 1 , 1 , 44891
+732 , 44899 , 681 , 32 , 1 , 1 , 44891
+732 , 44900 , 681 , 22 , 1 , 1 , 44891
+732 , 44901 , 686 , 31 , 1 , 1 , 44891
+732 , 44902 , 651 , 42 , 1 , 1 , 44891
+732 , 44903 , 651 , 42 , 1 , 1 , 44891
+732 , 44904 , 651 , 42 , 1 , 1 , 44891
+732 , 44905 , 651 , 42 , 1 , 1 , 44891
+732 , 44906 , 651 , 42 , 1 , 1 , 44891
+732 , 44907 , 650 , 43 , 1 , 1 , 44891
+732 , 44908 , 650 , 53 , 1 , 1 , 44891
+732 , 44909 , 650 , 53 , 1 , 1 , 44891
+732 , 44910 , 649 , 53 , 1 , 1 , 44891
+732 , 44911 , 649 , 43 , 1 , 1 , 44891
+732 , 44912 , 649 , 33 , 1 , 1 , 44891
+732 , 44913 , 649 , 41 , 1 , 1 , 44891
+732 , 44914 , 648 , 31 , 1 , 1 , 44891
+732 , 44915 , 648 , 21 , 1 , 1 , 44891
+732 , 44916 , 648 , 41 , 1 , 1 , 44891
+732 , 44917 , 648 , 21 , 1 , 1 , 44891
+732 , 44918 , 664 , 34 , 1 , 1 , 44891
+732 , 44919 , 664 , 22 , 1 , 1 , 44891
+732 , 44920 , 672 , 22 , 1 , 1 , 44891
+732 , 44921 , 671 , 32 , 1 , 1 , 44891
+732 , 44922 , 671 , 32 , 1 , 1 , 44891
+732 , 44923 , 670 , 21 , 1 , 1 , 44891
+732 , 44924 , 669 , 34 , 1 , 1 , 44891
+732 , 44925 , 670 , 32 , 1 , 1 , 44891
+732 , 44926 , 668 , 34 , 1 , 1 , 44891
+732 , 44927 , 669 , 32 , 1 , 1 , 44891
+732 , 44928 , 666 , 33 , 1 , 1 , 44891
+732 , 44929 , 669 , 22 , 1 , 1 , 44891
+732 , 44930 , 667 , 33 , 1 , 1 , 44891
+732 , 44931 , 667 , 34 , 1 , 1 , 44891
+732 , 44932 , 665 , 35 , 1 , 1 , 44891
+732 , 44933 , 668 , 34 , 1 , 1 , 44891
+732 , 44934 , 666 , 23 , 1 , 1 , 44891
+732 , 44935 , 664 , 34 , 1 , 1 , 44891
+732 , 44936 , 663 , 11 , 1 , 1 , 44891
+732 , 44937 , 663 , 37 , 1 , 1 , 44891
+732 , 44938 , 663 , 21 , 1 , 1 , 44891
+732 , 44939 , 662 , 35 , 1 , 1 , 44891
+732 , 44940 , 662 , 29 , 1 , 1 , 44891
+732 , 44941 , 662 , 29 , 1 , 1 , 44891
+732 , 44942 , 661 , 34 , 1 , 1 , 44891
+732 , 44943 , 661 , 56 , 1 , 1 , 44891
+732 , 44944 , 660 , 45 , 1 , 1 , 44891
+732 , 44945 , 660 , 29 , 1 , 1 , 44891
+732 , 44946 , 660 , 45 , 1 , 1 , 44891
+732 , 44947 , 659 , 26 , 1 , 1 , 44891
+732 , 44948 , 659 , 36 , 1 , 1 , 44891
+732 , 44949 , 659 , 34 , 1 , 1 , 44891
+732 , 44950 , 658 , 37 , 1 , 1 , 44891
+732 , 44951 , 658 , 37 , 1 , 1 , 44891
+732 , 44952 , 658 , 35 , 1 , 1 , 44891
+732 , 44953 , 657 , 38 , 1 , 1 , 44891
+732 , 44954 , 657 , 35 , 1 , 1 , 44891
+732 , 44955 , 657 , 49 , 1 , 1 , 44891
+732 , 44956 , 656 , 35 , 1 , 1 , 44891
+732 , 44957 , 656 , 35 , 1 , 1 , 44891
+732 , 44958 , 656 , 30 , 1 , 1 , 44891
+732 , 44959 , 655 , 35 , 1 , 1 , 44891
+732 , 44960 , 655 , 29 , 1 , 1 , 44891
+732 , 44961 , 654 , 28 , 1 , 1 , 44891
+732 , 44962 , 654 , 35 , 1 , 1 , 44891
+732 , 44963 , 654 , 44 , 1 , 1 , 44891
+732 , 44964 , 654 , 38 , 1 , 1 , 44891
+732 , 44965 , 653 , 39 , 1 , 1 , 44891
+732 , 44966 , 653 , 34 , 1 , 1 , 44891
+732 , 44967 , 653 , 35 , 1 , 1 , 44891
+732 , 44968 , 652 , 24 , 1 , 1 , 44891
+732 , 44969 , 652 , 46 , 1 , 1 , 44891
+732 , 44970 , 652 , 39 , 1 , 1 , 44891
+732 , 44971 , 651 , 35 , 1 , 1 , 44891
+732 , 44972 , 651 , 36 , 1 , 1 , 44891
+732 , 44973 , 651 , 35 , 1 , 1 , 44891
+732 , 44974 , 650 , 35 , 1 , 1 , 44891
+732 , 44975 , 650 , 35 , 1 , 1 , 44891
+732 , 44976 , 650 , 35 , 1 , 1 , 44891
+732 , 44977 , 649 , 25 , 1 , 1 , 44891
+732 , 44978 , 649 , 37 , 1 , 1 , 44891
+732 , 44979 , 649 , 36 , 1 , 1 , 44891
+732 , 44980 , 648 , 39 , 1 , 1 , 44891
+732 , 44981 , 648 , 27 , 1 , 1 , 44891
+732 , 44982 , 648 , 57 , 1 , 1 , 44891
+732 , 44983 , 647 , 38 , 1 , 1 , 44891
+732 , 44984 , 647 , 27 , 1 , 1 , 44891
+732 , 44985 , 647 , 27 , 1 , 1 , 44891
+732 , 44986 , 646 , 43 , 1 , 1 , 44891
+732 , 44987 , 646 , 66 , 1 , 1 , 44891
+732 , 44988 , 646 , 32 , 1 , 1 , 44891
+732 , 44989 , 645 , 33 , 1 , 1 , 44891
+732 , 44990 , 645 , 33 , 1 , 1 , 44891
+732 , 44991 , 645 , 33 , 1 , 1 , 44891
+732 , 44992 , 741 , 42 , 1 , 1 , 44939 44967 44929 44947 44928 44900 44919 44934 44968 44954 44962 44986 44927 44945 44926 44893 44979 44984 44956 44974 44898 44902 44949 44978 44922 44931 44970 44904 44910 44953 44917 44909 44921 44892 44944 44988 44991 44920 44924 44990 44894 44965 44989 44985 44903 44912 44966 44980 44940 44983 44901 44972 44941 44936 44981 44899 44930 44907 44916 44959 44896 44908 44964 44932 44957 44976 44905 44952 44935 44951 44942 44955 44969 44982 44938 44975 44946 44958 44963 44971 44911 44950 44937 44918 44933 44923 44943 44973 44948 44961 44913 44987 44915 44960 44977 44895 44925 44897 44906 44914
+733 , 44993 , 3 , 74 , 1 , 1 ,
+733 , 44994 , 330 , 235 , 1 , 1 , 44993
+733 , 44995 , 330 , 245 , 1 , 1 , 44993
+733 , 44996 , 330 , 235 , 1 , 1 , 44993
+733 , 44997 , 330 , 245 , 1 , 1 , 44993
+733 , 44998 , 330 , 245 , 1 , 1 , 44993
+733 , 44999 , 330 , 255 , 1 , 1 , 44993
+733 , 45000 , 329 , 225 , 1 , 1 , 44993
+733 , 45001 , 320 , 275 , 1 , 1 , 44993
+733 , 45002 , 320 , 245 , 1 , 1 , 44993
+733 , 45003 , 319 , 245 , 1 , 1 , 44993
+733 , 45004 , 294 , 251 , 1 , 1 , 44993
+733 , 45005 , 294 , 232 , 1 , 1 , 44993
+733 , 45006 , 293 , 231 , 1 , 1 , 44993
+733 , 45007 , 292 , 242 , 1 , 1 , 44993
+733 , 45008 , 292 , 233 , 1 , 1 , 44993
+733 , 45009 , 292 , 242 , 1 , 1 , 44993
+733 , 45010 , 291 , 231 , 1 , 1 , 44993
+733 , 45011 , 291 , 231 , 1 , 1 , 44993
+733 , 45012 , 291 , 255 , 1 , 1 , 44993
+733 , 45013 , 174 , 254 , 1 , 1 , 44993
+733 , 45014 , 174 , 232 , 1 , 1 , 44993
+733 , 45015 , 174 , 234 , 1 , 1 , 44993
+733 , 45016 , 172 , 232 , 1 , 1 , 44993
+733 , 45017 , 172 , 232 , 1 , 1 , 44993
+733 , 45018 , 172 , 252 , 1 , 1 , 44993
+733 , 45019 , 171 , 237 , 1 , 1 , 44993
+733 , 45020 , 171 , 233 , 1 , 1 , 44993
+733 , 45021 , 171 , 244 , 1 , 1 , 44993
+733 , 45022 , 84 , 244 , 1 , 1 , 44993
+733 , 45023 , 84 , 234 , 1 , 1 , 44993
+733 , 45024 , 84 , 224 , 1 , 1 , 44993
+733 , 45025 , 84 , 224 , 1 , 1 , 44993
+733 , 45026 , 84 , 268 , 1 , 1 , 44993
+733 , 45027 , 83 , 234 , 1 , 1 , 44993
+733 , 45028 , 83 , 234 , 1 , 1 , 44993
+733 , 45029 , 83 , 244 , 1 , 1 , 44993
+733 , 45030 , 83 , 234 , 1 , 1 , 44993
+733 , 45031 , 83 , 258 , 1 , 1 , 44993
+733 , 45032 , 83 , 234 , 1 , 1 , 44993
+733 , 45033 , 83 , 234 , 1 , 1 , 44993
+733 , 45034 , 83 , 234 , 1 , 1 , 44993
+733 , 45035 , 83 , 224 , 1 , 1 , 44993
+733 , 45036 , 83 , 234 , 1 , 1 , 44993
+733 , 45037 , 83 , 258 , 1 , 1 , 44993
+733 , 45038 , 99 , 232 , 1 , 1 , 44993
+733 , 45039 , 99 , 243 , 1 , 1 , 44993
+733 , 45040 , 99 , 340 , 1 , 1 , 44993
+733 , 45041 , 98 , 265 , 1 , 1 , 44993
+733 , 45042 , 98 , 331 , 1 , 1 , 44993
+733 , 45043 , 97 , 242 , 1 , 1 , 44993
+733 , 45044 , 97 , 246 , 1 , 1 , 44993
+733 , 45045 , 97 , 246 , 1 , 1 , 44993
+733 , 45046 , 96 , 243 , 1 , 1 , 44993
+733 , 45047 , 96 , 246 , 1 , 1 , 44993
+733 , 45048 , 96 , 269 , 1 , 1 , 44993
+733 , 45049 , 95 , 313 , 1 , 1 , 44993
+733 , 45050 , 95 , 246 , 1 , 1 , 44993
+733 , 45051 , 95 , 225 , 1 , 1 , 44993
+733 , 45052 , 94 , 235 , 1 , 1 , 44993
+733 , 45053 , 94 , 235 , 1 , 1 , 44993
+733 , 45054 , 94 , 236 , 1 , 1 , 44993
+733 , 45055 , 93 , 281 , 1 , 1 , 44993
+733 , 45056 , 93 , 246 , 1 , 1 , 44993
+733 , 45057 , 93 , 246 , 1 , 1 , 44993
+733 , 45058 , 92 , 260 , 1 , 1 , 44993
+733 , 45059 , 92 , 236 , 1 , 1 , 44993
+733 , 45060 , 92 , 247 , 1 , 1 , 44993
+733 , 45061 , 91 , 235 , 1 , 1 , 44993
+733 , 45062 , 91 , 225 , 1 , 1 , 44993
+733 , 45063 , 90 , 239 , 1 , 1 , 44993
+733 , 45064 , 90 , 323 , 1 , 1 , 44993
+733 , 45065 , 90 , 276 , 1 , 1 , 44993
+733 , 45066 , 89 , 263 , 1 , 1 , 44993
+733 , 45067 , 89 , 234 , 1 , 1 , 44993
+733 , 45068 , 89 , 247 , 1 , 1 , 44993
+733 , 45069 , 88 , 226 , 1 , 1 , 44993
+733 , 45070 , 88 , 243 , 1 , 1 , 44993
+733 , 45071 , 88 , 236 , 1 , 1 , 44993
+733 , 45072 , 87 , 362 , 1 , 1 , 44993
+733 , 45073 , 87 , 259 , 1 , 1 , 44993
+733 , 45074 , 87 , 283 , 1 , 1 , 44993
+733 , 45075 , 87 , 248 , 1 , 1 , 44993
+733 , 45076 , 86 , 244 , 1 , 1 , 44993
+733 , 45077 , 86 , 237 , 1 , 1 , 44993
+733 , 45078 , 85 , 248 , 1 , 1 , 44993
+733 , 45079 , 85 , 244 , 1 , 1 , 44993
+733 , 45080 , 85 , 321 , 1 , 1 , 44993
+733 , 45081 , 85 , 285 , 1 , 1 , 44993
+733 , 45082 , 84 , 236 , 1 , 1 , 44993
+733 , 45083 , 84 , 257 , 1 , 1 , 44993
+733 , 45084 , 84 , 238 , 1 , 1 , 44993
+733 , 45085 , 83 , 235 , 1 , 1 , 44993
+733 , 45086 , 83 , 270 , 1 , 1 , 44993
+733 , 45087 , 83 , 248 , 1 , 1 , 44993
+733 , 45088 , 82 , 363 , 1 , 1 , 44993
+733 , 45089 , 82 , 260 , 1 , 1 , 44993
+733 , 45090 , 82 , 347 , 1 , 1 , 44993
+733 , 45091 , 81 , 224 , 1 , 1 , 44993
+733 , 45092 , 81 , 228 , 1 , 1 , 44993
+733 , 45093 , 81 , 236 , 1 , 1 , 44993
+733 , 45094 , 611 , 22 , 1 , 1 , 45077 45035 45051 45018 45070 45056 45057 45014 45080 45027 45086 44999 45090 45034 45033 45093 45038 45092 45031 45071 45002 45041 45052 45089 45061 45037 45025 45045 45019 45016 45060 45050 45032 45074 45066 44994 45044 45036 45084 45049 45054 45028 44995 45009 45053 45058 45040 45006 45000 45072 44998 45062 45046 45067 45087 45064 45082 45015 45091 45020 45011 45069 45021 45083 45001 45012 45065 45043 45055 45042 45059 45030 45007 45023 45073 45010 45088 45078 45017 45048 45068 45075 45004 45005 45029 45024 45079 45085 45008 44996 44997 45081 45013 45063 45076 45003 45022 45026 45047 45039
+733 , 45095 , 691 , 22 , 1 , 1 , 45094
+733 , 45096 , 692 , 22 , 1 , 1 , 45094
+733 , 45097 , 691 , 22 , 1 , 1 , 45094
+733 , 45098 , 691 , 22 , 1 , 1 , 45094
+733 , 45099 , 688 , 21 , 1 , 1 , 45094
+733 , 45100 , 686 , 21 , 1 , 1 , 45094
+733 , 45101 , 680 , 22 , 1 , 1 , 45094
+733 , 45102 , 680 , 22 , 1 , 1 , 45094
+733 , 45103 , 692 , 22 , 1 , 1 , 45094
+733 , 45104 , 692 , 22 , 1 , 1 , 45094
+733 , 45105 , 689 , 21 , 1 , 1 , 45094
+733 , 45106 , 688 , 21 , 1 , 1 , 45094
+733 , 45107 , 689 , 21 , 1 , 1 , 45094
+733 , 45108 , 688 , 21 , 1 , 1 , 45094
+733 , 45109 , 690 , 22 , 1 , 1 , 45094
+733 , 45110 , 690 , 22 , 1 , 1 , 45094
+733 , 45111 , 690 , 22 , 1 , 1 , 45094
+733 , 45112 , 689 , 22 , 1 , 1 , 45094
+733 , 45113 , 689 , 22 , 1 , 1 , 45094
+733 , 45114 , 689 , 21 , 1 , 1 , 45094
+733 , 45115 , 688 , 22 , 1 , 1 , 45094
+733 , 45116 , 688 , 22 , 1 , 1 , 45094
+733 , 45117 , 688 , 22 , 1 , 1 , 45094
+733 , 45118 , 687 , 22 , 1 , 1 , 45094
+733 , 45119 , 687 , 22 , 1 , 1 , 45094
+733 , 45120 , 687 , 22 , 1 , 1 , 45094
+733 , 45121 , 676 , 31 , 1 , 1 , 45094
+733 , 45122 , 676 , 31 , 1 , 1 , 45094
+733 , 45123 , 674 , 31 , 1 , 1 , 45094
+733 , 45124 , 655 , 36 , 1 , 1 , 45094
+733 , 45125 , 655 , 26 , 1 , 1 , 45094
+733 , 45126 , 656 , 36 , 1 , 1 , 45094
+733 , 45127 , 656 , 47 , 1 , 1 , 45094
+733 , 45128 , 654 , 27 , 1 , 1 , 45094
+733 , 45129 , 654 , 37 , 1 , 1 , 45094
+733 , 45130 , 655 , 26 , 1 , 1 , 45094
+733 , 45131 , 654 , 33 , 1 , 1 , 45094
+733 , 45132 , 656 , 46 , 1 , 1 , 45094
+733 , 45133 , 642 , 42 , 1 , 1 , 45094
+733 , 45134 , 642 , 42 , 1 , 1 , 45094
+733 , 45135 , 642 , 42 , 1 , 1 , 45094
+733 , 45136 , 642 , 42 , 1 , 1 , 45094
+733 , 45137 , 642 , 42 , 1 , 1 , 45094
+733 , 45138 , 642 , 43 , 1 , 1 , 45094
+733 , 45139 , 641 , 33 , 1 , 1 , 45094
+733 , 45140 , 641 , 33 , 1 , 1 , 45094
+733 , 45141 , 641 , 37 , 1 , 1 , 45094
+733 , 45142 , 641 , 33 , 1 , 1 , 45094
+733 , 45143 , 641 , 43 , 1 , 1 , 45094
+733 , 45144 , 641 , 33 , 1 , 1 , 45094
+733 , 45145 , 640 , 21 , 1 , 1 , 45094
+733 , 45146 , 640 , 32 , 1 , 1 , 45094
+733 , 45147 , 640 , 21 , 1 , 1 , 45094
+733 , 45148 , 640 , 21 , 1 , 1 , 45094
+733 , 45149 , 653 , 44 , 1 , 1 , 45094
+733 , 45150 , 653 , 34 , 1 , 1 , 45094
+733 , 45151 , 653 , 34 , 1 , 1 , 45094
+733 , 45152 , 652 , 44 , 1 , 1 , 45094
+733 , 45153 , 652 , 34 , 1 , 1 , 45094
+733 , 45154 , 651 , 44 , 1 , 1 , 45094
+733 , 45155 , 651 , 34 , 1 , 1 , 45094
+733 , 45156 , 651 , 44 , 1 , 1 , 45094
+733 , 45157 , 651 , 44 , 1 , 1 , 45094
+733 , 45158 , 650 , 45 , 1 , 1 , 45094
+733 , 45159 , 649 , 45 , 1 , 1 , 45094
+733 , 45160 , 649 , 34 , 1 , 1 , 45094
+733 , 45161 , 649 , 34 , 1 , 1 , 45094
+733 , 45162 , 648 , 36 , 1 , 1 , 45094
+733 , 45163 , 648 , 36 , 1 , 1 , 45094
+733 , 45164 , 648 , 46 , 1 , 1 , 45094
+733 , 45165 , 647 , 46 , 1 , 1 , 45094
+733 , 45166 , 647 , 35 , 1 , 1 , 45094
+733 , 45167 , 647 , 36 , 1 , 1 , 45094
+733 , 45168 , 646 , 36 , 1 , 1 , 45094
+733 , 45169 , 646 , 36 , 1 , 1 , 45094
+733 , 45170 , 646 , 37 , 1 , 1 , 45094
+733 , 45171 , 645 , 47 , 1 , 1 , 45094
+733 , 45172 , 645 , 37 , 1 , 1 , 45094
+733 , 45173 , 645 , 47 , 1 , 1 , 45094
+733 , 45174 , 644 , 47 , 1 , 1 , 45094
+733 , 45175 , 644 , 47 , 1 , 1 , 45094
+733 , 45176 , 644 , 38 , 1 , 1 , 45094
+733 , 45177 , 643 , 48 , 1 , 1 , 45094
+733 , 45178 , 643 , 37 , 1 , 1 , 45094
+733 , 45179 , 643 , 37 , 1 , 1 , 45094
+733 , 45180 , 642 , 37 , 1 , 1 , 45094
+733 , 45181 , 642 , 40 , 1 , 1 , 45094
+733 , 45182 , 642 , 48 , 1 , 1 , 45094
+733 , 45183 , 641 , 25 , 1 , 1 , 45094
+733 , 45184 , 641 , 32 , 1 , 1 , 45094
+733 , 45185 , 641 , 32 , 1 , 1 , 45094
+733 , 45186 , 640 , 33 , 1 , 1 , 45094
+733 , 45187 , 640 , 33 , 1 , 1 , 45094
+733 , 45188 , 640 , 33 , 1 , 1 , 45094
+733 , 45189 , 640 , 36 , 1 , 1 , 45094
+733 , 45190 , 639 , 48 , 1 , 1 , 45094
+733 , 45191 , 639 , 36 , 1 , 1 , 45094
+733 , 45192 , 639 , 22 , 1 , 1 , 45094
+733 , 45193 , 639 , 37 , 1 , 1 , 45094
+733 , 45194 , 639 , 33 , 1 , 1 , 45094
+733 , 45195 , 737 , 32 , 1 , 1 , 45145 45194 45180 45157 45141 45146 45099 45156 45164 45147 45095 45163 45115 45151 45161 45149 45188 45126 45160 45174 45137 45103 45139 45190 45148 45128 45107 45102 45100 45122 45104 45150 45167 45109 45121 45158 45170 45131 45096 45177 45173 45193 45144 45171 45101 45116 45179 45106 45127 45111 45192 45110 45112 45152 45187 45159 45191 45153 45117 45155 45098 45169 45186 45168 45134 45162 45120 45133 45181 45185 45184 45154 45119 45129 45172 45114 45182 45140 45118 45165 45130 45097 45189 45105 45143 45138 45108 45175 45166 45135 45176 45136 45124 45183 45113 45132 45178 45142 45123 45125
+734 , 45196 , 3 , 74 , 1 , 1 ,
+734 , 45197 , 86 , 231 , 1 , 1 , 45196
+734 , 45198 , 85 , 242 , 1 , 1 , 45196
+734 , 45199 , 85 , 242 , 1 , 1 , 45196
+734 , 45200 , 85 , 231 , 1 , 1 , 45196
+734 , 45201 , 84 , 242 , 1 , 1 , 45196
+734 , 45202 , 84 , 251 , 1 , 1 , 45196
+734 , 45203 , 84 , 252 , 1 , 1 , 45196
+734 , 45204 , 83 , 241 , 1 , 1 , 45196
+734 , 45205 , 83 , 241 , 1 , 1 , 45196
+734 , 45206 , 83 , 241 , 1 , 1 , 45196
+734 , 45207 , 82 , 241 , 1 , 1 , 45196
+734 , 45208 , 82 , 240 , 1 , 1 , 45196
+734 , 45209 , 82 , 241 , 1 , 1 , 45196
+734 , 45210 , 82 , 251 , 1 , 1 , 45196
+734 , 45211 , 81 , 241 , 1 , 1 , 45196
+734 , 45212 , 81 , 252 , 1 , 1 , 45196
+734 , 45213 , 80 , 242 , 1 , 1 , 45196
+734 , 45214 , 80 , 242 , 1 , 1 , 45196
+734 , 45215 , 80 , 262 , 1 , 1 , 45196
+734 , 45216 , 347 , 11 , 1 , 1 , 45204 45197 45210 45202 45207 45215 45203 45199 45211 45200 45208 45206 45214 45205 45213 45198 45201 45209 45212
+734 , 45217 , 369 , 21 , 1 , 1 , 45216
+734 , 45218 , 369 , 32 , 1 , 1 , 45216
+734 , 45219 , 368 , 32 , 1 , 1 , 45216
+734 , 45220 , 368 , 32 , 1 , 1 , 45216
+734 , 45221 , 368 , 32 , 1 , 1 , 45216
+734 , 45222 , 368 , 32 , 1 , 1 , 45216
+734 , 45223 , 367 , 32 , 1 , 1 , 45216
+734 , 45224 , 367 , 32 , 1 , 1 , 45216
+734 , 45225 , 367 , 32 , 1 , 1 , 45216
+734 , 45226 , 366 , 32 , 1 , 1 , 45216
+734 , 45227 , 366 , 32 , 1 , 1 , 45216
+734 , 45228 , 366 , 32 , 1 , 1 , 45216
+734 , 45229 , 365 , 32 , 1 , 1 , 45216
+734 , 45230 , 365 , 21 , 1 , 1 , 45216
+734 , 45231 , 365 , 21 , 1 , 1 , 45216
+734 , 45232 , 365 , 32 , 1 , 1 , 45216
+734 , 45233 , 364 , 32 , 1 , 1 , 45216
+734 , 45234 , 364 , 32 , 1 , 1 , 45216
+734 , 45235 , 364 , 21 , 1 , 1 , 45216
+734 , 45236 , 405 , 21 , 1 , 1 , 45219 45226 45218 45220 45231 45221 45225 45227 45229 45234 45224 45235 45228 45217 45222 45230 45223 45233 45232
+735 , 45237 , 3 , 0 , 1 , 1 ,
+735 , 45238 , 3 , 0 , 1 , 1 ,
+735 , 45239 , 3 , 0 , 1 , 1 ,
+735 , 45240 , 20 , 0 , 1 , 1 , 45237
+735 , 45241 , 17 , 0 , 1 , 1 , 45237
+735 , 45242 , 17 , 11 , 1 , 1 , 45237
+735 , 45243 , 20 , 0 , 1 , 1 , 45237
+735 , 45244 , 18 , 0 , 1 , 1 , 45238
+735 , 45245 , 17 , 0 , 1 , 1 , 45238
+735 , 45246 , 17 , 0 , 1 , 1 , 45238
+735 , 45247 , 18 , 0 , 1 , 1 , 45238
+735 , 45248 , 16 , 11 , 1 , 1 , 45239
+735 , 45249 , 17 , 0 , 1 , 1 , 45239
+735 , 45250 , 17 , 0 , 1 , 1 , 45239
+735 , 45251 , 16 , 0 , 1 , 1 , 45239
+735 , 45252 , 46 , 0 , 1 , 1 , 45240
+735 , 45253 , 43 , 0 , 1 , 1 , 45241
+735 , 45254 , 41 , 0 , 1 , 1 , 45241
+735 , 45255 , 40 , 0 , 1 , 1 , 45242
+735 , 45256 , 40 , 0 , 1 , 1 , 45242
+735 , 45257 , 34 , 0 , 1 , 1 , 45243
+735 , 45258 , 33 , 0 , 1 , 1 , 45244
+735 , 45259 , 43 , 0 , 1 , 1 , 45245
+735 , 45260 , 41 , 0 , 1 , 1 , 45245
+735 , 45261 , 40 , 0 , 1 , 1 , 45246
+735 , 45262 , 40 , 0 , 1 , 1 , 45246
+735 , 45263 , 45 , 0 , 1 , 1 , 45247
+735 , 45264 , 38 , 0 , 1 , 1 , 45248
+735 , 45265 , 43 , 0 , 1 , 1 , 45249
+735 , 45266 , 41 , 0 , 1 , 1 , 45249
+735 , 45267 , 31 , 0 , 1 , 1 , 45250
+735 , 45268 , 30 , 0 , 1 , 1 , 45250
+735 , 45269 , 38 , 0 , 1 , 1 , 45251
+735 , 45270 , 65 , 0 , 1 , 1 , 45257 45254 45253 45255 45256
+735 , 45271 , 64 , 0 , 1 , 1 , 45259 45260 45261 45263 45262
+735 , 45272 , 65 , 0 , 1 , 1 , 45267 45268 45265 45266 45269
+735 , 45273 , 76 , 0 , 1 , 1 , 45252 45270
+735 , 45274 , 76 , 0 , 1 , 1 , 45252 45270
+735 , 45275 , 76 , 0 , 1 , 1 , 45252 45270
+735 , 45276 , 76 , 0 , 1 , 1 , 45252 45270
+735 , 45277 , 76 , 0 , 1 , 1 , 45252 45270
+735 , 45278 , 76 , 0 , 1 , 1 , 45258 45271
+735 , 45279 , 76 , 0 , 1 , 1 , 45258 45271
+735 , 45280 , 76 , 0 , 1 , 1 , 45258 45271
+735 , 45281 , 76 , 0 , 1 , 1 , 45258 45271
+735 , 45282 , 76 , 0 , 1 , 1 , 45258 45271
+735 , 45283 , 77 , 0 , 1 , 1 , 45272 45264
+735 , 45284 , 77 , 0 , 1 , 1 , 45272 45264
+735 , 45285 , 77 , 0 , 1 , 1 , 45272 45264
+735 , 45286 , 77 , 0 , 1 , 1 , 45272 45264
+735 , 45287 , 77 , 0 , 1 , 1 , 45272 45264
+736 , 45288 , 4 , 11 , 1 , 1 ,
+737 , 45289 , 1 , 11 , 1 , 1 ,
+738 , 45290 , 2 , 11 , 1 , 1 ,
+739 , 45291 , 4 , 11 , 1 , 1 ,
+740 , 45292 , 2 , 11 , 1 , 1 ,
+741 , 45293 , 2 , 11 , 1 , 1 ,
+742 , 45294 , 1 , 11 , 1 , 1 ,
+743 , 45295 , 1 , 11 , 1 , 1 ,
+744 , 45296 , 1 , 11 , 1 , 1 ,
+745 , 45297 , 1 , 11 , 1 , 1 ,
+746 , 45298 , 3 , 11 , 1 , 1 ,
+747 , 45300 , 1 , 11 , 1 , 1 ,
+748 , 45334 , 1 , 11 , 1 , 1 ,
+749 , 45335 , 1 , 11 , 1 , 1 ,
+750 , 45341 , 4 , 11 , 1 , 1 ,
+750 , 45342 , 27 , 11 , 1 , 1 , 45341
+750 , 45343 , 27 , 11 , 1 , 1 , 45341
+751 , 45344 , 1 , 11 , 1 , 1 ,
+752 , 45350 , 3 , 41 , 1 , 1 ,
+752 , 45351 , 3 , 52 , 1 , 1 ,
+752 , 45352 , 3 , 41 , 1 , 1 ,
+752 , 45353 , 67 , 0 , 1 , 1 , 45350 45351 45352
+753 , 45374 , 4 , 62 , 1 , 1 ,
+753 , 45375 , 4 , 62 , 1 , 1 ,
+753 , 45376 , 4 , 72 , 1 , 1 ,
+753 , 45377 , 4 , 72 , 1 , 1 ,
+753 , 45378 , 4 , 62 , 1 , 1 ,
+753 , 45379 , 4 , 62 , 1 , 1 ,
+753 , 45380 , 4 , 62 , 1 , 1 ,
+753 , 45381 , 4 , 72 , 1 , 1 ,
+753 , 45382 , 4 , 62 , 1 , 1 ,
+753 , 45383 , 4 , 52 , 1 , 1 ,
+753 , 45384 , 89 , 11 , 1 , 1 , 45377 45382 45378 45380 45379 45374 45383 45376 45381 45375
+754 , 45385 , 2 , 0 , 1 , 1 ,
+755 , 45386 , 1 , 0 , 1 , 1 ,
+756 , 45387 , 2 , 11 , 1 , 1 ,
+757 , 45786 , 4 , 10 , 1 , 1 ,
diff --git a/simulator/settings.gradle.kts b/simulator/settings.gradle.kts
new file mode 100644
index 00000000..677a9817
--- /dev/null
+++ b/simulator/settings.gradle.kts
@@ -0,0 +1,33 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 atlarge-research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+rootProject.name = "opendc-simulator"
+
+include(":odcsim:odcsim-api")
+include(":odcsim:odcsim-engine-omega")
+include(":opendc:opendc-core")
+include(":opendc:opendc-compute")
+include(":opendc:opendc-format")
+include(":opendc:opendc-workflows")
+include(":opendc:opendc-experiments-sc18")
+include(":opendc:opendc-experiments-sc20")