Page MenuHomePhorge

No OneTemporary

Size
222 KB
Referenced Files
None
Subscribers
None
diff --git a/apps/ccam/ccam.cpp b/apps/ccam/ccam.cpp
index 8d157a2..0aa4fc1 100644
--- a/apps/ccam/ccam.cpp
+++ b/apps/ccam/ccam.cpp
@@ -1,565 +1,565 @@
//===-- apps/ccam/ccam.cpp --------------------------------------*- C++ -*-===//
//
// The RoSA Framework -- Application CCAM
//
// Distributed under the terms and conditions of the Boost Software
/// License 1.0.
// See accompanying file LICENSE.
//
// If you did not receive a copy of the license file, see
// http://www.boost.org/LICENSE_1_0.txt.
//
//===----------------------------------------------------------------------===//
///
/// \file apps/ccam/ccam.cpp
///
/// \author Maximilian Goetzinger (maximilian.goetzinger@tuwien.ac.at)
/// \author Benedikt Tutzer (benedikt.tutzer@tuwien.ac.at)
///
/// \date 2019
///
/// \brief The application CCAM implements the case study from the paper:
/// M. Goetzinger, N. TaheriNejad, H. A. Kholerdi, A. Jantsch, E. Willegger,
/// T. Glatzl, A.M. Rahmani, T.Sauter, P. Liljeberg: Model - Free Condition
/// Monitoring with Confidence
///
/// \todo Clean up source files of this app: add standard RoSA header comment
/// for own files and do something with 3rd party files...
//===----------------------------------------------------------------------===//
#include "rosa/agent/Abstraction.hpp"
#include "rosa/agent/Confidence.hpp"
#include "rosa/agent/FunctionAbstractions.hpp"
#include <iostream>
#include "rosa/config/version.h"
#include "rosa/agent/SignalStateDetector.hpp"
#include "rosa/agent/SystemStateDetector.hpp"
#include "rosa/app/Application.hpp"
#include "rosa/support/csv/CSVReader.hpp"
#include "rosa/support/csv/CSVWriter.hpp"
#include "rosa/support/mqtt/MQTTReader.hpp"
#include "rosa/app/AppTuple.hpp"
#include <fstream>
#include <limits>
#include <memory>
#include <streambuf>
#include "configuration.h"
#include "statehandlerutils.h"
using namespace rosa;
using namespace rosa::agent;
using namespace rosa::app;
using namespace rosa::terminal;
using namespace rosa::mqtt;
const std::string AppName = "CCAM";
int main(int argc, char **argv) {
LOG_INFO_STREAM << '\n'
<< library_string() << " -- " << Color::Red << AppName
<< "app" << Color::Default << '\n';
//
// Read the filepath of the config file of the observed system. The filepath
// is in the first argument passed to the application. Fuzzy functions etc.
// are described in this file.
//
if (argc < 2) {
LOG_ERROR("Specify config File!\nUsage:\n\tccam config.json");
return 1;
}
std::string ConfigPath = argv[1];
//
// Load config file and read in all parameters. Fuzzy functions etc. are
// described in this file.
//
if (!readConfigFile(ConfigPath)) {
LOG_ERROR_STREAM << "Could not read config from \"" << ConfigPath << "\"\n";
return 2;
}
//
// Create a CCAM context.
//
LOG_INFO("Creating Context");
std::unique_ptr<Application> AppCCAM = Application::create(AppName);
//
// Create following function which shall give information if the time gap
// between changed input(s) and changed output(s) shows already a malfunction
// of the system.
//
// ____________
// /
// /
// __________/
//
std::shared_ptr<PartialFunction<uint32_t, float>> BrokenDelayFunction(
new PartialFunction<uint32_t, float>(
{{{0, AppConfig.BrokenCounter},
std::make_shared<LinearFunction<uint32_t, float>>(
0, 0.f, AppConfig.BrokenCounter, 1.f)},
{{AppConfig.BrokenCounter, std::numeric_limits<uint32_t>::max()},
std::make_shared<LinearFunction<uint32_t, float>>(1.f, 0.f)}},
0.f));
//
// Create following function which shall give information if the time gap
// between changed input(s) and changed output(s) still shows a
// well-functioning system.
//
// ____________
// \
// \
// \__________
//
std::shared_ptr<PartialFunction<uint32_t, float>> OkDelayFunction(
new PartialFunction<uint32_t, float>(
{{{0, AppConfig.BrokenCounter},
std::make_shared<LinearFunction<uint32_t, float>>(
0, 1.f, AppConfig.BrokenCounter, 0.f)},
{{AppConfig.BrokenCounter, std::numeric_limits<uint32_t>::max()},
std::make_shared<LinearFunction<uint32_t, float>>(0.f, 0.f)}},
1.f));
//
// Create a AppAgent with SystemStateDetector functionality.
//
LOG_INFO("Create SystemStateDetector agent.");
AgentHandle SystemStateDetectorAgent = createSystemStateDetectorAgent(
AppCCAM, "SystemStateDetector", AppConfig.SignalConfigurations.size(),
BrokenDelayFunction, OkDelayFunction);
//
// Set policy of SystemStateDetectorAgent that it wait for all
// SignalStateDetectorAgents
//
std::set<size_t> pos;
for (size_t i = 0; i < AppConfig.SignalConfigurations.size(); ++i)
pos.insert(pos.end(), i);
AppCCAM->setExecutionPolicy(SystemStateDetectorAgent,
AppExecutionPolicy::awaitAll(pos));
//
// Create Vectors for all sensors, all signal related fuzzy functions, all
// signal state detectors, all signal state agents, and all input data files.
//
LOG_INFO("Creating sensors, SignalStateDetector functionalities and their "
"Abstractions.");
std::vector<AgentHandle> Sensors;
std::vector<std::shared_ptr<PartialFunction<float, float>>>
SampleMatchesFunctions;
std::vector<std::shared_ptr<PartialFunction<float, float>>>
SampleMismatchesFunctions;
std::vector<std::shared_ptr<PartialFunction<float, float>>>
SignalIsStableFunctions;
std::vector<std::shared_ptr<PartialFunction<float, float>>>
SignalIsDriftingFunctions;
std::vector<std::shared_ptr<StepFunction<float, float>>>
NumOfSamplesMatchFunctions;
std::vector<std::shared_ptr<StepFunction<float, float>>>
NumOfSamplesMismatchFunctions;
std::vector<std::shared_ptr<PartialFunction<float, float>>>
SampleValidFunctions;
std::vector<std::shared_ptr<PartialFunction<float, float>>>
SampleInvalidFunctions;
std::vector<std::shared_ptr<StepFunction<float, float>>>
NumOfSamplesValidFunctions;
std::vector<std::shared_ptr<StepFunction<float, float>>>
NumOfSamplesInvalidFunctions;
std::vector<std::shared_ptr<
SignalStateDetector<float, float, float, HistoryPolicy::FIFO>>>
SignalStateDetectors;
std::vector<AgentHandle> SignalStateDetectorAgents;
std::vector<std::ifstream> DataFiles;
//
// Go through all signal state configurations (number of signals), and create
// functionalities for SignalStateDetector.
//
for (auto SignalConfiguration : AppConfig.SignalConfigurations) {
//
// Create application sensors.
//
Sensors.emplace_back(
AppCCAM->createSensor<float>(SignalConfiguration.Name + "_Sensor"));
//
// Create following function(s) which shall give information whether one
// sample matches another one (based on the relative distance between them).
//
// ____________
// / \
// / \
// __________/ \__________
//
//
SampleMatchesFunctions.emplace_back(new PartialFunction<float, float>(
{
{{-SignalConfiguration.OuterBound, -SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(
-SignalConfiguration.OuterBound, 0.f,
-SignalConfiguration.InnerBound, 1.f)},
{{-SignalConfiguration.InnerBound, SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(1.f, 0.f)},
{{SignalConfiguration.InnerBound, SignalConfiguration.OuterBound},
std::make_shared<LinearFunction<float, float>>(
SignalConfiguration.InnerBound, 1.f,
SignalConfiguration.OuterBound, 0.f)},
},
0));
//
// Create following function(s) which shall give information whether one
// sample mismatches another one (based on the relative distance between
// them).
//
// ____________ ____________
// \ /
// \ /
// \__________/
//
//
SampleMismatchesFunctions.emplace_back(new PartialFunction<float, float>(
{
{{-SignalConfiguration.OuterBound, -SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(
-SignalConfiguration.OuterBound, 1.f,
-SignalConfiguration.InnerBound, 0.f)},
{{-SignalConfiguration.InnerBound, SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(0.f, 0.f)},
{{SignalConfiguration.InnerBound, SignalConfiguration.OuterBound},
std::make_shared<LinearFunction<float, float>>(
SignalConfiguration.InnerBound, 0.f,
SignalConfiguration.OuterBound, 1.f)},
},
1));
//
// Create following function(s) which shall give information whether a
// signal is stable.
//
// ____________
// / \
// / \
// __________/ \__________
//
//
SignalIsStableFunctions.emplace_back(new PartialFunction<float, float>(
{
{{-SignalConfiguration.OuterBoundDrift,
-SignalConfiguration.InnerBoundDrift},
std::make_shared<LinearFunction<float, float>>(
-SignalConfiguration.OuterBoundDrift, 0.f,
-SignalConfiguration.InnerBoundDrift, 1.f)},
{{-SignalConfiguration.InnerBoundDrift,
SignalConfiguration.InnerBoundDrift},
std::make_shared<LinearFunction<float, float>>(1.f, 0.f)},
{{SignalConfiguration.InnerBoundDrift,
SignalConfiguration.OuterBoundDrift},
std::make_shared<LinearFunction<float, float>>(
SignalConfiguration.InnerBoundDrift, 1.f,
SignalConfiguration.OuterBoundDrift, 0.f)},
},
0));
//
// Create following function(s) which shall give information whether a
// signal is drifting.
//
// ____________ ____________
// \ /
// \ /
// \__________/
//
//
SignalIsDriftingFunctions.emplace_back(new PartialFunction<float, float>(
{
{{-SignalConfiguration.OuterBoundDrift,
-SignalConfiguration.InnerBoundDrift},
std::make_shared<LinearFunction<float, float>>(
-SignalConfiguration.OuterBoundDrift, 1.f,
-SignalConfiguration.InnerBoundDrift, 0.f)},
{{-SignalConfiguration.InnerBoundDrift,
SignalConfiguration.InnerBoundDrift},
std::make_shared<LinearFunction<float, float>>(0.f, 0.f)},
{{SignalConfiguration.InnerBoundDrift,
SignalConfiguration.OuterBoundDrift},
std::make_shared<LinearFunction<float, float>>(
SignalConfiguration.InnerBoundDrift, 0.f,
SignalConfiguration.OuterBoundDrift, 1.f)},
},
1));
//
// Create following function(s) which shall give information how many
// history samples match another sample.
//
// ____________
// /
// /
// __________/
//
NumOfSamplesMatchFunctions.emplace_back(new StepFunction<float, float>(
1.0f / SignalConfiguration.SampleHistorySize, StepDirection::StepUp));
//
// Create following function(s) which shall give information how many
// history samples mismatch another sample.
//
// ____________
// \
// \
// \__________
//
NumOfSamplesMismatchFunctions.emplace_back(new StepFunction<float, float>(
1.0f / SignalConfiguration.SampleHistorySize, StepDirection::StepDown));
//
// Create following function(s) which shall give information how good all
// samples in a state match each other.
//
// ____________
// / \
- // / \
- // __________/ \__________
+ // / \
+ // __________/ \__________
//
//
SampleValidFunctions.emplace_back(new PartialFunction<float, float>(
{
{{-SignalConfiguration.OuterBound, -SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(
-SignalConfiguration.OuterBound, 0.f,
-SignalConfiguration.InnerBound, 1.f)},
{{-SignalConfiguration.InnerBound, SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(1.f, 0.f)},
{{SignalConfiguration.InnerBound, SignalConfiguration.OuterBound},
std::make_shared<LinearFunction<float, float>>(
SignalConfiguration.InnerBound, 1.f,
SignalConfiguration.OuterBound, 0.f)},
},
0));
//
// Create following function(s) which shall give information how good all
// samples in a state mismatch each other.
//
// ____________ ____________
// \ /
// \ /
// \__________/
//
//
SampleInvalidFunctions.emplace_back(new PartialFunction<float, float>(
{
{{-SignalConfiguration.OuterBound, -SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(
-SignalConfiguration.OuterBound, 1.f,
-SignalConfiguration.InnerBound, 0.f)},
{{-SignalConfiguration.InnerBound, SignalConfiguration.InnerBound},
std::make_shared<LinearFunction<float, float>>(0.f, 0.f)},
{{SignalConfiguration.InnerBound, SignalConfiguration.OuterBound},
std::make_shared<LinearFunction<float, float>>(
SignalConfiguration.InnerBound, 0.f,
SignalConfiguration.OuterBound, 1.f)},
},
1));
//
// Create following function(s) which shall give information how many
// history samples match each other.
//
// ____________
// /
// /
// __________/
//
NumOfSamplesValidFunctions.emplace_back(new StepFunction<float, float>(
1.0f / SignalConfiguration.SampleHistorySize, StepDirection::StepUp));
//
// Create following function(s) which shall give information how many
// history samples mismatch each other.
//
// ____________
// \
// \
// \__________
//
NumOfSamplesInvalidFunctions.emplace_back(new StepFunction<float, float>(
1.0f / SignalConfiguration.SampleHistorySize, StepDirection::StepDown));
//
// Create SignalStateDetector functionality
//
SignalStateDetectors.emplace_back(
new SignalStateDetector<float, float, float, HistoryPolicy::FIFO>(
SignalConfiguration.Output ? SignalProperties::OUTPUT
: SignalProperties::INPUT,
std::numeric_limits<int>::max(), SampleMatchesFunctions.back(),
SampleMismatchesFunctions.back(), NumOfSamplesMatchFunctions.back(),
NumOfSamplesMismatchFunctions.back(), SampleValidFunctions.back(),
SampleInvalidFunctions.back(), NumOfSamplesValidFunctions.back(),
NumOfSamplesInvalidFunctions.back(),
SignalIsDriftingFunctions.back(), SignalIsStableFunctions.back(),
SignalConfiguration.SampleHistorySize, SignalConfiguration.DABSize,
SignalConfiguration.DABHistorySize));
//
// Create low-level application agents
//
SignalStateDetectorAgents.push_back(createSignalStateDetectorAgent(
AppCCAM, SignalConfiguration.Name, SignalStateDetectors.back()));
AppCCAM->setExecutionPolicy(
SignalStateDetectorAgents.back(),
AppExecutionPolicy::decimation(AppConfig.DownsamplingRate));
//
// Connect sensors to low-level agents.
//
LOG_INFO("Connect sensors to their corresponding low-level agents.");
AppCCAM->connectSensor(SignalStateDetectorAgents.back(), 0, Sensors.back(),
SignalConfiguration.Name + "_Sensor ->" +
SignalConfiguration.Name +
"_SignalStateDetector_Agent-Channel");
AppCCAM->connectAgents(
SystemStateDetectorAgent, SignalStateDetectors.size() - 1,
SignalStateDetectorAgents.back(),
SignalConfiguration.Name +
"_SignalStateDetector_Agent->SystemStateDetector_Agent_Channel");
}
//
// For simulation output, create a logger agent writing the output of the
// high-level agent into a CSV file.
//
LOG_INFO("Create a logger agent.");
// Create CSV writer.
std::ofstream OutputCSV(AppConfig.OutputFilePath);
for (auto SignalConfiguration : AppConfig.SignalConfigurations) {
OutputCSV << SignalConfiguration.Name + ",";
}
OutputCSV << "StateID,";
OutputCSV << "Confidence State Valid,";
OutputCSV << "Confidence State Invalid,";
OutputCSV << "Confidence Inputs Matching,";
OutputCSV << "Confidence Outputs Matching,";
OutputCSV << "Confidence Inputs Mismatching,";
OutputCSV << "Confidence Outputs Mismatching,";
OutputCSV << "State Condition,";
OutputCSV << "Confidence System Functioning,";
OutputCSV << "Confidence System Malfunctioning,";
OutputCSV << "Overall Confidence,";
OutputCSV << "\n";
// The agent writes each new input value into a CSV file and produces
// nothing.
using Input = std::pair<SystemStateTuple, bool>;
using Result = Optional<AppTuple<unit_t>>;
using Handler = std::function<Result(Input)>;
std::string Name = "Logger Agent";
AgentHandle LoggerAgent = AppCCAM->createAgent(
"Logger Agent", Handler([&OutputCSV](Input I) -> Result {
const SystemStateTuple &T = I.first;
OutputCSV << std::get<0>(
static_cast<const std::tuple<std::string> &>(T))
<< std::endl;
return Result();
}));
//
// Connect the high-level agent to the logger agent.
//
LOG_INFO("Connect the high-level agent to the logger agent.");
AppCCAM->connectAgents(LoggerAgent, 0, SystemStateDetectorAgent,
"SystemStateDetector Channel");
//
// Only log if the SystemStateDetector actually ran
//
AppCCAM->setExecutionPolicy(LoggerAgent, AppExecutionPolicy::awaitAll({0}));
//
// Do simulation.
//
LOG_INFO("Setting up and performing simulation.");
//
// Initialize application for simulation.
//
AppCCAM->initializeSimulation();
//
// Open CSV files and register them for their corresponding sensors.
//
// Make sure DataFiles will not change capacity while adding elements to it.
// Changing capacity moves elements away, which invalidates references
// captured by CSVIterator.
DataFiles.reserve(AppConfig.SignalConfigurations.size());
uint32_t i = 0;
bool hasMQTT = false;
for (auto SignalConfiguration : AppConfig.SignalConfigurations) {
switch (SignalConfiguration.DataInterfaceType) {
case DataInterfaceTypes::CSV:
DataFiles.emplace_back(SignalConfiguration.InputPath);
if (!DataFiles.at(i)) {
LOG_ERROR_STREAM << "Cannot open Input File \""
<< SignalConfiguration.InputPath << "\" for Signal \""
<< SignalConfiguration.Name << "\"" << std::endl;
return 3;
}
AppCCAM->registerSensorValues(Sensors.at(i),
csv::CSVIterator<float>(DataFiles.at(i)),
csv::CSVIterator<float>());
LOG_INFO_STREAM << "Sensor " << SignalConfiguration.Name
<< " is fed by csv file " << SignalConfiguration.InputPath
<< std::endl;
break;
case DataInterfaceTypes::MQTT: {
hasMQTT = true;
auto it = MQTTIterator<float>(SignalConfiguration.MQTTTopic);
AppCCAM->registerSensorValues(Sensors.at(i), std::move(it),
MQTTIterator<float>());
LOG_INFO_STREAM << "Sensor " << SignalConfiguration.Name
<< " is fed by MQTT topic "
<< SignalConfiguration.MQTTTopic << std::endl;
break;
}
default:
LOG_ERROR_STREAM << "No data source for " << SignalConfiguration.Name
<< std::endl;
break;
}
i++;
}
//
// Start simulation.
//
auto &log = LOG_WARNING_STREAM;
log << "Simulation starting.";
if (hasMQTT) {
log << " Publishing MQTT messages may start.";
}
log << std::endl;
AppCCAM->simulate(AppConfig.NumberOfSimulationCycles);
return 0;
}
diff --git a/apps/ccam/sample_data/20200325_1312/csv_to_excelCSV_and_Tags.py b/apps/ccam/sample_data/20200325_1312/csv_to_excelCSV_and_Tags.py
index eca693e..6de9e07 100644
--- a/apps/ccam/sample_data/20200325_1312/csv_to_excelCSV_and_Tags.py
+++ b/apps/ccam/sample_data/20200325_1312/csv_to_excelCSV_and_Tags.py
@@ -1,41 +1,45 @@
#!/usr/bin/env python3
import csv
import os
from os import listdir
from os.path import isfile, join
-inputPath = "./splitted_data/values_20200325_1312_4/"
+inputPath = "./splitted_data/values_20200325_1312_1/"
inputFile = "out.csv"
inputTags = "tag.csv"
outputFileName = "out_excel.csv"
headerName = "Tag"
classificationOK = ["TRAIN_STABLE", "OPERATION"]
setOK = "1"
-classificationDrift = ["TRAIN_DRIFT_UP", "TRAIN_DRIFT_DOWN"]
-setDrift = "2"
+classificationDriftDn = ["TRAIN_DRIFT_DOWN"]
+setDriftDn = "2"
+classificationDriftUp = ["TRAIN_DRIFT_UP"]
+setDriftUp = "4"
with open(inputPath + "/" + inputFile, 'r') as file:
file_content = file.readlines()
with open(inputPath + "/" + inputTags, 'r') as t:
reader = csv.reader(t)
tags = list(reader)
file_content[0] = file_content[0][:-1] + headerName + file_content[0][-1:]
for i in range(1,len(file_content)):
if tags[i-1][0] in classificationOK:
file_content[i] = file_content[i][:-1] + setOK + file_content[i][-1:]
- elif tags[i-1][0] in classificationDrift:
- file_content[i] = file_content[i][:-1] + setDrift + file_content[i][-1:]
+ elif tags[i-1][0] in classificationDriftDn:
+ file_content[i] = file_content[i][:-1] + setDriftDn + file_content[i][-1:]
+ elif tags[i-1][0] in classificationDriftUp:
+ file_content[i] = file_content[i][:-1] + setDriftUp + file_content[i][-1:]
else:
print(tags[i-1][0], " is not included! i = ", i)
input()
file_content = [f.replace(',', ';') for f in file_content]
file_content = [f.replace('.', ',') for f in file_content]
with open(inputPath + "/" + outputFileName, 'w') as file:
file.writelines(file_content)
diff --git a/apps/ccam/sample_data/20200325_1312/splitted_data/values_20200325_1312_1/out_excel.csv b/apps/ccam/sample_data/20200325_1312/splitted_data/values_20200325_1312_1/out_excel.csv
index bc3107a..c10493a 100644
--- a/apps/ccam/sample_data/20200325_1312/splitted_data/values_20200325_1312_1/out_excel.csv
+++ b/apps/ccam/sample_data/20200325_1312/splitted_data/values_20200325_1312_1/out_excel.csv
@@ -1,2000 +1,2000 @@
value;StateID;Confidence State Valid;Confidence State Invalid;Confidence Inputs Matching;Confidence Outputs Matching;Confidence Inputs Mismatching;Confidence Outputs Mismatching;State Condition;Confidence System Functioning;Confidence System Malfunctioning;Overall Confidence;Tag
46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0096;1;0,2;0,8;0,576797;0,423203;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,2;0,8;0,899215;0,100785;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0036;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0037;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0011;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,2;0,8;0,853149;0,146852;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0096;1;0,2;0,8;0,714981;0,285019;1;0;0;1;0;0;1
-46,0012;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,2;0,8;0,917642;0,0823582;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,2;0,8;0,779454;0,220546;1;0;0;1;0;0;1
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0088;1;0,2;0,8;0,668912;0,331088;1;0;0;1;0;0;1
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,2;0,8;0,668909;0,331091;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0042;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0025;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,2;0,8;0,622848;0,377152;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,2;0,8;0,742607;0,257393;1;0;0;1;0;0;1
-46,0012;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,2;0,8;0,982132;0,0178685;1;0;0;1;0;0;1
-46,0051;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0051;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0045;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0043;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,2;0,8;1;0;1;0;0;1;0;0;1
-46,0076;1;0,3;0,7;0,63205;0,36795;1;0;0;1;0;0;1
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0025;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0028;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0053;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,2;0,8;0,567569;0,432431;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0128;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,2;0,8;0,807087;0,192913;1;0;0;1;0;0;1
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,005;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,2;0,8;0,659695;0,340305;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,2;0,8;0,751813;0,248187;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,2;0,8;0,890014;0,109986;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0087;1;0,3;0,7;0,539936;0,460064;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0034;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0041;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0144;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0051;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,2;0,8;0,650495;0,349505;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,2;0,8;0,843968;0,156032;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,2;0,8;0,982141;0,0178591;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0067;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,2;0,8;0,917662;0,0823385;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0139;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,2;0,8;0,853179;0,146821;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0156;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0141;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0155;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,2;0,8;0,696573;0,303428;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,2;0,8;0,558397;0,441603;1;0;0;1;0;0;2
-46,015;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0139;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,2;0,8;0,908449;0,0915512;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0128;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,2;0,8;0,650525;0,349475;1;0;0;1;0;0;2
-46,0144;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0162;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,014;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,2;0,8;0,659724;0,340276;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0136;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,015;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0176;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0155;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0171;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,2;0,8;0,512334;0,487666;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0125;1;0,2;0,8;0,705794;0,294206;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0149;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0152;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0139;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,2;0,8;0,926863;0,0731374;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0053;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0044;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,005;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,003;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0044;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,2;0,8;0,632059;0,367941;1;0;0;1;0;0;1
-46,0053;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0103;1;0,2;0,8;0,512319;0,487681;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,2;0,8;0,595208;0,404792;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0059;1;0,2;0,8;0,761015;0,238985;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0024;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,2;0,8;0,761041;0,238959;1;0;0;1;0;0;1
-46,0093;1;0,3;0,7;0,705767;0,294233;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,2;0,8;0,576778;0,423222;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,006;1;0,2;0,8;0,576754;0,423246;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0057;1;0,2;0,8;0,51226;0,48774;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,2;0,8;0,567573;0,432427;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,2;0,8;0,788674;0,211326;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,2;0,8;0,57681;0,423191;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0128;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,2;0,8;0,825536;0,174464;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,2;0,8;0,714996;0,285004;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,2;0,8;0,843956;0,156044;1;0;0;1;0;0;2
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,2;0,8;0,52155;0,47845;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,2;0,8;0,788687;0,211313;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0128;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,2;0,8;0,678147;0,321853;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,2;0,8;0,797905;0,202095;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,2;0,8;0,991355;0,00864539;1;0;0;1;0;0;2
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0144;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0106;1;0,2;0,8;0,871596;0,128404;1;0;0;1;0;0;1
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0142;1;0,2;0,8;0,963729;0,0362712;1;0;0;1;0;0;1
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0118;1;0,2;0,8;0,991357;0,00864329;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0148;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0163;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0131;1;0,2;0,8;1;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0123;1;0,2;0,8;0,521557;0,478443;1;0;0;1;0;0;2
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0172;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,014;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,2;0,8;0,50316;0,49684;1;0;0;1;0;0;2
-46,0146;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0131;1;0,2;0,8;0,972937;0,0270633;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0141;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0157;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0136;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0141;1;0,2;0,8;0,788712;0,211289;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0153;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0149;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0153;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0154;1;0,2;0,8;0,761087;0,238913;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0162;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0141;1;0,2;0,8;0,613694;0,386306;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,014;1;0,2;0,8;0,687385;0,312615;1;0;0;1;0;0;2
-46,015;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0157;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0154;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,015;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0153;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0164;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,014;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,015;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0136;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0154;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0144;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0146;1;0,2;0,8;0,604489;0,395511;1;0;0;1;0;0;2
-46,0164;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0171;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0187;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0159;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0159;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0156;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0162;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0177;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0168;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0207;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0156;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0181;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0157;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0148;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0186;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0157;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0136;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0152;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0202;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0148;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0141;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0181;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0157;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0165;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0154;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0147;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0144;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0165;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,018;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0164;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,015;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0168;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0162;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0194;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0164;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0201;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0175;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0191;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0178;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0173;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,018;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0198;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0144;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0175;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0169;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,017;1;0,2;0,8;0,761099;0,238901;1;0;0;1;0;0;2
-46,0183;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0201;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0165;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0202;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0181;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0196;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0163;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0163;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,018;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0181;1;0,2;0,8;0,834793;0,165207;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0163;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0196;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0221;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0191;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0163;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0179;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0164;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0211;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0189;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0203;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0177;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0159;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0176;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0182;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0213;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0197;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0204;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0208;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0178;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0213;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0185;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0193;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,018;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0159;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0199;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0174;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0245;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0179;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0171;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0199;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0246;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0188;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0209;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,018;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0196;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0218;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,023;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0243;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0204;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0206;1;0,2;0,8;0,742706;0,257294;1;0;0;1;0;0;2
-46,0197;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0175;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0195;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0202;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0167;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0205;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0228;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0236;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0183;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0214;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0227;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,021;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0193;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0196;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0205;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0199;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0202;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0222;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0204;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0214;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0215;1;0,2;0,8;0,641405;0,358595;1;0;0;1;0;0;1
-46,0176;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0209;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0208;1;0,2;0,8;0,816389;0,183611;1;0;0;1;0;0;1
-46,0205;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0219;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0203;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0195;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0188;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,022;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0205;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0213;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0196;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0185;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0186;1;0,2;0,8;0,834796;0,165204;1;0;0;1;0;0;1
-46,0155;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0188;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0232;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0189;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0208;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0178;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0193;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0203;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,019;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0201;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0194;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,023;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0211;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0186;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0198;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0184;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0169;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0222;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0188;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0229;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0172;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0199;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,022;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0187;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0182;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,019;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0188;1;0,2;0,8;0,622955;0,377045;1;0;0;1;0;0;2
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0222;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0203;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0204;1;0,2;0,8;0,890067;0,109933;1;0;0;1;0;0;2
-46,0176;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0191;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0191;1;0,2;0,8;0,991376;0,00862445;1;0;0;1;0;0;2
-46,0185;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0176;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0182;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0205;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0187;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,014;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0202;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0207;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0215;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0223;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0172;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0168;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,017;1;0,2;0,8;0,613726;0,386274;1;0;0;1;0;0;2
-46,0168;1;0,3;0,7;0,696622;0,303378;1;0;0;1;0;0;2
-46,0177;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0194;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0192;1;0,2;0,8;0,62296;0,377041;1;0;0;1;0;0;2
-46,0165;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0185;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0165;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0171;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0196;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0155;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0169;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0171;1;0,2;0,8;0,742678;0,257322;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0155;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0172;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0191;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0167;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0156;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0148;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0207;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0198;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0194;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0158;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0154;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0165;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0154;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0143;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0139;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0139;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0162;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0194;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0192;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0128;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0149;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0149;1;0,2;0,8;0,926886;0,0731139;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0144;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0141;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0157;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0141;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0162;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0151;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0151;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0127;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,2;0,8;0,678148;0,321852;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0051;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,2;0,8;0,871594;0,128406;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,2;0,8;0,94528;0,0547199;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,2;0,8;0,761023;0,238977;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0083;1;0,2;0,8;0,733395;0,266605;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0035;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0053;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0037;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,005;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0037;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0034;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0048;1;0,2;0,8;0,6873;0,3127;1;0;0;1;0;0;2
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0036;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0041;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0051;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0026;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0043;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0049;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0049;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,003;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0033;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0038;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,004;1;0,2;0,8;0,539878;0,460122;1;0;0;1;0;0;1
-46,0032;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0024;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0026;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0035;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0033;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0024;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0031;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0032;1;0,2;0,8;1;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,003;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0032;1;0,2;0,8;0,705713;0,294287;1;0;0;1;0;0;1
-46,0012;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0035;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-45,9989;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0044;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0034;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0043;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0035;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0041;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0031;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0018;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-45,9999;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,005;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0048;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0046;1;0,2;0,8;0,659658;0,340342;1;0;0;1;0;0;1
-46,0021;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0017;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0057;1;0,2;0,8;1;0;1;0;0;1;0;0;1
-46,0027;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0048;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0039;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0015;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0041;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0002;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-45,9974;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0039;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0016;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0037;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0044;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0051;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0048;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0039;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0043;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0044;1;0,2;0,8;0,954484;0,045516;1;0;0;1;0;0;2
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0034;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,003;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0042;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,004;1;0,2;0,8;0,779427;0,220573;1;0;0;1;0;0;2
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0058;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0037;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,003;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0019;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0051;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0035;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0045;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0029;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,002;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0034;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0042;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0031;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0047;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0021;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0041;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0035;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0032;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0025;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0032;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0053;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0167;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,2;0,8;0,853163;0,146838;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0044;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0092;1;0,2;0,8;0,512306;0,487695;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,2;0,8;0,576806;0,423194;1;0;0;1;0;0;2
-46,0154;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,2;0,8;0,650505;0,349495;1;0;0;1;0;0;2
-46,0104;1;0,3;0,7;0,67814;0,32186;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,2;0,8;0,687342;0,312658;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,2;0,8;0,641292;0,358708;1;0;0;1;0;0;2
-46,0141;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,2;0,8;0,92687;0,0731302;1;0;0;1;0;0;2
-46,0111;1;0,3;0,7;0,641298;0,358702;1;0;0;1;0;0;2
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0132;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0148;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0157;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,013;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0123;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0128;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0121;1;0,2;0,8;0,668944;0,331056;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0128;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0129;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0129;1;0,2;0,8;1;0;1;0;0;1;0;0;1
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0149;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0136;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0137;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0141;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0136;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0136;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,2;0,8;0,807103;0,192897;1;0;0;1;0;0;1
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0155;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0142;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0132;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0139;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,004;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,2;0,8;0,853173;0,146827;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0135;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0149;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0156;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,2;0,8;0,908448;0,091552;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,005;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0124;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0113;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,2;0,8;0,899233;0,100767;1;0;0;1;0;0;2
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0125;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0115;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,2;0,8;0,761055;0,238945;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0146;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0117;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0138;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0116;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,2;0,8;0,982141;0,0178586;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0131;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0133;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0145;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,2;0,8;0,834745;0,165255;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0114;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,2;0,8;0,77947;0,22053;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0122;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0119;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0084;1;0,2;0,8;1;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0071;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0106;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0111;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0042;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,2;0,8;0,816312;0,183688;1;0;0;1;0;0;2
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,2;0,8;0,972928;0,0270718;1;0;0;1;0;0;2
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,2;0,8;0,714988;0,285012;1;0;0;1;0;0;2
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0033;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0085;1;0,2;0,8;0,963711;0,0362894;1;0;0;1;0;0;2
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0096;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,2;0,8;0,853157;0,146843;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,2;0,8;0,954495;0,0455048;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0105;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0088;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0101;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0134;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0053;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,005;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0108;1;0,1;0,9;0;0;1;0;0;1;0;0;2
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,2;0,8;0,595213;0,404787;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0083;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0059;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0126;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,2;0,8;0,742604;0,257396;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0034;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,2;0,8;0,945286;0,0547144;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0079;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0103;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0107;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0061;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0047;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0044;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,2;0,8;0,604423;0,395577;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0118;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0104;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,2;0,8;0,705774;0,294226;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0102;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,2;0,8;0,733401;0,266599;1;0;0;1;0;0;1
-46,0095;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0149;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,2;0,8;0,576771;0,423229;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0039;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0045;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0097;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0098;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0112;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0099;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0089;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0054;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0081;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0095;1;0,2;0,8;0,687343;0,312657;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0057;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0063;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,012;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0046;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0087;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,007;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0071;1;0,2;0,8;0,751811;0,248189;1;0;0;1;0;0;1
-46,0077;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0094;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,01;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0062;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0073;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,2;0,8;0,687328;0,312672;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,2;0,8;0,972921;0,0270786;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0069;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0065;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0049;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0121;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0056;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0091;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,006;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0092;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0066;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,009;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0078;1;0,2;0,8;0,585988;0,414012;1;0;0;1;0;0;1
-46,0086;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0074;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0043;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0064;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0052;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0084;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,011;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0072;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0082;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0055;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0075;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0085;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0093;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,008;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0068;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0076;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0067;1;0,1;0,9;0;0;1;0;0;1;0;0;1
-46,0109;1;0,1;0,9;0;0;1;0;0;1;0;0;1
+46,0107;1;0,2;0,8;1;0;1;0;0;1;0;0;1
+46,0052;1;0,3;0,7;1;0;1;0;0;1;0;0;1
+46,0088;1;0,4;0,6;1;0;1;0;0;1;0;0;1
+46,0083;1;0,5;0,5;1;0;1;0;0;1;0;0;1
+46,0072;1;0,6;0,4;1;0;1;0;0;1;0;0;1
+46,0094;1;0,7;0,3;1;0;1;0;0;1;0;0;1
+46,0096;1;0,8;0,2;1;0;1;0;0;1;0;0;1
+46,0079;1;0,9;0,1;1;0;1;0;0;1;0;0;1
+46,0084;1;1;0;1;0;1;0;0;1;0;0;1
+46,0055;1;1;0;1;0;1;0;0;1;0;0;1
+46,007;1;1;0;1;0;1;0;0;1;0;0;1
+46,0069;1;1;0;1;0;1;0;0;1;0;0;1
+46,0097;1;1;0;1;0;1;0;0;1;0;0;1
+46,0076;1;1;0;1;0;1;0;0;1;0;0;1
+46,0079;1;1;0;1;0;1;0;0;1;0;0;1
+46,0095;1;1;0;1;0;1;0;0;1;0;0;1
+46,0077;1;1;0;1;0;1;0;0;1;0;0;1
+46,0086;1;1;0;1;0;1;0;0;1;0;0;1
+46,0077;1;1;0;1;0;1;0;0;1;0;0;1
+46,0092;1;1;0;1;0;1;0;0;1;0;0;1
+46,0099;1;1;0;1;0;1;0;0;1;0;0;1
+46,0109;1;1;0;1;0;1;0;0;1;0;0;1
+46,0089;1;1;0;1;0;1;0;0;1;0;0;1
+46,0084;1;1;0;1;0;1;0;0;1;0;0;1
+46,0061;1;1;0;1;0;1;0;0;1;0;0;1
+46,0074;1;1;0;1;0;1;0;0;1;0;0;1
+46,0089;1;1;0;1;0;1;0;0;1;0;0;1
+46,0036;1;1;0;1;0;1;0;0;1;0;0;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0119;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0062;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0037;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0132;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0113;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0011;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0066;1;1;0;1;0;1;0;1;1;0;1;1
+46,0065;1;1;0;1;0;1;0;1;1;0;1;1
+46,0069;1;1;0;1;0;1;0;1;1;0;1;1
+46,0087;1;1;0;1;0;1;0;1;1;0;1;1
+46,0082;1;1;0;1;0;1;0;1;1;0;1;1
+46,0078;1;1;0;1;0;1;0;1;1;0;1;1
+46,0084;1;1;0;1;0;1;0;1;1;0;1;1
+46,0089;1;1;0;1;0;1;0;1;1;0;1;1
+46,0068;1;1;0;1;0;1;0;1;1;0;1;1
+46,0082;1;1;0;1;0;1;0;1;1;0;1;1
+46,0087;1;1;0;1;0;1;0;1;1;0;1;1
+46,008;1;1;0;1;0;1;0;1;1;0;1;1
+46,0097;1;1;0;1;0;1;0;1;1;0;1;1
+46,0096;1;1;0;1;0;1;0;1;1;0;1;1
+46,0012;1;1;0;1;0;1;0;1;1;0;1;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0107;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0119;1;1;0;1;0;1;0;1;1;0;0,903651;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0113;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0069;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0096;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0073;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,004;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0062;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0117;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0058;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0133;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0088;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,011;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0102;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0069;1;1;0;1;0;1;0;1;1;0;0,856272;1
+46,0042;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0096;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0052;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0068;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0025;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0132;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0065;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0058;1;1;0;1;0;1;0;1;1;0;0,775054;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,004;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0073;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0012;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,876577;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0051;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0051;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0059;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,009;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0103;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0045;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0058;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,737821;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0101;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0055;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0065;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0102;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0115;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,756435;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0073;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0065;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0092;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0066;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0043;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0105;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,896884;1
+46,0104;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0062;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0066;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0105;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0062;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0054;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0092;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0096;1;1;0;1;0;1;0;1;1;0;0,829197;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0095;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0102;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0073;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0103;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0065;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0093;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,967952;1
+46,0025;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0066;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0028;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0058;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0053;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0114;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0046;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0052;1;1;0;1;0;1;0;1;1;0;0,8935;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0093;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0128;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0099;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0058;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,648136;1
+46,0096;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0067;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,005;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0059;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0066;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0095;1;1;0;1;0;1;0;1;1;0;0,923958;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,854579;1
+46,0112;1;1;0;1;0;1;0;1;1;0;0,854579;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,854579;1
+46,006;1;1;0;1;0;1;0;1;1;0;0,854579;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,854579;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,854579;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0093;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0067;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0076;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,008;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0087;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0064;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0092;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0061;1;1;0;1;0;1;0;1;1;0;0,854579;4
+46,0065;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0111;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0098;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0109;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0081;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0077;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0077;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0068;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,01;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0078;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0046;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,008;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0132;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0064;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0082;1;1;0;1;0;1;0;1;1;0;0,956107;4
+46,0085;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0085;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0087;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0072;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0075;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0063;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0093;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0073;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0094;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0085;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0108;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0138;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,012;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0102;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0103;1;1;0;1;0;1;0;1;1;0;0,78013;4
+46,0085;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0106;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0104;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0084;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0034;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0119;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0075;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0085;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0124;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0137;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0041;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,007;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0096;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,011;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0061;1;1;0;1;0;1;0;4;1;0;0,504134;4
+46,0076;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0103;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0083;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0101;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0088;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0077;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0085;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0144;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0117;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,01;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0095;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,01;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0088;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0105;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0091;1;1;0;1;0;1;0;1;1;0;0,676914;4
+46,0094;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0109;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0102;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0087;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0061;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0077;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0116;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0077;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0086;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0125;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0088;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,008;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0116;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0091;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0079;1;1;0;1;0;1;0;4;1;0;0,764704;4
+46,0109;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0101;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0072;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0062;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0051;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0062;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0075;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0068;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,013;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0091;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0122;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0102;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0115;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0116;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0108;1;1;0;1;0;1;0;4;1;0;0,561663;4
+46,0099;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0108;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0125;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0135;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0106;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0094;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0096;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0105;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,004;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0084;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0107;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0115;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0102;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0078;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0101;1;1;0;1;0;1;0;1;1;0;0,526322;4
+46,0105;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0108;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0084;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0102;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0119;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,012;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0094;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0097;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0115;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,008;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,01;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0096;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0129;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0091;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0083;1;1;0;1;0;1;0;4;1;0;0,842535;4
+46,0088;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0104;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0104;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0086;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0112;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0115;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0067;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0067;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0109;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0132;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0105;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0117;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0118;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0104;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,0107;1;1;0;1;0;1;0;4;1;0;0,854379;4
+46,01;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0112;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0123;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0108;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0102;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0131;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0114;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0111;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0122;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,01;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0123;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0113;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0147;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0122;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0096;1;1;0;1;0;1;0;4;1;0;0,98466;4
+46,0137;1;1;0;1;0;1;0;4;1;0;1;4
+46,0129;1;1;0;1;0;1;0;4;1;0;1;4
+46,0135;1;1;0;1;0;1;0;4;1;0;1;4
+46,0116;1;1;0;1;0;1;0;4;1;0;1;4
+46,0135;1;1;0;1;0;1;0;4;1;0;1;4
+46,0126;1;1;0;1;0;1;0;4;1;0;1;4
+46,0099;1;1;0;1;0;1;0;4;1;0;1;4
+46,0121;1;1;0;1;0;1;0;4;1;0;1;4
+46,0094;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0135;1;1;0;1;0;1;0;4;1;0;1;4
+46,0074;1;1;0;1;0;1;0;4;1;0;1;4
+46,0087;1;1;0;1;0;1;0;4;1;0;1;4
+46,0102;1;1;0;1;0;1;0;4;1;0;1;4
+46,0113;1;1;0;1;0;1;0;4;1;0;1;4
+46,0088;1;1;0;1;0;1;0;4;1;0;1;4
+46,0139;1;1;0;1;0;1;0;4;1;0;1;4
+46,012;1;1;0;1;0;1;0;4;1;0;1;4
+46,0119;1;1;0;1;0;1;0;4;1;0;1;4
+46,0106;1;1;0;1;0;1;0;4;1;0;1;4
+46,0109;1;1;0;1;0;1;0;4;1;0;1;4
+46,0135;1;1;0;1;0;1;0;4;1;0;1;4
+46,0089;1;1;0;1;0;1;0;4;1;0;1;4
+46,0156;1;1;0;1;0;1;0;4;1;0;1;4
+46,0126;1;1;0;1;0;1;0;4;1;0;1;4
+46,0141;1;1;0;1;0;1;0;4;1;0;1;4
+46,0124;1;1;0;1;0;1;0;4;1;0;1;4
+46,0119;1;1;0;1;0;1;0;4;1;0;1;4
+46,0158;1;1;0;1;0;1;0;4;1;0;1;4
+46,0126;1;1;0;1;0;1;0;4;1;0;1;4
+46,0155;1;1;0;1;0;1;0;4;1;0;1;4
+46,0112;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,0119;1;1;0;1;0;1;0;4;1;0;1;4
+46,0117;1;1;0;1;0;1;0;4;1;0;1;4
+46,015;1;1;0;1;0;1;0;4;1;0;1;4
+46,0115;1;1;0;1;0;1;0;4;1;0;1;4
+46,013;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0139;1;1;0;1;0;1;0;4;1;0;1;4
+46,0106;1;1;0;1;0;1;0;4;1;0;1;4
+46,0129;1;1;0;1;0;1;0;4;1;0;1;4
+46,0143;1;1;0;1;0;1;0;4;1;0;1;4
+46,0101;1;1;0;1;0;1;0;4;1;0;1;4
+46,0117;1;1;0;1;0;1;0;4;1;0;1;4
+46,0116;1;1;0;1;0;1;0;4;1;0;1;4
+46,0131;1;1;0;1;0;1;0;4;1;0;1;4
+46,0086;1;1;0;1;0;1;0;4;1;0;1;4
+46,0133;1;1;0;1;0;1;0;4;1;0;1;4
+46,0128;1;1;0;1;0;1;0;4;1;0;1;4
+46,0126;1;1;0;1;0;1;0;4;1;0;1;4
+46,0144;1;1;0;1;0;1;0;4;1;0;1;4
+46,0124;1;1;0;1;0;1;0;4;1;0;1;4
+46,0162;1;1;0;1;0;1;0;4;1;0;1;4
+46,0138;1;1;0;1;0;1;0;4;1;0;1;4
+46,0119;1;1;0;1;0;1;0;4;1;0;1;4
+46,0108;1;1;0;1;0;1;0;4;1;0;1;4
+46,0124;1;1;0;1;0;1;0;4;1;0;1;4
+46,0111;1;1;0;1;0;1;0;4;1;0;1;4
+46,014;1;1;0;1;0;1;0;4;1;0;1;4
+46,0115;1;1;0;1;0;1;0;4;1;0;1;4
+46,0113;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0129;1;1;0;1;0;1;0;4;1;0;1;4
+46,0136;1;1;0;1;0;1;0;4;1;0;1;4
+46,015;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,0133;1;1;0;1;0;1;0;4;1;0;1;4
+46,0112;1;1;0;1;0;1;0;4;1;0;1;4
+46,0176;1;1;0;1;0;1;0;4;1;0;1;4
+46,0142;1;1;0;1;0;1;0;4;1;0;1;4
+46,0109;1;1;0;1;0;1;0;4;1;0;1;4
+46,0131;1;1;0;1;0;1;0;4;1;0;1;4
+46,0134;1;1;0;1;0;1;0;4;1;0;1;4
+46,013;1;1;0;1;0;1;0;4;1;0;1;4
+46,0103;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0155;1;1;0;1;0;1;0;4;1;0;1;4
+46,0142;1;1;0;1;0;1;0;4;1;0;1;4
+46,0171;1;1;0;1;0;1;0;4;1;0;1;4
+46,0117;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,0122;1;1;0;1;0;1;0;4;1;0;1;4
+46,0132;1;1;0;1;0;1;0;4;1;0;1;4
+46,0127;1;1;0;1;0;1;0;4;1;0;1;4
+46,0127;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0137;1;1;0;1;0;1;0;4;1;0;1;4
+46,0129;1;1;0;1;0;1;0;4;1;0;1;4
+46,0108;1;1;0;1;0;1;0;4;1;0;1;4
+46,0127;1;1;0;1;0;1;0;4;1;0;1;4
+46,0125;1;1;0;1;0;1;0;4;1;0;1;4
+46,0135;1;1;0;1;0;1;0;4;1;0;1;4
+46,0129;1;1;0;1;0;1;0;4;1;0;1;4
+46,0149;1;1;0;1;0;1;0;4;1;0;1;4
+46,0152;1;1;0;1;0;1;0;4;1;0;1;4
+46,0124;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0134;1;1;0;1;0;1;0;4;1;0;1;4
+46,0139;1;1;0;1;0;1;0;4;1;0;1;4
+46,0089;1;1;0;1;0;1;0;4;1;0;1;1
+46,0055;1;1;0;1;0;1;0;4;1;0;1;1
+46,009;1;1;0;1;0;1;0;4;1;0;1;1
+46,0091;1;1;0;1;0;1;0;4;1;0;1;1
+46,008;1;1;0;1;0;1;0;4;1;0;1;1
+46,0083;1;1;0;1;0;1;0;4;1;0;1;1
+46,0106;1;1;0;1;0;1;0;4;1;0;1;1
+46,0076;1;1;0;1;0;1;0;4;1;0;1;1
+46,0053;1;1;0;1;0;1;0;4;1;0;1;1
+46,0044;1;1;0;1;0;1;0;4;1;0;1;1
+46,0099;1;1;0;1;0;1;0;4;1;0;1;1
+46,0094;1;1;0;1;0;1;0;4;1;0;1;1
+46,0078;1;1;0;1;0;1;0;4;1;0;1;1
+46,0067;1;1;0;1;0;1;0;4;1;0;1;1
+46,005;1;1;0;1;0;1;0;4;1;0;1;1
+46,0084;1;1;0;1;0;1;0;4;1;0;1;1
+46,0079;1;1;0;1;0;1;0;4;1;0;1;1
+46,0087;1;1;0;1;0;1;0;4;1;0;1;1
+46,0059;1;1;0;1;0;1;0;4;1;0;1;1
+46,003;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0068;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0088;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0057;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0104;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0112;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0061;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0044;1;1;0;1;0;1;0;1;1;0;0,671826;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,009;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0053;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,01;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0103;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0092;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,934111;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,006;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0112;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0102;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,964568;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0108;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0055;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0052;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0093;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0058;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0059;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0111;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,898576;1
+46,0024;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,011;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0095;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0093;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0073;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0069;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0059;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0066;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,658289;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,995026;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,995026;1
+46,0047;1;1;0;1;0;1;0;1;1;0;0,995026;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,995026;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,995026;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,995026;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0068;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0089;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0062;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0094;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0065;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0087;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0055;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,0058;1;1;0;1;0;1;0;1;1;0;0,995026;4
+46,006;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0076;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0081;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0091;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,006;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0057;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0079;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0089;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0106;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0076;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0094;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0079;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,01;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0088;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0065;1;1;0;1;0;1;0;1;1;0;0,702285;4
+46,0126;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0076;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0089;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0108;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0102;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0062;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0059;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0105;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0012;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0076;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0089;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0086;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0095;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0072;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0083;1;1;0;1;0;1;0;1;1;0;0,839353;4
+46,0071;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0078;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0107;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0117;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0104;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0115;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,01;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0103;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0071;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0069;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0118;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0104;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0092;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0088;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0099;1;1;0;1;0;1;0;1;1;0;0,9578;4
+46,0103;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0078;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0104;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0098;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0145;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0083;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,009;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0088;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0125;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0066;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0079;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0109;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0086;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0089;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,008;1;1;0;1;0;1;0;4;1;0;0,756244;4
+46,0096;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0109;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0047;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0111;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0095;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0079;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,013;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0085;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0088;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0095;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0112;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0109;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,0107;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,012;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,007;1;1;0;1;0;1;0;4;1;0;0,60058;4
+46,01;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0128;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,006;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0081;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,009;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0073;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0132;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0087;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0072;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0113;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0116;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0106;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0077;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0127;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0069;1;1;0;1;0;1;0;4;1;0;0,71902;4
+46,0124;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0107;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0094;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0117;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,012;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0089;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0106;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0107;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0084;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0108;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0088;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0069;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0104;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0127;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0084;1;1;0;1;0;1;0;4;1;0;0,717328;4
+46,0133;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0095;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0103;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0103;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0085;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0102;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0123;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0111;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0122;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0108;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0115;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0113;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0084;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0102;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0101;1;1;0;1;0;1;0;4;1;0;0,955896;4
+46,0071;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,011;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,01;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0111;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0106;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0115;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0108;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0094;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0095;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,011;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0095;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0147;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0086;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0107;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0115;1;1;0;1;0;1;0;4;1;0;0,957588;4
+46,0117;1;1;0;1;0;1;0;4;1;0;1;4
+46,0133;1;1;0;1;0;1;0;4;1;0;1;4
+46,0098;1;1;0;1;0;1;0;4;1;0;1;4
+46,0094;1;1;0;1;0;1;0;4;1;0;1;4
+46,0105;1;1;0;1;0;1;0;4;1;0;1;4
+46,0106;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,0128;1;1;0;1;0;1;0;4;1;0;1;4
+46,0092;1;1;0;1;0;1;0;4;1;0;1;4
+46,0108;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,012;1;1;0;1;0;1;0;4;1;0;1;4
+46,0125;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0142;1;1;0;1;0;1;0;4;1;0;1;4
+46,012;1;1;0;1;0;1;0;4;1;0;1;4
+46,0107;1;1;0;1;0;1;0;4;1;0;1;4
+46,0101;1;1;0;1;0;1;0;4;1;0;1;4
+46,0113;1;1;0;1;0;1;0;4;1;0;1;4
+46,0106;1;1;0;1;0;1;0;4;1;0;1;4
+46,013;1;1;0;1;0;1;0;4;1;0;1;4
+46,0101;1;1;0;1;0;1;0;4;1;0;1;4
+46,0087;1;1;0;1;0;1;0;4;1;0;1;4
+46,0117;1;1;0;1;0;1;0;4;1;0;1;4
+46,011;1;1;0;1;0;1;0;4;1;0;1;4
+46,0112;1;1;0;1;0;1;0;4;1;0;1;4
+46,0116;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,0087;1;1;0;1;0;1;0;4;1;0;1;4
+46,0093;1;1;0;1;0;1;0;4;1;0;1;4
+46,0126;1;1;0;1;0;1;0;4;1;0;1;4
+46,0102;1;1;0;1;0;1;0;4;1;0;1;4
+46,0084;1;1;0;1;0;1;0;4;1;0;1;4
+46,0125;1;1;0;1;0;1;0;4;1;0;1;4
+46,0111;1;1;0;1;0;1;0;4;1;0;1;4
+46,0097;1;1;0;1;0;1;0;4;1;0;1;4
+46,0103;1;1;0;1;0;1;0;4;1;0;1;4
+46,0117;1;1;0;1;0;1;0;4;1;0;1;4
+46,0129;1;1;0;1;0;1;0;4;1;0;1;4
+46,0095;1;1;0;1;0;1;0;4;1;0;1;4
+46,0104;1;1;0;1;0;1;0;4;1;0;1;4
+46,011;1;1;0;1;0;1;0;4;1;0;1;4
+46,0097;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0127;1;1;0;1;0;1;0;4;1;0;1;4
+46,0124;1;1;0;1;0;1;0;4;1;0;1;4
+46,0138;1;1;0;1;0;1;0;4;1;0;1;4
+46,0111;1;1;0;1;0;1;0;4;1;0;1;4
+46,0125;1;1;0;1;0;1;0;4;1;0;1;4
+46,0111;1;1;0;1;0;1;0;4;1;0;1;4
+46,0134;1;1;0;1;0;1;0;4;1;0;1;4
+46,011;1;1;0;1;0;1;0;4;1;0;1;4
+46,011;1;1;0;1;0;1;0;4;1;0;1;4
+46,0132;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0147;1;1;0;1;0;1;0;4;1;0;1;4
+46,0131;1;1;0;1;0;1;0;4;1;0;1;1
+46,0144;1;1;0;1;0;1;0;4;1;0;1;1
+46,0113;1;1;0;1;0;1;0;4;1;0;1;1
+46,0107;1;1;0;1;0;1;0;4;1;0;1;1
+46,0106;1;1;0;1;0;1;0;4;1;0;1;1
+46,0123;1;1;0;1;0;1;0;4;1;0;1;1
+46,0143;1;1;0;1;0;1;0;4;1;0;1;1
+46,0142;1;1;0;1;0;1;0;4;1;0;1;1
+46,0119;1;1;0;1;0;1;0;4;1;0;1;1
+46,0118;1;1;0;1;0;1;0;4;1;0;1;1
+46,009;1;1;0;1;0;1;0;4;1;0;1;1
+46,0129;1;1;0;1;0;1;0;4;1;0;1;1
+46,0147;1;1;0;1;0;1;0;4;1;0;1;1
+46,0103;1;1;0;1;0;1;0;4;1;0;1;1
+46,0122;1;1;0;1;0;1;0;4;1;0;1;1
+46,0126;1;1;0;1;0;1;0;4;1;0;1;1
+46,012;1;1;0;1;0;1;0;4;1;0;1;1
+46,0095;1;1;0;1;0;1;0;4;1;0;1;1
+46,0134;1;1;0;1;0;1;0;4;1;0;1;1
+46,0125;1;1;0;1;0;1;0;4;1;0;1;1
+46,0117;1;1;0;1;0;1;0;4;1;0;1;1
+46,0109;1;1;0;1;0;1;0;4;1;0;1;1
+46,0101;1;1;0;1;0;1;0;4;1;0;1;1
+46,0095;1;1;0;1;0;1;0;4;1;0;1;1
+46,0148;1;1;0;1;0;1;0;4;1;0;1;1
+46,0092;1;1;0;1;0;1;0;4;1;0;1;1
+46,0131;1;1;0;1;0;1;0;4;1;0;1;1
+46,0124;1;1;0;1;0;1;0;4;1;0;1;1
+46,0107;1;1;0;1;0;1;0;4;1;0;1;1
+46,0101;1;1;0;1;0;1;0;4;1;0;1;1
+46,0122;1;1;0;1;0;1;0;4;1;0;1;1
+46,0137;1;1;0;1;0;1;0;4;1;0;1;1
+46,0069;1;1;0;1;0;1;0;4;1;0;1;1
+46,0147;1;1;0;1;0;1;0;4;1;0;1;1
+46,0121;1;1;0;1;0;1;0;4;1;0;1;1
+46,0105;1;1;0;1;0;1;0;4;1;0;1;1
+46,0135;1;1;0;1;0;1;0;4;1;0;1;1
+46,0092;1;1;0;1;0;1;0;4;1;0;1;1
+46,0112;1;1;0;1;0;1;0;4;1;0;1;1
+46,0121;1;1;0;1;0;1;0;4;1;0;1;1
+46,0112;1;1;0;1;0;1;0;4;1;0;1;1
+46,0124;1;1;0;1;0;1;0;4;1;0;1;1
+46,0117;1;1;0;1;0;1;0;4;1;0;1;1
+46,0112;1;1;0;1;0;1;0;4;1;0;1;1
+46,0163;1;1;0;1;0;1;0;4;1;0;1;1
+46,0132;1;1;0;1;0;1;0;4;1;0;1;1
+46,0131;1;1;0;1;0;1;0;4;1;0;1;1
+46,0112;1;1;0;1;0;1;0;4;1;0;1;1
+46,0109;1;1;0;1;0;1;0;4;1;0;1;1
+46,0121;1;1;0;1;0;1;0;4;1;0;1;1
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0145;1;1;0;1;0;1;0;4;1;0;1;4
+46,0172;1;1;0;1;0;1;0;4;1;0;1;4
+46,0109;1;1;0;1;0;1;0;4;1;0;1;4
+46,0147;1;1;0;1;0;1;0;4;1;0;1;4
+46,0135;1;1;0;1;0;1;0;4;1;0;1;4
+46,0119;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,014;1;1;0;1;0;1;0;4;1;0;1;4
+46,0143;1;1;0;1;0;1;0;4;1;0;1;4
+46,0146;1;1;0;1;0;1;0;4;1;0;1;4
+46,013;1;1;0;1;0;1;0;4;1;0;1;4
+46,0131;1;1;0;1;0;1;0;4;1;0;1;4
+46,0113;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0133;1;1;0;1;0;1;0;4;1;0;1;4
+46,0141;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0107;1;1;0;1;0;1;0;4;1;0;1;4
+46,0157;1;1;0;1;0;1;0;4;1;0;1;4
+46,0112;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0136;1;1;0;1;0;1;0;4;1;0;1;4
+46,0142;1;1;0;1;0;1;0;4;1;0;1;4
+46,0141;1;1;0;1;0;1;0;4;1;0;1;4
+46,0133;1;1;0;1;0;1;0;4;1;0;1;4
+46,0124;1;1;0;1;0;1;0;4;1;0;1;4
+46,0143;1;1;0;1;0;1;0;4;1;0;1;4
+46,0153;1;1;0;1;0;1;0;4;1;0;1;4
+46,0127;1;1;0;1;0;1;0;4;1;0;1;4
+46,0149;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0104;1;1;0;1;0;1;0;4;1;0;1;4
+46,0158;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,0099;1;1;0;1;0;1;0;4;1;0;1;4
+46,0142;1;1;0;1;0;1;0;4;1;0;1;4
+46,0153;1;1;0;1;0;1;0;4;1;0;1;4
+46,0154;1;1;0;1;0;1;0;4;1;0;1;4
+46,0125;1;1;0;1;0;1;0;4;1;0;1;4
+46,0158;1;1;0;1;0;1;0;4;1;0;1;4
+46,0106;1;1;0;1;0;1;0;4;1;0;1;4
+46,0162;1;1;0;1;0;1;0;4;1;0;1;4
+46,0137;1;1;0;1;0;1;0;4;1;0;1;4
+46,0114;1;1;0;1;0;1;0;4;1;0;1;4
+46,0131;1;1;0;1;0;1;0;4;1;0;1;4
+46,0143;1;1;0;1;0;1;0;4;1;0;1;4
+46,0116;1;1;0;1;0;1;0;4;1;0;1;4
+46,0143;1;1;0;1;0;1;0;4;1;0;1;4
+46,0141;1;1;0;1;0;1;0;4;1;0;1;4
+46,0131;1;1;0;1;0;1;0;4;1;0;1;4
+46,0137;1;1;0;1;0;1;0;4;1;0;1;4
+46,0142;1;1;0;1;0;1;0;4;1;0;1;4
+46,014;1;1;0;1;0;1;0;4;1;0;1;4
+46,015;1;1;0;1;0;1;0;4;1;0;1;4
+46,016;1;1;0;1;0;1;0;4;1;0;1;4
+46,0133;1;1;0;1;0;1;0;4;1;0;1;4
+46,0157;1;1;0;1;0;1;0;4;1;0;1;4
+46,0154;1;1;0;1;0;1;0;4;1;0;1;4
+46,015;1;1;0;1;0;1;0;4;1;0;1;4
+46,0138;1;1;0;1;0;1;0;4;1;0;1;4
+46,0153;1;1;0;1;0;1;0;4;1;0;1;4
+46,0164;1;1;0;1;0;1;0;4;1;0;1;4
+46,014;1;1;0;1;0;1;0;4;1;0;1;4
+46,015;1;1;0;1;0;1;0;4;1;0;1;4
+46,0158;1;1;0;1;0;1;0;4;1;0;1;4
+46,0142;1;1;0;1;0;1;0;4;1;0;1;4
+46,0127;1;1;0;1;0;1;0;4;1;0;1;4
+46,0136;1;1;0;1;0;1;0;4;1;0;1;4
+46,016;1;1;0;1;0;1;0;4;1;0;1;4
+46,0154;1;1;0;1;0;1;0;4;1;0;1;4
+46,0103;1;1;0;1;0;1;0;4;1;0;1;4
+46,013;1;1;0;1;0;1;0;4;1;0;1;4
+46,0144;1;1;0;1;0;1;0;4;1;0;1;4
+46,0146;1;1;0;1;0;1;0;4;1;0;1;4
+46,0164;1;1;0;1;0;1;0;4;1;0;1;4
+46,0171;1;1;0;1;0;1;0;4;1;0;1;4
+46,0187;1;1;0;1;0;1;0;4;1;0;1;4
+46,0112;1;1;0;1;0;1;0;4;1;0;1;4
+46,0159;1;1;0;1;0;1;0;4;1;0;1;4
+46,0121;1;1;0;1;0;1;0;4;1;0;1;4
+46,013;1;1;0;1;0;1;0;4;1;0;1;4
+46,0159;1;1;0;1;0;1;0;4;1;0;1;4
+46,0143;1;1;0;1;0;1;0;4;1;0;1;4
+46,0156;1;1;0;1;0;1;0;4;1;0;1;4
+46,0162;1;1;0;1;0;1;0;4;1;0;1;4
+46,0145;1;1;0;1;0;1;0;4;1;0;1;4
+46,0177;1;1;0;1;0;1;0;4;1;0;1;4
+46,0168;1;1;0;1;0;1;0;4;1;0;1;4
+46,0207;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0156;1;1;0;1;0;1;0;4;1;0;1;4
+46,0181;1;1;0;1;0;1;0;4;1;0;1;4
+46,0157;1;1;0;1;0;1;0;4;1;0;1;4
+46,0135;1;1;0;1;0;1;0;4;1;0;1;4
+46,0147;1;1;0;1;0;1;0;4;1;0;1;4
+46,016;1;1;0;1;0;1;0;4;1;0;1;4
+46,0127;1;1;0;1;0;1;0;4;1;0;1;4
+46,0148;1;1;0;1;0;1;0;4;1;0;1;4
+46,0158;1;1;0;1;0;1;0;4;1;0;1;4
+46,0107;1;1;0;1;0;1;0;4;1;0;1;4
+46,0186;1;1;0;1;0;1;0;4;1;0;1;4
+46,0157;1;1;0;1;0;1;0;4;1;0;1;4
+46,0136;1;1;0;1;0;1;0;4;1;0;1;4
+46,0152;1;1;0;1;0;1;0;4;1;0;1;4
+46,0202;1;1;0;1;0;1;0;4;1;0;1;4
+46,0148;1;1;0;1;0;1;0;4;1;0;1;4
+46,0141;1;1;0;1;0;1;0;4;1;0;1;4
+46,0181;1;1;0;1;0;1;0;4;1;0;1;4
+46,0158;1;1;0;1;0;1;0;4;1;0;1;4
+46,0157;1;1;0;1;0;1;0;4;1;0;1;4
+46,0165;1;1;0;1;0;1;0;4;1;0;1;4
+46,0154;1;1;0;1;0;1;0;4;1;0;1;4
+46,0147;1;1;0;1;0;1;0;4;1;0;1;4
+46,0144;1;1;0;1;0;1;0;4;1;0;1;4
+46,0165;1;1;0;1;0;1;0;4;1;0;1;4
+46,018;1;1;0;1;0;1;0;4;1;0;1;4
+46,0164;1;1;0;1;0;1;0;4;1;0;1;4
+46,015;1;1;0;1;0;1;0;4;1;0;1;4
+46,0168;1;1;0;1;0;1;0;4;1;0;1;4
+46,0115;1;1;0;1;0;1;0;4;1;0;1;4
+46,0162;1;1;0;1;0;1;0;4;1;0;1;4
+46,0194;1;1;0;1;0;1;0;4;1;0;1;4
+46,0164;1;1;0;1;0;1;0;4;1;0;1;4
+46,0201;1;1;0;1;0;1;0;4;1;0;1;4
+46,0175;1;1;0;1;0;1;0;4;1;0;1;4
+46,0191;1;1;0;1;0;1;0;4;1;0;1;4
+46,0178;1;1;0;1;0;1;0;4;1;0;1;4
+46,0173;1;1;0;1;0;1;0;4;1;0;1;4
+46,018;1;1;0;1;0;1;0;4;1;0;1;4
+46,0198;1;1;0;1;0;1;0;4;1;0;1;4
+46,0144;1;1;0;1;0;1;0;4;1;0;1;4
+46,0175;1;1;0;1;0;1;0;4;1;0;1;4
+46,0169;1;1;0;1;0;1;0;4;1;0;1;4
+46,017;1;1;0;1;0;1;0;4;1;0;1;4
+46,0183;1;1;0;1;0;1;0;4;1;0;1;4
+46,0201;1;1;0;1;0;1;0;4;1;0;1;4
+46,0165;1;1;0;1;0;1;0;4;1;0;1;4
+46,0202;1;1;0;1;0;1;0;4;1;0;1;4
+46,0181;1;1;0;1;0;1;0;4;1;0;1;4
+46,0196;1;1;0;1;0;1;0;4;1;0;1;4
+46,0158;1;1;0;1;0;1;0;4;1;0;1;4
+46,0163;1;1;0;1;0;1;0;4;1;0;1;4
+46,016;1;1;0;1;0;1;0;4;1;0;1;4
+46,0163;1;1;0;1;0;1;0;4;1;0;1;4
+46,018;1;1;0;1;0;1;0;4;1;0;1;4
+46,0181;1;1;0;1;0;1;0;4;1;0;1;4
+46,0138;1;1;0;1;0;1;0;4;1;0;1;4
+46,0163;1;1;0;1;0;1;0;4;1;0;1;4
+46,0196;1;1;0;1;0;1;0;4;1;0;1;4
+46,0221;1;1;0;1;0;1;0;4;1;0;1;4
+46,0191;1;1;0;1;0;1;0;4;1;0;1;4
+46,0163;1;1;0;1;0;1;0;4;1;0;1;4
+46,0179;1;1;0;1;0;1;0;4;1;0;1;4
+46,0192;1;1;0;1;0;1;0;4;1;0;1;4
+46,0164;1;1;0;1;0;1;0;4;1;0;1;4
+46,0211;1;1;0;1;0;1;0;4;1;0;1;4
+46,0189;1;1;0;1;0;1;0;4;1;0;1;4
+46,0203;1;1;0;1;0;1;0;4;1;0;1;4
+46,0177;1;1;0;1;0;1;0;4;1;0;1;4
+46,0159;1;1;0;1;0;1;0;4;1;0;1;4
+46,0176;1;1;0;1;0;1;0;4;1;0;1;4
+46,0182;1;1;0;1;0;1;0;4;1;0;1;4
+46,0213;1;1;0;1;0;1;0;4;1;0;1;4
+46,0197;1;1;0;1;0;1;0;4;1;0;1;4
+46,0204;1;1;0;1;0;1;0;4;1;0;1;4
+46,0208;1;1;0;1;0;1;0;4;1;0;1;4
+46,0178;1;1;0;1;0;1;0;4;1;0;1;4
+46,0213;1;1;0;1;0;1;0;4;1;0;1;4
+46,0185;1;1;0;1;0;1;0;4;1;0;1;4
+46,0193;1;1;0;1;0;1;0;4;1;0;1;4
+46,018;1;1;0;1;0;1;0;4;1;0;1;4
+46,0159;1;1;0;1;0;1;0;4;1;0;1;4
+46,0199;1;1;0;1;0;1;0;4;1;0;1;4
+46,0174;1;1;0;1;0;1;0;4;1;0;1;4
+46,0192;1;1;0;1;0;1;0;4;1;0;1;4
+46,0245;1;1;0;1;0;1;0;4;1;0;1;4
+46,0179;1;1;0;1;0;1;0;4;1;0;1;4
+46,0171;1;1;0;1;0;1;0;4;1;0;1;4
+46,0199;1;1;0;1;0;1;0;4;1;0;1;4
+46,0246;1;1;0;1;0;1;0;4;1;0;1;4
+46,0188;1;1;0;1;0;1;0;4;1;0;1;4
+46,0209;1;1;0;1;0;1;0;4;1;0;1;4
+46,018;1;1;0;1;0;1;0;4;1;0;1;4
+46,0196;1;1;0;1;0;1;0;4;1;0;1;4
+46,0218;1;1;0;1;0;1;0;4;1;0;1;4
+46,023;1;1;0;1;0;1;0;4;1;0;1;4
+46,0243;1;1;0;1;0;1;0;4;1;0;1;4
+46,0204;1;1;0;1;0;1;0;4;1;0;1;4
+46,0206;1;1;0;1;0;1;0;4;1;0;1;4
+46,0197;1;1;0;1;0;1;0;4;1;0;1;4
+46,0175;1;1;0;1;0;1;0;4;1;0;1;4
+46,0195;1;1;0;1;0;1;0;4;1;0;1;4
+46,0202;1;1;0;1;0;1;0;4;1;0;1;4
+46,0104;1;1;0;1;0;1;0;4;1;0;1;4
+46,0167;1;1;0;1;0;1;0;4;1;0;1;4
+46,0205;1;1;0;1;0;1;0;4;1;0;1;4
+46,0228;1;1;0;1;0;1;0;4;1;0;1;4
+46,0236;1;1;0;1;0;1;0;4;1;0;1;4
+46,0183;1;1;0;1;0;1;0;4;1;0;1;4
+46,0214;1;1;0;1;0;1;0;4;1;0;1;1
+46,0227;1;1;0;1;0;1;0;4;1;0;1;1
+46,021;1;1;0;1;0;1;0;4;1;0;1;1
+46,0193;1;1;0;1;0;1;0;4;1;0;1;1
+46,0196;1;1;0;1;0;1;0;4;1;0;1;1
+46,0205;1;1;0;1;0;1;0;4;1;0;1;1
+46,0199;1;1;0;1;0;1;0;4;1;0;1;1
+46,0202;1;1;0;1;0;1;0;4;1;0;1;1
+46,0222;1;1;0;1;0;1;0;4;1;0;1;1
+46,0204;1;1;0;1;0;1;0;4;1;0;1;1
+46,0214;1;1;0;1;0;1;0;4;1;0;1;1
+46,0215;1;1;0;1;0;1;0;4;1;0;1;1
+46,0176;1;1;0;1;0;1;0;4;1;0;1;1
+46,0209;1;1;0;1;0;1;0;4;1;0;1;1
+46,0208;1;1;0;1;0;1;0;4;1;0;1;1
+46,0205;1;1;0;1;0;1;0;4;1;0;1;1
+46,0219;1;1;0;1;0;1;0;4;1;0;1;1
+46,0203;1;1;0;1;0;1;0;4;1;0;1;1
+46,0195;1;1;0;1;0;1;0;4;1;0;1;1
+46,0188;1;1;0;1;0;1;0;4;1;0;1;1
+46,022;1;1;0;1;0;1;0;4;1;0;1;1
+46,0205;1;1;0;1;0;1;0;4;1;0;1;1
+46,0213;1;1;0;1;0;1;0;4;1;0;1;1
+46,0196;1;1;0;1;0;1;0;4;1;0;1;1
+46,0185;1;1;0;1;0;1;0;4;1;0;1;1
+46,0186;1;1;0;1;0;1;0;4;1;0;1;1
+46,0155;1;1;0;1;0;1;0;4;1;0;1;1
+46,0188;1;1;0;1;0;1;0;4;1;0;1;1
+46,0232;1;1;0;1;0;1;0;4;1;0;1;1
+46,0189;1;1;0;1;0;1;0;4;1;0;1;1
+46,0208;1;1;0;1;0;1;0;4;1;0;1;1
+46,0178;1;1;0;1;0;1;0;4;1;0;1;1
+46,0193;1;1;0;1;0;1;0;4;1;0;1;1
+46,0203;1;1;0;1;0;1;0;4;1;0;1;1
+46,019;1;1;0;1;0;1;0;4;1;0;1;1
+46,0201;1;1;0;1;0;1;0;4;1;0;1;1
+46,0194;1;1;0;1;0;1;0;4;1;0;1;1
+46,023;1;1;0;1;0;1;0;4;1;0;1;1
+46,0211;1;1;0;1;0;1;0;4;1;0;1;1
+46,0192;1;1;0;1;0;1;0;4;1;0;1;1
+46,0186;1;1;0;1;0;1;0;4;1;0;1;1
+46,0127;1;1;0;1;0;1;0;4;1;0;1;1
+46,0198;1;1;0;1;0;1;0;4;1;0;1;1
+46,0184;1;1;0;1;0;1;0;4;1;0;1;1
+46,0169;1;1;0;1;0;1;0;4;1;0;1;1
+46,0222;1;1;0;1;0;1;0;4;1;0;1;1
+46,0188;1;1;0;1;0;1;0;4;1;0;1;1
+46,0192;1;1;0;1;0;1;0;4;1;0;1;1
+46,0229;1;1;0;1;0;1;0;4;1;0;1;1
+46,0172;1;1;0;1;0;1;0;4;1;0;1;1
+46,0199;1;1;0;1;0;1;0;4;1;0;1;2
+46,022;1;1;0;1;0;1;0;4;1;0;1;2
+46,0187;1;1;0;1;0;1;0;4;1;0;1;2
+46,0182;1;1;0;1;0;1;0;4;1;0;1;2
+46,019;1;1;0;1;0;1;0;4;1;0;1;2
+46,0188;1;1;0;1;0;1;0;4;1;0;1;2
+46,0192;1;1;0;1;0;1;0;4;1;0;1;2
+46,0145;1;1;0;1;0;1;0;4;1;0;1;2
+46,0222;1;1;0;1;0;1;0;4;1;0;1;2
+46,0203;1;1;0;1;0;1;0;4;1;0;1;2
+46,0204;1;1;0;1;0;1;0;4;1;0;1;2
+46,0176;1;1;0;1;0;1;0;4;1;0;1;2
+46,0191;1;1;0;1;0;1;0;4;1;0;1;2
+46,0191;1;1;0;1;0;1;0;4;1;0;1;2
+46,0185;1;1;0;1;0;1;0;4;1;0;1;2
+46,0176;1;1;0;1;0;1;0;4;1;0;1;2
+46,0182;1;1;0;1;0;1;0;4;1;0;1;2
+46,0205;1;1;0;1;0;1;0;4;1;0;1;2
+46,0187;1;1;0;1;0;1;0;4;1;0;1;2
+46,0143;1;1;0;1;0;1;0;4;1;0;1;2
+46,014;1;1;0;1;0;1;0;4;1;0;1;2
+46,0202;1;1;0;1;0;1;0;4;1;0;1;2
+46,0207;1;1;0;1;0;1;0;4;1;0;1;2
+46,0215;1;1;0;1;0;1;0;4;1;0;1;2
+46,016;1;1;0;1;0;1;0;4;1;0;1;2
+46,0223;1;1;0;1;0;1;0;4;1;0;1;2
+46,0172;1;1;0;1;0;1;0;4;1;0;1;2
+46,0168;1;1;0;1;0;1;0;4;1;0;1;2
+46,017;1;1;0;1;0;1;0;4;1;0;1;2
+46,0168;1;1;0;1;0;1;0;4;1;0;1;2
+46,0177;1;1;0;1;0;1;0;4;1;0;1;2
+46,0133;1;1;0;1;0;1;0;4;1;0;1;2
+46,0194;1;1;0;1;0;1;0;4;1;0;1;2
+46,0192;1;1;0;1;0;1;0;4;1;0;1;2
+46,0165;1;1;0;1;0;1;0;4;1;0;1;2
+46,0137;1;1;0;1;0;1;0;4;1;0;1;2
+46,0185;1;1;0;1;0;1;0;4;1;0;1;2
+46,0165;1;1;0;1;0;1;0;4;1;0;1;2
+46,0171;1;1;0;1;0;1;0;4;1;0;1;2
+46,0196;1;1;0;1;0;1;0;4;1;0;1;2
+46,0155;1;1;0;1;0;1;0;4;1;0;1;2
+46,0192;1;1;0;1;0;1;0;4;1;0;1;2
+46,0169;1;1;0;1;0;1;0;4;1;0;1;2
+46,0171;1;1;0;1;0;1;0;4;1;0;1;2
+46,0158;1;1;0;1;0;1;0;4;1;0;1;2
+46,0155;1;1;0;1;0;1;0;4;1;0;1;2
+46,0172;1;1;0;1;0;1;0;4;1;0;1;2
+46,0191;1;1;0;1;0;1;0;4;1;0;1;2
+46,0167;1;1;0;1;0;1;0;4;1;0;1;2
+46,0123;1;1;0;1;0;1;0;4;1;0;1;2
+46,0156;1;1;0;1;0;1;0;4;1;0;1;2
+46,0148;1;1;0;1;0;1;0;4;1;0;1;2
+46,0207;1;1;0;1;0;1;0;4;1;0;1;2
+46,016;1;1;0;1;0;1;0;4;1;0;1;2
+46,0198;1;1;0;1;0;1;0;4;1;0;1;2
+46,0194;1;1;0;1;0;1;0;4;1;0;1;2
+46,0158;1;1;0;1;0;1;0;4;1;0;1;2
+46,0137;1;1;0;1;0;1;0;4;1;0;1;2
+46,0192;1;1;0;1;0;1;0;4;1;0;1;2
+46,0143;1;1;0;1;0;1;0;4;1;0;1;2
+46,0154;1;1;0;1;0;1;0;4;1;0;1;2
+46,0165;1;1;0;1;0;1;0;4;1;0;1;2
+46,0154;1;1;0;1;0;1;0;4;1;0;1;2
+46,0113;1;1;0;1;0;1;0;4;1;0;1;2
+46,0123;1;1;0;1;0;1;0;4;1;0;1;2
+46,0143;1;1;0;1;0;1;0;4;1;0;1;2
+46,0139;1;1;0;1;0;1;0;4;1;0;1;2
+46,0139;1;1;0;1;0;1;0;4;1;0;1;2
+46,0162;1;1;0;1;0;1;0;4;1;0;1;2
+46,0135;1;1;0;1;0;1;0;4;1;0;1;2
+46,0194;1;1;0;1;0;1;0;4;1;0;1;2
+46,0134;1;1;0;1;0;1;0;4;1;0;1;2
+46,0134;1;1;0;1;0;1;0;4;1;0;1;2
+46,0192;1;1;0;1;0;1;0;4;1;0;1;2
+46,0137;1;1;0;1;0;1;0;4;1;0;1;2
+46,0128;1;1;0;1;0;1;0;4;1;0;1;2
+46,0149;1;1;0;1;0;1;0;4;1;0;1;2
+46,0149;1;1;0;1;0;1;0;4;1;0;1;2
+46,012;1;1;0;1;0;1;0;4;1;0;1;2
+46,0144;1;1;0;1;0;1;0;4;1;0;1;2
+46,0118;1;1;0;1;0;1;0;4;1;0;1;2
+46,0141;1;1;0;1;0;1;0;4;1;0;1;2
+46,0157;1;1;0;1;0;1;0;4;1;0;1;2
+46,0113;1;1;0;1;0;1;0;4;1;0;1;2
+46,0129;1;1;0;1;0;1;0;4;1;0;1;2
+46,0141;1;1;0;1;0;1;0;4;1;0;1;2
+46,0133;1;1;0;1;0;1;0;4;1;0;1;2
+46,0142;1;1;0;1;0;1;0;4;1;0;1;2
+46,0119;1;1;0;1;0;1;0;4;1;0;1;2
+46,0145;1;1;0;1;0;1;0;4;1;0;1;2
+46,0137;1;1;0;1;0;1;0;4;1;0;1;2
+46,0076;1;1;0;1;0;1;0;4;1;0;1;2
+46,0162;1;1;0;1;0;1;0;4;1;0;1;2
+46,0129;1;1;0;1;0;1;0;4;1;0;1;2
+46,0151;1;1;0;1;0;1;0;4;1;0;1;2
+46,0138;1;1;0;1;0;1;0;4;1;0;1;2
+46,0106;1;1;0;1;0;1;0;4;1;0;1;2
+46,0151;1;1;0;1;0;1;0;4;1;0;1;2
+46,0124;1;1;0;1;0;1;0;4;1;0;1;2
+46,0081;1;1;0;1;0;1;0;4;1;0;1;2
+46,0106;1;1;0;1;0;1;0;4;1;0;1;2
+46,0113;1;1;0;1;0;1;0;4;1;0;1;2
+46,0127;1;1;0;1;0;1;0;4;1;0;1;2
+46,0133;1;1;0;1;0;1;0;4;1;0;1;2
+46,0138;1;1;0;1;0;1;0;4;1;0;1;2
+46,0096;1;1;0;1;0;1;0;4;1;0;1;2
+46,0114;1;1;0;1;0;1;0;4;1;0;1;2
+46,0114;1;1;0;1;0;1;0;4;1;0;1;2
+46,0105;1;1;0;1;0;1;0;4;1;0;1;2
+46,0111;1;1;0;1;0;1;0;4;1;0;1;2
+46,0113;1;1;0;1;0;1;0;4;1;0;1;2
+46,0122;1;1;0;1;0;1;0;4;1;0;1;2
+46,0115;1;1;0;1;0;1;0;4;1;0;1;2
+46,0079;1;1;0;1;0;1;0;4;1;0;1;2
+46,0098;1;1;0;1;0;1;0;4;1;0;1;2
+46,0124;1;1;0;1;0;1;0;4;1;0;1;2
+46,0107;1;1;0;1;0;1;0;4;1;0;1;2
+46,012;1;1;0;1;0;1;0;4;1;0;1;2
+46,0116;1;1;0;1;0;1;0;4;1;0;1;2
+46,0086;1;1;0;1;0;1;0;4;1;0;1;2
+46,0094;1;1;0;1;0;1;0;4;1;0;1;2
+46,0106;1;1;0;1;0;1;0;4;1;0;1;2
+46,0051;1;1;0;1;0;1;0;4;1;0;1;2
+46,006;1;1;0;1;0;1;0;4;1;0;1;2
+46,011;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0104;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0103;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0118;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0093;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,009;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0094;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0106;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0089;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0059;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0109;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0077;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0079;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0119;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0093;1;1;0;1;0;1;0;4;1;0;0,852687;2
+46,0071;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,007;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0078;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0078;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0085;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0097;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0096;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0072;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,007;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0101;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0096;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0105;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0088;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0055;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0085;1;1;0;1;0;1;0;4;1;0;0,565047;2
+46,0083;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0082;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0059;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0035;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,011;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0053;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0086;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0055;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0076;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0063;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0073;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0065;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0059;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0047;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0066;1;1;0;1;0;1;0;1;1;0;0,863043;2
+46,0099;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,007;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0037;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,005;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0074;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0054;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0037;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,006;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0046;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0034;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0054;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0068;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0074;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0047;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0048;1;1;0;1;0;1;0;2;1;0;0,507546;2
+46,0057;1;1;0;1;0;1;0;2;1;0;1;2
+46,0115;1;1;0;1;0;1;0;2;1;0;1;2
+46,0036;1;1;0;1;0;1;0;2;1;0;1;2
+46,0041;1;1;0;1;0;1;0;2;1;0;1;2
+46,0057;1;1;0;1;0;1;0;2;1;0;1;2
+46,0051;1;1;0;1;0;1;0;2;1;0;1;2
+46,0079;1;1;0;1;0;1;0;2;1;0;1;2
+46,0016;1;1;0;1;0;1;0;2;1;0;1;2
+46,0056;1;1;0;1;0;1;0;2;1;0;1;2
+46,0026;1;1;0;1;0;1;0;2;1;0;1;2
+46,0043;1;1;0;1;0;1;0;2;1;0;1;2
+46,0049;1;1;0;1;0;1;0;2;1;0;1;2
+46,0049;1;1;0;1;0;1;0;2;1;0;1;2
+46,003;1;1;0;1;0;1;0;2;1;0;1;2
+46,0033;1;1;0;1;0;1;0;2;1;0;1;2
+46,0067;1;1;0;1;0;1;0;2;1;0;1;2
+46,0046;1;1;0;1;0;1;0;2;1;0;1;1
+46,0038;1;1;0;1;0;1;0;2;1;0;1;1
+46,004;1;1;0;1;0;1;0;2;1;0;1;1
+46,0032;1;1;0;1;0;1;0;2;1;0;1;1
+46,0024;1;1;0;1;0;1;0;2;1;0;1;1
+46,006;1;1;0;1;0;1;0;2;1;0;1;1
+46,0063;1;1;0;1;0;1;0;2;1;0;1;1
+46,0026;1;1;0;1;0;1;0;2;1;0;1;1
+46,0035;1;1;0;1;0;1;0;2;1;0;1;1
+46,0033;1;1;0;1;0;1;0;2;1;0;1;1
+46,0024;1;1;0;1;0;1;0;2;1;0;1;1
+46,0057;1;1;0;1;0;1;0;2;1;0;1;1
+46,0031;1;1;0;1;0;1;0;2;1;0;1;1
+46,0032;1;1;0;1;0;1;0;2;1;0;1;1
+46,0072;1;1;0;1;0;1;0;2;1;0;1;1
+46,003;1;1;0;1;0;1;0;2;1;0;1;1
+46,0032;1;1;0;1;0;1;0;2;1;0;1;1
+46,0012;1;1;0;1;0;1;0;2;1;0;1;1
+46,0052;1;1;0;1;0;1;0;2;1;0;1;1
+46,0056;1;1;0;1;0;1;0;2;1;0;1;1
+46,0035;1;1;0;1;0;1;0;2;1;0;1;1
+46,0057;1;1;0;1;0;1;0;2;1;0;1;1
+46,0092;1;1;0;1;0;1;0;2;1;0;1;1
+46,0055;1;1;0;1;0;1;0;2;1;0;1;1
+45,9989;1;1;0;1;0;1;0;2;1;0;1;1
+46,0044;1;1;0;1;0;1;0;2;1;0;1;1
+46,0034;1;1;0;1;0;1;0;2;1;0;1;1
+46,0043;1;1;0;1;0;1;0;2;1;0;1;1
+46,0035;1;1;0;1;0;1;0;2;1;0;1;1
+46,0041;1;1;0;1;0;1;0;2;1;0;1;1
+46,0047;1;1;0;1;0;1;0;2;1;0;1;1
+46,0031;1;1;0;1;0;1;0;2;1;0;1;1
+46,0057;1;1;0;1;0;1;0;2;1;0;1;1
+46,0046;1;1;0;1;0;1;0;2;1;0;1;1
+46,0018;1;1;0;1;0;1;0;2;1;0;1;1
+45,9999;1;1;0;1;0;1;0;2;1;0;1;1
+46,005;1;1;0;1;0;1;0;2;1;0;1;1
+46,0061;1;1;0;1;0;1;0;2;1;0;1;1
+46,0048;1;1;0;1;0;1;0;2;1;0;1;1
+46,0046;1;1;0;1;0;1;0;2;1;0;1;1
+46,0021;1;1;0;1;0;1;0;2;1;0;1;1
+46,0017;1;1;0;1;0;1;0;2;1;0;1;1
+46,0076;1;1;0;1;0;1;0;2;1;0;1;1
+46,004;1;1;0;1;0;1;0;2;1;0;1;1
+46,0087;1;1;0;1;0;1;0;2;1;0;1;1
+46,004;1;1;0;1;0;1;0;2;1;0;1;1
+46,0057;1;1;0;1;0;1;0;2;1;0;1;1
+46,0057;1;1;0;1;0;1;0;2;1;0;1;1
+46,0027;1;1;0;1;0;1;0;2;1;0;1;1
+46,0048;1;1;0;1;0;1;0;2;1;0;1;1
+46,0039;1;1;0;1;0;1;0;2;1;0;1;4
+46,0015;1;1;0;1;0;1;0;2;1;0;1;4
+46,0052;1;1;0;1;0;1;0;2;1;0;1;4
+46,0057;1;1;0;1;0;1;0;2;1;0;1;4
+46,0041;1;1;0;1;0;1;0;2;1;0;1;4
+46,0002;1;1;0;1;0;1;0;2;1;0;1;4
+46,0099;1;1;0;1;0;1;0;2;1;0;1;4
+45,9974;1;1;0;1;0;1;0;2;1;0;1;4
+46,0039;1;1;0;1;0;1;0;2;1;0;1;4
+46,0016;1;1;0;1;0;1;0;2;1;0;1;4
+46,0037;1;1;0;1;0;1;0;2;1;0;1;4
+46,0044;1;1;0;1;0;1;0;2;1;0;1;4
+46,0051;1;1;0;1;0;1;0;2;1;0;1;4
+46,0048;1;1;0;1;0;1;0;2;1;0;1;4
+46,0082;1;1;0;1;0;1;0;2;1;0;1;4
+46,0039;1;1;0;1;0;1;0;2;1;0;1;4
+46,0043;1;1;0;1;0;1;0;2;1;0;1;4
+46,0044;1;1;0;1;0;1;0;2;1;0;1;4
+46,0052;1;1;0;1;0;1;0;2;1;0;1;4
+46,004;1;1;0;1;0;1;0;2;1;0;1;4
+46,0061;1;1;0;1;0;1;0;2;1;0;1;4
+46,0095;1;1;0;1;0;1;0;2;1;0;1;4
+46,0034;1;1;0;1;0;1;0;2;1;0;1;4
+46,003;1;1;0;1;0;1;0;2;1;0;1;4
+46,0042;1;1;0;1;0;1;0;2;1;0;1;4
+46,004;1;1;0;1;0;1;0;2;1;0;1;4
+46,0071;1;1;0;1;0;1;0;2;1;0;1;4
+46,0058;1;1;0;1;0;1;0;2;1;0;1;4
+46,0052;1;1;0;1;0;1;0;2;1;0;1;4
+46,0069;1;1;0;1;0;1;0;2;1;0;1;4
+46,0037;1;1;0;1;0;1;0;2;1;0;1;4
+46,0055;1;1;0;1;0;1;0;2;1;0;1;4
+46,003;1;1;0;1;0;1;0;2;1;0;1;4
+46,0079;1;1;0;1;0;1;0;2;1;0;1;4
+46,0019;1;1;0;1;0;1;0;2;1;0;1;4
+46,0051;1;1;0;1;0;1;0;2;1;0;1;4
+46,0035;1;1;0;1;0;1;0;2;1;0;1;4
+46,0045;1;1;0;1;0;1;0;2;1;0;1;4
+46,0029;1;1;0;1;0;1;0;2;1;0;1;4
+46,0113;1;1;0;1;0;1;0;2;1;0;1;4
+46,0059;1;1;0;1;0;1;0;2;1;0;1;4
+46,002;1;1;0;1;0;1;0;2;1;0;1;4
+46,0034;1;1;0;1;0;1;0;2;1;0;1;4
+46,0056;1;1;0;1;0;1;0;2;1;0;1;4
+46,0042;1;1;0;1;0;1;0;2;1;0;1;4
+46,0046;1;1;0;1;0;1;0;2;1;0;1;4
+46,0031;1;1;0;1;0;1;0;2;1;0;1;4
+46,0054;1;1;0;1;0;1;0;2;1;0;1;4
+46,0047;1;1;0;1;0;1;0;2;1;0;1;4
+46,0047;1;1;0;1;0;1;0;2;1;0;1;4
+46,0055;1;1;0;1;0;1;0;2;1;0;1;4
+46,0021;1;1;0;1;0;1;0;2;1;0;1;4
+46,0077;1;1;0;1;0;1;0;2;1;0;1;4
+46,0066;1;1;0;1;0;1;0;2;1;0;1;4
+46,0057;1;1;0;1;0;1;0;2;1;0;1;4
+46,0069;1;1;0;1;0;1;0;2;1;0;1;4
+46,0063;1;1;0;1;0;1;0;2;1;0;1;4
+46,0066;1;1;0;1;0;1;0;2;1;0;1;4
+46,0062;1;1;0;1;0;1;0;2;1;0;1;4
+46,007;1;1;0;1;0;1;0;2;1;0;1;4
+46,0041;1;1;0;1;0;1;0;2;1;0;1;4
+46,0096;1;1;0;1;0;1;0;2;1;0;1;4
+46,008;1;1;0;1;0;1;0;2;1;0;1;4
+46,0056;1;1;0;1;0;1;0;2;1;0;1;4
+46,0061;1;1;0;1;0;1;0;2;1;0;1;4
+46,0082;1;1;0;1;0;1;0;2;1;0;1;4
+46,0035;1;1;0;1;0;1;0;2;1;0;1;4
+46,0098;1;1;0;1;0;1;0;2;1;0;1;4
+46,0046;1;1;0;1;0;1;0;2;1;0;1;4
+46,0054;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,004;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0065;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0081;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0091;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0054;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0068;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0057;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0074;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0083;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0059;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0032;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0025;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0032;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0066;1;1;0;1;0;1;0;2;1;0;0,651384;4
+46,0047;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,007;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0074;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0096;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0063;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0069;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0075;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0087;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0092;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0073;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0097;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0062;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0053;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0078;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0068;1;1;0;1;0;1;0;2;1;0;0,964451;4
+46,0096;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0086;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0064;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0084;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0065;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0111;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0062;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0081;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0104;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0072;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0167;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0076;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,011;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0064;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0114;1;1;0;1;0;1;0;1;1;0;0,859656;4
+46,0091;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0063;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0088;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0089;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,01;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0091;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0129;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0106;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0088;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0133;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0091;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0044;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0088;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0112;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,008;1;1;0;1;0;1;0;1;1;0;0,588928;4
+46,0073;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0063;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0082;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0086;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0091;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0096;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0106;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0111;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,008;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,01;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0079;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,009;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0092;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0104;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,009;1;1;0;1;0;1;0;1;1;0;0,517862;4
+46,0093;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0121;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,013;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0102;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0074;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0082;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0089;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0093;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0093;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0087;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0106;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0104;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0154;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0104;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0106;1;1;0;1;0;1;0;1;1;0;0,556779;4
+46,0104;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0097;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0085;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0106;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0106;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0123;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0129;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0087;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0091;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0134;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0112;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0107;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0095;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0094;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0116;1;1;0;1;0;1;0;4;1;0;0,986351;4
+46,0107;1;1;0;1;0;1;0;4;1;0;1;4
+46,0105;1;1;0;1;0;1;0;4;1;0;1;4
+46,0141;1;1;0;1;0;1;0;4;1;0;1;4
+46,0113;1;1;0;1;0;1;0;4;1;0;1;4
+46,0126;1;1;0;1;0;1;0;4;1;0;1;4
+46,0102;1;1;0;1;0;1;0;4;1;0;1;4
+46,0094;1;1;0;1;0;1;0;4;1;0;1;4
+46,0118;1;1;0;1;0;1;0;4;1;0;1;4
+46,0105;1;1;0;1;0;1;0;4;1;0;1;4
+46,011;1;1;0;1;0;1;0;4;1;0;1;4
+46,0109;1;1;0;1;0;1;0;4;1;0;1;4
+46,0111;1;1;0;1;0;1;0;4;1;0;1;4
+46,0132;1;1;0;1;0;1;0;4;1;0;1;4
+46,0132;1;1;0;1;0;1;0;4;1;0;1;4
+46,0107;1;1;0;1;0;1;0;4;1;0;1;4
+46,012;1;1;0;1;0;1;0;4;1;0;1;4
+46,0089;1;1;0;1;0;1;0;4;1;0;1;4
+46,0148;1;1;0;1;0;1;0;4;1;0;1;4
+46,0157;1;1;0;1;0;1;0;4;1;0;1;4
+46,0082;1;1;0;1;0;1;0;4;1;0;1;4
+46,0106;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,013;1;1;0;1;0;1;0;4;1;0;1;4
+46,0134;1;1;0;1;0;1;0;4;1;0;1;4
+46,0106;1;1;0;1;0;1;0;4;1;0;1;4
+46,0123;1;1;0;1;0;1;0;4;1;0;1;4
+46,0128;1;1;0;1;0;1;0;4;1;0;1;1
+46,012;1;1;0;1;0;1;0;4;1;0;1;1
+46,0121;1;1;0;1;0;1;0;4;1;0;1;1
+46,0095;1;1;0;1;0;1;0;4;1;0;1;1
+46,0116;1;1;0;1;0;1;0;4;1;0;1;1
+46,0102;1;1;0;1;0;1;0;4;1;0;1;1
+46,0128;1;1;0;1;0;1;0;4;1;0;1;1
+46,0122;1;1;0;1;0;1;0;4;1;0;1;1
+46,0135;1;1;0;1;0;1;0;4;1;0;1;1
+46,0119;1;1;0;1;0;1;0;4;1;0;1;1
+46,0134;1;1;0;1;0;1;0;4;1;0;1;1
+46,0125;1;1;0;1;0;1;0;4;1;0;1;1
+46,0122;1;1;0;1;0;1;0;4;1;0;1;1
+46,0124;1;1;0;1;0;1;0;4;1;0;1;1
+46,0129;1;1;0;1;0;1;0;4;1;0;1;1
+46,0129;1;1;0;1;0;1;0;4;1;0;1;1
+46,0119;1;1;0;1;0;1;0;4;1;0;1;1
+46,0112;1;1;0;1;0;1;0;4;1;0;1;1
+46,009;1;1;0;1;0;1;0;4;1;0;1;1
+46,0149;1;1;0;1;0;1;0;4;1;0;1;1
+46,0132;1;1;0;1;0;1;0;4;1;0;1;1
+46,0136;1;1;0;1;0;1;0;4;1;0;1;1
+46,0126;1;1;0;1;0;1;0;4;1;0;1;1
+46,0137;1;1;0;1;0;1;0;4;1;0;1;1
+46,0118;1;1;0;1;0;1;0;4;1;0;1;1
+46,0141;1;1;0;1;0;1;0;4;1;0;1;1
+46,0118;1;1;0;1;0;1;0;4;1;0;1;1
+46,0108;1;1;0;1;0;1;0;4;1;0;1;1
+46,0142;1;1;0;1;0;1;0;4;1;0;1;1
+46,0136;1;1;0;1;0;1;0;4;1;0;1;1
+46,0125;1;1;0;1;0;1;0;4;1;0;1;1
+46,0136;1;1;0;1;0;1;0;4;1;0;1;1
+46,0102;1;1;0;1;0;1;0;4;1;0;1;1
+46,012;1;1;0;1;0;1;0;4;1;0;1;1
+46,0125;1;1;0;1;0;1;0;4;1;0;1;1
+46,0118;1;1;0;1;0;1;0;4;1;0;1;1
+46,0138;1;1;0;1;0;1;0;4;1;0;1;1
+46,0096;1;1;0;1;0;1;0;4;1;0;1;1
+46,0094;1;1;0;1;0;1;0;4;1;0;1;1
+46,0113;1;1;0;1;0;1;0;4;1;0;1;1
+46,0099;1;1;0;1;0;1;0;4;1;0;1;1
+46,0131;1;1;0;1;0;1;0;4;1;0;1;1
+46,0122;1;1;0;1;0;1;0;4;1;0;1;1
+46,0145;1;1;0;1;0;1;0;4;1;0;1;1
+46,0102;1;1;0;1;0;1;0;4;1;0;1;1
+46,0155;1;1;0;1;0;1;0;4;1;0;1;1
+46,0142;1;1;0;1;0;1;0;4;1;0;1;1
+46,0134;1;1;0;1;0;1;0;4;1;0;1;1
+46,0112;1;1;0;1;0;1;0;4;1;0;1;1
+46,0121;1;1;0;1;0;1;0;4;1;0;1;1
+46,01;1;1;0;1;0;1;0;4;1;0;1;2
+46,0115;1;1;0;1;0;1;0;4;1;0;1;2
+46,0103;1;1;0;1;0;1;0;4;1;0;1;2
+46,0132;1;1;0;1;0;1;0;4;1;0;1;2
+46,0139;1;1;0;1;0;1;0;4;1;0;1;2
+46,0068;1;1;0;1;0;1;0;4;1;0;1;2
+46,011;1;1;0;1;0;1;0;4;1;0;1;2
+46,004;1;1;0;1;0;1;0;4;1;0;1;2
+46,0121;1;1;0;1;0;1;0;4;1;0;1;2
+46,011;1;1;0;1;0;1;0;4;1;0;1;2
+46,0109;1;1;0;1;0;1;0;4;1;0;1;2
+46,0122;1;1;0;1;0;1;0;4;1;0;1;2
+46,0135;1;1;0;1;0;1;0;4;1;0;1;2
+46,0079;1;1;0;1;0;1;0;4;1;0;1;2
+46,0105;1;1;0;1;0;1;0;4;1;0;1;2
+46,0145;1;1;0;1;0;1;0;4;1;0;1;2
+46,0126;1;1;0;1;0;1;0;4;1;0;1;2
+46,0133;1;1;0;1;0;1;0;4;1;0;1;2
+46,0149;1;1;0;1;0;1;0;4;1;0;1;2
+46,0105;1;1;0;1;0;1;0;4;1;0;1;2
+46,0122;1;1;0;1;0;1;0;4;1;0;1;2
+46,0101;1;1;0;1;0;1;0;4;1;0;1;2
+46,0156;1;1;0;1;0;1;0;4;1;0;1;2
+46,0086;1;1;0;1;0;1;0;4;1;0;1;2
+46,0098;1;1;0;1;0;1;0;4;1;0;1;2
+46,0116;1;1;0;1;0;1;0;4;1;0;1;2
+46,012;1;1;0;1;0;1;0;4;1;0;1;2
+46,0102;1;1;0;1;0;1;0;4;1;0;1;2
+46,0099;1;1;0;1;0;1;0;4;1;0;1;2
+46,0115;1;1;0;1;0;1;0;4;1;0;1;2
+46,0114;1;1;0;1;0;1;0;4;1;0;1;2
+46,0122;1;1;0;1;0;1;0;4;1;0;1;2
+46,0105;1;1;0;1;0;1;0;4;1;0;1;2
+46,005;1;1;0;1;0;1;0;4;1;0;1;2
+46,0103;1;1;0;1;0;1;0;4;1;0;1;2
+46,0094;1;1;0;1;0;1;0;4;1;0;1;2
+46,0104;1;1;0;1;0;1;0;4;1;0;1;2
+46,0111;1;1;0;1;0;1;0;4;1;0;1;2
+46,0124;1;1;0;1;0;1;0;4;1;0;1;2
+46,0093;1;1;0;1;0;1;0;4;1;0;1;2
+46,0101;1;1;0;1;0;1;0;4;1;0;1;2
+46,0112;1;1;0;1;0;1;0;4;1;0;1;2
+46,012;1;1;0;1;0;1;0;4;1;0;1;2
+46,0131;1;1;0;1;0;1;0;4;1;0;1;2
+46,0119;1;1;0;1;0;1;0;4;1;0;1;2
+46,0113;1;1;0;1;0;1;0;4;1;0;1;2
+46,0109;1;1;0;1;0;1;0;4;1;0;1;2
+46,0108;1;1;0;1;0;1;0;4;1;0;1;2
+46,0075;1;1;0;1;0;1;0;4;1;0;1;2
+46,0109;1;1;0;1;0;1;0;4;1;0;1;2
+46,0082;1;1;0;1;0;1;0;4;1;0;1;2
+46,0103;1;1;0;1;0;1;0;4;1;0;1;2
+46,0091;1;1;0;1;0;1;0;4;1;0;1;2
+46,0103;1;1;0;1;0;1;0;4;1;0;1;2
+46,008;1;1;0;1;0;1;0;4;1;0;1;2
+46,0125;1;1;0;1;0;1;0;4;1;0;1;2
+46,0115;1;1;0;1;0;1;0;4;1;0;1;2
+46,0111;1;1;0;1;0;1;0;4;1;0;1;2
+46,0112;1;1;0;1;0;1;0;4;1;0;1;2
+46,0116;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0081;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0112;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0116;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0146;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0104;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0117;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0107;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0108;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0138;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0091;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0096;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0089;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0098;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,0082;1;1;0;1;0;1;0;4;1;0;0,999887;2
+46,01;1;1;0;1;0;1;0;4;1;0;1;2
+46,0104;1;1;0;1;0;1;0;4;1;0;1;2
+46,0116;1;1;0;1;0;1;0;4;1;0;1;2
+46,0105;1;1;0;1;0;1;0;4;1;0;1;2
+46,0106;1;1;0;1;0;1;0;4;1;0;1;2
+46,0097;1;1;0;1;0;1;0;4;1;0;1;2
+46,0081;1;1;0;1;0;1;0;4;1;0;1;2
+46,0131;1;1;0;1;0;1;0;4;1;0;1;2
+46,0066;1;1;0;1;0;1;0;4;1;0;1;2
+46,0126;1;1;0;1;0;1;0;4;1;0;1;2
+46,0133;1;1;0;1;0;1;0;4;1;0;1;2
+46,0091;1;1;0;1;0;1;0;4;1;0;1;2
+46,0145;1;1;0;1;0;1;0;4;1;0;1;2
+46,0118;1;1;0;1;0;1;0;4;1;0;1;2
+46,01;1;1;0;1;0;1;0;4;1;0;1;2
+46,0101;1;1;0;1;0;1;0;4;1;0;1;2
+46,0119;1;1;0;1;0;1;0;4;1;0;1;2
+46,0102;1;1;0;1;0;1;0;4;1;0;1;2
+46,0119;1;1;0;1;0;1;0;4;1;0;1;2
+46,0114;1;1;0;1;0;1;0;4;1;0;1;2
+46,0108;1;1;0;1;0;1;0;4;1;0;1;2
+46,0098;1;1;0;1;0;1;0;4;1;0;1;2
+46,0099;1;1;0;1;0;1;0;4;1;0;1;2
+46,0102;1;1;0;1;0;1;0;4;1;0;1;2
+46,0122;1;1;0;1;0;1;0;4;1;0;1;2
+46,0119;1;1;0;1;0;1;0;4;1;0;1;2
+46,0087;1;1;0;1;0;1;0;4;1;0;1;2
+46,0096;1;1;0;1;0;1;0;4;1;0;1;2
+46,0085;1;1;0;1;0;1;0;4;1;0;1;2
+46,0103;1;1;0;1;0;1;0;4;1;0;1;2
+46,0076;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0062;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0084;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0109;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0084;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0084;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0089;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0094;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0071;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0081;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0077;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0106;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0103;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0089;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0099;1;1;0;1;0;1;0;4;1;0;0,993119;2
+46,0086;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0078;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0087;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0091;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0104;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0111;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0105;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0096;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0111;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0086;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0107;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0072;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0042;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0112;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0097;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0094;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0086;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0108;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0087;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0088;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0109;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0103;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0102;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0081;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0102;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0104;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,01;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0093;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0033;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,0105;1;1;0;1;0;1;0;4;1;0;0,532899;2
+46,009;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0094;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0055;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0086;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0085;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,007;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0098;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0092;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0104;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,006;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0096;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0069;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0082;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,008;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0108;1;1;0;1;0;1;0;4;1;0;0,519363;2
+46,0078;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0077;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0074;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0112;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0089;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0105;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0098;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0065;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0082;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0057;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0088;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0063;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0101;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0134;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,009;1;1;0;1;0;1;0;1;1;0;0,869811;2
+46,0082;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0077;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0079;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0074;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0099;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0059;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0053;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0065;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,005;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0078;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0054;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0062;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0107;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0126;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0098;1;1;0;1;0;1;0;1;1;0;0,688759;2
+46,0094;1;1;0;1;0;1;0;1;1;0;0,923957;2
+46,007;1;1;0;1;0;1;0;1;1;0;0,923957;2
+46,008;1;1;0;1;0;1;0;1;1;0;0,923957;2
+46,0067;1;1;0;1;0;1;0;1;1;0;0,923957;2
+46,0072;1;1;0;1;0;1;0;1;1;0;0,923957;2
+46,0108;1;1;0;1;0;1;0;1;1;0;0,923957;2
+46,0086;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0062;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0067;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,923957;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0103;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0073;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0107;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0061;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0092;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0068;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0055;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0046;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,88673;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0083;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0095;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0059;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0126;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0073;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,006;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0034;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0079;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0103;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0107;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0061;1;1;0;1;0;1;0;1;1;0;0,967953;1
+46,0065;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0112;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0047;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0068;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0044;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0118;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0104;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0102;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,720899;1
+46,0102;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0092;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,009;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0095;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0149;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,01;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,0039;1;1;0;1;0;1;0;1;1;0;0,869811;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0065;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,006;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0045;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,009;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0092;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0097;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0069;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,009;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0109;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,0069;1;1;0;1;0;1;0;1;1;0;0,732752;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0098;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0112;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0099;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0089;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0067;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0054;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0081;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0093;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0095;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,917189;1
+46,0057;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0063;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0069;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0094;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,012;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0046;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0087;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,007;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0071;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0077;1;1;0;1;0;1;0;1;1;0;0,91719;1
+46,0094;1;1;0;1;0;1;0;1;1;0;1;1
+46,0091;1;1;0;1;0;1;0;1;1;0;1;1
+46,0069;1;1;0;1;0;1;0;1;1;0;1;1
+46,01;1;1;0;1;0;1;0;1;1;0;1;1
+46,0062;1;1;0;1;0;1;0;1;1;0;1;1
+46,008;1;1;0;1;0;1;0;1;1;0;1;1
+46,0086;1;1;0;1;0;1;0;1;1;0;1;1
+46,009;1;1;0;1;0;1;0;1;1;0;1;1
+46,0073;1;1;0;1;0;1;0;1;1;0;1;1
+46,0093;1;1;0;1;0;1;0;1;1;0;1;1
+46,0076;1;1;0;1;0;1;0;1;1;0;1;1
+46,0078;1;1;0;1;0;1;0;1;1;0;1;1
+46,008;1;1;0;1;0;1;0;1;1;0;1;1
+46,008;1;1;0;1;0;1;0;1;1;0;1;1
+46,009;1;1;0;1;0;1;0;1;1;0;1;1
+46,0069;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0065;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0049;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0121;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0056;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0091;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,006;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0067;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0092;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0066;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,009;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0078;1;1;0;1;0;1;0;1;1;0;0,984874;1
+46,0086;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0074;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0043;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0064;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0052;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0084;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,011;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0072;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0082;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0067;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0055;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0075;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0085;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,0093;1;1;0;1;0;1;0;1;1;0;0,83935;1
+46,008;1;1;0;1;0;1;0;1;1;0;0,766587;1
+46,0068;1;1;0;1;0;1;0;1;1;0;0,766587;1
+46,0076;1;1;0;1;0;1;0;1;1;0;0,766587;1
+46,0067;1;1;0;1;0;1;0;1;1;0;0,766587;1
+46,0109;1;1;0;1;0;1;0;1;1;0;0,766587;1
diff --git a/include/rosa/agent/SignalState.hpp b/include/rosa/agent/SignalState.hpp
index 76b4d8e..48fd2e6 100644
--- a/include/rosa/agent/SignalState.hpp
+++ b/include/rosa/agent/SignalState.hpp
@@ -1,649 +1,662 @@
//===-- rosa/agent/SignalState.hpp ------------------------------*- C++ -*-===//
//
// The RoSA Framework
//
//===----------------------------------------------------------------------===//
///
/// \file rosa/agent/SignalState.hpp
///
/// \author Maximilian Götzinger (maximilian.goetzinger@tuwien.ac.at)
///
/// \date 2019
///
/// \brief Definition of *signal state* *functionality*.
///
//===----------------------------------------------------------------------===//
#ifndef ROSA_AGENT_SIGNALSTATE_HPP
#define ROSA_AGENT_SIGNALSTATE_HPP
#include "rosa/agent/FunctionAbstractions.hpp"
#include "rosa/agent/Functionality.h"
#include "rosa/agent/History.hpp"
#include "rosa/agent/State.hpp"
#include "rosa/support/math.hpp"
namespace rosa {
namespace agent {
/// Signal properties defining the properties of the signal which is monitored
/// by \c rosa::agent::SignalStateDetector and is saved in \c
/// rosa::agent::SignalStateInformation.
enum SignalProperties : uint8_t {
INPUT = 0, ///< The signal is an input signal
OUTPUT = 1 ///< The signal is an output signal
};
/// TODO: write description
template <typename CONFDATATYPE>
struct SignalStateInformation : StateInformation<CONFDATATYPE> {
// Make sure the actual type arguments are matching our expectations.
STATIC_ASSERT((std::is_arithmetic<CONFDATATYPE>::value),
"confidence type is not to arithmetic");
/// ConfidenceOfMatchingState is the confidence how good the new sample
/// matches the state.
CONFDATATYPE ConfidenceOfMatchingState;
/// ConfidenceOfMatchingState is the confidence how bad the new sample
/// matches the state.
CONFDATATYPE ConfidenceOfMismatchingState;
/// The SignalProperty saves whether the monitored signal is an input our
/// output signal.
SignalProperties SignalProperty;
/// The SignalStateIsValid saves the number of samples which have been
/// inserted into the state after entering it.
uint32_t NumberOfInsertedSamplesAfterEntrance;
public:
SignalStateInformation(unsigned int SignalStateID,
SignalProperties _SignalProperty) {
this->StateID = SignalStateID;
this->SignalProperty = _SignalProperty;
this->StateCondition = StateConditions::UNKNOWN;
this->NumberOfInsertedSamplesAfterEntrance = 0;
this->StateIsValid = false;
this->StateJustGotValid = false;
this->StateIsValidAfterReentrance = false;
this->ConfidenceStateIsValid = 0;
this->ConfidenceStateIsInvalid = 0;
this->ConfidenceStateIsStable = 0;
this->ConfidenceStateIsDrifting = 0;
}
SignalStateInformation() = default;
};
/// \tparam INDATATYPE type of input data, \tparam CONFDATATYPE type of
/// data in that the confidence values are given, \tparam PROCDATATYPE type of
/// the relative distance and the type of data in which DABs are saved.
template <typename INDATATYPE, typename CONFDATATYPE, typename PROCDATATYPE>
class SignalState : public Functionality {
// Make sure the actual type arguments are matching our expectations.
STATIC_ASSERT((std::is_arithmetic<INDATATYPE>::value),
"input data type not arithmetic");
STATIC_ASSERT((std::is_arithmetic<CONFDATATYPE>::value),
"confidence data type is not to arithmetic");
STATIC_ASSERT(
(std::is_arithmetic<PROCDATATYPE>::value),
"process data type (DAB and Relative Distance) is not to arithmetic");
public:
// For the convinience to write a shorter data type name
using PartFuncReference = PartialFunction<INDATATYPE, CONFDATATYPE> &;
// using PartFuncReference2 = ;
using StepFuncReference = StepFunction<INDATATYPE, CONFDATATYPE> &;
private:
/// SignalStateInfo is a struct of SignalStateInformation that contains
/// information about the current signal state.
SignalStateInformation<CONFDATATYPE> SignalStateInfo;
/// The FuzzyFunctionSampleMatches is the fuzzy function that gives the
/// confidence how good the new sample matches another sample in the sample
/// history.
PartFuncReference FuzzyFunctionSampleMatches;
/// The FuzzyFunctionSampleMismatches is the fuzzy function that gives the
/// confidence how bad the new sample matches another sample in the sample
/// history.
PartFuncReference FuzzyFunctionSampleMismatches;
/// The FuzzyFunctionNumOfSamplesMatches is the fuzzy function that gives the
/// confidence how many samples from the sampe history match the new sample.
StepFuncReference FuzzyFunctionNumOfSamplesMatches;
/// The FuzzyFunctionNumOfSamplesMismatches is the fuzzy function that gives
/// the confidence how many samples from the sampe history mismatch the new
/// sample.
StepFuncReference FuzzyFunctionNumOfSamplesMismatches;
/// The FuzzyFunctionSampleValid is the fuzzy function that gives the
/// confidence how good one matches another sample in the sample
/// history. This is done to evaluate whether a state is valid.
PartFuncReference FuzzyFunctionSampleValid;
/// The FuzzyFunctionSampleInvalid is the fuzzy function that gives the
/// confidence how bad one sample matches another sample in the sample
/// history. This is done to evaluate whether a state is invalid.
PartFuncReference FuzzyFunctionSampleInvalid;
/// The FuzzyFunctionNumOfSamplesValid is the fuzzy function that gives the
/// confidence how many samples from the sample history match another sample.
/// This is done to evaluate whether a state is valid.
StepFuncReference FuzzyFunctionNumOfSamplesValid;
/// The FuzzyFunctionNumOfSamplesInvalid is the fuzzy function that gives
/// the confidence how many samples from the sample history mismatch another
/// sample. This is done to evaluate whether a state is invalid.
StepFuncReference FuzzyFunctionNumOfSamplesInvalid;
/// The FuzzyFunctionSignalIsDrifting is the fuzzy function that gives the
/// confidence how likely it is that the signal (resp. the state of a signal)
/// is drifting.
PartFuncReference FuzzyFunctionSignalIsDrifting;
/// The FuzzyFunctionSignalIsStable is the fuzzy function that gives the
/// confidence how likely it is that the signal (resp. the state of a signal)
/// is stable (not drifting).
PartFuncReference FuzzyFunctionSignalIsStable;
/// TODO: description
// PartialFunction<uint32_t, float> &FuzzyFunctionSignalConditionLookBack;
/// TODO: description
// PartialFunction<uint32_t, float>
// &FuzzyFunctionSignalConditionHistoryDesicion;
/// TODO: description
// uint32_t DriftLookbackRange;
/// SampleHistory is a history in that the last sample values are stored.
DynamicLengthHistory<INDATATYPE, HistoryPolicy::FIFO> SampleHistory;
/// DAB is a (usually) small history of the last sample values of which a
/// average is calculated if the DAB is full.
DynamicLengthHistory<INDATATYPE, HistoryPolicy::SRWF> DAB;
/// DABHistory is a history in that the last DABs (to be exact, the averages
/// of the last DABs) are stored.
DynamicLengthHistory<PROCDATATYPE, HistoryPolicy::LIFO> DABHistory;
/// LowestConfidenceMatchingHistory is a history in that the lowest confidence
/// for the current sample matches all history samples are saved.
DynamicLengthHistory<INDATATYPE, HistoryPolicy::FIFO>
LowestConfidenceMatchingHistory;
/// HighestConfidenceMatchingHistory is a history in that the highest
/// confidence for the current sample matches all history samples are saved.
DynamicLengthHistory<INDATATYPE, HistoryPolicy::FIFO>
HighestConfidenceMismatchingHistory;
/// TempConfidenceMatching is the confidence how good a sample matches the
/// state. However, the value of this variable is only needed temporarly.
CONFDATATYPE TempConfidenceMatching = 0;
/// TempConfidenceMatching is the confidence how bad a sample matches the
/// state. However, the value of this variable is only needed temporarly.
CONFDATATYPE TempConfidenceMismatching = 0;
public:
/// Creates an instance by setting all parameters
/// \param SignalStateID The Id of the SignalStateinfo \c
/// SignalStateInformation.
///
/// \param FuzzyFunctionSampleMatches The FuzzyFunctionSampleMatches is the
/// fuzzy function that gives the confidence how good the new sample matches
/// another sample in the sample history.
///
/// \param FuzzyFunctionSampleMismatches The FuzzyFunctionSampleMismatches is
/// the fuzzy function that gives the confidence how bad the new sample
/// matches another sample in the sample history.
///
/// \param FuzzyFunctionNumOfSamplesMatches The
/// FuzzyFunctionNumOfSamplesMatches is the fuzzy function that gives the
/// confidence how many samples from the sampe history match the new sample.
///
/// \param FuzzyFunctionNumOfSamplesMismatches The
/// FuzzyFunctionNumOfSamplesMismatches is the fuzzy function that gives the
/// confidence how many samples from the sampe history mismatch the new
/// sample.
///
/// \param FuzzyFunctionSignalIsDrifting The FuzzyFunctionSignalIsDrifting is
/// the fuzzy function that gives the confidence how likely it is that the
/// signal (resp. the state of a signal) is drifting.
///
/// \param FuzzyFunctionSignalIsStable The FuzzyFunctionSignalIsStable is the
/// fuzzy function that gives the confidence how likely it is that the signal
/// (resp. the state of a signal) is stable (not drifting).
///
/// \param SampleHistorySize Size of the Sample History \c
/// DynamicLengthHistory . SampleHistory is a history in that the last sample
/// values are stored.
///
/// \param DABSize Size of DAB \c DynamicLengthHistory . DAB is a (usually)
/// small history of the last sample values of which a average is calculated
/// if the DAB is full.
///
/// \param DABHistorySize Size of the DABHistory \c DynamicLengthHistory .
/// DABHistory is a history in that the last DABs (to be exact, the averages
/// of the last DABs) are stored.
///
SignalState(
uint32_t SignalStateID, SignalProperties SignalProperty,
uint32_t SampleHistorySize, uint32_t DABSize, uint32_t DABHistorySize,
PartFuncReference FuzzyFunctionSampleMatches,
PartFuncReference FuzzyFunctionSampleMismatches,
StepFuncReference FuzzyFunctionNumOfSamplesMatches,
StepFuncReference FuzzyFunctionNumOfSamplesMismatches,
PartFuncReference FuzzyFunctionSampleValid,
PartFuncReference FuzzyFunctionSampleInvalid,
StepFuncReference FuzzyFunctionNumOfSamplesValid,
StepFuncReference FuzzyFunctionNumOfSamplesInvalid,
PartFuncReference FuzzyFunctionSignalIsDrifting,
PartFuncReference FuzzyFunctionSignalIsStable //,
// PartialFunction<uint32_t, float> &FuzzyFunctionSignalConditionLookBack,
// PartialFunction<uint32_t, float>
// &FuzzyFunctionSignalConditionHistoryDesicion,
// uint32_t DriftLookbackRange
) noexcept
: SignalStateInfo{SignalStateID, SignalProperty},
FuzzyFunctionSampleMatches(FuzzyFunctionSampleMatches),
FuzzyFunctionSampleMismatches(FuzzyFunctionSampleMismatches),
FuzzyFunctionNumOfSamplesMatches(FuzzyFunctionNumOfSamplesMatches),
FuzzyFunctionNumOfSamplesMismatches(
FuzzyFunctionNumOfSamplesMismatches),
FuzzyFunctionSampleValid(FuzzyFunctionSampleValid),
FuzzyFunctionSampleInvalid(FuzzyFunctionSampleInvalid),
FuzzyFunctionNumOfSamplesValid(FuzzyFunctionNumOfSamplesValid),
FuzzyFunctionNumOfSamplesInvalid(FuzzyFunctionNumOfSamplesInvalid),
FuzzyFunctionSignalIsDrifting(FuzzyFunctionSignalIsDrifting),
FuzzyFunctionSignalIsStable(FuzzyFunctionSignalIsStable),
// FuzzyFunctionSignalConditionLookBack(
// FuzzyFunctionSignalConditionLookBack),
// FuzzyFunctionSignalConditionHistoryDesicion(
// FuzzyFunctionSignalConditionHistoryDesicion),
// DriftLookbackRange(DriftLookbackRange),
SampleHistory(SampleHistorySize), DAB(DABSize),
DABHistory(DABHistorySize),
LowestConfidenceMatchingHistory(SampleHistorySize),
HighestConfidenceMismatchingHistory(SampleHistorySize) {}
/// Destroys \p this object.
~SignalState(void) = default;
void leaveSignalState(void) noexcept {
DAB.clear();
SignalStateInfo.NumberOfInsertedSamplesAfterEntrance = 0;
SignalStateInfo.StateIsValidAfterReentrance = false;
}
SignalStateInformation<CONFDATATYPE>
insertSample(INDATATYPE Sample) noexcept {
SignalStateInfo.NumberOfInsertedSamplesAfterEntrance++;
validateSignalState(Sample);
SampleHistory.addEntry(Sample);
DAB.addEntry(Sample);
if (DAB.full()) {
// Experiment -> exchanged next line with the folowings
// PROCDATATYPE AvgOfDAB = DAB.template average<PROCDATATYPE>();
// TODO: make soring inside of median
// TODO: make better outlier removal!
std::sort(DAB.begin(), DAB.end());
// DAB.erase(DAB.begin(), DAB.begin() + 1);
// DAB.erase(DAB.end() - 1, DAB.end());
// PROCDATATYPE AvgOfDAB = DAB.template median<PROCDATATYPE>();
PROCDATATYPE AvgOfDAB = DAB.template average<PROCDATATYPE>();
DABHistory.addEntry(AvgOfDAB);
DAB.clear();
}
FuzzyFunctionNumOfSamplesMatches.setRightLimit(
static_cast<INDATATYPE>(SampleHistory.numberOfEntries()));
FuzzyFunctionNumOfSamplesMismatches.setRightLimit(
static_cast<INDATATYPE>(SampleHistory.numberOfEntries()));
checkSignalStability();
SignalStateInfo.ConfidenceOfMatchingState = TempConfidenceMatching;
SignalStateInfo.ConfidenceOfMismatchingState = TempConfidenceMismatching;
return SignalStateInfo;
}
/// Gives the confidence how likely the new sample matches the signal state.
///
/// \param Sample is the actual sample of the observed signal.
///
/// \return the confidence of the new sample is matching the signal state.
CONFDATATYPE
confidenceSampleMatchesSignalState(INDATATYPE Sample) noexcept {
CONFDATATYPE ConfidenceOfBestCase = 0;
DynamicLengthHistory<PROCDATATYPE, HistoryPolicy::FIFO>
RelativeDistanceHistory(SampleHistory.maxLength());
// Calculate distances to all history samples.
for (auto &HistorySample : SampleHistory) {
PROCDATATYPE RelativeDistance =
relativeDistance<INDATATYPE, PROCDATATYPE>(Sample, HistorySample);
RelativeDistanceHistory.addEntry(RelativeDistance);
}
// Sort all calculated distances so that the lowest distance (will get the
// highest confidence) is at the beginning.
RelativeDistanceHistory.sortAscending();
CONFDATATYPE ConfidenceOfWorstFittingSample = 1;
// Case 1 means that one (the best fitting) sample of the history is
// compared with the new sample. Case 2 means the two best history samples
// are compared with the new sample. And so on.
// TODO (future): to accelerate . don't start with 1 start with some higher
// number because a low number (i guess lower than 5) will definetely lead
// to a low confidence. except the history is not full.
// Case 1 means that one (the best fitting) sample of the history is
// compared with the new sample. Case 2 means the two best history samples
// are compared with the new sample. And so on.
for (uint32_t Case = 0; Case < RelativeDistanceHistory.numberOfEntries();
Case++) {
CONFDATATYPE ConfidenceFromRelativeDistance;
if (std::isinf(RelativeDistanceHistory[Case])) {
// TODO (future): if fuzzy is defined in a way that infinity is not 0 it
// would be a problem.
ConfidenceFromRelativeDistance = 0;
} else {
ConfidenceFromRelativeDistance =
FuzzyFunctionSampleMatches(RelativeDistanceHistory[Case]);
}
ConfidenceOfWorstFittingSample = fuzzyAND(ConfidenceOfWorstFittingSample,
ConfidenceFromRelativeDistance);
ConfidenceOfBestCase =
fuzzyOR(ConfidenceOfBestCase,
fuzzyAND(ConfidenceOfWorstFittingSample,
FuzzyFunctionNumOfSamplesMatches(
static_cast<CONFDATATYPE>(Case) + 1)));
}
TempConfidenceMatching = ConfidenceOfBestCase;
return ConfidenceOfBestCase;
}
/// Gives the confidence how likely the new sample mismatches the signal
/// state.
///
/// \param Sample is the actual sample of the observed signal.
///
/// \return the confidence of the new sample is mismatching the signal state.
CONFDATATYPE
confidenceSampleMismatchesSignalState(INDATATYPE Sample) noexcept {
float ConfidenceOfWorstCase = 1;
DynamicLengthHistory<PROCDATATYPE, HistoryPolicy::FIFO>
RelativeDistanceHistory(SampleHistory.maxLength());
// Calculate distances to all history samples.
for (auto &HistorySample : SampleHistory) {
RelativeDistanceHistory.addEntry(
relativeDistance<INDATATYPE, PROCDATATYPE>(Sample, HistorySample));
}
// Sort all calculated distances so that the highest distance (will get the
// lowest confidence) is at the beginning.
RelativeDistanceHistory.sortDescending();
CONFDATATYPE ConfidenceOfBestFittingSample = 0;
// TODO (future): to accelerate -> don't go until end. Confidences will only
// get higher. See comment in "CONFDATATYPE
// confidenceSampleMatchesSignalState(INDATATYPE Sample)".
// Case 1 means that one (the worst fitting) sample of the history is
// compared with the new sample. Case 2 means the two worst history samples
// are compared with the new sample. And so on.
for (uint32_t Case = 0; Case < RelativeDistanceHistory.numberOfEntries();
Case++) {
CONFDATATYPE ConfidenceFromRelativeDistance;
if (std::isinf(RelativeDistanceHistory[Case])) {
ConfidenceFromRelativeDistance = 1;
} else {
ConfidenceFromRelativeDistance =
FuzzyFunctionSampleMismatches(RelativeDistanceHistory[Case]);
}
ConfidenceOfBestFittingSample = fuzzyOR(ConfidenceOfBestFittingSample,
ConfidenceFromRelativeDistance);
ConfidenceOfWorstCase =
fuzzyAND(ConfidenceOfWorstCase,
fuzzyOR(ConfidenceOfBestFittingSample,
FuzzyFunctionNumOfSamplesMismatches(
static_cast<CONFDATATYPE>(Case) + 1)));
}
TempConfidenceMismatching = ConfidenceOfWorstCase;
return ConfidenceOfWorstCase;
}
/// Gives information about the current signal state.
///
/// \return a struct SignalStateInformation that contains information about
/// the current signal state.
SignalStateInformation<CONFDATATYPE> signalStateInformation(void) noexcept {
return SignalStateInfo;
}
private:
void validateSignalState(INDATATYPE Sample) {
// TODO (future): WorstConfidenceDistance and BestConfidenceDistance could
// be set already in "CONFDATATYPE
// confidenceSampleMatchesSignalState(INDATATYPE Sample)" and "CONFDATATYPE
// confidenceSampleMismatchesSignalState(INDATATYPE Sample)" when the new
// sample is compared to all history samples. This would save a lot time
// because the comparisons are done only once. However, it has to be asured
// that the these two functions are called before the insertation, and the
// FuzzyFunctions for validation and matching have to be the same!
CONFDATATYPE LowestConfidenceMatching = 1;
CONFDATATYPE HighestConfidenceMismatching = 0;
for (auto &HistorySample : SampleHistory) {
// TODO (future): think about using different fuzzy functions for
// validation and matching.
LowestConfidenceMatching = fuzzyAND(
LowestConfidenceMatching,
FuzzyFunctionSampleMatches(relativeDistance<INDATATYPE, PROCDATATYPE>(
Sample, HistorySample)));
HighestConfidenceMismatching =
fuzzyOR(HighestConfidenceMismatching,
FuzzyFunctionSampleMismatches(
relativeDistance<INDATATYPE, PROCDATATYPE>(
Sample, HistorySample)));
}
LowestConfidenceMatchingHistory.addEntry(LowestConfidenceMatching);
HighestConfidenceMismatchingHistory.addEntry(HighestConfidenceMismatching);
LowestConfidenceMatching = LowestConfidenceMatchingHistory.lowestEntry();
HighestConfidenceMismatching =
HighestConfidenceMismatchingHistory.highestEntry();
SignalStateInfo.ConfidenceStateIsValid =
fuzzyAND(LowestConfidenceMatching,
FuzzyFunctionNumOfSamplesValid(static_cast<INDATATYPE>(
SignalStateInfo.NumberOfInsertedSamplesAfterEntrance)));
SignalStateInfo.ConfidenceStateIsInvalid =
fuzzyOR(HighestConfidenceMismatching,
FuzzyFunctionNumOfSamplesInvalid(static_cast<INDATATYPE>(
SignalStateInfo.NumberOfInsertedSamplesAfterEntrance)));
if (SignalStateInfo.ConfidenceStateIsValid >
SignalStateInfo.ConfidenceStateIsInvalid) {
if (SignalStateInfo.StateIsValid) {
SignalStateInfo.StateJustGotValid = false;
} else {
SignalStateInfo.StateJustGotValid = true;
}
SignalStateInfo.StateIsValid = true;
SignalStateInfo.StateIsValidAfterReentrance = true;
}
}
void checkSignalStability(void) {
/*
std::cout << "LookbackTest: " << std::endl;
for (unsigned int t = 1; t <= DriftLookbackRange + 5; t++) {
std::cout << "t=" << t
<< " -> c=" << FuzzyFunctionSignalConditionLookBack(t)
<< std::endl;
//(*FuzzyFunctionTimeSystemFunctioning)(
// static_cast<INDATATYPE>(TimeOfDisparity));
}
getchar();
*/
SignalStateInfo.ConfidenceStateIsStable = 0;
SignalStateInfo.ConfidenceStateIsDrifting = 0;
/*
std::cout << "ConfidenceStateIsStable (before): "
<< SignalStateInfo.ConfidenceStateIsStable << std::endl;
std::cout << "ConfidenceStateIsDrifting (before): "
<< SignalStateInfo.ConfidenceStateIsDrifting << std::endl;
*/
+ bool DriftDirectionIsUp = true;
+
if (DABHistory.numberOfEntries() >= 2) {
+
+ INDATATYPE CurrentDAB = DABHistory[DABHistory.numberOfEntries() - 1];
+ INDATATYPE DAB2Compare = DABHistory[0];
+
/*
+ * TODO HERE: calculating up_down
// EXPERIMENTING
for (unsigned int t = 1;
t <= DriftLookbackRange && t < DABHistory.numberOfEntries();
t++) {
// AND
SignalStateInfo.ConfidenceStateIsStable = fuzzyOR(
SignalStateInfo.ConfidenceStateIsStable,
fuzzyAND(
FuzzyFunctionSignalIsStable(
relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1],
+ CurrentDAB,
DABHistory[DABHistory.numberOfEntries() - (t +
1)])), FuzzyFunctionSignalConditionLookBack(t)));
SignalStateInfo.ConfidenceStateIsDrifting = fuzzyOR(
SignalStateInfo.ConfidenceStateIsDrifting,
fuzzyAND(
FuzzyFunctionSignalIsDrifting(
relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1],
+ CurrentDAB,
DABHistory[DABHistory.numberOfEntries() - (t +
1)])), FuzzyFunctionSignalConditionLookBack(t))); */
/*
std::cout
<< "t=" << t
<< ", DABact=" << DABHistory[DABHistory.numberOfEntries() -
1]
<< ", DAB_t-" << t << "="
<< DABHistory[DABHistory.numberOfEntries() - (t + 1)]
<< " / FuzzyStb="
<< FuzzyFunctionSignalIsStable(
relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1],
+ CurrentDAB,
DABHistory[DABHistory.numberOfEntries() - (t +
1)]))
<< ", FuzzyDft="
<< FuzzyFunctionSignalIsDrifting(
relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1],
+ CurrentDAB,
DABHistory[DABHistory.numberOfEntries() - (t +
1)]))
<< ", FuzzyLB=" << FuzzyFunctionSignalConditionLookBack(t)
<< std::endl;
*/
// MULTI
/*
SignalStateInfo.ConfidenceStateIsStable = fuzzyOR(
SignalStateInfo.ConfidenceStateIsStable,
FuzzyFunctionSignalIsStable(
relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1],
+ CurrentDAB,
DABHistory[DABHistory.numberOfEntries() - (t + 1)]))
* FuzzyFunctionSignalConditionLookBack(t));
SignalStateInfo.ConfidenceStateIsDrifting = fuzzyOR(
SignalStateInfo.ConfidenceStateIsDrifting,
FuzzyFunctionSignalIsDrifting(
relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1],
+ CurrentDAB,
DABHistory[DABHistory.numberOfEntries() - (t + 1)]))
* FuzzyFunctionSignalConditionLookBack(t));
*/
// std::cout << "t = " << t << ", HistLength = " <<
// DABHistory.numberOfEntries() << std::endl;
//}
// EXPERIMENTING -> following outcommented block was the published code
SignalStateInfo.ConfidenceStateIsStable = FuzzyFunctionSignalIsStable(
- relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1], DABHistory[0]));
+ relativeDistance<INDATATYPE, PROCDATATYPE>(CurrentDAB, DAB2Compare));
SignalStateInfo.ConfidenceStateIsDrifting = FuzzyFunctionSignalIsDrifting(
- relativeDistance<INDATATYPE, PROCDATATYPE>(
- DABHistory[DABHistory.numberOfEntries() - 1], DABHistory[0]));
+ relativeDistance<INDATATYPE, PROCDATATYPE>(CurrentDAB, DAB2Compare));
+
+ // TODO: think about a better solution with different confidences (stable,
+ // up, down, ...)
+ DriftDirectionIsUp = CurrentDAB > DAB2Compare;
}
/*
std::cout << "ConfidenceStateIsStable (after): "
<< SignalStateInfo.ConfidenceStateIsStable << std::endl;
std::cout << "ConfidenceStateIsDrifting (after): "
<< SignalStateInfo.ConfidenceStateIsDrifting << std::endl;
*/
/*
else {
// Initializing the following variables because (at this moment) we do not
// know if the signal is stable or drifting.
SignalStateInfo.ConfidenceStateIsStable = 0;
SignalStateInfo.ConfidenceStateIsDrifting = 0;
}
*/
if (SignalStateInfo.ConfidenceStateIsStable >
SignalStateInfo.ConfidenceStateIsDrifting) {
SignalStateInfo.StateCondition = StateConditions::STABLE;
} else if (SignalStateInfo.ConfidenceStateIsStable <
SignalStateInfo.ConfidenceStateIsDrifting) {
- SignalStateInfo.StateCondition = StateConditions::DRIFTING;
+
+ if (DriftDirectionIsUp) {
+ SignalStateInfo.StateCondition = StateConditions::DRIFTING_UP;
+ } else {
+ SignalStateInfo.StateCondition = StateConditions::DRIFTING_DN;
+ }
+ /*
+ SignalStateInfo.StateCondition = StateConditions::DRIFTING;
+ */
} else {
SignalStateInfo.StateCondition = StateConditions::UNKNOWN;
- /*
- if (SignalStateInfo.ConfidenceStateIsStable != 0)
- getchar();
- */
}
}
};
} // End namespace agent
} // End namespace rosa
#endif // ROSA_AGENT_SIGNALSTATE_HPP
diff --git a/include/rosa/agent/State.hpp b/include/rosa/agent/State.hpp
index 12512ff..0026920 100644
--- a/include/rosa/agent/State.hpp
+++ b/include/rosa/agent/State.hpp
@@ -1,100 +1,96 @@
//===-- rosa/agent/State.hpp ------------------------------------*- C++ -*-===//
//
// The RoSA Framework
//
// Distributed under the terms and conditions of the Boost Software License 1.0.
// See accompanying file LICENSE.
//
// If you did not receive a copy of the license file, see
// http://www.boost.org/LICENSE_1_0.txt.
//
//===----------------------------------------------------------------------===//
///
/// \file rosa/agent/State.hpp
///
/// \author Maximilian Götzinger (maximilian.goetzinger@tuwien.ac.at)
///
/// \date 2019
///
/// \brief Definition of *state* *functionality*.
///
//===----------------------------------------------------------------------===//
#ifndef ROSA_AGENT_STATE_HPP
#define ROSA_AGENT_STATE_HPP
#include "rosa/agent/Functionality.h"
//#include "rosa/agent/FunctionAbstractions.hpp"
//#include "rosa/agent/History.hpp"
#include "rosa/support/debug.hpp"
#include <stdint.h>
//#include <vector>
namespace rosa {
namespace agent {
/// State conditions defining how the condition of a \c rosa::agent::State is
/// saved in \c rosa::agent::StateInformation.
enum StateConditions : uint8_t {
- /*
-UNKNOWN = 0, ///< The state is unknown
-STABLE = 1, ///< The state is stable
-DRIFTING_UP = 2, ///< The state is drifting up
-DRIFTING_DN = 3, ///< The state is drifting down
-MALFUNCTIONING = 4 ///< Malfunction
-*/
+
UNKNOWN = 0, ///< The state is unknown
STABLE = 1, ///< The state is stable
- DRIFTING = 2, ///< The state is drifting
- MALFUNCTIONING = 3 ///< Malfunction
+ DRIFTING_DN = 2, ///< The state is drifting down
+ DRIFTING = 3, ///< The state is drifting down or up
+ DRIFTING_UP = 4, ///< The state is drifting up
+ MALFUNCTIONING = 5 ///< Malfunction
};
template <typename CONFDATATYPE> struct StateInformation {
// Make sure the actual type arguments are matching our expectations.
STATIC_ASSERT((std::is_arithmetic<CONFDATATYPE>::value),
"confidence type is not to arithmetic");
/// The StateID stores the ID of the state.
unsigned int StateID;
/// The StateCondition shows the condition of a state (stable, drifting, or
/// unknown)
StateConditions StateCondition;
/// The StateIsValid shows whether a state is valid or invalid. In this
/// context, valid means that enough samples which are in close proximitry
/// have been inserted into the state.
bool StateIsValid;
/// The StateJustGotValid shows whether a state got valid (toggled from
/// invalid to valid) during the current inserted sample.
bool StateJustGotValid;
/// The StateIsValidAfterReentrance shows whether a state is valid after the
/// variable changed back to it again.
bool StateIsValidAfterReentrance;
/// TODO: describe
CONFDATATYPE ConfidenceStateIsValid;
CONFDATATYPE ConfidenceStateIsInvalid;
CONFDATATYPE ConfidenceStateIsStable;
CONFDATATYPE ConfidenceStateIsDrifting;
};
template <typename INDATATYPE, typename CONFDATATYPE, typename PROCDATATYPE>
class State : public Functionality {
// Make sure the actual type arguments are matching our expectations.
STATIC_ASSERT((std::is_arithmetic<INDATATYPE>::value),
"input data type not arithmetic");
STATIC_ASSERT((std::is_arithmetic<CONFDATATYPE>::value),
"confidence abstraction type is not to arithmetic");
STATIC_ASSERT((std::is_arithmetic<PROCDATATYPE>::value),
"process type is not to arithmetic");
protected:
};
} // End namespace agent
} // End namespace rosa
#endif // ROSA_AGENT_SIGNALSTATEDETECTOR_HPP
diff --git a/include/rosa/agent/SystemState.hpp b/include/rosa/agent/SystemState.hpp
index 7bfe5ae..a9f0565 100644
--- a/include/rosa/agent/SystemState.hpp
+++ b/include/rosa/agent/SystemState.hpp
@@ -1,289 +1,304 @@
//===-- rosa/agent/SystemState.hpp ------------------------------*- C++ -*-===//
//
// The RoSA Framework
//
// Distributed under the terms and conditions of the Boost Software License 1.0.
// See accompanying file LICENSE.
//
// If you did not receive a copy of the license file, see
// http://www.boost.org/LICENSE_1_0.txt.
//
//===----------------------------------------------------------------------===//
///
/// \file rosa/agent/SystemState.hpp
///
/// \author Maximilian Götzinger (maximilian.goetzinger@tuwien.ac.at)
///
/// \date 2019
///
/// \brief Definition of *system state* *functionality*.
///
//===----------------------------------------------------------------------===//
#ifndef ROSA_AGENT_SYSTEMSTATE_HPP
#define ROSA_AGENT_SYSTEMSTATE_HPP
#include "rosa/agent/Functionality.h"
#include "rosa/agent/SignalState.hpp"
#include "rosa/agent/State.hpp"
#include "rosa/support/debug.hpp"
#include <vector>
namespace rosa {
namespace agent {
enum class SystemStateRelation : uint8_t {
STATEISMATCHING = 0, ///< The system state is matching
ONLYINPUTISMATCHING = 1, ///< Only inputs of the system state are matching
ONLYOUTPUTISMATCHING = 2, ///< Only outputs of the system state are matching
STATEISMISMATCHING = 3 ///< The system state is mismatching
};
/// TODO: write description
template <typename CONFDATATYPE>
struct SystemStateInformation : StateInformation<CONFDATATYPE> {
/// TODO: describe
CONFDATATYPE ConfidenceOfInputsMatchingState;
CONFDATATYPE ConfidenceOfInputsMismatchingState;
CONFDATATYPE ConfidenceOfOutputsMatchingState;
CONFDATATYPE ConfidenceOfOutputsMismatchingState;
CONFDATATYPE ConfidenceSystemIsFunctioning;
CONFDATATYPE ConfidenceSystemIsMalfunctioning;
CONFDATATYPE ConfidenceOfAllDecisions;
public:
SystemStateInformation() = default;
SystemStateInformation(unsigned int _SystemStateID,
StateConditions _StateCondition) {
this->StateID = _SystemStateID;
this->StateCondition = _StateCondition;
this->StateIsValid = false;
this->StateJustGotValid = false;
this->StateIsValidAfterReentrance = false;
this->ConfidenceOfInputsMatchingState = 0;
this->ConfidenceOfInputsMismatchingState = 0;
this->ConfidenceOfOutputsMatchingState = 0;
this->ConfidenceOfOutputsMismatchingState = 0;
this->ConfidenceSystemIsFunctioning = 0;
this->ConfidenceSystemIsMalfunctioning = 0;
this->ConfidenceOfAllDecisions = 0;
}
};
// todo: do we need PROCDATATYPE?
/// TODO TEXT
template <typename INDATATYPE, typename CONFDATATYPE, typename PROCDATATYPE>
class SystemState : public State<INDATATYPE, CONFDATATYPE, PROCDATATYPE> {
// Make sure the actual type arguments are matching our expectations.
STATIC_ASSERT(std::is_arithmetic<INDATATYPE>::value,
"input data type is not to arithmetic");
STATIC_ASSERT(std::is_arithmetic<CONFDATATYPE>::value,
"confidence abstraction type is not to arithmetic");
STATIC_ASSERT(std::is_arithmetic<PROCDATATYPE>::value,
"process data type is not to arithmetic");
private:
/// SignalStateInfo is a struct of SignalStateInformation that contains
/// information about the current signal state.
SystemStateInformation<CONFDATATYPE> SystemStateInfo;
std::vector<SignalStateInformation<CONFDATATYPE>> SignalStateInfos;
uint32_t NumberOfSignals;
public:
/// TODO: write description
SystemState(uint32_t StateID, uint32_t NumberOfSignals) noexcept
: SystemStateInfo(StateID, StateConditions::UNKNOWN),
NumberOfSignals(NumberOfSignals) {
SignalStateInfos.resize(NumberOfSignals);
}
/// Destroys \p this object.
~SystemState(void) = default;
/// TODO: write description
SystemStateInformation<CONFDATATYPE> insertSignalStateInformation(
const std::vector<SignalStateInformation<CONFDATATYPE>>
_SignalStateInfos) noexcept {
ASSERT(_SignalStateInfos.size() == NumberOfSignals);
bool AllSignalsAreValid = true;
bool AtLeastOneSignalJustGotValid = false;
bool AllSignalsAreValidAfterReentrance = true;
bool AtLeastOneSignalIsUnknown = false;
bool AllSignalsAreStable = true;
+ uint32_t DriftDnCounter = 0;
+ uint32_t DriftUpCounter = 0;
+
// TODO: change this
SystemStateInfo.ConfidenceOfInputsMatchingState = 1;
SystemStateInfo.ConfidenceOfInputsMismatchingState = 0;
SystemStateInfo.ConfidenceOfOutputsMatchingState = 1;
SystemStateInfo.ConfidenceOfOutputsMismatchingState = 0;
SystemStateInfo.ConfidenceStateIsValid = 1;
SystemStateInfo.ConfidenceStateIsInvalid = 0;
SystemStateInfo.ConfidenceStateIsStable = 1;
SystemStateInfo.ConfidenceStateIsDrifting = 0;
std::size_t counter = 0;
for (auto SSI : _SignalStateInfos) {
if (!SSI.StateIsValid)
AllSignalsAreValid = false;
if (SSI.StateJustGotValid)
AtLeastOneSignalJustGotValid = true;
if (!SSI.StateIsValidAfterReentrance)
AllSignalsAreValidAfterReentrance = false;
if (SSI.StateCondition == StateConditions::UNKNOWN)
AtLeastOneSignalIsUnknown = true;
- if (SSI.StateCondition == StateConditions::DRIFTING)
+ if (SSI.StateCondition == StateConditions::DRIFTING_DN) {
+ AllSignalsAreStable = false;
+ DriftDnCounter++;
+ }
+ if (SSI.StateCondition == StateConditions::DRIFTING_UP) {
AllSignalsAreStable = false;
+ DriftUpCounter++;
+ }
if (SSI.SignalProperty == SignalProperties::INPUT) {
SystemStateInfo.ConfidenceOfInputsMatchingState =
fuzzyAND(SystemStateInfo.ConfidenceOfInputsMatchingState,
SSI.ConfidenceOfMatchingState);
SystemStateInfo.ConfidenceOfInputsMismatchingState =
fuzzyOR(SystemStateInfo.ConfidenceOfInputsMismatchingState,
SSI.ConfidenceOfMismatchingState);
} else {
SystemStateInfo.ConfidenceOfOutputsMatchingState =
fuzzyAND(SystemStateInfo.ConfidenceOfOutputsMatchingState,
SSI.ConfidenceOfMatchingState);
SystemStateInfo.ConfidenceOfOutputsMismatchingState =
fuzzyOR(SystemStateInfo.ConfidenceOfOutputsMismatchingState,
SSI.ConfidenceOfMismatchingState);
}
SystemStateInfo.ConfidenceStateIsValid = fuzzyAND(
SystemStateInfo.ConfidenceStateIsValid, SSI.ConfidenceStateIsValid);
SystemStateInfo.ConfidenceStateIsInvalid =
fuzzyOR(SystemStateInfo.ConfidenceStateIsInvalid,
SSI.ConfidenceStateIsInvalid);
SystemStateInfo.ConfidenceStateIsStable = fuzzyAND(
SystemStateInfo.ConfidenceStateIsStable, SSI.ConfidenceStateIsStable);
SystemStateInfo.ConfidenceStateIsDrifting =
fuzzyOR(SystemStateInfo.ConfidenceStateIsDrifting,
SSI.ConfidenceStateIsDrifting);
this->SignalStateInfos.at(counter) = SSI;
counter++;
}
SystemStateInfo.StateIsValid = AllSignalsAreValid;
SystemStateInfo.StateJustGotValid =
AllSignalsAreValid && AtLeastOneSignalJustGotValid;
SystemStateInfo.StateIsValidAfterReentrance =
AllSignalsAreValidAfterReentrance;
if (AtLeastOneSignalIsUnknown)
SystemStateInfo.StateCondition = StateConditions::UNKNOWN;
else if (AllSignalsAreStable)
SystemStateInfo.StateCondition = StateConditions::STABLE;
- else
- SystemStateInfo.StateCondition = StateConditions::DRIFTING;
-
+ else {
+ if (DriftDnCounter > DriftUpCounter)
+ SystemStateInfo.StateCondition = StateConditions::DRIFTING_DN;
+ else if (DriftDnCounter < DriftUpCounter)
+ SystemStateInfo.StateCondition = StateConditions::DRIFTING_UP;
+ else {
+ SystemStateInfo.StateCondition = StateConditions::DRIFTING;
+ }
+ }
return SystemStateInfo;
}
/// TODO: write description
// TODO (future): think about saving the state information in a history
SystemStateRelation compareSignalStateInformation(
const std::vector<SignalStateInformation<CONFDATATYPE>>
_SignalStateInfos) noexcept {
bool inputsAreMatching = true;
bool outputsAreMatching = true;
std::size_t counter = 0;
for (auto SSI : _SignalStateInfos) {
if (this->SignalStateInfos.at(counter).StateID != SSI.StateID) {
if (SSI.SignalProperty == SignalProperties::INPUT)
inputsAreMatching = false;
else // SignalProperties::OUTPUT
outputsAreMatching = false;
}
counter++;
}
if (inputsAreMatching && outputsAreMatching)
return SystemStateRelation::STATEISMATCHING;
else if (inputsAreMatching && !outputsAreMatching)
return SystemStateRelation::ONLYINPUTISMATCHING;
else if (!inputsAreMatching && outputsAreMatching)
return SystemStateRelation::ONLYOUTPUTISMATCHING;
else
return SystemStateRelation::STATEISMISMATCHING;
}
#ifdef ADDITIONAL_FUNCTIONS
/// TODO: write description
template <std::size_t size>
void insertSignalStateInformation(
const std::array<SystemStateInformation<CONFDATATYPE>, size>
&Data) noexcept {
ASSERT(size <= NumberOfSignals);
std::size_t counter = 0;
for (auto tmp : Data) {
Signals.at(counter) = tmp;
counter++;
}
}
/// TODO: write description
template <typename... Types>
std::enable_if_t<std::conjunction_v<std::is_same<
Types, SystemStateInformation<CONFDATATYPE>>...>,
void>
insertSignalStateInformation(Types... Data) {
// TODO (future): think about saving the state information in a history
insertSignalStateInfos(
std::array<SystemStateInformation<CONFDATATYPE>, sizeof...(Data)>(
{Data...}));
}
// returns true if they are identical
/// TODO: write description
template <std::size_t size>
bool compareSignalStateInformation(
const std::array<SystemStateInformation<CONFDATATYPE>, size>
&Data) noexcept {
// TODO (future): think about saving the state information in a history
std::size_t counter = 0;
for (auto tmp : Data) {
if (Signals.at(counter) != tmp)
return false;
counter++;
}
return true;
}
// checks only the given amount
/// TODO: write description
template <typename... Types>
std::enable_if_t<std::conjunction_v<std::is_same<
Types, SystemStateInformation<CONFDATATYPE>>...>,
bool>
compareSignalStateInformation(Types... Data) {
return compareSignalStateInfos(
std::array<SystemStateInformation<CONFDATATYPE>, sizeof...(Data)>(
{Data...}));
}
#endif
/// Gives information about the current signal state.
///
/// \return a struct SignalStateInformation that contains information about
/// the current signal state.
SystemStateInformation<CONFDATATYPE> systemStateInformation(void) noexcept {
return SystemStateInfo;
}
};
} // End namespace agent
} // End namespace rosa
#endif // ROSA_AGENT_SYSTEMSTATE_HPP
diff --git a/include/rosa/agent/SystemStateDetector.hpp b/include/rosa/agent/SystemStateDetector.hpp
index 17e5f98..ad5fa40 100644
--- a/include/rosa/agent/SystemStateDetector.hpp
+++ b/include/rosa/agent/SystemStateDetector.hpp
@@ -1,242 +1,243 @@
//===-- rosa/agent/SystemStateDetector.hpp ----------------------*- C++ -*-===//
//
// The RoSA Framework
//
// Distributed under the terms and conditions of the Boost Software License 1.0.
// See accompanying file LICENSE.
//
// If you did not receive a copy of the license file, see
// http://www.boost.org/LICENSE_1_0.txt.
//
//===----------------------------------------------------------------------===//
///
/// \file rosa/agent/SystemStateDetector.hpp
///
/// \author Maximilian Götzinger (maximilian.goetzinger@tuwien.ac.at)
///
/// \date 2019
///
/// \brief Definition of *system state detector* *functionality*.
///
//===----------------------------------------------------------------------===//
#ifndef ROSA_AGENT_SYSTEMSTATEDETECTOR_HPP
#define ROSA_AGENT_SYSTEMSTATEDETECTOR_HPP
#include "rosa/agent/Functionality.h"
#include "rosa/agent/SignalState.hpp"
#include "rosa/agent/StateDetector.hpp"
#include "rosa/agent/SystemState.hpp"
#include "rosa/support/debug.hpp"
namespace rosa {
namespace agent {
/// TODO: write description
template <typename INDATATYPE, typename CONFDATATYPE, typename PROCDATATYPE,
HistoryPolicy HP>
class SystemStateDetector
: public StateDetector<INDATATYPE, CONFDATATYPE, PROCDATATYPE, HP> {
using StateDetector =
StateDetector<INDATATYPE, CONFDATATYPE, PROCDATATYPE, HP>;
using PartFuncPointer = typename StateDetector::PartFuncPointer;
private:
// For the convinience to write a shorter data type name
using SystemStatePtr =
std::shared_ptr<SystemState<INDATATYPE, CONFDATATYPE, PROCDATATYPE>>;
/// TODO: description
uint32_t NumberOfSignals;
/// The CurrentSystemState is a pointer to the (saved) system state in which
/// the actual state of the observed system is.
SystemStatePtr CurrentSystemState;
/// The DetectedSystemStates is a history in that all detected system states
/// are saved.
DynamicLengthHistory<SystemStatePtr, HP> DetectedSystemStates;
/// TODO: description
unsigned int TimeOfDisparity;
/// The FuzzyFunctionDelayTimeToBeWorking is the fuzzy function that gives
/// the
/// confidence whether the system is still OK allthough an input change
/// without an output change or vice versa.
PartFuncPointer FuzzyFunctionTimeSystemFunctioning;
/// The FuzzyFunctionDelayTimeToGetBroken is the fuzzy function that gives
/// the confidence whether the system is Broken because of an input change
/// without an output change or vice versa. A small time gap between the two
/// shall be allowed.
PartFuncPointer FuzzyFunctionTimeSystemMalfunctioning;
public:
// todo zwei parameter für variablen anzahl
/// TODO: write description
SystemStateDetector(
uint32_t MaximumNumberOfSystemStates, uint32_t NumberOfSignals,
PartFuncPointer FuzzyFunctionTimeSystemMalfunctioning,
PartFuncPointer FuzzyFunctionTimeSystemFunctioning) noexcept
: NumberOfSignals(NumberOfSignals), CurrentSystemState(nullptr),
DetectedSystemStates(MaximumNumberOfSystemStates), TimeOfDisparity(0),
FuzzyFunctionTimeSystemFunctioning(FuzzyFunctionTimeSystemFunctioning),
FuzzyFunctionTimeSystemMalfunctioning(
FuzzyFunctionTimeSystemMalfunctioning) {
//@Benedikt: if I write "NextStateID(1), StateHasChanged(false)" before the
//{}-brackets, the compiler tells me: "SystemStateDetector.hpp:72:9: error:
// member initializer 'NextStateID'/'StateHasChanged' does not name a
// non-static data member or base class"
this->NextStateID = 1;
this->StateHasChanged = false;
}
/// Destroys \p this object.
~SystemStateDetector(void) = default;
/// TODO: write description
SystemStateInformation<CONFDATATYPE>
detectSystemState(std::vector<SignalStateInformation<CONFDATATYPE>>
SignalStateInfos) noexcept {
SystemStateInformation<CONFDATATYPE> SystemStateInfo;
if (!CurrentSystemState) {
ASSERT(DetectedSystemStates.empty());
SystemStatePtr S = createNewSystemState();
CurrentSystemState = S;
SystemStateInfo =
CurrentSystemState->insertSignalStateInformation(SignalStateInfos);
} else {
SystemStateRelation SysStateRel =
CurrentSystemState->compareSignalStateInformation(SignalStateInfos);
if (SysStateRel == SystemStateRelation::STATEISMATCHING) {
TimeOfDisparity = 0;
SystemStateInfo =
CurrentSystemState->insertSignalStateInformation(SignalStateInfos);
} else { // ONLYINPUTISMATCHING, ONLYOUTPUTISMATCHING, STATEISMISMATCHING
if (!CurrentSystemState->systemStateInformation().StateIsValid)
DetectedSystemStates.deleteEntry(CurrentSystemState);
CurrentSystemState = nullptr;
SystemStatePtr potentialSystemState = nullptr;
// search all saved system states
for (auto &SavedSystemState : DetectedSystemStates) {
SysStateRel =
SavedSystemState->compareSignalStateInformation(SignalStateInfos);
if (SysStateRel == SystemStateRelation::STATEISMATCHING) {
CurrentSystemState = SavedSystemState;
break;
} else if (SysStateRel == SystemStateRelation::ONLYINPUTISMATCHING ||
SysStateRel == SystemStateRelation::ONLYOUTPUTISMATCHING) {
// TODO: choose best matching
potentialSystemState = SavedSystemState;
}
}
// actions depending whether state is matchin fully or only half
if (CurrentSystemState) {
TimeOfDisparity = 0;
SystemStateInfo = CurrentSystemState->insertSignalStateInformation(
SignalStateInfos);
} else if (potentialSystemState) {
TimeOfDisparity++;
CurrentSystemState = potentialSystemState;
SystemStateInfo = CurrentSystemState->systemStateInformation();
} else {
SystemStatePtr S = createNewSystemState();
TimeOfDisparity = 0;
CurrentSystemState = S;
SystemStateInfo = CurrentSystemState->insertSignalStateInformation(
SignalStateInfos);
}
}
}
// TODO: is this right? if i don't insert if broke, it will never be valid?!
// right?
if (!SystemStateInfo.StateIsValidAfterReentrance) {
TimeOfDisparity = 0;
}
// TODO: maybe make reference instead of pointer
SystemStateInfo.ConfidenceSystemIsFunctioning =
(*FuzzyFunctionTimeSystemFunctioning)(
static_cast<INDATATYPE>(TimeOfDisparity));
SystemStateInfo.ConfidenceSystemIsMalfunctioning =
(*FuzzyFunctionTimeSystemMalfunctioning)(
static_cast<INDATATYPE>(TimeOfDisparity));
if (SystemStateInfo.ConfidenceSystemIsMalfunctioning >
SystemStateInfo.ConfidenceSystemIsFunctioning)
SystemStateInfo.StateCondition = StateConditions::MALFUNCTIONING;
if (SystemStateInfo.StateCondition == StateConditions::UNKNOWN)
// TODO: think about a Confidence calculation when system state is unkown
SystemStateInfo.ConfidenceOfAllDecisions = 0;
else if (SystemStateInfo.StateCondition == StateConditions::STABLE) {
SystemStateInfo.ConfidenceOfAllDecisions = fuzzyAND(
fuzzyOR(
fuzzyAND(SystemStateInfo.ConfidenceOfInputsMatchingState,
SystemStateInfo.ConfidenceOfOutputsMatchingState),
fuzzyAND(SystemStateInfo.ConfidenceOfInputsMismatchingState,
SystemStateInfo.ConfidenceOfOutputsMismatchingState)),
SystemStateInfo.ConfidenceSystemIsFunctioning,
SystemStateInfo.ConfidenceStateIsStable,
SystemStateInfo.ConfidenceStateIsValid);
- } else if (SystemStateInfo.StateCondition == StateConditions::DRIFTING) {
+ } else if (SystemStateInfo.StateCondition == StateConditions::DRIFTING_DN ||
+ SystemStateInfo.StateCondition == StateConditions::DRIFTING_UP) {
SystemStateInfo.ConfidenceOfAllDecisions =
fuzzyAND(SystemStateInfo.ConfidenceOfInputsMatchingState,
SystemStateInfo.ConfidenceOfOutputsMatchingState,
SystemStateInfo.ConfidenceStateIsDrifting,
SystemStateInfo.ConfidenceStateIsValid);
} else if (SystemStateInfo.StateCondition ==
StateConditions::MALFUNCTIONING) {
SystemStateInfo.ConfidenceOfAllDecisions =
fuzzyAND(SystemStateInfo.ConfidenceOfInputsMismatchingState,
SystemStateInfo.ConfidenceOfOutputsMismatchingState,
SystemStateInfo.ConfidenceSystemIsMalfunctioning,
SystemStateInfo.ConfidenceStateIsValid);
}
if (SystemStateInfo.StateJustGotValid) {
this->NextStateID++;
}
return SystemStateInfo;
}
private:
/// Creates a new system state and adds it to the system state vector in
/// which
/// all known states are saved.
///
/// \return a pointer to the newly created signal state or NULL if no state
/// could be created.
SystemStatePtr createNewSystemState(void) noexcept {
SystemStatePtr S(new SystemState<INDATATYPE, CONFDATATYPE, PROCDATATYPE>(
this->NextStateID, this->NumberOfSignals));
DetectedSystemStates.addEntry(S);
return S;
}
};
} // End namespace agent
} // End namespace rosa
#endif // ROSA_AGENT_SYSTEMSTATEDETECTOR_HPP

File Metadata

Mime Type
text/x-diff
Expires
Thu, Jul 3, 10:46 PM (2 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
157400
Default Alt Text
(222 KB)

Event Timeline