Skip to content
Snippets Groups Projects
Commit 643bbdf9 authored by Thomas's avatar Thomas
Browse files

random NFAs

parent 47e68bc0
Branches
No related tags found
No related merge requests found
......@@ -18,9 +18,9 @@ public class MealyDotfileNLStarLearner {
CompactDFA<String> target;
NFA<?, String> result, result2;
MealyDotfileNLStarLearner(Path path) throws IOException {
MealyDotfileNLStarLearner(Path path, String accepting_output) throws IOException {
GraphvizParser parser = new GraphvizParser(path);
target = parser.createDFAfromMealy(Collections.singletonList("OOK"));
target = parser.createDFAfromMealy(Collections.singletonList(accepting_output));
MembershipOracle.DFAMembershipOracle<String> sul = new SimulatorOracle.DFASimulatorOracle<>(target);
MembershipOracle.DFAMembershipOracle<String> sul2 = new MyDFASimulatorOracle<>(target);
......@@ -71,7 +71,7 @@ public class MealyDotfileNLStarLearner {
}
public static void main(String[] args) throws IOException {
MealyDotfileNLStarLearner experiments = new MealyDotfileNLStarLearner(Paths.get("login.flat_0_1.dot"));
MealyDotfileNLStarLearner experiments = new MealyDotfileNLStarLearner(Paths.get("passport.flat_0_1.dot"), "OOK");
Visualization.visualize(experiments.target, experiments.target.getInputAlphabet());
......
import de.learnlib.oracle.membership.SimulatorOracle;
import net.automatalib.automata.concepts.SuffixOutput;
import net.automatalib.automata.fsa.DFA;
import net.automatalib.words.Word;
import net.automatalib.words.WordBuilder;
import de.learnlib.oracle.membership.SimulatorOracle.DFASimulatorOracle;
public class MySimulatorOracle<I, D> extends SimulatorOracle<I, D> {
public MySimulatorOracle(SuffixOutput<I, D> automaton) {
super(automaton);
}
public D answerQuery(Word<I> prefix, Word<I> suffix) {
return super.answerQuery(reverseWord(suffix), reverseWord(prefix));
}
private Word<I> reverseWord(Word<I> w){
WordBuilder<I> wb = new WordBuilder<I>(w);
wb.reverse();
return wb.toWord();
}
}
import de.learnlib.algorithms.nlstar.NLStarLearner;
import de.learnlib.algorithms.nlstar.NLStarLearnerBuilder;
import de.learnlib.api.oracle.MembershipOracle;
import de.learnlib.oracle.equivalence.RandomWordsEQOracle;
import de.learnlib.oracle.membership.SimulatorOracle;
import de.learnlib.util.Experiment;
import net.automatalib.automata.fsa.MutableNFA;
import net.automatalib.automata.fsa.NFA;
import net.automatalib.automata.fsa.impl.compact.CompactDFA;
import net.automatalib.automata.fsa.impl.compact.CompactNFA;
import net.automatalib.util.automata.builders.AutomatonBuilders;
import net.automatalib.util.automata.builders.DFABuilder;
import net.automatalib.util.automata.builders.FSABuilder;
import net.automatalib.visualization.Visualization;
import net.automatalib.words.Alphabet;
import net.automatalib.words.impl.Alphabets;
import java.util.Random;
public class RandomNFAGen {
Alphabet<Integer> alphabet;
int state_count;
Random rnd_gen;
public RandomNFAGen(int state_count){
this.state_count = state_count;
alphabet = Alphabets.integers(0, 1);
rnd_gen = new Random();
}
public CompactNFA<Integer> get(){
FSABuilder<Integer, Integer, CompactNFA<Integer>> builder = new FSABuilder<>(new CompactNFA<>(alphabet))
.withInitial(0);
int transistion_count = rnd_gen.nextInt(state_count * alphabet.size());
for (int i = 0; i < transistion_count; i++) {
builder.from(rnd_gen.nextInt(state_count))
.on(rnd_gen.nextInt(alphabet.size()))
.to(rnd_gen.nextInt(state_count));
}
int accepting_count = rnd_gen.nextInt(state_count);
for (int i = 0; i < accepting_count; i++) {
builder.withAccepting(rnd_gen.nextInt(state_count));
}
return builder.create();
}
public static void main(String[] args) {
RandomNFAGen c = new RandomNFAGen(10);
while (true) {
CompactNFA<Integer> target = c.get();
SimulatorOracle<Integer, Boolean> sul = new SimulatorOracle<>(target);
SimulatorOracle<Integer, Boolean> sul2 = new MySimulatorOracle<>(target);
NLStarLearner<Integer> nlstar =
new NLStarLearnerBuilder<Integer>().withAlphabet(target.getInputAlphabet()) // input alphabet
.withOracle(sul) // membership oracle
.create();
NLStarLearner<Integer> nlstar2 =
new NLStarLearnerBuilder<Integer>().withAlphabet(target.getInputAlphabet()) // input alphabet
.withOracle(sul2) // reverse membership oracle
.create();
RandomWordsEQOracle<NFA<?, Integer>, Integer, Boolean> eqOracle = new RandomWordsEQOracle<>(sul, 0, 32, 5000);
RandomWordsEQOracle<NFA<?, Integer>, Integer, Boolean> eqOracle2 = new RandomWordsEQOracle<>(sul2, 0, 32, 5000);
Experiment<NFA<?,Integer>> experiment = new Experiment<>(nlstar, eqOracle, target.getInputAlphabet());
Experiment<NFA<?,Integer>> experiment2 = new Experiment<>(nlstar2, eqOracle2, target.getInputAlphabet());
experiment.run();
experiment2.run();
System.out.print(experiment.getFinalHypothesis().size() + ",");
System.out.println(experiment2.getFinalHypothesis().size());
if (Math.abs(experiment.getFinalHypothesis().size() - experiment2.getFinalHypothesis().size()) > 3) {
Visualization.visualize(target, target.getInputAlphabet());
Visualization.visualize(experiment.getFinalHypothesis(), target.getInputAlphabet());
Visualization.visualize(experiment2.getFinalHypothesis(), target.getInputAlphabet());
}
}
}
}
3,3
1,1
2,2
5,6
1,1
1,1
2,2
1,1
1,1
5,4
1,1
1,1
5,5
1,1
1,1
4,4
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
8,7
2,2
1,1
1,1
1,1
1,1
7,7
1,1
4,4
1,1
8,7
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,6
1,1
1,1
5,5
6,6
4,4
3,3
4,5
1,1
1,1
1,1
1,1
1,1
7,6
1,1
1,1
3,3
7,7
1,1
1,1
1,1
1,1
1,1
1,1
6,7
1,1
2,2
1,1
5,5
2,2
1,1
3,3
1,1
1,1
1,1
1,1
2,2
2,2
1,1
4,4
4,5
1,1
1,1
4,4
4,4
3,3
1,1
7,7
6,5
1,1
1,1
1,1
1,1
5,5
1,1
2,2
1,1
5,5
1,1
1,1
5,4
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,6
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
8,8
1,1
10,11
1,1
4,4
1,1
1,1
5,5
1,1
1,1
3,3
5,6
1,1
1,1
1,1
10,9
2,2
1,1
1,1
6,6
1,1
1,1
1,1
6,5
6,6
5,4
2,2
1,1
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
8,9
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
5,5
1,1
1,1
1,1
1,1
2,2
7,7
1,1
1,1
8,9
1,1
1,1
1,1
1,1
6,7
1,1
9,8
6,6
1,1
3,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
8,8
1,1
1,1
1,1
2,2
1,1
1,1
7,7
1,1
4,4
1,1
8,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,5
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
7,5
8,7
7,7
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
3,3
1,1
6,6
1,1
2,2
1,1
3,3
1,1
1,1
1,1
1,1
9,8
1,1
1,1
1,1
1,1
1,1
6,5
1,1
1,1
3,3
1,1
3,4
1,1
6,6
1,1
1,1
1,1
4,4
6,6
5,6
1,1
1,1
4,4
1,1
1,1
1,1
1,1
10,11
1,1
1,1
8,9
1,1
1,1
1,1
1,1
4,4
3,3
1,1
3,3
1,1
1,1
3,3
7,7
2,2
1,1
6,5
1,1
5,5
1,1
1,1
8,9
1,1
1,1
3,3
6,7
1,1
1,1
3,2
1,1
1,1
1,1
2,2
1,1
3,3
4,4
2,2
2,2
4,5
1,1
4,5
1,1
4,5
7,8
1,1
1,1
4,3
1,1
5,5
9,10
11,9
1,1
1,1
1,1
1,1
1,1
1,1
9,11
1,1
1,1
1,1
1,1
1,1
2,2
5,5
1,1
1,1
1,1
1,1
1,1
2,2
1,1
10,10
1,1
1,1
1,1
1,1
1,1
8,7
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
2,2
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
4,4
2,2
4,4
1,1
1,1
1,1
1,1
1,1
9,8
1,1
1,1
6,6
1,1
8,7
5,6
6,5
1,1
1,1
1,1
5,5
2,2
1,1
1,1
1,1
1,1
1,1
3,3
3,3
1,1
1,1
1,1
1,1
1,1
5,5
1,1
1,1
1,1
4,4
1,1
5,5
1,1
7,7
1,1
10,9
1,1
1,1
6,8
1,1
6,8
2,2
1,1
1,1
1,1
1,1
2,2
1,1
1,1
3,4
1,1
1,1
1,1
1,1
1,1
1,1
1,1
7,7
1,1
1,1
1,1
1,1
8,9
5,5
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
5,5
1,1
5,5
2,2
6,6
2,2
1,1
1,1
5,5
4,4
1,1
3,3
1,1
1,1
1,1
1,1
3,3
6,9
1,1
1,1
1,1
3,3
1,1
1,1
2,2
2,2
4,4
7,8
7,6
1,1
1,1
1,1
10,10
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
14,10
2,2
8,8
6,7
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
4,4
1,1
2,2
3,3
2,2
1,1
2,2
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
6,5
1,1
2,2
1,1
1,1
2,2
7,7
1,1
5,5
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
4,5
1,1
6,6
1,1
9,8
1,1
1,1
5,4
1,1
1,1
3,3
1,1
1,1
1,1
1,1
3,2
5,5
7,7
1,1
4,4
2,2
1,1
1,1
1,1
8,8
1,1
1,1
1,1
5,5
6,6
1,1
1,1
1,1
6,6
3,3
1,1
1,1
2,2
1,1
3,3
1,1
1,1
1,1
1,1
3,3
1,1
1,1
1,1
9,8
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,6
1,1
1,1
1,1
3,3
2,2
8,8
1,1
1,1
6,7
2,2
1,1
7,7
1,1
5,5
1,1
1,1
4,4
8,7
3,3
5,5
1,1
1,1
7,8
7,9
1,1
3,3
1,1
1,1
1,1
1,1
2,2
1,1
10,13
11,15
2,2
1,1
1,1
1,1
2,2
1,1
1,1
10,8
1,1
1,1
2,2
1,1
6,6
1,1
1,1
1,1
1,1
6,6
1,1
6,6
1,1
1,1
1,1
8,9
3,4
6,6
1,1
4,4
1,1
1,1
9,10
5,5
1,1
7,7
1,1
5,5
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
3,3
1,1
5,5
1,1
1,1
3,3
1,1
1,1
3,3
1,1
1,1
1,1
1,1
7,8
3,3
5,5
5,5
1,1
1,1
7,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
7,7
1,1
4,4
3,3
1,1
1,1
1,1
1,1
1,1
1,1
2,2
5,5
1,1
1,1
2,2
1,1
1,1
2,2
1,1
5,5
1,1
2,2
6,5
1,1
8,8
1,1
8,7
1,1
1,1
5,4
1,1
1,1
2,2
1,1
5,6
1,1
4,5
5,5
1,1
1,1
2,2
1,1
1,1
2,2
4,4
1,1
1,1
7,6
1,1
1,1
1,1
4,3
4,4
1,1
1,1
1,1
1,1
11,10
5,5
1,1
1,1
1,1
4,3
3,3
1,1
1,1
8,9
1,1
1,1
1,1
5,5
1,1
6,7
1,1
5,5
2,2
4,5
4,4
1,1
2,2
1,1
11,8
1,1
4,5
1,1
1,1
1,1
1,1
4,4
1,1
1,1
1,1
9,11
11,9
7,7
1,1
4,4
1,1
1,1
9,7
1,1
1,1
1,1
5,5
4,5
8,7
3,3
1,1
5,5
6,6
1,1
3,3
1,1
1,1
1,1
1,1
9,8
1,1
1,1
3,3
1,1
1,1
1,1
3,3
1,1
10,9
1,1
1,1
2,2
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
2,2
5,6
1,1
1,1
1,1
6,6
1,1
1,1
1,1
4,4
3,3
4,4
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
7,6
5,4
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
4,4
10,12
6,6
4,4
1,1
7,5
6,6
2,2
1,1
1,1
5,5
1,1
1,1
1,1
1,1
1,1
1,1
7,8
2,2
1,1
9,10
1,1
1,1
1,1
1,1
5,4
7,6
1,1
1,1
9,12
4,3
1,1
1,1
1,1
1,1
1,1
1,1
5,5
1,1
7,7
7,7
1,1
1,1
8,8
5,5
1,1
1,1
6,6
6,7
2,2
2,2
1,1
8,9
1,1
3,3
1,1
1,1
1,1
6,6
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
7,8
1,1
4,4
1,1
3,3
8,9
1,1
1,1
1,1
1,1
2,2
5,4
1,1
1,1
8,8
8,8
1,1
11,11
4,4
2,2
1,1
1,1
7,7
7,7
1,1
3,3
4,4
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
4,4
1,1
1,1
1,1
1,1
9,8
1,1
1,1
5,5
2,2
1,1
6,6
1,1
5,5
1,1
1,1
2,2
1,1
1,1
1,1
8,10
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
1,1
7,7
9,10
1,1
1,1
1,1
4,5
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
4,3
2,2
8,7
1,1
3,4
1,1
2,2
2,2
1,1
5,6
1,1
1,1
1,1
2,2
9,10
1,1
1,1
1,1
1,1
3,3
1,1
1,1
2,2
5,5
1,1
2,2
1,1
1,1
1,1
2,2
1,1
1,1
4,4
1,1
1,1
1,1
1,1
5,6
1,1
2,2
1,1
1,1
1,1
4,5
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
9,9
1,1
9,9
1,1
1,1
1,1
1,1
6,6
1,1
1,1
9,10
2,2
3,4
2,2
1,1
2,2
1,1
1,1
1,1
5,5
2,2
4,4
1,1
1,1
7,7
1,1
1,1
1,1
1,1
1,1
1,1
10,12
7,7
1,1
1,1
1,1
2,2
1,1
1,1
9,8
10,9
1,1
5,5
2,2
1,1
1,1
1,1
7,6
1,1
1,1
1,1
1,1
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
3,3
1,1
1,1
1,1
1,1
1,1
2,2
6,6
4,3
1,1
4,4
1,1
1,1
1,1
4,4
1,1
10,10
1,1
3,3
1,1
1,1
1,1
1,1
5,4
5,6
6,6
1,1
4,4
1,1
1,1
1,1
2,2
7,7
6,5
2,2
1,1
6,6
3,3
1,1
1,1
1,1
6,6
1,1
6,5
1,1
2,2
1,1
9,9
7,7
1,1
5,5
1,1
2,2
1,1
1,1
3,3
1,1
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
3,3
4,4
1,1
1,1
1,1
1,1
1,1
1,1
5,5
1,1
1,1
1,1
1,1
1,1
1,1
6,5
5,5
5,5
3,3
3,3
5,5
1,1
5,5
1,1
6,7
3,3
1,1
1,1
1,1
1,1
1,1
6,6
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
7,7
4,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,5
1,1
4,4
1,1
1,1
1,1
1,1
7,9
1,1
1,1
1,1
1,1
7,7
1,1
1,1
1,1
6,7
6,7
4,4
1,1
1,1
5,5
1,1
1,1
1,1
1,1
8,8
1,1
7,7
5,5
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
11,11
1,1
1,1
4,4
1,1
8,11
7,7
8,7
1,1
4,4
1,1
6,6
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
11,9
1,1
1,1
5,5
1,1
1,1
4,4
5,5
1,1
6,7
1,1
6,6
10,11
2,2
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
2,2
5,5
1,1
1,1
2,2
1,1
6,6
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
6,5
1,1
2,2
1,1
3,3
1,1
1,1
1,1
1,1
1,1
8,9
9,9
7,7
10,9
6,6
1,1
3,3
1,1
1,1
7,6
7,6
1,1
1,1
1,1
5,4
1,1
6,5
5,5
2,2
1,1
1,1
1,1
7,8
2,2
1,1
1,1
6,8
3,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
4,4
8,8
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
4,4
3,3
3,3
1,1
1,1
4,4
2,2
1,1
1,1
3,3
1,1
2,2
1,1
1,1
1,1
2,2
1,1
6,6
1,1
2,2
1,1
1,1
2,2
2,2
4,4
3,3
1,1
1,1
1,1
4,4
1,1
1,1
1,1
5,4
1,1
8,9
1,1
1,1
1,1
4,4
1,1
2,2
1,1
1,1
4,4
6,5
2,2
1,1
5,5
6,6
9,9
9,9
6,6
9,9
3,3
1,1
1,1
1,1
5,5
3,3
7,8
1,1
1,1
3,3
3,3
7,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,5
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
4,3
1,1
1,1
1,1
2,2
1,1
7,6
1,1
1,1
1,1
1,1
3,3
1,1
2,2
1,1
7,6
5,5
6,7
1,1
1,1
2,2
1,1
1,1
5,5
6,8
1,1
5,5
1,1
1,1
1,1
2,2
1,1
2,2
1,1
1,1
1,1
2,2
8,7
1,1
1,1
1,1
8,8
1,1
1,1
5,5
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
2,2
5,4
1,1
1,1
7,6
2,2
2,2
1,1
1,1
1,1
4,4
1,1
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
6,6
1,1
1,1
1,1
9,9
6,6
2,2
1,1
1,1
2,2
4,5
11,9
5,7
1,1
1,1
1,1
6,6
2,2
5,4
3,3
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
2,2
8,9
1,1
1,1
5,5
5,6
1,1
1,1
1,1
8,13
1,1
1,1
1,1
1,1
7,7
1,1
1,1
7,8
1,1
6,7
1,1
6,5
1,1
1,1
3,4
1,1
3,3
1,1
1,1
4,4
1,1
1,1
1,1
1,1
2,2
1,1
8,9
3,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
2,2
3,3
1,1
4,3
1,1
3,3
1,1
1,1
8,8
1,1
2,2
1,1
1,1
1,1
6,6
7,7
2,2
1,1
1,1
5,5
1,1
2,2
1,1
1,1
5,6
1,1
2,3
1,1
2,2
1,1
1,1
5,5
2,2
1,1
1,1
3,3
1,1
7,7
2,2
1,1
8,8
1,1
1,1
10,8
4,4
1,1
5,5
1,1
2,2
1,1
4,4
1,1
1,1
2,2
2,2
1,1
1,1
1,1
1,1
5,6
2,2
1,1
4,4
1,1
1,1
1,1
1,1
3,3
1,1
1,1
1,1
7,7
1,1
5,6
1,1
1,1
2,2
8,8
1,1
1,1
1,1
1,1
1,1
3,3
3,3
1,1
5,5
9,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,4
1,1
1,1
1,1
6,6
4,4
6,6
9,11
2,2
7,8
3,3
4,5
1,1
1,1
1,1
1,1
5,5
5,5
1,1
3,4
5,5
3,4
6,6
1,1
5,5
1,1
2,2
4,6
5,6
1,1
1,1
1,1
1,1
1,1
6,7
1,1
1,1
8,9
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
2,2
8,8
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,5
7,9
1,1
3,3
2,2
4,4
7,7
1,1
3,3
1,1
1,1
7,7
1,1
1,1
3,3
1,1
2,2
1,1
1,1
5,5
3,3
1,1
1,1
1,1
1,1
2,2
1,1
1,1
8,7
7,7
1,1
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
8,8
1,1
1,1
3,3
2,3
7,6
1,1
1,1
6,6
1,1
1,1
1,1
1,1
6,6
5,5
9,9
7,8
1,1
1,1
4,4
3,2
1,1
1,1
1,1
1,1
2,2
4,4
1,1
2,3
4,4
4,4
5,5
1,1
1,1
1,1
1,1
6,5
8,8
1,1
1,1
3,3
1,1
1,1
9,7
6,6
1,1
5,5
1,1
3,3
5,5
5,5
1,1
9,9
4,5
4,4
5,5
1,1
8,7
2,2
6,6
3,3
1,1
2,2
1,1
1,1
1,1
1,1
6,8
1,1
1,1
1,1
7,6
8,9
1,1
2,2
1,1
4,4
1,1
2,2
5,5
1,1
8,8
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
8,10
1,1
2,2
1,1
1,1
1,1
4,4
7,9
8,8
1,1
4,5
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
8,9
1,1
1,1
5,6
1,1
1,1
1,1
1,1
2,2
4,4
8,11
1,1
10,12
2,2
2,2
1,1
1,1
4,4
5,5
1,1
4,4
1,1
1,1
7,7
1,1
2,2
5,5
3,3
1,1
2,2
1,1
5,5
1,1
7,9
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
2,2
2,2
1,1
1,1
6,6
1,1
1,1
5,5
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
3,3
3,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,6
1,1
7,7
1,1
1,1
1,1
1,1
1,1
7,6
5,5
1,1
1,1
1,1
1,1
6,6
1,1
1,1
6,6
6,6
2,2
1,1
4,4
1,1
4,4
3,3
3,4
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
3,3
1,1
1,1
2,2
7,8
2,2
1,1
1,1
1,1
2,2
6,5
4,3
1,1
1,1
1,1
2,2
1,1
1,1
3,3
1,1
1,1
2,2
7,7
1,1
1,1
6,6
6,5
1,1
3,3
5,4
8,7
2,2
1,1
9,7
4,4
3,3
1,1
1,1
1,1
6,6
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
1,1
7,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,7
1,1
1,1
4,4
1,1
5,5
1,1
9,10
1,1
7,7
1,1
1,1
1,1
1,1
1,1
4,5
7,10
1,1
1,1
1,1
1,1
5,4
7,7
5,5
1,1
1,1
7,7
1,1
1,1
5,4
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,6
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
8,9
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
2,2
1,1
2,2
1,1
1,1
4,5
6,5
2,2
1,1
1,1
1,1
1,1
2,2
1,1
8,7
5,5
1,1
1,1
1,1
5,6
1,1
4,4
5,5
10,13
1,1
1,1
1,1
3,3
1,1
2,2
1,1
1,1
1,1
1,1
1,1
6,6
1,1
1,1
1,1
1,1
3,3
1,1
1,1
6,6
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
5,5
1,1
1,1
1,1
8,10
1,1
2,2
1,1
1,1
1,1
1,1
1,1
7,7
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,3
4,3
1,1
1,1
2,2
1,1
3,3
1,1
7,9
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
7,8
1,1
1,1
1,1
7,6
1,1
1,1
1,1
5,5
2,3
1,1
2,2
1,1
1,1
1,1
12,8
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,4
1,1
1,1
1,1
1,1
3,3
3,3
1,1
1,1
2,2
1,1
2,2
3,3
1,1
1,1
1,1
1,1
1,1
2,2
6,8
1,1
7,8
3,3
1,1
3,4
1,1
1,1
3,4
7,7
1,1
1,1
1,1
2,2
1,1
4,4
8,7
3,3
6,9
1,1
1,1
1,1
1,1
2,2
2,2
3,2
4,4
1,1
1,1
1,1
5,5
1,1
1,1
1,1
1,1
2,2
1,1
9,13
1,1
1,1
2,2
8,8
1,1
1,1
1,1
1,1
1,1
7,8
1,1
6,6
1,1
3,3
2,2
1,1
4,4
1,1
1,1
1,1
4,4
11,7
1,1
1,1
1,1
5,4
1,1
3,3
1,1
4,4
1,1
3,4
1,1
1,1
1,1
8,9
1,1
4,4
1,1
2,2
2,2
1,1
3,2
2,2
4,5
1,1
1,1
1,1
3,3
6,5
1,1
1,1
1,1
1,1
1,1
1,1
5,5
1,1
1,1
3,3
1,1
1,1
4,4
1,1
1,1
6,6
5,5
1,1
1,1
1,1
3,3
4,5
1,1
2,2
1,1
3,3
9,9
1,1
1,1
1,1
7,8
1,1
1,1
1,1
3,3
1,1
4,4
2,2
5,5
1,1
1,1
2,3
8,8
5,5
5,6
1,1
1,1
2,2
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
5,6
1,1
1,1
5,7
1,1
4,4
8,9
1,1
1,1
1,1
1,1
1,1
3,3
2,2
2,2
8,7
1,1
1,1
2,2
2,3
1,1
2,2
1,1
1,1
1,1
1,1
1,1
6,8
1,1
1,1
1,1
2,2
1,1
3,3
2,2
2,2
6,6
2,2
1,1
3,3
1,1
1,1
1,1
1,1
1,1
4,4
1,1
1,1
6,6
2,2
3,3
1,1
2,2
8,8
1,1
2,2
4,4
1,1
1,1
3,3
2,2
1,1
5,6
8,9
1,1
1,1
2,2
1,1
1,1
1,1
1,1
2,2
1,1
5,6
2,2
1,1
1,1
1,1
6,7
2,2
1,1
1,1
1,1
1,1
6,6
1,1
1,1
1,1
1,1
1,1
5,5
1,1
5,5
1,1
4,3
1,1
1,1
1,1
3,3
3,3
1,1
1,1
1,1
4,4
1,1
1,1
6,6
1,1
1,1
4,4
6,6
1,1
2,2
1,1
1,1
3,3
1,1
1,1
1,1
1,1
1,1
2,2
1,1
7,6
4,5
2,2
1,1
1,1
1,1
1,1
1,1
2,2
2,2
1,1
7,7
1,1
6,5
3,3
2,2
6,6
3,3
1,1
1,1
4,4
2,2
1,1
1,1
5,5
7,6
1,1
1,1
3,3
1,1
1,1
4,4
1,1
1,1
1,1
1,1
1,1
1,1
2,2
3,4
1,1
5,5
1,1
1,1
5,5
1,1
1,1
1,1
6,6
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,4
5,5
2,2
4,5
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,5
1,1
8,8
1,1
7,7
1,1
1,1
1,1
7,8
5,5
1,1
7,6
1,1
1,1
4,4
1,1
1,1
1,1
5,5
1,1
4,4
1,1
2,2
3,3
1,1
1,1
6,6
1,1
1,1
1,1
1,1
2,2
1,1
5,5
5,5
6,6
2,2
1,1
1,1
1,1
1,1
6,7
2,2
2,2
3,3
1,1
1,1
1,1
1,1
10,10
1,1
1,1
1,1
1,1
1,1
1,1
5,4
1,1
1,1
11,10
1,1
1,1
1,1
7,7
9,9
1,1
1,1
2,2
1,1
1,1
2,2
2,2
1,1
2,2
3,3
4,4
1,1
7,7
1,1
1,1
3,3
9,11
3,3
9,10
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
7,7
1,1
4,4
1,1
1,1
1,1
1,1
1,1
6,6
6,6
1,1
12,9
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
1,1
2,2
1,1
6,6
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
4,5
1,1
1,1
2,2
1,1
3,3
6,6
1,1
1,1
1,1
1,1
1,1
4,3
1,1
1,1
1,1
5,5
1,1
7,8
8,7
4,5
1,1
2,2
7,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
4,4
1,1
1,1
1,1
4,4
4,4
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,7
6,6
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
5,6
1,1
1,1
1,1
1,1
2,2
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
10,10
2,2
8,9
1,1
8,6
1,1
1,1
1,1
3,3
1,1
1,1
1,1
2,2
6,7
7,8
1,1
7,7
3,4
3,3
7,6
1,1
1,1
1,1
3,3
1,1
1,1
1,1
1,1
1,1
3,3
2,2
4,4
1,1
1,1
1,1
1,1
7,8
5,5
3,3
1,1
6,6
5,5
1,1
1,1
1,1
1,1
1,1
6,6
1,1
1,1
6,6
8,8
4,4
10,11
1,1
5,4
7,8
3,3
1,1
1,1
1,1
3,3
3,2
1,1
4,4
4,4
1,1
1,1
1,1
2,2
1,1
1,1
1,1
4,4
4,4
1,1
1,1
1,1
1,1
4,3
5,5
1,1
5,7
9,10
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
6,6
6,6
9,8
3,3
1,1
6,7
4,4
6,6
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
2,2
1,1
1,1
1,1
1,1
1,1
1,1
4,4
1,1
1,1
1,1
8,8
8,8
1,1
4,4
1,1
1,1
1,1
1,1
5,5
1,1
1,1
1,1
5,5
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,5
4,4
1,1
4,4
1,1
3,3
1,1
1,1
1,1
7,9
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
2,2
6,6
1,1
8,9
1,1
2,2
1,1
9,10
3,3
1,1
1,1
2,2
8,8
8,8
1,1
5,6
1,1
8,8
1,1
1,1
2,2
1,1
2,2
1,1
1,1
1,1
7,7
2,2
5,5
1,1
1,1
1,1
1,1
4,4
1,1
8,8
1,1
3,3
6,6
4,3
1,1
1,1
2,2
1,1
2,2
1,1
1,1
8,8
8,8
2,2
4,4
3,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,3
4,4
6,6
2,2
5,4
4,4
1,1
1,1
10,8
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
4,5
2,2
8,8
1,1
5,5
1,1
1,1
1,1
1,1
10,10
9,10
1,1
1,1
2,2
1,1
6,6
1,1
1,1
4,4
1,1
1,1
1,1
5,4
1,1
9,8
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
8,8
2,2
1,1
7,9
5,4
1,1
10,9
1,1
1,1
1,1
4,4
5,5
2,2
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,3
1,1
3,3
1,1
8,9
1,1
3,3
1,1
1,1
11,10
3,3
1,1
3,3
7,7
1,1
4,4
4,5
2,2
1,1
5,6
1,1
1,1
1,1
1,1
6,5
1,1
1,1
3,3
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
5,4
1,1
1,1
7,8
1,1
1,1
1,1
1,1
8,7
4,4
1,1
1,1
1,1
1,1
5,5
6,6
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
1,1
6,6
1,1
1,1
1,1
1,1
6,6
5,4
2,2
5,6
1,1
1,1
1,1
3,3
9,9
7,6
7,7
6,6
1,1
1,1
1,1
9,10
1,1
1,1
4,4
1,1
1,1
1,1
2,2
1,1
3,3
1,1
2,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
9,10
1,1
6,6
1,1
1,1
1,1
7,6
1,1
1,1
1,1
1,1
1,1
5,5
1,1
1,1
5,7
4,4
2,2
1,1
1,1
1,1
1,1
1,1
1,1
4,4
3,2
10,7
1,1
5,5
1,1
1,1
1,1
5,6
3,4
1,1
8,8
6,7
3,3
8,8
1,1
7,7
1,1
2,2
1,1
3,3
7,7
1,1
8,9
7,7
6,6
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
4,4
1,1
6,6
1,1
8,6
9,9
1,1
1,1
1,1
4,4
1,1
1,1
1,1
8,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
4,4
2,3
1,1
1,1
11,10
1,1
2,2
1,1
5,5
3,3
4,4
1,1
1,1
1,1
4,4
1,1
1,1
1,1
4,6
2,2
1,1
1,1
1,1
9,11
1,1
1,1
7,9
1,1
1,1
1,1
2,2
1,1
1,1
9,11
1,1
1,1
1,1
2,2
1,1
1,1
7,6
7,7
1,1
1,1
1,1
1,1
1,1
1,1
1,1
3,2
1,1
1,1
6,5
1,1
8,9
4,4
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,5
1,1
1,1
5,5
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
6,6
2,2
6,6
3,3
5,5
1,1
1,1
1,1
4,4
1,1
1,1
1,1
5,5
1,1
4,5
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,6
1,1
1,1
1,1
1,1
1,1
2,2
2,2
2,2
3,3
1,1
1,1
1,1
1,1
1,1
3,3
3,3
1,1
1,1
4,5
4,4
1,1
2,2
6,6
1,1
1,1
3,2
1,1
4,4
7,7
1,1
7,7
1,1
1,1
1,1
1,1
1,1
5,5
1,1
1,1
1,1
2,2
1,1
4,4
1,1
1,1
1,1
1,1
3,3
1,1
1,1
11,11
2,2
1,1
5,5
1,1
1,1
1,1
1,1
2,2
1,1
1,1
1,1
1,1
3,3
3,2
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
5,4
9,8
1,1
10,15
1,1
1,1
1,1
1,1
6,6
1,1
1,1
8,7
1,1
2,2
5,5
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
3,3
2,2
1,1
4,3
1,1
4,5
1,1
4,4
4,4
2,2
1,1
1,1
5,5
1,1
10,10
1,1
4,5
1,1
6,6
2,2
1,1
6,6
1,1
1,1
1,1
1,1
1,1
6,5
1,1
1,1
1,1
1,1
2,2
1,1
3,2
1,1
1,1
5,5
1,1
1,1
1,1
1,1
8,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
1,1
4,4
1,1
1,1
1,1
8,8
1,1
1,1
1,1
9,8
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
1,1
2,2
8,9
1,1
1,1
1,1
6,6
1,1
1,1
1,1
3,3
6,6
2,2
1,1
1,1
4,3
1,1
1,1
1,1
1,1
1,1
1,1
1,1
8,7
8,8
1,1
4,5
5,5
1,1
1,1
1,1
1,1
1,1
1,1
7,7
2,2
2,2
1,1
1,1
1,1
1,1
1,1
2,2
3,3
1,1
6,6
7,7
1,1
1,1
1,1
8,8
2,2
2,2
1,1
1,1
5,5
5,4
1,1
1,1
4,4
1,1
1,1
1,1
8,10
1,1
1,1
9,9
1,1
1,1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment