diff --git a/dfa-decompose/.ruff.toml b/dfa-decompose/.ruff.toml
new file mode 100644
index 0000000..ffd9640
--- /dev/null
+++ b/dfa-decompose/.ruff.toml
@@ -0,0 +1,5 @@
+indent-width = 2
+line-length = 320
+
+[format]
+quote-style = "single"
diff --git a/dfa-decompose/README.md b/dfa-decompose/README.md
new file mode 100644
index 0000000..951b81b
--- /dev/null
+++ b/dfa-decompose/README.md
@@ -0,0 +1,20 @@
+dfa-decompose
+=============
+
+Given a DFA, try to find smaller DFAs such that their intersection is the
+input.
+
+```
+pip install -r requirements.txt
+python main.py
+```
+
+## Copyright notice
+
+(c) 2025 Joshua Moerman, Open Universiteit, licensed under the EUPL (European
+Union Public License). If you want to use this code and find the license not
+suitable for you, then please do get in touch.
+
+```
+SPDX-License-Identifier: EUPL-1.2
+```
diff --git a/dfa-decompose/main.py b/dfa-decompose/main.py
new file mode 100644
index 0000000..cfec48b
--- /dev/null
+++ b/dfa-decompose/main.py
@@ -0,0 +1,195 @@
+# Copyright 2024-2025 Joshua Moerman, Open Universiteit. All rights reserved
+# SPDX-License-Identifier: EUPL-1.2
+
+import itertools
+from pysat.solvers import Solver
+from pysat.card import CardEnc
+from pysat.formula import IDPool
+
+# Script to decompose a DFA as the intersection of smaller DFAs.
+# As an example this is applied to the UTF-8 automaton, see
+# https://joshuamoerman.nl/2025/6/The-UTF-8-Automaton.html
+
+# Regular language of UTF8 sequences (9 states including a sink state).
+# The model used here is a complete DFA, bytes are mapped to classes
+# as explained here: https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
+
+# Possible improvements:
+# - Allow partial models. The current smallest decomposition is as 6+4.
+# Coincidentally, both components have a sink state and we get a
+# decomposition of size 5+3 which is quite good. Encoding partiallity
+# directly will always find a minimal decomposition.
+# - Get rid of input "8", since it is never accepted in a UTF8 string.
+# - Only use reduced_sizes and not size. This will reduce the number of
+# variables and constraints.
+# - Write a loop to search for smallest decompositions, this is now
+# done by hand.
+
+# With 2 components, decomposable as:
+# 5+5 NO
+# 6+4 YES
+# 7+3 YES
+# 8+2 NO
+# and everything below: NO
+
+# With 3 components, decomposable as:
+# 4+4+4 NO
+# 5+4+3 YES
+# 5+5+2 ???
+# 6+3+3 YES
+# 6+4+2 YES (see above)
+# 7+3+2 YES (see above)
+# 8+2+2 ???
+# any x+y+z such that the sum is 11 or less: NO
+# any x+y+z such that the sum is 13 or more: YES
+def exampleDfa():
+ initial = 0
+ final = set([0])
+ alphabet = list(range(12))
+ states = list(range(9))
+ trans = {}
+
+ trans[(0, 0)] = 0
+ trans[(0, 2)] = 2
+ trans[(0, 3)] = 3
+ trans[(0, 4)] = 5
+ trans[(0, 5)] = 8
+ trans[(0, 6)] = 7
+ trans[(0, 10)] = 4
+ trans[(0, 11)] = 6
+ trans[(2, 1)] = 0
+ trans[(2, 7)] = 0
+ trans[(2, 9)] = 0
+ trans[(3, 1)] = 2
+ trans[(3, 7)] = 2
+ trans[(3, 9)] = 2
+ trans[(4, 7)] = 2
+ trans[(5, 1)] = 2
+ trans[(5, 9)] = 2
+ trans[(6, 7)] = 3
+ trans[(6, 9)] = 3
+ trans[(7, 1)] = 3
+ trans[(7, 7)] = 3
+ trans[(7, 9)] = 3
+ trans[(8, 1)] = 3
+
+ assert len(trans) == 23
+
+ for s in states:
+ for a in alphabet:
+ if (s,a) not in trans:
+ trans[(s,a)] = 1
+ return {'initial': initial, 'final': final, 'trans': trans}
+
+
+class DfaEncode:
+ def __init__(self):
+ self.components = 3
+ self.reduced_sizes = {0: 7, 1: 2, 2: 2}
+ print(f'SIZES = {self.reduced_sizes}')
+ self.size = max(self.reduced_sizes.values())
+ self.alphabet = list(range(12))
+ self.dfa = exampleDfa()
+ self.dfa_size = 9
+
+ self.vpool = IDPool()
+ self.solver = Solver()
+
+ def var_bool(self, b):
+ return self.vpool.id(('bool', b))
+
+ def var_trans(self, m, s, a, t):
+ assert 0 <= m and m < self.components
+ assert 0 <= s and s < self.size
+ assert a in self.alphabet
+ assert 0 <= t and t < self.size
+
+ return self.vpool.id(('trans', m, s, a, t))
+
+ def var_final(self, m, s):
+ assert 0 <= m and m < self.components
+ assert 0 <= s and s < self.size
+
+ return self.vpool.id(('final', m, s))
+
+ def var_bisim(self, ss, org):
+ assert len(ss) == self.components
+
+ return self.vpool.id(('bisim', tuple(ss), org))
+
+ def constrain_component(self, m):
+ for s in range(self.size):
+ for a in self.alphabet:
+ lits = [self.var_trans(m, s, a, t) for t in range(self.reduced_sizes[m])]
+ cnf = CardEnc.equals(lits, 1, vpool=self.vpool)
+ self.solver.append_formula(cnf.clauses)
+
+ def constrain_bisim(self):
+ ss_init = [0 for m in range(self.components)]
+ org_init = self.dfa['initial']
+
+ # we require initial states to be bisimilar
+ self.solver.add_clause([self.var_bisim(ss_init, org_init)])
+
+ for org in range(self.dfa_size):
+ for ss in itertools.product(range(self.size), repeat=self.components):
+ # require intersection of components have the right acceptance
+ # if bisim and all components accept => then original dfa accepts
+ clause1 = [-self.var_bisim(ss, org)] + [-self.var_final(m, ss[m]) for m in range(self.components)] + [self.var_bool(org in self.dfa['final'])]
+ self.solver.add_clause(clause1)
+ # if bisim and original dfa accepts => then each component accepts
+ for m in range(self.components):
+ clause2 = [-self.var_bisim(ss, org)] + [-self.var_bool(org in self.dfa['final'])] + [self.var_final(m, ss[m])]
+ self.solver.add_clause(clause2)
+
+ # require transitions to bisimilar states
+ for a in self.alphabet:
+ org2 = self.dfa['trans'][(org, a)]
+
+ for tt in itertools.product(range(self.size), repeat=self.components):
+ clause = [-self.var_bisim(ss, org)] + [-self.var_trans(m, ss[m], a, tt[m]) for m in range(self.components)] + [self.var_bisim(tt, org2)]
+ self.solver.add_clause(clause)
+
+ def constraint(self):
+ self.solver.add_clause([-self.var_bool(False)])
+ self.solver.add_clause([self.var_bool(True)])
+
+ for m in range(self.components):
+ self.constrain_component(m)
+
+ self.constrain_bisim()
+
+ def solve(self):
+ self.solver.solve()
+
+ def get_model(self):
+ lits = self.solver.get_model()
+ model = set([lit for lit in lits if lit > 0])
+
+ components = {}
+ for m in range(self.components):
+ dfa = {'trans': {}, 'final': set(), 'initial': 0}
+ for s in range(self.size):
+ if self.var_final(m, s) in model:
+ dfa['final'].add(s)
+
+ for a in self.alphabet:
+ for t in range(self.size):
+ if self.var_trans(m, s, a, t) in model:
+ dfa['trans'][(s, a)] = t
+
+ components[m] = dfa
+
+ return components
+
+
+def main():
+ encoder = DfaEncode()
+ encoder.constraint()
+ encoder.solver.solve()
+ m = encoder.get_model()
+ print(m)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/dfa-decompose/requirements.txt b/dfa-decompose/requirements.txt
new file mode 100644
index 0000000..e7de295
--- /dev/null
+++ b/dfa-decompose/requirements.txt
@@ -0,0 +1 @@
+python-sat
diff --git a/dfa-decompose/results-2/comp2-6-4.txt b/dfa-decompose/results-2/comp2-6-4.txt
new file mode 100644
index 0000000..47890df
--- /dev/null
+++ b/dfa-decompose/results-2/comp2-6-4.txt
@@ -0,0 +1,16 @@
+{0:
+ {'trans':
+ {(0, 0): 0, (0, 1): 4, (0, 2): 2, (0, 3): 5, (0, 4): 5, (0, 5): 3, (0, 6): 1, (0, 7): 4, (0, 8): 4, (0, 9): 4, (0, 10): 3, (0, 11): 1, (1, 0): 4, (1, 1): 5, (1, 2): 4, (1, 3): 4, (1, 4): 4, (1, 5): 4, (1, 6): 4, (1, 7): 5, (1, 8): 4, (1, 9): 5, (1, 10): 4, (1, 11): 4, (2, 0): 4, (2, 1): 0, (2, 2): 4, (2, 3): 4, (2, 4): 4, (2, 5): 4, (2, 6): 4, (2, 7): 0, (2, 8): 1, (2, 9): 0, (2, 10): 4, (2, 11): 4, (3, 0): 4, (3, 1): 5, (3, 2): 4, (3, 3): 4, (3, 4): 4, (3, 5): 4, (3, 6): 4, (3, 7): 2, (3, 8): 4, (3, 9): 4, (3, 10): 4, (3, 11): 4, (4, 0): 4, (4, 1): 4, (4, 2): 4, (4, 3): 4, (4, 4): 4, (4, 5): 4, (4, 6): 4, (4, 7): 4, (4, 8): 4, (4, 9): 4, (4, 10): 4, (4, 11): 4, (5, 0): 4, (5, 1): 2, (5, 2): 4, (5, 3): 4, (5, 4): 4, (5, 5): 4, (5, 6): 4, (5, 7): 2, (5, 8): 4, (5, 9): 2, (5, 10): 4, (5, 11): 4},
+ 'final':
+ {0},
+ 'initial':
+ 0},
+
+1:
+ {'trans':
+ {(0, 0): 1, (0, 1): 1, (0, 2): 1, (0, 3): 1, (0, 4): 0, (0, 5): 0, (0, 6): 1, (0, 7): 2, (0, 8): 1, (0, 9): 1, (0, 10): 3, (0, 11): 3, (1, 0): 1, (1, 1): 1, (1, 2): 1, (1, 3): 1, (1, 4): 0, (1, 5): 0, (1, 6): 1, (1, 7): 1, (1, 8): 2, (1, 9): 1, (1, 10): 3, (1, 11): 3, (2, 0): 2, (2, 1): 2, (2, 2): 2, (2, 3): 2, (2, 4): 2, (2, 5): 2, (2, 6): 2, (2, 7): 2, (2, 8): 2, (2, 9): 2, (2, 10): 2, (2, 11): 2, (3, 0): 3, (3, 1): 2, (3, 2): 0, (3, 3): 2, (3, 4): 2, (3, 5): 3, (3, 6): 1, (3, 7): 1, (3, 8): 3, (3, 9): 1, (3, 10): 0, (3, 11): 0, (4, 0): 3, (4, 1): 3, (4, 2): 3, (4, 3): 3, (4, 4): 3, (4, 5): 3, (4, 6): 3, (4, 7): 3, (4, 8): 3, (4, 9): 3, (4, 10): 3, (4, 11): 3, (5, 0): 3, (5, 1): 3, (5, 2): 3, (5, 3): 3, (5, 4): 3, (5, 5): 3, (5, 6): 3, (5, 7): 3, (5, 8): 3, (5, 9): 3, (5, 10): 3, (5, 11): 3},
+ 'final':
+ {0, 1},
+ 'initial':
+ 0}
+}
\ No newline at end of file
diff --git a/dfa-decompose/results-2/comp2-7-3.txt b/dfa-decompose/results-2/comp2-7-3.txt
new file mode 100644
index 0000000..01b5a4f
--- /dev/null
+++ b/dfa-decompose/results-2/comp2-7-3.txt
@@ -0,0 +1,10 @@
+{
+ 0: {
+ 'trans': {(0, 0): 0, (0, 1): 1, (0, 2): 5, (0, 3): 6, (0, 4): 6, (0, 5): 4, (0, 6): 2, (0, 7): 1, (0, 8): 6, (0, 9): 1, (0, 10): 4, (0, 11): 3, (1, 0): 1, (1, 1): 1, (1, 2): 1, (1, 3): 1, (1, 4): 1, (1, 5): 1, (1, 6): 1, (1, 7): 1, (1, 8): 6, (1, 9): 1, (1, 10): 1, (1, 11): 1, (2, 0): 1, (2, 1): 6, (2, 2): 1, (2, 3): 1, (2, 4): 1, (2, 5): 1, (2, 6): 1, (2, 7): 6, (2, 8): 6, (2, 9): 6, (2, 10): 1, (2, 11): 1, (3, 0): 1, (3, 1): 1, (3, 2): 1, (3, 3): 1, (3, 4): 1, (3, 5): 1, (3, 6): 1, (3, 7): 6, (3, 8): 6, (3, 9): 6, (3, 10): 1, (3, 11): 1, (4, 0): 1, (4, 1): 6, (4, 2): 1, (4, 3): 1, (4, 4): 0, (4, 5): 1, (4, 6): 1, (4, 7): 5, (4, 8): 1, (4, 9): 1, (4, 10): 1, (4, 11): 1, (5, 0): 1, (5, 1): 0, (5, 2): 1, (5, 3): 1, (5, 4): 1, (5, 5): 1, (5, 6): 1, (5, 7): 0, (5, 8): 6, (5, 9): 0, (5, 10): 1, (5, 11): 1, (6, 0): 1, (6, 1): 5, (6, 2): 1, (6, 3): 1, (6, 4): 1, (6, 5): 1, (6, 6): 1, (6, 7): 5, (6, 8): 6, (6, 9): 5, (6, 10): 1, (6, 11): 1},
+ 'final': {0},
+ 'initial': 0},
+ 1: {
+ 'trans': {(0, 0): 0, (0, 1): 2, (0, 2): 2, (0, 3): 0, (0, 4): 1, (0, 5): 2, (0, 6): 2, (0, 7): 2, (0, 8): 2, (0, 9): 2, (0, 10): 0, (0, 11): 2, (1, 0): 1, (1, 1): 2, (1, 2): 0, (1, 3): 2, (1, 4): 2, (1, 5): 1, (1, 6): 0, (1, 7): 0, (1, 8): 2, (1, 9): 2, (1, 10): 1, (1, 11): 0, (2, 0): 2, (2, 1): 0, (2, 2): 0, (2, 3): 2, (2, 4): 2, (2, 5): 1, (2, 6): 0, (2, 7): 0, (2, 8): 2, (2, 9): 0, (2, 10): 1, (2, 11): 0, (3, 0): 2, (3, 1): 2, (3, 2): 2, (3, 3): 2, (3, 4): 2, (3, 5): 2, (3, 6): 2, (3, 7): 2, (3, 8): 2, (3, 9): 2, (3, 10): 2, (3, 11): 2, (4, 0): 2, (4, 1): 2, (4, 2): 2, (4, 3): 2, (4, 4): 2, (4, 5): 2, (4, 6): 2, (4, 7): 2, (4, 8): 2, (4, 9): 2, (4, 10): 2, (4, 11): 2, (5, 0): 2, (5, 1): 2, (5, 2): 2, (5, 3): 2, (5, 4): 2, (5, 5): 2, (5, 6): 2, (5, 7): 2, (5, 8): 2, (5, 9): 2, (5, 10): 2, (5, 11): 2, (6, 0): 2, (6, 1): 2, (6, 2): 2, (6, 3): 2, (6, 4): 2, (6, 5): 2, (6, 6): 2, (6, 7): 2, (6, 8): 2, (6, 9): 2, (6, 10): 2, (6, 11): 2},
+ 'final': {0},
+ 'initial': 0}
+}
diff --git a/dfa-decompose/results-2/comp2-diagram.txt b/dfa-decompose/results-2/comp2-diagram.txt
new file mode 100644
index 0000000..c4d2e16
--- /dev/null
+++ b/dfa-decompose/results-2/comp2-diagram.txt
@@ -0,0 +1,16 @@
+
+ 8,5+ YES
+ / \
+ 7,5 YES 8,4 YES
+ / \ / \
+ 6,5 YES 7,4 YES 8,3 YES
+ / \ / \ / \
+ 5,5 no 6,4 YES 7,3 YES 8,2 no
+ \ / \ / \ /
+ 5,4 no 6,3 no 7,2 no
+ / \ / \ /
+ 4,4 no 5,3 no 6,2 no
+ \ / \ /
+ 4,3 no 5,2 no
+ \ /
+ 4-,2 no
diff --git a/dfa-decompose/results-2/comp2_1.dot b/dfa-decompose/results-2/comp2_1.dot
new file mode 100644
index 0000000..4549dac
--- /dev/null
+++ b/dfa-decompose/results-2/comp2_1.dot
@@ -0,0 +1,15 @@
+digraph g {
+s0 [shape="doublecircle" label="s0"];
+s0 -> s0 [label="0x00-0x7F"]
+s0 -> s2 [label="0xC2-0xDF"]
+s0 -> s5 [label="0xE1-0xEF"]
+s0 -> s3 [label="0xE0, 0xF4"]
+s0 -> s1 [label="0xF0-0xF3"]
+s1 -> s5 [label="0x80-0xBF"]
+s2 -> s0 [label="0x80-0xBF"]
+s3 -> s5 [label="0x80-0x8F"]
+s3 -> s2 [label="0xA0-0xBF"]
+s5 -> s2 [label="0x80-0xBF"]
+__start0 [label="" shape="none" width="0" height="0"];
+__start0 -> s0;
+}
\ No newline at end of file
diff --git a/dfa-decompose/results-2/comp2_1.pdf b/dfa-decompose/results-2/comp2_1.pdf
new file mode 100644
index 0000000..f3605fc
Binary files /dev/null and b/dfa-decompose/results-2/comp2_1.pdf differ
diff --git a/dfa-decompose/results-2/comp2_2.dot b/dfa-decompose/results-2/comp2_2.dot
new file mode 100644
index 0000000..f5008e4
--- /dev/null
+++ b/dfa-decompose/results-2/comp2_2.dot
@@ -0,0 +1,15 @@
+digraph g {
+s0 [shape="doublecircle" label="s0"];
+s1 [shape="doublecircle" label="s1"];
+s0 -> s1 [label="0x00-0x9F,\n0xC2-0xDF,\n0xE1-0xEC,\n0xEE-0xEF,\n0xF1-0xF3"]
+s0 -> s0 [label="0xED, 0xF4"]
+s0 -> s3 [label="0xE0, 0xF0"]
+s1 -> s1 [label="0x00-0xBF, 0xC2-0xDF, 0xE1-0xEC, 0xEE-0xEF, 0xF1-0xF3"]
+s1 -> s0 [label="0xED, 0xF4"]
+s1 -> s3 [label="0xE0, 0xF0"]
+s3 -> s3 [label="0x00-0x7F, 0xF4"]
+s3 -> s0 [label="0xC2-0xE0, 0xF0"]
+s3 -> s1 [label="0x90-0xBF, 0xF1-0xF3"]
+__start0 [label="" shape="none" width="0" height="0"];
+__start0 -> s0;
+}
\ No newline at end of file
diff --git a/dfa-decompose/results-2/comp2_2.pdf b/dfa-decompose/results-2/comp2_2.pdf
new file mode 100644
index 0000000..6a65fc2
Binary files /dev/null and b/dfa-decompose/results-2/comp2_2.pdf differ
diff --git a/dfa-decompose/results-3/comp3-5-4-3.txt b/dfa-decompose/results-3/comp3-5-4-3.txt
new file mode 100644
index 0000000..34e633e
--- /dev/null
+++ b/dfa-decompose/results-3/comp3-5-4-3.txt
@@ -0,0 +1,2 @@
+SIZES = {0: 5, 1: 4, 2: 3}
+{0: {'trans': {(0, 0): 0, (0, 1): 3, (0, 2): 2, (0, 3): 4, (0, 4): 4, (0, 5): 1, (0, 6): 1, (0, 7): 3, (0, 8): 2, (0, 9): 3, (0, 10): 4, (0, 11): 1, (1, 0): 3, (1, 1): 4, (1, 2): 3, (1, 3): 3, (1, 4): 3, (1, 5): 3, (1, 6): 3, (1, 7): 4, (1, 8): 2, (1, 9): 4, (1, 10): 0, (1, 11): 3, (2, 0): 3, (2, 1): 0, (2, 2): 3, (2, 3): 3, (2, 4): 3, (2, 5): 3, (2, 6): 3, (2, 7): 0, (2, 8): 2, (2, 9): 0, (2, 10): 0, (2, 11): 3, (3, 0): 3, (3, 1): 3, (3, 2): 3, (3, 3): 3, (3, 4): 3, (3, 5): 3, (3, 6): 3, (3, 7): 3, (3, 8): 2, (3, 9): 3, (3, 10): 0, (3, 11): 3, (4, 0): 3, (4, 1): 2, (4, 2): 3, (4, 3): 3, (4, 4): 3, (4, 5): 3, (4, 6): 3, (4, 7): 2, (4, 8): 2, (4, 9): 2, (4, 10): 0, (4, 11): 3}, 'final': {0}, 'initial': 0}, 1: {'trans': {(0, 0): 1, (0, 1): 3, (0, 2): 3, (0, 3): 3, (0, 4): 0, (0, 5): 0, (0, 6): 3, (0, 7): 2, (0, 8): 3, (0, 9): 3, (0, 10): 1, (0, 11): 1, (1, 0): 1, (1, 1): 2, (1, 2): 3, (1, 3): 3, (1, 4): 0, (1, 5): 0, (1, 6): 3, (1, 7): 3, (1, 8): 3, (1, 9): 3, (1, 10): 1, (1, 11): 1, (2, 0): 2, (2, 1): 2, (2, 2): 2, (2, 3): 2, (2, 4): 2, (2, 5): 2, (2, 6): 2, (2, 7): 2, (2, 8): 3, (2, 9): 2, (2, 10): 2, (2, 11): 2, (3, 0): 0, (3, 1): 3, (3, 2): 3, (3, 3): 3, (3, 4): 0, (3, 5): 0, (3, 6): 3, (3, 7): 3, (3, 8): 3, (3, 9): 3, (3, 10): 1, (3, 11): 1, (4, 0): 3, (4, 1): 3, (4, 2): 3, (4, 3): 3, (4, 4): 3, (4, 5): 3, (4, 6): 3, (4, 7): 3, (4, 8): 3, (4, 9): 3, (4, 10): 3, (4, 11): 3}, 'final': {0, 1, 3}, 'initial': 0}, 2: {'trans': {(0, 0): 0, (0, 1): 0, (0, 2): 0, (0, 3): 0, (0, 4): 0, (0, 5): 1, (0, 6): 0, (0, 7): 0, (0, 8): 2, (0, 9): 0, (0, 10): 1, (0, 11): 0, (1, 0): 2, (1, 1): 0, (1, 2): 2, (1, 3): 2, (1, 4): 2, (1, 5): 2, (1, 6): 2, (1, 7): 0, (1, 8): 2, (1, 9): 2, (1, 10): 2, (1, 11): 2, (2, 0): 2, (2, 1): 2, (2, 2): 2, (2, 3): 2, (2, 4): 2, (2, 5): 2, (2, 6): 2, (2, 7): 2, (2, 8): 2, (2, 9): 2, (2, 10): 2, (2, 11): 2, (3, 0): 2, (3, 1): 2, (3, 2): 2, (3, 3): 2, (3, 4): 2, (3, 5): 2, (3, 6): 2, (3, 7): 2, (3, 8): 2, (3, 9): 2, (3, 10): 2, (3, 11): 2, (4, 0): 2, (4, 1): 2, (4, 2): 2, (4, 3): 2, (4, 4): 2, (4, 5): 2, (4, 6): 2, (4, 7): 2, (4, 8): 2, (4, 9): 2, (4, 10): 2, (4, 11): 2}, 'final': {0}, 'initial': 0}}
\ No newline at end of file
diff --git a/dfa-decompose/results-3/comp3-6-3-3.txt b/dfa-decompose/results-3/comp3-6-3-3.txt
new file mode 100644
index 0000000..1112b16
--- /dev/null
+++ b/dfa-decompose/results-3/comp3-6-3-3.txt
@@ -0,0 +1,2 @@
+SIZES = {0: 6, 1: 3, 2: 3}
+{0: {'trans': {(0, 0): 0, (0, 1): 1, (0, 2): 2, (0, 3): 4, (0, 4): 4, (0, 5): 5, (0, 6): 3, (0, 7): 1, (0, 8): 5, (0, 9): 1, (0, 10): 5, (0, 11): 3, (1, 0): 1, (1, 1): 1, (1, 2): 1, (1, 3): 1, (1, 4): 1, (1, 5): 1, (1, 6): 1, (1, 7): 1, (1, 8): 5, (1, 9): 1, (1, 10): 1, (1, 11): 1, (2, 0): 1, (2, 1): 0, (2, 2): 1, (2, 3): 1, (2, 4): 1, (2, 5): 1, (2, 6): 1, (2, 7): 0, (2, 8): 5, (2, 9): 0, (2, 10): 1, (2, 11): 1, (3, 0): 1, (3, 1): 4, (3, 2): 1, (3, 3): 1, (3, 4): 1, (3, 5): 1, (3, 6): 1, (3, 7): 4, (3, 8): 5, (3, 9): 4, (3, 10): 1, (3, 11): 1, (4, 0): 1, (4, 1): 2, (4, 2): 1, (4, 3): 1, (4, 4): 1, (4, 5): 1, (4, 6): 1, (4, 7): 2, (4, 8): 5, (4, 9): 2, (4, 10): 1, (4, 11): 1, (5, 0): 1, (5, 1): 4, (5, 2): 1, (5, 3): 1, (5, 4): 1, (5, 5): 1, (5, 6): 1, (5, 7): 2, (5, 8): 5, (5, 9): 1, (5, 10): 1, (5, 11): 1}, 'final': {0}, 'initial': 0}, 1: {'trans': {(0, 0): 0, (0, 1): 1, (0, 2): 1, (0, 3): 2, (0, 4): 0, (0, 5): 1, (0, 6): 1, (0, 7): 2, (0, 8): 0, (0, 9): 1, (0, 10): 2, (0, 11): 1, (1, 0): 1, (1, 1): 2, (1, 2): 2, (1, 3): 1, (1, 4): 1, (1, 5): 0, (1, 6): 2, (1, 7): 2, (1, 8): 0, (1, 9): 2, (1, 10): 0, (1, 11): 2, (2, 0): 2, (2, 1): 1, (2, 2): 1, (2, 3): 2, (2, 4): 0, (2, 5): 1, (2, 6): 1, (2, 7): 1, (2, 8): 0, (2, 9): 1, (2, 10): 2, (2, 11): 1, (3, 0): 2, (3, 1): 2, (3, 2): 2, (3, 3): 2, (3, 4): 2, (3, 5): 2, (3, 6): 2, (3, 7): 2, (3, 8): 2, (3, 9): 2, (3, 10): 2, (3, 11): 2, (4, 0): 2, (4, 1): 2, (4, 2): 2, (4, 3): 2, (4, 4): 2, (4, 5): 2, (4, 6): 2, (4, 7): 2, (4, 8): 2, (4, 9): 2, (4, 10): 2, (4, 11): 2, (5, 0): 2, (5, 1): 2, (5, 2): 2, (5, 3): 2, (5, 4): 2, (5, 5): 2, (5, 6): 2, (5, 7): 2, (5, 8): 2, (5, 9): 2, (5, 10): 2, (5, 11): 2}, 'final': {0, 2}, 'initial': 0}, 2: {'trans': {(0, 0): 0, (0, 1): 2, (0, 2): 1, (0, 3): 1, (0, 4): 1, (0, 5): 1, (0, 6): 1, (0, 7): 1, (0, 8): 1, (0, 9): 1, (0, 10): 0, (0, 11): 0, (1, 0): 1, (1, 1): 1, (1, 2): 1, (1, 3): 1, (1, 4): 1, (1, 5): 1, (1, 6): 1, (1, 7): 1, (1, 8): 1, (1, 9): 1, (1, 10): 0, (1, 11): 0, (2, 0): 2, (2, 1): 2, (2, 2): 2, (2, 3): 2, (2, 4): 2, (2, 5): 2, (2, 6): 2, (2, 7): 2, (2, 8): 1, (2, 9): 2, (2, 10): 2, (2, 11): 2, (3, 0): 2, (3, 1): 2, (3, 2): 2, (3, 3): 2, (3, 4): 2, (3, 5): 2, (3, 6): 2, (3, 7): 2, (3, 8): 2, (3, 9): 2, (3, 10): 2, (3, 11): 2, (4, 0): 2, (4, 1): 2, (4, 2): 2, (4, 3): 2, (4, 4): 2, (4, 5): 2, (4, 6): 2, (4, 7): 2, (4, 8): 2, (4, 9): 2, (4, 10): 2, (4, 11): 2, (5, 0): 2, (5, 1): 2, (5, 2): 2, (5, 3): 2, (5, 4): 2, (5, 5): 2, (5, 6): 2, (5, 7): 2, (5, 8): 2, (5, 9): 2, (5, 10): 2, (5, 11): 2}, 'final': {0, 1}, 'initial': 0}}
\ No newline at end of file
diff --git a/dfa-decompose/results-3/comp3_1.dot b/dfa-decompose/results-3/comp3_1.dot
new file mode 100644
index 0000000..a237515
--- /dev/null
+++ b/dfa-decompose/results-3/comp3_1.dot
@@ -0,0 +1,17 @@
+digraph g{
+0 -> 0 [label="[0]"]
+0 -> 1 [label="[5, 6, 11]"]
+0 -> 2 [label="[2]"]
+0 -> 3 [label="[1, 7, 9]"]
+0 -> 4 [label="[3, 4, 10]"]
+1 -> 0 [label="[10]"]
+1 -> 3 [label="[0, 2, 3, 4, 5, 6, 11]"]
+1 -> 4 [label="[1, 7, 9]"]
+2 -> 0 [label="[1, 7, 9, 10]"]
+2 -> 3 [label="[0, 2, 3, 4, 5, 6, 11]"]
+3 -> 0 [label="[10]"]
+3 -> 3 [label="[0, 1, 2, 3, 4, 5, 6, 7, 9, 11]"]
+4 -> 0 [label="[10]"]
+4 -> 2 [label="[1, 7, 9]"]
+4 -> 3 [label="[0, 2, 3, 4, 5, 6, 11]"]
+}
\ No newline at end of file
diff --git a/dfa-decompose/results-3/comp3_1.pdf b/dfa-decompose/results-3/comp3_1.pdf
new file mode 100644
index 0000000..8f929b2
Binary files /dev/null and b/dfa-decompose/results-3/comp3_1.pdf differ
diff --git a/dfa-decompose/results-3/comp3_2.dot b/dfa-decompose/results-3/comp3_2.dot
new file mode 100644
index 0000000..bc2382f
--- /dev/null
+++ b/dfa-decompose/results-3/comp3_2.dot
@@ -0,0 +1,11 @@
+digraph g{
+0 -> 0 [label="[4, 5]"]
+0 -> 1 [label="[0, 10, 11]"]
+0 -> 3 [label="[1, 2, 3, 6, 9]"]
+1 -> 0 [label="[4, 5]"]
+1 -> 1 [label="[0, 10, 11]"]
+1 -> 3 [label="[2, 3, 6, 7, 9]"]
+3 -> 0 [label="[0, 4, 5]"]
+3 -> 1 [label="[10, 11]"]
+3 -> 3 [label="[1, 2, 3, 6, 7, 9]"]
+}
\ No newline at end of file
diff --git a/dfa-decompose/results-3/comp3_2.pdf b/dfa-decompose/results-3/comp3_2.pdf
new file mode 100644
index 0000000..d15a3c0
Binary files /dev/null and b/dfa-decompose/results-3/comp3_2.pdf differ
diff --git a/dfa-decompose/results-3/comp3_3.dot b/dfa-decompose/results-3/comp3_3.dot
new file mode 100644
index 0000000..747bdc7
--- /dev/null
+++ b/dfa-decompose/results-3/comp3_3.dot
@@ -0,0 +1,5 @@
+digraph g{
+0 -> 0 [label="[0, 1, 2, 3, 4, 6, 7, 9, 11]"]
+0 -> 1 [label="[5, 10]"]
+1 -> 0 [label="[1, 7]"]
+}
\ No newline at end of file
diff --git a/dfa-decompose/results-3/comp3_3.pdf b/dfa-decompose/results-3/comp3_3.pdf
new file mode 100644
index 0000000..1455a6c
Binary files /dev/null and b/dfa-decompose/results-3/comp3_3.pdf differ
diff --git a/dfa-decompose/results-3/triples.dot b/dfa-decompose/results-3/triples.dot
new file mode 100644
index 0000000..f4245dd
--- /dev/null
+++ b/dfa-decompose/results-3/triples.dot
@@ -0,0 +1,170 @@
+digraph g {
+t5x4x4 -> t6x4x4
+t4x3x2 -> t4x4x2
+t7x5x2 -> t7x5x3
+t8x4x4 -> t8x5x4
+t7x7x4 -> t7x7x5
+t6x5x2 -> t6x6x2
+t7x6x3 -> t7x6x4
+t8x6x5 -> t8x7x5
+t5x3x2 -> t6x3x2
+t6x5x3 -> t6x5x4
+t7x3x3 -> t8x3x3
+t5x4x2 -> t5x5x2
+t8x2x2 -> t8x3x2
+t6x5x4 -> t7x5x4
+t7x2x2 -> t7x3x2
+t7x6x6 -> t7x7x6
+t7x5x3 -> t7x6x3
+t5x3x2 -> t5x3x3
+t7x4x3 -> t8x4x3
+t6x4x2 -> t6x4x3
+t4x4x2 -> t5x4x2
+t5x5x2 -> t6x5x2
+t4x3x2 -> t4x3x3
+t6x3x2 -> t6x4x2
+t7x5x2 -> t8x5x2
+t8x4x2 -> t8x5x2
+t7x5x5 -> t7x6x5
+t8x6x3 -> t8x7x3
+t7x6x4 -> t7x6x5
+t7x7x7 -> t8x7x7
+t7x3x2 -> t8x3x2
+t2x2x2 -> t3x2x2
+t4x4x4 -> t5x4x4
+t7x4x3 -> t7x4x4
+t7x5x3 -> t8x5x3
+t8x8x4 -> t8x8x5
+t5x2x2 -> t5x3x2
+t4x4x3 -> t4x4x4
+t8x7x6 -> t8x8x6
+t3x3x2 -> t4x3x2
+t6x6x3 -> t7x6x3
+t8x5x5 -> t8x6x5
+t6x6x5 -> t6x6x6
+t8x4x2 -> t8x4x3
+t5x5x4 -> t5x5x5
+t8x6x6 -> t8x7x6
+t6x5x5 -> t6x6x5
+t8x6x2 -> t8x6x3
+t7x5x4 -> t8x5x4
+t7x6x5 -> t8x6x5
+t8x8x6 -> t8x8x7
+t7x5x3 -> t7x5x4
+t6x5x4 -> t6x5x5
+t8x5x4 -> t8x5x5
+t7x6x2 -> t7x6x3
+t8x7x4 -> t8x8x4
+t5x5x3 -> t5x5x4
+t5x4x3 -> t5x5x3
+t6x4x3 -> t6x4x4
+t7x6x4 -> t8x6x4
+t7x7x3 -> t7x7x4
+t6x6x6 -> t7x6x6
+t4x2x2 -> t5x2x2
+t6x5x3 -> t6x6x3
+t7x4x2 -> t7x4x3
+t4x3x3 -> t4x4x3
+t6x4x4 -> t6x5x4
+t6x5x5 -> t7x5x5
+t6x5x4 -> t6x6x4
+t8x7x2 -> t8x8x2
+t6x4x3 -> t6x5x3
+t8x7x4 -> t8x7x5
+t7x7x5 -> t7x7x6
+t8x8x7 -> t8x8x8
+t7x4x4 -> t7x5x4
+t6x6x4 -> t7x6x4
+t8x5x3 -> t8x5x4
+t7x7x2 -> t8x7x2
+t7x6x5 -> t7x7x5
+t3x3x2 -> t3x3x3
+t7x3x3 -> t7x4x3
+t8x7x2 -> t8x7x3
+t6x6x5 -> t7x6x5
+t4x2x2 -> t4x3x2
+t5x5x3 -> t6x5x3
+t5x4x3 -> t5x4x4
+t4x3x3 -> t5x3x3
+t6x3x2 -> t6x3x3
+t7x3x2 -> t7x3x3
+t6x5x3 -> t7x5x3
+t7x7x3 -> t8x7x3
+t7x7x6 -> t8x7x6
+t4x4x3 -> t5x4x3
+t6x6x2 -> t7x6x2
+t8x5x2 -> t8x5x3
+t7x4x4 -> t8x4x4
+t8x6x3 -> t8x6x4
+t8x4x3 -> t8x5x3
+t5x4x2 -> t6x4x2
+t6x2x2 -> t7x2x2
+t7x4x2 -> t8x4x2
+t3x2x2 -> t4x2x2
+t8x3x2 -> t8x4x2
+t6x3x3 -> t6x4x3
+t7x4x3 -> t7x5x3
+t8x7x5 -> t8x7x6
+t7x2x2 -> t8x2x2
+t8x6x4 -> t8x6x5
+t7x7x6 -> t7x7x7
+t5x3x3 -> t6x3x3
+t6x2x2 -> t6x3x2
+t8x6x2 -> t8x7x2
+t6x5x2 -> t6x5x3
+t7x3x2 -> t7x4x2
+t6x4x2 -> t7x4x2
+t4x4x2 -> t4x4x3
+t8x6x5 -> t8x6x6
+t6x6x4 -> t6x6x5
+t8x7x3 -> t8x8x3
+t5x5x4 -> t6x5x4
+t5x4x2 -> t5x4x3
+t8x5x4 -> t8x6x4
+t5x5x2 -> t5x5x3
+t6x3x3 -> t7x3x3
+t3x3x3 -> t4x3x3
+t8x6x4 -> t8x7x4
+t6x5x2 -> t7x5x2
+t5x2x2 -> t6x2x2
+t8x4x3 -> t8x4x4
+t5x3x2 -> t5x4x2
+t7x5x4 -> t7x6x4
+t7x6x2 -> t8x6x2
+t6x6x3 -> t6x6x4
+t6x4x4 -> t7x4x4
+t8x7x3 -> t8x7x4
+t7x6x2 -> t7x7x2
+t7x7x5 -> t8x7x5
+t7x4x2 -> t7x5x2
+t7x5x2 -> t7x6x2
+t7x7x2 -> t7x7x3
+t7x6x4 -> t7x7x4
+t7x6x6 -> t8x6x6
+t7x6x5 -> t7x6x6
+t7x5x4 -> t7x5x5
+t4x3x2 -> t5x3x2
+t8x8x5 -> t8x8x6
+t6x6x2 -> t6x6x3
+t6x4x3 -> t7x4x3
+t7x6x3 -> t7x7x3
+t8x7x7 -> t8x8x7
+t8x5x3 -> t8x6x3
+t6x3x2 -> t7x3x2
+t5x4x4 -> t5x5x4
+t8x8x3 -> t8x8x4
+t8x7x6 -> t8x7x7
+t8x5x2 -> t8x6x2
+t3x2x2 -> t3x3x2
+t7x6x3 -> t8x6x3
+t8x3x3 -> t8x4x3
+t5x3x3 -> t5x4x3
+t7x5x5 -> t8x5x5
+t7x7x4 -> t8x7x4
+t8x7x5 -> t8x8x5
+t8x3x2 -> t8x3x3
+t8x8x2 -> t8x8x3
+t6x4x2 -> t6x5x2
+t5x4x3 -> t6x4x3
+t5x5x5 -> t6x5x5
+}
\ No newline at end of file
diff --git a/dfa-decompose/results-3/triples.svg b/dfa-decompose/results-3/triples.svg
new file mode 100644
index 0000000..5a461e9
--- /dev/null
+++ b/dfa-decompose/results-3/triples.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..cb35562
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,71 @@
+
+ 4.0.0
+
+ nl.ou.utf8learner
+ utf8learner
+ 1.0.0-SNAPSHOT
+
+
+ UTF-8
+ 11
+
+
+
+
+ net.automatalib.distribution
+ automata-distribution
+ 0.13.0-SNAPSHOT
+ pom
+
+
+ de.learnlib.distribution
+ learnlib-distribution
+ 0.19.0-SNAPSHOT
+ pom
+
+
+ commons-codec
+ commons-codec
+ 1.18.0
+
+
+ com.ibm.icu
+ icu4j
+ 77.1
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.6.0
+
+
+ package
+
+ shade
+
+
+
+
+ nl.ou.utf8learner.Main
+
+
+
+
+ *:*
+
+ module-info.class
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/results/apache.dot b/results/apache.dot
new file mode 100644
index 0000000..dbe67e5
--- /dev/null
+++ b/results/apache.dot
@@ -0,0 +1,2320 @@
+digraph g {
+
+ s0 [shape="doublecircle" label="s0"];
+ s1 [shape="circle" label="s1"];
+ s2 [shape="circle" label="s2"];
+ s3 [shape="circle" label="s3"];
+ s4 [shape="circle" label="s4"];
+ s5 [shape="circle" label="s5"];
+ s6 [shape="circle" label="s6"];
+ s7 [shape="circle" label="s7"];
+ s8 [shape="circle" label="s8"];
+ s0 -> s0 [label="0"];
+ s0 -> s0 [label="1"];
+ s0 -> s0 [label="2"];
+ s0 -> s0 [label="3"];
+ s0 -> s0 [label="4"];
+ s0 -> s0 [label="5"];
+ s0 -> s0 [label="6"];
+ s0 -> s0 [label="7"];
+ s0 -> s0 [label="8"];
+ s0 -> s0 [label="9"];
+ s0 -> s0 [label="10"];
+ s0 -> s0 [label="11"];
+ s0 -> s0 [label="12"];
+ s0 -> s0 [label="13"];
+ s0 -> s0 [label="14"];
+ s0 -> s0 [label="15"];
+ s0 -> s0 [label="16"];
+ s0 -> s0 [label="17"];
+ s0 -> s0 [label="18"];
+ s0 -> s0 [label="19"];
+ s0 -> s0 [label="20"];
+ s0 -> s0 [label="21"];
+ s0 -> s0 [label="22"];
+ s0 -> s0 [label="23"];
+ s0 -> s0 [label="24"];
+ s0 -> s0 [label="25"];
+ s0 -> s0 [label="26"];
+ s0 -> s0 [label="27"];
+ s0 -> s0 [label="28"];
+ s0 -> s0 [label="29"];
+ s0 -> s0 [label="30"];
+ s0 -> s0 [label="31"];
+ s0 -> s0 [label="32"];
+ s0 -> s0 [label="33"];
+ s0 -> s0 [label="34"];
+ s0 -> s0 [label="35"];
+ s0 -> s0 [label="36"];
+ s0 -> s0 [label="37"];
+ s0 -> s0 [label="38"];
+ s0 -> s0 [label="39"];
+ s0 -> s0 [label="40"];
+ s0 -> s0 [label="41"];
+ s0 -> s0 [label="42"];
+ s0 -> s0 [label="43"];
+ s0 -> s0 [label="44"];
+ s0 -> s0 [label="45"];
+ s0 -> s0 [label="46"];
+ s0 -> s0 [label="47"];
+ s0 -> s0 [label="48"];
+ s0 -> s0 [label="49"];
+ s0 -> s0 [label="50"];
+ s0 -> s0 [label="51"];
+ s0 -> s0 [label="52"];
+ s0 -> s0 [label="53"];
+ s0 -> s0 [label="54"];
+ s0 -> s0 [label="55"];
+ s0 -> s0 [label="56"];
+ s0 -> s0 [label="57"];
+ s0 -> s0 [label="58"];
+ s0 -> s0 [label="59"];
+ s0 -> s0 [label="60"];
+ s0 -> s0 [label="61"];
+ s0 -> s0 [label="62"];
+ s0 -> s0 [label="63"];
+ s0 -> s0 [label="64"];
+ s0 -> s0 [label="65"];
+ s0 -> s0 [label="66"];
+ s0 -> s0 [label="67"];
+ s0 -> s0 [label="68"];
+ s0 -> s0 [label="69"];
+ s0 -> s0 [label="70"];
+ s0 -> s0 [label="71"];
+ s0 -> s0 [label="72"];
+ s0 -> s0 [label="73"];
+ s0 -> s0 [label="74"];
+ s0 -> s0 [label="75"];
+ s0 -> s0 [label="76"];
+ s0 -> s0 [label="77"];
+ s0 -> s0 [label="78"];
+ s0 -> s0 [label="79"];
+ s0 -> s0 [label="80"];
+ s0 -> s0 [label="81"];
+ s0 -> s0 [label="82"];
+ s0 -> s0 [label="83"];
+ s0 -> s0 [label="84"];
+ s0 -> s0 [label="85"];
+ s0 -> s0 [label="86"];
+ s0 -> s0 [label="87"];
+ s0 -> s0 [label="88"];
+ s0 -> s0 [label="89"];
+ s0 -> s0 [label="90"];
+ s0 -> s0 [label="91"];
+ s0 -> s0 [label="92"];
+ s0 -> s0 [label="93"];
+ s0 -> s0 [label="94"];
+ s0 -> s0 [label="95"];
+ s0 -> s0 [label="96"];
+ s0 -> s0 [label="97"];
+ s0 -> s0 [label="98"];
+ s0 -> s0 [label="99"];
+ s0 -> s0 [label="100"];
+ s0 -> s0 [label="101"];
+ s0 -> s0 [label="102"];
+ s0 -> s0 [label="103"];
+ s0 -> s0 [label="104"];
+ s0 -> s0 [label="105"];
+ s0 -> s0 [label="106"];
+ s0 -> s0 [label="107"];
+ s0 -> s0 [label="108"];
+ s0 -> s0 [label="109"];
+ s0 -> s0 [label="110"];
+ s0 -> s0 [label="111"];
+ s0 -> s0 [label="112"];
+ s0 -> s0 [label="113"];
+ s0 -> s0 [label="114"];
+ s0 -> s0 [label="115"];
+ s0 -> s0 [label="116"];
+ s0 -> s0 [label="117"];
+ s0 -> s0 [label="118"];
+ s0 -> s0 [label="119"];
+ s0 -> s0 [label="120"];
+ s0 -> s0 [label="121"];
+ s0 -> s0 [label="122"];
+ s0 -> s0 [label="123"];
+ s0 -> s0 [label="124"];
+ s0 -> s0 [label="125"];
+ s0 -> s0 [label="126"];
+ s0 -> s0 [label="127"];
+ s0 -> s1 [label="-128"];
+ s0 -> s1 [label="-127"];
+ s0 -> s1 [label="-126"];
+ s0 -> s1 [label="-125"];
+ s0 -> s1 [label="-124"];
+ s0 -> s1 [label="-123"];
+ s0 -> s1 [label="-122"];
+ s0 -> s1 [label="-121"];
+ s0 -> s1 [label="-120"];
+ s0 -> s1 [label="-119"];
+ s0 -> s1 [label="-118"];
+ s0 -> s1 [label="-117"];
+ s0 -> s1 [label="-116"];
+ s0 -> s1 [label="-115"];
+ s0 -> s1 [label="-114"];
+ s0 -> s1 [label="-113"];
+ s0 -> s1 [label="-112"];
+ s0 -> s1 [label="-111"];
+ s0 -> s1 [label="-110"];
+ s0 -> s1 [label="-109"];
+ s0 -> s1 [label="-108"];
+ s0 -> s1 [label="-107"];
+ s0 -> s1 [label="-106"];
+ s0 -> s1 [label="-105"];
+ s0 -> s1 [label="-104"];
+ s0 -> s1 [label="-103"];
+ s0 -> s1 [label="-102"];
+ s0 -> s1 [label="-101"];
+ s0 -> s1 [label="-100"];
+ s0 -> s1 [label="-99"];
+ s0 -> s1 [label="-98"];
+ s0 -> s1 [label="-97"];
+ s0 -> s1 [label="-96"];
+ s0 -> s1 [label="-95"];
+ s0 -> s1 [label="-94"];
+ s0 -> s1 [label="-93"];
+ s0 -> s1 [label="-92"];
+ s0 -> s1 [label="-91"];
+ s0 -> s1 [label="-90"];
+ s0 -> s1 [label="-89"];
+ s0 -> s1 [label="-88"];
+ s0 -> s1 [label="-87"];
+ s0 -> s1 [label="-86"];
+ s0 -> s1 [label="-85"];
+ s0 -> s1 [label="-84"];
+ s0 -> s1 [label="-83"];
+ s0 -> s1 [label="-82"];
+ s0 -> s1 [label="-81"];
+ s0 -> s1 [label="-80"];
+ s0 -> s1 [label="-79"];
+ s0 -> s1 [label="-78"];
+ s0 -> s1 [label="-77"];
+ s0 -> s1 [label="-76"];
+ s0 -> s1 [label="-75"];
+ s0 -> s1 [label="-74"];
+ s0 -> s1 [label="-73"];
+ s0 -> s1 [label="-72"];
+ s0 -> s1 [label="-71"];
+ s0 -> s1 [label="-70"];
+ s0 -> s1 [label="-69"];
+ s0 -> s1 [label="-68"];
+ s0 -> s1 [label="-67"];
+ s0 -> s1 [label="-66"];
+ s0 -> s1 [label="-65"];
+ s0 -> s1 [label="-64"];
+ s0 -> s1 [label="-63"];
+ s0 -> s2 [label="-62"];
+ s0 -> s2 [label="-61"];
+ s0 -> s2 [label="-60"];
+ s0 -> s2 [label="-59"];
+ s0 -> s2 [label="-58"];
+ s0 -> s2 [label="-57"];
+ s0 -> s2 [label="-56"];
+ s0 -> s2 [label="-55"];
+ s0 -> s2 [label="-54"];
+ s0 -> s2 [label="-53"];
+ s0 -> s2 [label="-52"];
+ s0 -> s2 [label="-51"];
+ s0 -> s2 [label="-50"];
+ s0 -> s2 [label="-49"];
+ s0 -> s2 [label="-48"];
+ s0 -> s2 [label="-47"];
+ s0 -> s2 [label="-46"];
+ s0 -> s2 [label="-45"];
+ s0 -> s2 [label="-44"];
+ s0 -> s2 [label="-43"];
+ s0 -> s2 [label="-42"];
+ s0 -> s2 [label="-41"];
+ s0 -> s2 [label="-40"];
+ s0 -> s2 [label="-39"];
+ s0 -> s2 [label="-38"];
+ s0 -> s2 [label="-37"];
+ s0 -> s2 [label="-36"];
+ s0 -> s2 [label="-35"];
+ s0 -> s2 [label="-34"];
+ s0 -> s2 [label="-33"];
+ s0 -> s3 [label="-32"];
+ s0 -> s4 [label="-31"];
+ s0 -> s4 [label="-30"];
+ s0 -> s4 [label="-29"];
+ s0 -> s4 [label="-28"];
+ s0 -> s4 [label="-27"];
+ s0 -> s4 [label="-26"];
+ s0 -> s4 [label="-25"];
+ s0 -> s4 [label="-24"];
+ s0 -> s4 [label="-23"];
+ s0 -> s4 [label="-22"];
+ s0 -> s4 [label="-21"];
+ s0 -> s4 [label="-20"];
+ s0 -> s5 [label="-19"];
+ s0 -> s4 [label="-18"];
+ s0 -> s4 [label="-17"];
+ s0 -> s6 [label="-16"];
+ s0 -> s8 [label="-15"];
+ s0 -> s8 [label="-14"];
+ s0 -> s8 [label="-13"];
+ s0 -> s7 [label="-12"];
+ s0 -> s1 [label="-11"];
+ s0 -> s1 [label="-10"];
+ s0 -> s1 [label="-9"];
+ s0 -> s1 [label="-8"];
+ s0 -> s1 [label="-7"];
+ s0 -> s1 [label="-6"];
+ s0 -> s1 [label="-5"];
+ s0 -> s1 [label="-4"];
+ s0 -> s1 [label="-3"];
+ s0 -> s1 [label="-2"];
+ s0 -> s1 [label="-1"];
+ s1 -> s1 [label="0"];
+ s1 -> s1 [label="1"];
+ s1 -> s1 [label="2"];
+ s1 -> s1 [label="3"];
+ s1 -> s1 [label="4"];
+ s1 -> s1 [label="5"];
+ s1 -> s1 [label="6"];
+ s1 -> s1 [label="7"];
+ s1 -> s1 [label="8"];
+ s1 -> s1 [label="9"];
+ s1 -> s1 [label="10"];
+ s1 -> s1 [label="11"];
+ s1 -> s1 [label="12"];
+ s1 -> s1 [label="13"];
+ s1 -> s1 [label="14"];
+ s1 -> s1 [label="15"];
+ s1 -> s1 [label="16"];
+ s1 -> s1 [label="17"];
+ s1 -> s1 [label="18"];
+ s1 -> s1 [label="19"];
+ s1 -> s1 [label="20"];
+ s1 -> s1 [label="21"];
+ s1 -> s1 [label="22"];
+ s1 -> s1 [label="23"];
+ s1 -> s1 [label="24"];
+ s1 -> s1 [label="25"];
+ s1 -> s1 [label="26"];
+ s1 -> s1 [label="27"];
+ s1 -> s1 [label="28"];
+ s1 -> s1 [label="29"];
+ s1 -> s1 [label="30"];
+ s1 -> s1 [label="31"];
+ s1 -> s1 [label="32"];
+ s1 -> s1 [label="33"];
+ s1 -> s1 [label="34"];
+ s1 -> s1 [label="35"];
+ s1 -> s1 [label="36"];
+ s1 -> s1 [label="37"];
+ s1 -> s1 [label="38"];
+ s1 -> s1 [label="39"];
+ s1 -> s1 [label="40"];
+ s1 -> s1 [label="41"];
+ s1 -> s1 [label="42"];
+ s1 -> s1 [label="43"];
+ s1 -> s1 [label="44"];
+ s1 -> s1 [label="45"];
+ s1 -> s1 [label="46"];
+ s1 -> s1 [label="47"];
+ s1 -> s1 [label="48"];
+ s1 -> s1 [label="49"];
+ s1 -> s1 [label="50"];
+ s1 -> s1 [label="51"];
+ s1 -> s1 [label="52"];
+ s1 -> s1 [label="53"];
+ s1 -> s1 [label="54"];
+ s1 -> s1 [label="55"];
+ s1 -> s1 [label="56"];
+ s1 -> s1 [label="57"];
+ s1 -> s1 [label="58"];
+ s1 -> s1 [label="59"];
+ s1 -> s1 [label="60"];
+ s1 -> s1 [label="61"];
+ s1 -> s1 [label="62"];
+ s1 -> s1 [label="63"];
+ s1 -> s1 [label="64"];
+ s1 -> s1 [label="65"];
+ s1 -> s1 [label="66"];
+ s1 -> s1 [label="67"];
+ s1 -> s1 [label="68"];
+ s1 -> s1 [label="69"];
+ s1 -> s1 [label="70"];
+ s1 -> s1 [label="71"];
+ s1 -> s1 [label="72"];
+ s1 -> s1 [label="73"];
+ s1 -> s1 [label="74"];
+ s1 -> s1 [label="75"];
+ s1 -> s1 [label="76"];
+ s1 -> s1 [label="77"];
+ s1 -> s1 [label="78"];
+ s1 -> s1 [label="79"];
+ s1 -> s1 [label="80"];
+ s1 -> s1 [label="81"];
+ s1 -> s1 [label="82"];
+ s1 -> s1 [label="83"];
+ s1 -> s1 [label="84"];
+ s1 -> s1 [label="85"];
+ s1 -> s1 [label="86"];
+ s1 -> s1 [label="87"];
+ s1 -> s1 [label="88"];
+ s1 -> s1 [label="89"];
+ s1 -> s1 [label="90"];
+ s1 -> s1 [label="91"];
+ s1 -> s1 [label="92"];
+ s1 -> s1 [label="93"];
+ s1 -> s1 [label="94"];
+ s1 -> s1 [label="95"];
+ s1 -> s1 [label="96"];
+ s1 -> s1 [label="97"];
+ s1 -> s1 [label="98"];
+ s1 -> s1 [label="99"];
+ s1 -> s1 [label="100"];
+ s1 -> s1 [label="101"];
+ s1 -> s1 [label="102"];
+ s1 -> s1 [label="103"];
+ s1 -> s1 [label="104"];
+ s1 -> s1 [label="105"];
+ s1 -> s1 [label="106"];
+ s1 -> s1 [label="107"];
+ s1 -> s1 [label="108"];
+ s1 -> s1 [label="109"];
+ s1 -> s1 [label="110"];
+ s1 -> s1 [label="111"];
+ s1 -> s1 [label="112"];
+ s1 -> s1 [label="113"];
+ s1 -> s1 [label="114"];
+ s1 -> s1 [label="115"];
+ s1 -> s1 [label="116"];
+ s1 -> s1 [label="117"];
+ s1 -> s1 [label="118"];
+ s1 -> s1 [label="119"];
+ s1 -> s1 [label="120"];
+ s1 -> s1 [label="121"];
+ s1 -> s1 [label="122"];
+ s1 -> s1 [label="123"];
+ s1 -> s1 [label="124"];
+ s1 -> s1 [label="125"];
+ s1 -> s1 [label="126"];
+ s1 -> s1 [label="127"];
+ s1 -> s1 [label="-128"];
+ s1 -> s1 [label="-127"];
+ s1 -> s1 [label="-126"];
+ s1 -> s1 [label="-125"];
+ s1 -> s1 [label="-124"];
+ s1 -> s1 [label="-123"];
+ s1 -> s1 [label="-122"];
+ s1 -> s1 [label="-121"];
+ s1 -> s1 [label="-120"];
+ s1 -> s1 [label="-119"];
+ s1 -> s1 [label="-118"];
+ s1 -> s1 [label="-117"];
+ s1 -> s1 [label="-116"];
+ s1 -> s1 [label="-115"];
+ s1 -> s1 [label="-114"];
+ s1 -> s1 [label="-113"];
+ s1 -> s1 [label="-112"];
+ s1 -> s1 [label="-111"];
+ s1 -> s1 [label="-110"];
+ s1 -> s1 [label="-109"];
+ s1 -> s1 [label="-108"];
+ s1 -> s1 [label="-107"];
+ s1 -> s1 [label="-106"];
+ s1 -> s1 [label="-105"];
+ s1 -> s1 [label="-104"];
+ s1 -> s1 [label="-103"];
+ s1 -> s1 [label="-102"];
+ s1 -> s1 [label="-101"];
+ s1 -> s1 [label="-100"];
+ s1 -> s1 [label="-99"];
+ s1 -> s1 [label="-98"];
+ s1 -> s1 [label="-97"];
+ s1 -> s1 [label="-96"];
+ s1 -> s1 [label="-95"];
+ s1 -> s1 [label="-94"];
+ s1 -> s1 [label="-93"];
+ s1 -> s1 [label="-92"];
+ s1 -> s1 [label="-91"];
+ s1 -> s1 [label="-90"];
+ s1 -> s1 [label="-89"];
+ s1 -> s1 [label="-88"];
+ s1 -> s1 [label="-87"];
+ s1 -> s1 [label="-86"];
+ s1 -> s1 [label="-85"];
+ s1 -> s1 [label="-84"];
+ s1 -> s1 [label="-83"];
+ s1 -> s1 [label="-82"];
+ s1 -> s1 [label="-81"];
+ s1 -> s1 [label="-80"];
+ s1 -> s1 [label="-79"];
+ s1 -> s1 [label="-78"];
+ s1 -> s1 [label="-77"];
+ s1 -> s1 [label="-76"];
+ s1 -> s1 [label="-75"];
+ s1 -> s1 [label="-74"];
+ s1 -> s1 [label="-73"];
+ s1 -> s1 [label="-72"];
+ s1 -> s1 [label="-71"];
+ s1 -> s1 [label="-70"];
+ s1 -> s1 [label="-69"];
+ s1 -> s1 [label="-68"];
+ s1 -> s1 [label="-67"];
+ s1 -> s1 [label="-66"];
+ s1 -> s1 [label="-65"];
+ s1 -> s1 [label="-64"];
+ s1 -> s1 [label="-63"];
+ s1 -> s1 [label="-62"];
+ s1 -> s1 [label="-61"];
+ s1 -> s1 [label="-60"];
+ s1 -> s1 [label="-59"];
+ s1 -> s1 [label="-58"];
+ s1 -> s1 [label="-57"];
+ s1 -> s1 [label="-56"];
+ s1 -> s1 [label="-55"];
+ s1 -> s1 [label="-54"];
+ s1 -> s1 [label="-53"];
+ s1 -> s1 [label="-52"];
+ s1 -> s1 [label="-51"];
+ s1 -> s1 [label="-50"];
+ s1 -> s1 [label="-49"];
+ s1 -> s1 [label="-48"];
+ s1 -> s1 [label="-47"];
+ s1 -> s1 [label="-46"];
+ s1 -> s1 [label="-45"];
+ s1 -> s1 [label="-44"];
+ s1 -> s1 [label="-43"];
+ s1 -> s1 [label="-42"];
+ s1 -> s1 [label="-41"];
+ s1 -> s1 [label="-40"];
+ s1 -> s1 [label="-39"];
+ s1 -> s1 [label="-38"];
+ s1 -> s1 [label="-37"];
+ s1 -> s1 [label="-36"];
+ s1 -> s1 [label="-35"];
+ s1 -> s1 [label="-34"];
+ s1 -> s1 [label="-33"];
+ s1 -> s1 [label="-32"];
+ s1 -> s1 [label="-31"];
+ s1 -> s1 [label="-30"];
+ s1 -> s1 [label="-29"];
+ s1 -> s1 [label="-28"];
+ s1 -> s1 [label="-27"];
+ s1 -> s1 [label="-26"];
+ s1 -> s1 [label="-25"];
+ s1 -> s1 [label="-24"];
+ s1 -> s1 [label="-23"];
+ s1 -> s1 [label="-22"];
+ s1 -> s1 [label="-21"];
+ s1 -> s1 [label="-20"];
+ s1 -> s1 [label="-19"];
+ s1 -> s1 [label="-18"];
+ s1 -> s1 [label="-17"];
+ s1 -> s1 [label="-16"];
+ s1 -> s1 [label="-15"];
+ s1 -> s1 [label="-14"];
+ s1 -> s1 [label="-13"];
+ s1 -> s1 [label="-12"];
+ s1 -> s1 [label="-11"];
+ s1 -> s1 [label="-10"];
+ s1 -> s1 [label="-9"];
+ s1 -> s1 [label="-8"];
+ s1 -> s1 [label="-7"];
+ s1 -> s1 [label="-6"];
+ s1 -> s1 [label="-5"];
+ s1 -> s1 [label="-4"];
+ s1 -> s1 [label="-3"];
+ s1 -> s1 [label="-2"];
+ s1 -> s1 [label="-1"];
+ s2 -> s1 [label="0"];
+ s2 -> s1 [label="1"];
+ s2 -> s1 [label="2"];
+ s2 -> s1 [label="3"];
+ s2 -> s1 [label="4"];
+ s2 -> s1 [label="5"];
+ s2 -> s1 [label="6"];
+ s2 -> s1 [label="7"];
+ s2 -> s1 [label="8"];
+ s2 -> s1 [label="9"];
+ s2 -> s1 [label="10"];
+ s2 -> s1 [label="11"];
+ s2 -> s1 [label="12"];
+ s2 -> s1 [label="13"];
+ s2 -> s1 [label="14"];
+ s2 -> s1 [label="15"];
+ s2 -> s1 [label="16"];
+ s2 -> s1 [label="17"];
+ s2 -> s1 [label="18"];
+ s2 -> s1 [label="19"];
+ s2 -> s1 [label="20"];
+ s2 -> s1 [label="21"];
+ s2 -> s1 [label="22"];
+ s2 -> s1 [label="23"];
+ s2 -> s1 [label="24"];
+ s2 -> s1 [label="25"];
+ s2 -> s1 [label="26"];
+ s2 -> s1 [label="27"];
+ s2 -> s1 [label="28"];
+ s2 -> s1 [label="29"];
+ s2 -> s1 [label="30"];
+ s2 -> s1 [label="31"];
+ s2 -> s1 [label="32"];
+ s2 -> s1 [label="33"];
+ s2 -> s1 [label="34"];
+ s2 -> s1 [label="35"];
+ s2 -> s1 [label="36"];
+ s2 -> s1 [label="37"];
+ s2 -> s1 [label="38"];
+ s2 -> s1 [label="39"];
+ s2 -> s1 [label="40"];
+ s2 -> s1 [label="41"];
+ s2 -> s1 [label="42"];
+ s2 -> s1 [label="43"];
+ s2 -> s1 [label="44"];
+ s2 -> s1 [label="45"];
+ s2 -> s1 [label="46"];
+ s2 -> s1 [label="47"];
+ s2 -> s1 [label="48"];
+ s2 -> s1 [label="49"];
+ s2 -> s1 [label="50"];
+ s2 -> s1 [label="51"];
+ s2 -> s1 [label="52"];
+ s2 -> s1 [label="53"];
+ s2 -> s1 [label="54"];
+ s2 -> s1 [label="55"];
+ s2 -> s1 [label="56"];
+ s2 -> s1 [label="57"];
+ s2 -> s1 [label="58"];
+ s2 -> s1 [label="59"];
+ s2 -> s1 [label="60"];
+ s2 -> s1 [label="61"];
+ s2 -> s1 [label="62"];
+ s2 -> s1 [label="63"];
+ s2 -> s1 [label="64"];
+ s2 -> s1 [label="65"];
+ s2 -> s1 [label="66"];
+ s2 -> s1 [label="67"];
+ s2 -> s1 [label="68"];
+ s2 -> s1 [label="69"];
+ s2 -> s1 [label="70"];
+ s2 -> s1 [label="71"];
+ s2 -> s1 [label="72"];
+ s2 -> s1 [label="73"];
+ s2 -> s1 [label="74"];
+ s2 -> s1 [label="75"];
+ s2 -> s1 [label="76"];
+ s2 -> s1 [label="77"];
+ s2 -> s1 [label="78"];
+ s2 -> s1 [label="79"];
+ s2 -> s1 [label="80"];
+ s2 -> s1 [label="81"];
+ s2 -> s1 [label="82"];
+ s2 -> s1 [label="83"];
+ s2 -> s1 [label="84"];
+ s2 -> s1 [label="85"];
+ s2 -> s1 [label="86"];
+ s2 -> s1 [label="87"];
+ s2 -> s1 [label="88"];
+ s2 -> s1 [label="89"];
+ s2 -> s1 [label="90"];
+ s2 -> s1 [label="91"];
+ s2 -> s1 [label="92"];
+ s2 -> s1 [label="93"];
+ s2 -> s1 [label="94"];
+ s2 -> s1 [label="95"];
+ s2 -> s1 [label="96"];
+ s2 -> s1 [label="97"];
+ s2 -> s1 [label="98"];
+ s2 -> s1 [label="99"];
+ s2 -> s1 [label="100"];
+ s2 -> s1 [label="101"];
+ s2 -> s1 [label="102"];
+ s2 -> s1 [label="103"];
+ s2 -> s1 [label="104"];
+ s2 -> s1 [label="105"];
+ s2 -> s1 [label="106"];
+ s2 -> s1 [label="107"];
+ s2 -> s1 [label="108"];
+ s2 -> s1 [label="109"];
+ s2 -> s1 [label="110"];
+ s2 -> s1 [label="111"];
+ s2 -> s1 [label="112"];
+ s2 -> s1 [label="113"];
+ s2 -> s1 [label="114"];
+ s2 -> s1 [label="115"];
+ s2 -> s1 [label="116"];
+ s2 -> s1 [label="117"];
+ s2 -> s1 [label="118"];
+ s2 -> s1 [label="119"];
+ s2 -> s1 [label="120"];
+ s2 -> s1 [label="121"];
+ s2 -> s1 [label="122"];
+ s2 -> s1 [label="123"];
+ s2 -> s1 [label="124"];
+ s2 -> s1 [label="125"];
+ s2 -> s1 [label="126"];
+ s2 -> s1 [label="127"];
+ s2 -> s0 [label="-128"];
+ s2 -> s0 [label="-127"];
+ s2 -> s0 [label="-126"];
+ s2 -> s0 [label="-125"];
+ s2 -> s0 [label="-124"];
+ s2 -> s0 [label="-123"];
+ s2 -> s0 [label="-122"];
+ s2 -> s0 [label="-121"];
+ s2 -> s0 [label="-120"];
+ s2 -> s0 [label="-119"];
+ s2 -> s0 [label="-118"];
+ s2 -> s0 [label="-117"];
+ s2 -> s0 [label="-116"];
+ s2 -> s0 [label="-115"];
+ s2 -> s0 [label="-114"];
+ s2 -> s0 [label="-113"];
+ s2 -> s0 [label="-112"];
+ s2 -> s0 [label="-111"];
+ s2 -> s0 [label="-110"];
+ s2 -> s0 [label="-109"];
+ s2 -> s0 [label="-108"];
+ s2 -> s0 [label="-107"];
+ s2 -> s0 [label="-106"];
+ s2 -> s0 [label="-105"];
+ s2 -> s0 [label="-104"];
+ s2 -> s0 [label="-103"];
+ s2 -> s0 [label="-102"];
+ s2 -> s0 [label="-101"];
+ s2 -> s0 [label="-100"];
+ s2 -> s0 [label="-99"];
+ s2 -> s0 [label="-98"];
+ s2 -> s0 [label="-97"];
+ s2 -> s0 [label="-96"];
+ s2 -> s0 [label="-95"];
+ s2 -> s0 [label="-94"];
+ s2 -> s0 [label="-93"];
+ s2 -> s0 [label="-92"];
+ s2 -> s0 [label="-91"];
+ s2 -> s0 [label="-90"];
+ s2 -> s0 [label="-89"];
+ s2 -> s0 [label="-88"];
+ s2 -> s0 [label="-87"];
+ s2 -> s0 [label="-86"];
+ s2 -> s0 [label="-85"];
+ s2 -> s0 [label="-84"];
+ s2 -> s0 [label="-83"];
+ s2 -> s0 [label="-82"];
+ s2 -> s0 [label="-81"];
+ s2 -> s0 [label="-80"];
+ s2 -> s0 [label="-79"];
+ s2 -> s0 [label="-78"];
+ s2 -> s0 [label="-77"];
+ s2 -> s0 [label="-76"];
+ s2 -> s0 [label="-75"];
+ s2 -> s0 [label="-74"];
+ s2 -> s0 [label="-73"];
+ s2 -> s0 [label="-72"];
+ s2 -> s0 [label="-71"];
+ s2 -> s0 [label="-70"];
+ s2 -> s0 [label="-69"];
+ s2 -> s0 [label="-68"];
+ s2 -> s0 [label="-67"];
+ s2 -> s0 [label="-66"];
+ s2 -> s0 [label="-65"];
+ s2 -> s1 [label="-64"];
+ s2 -> s1 [label="-63"];
+ s2 -> s1 [label="-62"];
+ s2 -> s1 [label="-61"];
+ s2 -> s1 [label="-60"];
+ s2 -> s1 [label="-59"];
+ s2 -> s1 [label="-58"];
+ s2 -> s1 [label="-57"];
+ s2 -> s1 [label="-56"];
+ s2 -> s1 [label="-55"];
+ s2 -> s1 [label="-54"];
+ s2 -> s1 [label="-53"];
+ s2 -> s1 [label="-52"];
+ s2 -> s1 [label="-51"];
+ s2 -> s1 [label="-50"];
+ s2 -> s1 [label="-49"];
+ s2 -> s1 [label="-48"];
+ s2 -> s1 [label="-47"];
+ s2 -> s1 [label="-46"];
+ s2 -> s1 [label="-45"];
+ s2 -> s1 [label="-44"];
+ s2 -> s1 [label="-43"];
+ s2 -> s1 [label="-42"];
+ s2 -> s1 [label="-41"];
+ s2 -> s1 [label="-40"];
+ s2 -> s1 [label="-39"];
+ s2 -> s1 [label="-38"];
+ s2 -> s1 [label="-37"];
+ s2 -> s1 [label="-36"];
+ s2 -> s1 [label="-35"];
+ s2 -> s1 [label="-34"];
+ s2 -> s1 [label="-33"];
+ s2 -> s1 [label="-32"];
+ s2 -> s1 [label="-31"];
+ s2 -> s1 [label="-30"];
+ s2 -> s1 [label="-29"];
+ s2 -> s1 [label="-28"];
+ s2 -> s1 [label="-27"];
+ s2 -> s1 [label="-26"];
+ s2 -> s1 [label="-25"];
+ s2 -> s1 [label="-24"];
+ s2 -> s1 [label="-23"];
+ s2 -> s1 [label="-22"];
+ s2 -> s1 [label="-21"];
+ s2 -> s1 [label="-20"];
+ s2 -> s1 [label="-19"];
+ s2 -> s1 [label="-18"];
+ s2 -> s1 [label="-17"];
+ s2 -> s1 [label="-16"];
+ s2 -> s1 [label="-15"];
+ s2 -> s1 [label="-14"];
+ s2 -> s1 [label="-13"];
+ s2 -> s1 [label="-12"];
+ s2 -> s1 [label="-11"];
+ s2 -> s1 [label="-10"];
+ s2 -> s1 [label="-9"];
+ s2 -> s1 [label="-8"];
+ s2 -> s1 [label="-7"];
+ s2 -> s1 [label="-6"];
+ s2 -> s1 [label="-5"];
+ s2 -> s1 [label="-4"];
+ s2 -> s1 [label="-3"];
+ s2 -> s1 [label="-2"];
+ s2 -> s1 [label="-1"];
+ s3 -> s1 [label="0"];
+ s3 -> s1 [label="1"];
+ s3 -> s1 [label="2"];
+ s3 -> s1 [label="3"];
+ s3 -> s1 [label="4"];
+ s3 -> s1 [label="5"];
+ s3 -> s1 [label="6"];
+ s3 -> s1 [label="7"];
+ s3 -> s1 [label="8"];
+ s3 -> s1 [label="9"];
+ s3 -> s1 [label="10"];
+ s3 -> s1 [label="11"];
+ s3 -> s1 [label="12"];
+ s3 -> s1 [label="13"];
+ s3 -> s1 [label="14"];
+ s3 -> s1 [label="15"];
+ s3 -> s1 [label="16"];
+ s3 -> s1 [label="17"];
+ s3 -> s1 [label="18"];
+ s3 -> s1 [label="19"];
+ s3 -> s1 [label="20"];
+ s3 -> s1 [label="21"];
+ s3 -> s1 [label="22"];
+ s3 -> s1 [label="23"];
+ s3 -> s1 [label="24"];
+ s3 -> s1 [label="25"];
+ s3 -> s1 [label="26"];
+ s3 -> s1 [label="27"];
+ s3 -> s1 [label="28"];
+ s3 -> s1 [label="29"];
+ s3 -> s1 [label="30"];
+ s3 -> s1 [label="31"];
+ s3 -> s1 [label="32"];
+ s3 -> s1 [label="33"];
+ s3 -> s1 [label="34"];
+ s3 -> s1 [label="35"];
+ s3 -> s1 [label="36"];
+ s3 -> s1 [label="37"];
+ s3 -> s1 [label="38"];
+ s3 -> s1 [label="39"];
+ s3 -> s1 [label="40"];
+ s3 -> s1 [label="41"];
+ s3 -> s1 [label="42"];
+ s3 -> s1 [label="43"];
+ s3 -> s1 [label="44"];
+ s3 -> s1 [label="45"];
+ s3 -> s1 [label="46"];
+ s3 -> s1 [label="47"];
+ s3 -> s1 [label="48"];
+ s3 -> s1 [label="49"];
+ s3 -> s1 [label="50"];
+ s3 -> s1 [label="51"];
+ s3 -> s1 [label="52"];
+ s3 -> s1 [label="53"];
+ s3 -> s1 [label="54"];
+ s3 -> s1 [label="55"];
+ s3 -> s1 [label="56"];
+ s3 -> s1 [label="57"];
+ s3 -> s1 [label="58"];
+ s3 -> s1 [label="59"];
+ s3 -> s1 [label="60"];
+ s3 -> s1 [label="61"];
+ s3 -> s1 [label="62"];
+ s3 -> s1 [label="63"];
+ s3 -> s1 [label="64"];
+ s3 -> s1 [label="65"];
+ s3 -> s1 [label="66"];
+ s3 -> s1 [label="67"];
+ s3 -> s1 [label="68"];
+ s3 -> s1 [label="69"];
+ s3 -> s1 [label="70"];
+ s3 -> s1 [label="71"];
+ s3 -> s1 [label="72"];
+ s3 -> s1 [label="73"];
+ s3 -> s1 [label="74"];
+ s3 -> s1 [label="75"];
+ s3 -> s1 [label="76"];
+ s3 -> s1 [label="77"];
+ s3 -> s1 [label="78"];
+ s3 -> s1 [label="79"];
+ s3 -> s1 [label="80"];
+ s3 -> s1 [label="81"];
+ s3 -> s1 [label="82"];
+ s3 -> s1 [label="83"];
+ s3 -> s1 [label="84"];
+ s3 -> s1 [label="85"];
+ s3 -> s1 [label="86"];
+ s3 -> s1 [label="87"];
+ s3 -> s1 [label="88"];
+ s3 -> s1 [label="89"];
+ s3 -> s1 [label="90"];
+ s3 -> s1 [label="91"];
+ s3 -> s1 [label="92"];
+ s3 -> s1 [label="93"];
+ s3 -> s1 [label="94"];
+ s3 -> s1 [label="95"];
+ s3 -> s1 [label="96"];
+ s3 -> s1 [label="97"];
+ s3 -> s1 [label="98"];
+ s3 -> s1 [label="99"];
+ s3 -> s1 [label="100"];
+ s3 -> s1 [label="101"];
+ s3 -> s1 [label="102"];
+ s3 -> s1 [label="103"];
+ s3 -> s1 [label="104"];
+ s3 -> s1 [label="105"];
+ s3 -> s1 [label="106"];
+ s3 -> s1 [label="107"];
+ s3 -> s1 [label="108"];
+ s3 -> s1 [label="109"];
+ s3 -> s1 [label="110"];
+ s3 -> s1 [label="111"];
+ s3 -> s1 [label="112"];
+ s3 -> s1 [label="113"];
+ s3 -> s1 [label="114"];
+ s3 -> s1 [label="115"];
+ s3 -> s1 [label="116"];
+ s3 -> s1 [label="117"];
+ s3 -> s1 [label="118"];
+ s3 -> s1 [label="119"];
+ s3 -> s1 [label="120"];
+ s3 -> s1 [label="121"];
+ s3 -> s1 [label="122"];
+ s3 -> s1 [label="123"];
+ s3 -> s1 [label="124"];
+ s3 -> s1 [label="125"];
+ s3 -> s1 [label="126"];
+ s3 -> s1 [label="127"];
+ s3 -> s1 [label="-128"];
+ s3 -> s1 [label="-127"];
+ s3 -> s1 [label="-126"];
+ s3 -> s1 [label="-125"];
+ s3 -> s1 [label="-124"];
+ s3 -> s1 [label="-123"];
+ s3 -> s1 [label="-122"];
+ s3 -> s1 [label="-121"];
+ s3 -> s1 [label="-120"];
+ s3 -> s1 [label="-119"];
+ s3 -> s1 [label="-118"];
+ s3 -> s1 [label="-117"];
+ s3 -> s1 [label="-116"];
+ s3 -> s1 [label="-115"];
+ s3 -> s1 [label="-114"];
+ s3 -> s1 [label="-113"];
+ s3 -> s1 [label="-112"];
+ s3 -> s1 [label="-111"];
+ s3 -> s1 [label="-110"];
+ s3 -> s1 [label="-109"];
+ s3 -> s1 [label="-108"];
+ s3 -> s1 [label="-107"];
+ s3 -> s1 [label="-106"];
+ s3 -> s1 [label="-105"];
+ s3 -> s1 [label="-104"];
+ s3 -> s1 [label="-103"];
+ s3 -> s1 [label="-102"];
+ s3 -> s1 [label="-101"];
+ s3 -> s1 [label="-100"];
+ s3 -> s1 [label="-99"];
+ s3 -> s1 [label="-98"];
+ s3 -> s1 [label="-97"];
+ s3 -> s2 [label="-96"];
+ s3 -> s2 [label="-95"];
+ s3 -> s2 [label="-94"];
+ s3 -> s2 [label="-93"];
+ s3 -> s2 [label="-92"];
+ s3 -> s2 [label="-91"];
+ s3 -> s2 [label="-90"];
+ s3 -> s2 [label="-89"];
+ s3 -> s2 [label="-88"];
+ s3 -> s2 [label="-87"];
+ s3 -> s2 [label="-86"];
+ s3 -> s2 [label="-85"];
+ s3 -> s2 [label="-84"];
+ s3 -> s2 [label="-83"];
+ s3 -> s2 [label="-82"];
+ s3 -> s2 [label="-81"];
+ s3 -> s2 [label="-80"];
+ s3 -> s2 [label="-79"];
+ s3 -> s2 [label="-78"];
+ s3 -> s2 [label="-77"];
+ s3 -> s2 [label="-76"];
+ s3 -> s2 [label="-75"];
+ s3 -> s2 [label="-74"];
+ s3 -> s2 [label="-73"];
+ s3 -> s2 [label="-72"];
+ s3 -> s2 [label="-71"];
+ s3 -> s2 [label="-70"];
+ s3 -> s2 [label="-69"];
+ s3 -> s2 [label="-68"];
+ s3 -> s2 [label="-67"];
+ s3 -> s2 [label="-66"];
+ s3 -> s2 [label="-65"];
+ s3 -> s1 [label="-64"];
+ s3 -> s1 [label="-63"];
+ s3 -> s1 [label="-62"];
+ s3 -> s1 [label="-61"];
+ s3 -> s1 [label="-60"];
+ s3 -> s1 [label="-59"];
+ s3 -> s1 [label="-58"];
+ s3 -> s1 [label="-57"];
+ s3 -> s1 [label="-56"];
+ s3 -> s1 [label="-55"];
+ s3 -> s1 [label="-54"];
+ s3 -> s1 [label="-53"];
+ s3 -> s1 [label="-52"];
+ s3 -> s1 [label="-51"];
+ s3 -> s1 [label="-50"];
+ s3 -> s1 [label="-49"];
+ s3 -> s1 [label="-48"];
+ s3 -> s1 [label="-47"];
+ s3 -> s1 [label="-46"];
+ s3 -> s1 [label="-45"];
+ s3 -> s1 [label="-44"];
+ s3 -> s1 [label="-43"];
+ s3 -> s1 [label="-42"];
+ s3 -> s1 [label="-41"];
+ s3 -> s1 [label="-40"];
+ s3 -> s1 [label="-39"];
+ s3 -> s1 [label="-38"];
+ s3 -> s1 [label="-37"];
+ s3 -> s1 [label="-36"];
+ s3 -> s1 [label="-35"];
+ s3 -> s1 [label="-34"];
+ s3 -> s1 [label="-33"];
+ s3 -> s1 [label="-32"];
+ s3 -> s1 [label="-31"];
+ s3 -> s1 [label="-30"];
+ s3 -> s1 [label="-29"];
+ s3 -> s1 [label="-28"];
+ s3 -> s1 [label="-27"];
+ s3 -> s1 [label="-26"];
+ s3 -> s1 [label="-25"];
+ s3 -> s1 [label="-24"];
+ s3 -> s1 [label="-23"];
+ s3 -> s1 [label="-22"];
+ s3 -> s1 [label="-21"];
+ s3 -> s1 [label="-20"];
+ s3 -> s1 [label="-19"];
+ s3 -> s1 [label="-18"];
+ s3 -> s1 [label="-17"];
+ s3 -> s1 [label="-16"];
+ s3 -> s1 [label="-15"];
+ s3 -> s1 [label="-14"];
+ s3 -> s1 [label="-13"];
+ s3 -> s1 [label="-12"];
+ s3 -> s1 [label="-11"];
+ s3 -> s1 [label="-10"];
+ s3 -> s1 [label="-9"];
+ s3 -> s1 [label="-8"];
+ s3 -> s1 [label="-7"];
+ s3 -> s1 [label="-6"];
+ s3 -> s1 [label="-5"];
+ s3 -> s1 [label="-4"];
+ s3 -> s1 [label="-3"];
+ s3 -> s1 [label="-2"];
+ s3 -> s1 [label="-1"];
+ s4 -> s1 [label="0"];
+ s4 -> s1 [label="1"];
+ s4 -> s1 [label="2"];
+ s4 -> s1 [label="3"];
+ s4 -> s1 [label="4"];
+ s4 -> s1 [label="5"];
+ s4 -> s1 [label="6"];
+ s4 -> s1 [label="7"];
+ s4 -> s1 [label="8"];
+ s4 -> s1 [label="9"];
+ s4 -> s1 [label="10"];
+ s4 -> s1 [label="11"];
+ s4 -> s1 [label="12"];
+ s4 -> s1 [label="13"];
+ s4 -> s1 [label="14"];
+ s4 -> s1 [label="15"];
+ s4 -> s1 [label="16"];
+ s4 -> s1 [label="17"];
+ s4 -> s1 [label="18"];
+ s4 -> s1 [label="19"];
+ s4 -> s1 [label="20"];
+ s4 -> s1 [label="21"];
+ s4 -> s1 [label="22"];
+ s4 -> s1 [label="23"];
+ s4 -> s1 [label="24"];
+ s4 -> s1 [label="25"];
+ s4 -> s1 [label="26"];
+ s4 -> s1 [label="27"];
+ s4 -> s1 [label="28"];
+ s4 -> s1 [label="29"];
+ s4 -> s1 [label="30"];
+ s4 -> s1 [label="31"];
+ s4 -> s1 [label="32"];
+ s4 -> s1 [label="33"];
+ s4 -> s1 [label="34"];
+ s4 -> s1 [label="35"];
+ s4 -> s1 [label="36"];
+ s4 -> s1 [label="37"];
+ s4 -> s1 [label="38"];
+ s4 -> s1 [label="39"];
+ s4 -> s1 [label="40"];
+ s4 -> s1 [label="41"];
+ s4 -> s1 [label="42"];
+ s4 -> s1 [label="43"];
+ s4 -> s1 [label="44"];
+ s4 -> s1 [label="45"];
+ s4 -> s1 [label="46"];
+ s4 -> s1 [label="47"];
+ s4 -> s1 [label="48"];
+ s4 -> s1 [label="49"];
+ s4 -> s1 [label="50"];
+ s4 -> s1 [label="51"];
+ s4 -> s1 [label="52"];
+ s4 -> s1 [label="53"];
+ s4 -> s1 [label="54"];
+ s4 -> s1 [label="55"];
+ s4 -> s1 [label="56"];
+ s4 -> s1 [label="57"];
+ s4 -> s1 [label="58"];
+ s4 -> s1 [label="59"];
+ s4 -> s1 [label="60"];
+ s4 -> s1 [label="61"];
+ s4 -> s1 [label="62"];
+ s4 -> s1 [label="63"];
+ s4 -> s1 [label="64"];
+ s4 -> s1 [label="65"];
+ s4 -> s1 [label="66"];
+ s4 -> s1 [label="67"];
+ s4 -> s1 [label="68"];
+ s4 -> s1 [label="69"];
+ s4 -> s1 [label="70"];
+ s4 -> s1 [label="71"];
+ s4 -> s1 [label="72"];
+ s4 -> s1 [label="73"];
+ s4 -> s1 [label="74"];
+ s4 -> s1 [label="75"];
+ s4 -> s1 [label="76"];
+ s4 -> s1 [label="77"];
+ s4 -> s1 [label="78"];
+ s4 -> s1 [label="79"];
+ s4 -> s1 [label="80"];
+ s4 -> s1 [label="81"];
+ s4 -> s1 [label="82"];
+ s4 -> s1 [label="83"];
+ s4 -> s1 [label="84"];
+ s4 -> s1 [label="85"];
+ s4 -> s1 [label="86"];
+ s4 -> s1 [label="87"];
+ s4 -> s1 [label="88"];
+ s4 -> s1 [label="89"];
+ s4 -> s1 [label="90"];
+ s4 -> s1 [label="91"];
+ s4 -> s1 [label="92"];
+ s4 -> s1 [label="93"];
+ s4 -> s1 [label="94"];
+ s4 -> s1 [label="95"];
+ s4 -> s1 [label="96"];
+ s4 -> s1 [label="97"];
+ s4 -> s1 [label="98"];
+ s4 -> s1 [label="99"];
+ s4 -> s1 [label="100"];
+ s4 -> s1 [label="101"];
+ s4 -> s1 [label="102"];
+ s4 -> s1 [label="103"];
+ s4 -> s1 [label="104"];
+ s4 -> s1 [label="105"];
+ s4 -> s1 [label="106"];
+ s4 -> s1 [label="107"];
+ s4 -> s1 [label="108"];
+ s4 -> s1 [label="109"];
+ s4 -> s1 [label="110"];
+ s4 -> s1 [label="111"];
+ s4 -> s1 [label="112"];
+ s4 -> s1 [label="113"];
+ s4 -> s1 [label="114"];
+ s4 -> s1 [label="115"];
+ s4 -> s1 [label="116"];
+ s4 -> s1 [label="117"];
+ s4 -> s1 [label="118"];
+ s4 -> s1 [label="119"];
+ s4 -> s1 [label="120"];
+ s4 -> s1 [label="121"];
+ s4 -> s1 [label="122"];
+ s4 -> s1 [label="123"];
+ s4 -> s1 [label="124"];
+ s4 -> s1 [label="125"];
+ s4 -> s1 [label="126"];
+ s4 -> s1 [label="127"];
+ s4 -> s2 [label="-128"];
+ s4 -> s2 [label="-127"];
+ s4 -> s2 [label="-126"];
+ s4 -> s2 [label="-125"];
+ s4 -> s2 [label="-124"];
+ s4 -> s2 [label="-123"];
+ s4 -> s2 [label="-122"];
+ s4 -> s2 [label="-121"];
+ s4 -> s2 [label="-120"];
+ s4 -> s2 [label="-119"];
+ s4 -> s2 [label="-118"];
+ s4 -> s2 [label="-117"];
+ s4 -> s2 [label="-116"];
+ s4 -> s2 [label="-115"];
+ s4 -> s2 [label="-114"];
+ s4 -> s2 [label="-113"];
+ s4 -> s2 [label="-112"];
+ s4 -> s2 [label="-111"];
+ s4 -> s2 [label="-110"];
+ s4 -> s2 [label="-109"];
+ s4 -> s2 [label="-108"];
+ s4 -> s2 [label="-107"];
+ s4 -> s2 [label="-106"];
+ s4 -> s2 [label="-105"];
+ s4 -> s2 [label="-104"];
+ s4 -> s2 [label="-103"];
+ s4 -> s2 [label="-102"];
+ s4 -> s2 [label="-101"];
+ s4 -> s2 [label="-100"];
+ s4 -> s2 [label="-99"];
+ s4 -> s2 [label="-98"];
+ s4 -> s2 [label="-97"];
+ s4 -> s2 [label="-96"];
+ s4 -> s2 [label="-95"];
+ s4 -> s2 [label="-94"];
+ s4 -> s2 [label="-93"];
+ s4 -> s2 [label="-92"];
+ s4 -> s2 [label="-91"];
+ s4 -> s2 [label="-90"];
+ s4 -> s2 [label="-89"];
+ s4 -> s2 [label="-88"];
+ s4 -> s2 [label="-87"];
+ s4 -> s2 [label="-86"];
+ s4 -> s2 [label="-85"];
+ s4 -> s2 [label="-84"];
+ s4 -> s2 [label="-83"];
+ s4 -> s2 [label="-82"];
+ s4 -> s2 [label="-81"];
+ s4 -> s2 [label="-80"];
+ s4 -> s2 [label="-79"];
+ s4 -> s2 [label="-78"];
+ s4 -> s2 [label="-77"];
+ s4 -> s2 [label="-76"];
+ s4 -> s2 [label="-75"];
+ s4 -> s2 [label="-74"];
+ s4 -> s2 [label="-73"];
+ s4 -> s2 [label="-72"];
+ s4 -> s2 [label="-71"];
+ s4 -> s2 [label="-70"];
+ s4 -> s2 [label="-69"];
+ s4 -> s2 [label="-68"];
+ s4 -> s2 [label="-67"];
+ s4 -> s2 [label="-66"];
+ s4 -> s2 [label="-65"];
+ s4 -> s1 [label="-64"];
+ s4 -> s1 [label="-63"];
+ s4 -> s1 [label="-62"];
+ s4 -> s1 [label="-61"];
+ s4 -> s1 [label="-60"];
+ s4 -> s1 [label="-59"];
+ s4 -> s1 [label="-58"];
+ s4 -> s1 [label="-57"];
+ s4 -> s1 [label="-56"];
+ s4 -> s1 [label="-55"];
+ s4 -> s1 [label="-54"];
+ s4 -> s1 [label="-53"];
+ s4 -> s1 [label="-52"];
+ s4 -> s1 [label="-51"];
+ s4 -> s1 [label="-50"];
+ s4 -> s1 [label="-49"];
+ s4 -> s1 [label="-48"];
+ s4 -> s1 [label="-47"];
+ s4 -> s1 [label="-46"];
+ s4 -> s1 [label="-45"];
+ s4 -> s1 [label="-44"];
+ s4 -> s1 [label="-43"];
+ s4 -> s1 [label="-42"];
+ s4 -> s1 [label="-41"];
+ s4 -> s1 [label="-40"];
+ s4 -> s1 [label="-39"];
+ s4 -> s1 [label="-38"];
+ s4 -> s1 [label="-37"];
+ s4 -> s1 [label="-36"];
+ s4 -> s1 [label="-35"];
+ s4 -> s1 [label="-34"];
+ s4 -> s1 [label="-33"];
+ s4 -> s1 [label="-32"];
+ s4 -> s1 [label="-31"];
+ s4 -> s1 [label="-30"];
+ s4 -> s1 [label="-29"];
+ s4 -> s1 [label="-28"];
+ s4 -> s1 [label="-27"];
+ s4 -> s1 [label="-26"];
+ s4 -> s1 [label="-25"];
+ s4 -> s1 [label="-24"];
+ s4 -> s1 [label="-23"];
+ s4 -> s1 [label="-22"];
+ s4 -> s1 [label="-21"];
+ s4 -> s1 [label="-20"];
+ s4 -> s1 [label="-19"];
+ s4 -> s1 [label="-18"];
+ s4 -> s1 [label="-17"];
+ s4 -> s1 [label="-16"];
+ s4 -> s1 [label="-15"];
+ s4 -> s1 [label="-14"];
+ s4 -> s1 [label="-13"];
+ s4 -> s1 [label="-12"];
+ s4 -> s1 [label="-11"];
+ s4 -> s1 [label="-10"];
+ s4 -> s1 [label="-9"];
+ s4 -> s1 [label="-8"];
+ s4 -> s1 [label="-7"];
+ s4 -> s1 [label="-6"];
+ s4 -> s1 [label="-5"];
+ s4 -> s1 [label="-4"];
+ s4 -> s1 [label="-3"];
+ s4 -> s1 [label="-2"];
+ s4 -> s1 [label="-1"];
+ s5 -> s1 [label="0"];
+ s5 -> s1 [label="1"];
+ s5 -> s1 [label="2"];
+ s5 -> s1 [label="3"];
+ s5 -> s1 [label="4"];
+ s5 -> s1 [label="5"];
+ s5 -> s1 [label="6"];
+ s5 -> s1 [label="7"];
+ s5 -> s1 [label="8"];
+ s5 -> s1 [label="9"];
+ s5 -> s1 [label="10"];
+ s5 -> s1 [label="11"];
+ s5 -> s1 [label="12"];
+ s5 -> s1 [label="13"];
+ s5 -> s1 [label="14"];
+ s5 -> s1 [label="15"];
+ s5 -> s1 [label="16"];
+ s5 -> s1 [label="17"];
+ s5 -> s1 [label="18"];
+ s5 -> s1 [label="19"];
+ s5 -> s1 [label="20"];
+ s5 -> s1 [label="21"];
+ s5 -> s1 [label="22"];
+ s5 -> s1 [label="23"];
+ s5 -> s1 [label="24"];
+ s5 -> s1 [label="25"];
+ s5 -> s1 [label="26"];
+ s5 -> s1 [label="27"];
+ s5 -> s1 [label="28"];
+ s5 -> s1 [label="29"];
+ s5 -> s1 [label="30"];
+ s5 -> s1 [label="31"];
+ s5 -> s1 [label="32"];
+ s5 -> s1 [label="33"];
+ s5 -> s1 [label="34"];
+ s5 -> s1 [label="35"];
+ s5 -> s1 [label="36"];
+ s5 -> s1 [label="37"];
+ s5 -> s1 [label="38"];
+ s5 -> s1 [label="39"];
+ s5 -> s1 [label="40"];
+ s5 -> s1 [label="41"];
+ s5 -> s1 [label="42"];
+ s5 -> s1 [label="43"];
+ s5 -> s1 [label="44"];
+ s5 -> s1 [label="45"];
+ s5 -> s1 [label="46"];
+ s5 -> s1 [label="47"];
+ s5 -> s1 [label="48"];
+ s5 -> s1 [label="49"];
+ s5 -> s1 [label="50"];
+ s5 -> s1 [label="51"];
+ s5 -> s1 [label="52"];
+ s5 -> s1 [label="53"];
+ s5 -> s1 [label="54"];
+ s5 -> s1 [label="55"];
+ s5 -> s1 [label="56"];
+ s5 -> s1 [label="57"];
+ s5 -> s1 [label="58"];
+ s5 -> s1 [label="59"];
+ s5 -> s1 [label="60"];
+ s5 -> s1 [label="61"];
+ s5 -> s1 [label="62"];
+ s5 -> s1 [label="63"];
+ s5 -> s1 [label="64"];
+ s5 -> s1 [label="65"];
+ s5 -> s1 [label="66"];
+ s5 -> s1 [label="67"];
+ s5 -> s1 [label="68"];
+ s5 -> s1 [label="69"];
+ s5 -> s1 [label="70"];
+ s5 -> s1 [label="71"];
+ s5 -> s1 [label="72"];
+ s5 -> s1 [label="73"];
+ s5 -> s1 [label="74"];
+ s5 -> s1 [label="75"];
+ s5 -> s1 [label="76"];
+ s5 -> s1 [label="77"];
+ s5 -> s1 [label="78"];
+ s5 -> s1 [label="79"];
+ s5 -> s1 [label="80"];
+ s5 -> s1 [label="81"];
+ s5 -> s1 [label="82"];
+ s5 -> s1 [label="83"];
+ s5 -> s1 [label="84"];
+ s5 -> s1 [label="85"];
+ s5 -> s1 [label="86"];
+ s5 -> s1 [label="87"];
+ s5 -> s1 [label="88"];
+ s5 -> s1 [label="89"];
+ s5 -> s1 [label="90"];
+ s5 -> s1 [label="91"];
+ s5 -> s1 [label="92"];
+ s5 -> s1 [label="93"];
+ s5 -> s1 [label="94"];
+ s5 -> s1 [label="95"];
+ s5 -> s1 [label="96"];
+ s5 -> s1 [label="97"];
+ s5 -> s1 [label="98"];
+ s5 -> s1 [label="99"];
+ s5 -> s1 [label="100"];
+ s5 -> s1 [label="101"];
+ s5 -> s1 [label="102"];
+ s5 -> s1 [label="103"];
+ s5 -> s1 [label="104"];
+ s5 -> s1 [label="105"];
+ s5 -> s1 [label="106"];
+ s5 -> s1 [label="107"];
+ s5 -> s1 [label="108"];
+ s5 -> s1 [label="109"];
+ s5 -> s1 [label="110"];
+ s5 -> s1 [label="111"];
+ s5 -> s1 [label="112"];
+ s5 -> s1 [label="113"];
+ s5 -> s1 [label="114"];
+ s5 -> s1 [label="115"];
+ s5 -> s1 [label="116"];
+ s5 -> s1 [label="117"];
+ s5 -> s1 [label="118"];
+ s5 -> s1 [label="119"];
+ s5 -> s1 [label="120"];
+ s5 -> s1 [label="121"];
+ s5 -> s1 [label="122"];
+ s5 -> s1 [label="123"];
+ s5 -> s1 [label="124"];
+ s5 -> s1 [label="125"];
+ s5 -> s1 [label="126"];
+ s5 -> s1 [label="127"];
+ s5 -> s2 [label="-128"];
+ s5 -> s2 [label="-127"];
+ s5 -> s2 [label="-126"];
+ s5 -> s2 [label="-125"];
+ s5 -> s2 [label="-124"];
+ s5 -> s2 [label="-123"];
+ s5 -> s2 [label="-122"];
+ s5 -> s2 [label="-121"];
+ s5 -> s2 [label="-120"];
+ s5 -> s2 [label="-119"];
+ s5 -> s2 [label="-118"];
+ s5 -> s2 [label="-117"];
+ s5 -> s2 [label="-116"];
+ s5 -> s2 [label="-115"];
+ s5 -> s2 [label="-114"];
+ s5 -> s2 [label="-113"];
+ s5 -> s2 [label="-112"];
+ s5 -> s2 [label="-111"];
+ s5 -> s2 [label="-110"];
+ s5 -> s2 [label="-109"];
+ s5 -> s2 [label="-108"];
+ s5 -> s2 [label="-107"];
+ s5 -> s2 [label="-106"];
+ s5 -> s2 [label="-105"];
+ s5 -> s2 [label="-104"];
+ s5 -> s2 [label="-103"];
+ s5 -> s2 [label="-102"];
+ s5 -> s2 [label="-101"];
+ s5 -> s2 [label="-100"];
+ s5 -> s2 [label="-99"];
+ s5 -> s2 [label="-98"];
+ s5 -> s2 [label="-97"];
+ s5 -> s1 [label="-96"];
+ s5 -> s1 [label="-95"];
+ s5 -> s1 [label="-94"];
+ s5 -> s1 [label="-93"];
+ s5 -> s1 [label="-92"];
+ s5 -> s1 [label="-91"];
+ s5 -> s1 [label="-90"];
+ s5 -> s1 [label="-89"];
+ s5 -> s1 [label="-88"];
+ s5 -> s1 [label="-87"];
+ s5 -> s1 [label="-86"];
+ s5 -> s1 [label="-85"];
+ s5 -> s1 [label="-84"];
+ s5 -> s1 [label="-83"];
+ s5 -> s1 [label="-82"];
+ s5 -> s1 [label="-81"];
+ s5 -> s1 [label="-80"];
+ s5 -> s1 [label="-79"];
+ s5 -> s1 [label="-78"];
+ s5 -> s1 [label="-77"];
+ s5 -> s1 [label="-76"];
+ s5 -> s1 [label="-75"];
+ s5 -> s1 [label="-74"];
+ s5 -> s1 [label="-73"];
+ s5 -> s1 [label="-72"];
+ s5 -> s1 [label="-71"];
+ s5 -> s1 [label="-70"];
+ s5 -> s1 [label="-69"];
+ s5 -> s1 [label="-68"];
+ s5 -> s1 [label="-67"];
+ s5 -> s1 [label="-66"];
+ s5 -> s1 [label="-65"];
+ s5 -> s1 [label="-64"];
+ s5 -> s1 [label="-63"];
+ s5 -> s1 [label="-62"];
+ s5 -> s1 [label="-61"];
+ s5 -> s1 [label="-60"];
+ s5 -> s1 [label="-59"];
+ s5 -> s1 [label="-58"];
+ s5 -> s1 [label="-57"];
+ s5 -> s1 [label="-56"];
+ s5 -> s1 [label="-55"];
+ s5 -> s1 [label="-54"];
+ s5 -> s1 [label="-53"];
+ s5 -> s1 [label="-52"];
+ s5 -> s1 [label="-51"];
+ s5 -> s1 [label="-50"];
+ s5 -> s1 [label="-49"];
+ s5 -> s1 [label="-48"];
+ s5 -> s1 [label="-47"];
+ s5 -> s1 [label="-46"];
+ s5 -> s1 [label="-45"];
+ s5 -> s1 [label="-44"];
+ s5 -> s1 [label="-43"];
+ s5 -> s1 [label="-42"];
+ s5 -> s1 [label="-41"];
+ s5 -> s1 [label="-40"];
+ s5 -> s1 [label="-39"];
+ s5 -> s1 [label="-38"];
+ s5 -> s1 [label="-37"];
+ s5 -> s1 [label="-36"];
+ s5 -> s1 [label="-35"];
+ s5 -> s1 [label="-34"];
+ s5 -> s1 [label="-33"];
+ s5 -> s1 [label="-32"];
+ s5 -> s1 [label="-31"];
+ s5 -> s1 [label="-30"];
+ s5 -> s1 [label="-29"];
+ s5 -> s1 [label="-28"];
+ s5 -> s1 [label="-27"];
+ s5 -> s1 [label="-26"];
+ s5 -> s1 [label="-25"];
+ s5 -> s1 [label="-24"];
+ s5 -> s1 [label="-23"];
+ s5 -> s1 [label="-22"];
+ s5 -> s1 [label="-21"];
+ s5 -> s1 [label="-20"];
+ s5 -> s1 [label="-19"];
+ s5 -> s1 [label="-18"];
+ s5 -> s1 [label="-17"];
+ s5 -> s1 [label="-16"];
+ s5 -> s1 [label="-15"];
+ s5 -> s1 [label="-14"];
+ s5 -> s1 [label="-13"];
+ s5 -> s1 [label="-12"];
+ s5 -> s1 [label="-11"];
+ s5 -> s1 [label="-10"];
+ s5 -> s1 [label="-9"];
+ s5 -> s1 [label="-8"];
+ s5 -> s1 [label="-7"];
+ s5 -> s1 [label="-6"];
+ s5 -> s1 [label="-5"];
+ s5 -> s1 [label="-4"];
+ s5 -> s1 [label="-3"];
+ s5 -> s1 [label="-2"];
+ s5 -> s1 [label="-1"];
+ s6 -> s1 [label="0"];
+ s6 -> s1 [label="1"];
+ s6 -> s1 [label="2"];
+ s6 -> s1 [label="3"];
+ s6 -> s1 [label="4"];
+ s6 -> s1 [label="5"];
+ s6 -> s1 [label="6"];
+ s6 -> s1 [label="7"];
+ s6 -> s1 [label="8"];
+ s6 -> s1 [label="9"];
+ s6 -> s1 [label="10"];
+ s6 -> s1 [label="11"];
+ s6 -> s1 [label="12"];
+ s6 -> s1 [label="13"];
+ s6 -> s1 [label="14"];
+ s6 -> s1 [label="15"];
+ s6 -> s1 [label="16"];
+ s6 -> s1 [label="17"];
+ s6 -> s1 [label="18"];
+ s6 -> s1 [label="19"];
+ s6 -> s1 [label="20"];
+ s6 -> s1 [label="21"];
+ s6 -> s1 [label="22"];
+ s6 -> s1 [label="23"];
+ s6 -> s1 [label="24"];
+ s6 -> s1 [label="25"];
+ s6 -> s1 [label="26"];
+ s6 -> s1 [label="27"];
+ s6 -> s1 [label="28"];
+ s6 -> s1 [label="29"];
+ s6 -> s1 [label="30"];
+ s6 -> s1 [label="31"];
+ s6 -> s1 [label="32"];
+ s6 -> s1 [label="33"];
+ s6 -> s1 [label="34"];
+ s6 -> s1 [label="35"];
+ s6 -> s1 [label="36"];
+ s6 -> s1 [label="37"];
+ s6 -> s1 [label="38"];
+ s6 -> s1 [label="39"];
+ s6 -> s1 [label="40"];
+ s6 -> s1 [label="41"];
+ s6 -> s1 [label="42"];
+ s6 -> s1 [label="43"];
+ s6 -> s1 [label="44"];
+ s6 -> s1 [label="45"];
+ s6 -> s1 [label="46"];
+ s6 -> s1 [label="47"];
+ s6 -> s1 [label="48"];
+ s6 -> s1 [label="49"];
+ s6 -> s1 [label="50"];
+ s6 -> s1 [label="51"];
+ s6 -> s1 [label="52"];
+ s6 -> s1 [label="53"];
+ s6 -> s1 [label="54"];
+ s6 -> s1 [label="55"];
+ s6 -> s1 [label="56"];
+ s6 -> s1 [label="57"];
+ s6 -> s1 [label="58"];
+ s6 -> s1 [label="59"];
+ s6 -> s1 [label="60"];
+ s6 -> s1 [label="61"];
+ s6 -> s1 [label="62"];
+ s6 -> s1 [label="63"];
+ s6 -> s1 [label="64"];
+ s6 -> s1 [label="65"];
+ s6 -> s1 [label="66"];
+ s6 -> s1 [label="67"];
+ s6 -> s1 [label="68"];
+ s6 -> s1 [label="69"];
+ s6 -> s1 [label="70"];
+ s6 -> s1 [label="71"];
+ s6 -> s1 [label="72"];
+ s6 -> s1 [label="73"];
+ s6 -> s1 [label="74"];
+ s6 -> s1 [label="75"];
+ s6 -> s1 [label="76"];
+ s6 -> s1 [label="77"];
+ s6 -> s1 [label="78"];
+ s6 -> s1 [label="79"];
+ s6 -> s1 [label="80"];
+ s6 -> s1 [label="81"];
+ s6 -> s1 [label="82"];
+ s6 -> s1 [label="83"];
+ s6 -> s1 [label="84"];
+ s6 -> s1 [label="85"];
+ s6 -> s1 [label="86"];
+ s6 -> s1 [label="87"];
+ s6 -> s1 [label="88"];
+ s6 -> s1 [label="89"];
+ s6 -> s1 [label="90"];
+ s6 -> s1 [label="91"];
+ s6 -> s1 [label="92"];
+ s6 -> s1 [label="93"];
+ s6 -> s1 [label="94"];
+ s6 -> s1 [label="95"];
+ s6 -> s1 [label="96"];
+ s6 -> s1 [label="97"];
+ s6 -> s1 [label="98"];
+ s6 -> s1 [label="99"];
+ s6 -> s1 [label="100"];
+ s6 -> s1 [label="101"];
+ s6 -> s1 [label="102"];
+ s6 -> s1 [label="103"];
+ s6 -> s1 [label="104"];
+ s6 -> s1 [label="105"];
+ s6 -> s1 [label="106"];
+ s6 -> s1 [label="107"];
+ s6 -> s1 [label="108"];
+ s6 -> s1 [label="109"];
+ s6 -> s1 [label="110"];
+ s6 -> s1 [label="111"];
+ s6 -> s1 [label="112"];
+ s6 -> s1 [label="113"];
+ s6 -> s1 [label="114"];
+ s6 -> s1 [label="115"];
+ s6 -> s1 [label="116"];
+ s6 -> s1 [label="117"];
+ s6 -> s1 [label="118"];
+ s6 -> s1 [label="119"];
+ s6 -> s1 [label="120"];
+ s6 -> s1 [label="121"];
+ s6 -> s1 [label="122"];
+ s6 -> s1 [label="123"];
+ s6 -> s1 [label="124"];
+ s6 -> s1 [label="125"];
+ s6 -> s1 [label="126"];
+ s6 -> s1 [label="127"];
+ s6 -> s1 [label="-128"];
+ s6 -> s1 [label="-127"];
+ s6 -> s1 [label="-126"];
+ s6 -> s1 [label="-125"];
+ s6 -> s1 [label="-124"];
+ s6 -> s1 [label="-123"];
+ s6 -> s1 [label="-122"];
+ s6 -> s1 [label="-121"];
+ s6 -> s1 [label="-120"];
+ s6 -> s1 [label="-119"];
+ s6 -> s1 [label="-118"];
+ s6 -> s1 [label="-117"];
+ s6 -> s1 [label="-116"];
+ s6 -> s1 [label="-115"];
+ s6 -> s1 [label="-114"];
+ s6 -> s1 [label="-113"];
+ s6 -> s4 [label="-112"];
+ s6 -> s4 [label="-111"];
+ s6 -> s4 [label="-110"];
+ s6 -> s4 [label="-109"];
+ s6 -> s4 [label="-108"];
+ s6 -> s4 [label="-107"];
+ s6 -> s4 [label="-106"];
+ s6 -> s4 [label="-105"];
+ s6 -> s4 [label="-104"];
+ s6 -> s4 [label="-103"];
+ s6 -> s4 [label="-102"];
+ s6 -> s4 [label="-101"];
+ s6 -> s4 [label="-100"];
+ s6 -> s4 [label="-99"];
+ s6 -> s4 [label="-98"];
+ s6 -> s4 [label="-97"];
+ s6 -> s4 [label="-96"];
+ s6 -> s4 [label="-95"];
+ s6 -> s4 [label="-94"];
+ s6 -> s4 [label="-93"];
+ s6 -> s4 [label="-92"];
+ s6 -> s4 [label="-91"];
+ s6 -> s4 [label="-90"];
+ s6 -> s4 [label="-89"];
+ s6 -> s4 [label="-88"];
+ s6 -> s4 [label="-87"];
+ s6 -> s4 [label="-86"];
+ s6 -> s4 [label="-85"];
+ s6 -> s4 [label="-84"];
+ s6 -> s4 [label="-83"];
+ s6 -> s4 [label="-82"];
+ s6 -> s4 [label="-81"];
+ s6 -> s4 [label="-80"];
+ s6 -> s4 [label="-79"];
+ s6 -> s4 [label="-78"];
+ s6 -> s4 [label="-77"];
+ s6 -> s4 [label="-76"];
+ s6 -> s4 [label="-75"];
+ s6 -> s4 [label="-74"];
+ s6 -> s4 [label="-73"];
+ s6 -> s4 [label="-72"];
+ s6 -> s4 [label="-71"];
+ s6 -> s4 [label="-70"];
+ s6 -> s4 [label="-69"];
+ s6 -> s4 [label="-68"];
+ s6 -> s4 [label="-67"];
+ s6 -> s4 [label="-66"];
+ s6 -> s4 [label="-65"];
+ s6 -> s1 [label="-64"];
+ s6 -> s1 [label="-63"];
+ s6 -> s1 [label="-62"];
+ s6 -> s1 [label="-61"];
+ s6 -> s1 [label="-60"];
+ s6 -> s1 [label="-59"];
+ s6 -> s1 [label="-58"];
+ s6 -> s1 [label="-57"];
+ s6 -> s1 [label="-56"];
+ s6 -> s1 [label="-55"];
+ s6 -> s1 [label="-54"];
+ s6 -> s1 [label="-53"];
+ s6 -> s1 [label="-52"];
+ s6 -> s1 [label="-51"];
+ s6 -> s1 [label="-50"];
+ s6 -> s1 [label="-49"];
+ s6 -> s1 [label="-48"];
+ s6 -> s1 [label="-47"];
+ s6 -> s1 [label="-46"];
+ s6 -> s1 [label="-45"];
+ s6 -> s1 [label="-44"];
+ s6 -> s1 [label="-43"];
+ s6 -> s1 [label="-42"];
+ s6 -> s1 [label="-41"];
+ s6 -> s1 [label="-40"];
+ s6 -> s1 [label="-39"];
+ s6 -> s1 [label="-38"];
+ s6 -> s1 [label="-37"];
+ s6 -> s1 [label="-36"];
+ s6 -> s1 [label="-35"];
+ s6 -> s1 [label="-34"];
+ s6 -> s1 [label="-33"];
+ s6 -> s1 [label="-32"];
+ s6 -> s1 [label="-31"];
+ s6 -> s1 [label="-30"];
+ s6 -> s1 [label="-29"];
+ s6 -> s1 [label="-28"];
+ s6 -> s1 [label="-27"];
+ s6 -> s1 [label="-26"];
+ s6 -> s1 [label="-25"];
+ s6 -> s1 [label="-24"];
+ s6 -> s1 [label="-23"];
+ s6 -> s1 [label="-22"];
+ s6 -> s1 [label="-21"];
+ s6 -> s1 [label="-20"];
+ s6 -> s1 [label="-19"];
+ s6 -> s1 [label="-18"];
+ s6 -> s1 [label="-17"];
+ s6 -> s1 [label="-16"];
+ s6 -> s1 [label="-15"];
+ s6 -> s1 [label="-14"];
+ s6 -> s1 [label="-13"];
+ s6 -> s1 [label="-12"];
+ s6 -> s1 [label="-11"];
+ s6 -> s1 [label="-10"];
+ s6 -> s1 [label="-9"];
+ s6 -> s1 [label="-8"];
+ s6 -> s1 [label="-7"];
+ s6 -> s1 [label="-6"];
+ s6 -> s1 [label="-5"];
+ s6 -> s1 [label="-4"];
+ s6 -> s1 [label="-3"];
+ s6 -> s1 [label="-2"];
+ s6 -> s1 [label="-1"];
+ s7 -> s1 [label="0"];
+ s7 -> s1 [label="1"];
+ s7 -> s1 [label="2"];
+ s7 -> s1 [label="3"];
+ s7 -> s1 [label="4"];
+ s7 -> s1 [label="5"];
+ s7 -> s1 [label="6"];
+ s7 -> s1 [label="7"];
+ s7 -> s1 [label="8"];
+ s7 -> s1 [label="9"];
+ s7 -> s1 [label="10"];
+ s7 -> s1 [label="11"];
+ s7 -> s1 [label="12"];
+ s7 -> s1 [label="13"];
+ s7 -> s1 [label="14"];
+ s7 -> s1 [label="15"];
+ s7 -> s1 [label="16"];
+ s7 -> s1 [label="17"];
+ s7 -> s1 [label="18"];
+ s7 -> s1 [label="19"];
+ s7 -> s1 [label="20"];
+ s7 -> s1 [label="21"];
+ s7 -> s1 [label="22"];
+ s7 -> s1 [label="23"];
+ s7 -> s1 [label="24"];
+ s7 -> s1 [label="25"];
+ s7 -> s1 [label="26"];
+ s7 -> s1 [label="27"];
+ s7 -> s1 [label="28"];
+ s7 -> s1 [label="29"];
+ s7 -> s1 [label="30"];
+ s7 -> s1 [label="31"];
+ s7 -> s1 [label="32"];
+ s7 -> s1 [label="33"];
+ s7 -> s1 [label="34"];
+ s7 -> s1 [label="35"];
+ s7 -> s1 [label="36"];
+ s7 -> s1 [label="37"];
+ s7 -> s1 [label="38"];
+ s7 -> s1 [label="39"];
+ s7 -> s1 [label="40"];
+ s7 -> s1 [label="41"];
+ s7 -> s1 [label="42"];
+ s7 -> s1 [label="43"];
+ s7 -> s1 [label="44"];
+ s7 -> s1 [label="45"];
+ s7 -> s1 [label="46"];
+ s7 -> s1 [label="47"];
+ s7 -> s1 [label="48"];
+ s7 -> s1 [label="49"];
+ s7 -> s1 [label="50"];
+ s7 -> s1 [label="51"];
+ s7 -> s1 [label="52"];
+ s7 -> s1 [label="53"];
+ s7 -> s1 [label="54"];
+ s7 -> s1 [label="55"];
+ s7 -> s1 [label="56"];
+ s7 -> s1 [label="57"];
+ s7 -> s1 [label="58"];
+ s7 -> s1 [label="59"];
+ s7 -> s1 [label="60"];
+ s7 -> s1 [label="61"];
+ s7 -> s1 [label="62"];
+ s7 -> s1 [label="63"];
+ s7 -> s1 [label="64"];
+ s7 -> s1 [label="65"];
+ s7 -> s1 [label="66"];
+ s7 -> s1 [label="67"];
+ s7 -> s1 [label="68"];
+ s7 -> s1 [label="69"];
+ s7 -> s1 [label="70"];
+ s7 -> s1 [label="71"];
+ s7 -> s1 [label="72"];
+ s7 -> s1 [label="73"];
+ s7 -> s1 [label="74"];
+ s7 -> s1 [label="75"];
+ s7 -> s1 [label="76"];
+ s7 -> s1 [label="77"];
+ s7 -> s1 [label="78"];
+ s7 -> s1 [label="79"];
+ s7 -> s1 [label="80"];
+ s7 -> s1 [label="81"];
+ s7 -> s1 [label="82"];
+ s7 -> s1 [label="83"];
+ s7 -> s1 [label="84"];
+ s7 -> s1 [label="85"];
+ s7 -> s1 [label="86"];
+ s7 -> s1 [label="87"];
+ s7 -> s1 [label="88"];
+ s7 -> s1 [label="89"];
+ s7 -> s1 [label="90"];
+ s7 -> s1 [label="91"];
+ s7 -> s1 [label="92"];
+ s7 -> s1 [label="93"];
+ s7 -> s1 [label="94"];
+ s7 -> s1 [label="95"];
+ s7 -> s1 [label="96"];
+ s7 -> s1 [label="97"];
+ s7 -> s1 [label="98"];
+ s7 -> s1 [label="99"];
+ s7 -> s1 [label="100"];
+ s7 -> s1 [label="101"];
+ s7 -> s1 [label="102"];
+ s7 -> s1 [label="103"];
+ s7 -> s1 [label="104"];
+ s7 -> s1 [label="105"];
+ s7 -> s1 [label="106"];
+ s7 -> s1 [label="107"];
+ s7 -> s1 [label="108"];
+ s7 -> s1 [label="109"];
+ s7 -> s1 [label="110"];
+ s7 -> s1 [label="111"];
+ s7 -> s1 [label="112"];
+ s7 -> s1 [label="113"];
+ s7 -> s1 [label="114"];
+ s7 -> s1 [label="115"];
+ s7 -> s1 [label="116"];
+ s7 -> s1 [label="117"];
+ s7 -> s1 [label="118"];
+ s7 -> s1 [label="119"];
+ s7 -> s1 [label="120"];
+ s7 -> s1 [label="121"];
+ s7 -> s1 [label="122"];
+ s7 -> s1 [label="123"];
+ s7 -> s1 [label="124"];
+ s7 -> s1 [label="125"];
+ s7 -> s1 [label="126"];
+ s7 -> s1 [label="127"];
+ s7 -> s4 [label="-128"];
+ s7 -> s4 [label="-127"];
+ s7 -> s4 [label="-126"];
+ s7 -> s4 [label="-125"];
+ s7 -> s4 [label="-124"];
+ s7 -> s4 [label="-123"];
+ s7 -> s4 [label="-122"];
+ s7 -> s4 [label="-121"];
+ s7 -> s4 [label="-120"];
+ s7 -> s4 [label="-119"];
+ s7 -> s4 [label="-118"];
+ s7 -> s4 [label="-117"];
+ s7 -> s4 [label="-116"];
+ s7 -> s4 [label="-115"];
+ s7 -> s4 [label="-114"];
+ s7 -> s4 [label="-113"];
+ s7 -> s1 [label="-112"];
+ s7 -> s1 [label="-111"];
+ s7 -> s1 [label="-110"];
+ s7 -> s1 [label="-109"];
+ s7 -> s1 [label="-108"];
+ s7 -> s1 [label="-107"];
+ s7 -> s1 [label="-106"];
+ s7 -> s1 [label="-105"];
+ s7 -> s1 [label="-104"];
+ s7 -> s1 [label="-103"];
+ s7 -> s1 [label="-102"];
+ s7 -> s1 [label="-101"];
+ s7 -> s1 [label="-100"];
+ s7 -> s1 [label="-99"];
+ s7 -> s1 [label="-98"];
+ s7 -> s1 [label="-97"];
+ s7 -> s1 [label="-96"];
+ s7 -> s1 [label="-95"];
+ s7 -> s1 [label="-94"];
+ s7 -> s1 [label="-93"];
+ s7 -> s1 [label="-92"];
+ s7 -> s1 [label="-91"];
+ s7 -> s1 [label="-90"];
+ s7 -> s1 [label="-89"];
+ s7 -> s1 [label="-88"];
+ s7 -> s1 [label="-87"];
+ s7 -> s1 [label="-86"];
+ s7 -> s1 [label="-85"];
+ s7 -> s1 [label="-84"];
+ s7 -> s1 [label="-83"];
+ s7 -> s1 [label="-82"];
+ s7 -> s1 [label="-81"];
+ s7 -> s1 [label="-80"];
+ s7 -> s1 [label="-79"];
+ s7 -> s1 [label="-78"];
+ s7 -> s1 [label="-77"];
+ s7 -> s1 [label="-76"];
+ s7 -> s1 [label="-75"];
+ s7 -> s1 [label="-74"];
+ s7 -> s1 [label="-73"];
+ s7 -> s1 [label="-72"];
+ s7 -> s1 [label="-71"];
+ s7 -> s1 [label="-70"];
+ s7 -> s1 [label="-69"];
+ s7 -> s1 [label="-68"];
+ s7 -> s1 [label="-67"];
+ s7 -> s1 [label="-66"];
+ s7 -> s1 [label="-65"];
+ s7 -> s1 [label="-64"];
+ s7 -> s1 [label="-63"];
+ s7 -> s1 [label="-62"];
+ s7 -> s1 [label="-61"];
+ s7 -> s1 [label="-60"];
+ s7 -> s1 [label="-59"];
+ s7 -> s1 [label="-58"];
+ s7 -> s1 [label="-57"];
+ s7 -> s1 [label="-56"];
+ s7 -> s1 [label="-55"];
+ s7 -> s1 [label="-54"];
+ s7 -> s1 [label="-53"];
+ s7 -> s1 [label="-52"];
+ s7 -> s1 [label="-51"];
+ s7 -> s1 [label="-50"];
+ s7 -> s1 [label="-49"];
+ s7 -> s1 [label="-48"];
+ s7 -> s1 [label="-47"];
+ s7 -> s1 [label="-46"];
+ s7 -> s1 [label="-45"];
+ s7 -> s1 [label="-44"];
+ s7 -> s1 [label="-43"];
+ s7 -> s1 [label="-42"];
+ s7 -> s1 [label="-41"];
+ s7 -> s1 [label="-40"];
+ s7 -> s1 [label="-39"];
+ s7 -> s1 [label="-38"];
+ s7 -> s1 [label="-37"];
+ s7 -> s1 [label="-36"];
+ s7 -> s1 [label="-35"];
+ s7 -> s1 [label="-34"];
+ s7 -> s1 [label="-33"];
+ s7 -> s1 [label="-32"];
+ s7 -> s1 [label="-31"];
+ s7 -> s1 [label="-30"];
+ s7 -> s1 [label="-29"];
+ s7 -> s1 [label="-28"];
+ s7 -> s1 [label="-27"];
+ s7 -> s1 [label="-26"];
+ s7 -> s1 [label="-25"];
+ s7 -> s1 [label="-24"];
+ s7 -> s1 [label="-23"];
+ s7 -> s1 [label="-22"];
+ s7 -> s1 [label="-21"];
+ s7 -> s1 [label="-20"];
+ s7 -> s1 [label="-19"];
+ s7 -> s1 [label="-18"];
+ s7 -> s1 [label="-17"];
+ s7 -> s1 [label="-16"];
+ s7 -> s1 [label="-15"];
+ s7 -> s1 [label="-14"];
+ s7 -> s1 [label="-13"];
+ s7 -> s1 [label="-12"];
+ s7 -> s1 [label="-11"];
+ s7 -> s1 [label="-10"];
+ s7 -> s1 [label="-9"];
+ s7 -> s1 [label="-8"];
+ s7 -> s1 [label="-7"];
+ s7 -> s1 [label="-6"];
+ s7 -> s1 [label="-5"];
+ s7 -> s1 [label="-4"];
+ s7 -> s1 [label="-3"];
+ s7 -> s1 [label="-2"];
+ s7 -> s1 [label="-1"];
+ s8 -> s1 [label="0"];
+ s8 -> s1 [label="1"];
+ s8 -> s1 [label="2"];
+ s8 -> s1 [label="3"];
+ s8 -> s1 [label="4"];
+ s8 -> s1 [label="5"];
+ s8 -> s1 [label="6"];
+ s8 -> s1 [label="7"];
+ s8 -> s1 [label="8"];
+ s8 -> s1 [label="9"];
+ s8 -> s1 [label="10"];
+ s8 -> s1 [label="11"];
+ s8 -> s1 [label="12"];
+ s8 -> s1 [label="13"];
+ s8 -> s1 [label="14"];
+ s8 -> s1 [label="15"];
+ s8 -> s1 [label="16"];
+ s8 -> s1 [label="17"];
+ s8 -> s1 [label="18"];
+ s8 -> s1 [label="19"];
+ s8 -> s1 [label="20"];
+ s8 -> s1 [label="21"];
+ s8 -> s1 [label="22"];
+ s8 -> s1 [label="23"];
+ s8 -> s1 [label="24"];
+ s8 -> s1 [label="25"];
+ s8 -> s1 [label="26"];
+ s8 -> s1 [label="27"];
+ s8 -> s1 [label="28"];
+ s8 -> s1 [label="29"];
+ s8 -> s1 [label="30"];
+ s8 -> s1 [label="31"];
+ s8 -> s1 [label="32"];
+ s8 -> s1 [label="33"];
+ s8 -> s1 [label="34"];
+ s8 -> s1 [label="35"];
+ s8 -> s1 [label="36"];
+ s8 -> s1 [label="37"];
+ s8 -> s1 [label="38"];
+ s8 -> s1 [label="39"];
+ s8 -> s1 [label="40"];
+ s8 -> s1 [label="41"];
+ s8 -> s1 [label="42"];
+ s8 -> s1 [label="43"];
+ s8 -> s1 [label="44"];
+ s8 -> s1 [label="45"];
+ s8 -> s1 [label="46"];
+ s8 -> s1 [label="47"];
+ s8 -> s1 [label="48"];
+ s8 -> s1 [label="49"];
+ s8 -> s1 [label="50"];
+ s8 -> s1 [label="51"];
+ s8 -> s1 [label="52"];
+ s8 -> s1 [label="53"];
+ s8 -> s1 [label="54"];
+ s8 -> s1 [label="55"];
+ s8 -> s1 [label="56"];
+ s8 -> s1 [label="57"];
+ s8 -> s1 [label="58"];
+ s8 -> s1 [label="59"];
+ s8 -> s1 [label="60"];
+ s8 -> s1 [label="61"];
+ s8 -> s1 [label="62"];
+ s8 -> s1 [label="63"];
+ s8 -> s1 [label="64"];
+ s8 -> s1 [label="65"];
+ s8 -> s1 [label="66"];
+ s8 -> s1 [label="67"];
+ s8 -> s1 [label="68"];
+ s8 -> s1 [label="69"];
+ s8 -> s1 [label="70"];
+ s8 -> s1 [label="71"];
+ s8 -> s1 [label="72"];
+ s8 -> s1 [label="73"];
+ s8 -> s1 [label="74"];
+ s8 -> s1 [label="75"];
+ s8 -> s1 [label="76"];
+ s8 -> s1 [label="77"];
+ s8 -> s1 [label="78"];
+ s8 -> s1 [label="79"];
+ s8 -> s1 [label="80"];
+ s8 -> s1 [label="81"];
+ s8 -> s1 [label="82"];
+ s8 -> s1 [label="83"];
+ s8 -> s1 [label="84"];
+ s8 -> s1 [label="85"];
+ s8 -> s1 [label="86"];
+ s8 -> s1 [label="87"];
+ s8 -> s1 [label="88"];
+ s8 -> s1 [label="89"];
+ s8 -> s1 [label="90"];
+ s8 -> s1 [label="91"];
+ s8 -> s1 [label="92"];
+ s8 -> s1 [label="93"];
+ s8 -> s1 [label="94"];
+ s8 -> s1 [label="95"];
+ s8 -> s1 [label="96"];
+ s8 -> s1 [label="97"];
+ s8 -> s1 [label="98"];
+ s8 -> s1 [label="99"];
+ s8 -> s1 [label="100"];
+ s8 -> s1 [label="101"];
+ s8 -> s1 [label="102"];
+ s8 -> s1 [label="103"];
+ s8 -> s1 [label="104"];
+ s8 -> s1 [label="105"];
+ s8 -> s1 [label="106"];
+ s8 -> s1 [label="107"];
+ s8 -> s1 [label="108"];
+ s8 -> s1 [label="109"];
+ s8 -> s1 [label="110"];
+ s8 -> s1 [label="111"];
+ s8 -> s1 [label="112"];
+ s8 -> s1 [label="113"];
+ s8 -> s1 [label="114"];
+ s8 -> s1 [label="115"];
+ s8 -> s1 [label="116"];
+ s8 -> s1 [label="117"];
+ s8 -> s1 [label="118"];
+ s8 -> s1 [label="119"];
+ s8 -> s1 [label="120"];
+ s8 -> s1 [label="121"];
+ s8 -> s1 [label="122"];
+ s8 -> s1 [label="123"];
+ s8 -> s1 [label="124"];
+ s8 -> s1 [label="125"];
+ s8 -> s1 [label="126"];
+ s8 -> s1 [label="127"];
+ s8 -> s4 [label="-128"];
+ s8 -> s4 [label="-127"];
+ s8 -> s4 [label="-126"];
+ s8 -> s4 [label="-125"];
+ s8 -> s4 [label="-124"];
+ s8 -> s4 [label="-123"];
+ s8 -> s4 [label="-122"];
+ s8 -> s4 [label="-121"];
+ s8 -> s4 [label="-120"];
+ s8 -> s4 [label="-119"];
+ s8 -> s4 [label="-118"];
+ s8 -> s4 [label="-117"];
+ s8 -> s4 [label="-116"];
+ s8 -> s4 [label="-115"];
+ s8 -> s4 [label="-114"];
+ s8 -> s4 [label="-113"];
+ s8 -> s4 [label="-112"];
+ s8 -> s4 [label="-111"];
+ s8 -> s4 [label="-110"];
+ s8 -> s4 [label="-109"];
+ s8 -> s4 [label="-108"];
+ s8 -> s4 [label="-107"];
+ s8 -> s4 [label="-106"];
+ s8 -> s4 [label="-105"];
+ s8 -> s4 [label="-104"];
+ s8 -> s4 [label="-103"];
+ s8 -> s4 [label="-102"];
+ s8 -> s4 [label="-101"];
+ s8 -> s4 [label="-100"];
+ s8 -> s4 [label="-99"];
+ s8 -> s4 [label="-98"];
+ s8 -> s4 [label="-97"];
+ s8 -> s4 [label="-96"];
+ s8 -> s4 [label="-95"];
+ s8 -> s4 [label="-94"];
+ s8 -> s4 [label="-93"];
+ s8 -> s4 [label="-92"];
+ s8 -> s4 [label="-91"];
+ s8 -> s4 [label="-90"];
+ s8 -> s4 [label="-89"];
+ s8 -> s4 [label="-88"];
+ s8 -> s4 [label="-87"];
+ s8 -> s4 [label="-86"];
+ s8 -> s4 [label="-85"];
+ s8 -> s4 [label="-84"];
+ s8 -> s4 [label="-83"];
+ s8 -> s4 [label="-82"];
+ s8 -> s4 [label="-81"];
+ s8 -> s4 [label="-80"];
+ s8 -> s4 [label="-79"];
+ s8 -> s4 [label="-78"];
+ s8 -> s4 [label="-77"];
+ s8 -> s4 [label="-76"];
+ s8 -> s4 [label="-75"];
+ s8 -> s4 [label="-74"];
+ s8 -> s4 [label="-73"];
+ s8 -> s4 [label="-72"];
+ s8 -> s4 [label="-71"];
+ s8 -> s4 [label="-70"];
+ s8 -> s4 [label="-69"];
+ s8 -> s4 [label="-68"];
+ s8 -> s4 [label="-67"];
+ s8 -> s4 [label="-66"];
+ s8 -> s4 [label="-65"];
+ s8 -> s1 [label="-64"];
+ s8 -> s1 [label="-63"];
+ s8 -> s1 [label="-62"];
+ s8 -> s1 [label="-61"];
+ s8 -> s1 [label="-60"];
+ s8 -> s1 [label="-59"];
+ s8 -> s1 [label="-58"];
+ s8 -> s1 [label="-57"];
+ s8 -> s1 [label="-56"];
+ s8 -> s1 [label="-55"];
+ s8 -> s1 [label="-54"];
+ s8 -> s1 [label="-53"];
+ s8 -> s1 [label="-52"];
+ s8 -> s1 [label="-51"];
+ s8 -> s1 [label="-50"];
+ s8 -> s1 [label="-49"];
+ s8 -> s1 [label="-48"];
+ s8 -> s1 [label="-47"];
+ s8 -> s1 [label="-46"];
+ s8 -> s1 [label="-45"];
+ s8 -> s1 [label="-44"];
+ s8 -> s1 [label="-43"];
+ s8 -> s1 [label="-42"];
+ s8 -> s1 [label="-41"];
+ s8 -> s1 [label="-40"];
+ s8 -> s1 [label="-39"];
+ s8 -> s1 [label="-38"];
+ s8 -> s1 [label="-37"];
+ s8 -> s1 [label="-36"];
+ s8 -> s1 [label="-35"];
+ s8 -> s1 [label="-34"];
+ s8 -> s1 [label="-33"];
+ s8 -> s1 [label="-32"];
+ s8 -> s1 [label="-31"];
+ s8 -> s1 [label="-30"];
+ s8 -> s1 [label="-29"];
+ s8 -> s1 [label="-28"];
+ s8 -> s1 [label="-27"];
+ s8 -> s1 [label="-26"];
+ s8 -> s1 [label="-25"];
+ s8 -> s1 [label="-24"];
+ s8 -> s1 [label="-23"];
+ s8 -> s1 [label="-22"];
+ s8 -> s1 [label="-21"];
+ s8 -> s1 [label="-20"];
+ s8 -> s1 [label="-19"];
+ s8 -> s1 [label="-18"];
+ s8 -> s1 [label="-17"];
+ s8 -> s1 [label="-16"];
+ s8 -> s1 [label="-15"];
+ s8 -> s1 [label="-14"];
+ s8 -> s1 [label="-13"];
+ s8 -> s1 [label="-12"];
+ s8 -> s1 [label="-11"];
+ s8 -> s1 [label="-10"];
+ s8 -> s1 [label="-9"];
+ s8 -> s1 [label="-8"];
+ s8 -> s1 [label="-7"];
+ s8 -> s1 [label="-6"];
+ s8 -> s1 [label="-5"];
+ s8 -> s1 [label="-4"];
+ s8 -> s1 [label="-3"];
+ s8 -> s1 [label="-2"];
+ s8 -> s1 [label="-1"];
+
+__start0 [label="" shape="none" width="0" height="0"];
+__start0 -> s0;
+
+}
diff --git a/results/full-partial-optim.svg b/results/full-partial-optim.svg
new file mode 100644
index 0000000..171bdb8
--- /dev/null
+++ b/results/full-partial-optim.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/results/full-partial.dot b/results/full-partial.dot
new file mode 100644
index 0000000..fb3e6ad
--- /dev/null
+++ b/results/full-partial.dot
@@ -0,0 +1,30 @@
+digraph full {
+
+ s0 [shape="doublecircle" label="s0"];
+ s2 [shape="circle" label="s2"];
+ s3 [shape="circle" label="s3"];
+ s4 [shape="circle" label="s4"];
+ s5 [shape="circle" label="s5"];
+ s6 [shape="circle" label="s6"];
+ s7 [shape="circle" label="s7"];
+ s8 [shape="circle" label="s8"];
+ s0 -> s0 [label="0x00-0x7F"];
+ s0 -> s2 [label="0xC2-0xDF"];
+ s0 -> s4 [label="0xE0"];
+ s0 -> s3 [label="0xE1-0xEC, 0xEE-0xEF"];
+ s0 -> s5 [label="0xED"];
+ s0 -> s7 [label="0xF0"];
+ s0 -> s6 [label="0xF1-0xF3"];
+ s0 -> s8 [label="0xF4"];
+ s2 -> s0 [label="0x80-0xBF"];
+ s3 -> s2 [label="0x80-0xBF"];
+ s4 -> s2 [label="0xA0-0xBF"];
+ s5 -> s2 [label="0x80-0x9F"];
+ s6 -> s3 [label="0x80-0xBF"];
+ s7 -> s3 [label="0x90-0xBF"];
+ s8 -> s3 [label="0x80-0x8F"];
+
+__start0 [label="" shape="none" width="0" height="0"];
+__start0 -> s0;
+
+}
\ No newline at end of file
diff --git a/results/full-partial.pdf b/results/full-partial.pdf
new file mode 100644
index 0000000..0bfacb4
Binary files /dev/null and b/results/full-partial.pdf differ
diff --git a/results/full.dot b/results/full.dot
new file mode 100644
index 0000000..63145ec
--- /dev/null
+++ b/results/full.dot
@@ -0,0 +1,49 @@
+digraph full {
+
+ s0 [shape="doublecircle" label="s0"];
+ s1 [shape="circle" label="s1"];
+ s2 [shape="circle" label="s2"];
+ s3 [shape="circle" label="s3"];
+ s4 [shape="circle" label="s4"];
+ s5 [shape="circle" label="s5"];
+ s6 [shape="circle" label="s6"];
+ s7 [shape="circle" label="s7"];
+ s8 [shape="circle" label="s8"];
+ s0 -> s0 [label="0 -- 127"];
+ s0 -> s1 [label="-128 -- -63"];
+ s0 -> s2 [label="-62 -- -33"];
+ s0 -> s4 [label="-32"];
+ s0 -> s3 [label="-31 -- -20"];
+ s0 -> s5 [label="-19"];
+ s0 -> s3 [label="-18 -- -17"];
+ s0 -> s7 [label="-16"];
+ s0 -> s6 [label="-15 -- -13"];
+ s0 -> s8 [label="-12"];
+ s0 -> s1 [label="-11 -- -1"];
+ s1 -> s1 [label="0 -- -1"];
+ s2 -> s1 [label="0 -- 127"];
+ s2 -> s0 [label="-128 -- -65"];
+ s2 -> s1 [label="-64 -- -1"];
+ s3 -> s1 [label="0 -- 127"];
+ s3 -> s2 [label="-128 -- -65"];
+ s3 -> s1 [label="-64 -- -1"];
+ s4 -> s1 [label="0 -- -97"];
+ s4 -> s2 [label="-96 -- -65"];
+ s4 -> s1 [label="-64 -- -1"];
+ s5 -> s1 [label="0 -- 127"];
+ s5 -> s2 [label="-128 -- -97"];
+ s5 -> s1 [label="-96 -- -1"];
+ s6 -> s1 [label="0 -- 127"];
+ s6 -> s3 [label="-128 -- -65"];
+ s6 -> s1 [label="-64 -- -1"];
+ s7 -> s1 [label="0 -- -113"];
+ s7 -> s3 [label="-112 -- -65"];
+ s7 -> s1 [label="-64 -- -1"];
+ s8 -> s1 [label="0 -- 127"];
+ s8 -> s3 [label="-128 -- -113"];
+ s8 -> s1 [label="-112 -- -1"];
+
+__start0 [label="" shape="none" width="0" height="0"];
+__start0 -> s0;
+
+}
\ No newline at end of file
diff --git a/results/full.pdf b/results/full.pdf
new file mode 100644
index 0000000..ef25fb8
Binary files /dev/null and b/results/full.pdf differ
diff --git a/results/guava.dot b/results/guava.dot
new file mode 100644
index 0000000..dbe67e5
--- /dev/null
+++ b/results/guava.dot
@@ -0,0 +1,2320 @@
+digraph g {
+
+ s0 [shape="doublecircle" label="s0"];
+ s1 [shape="circle" label="s1"];
+ s2 [shape="circle" label="s2"];
+ s3 [shape="circle" label="s3"];
+ s4 [shape="circle" label="s4"];
+ s5 [shape="circle" label="s5"];
+ s6 [shape="circle" label="s6"];
+ s7 [shape="circle" label="s7"];
+ s8 [shape="circle" label="s8"];
+ s0 -> s0 [label="0"];
+ s0 -> s0 [label="1"];
+ s0 -> s0 [label="2"];
+ s0 -> s0 [label="3"];
+ s0 -> s0 [label="4"];
+ s0 -> s0 [label="5"];
+ s0 -> s0 [label="6"];
+ s0 -> s0 [label="7"];
+ s0 -> s0 [label="8"];
+ s0 -> s0 [label="9"];
+ s0 -> s0 [label="10"];
+ s0 -> s0 [label="11"];
+ s0 -> s0 [label="12"];
+ s0 -> s0 [label="13"];
+ s0 -> s0 [label="14"];
+ s0 -> s0 [label="15"];
+ s0 -> s0 [label="16"];
+ s0 -> s0 [label="17"];
+ s0 -> s0 [label="18"];
+ s0 -> s0 [label="19"];
+ s0 -> s0 [label="20"];
+ s0 -> s0 [label="21"];
+ s0 -> s0 [label="22"];
+ s0 -> s0 [label="23"];
+ s0 -> s0 [label="24"];
+ s0 -> s0 [label="25"];
+ s0 -> s0 [label="26"];
+ s0 -> s0 [label="27"];
+ s0 -> s0 [label="28"];
+ s0 -> s0 [label="29"];
+ s0 -> s0 [label="30"];
+ s0 -> s0 [label="31"];
+ s0 -> s0 [label="32"];
+ s0 -> s0 [label="33"];
+ s0 -> s0 [label="34"];
+ s0 -> s0 [label="35"];
+ s0 -> s0 [label="36"];
+ s0 -> s0 [label="37"];
+ s0 -> s0 [label="38"];
+ s0 -> s0 [label="39"];
+ s0 -> s0 [label="40"];
+ s0 -> s0 [label="41"];
+ s0 -> s0 [label="42"];
+ s0 -> s0 [label="43"];
+ s0 -> s0 [label="44"];
+ s0 -> s0 [label="45"];
+ s0 -> s0 [label="46"];
+ s0 -> s0 [label="47"];
+ s0 -> s0 [label="48"];
+ s0 -> s0 [label="49"];
+ s0 -> s0 [label="50"];
+ s0 -> s0 [label="51"];
+ s0 -> s0 [label="52"];
+ s0 -> s0 [label="53"];
+ s0 -> s0 [label="54"];
+ s0 -> s0 [label="55"];
+ s0 -> s0 [label="56"];
+ s0 -> s0 [label="57"];
+ s0 -> s0 [label="58"];
+ s0 -> s0 [label="59"];
+ s0 -> s0 [label="60"];
+ s0 -> s0 [label="61"];
+ s0 -> s0 [label="62"];
+ s0 -> s0 [label="63"];
+ s0 -> s0 [label="64"];
+ s0 -> s0 [label="65"];
+ s0 -> s0 [label="66"];
+ s0 -> s0 [label="67"];
+ s0 -> s0 [label="68"];
+ s0 -> s0 [label="69"];
+ s0 -> s0 [label="70"];
+ s0 -> s0 [label="71"];
+ s0 -> s0 [label="72"];
+ s0 -> s0 [label="73"];
+ s0 -> s0 [label="74"];
+ s0 -> s0 [label="75"];
+ s0 -> s0 [label="76"];
+ s0 -> s0 [label="77"];
+ s0 -> s0 [label="78"];
+ s0 -> s0 [label="79"];
+ s0 -> s0 [label="80"];
+ s0 -> s0 [label="81"];
+ s0 -> s0 [label="82"];
+ s0 -> s0 [label="83"];
+ s0 -> s0 [label="84"];
+ s0 -> s0 [label="85"];
+ s0 -> s0 [label="86"];
+ s0 -> s0 [label="87"];
+ s0 -> s0 [label="88"];
+ s0 -> s0 [label="89"];
+ s0 -> s0 [label="90"];
+ s0 -> s0 [label="91"];
+ s0 -> s0 [label="92"];
+ s0 -> s0 [label="93"];
+ s0 -> s0 [label="94"];
+ s0 -> s0 [label="95"];
+ s0 -> s0 [label="96"];
+ s0 -> s0 [label="97"];
+ s0 -> s0 [label="98"];
+ s0 -> s0 [label="99"];
+ s0 -> s0 [label="100"];
+ s0 -> s0 [label="101"];
+ s0 -> s0 [label="102"];
+ s0 -> s0 [label="103"];
+ s0 -> s0 [label="104"];
+ s0 -> s0 [label="105"];
+ s0 -> s0 [label="106"];
+ s0 -> s0 [label="107"];
+ s0 -> s0 [label="108"];
+ s0 -> s0 [label="109"];
+ s0 -> s0 [label="110"];
+ s0 -> s0 [label="111"];
+ s0 -> s0 [label="112"];
+ s0 -> s0 [label="113"];
+ s0 -> s0 [label="114"];
+ s0 -> s0 [label="115"];
+ s0 -> s0 [label="116"];
+ s0 -> s0 [label="117"];
+ s0 -> s0 [label="118"];
+ s0 -> s0 [label="119"];
+ s0 -> s0 [label="120"];
+ s0 -> s0 [label="121"];
+ s0 -> s0 [label="122"];
+ s0 -> s0 [label="123"];
+ s0 -> s0 [label="124"];
+ s0 -> s0 [label="125"];
+ s0 -> s0 [label="126"];
+ s0 -> s0 [label="127"];
+ s0 -> s1 [label="-128"];
+ s0 -> s1 [label="-127"];
+ s0 -> s1 [label="-126"];
+ s0 -> s1 [label="-125"];
+ s0 -> s1 [label="-124"];
+ s0 -> s1 [label="-123"];
+ s0 -> s1 [label="-122"];
+ s0 -> s1 [label="-121"];
+ s0 -> s1 [label="-120"];
+ s0 -> s1 [label="-119"];
+ s0 -> s1 [label="-118"];
+ s0 -> s1 [label="-117"];
+ s0 -> s1 [label="-116"];
+ s0 -> s1 [label="-115"];
+ s0 -> s1 [label="-114"];
+ s0 -> s1 [label="-113"];
+ s0 -> s1 [label="-112"];
+ s0 -> s1 [label="-111"];
+ s0 -> s1 [label="-110"];
+ s0 -> s1 [label="-109"];
+ s0 -> s1 [label="-108"];
+ s0 -> s1 [label="-107"];
+ s0 -> s1 [label="-106"];
+ s0 -> s1 [label="-105"];
+ s0 -> s1 [label="-104"];
+ s0 -> s1 [label="-103"];
+ s0 -> s1 [label="-102"];
+ s0 -> s1 [label="-101"];
+ s0 -> s1 [label="-100"];
+ s0 -> s1 [label="-99"];
+ s0 -> s1 [label="-98"];
+ s0 -> s1 [label="-97"];
+ s0 -> s1 [label="-96"];
+ s0 -> s1 [label="-95"];
+ s0 -> s1 [label="-94"];
+ s0 -> s1 [label="-93"];
+ s0 -> s1 [label="-92"];
+ s0 -> s1 [label="-91"];
+ s0 -> s1 [label="-90"];
+ s0 -> s1 [label="-89"];
+ s0 -> s1 [label="-88"];
+ s0 -> s1 [label="-87"];
+ s0 -> s1 [label="-86"];
+ s0 -> s1 [label="-85"];
+ s0 -> s1 [label="-84"];
+ s0 -> s1 [label="-83"];
+ s0 -> s1 [label="-82"];
+ s0 -> s1 [label="-81"];
+ s0 -> s1 [label="-80"];
+ s0 -> s1 [label="-79"];
+ s0 -> s1 [label="-78"];
+ s0 -> s1 [label="-77"];
+ s0 -> s1 [label="-76"];
+ s0 -> s1 [label="-75"];
+ s0 -> s1 [label="-74"];
+ s0 -> s1 [label="-73"];
+ s0 -> s1 [label="-72"];
+ s0 -> s1 [label="-71"];
+ s0 -> s1 [label="-70"];
+ s0 -> s1 [label="-69"];
+ s0 -> s1 [label="-68"];
+ s0 -> s1 [label="-67"];
+ s0 -> s1 [label="-66"];
+ s0 -> s1 [label="-65"];
+ s0 -> s1 [label="-64"];
+ s0 -> s1 [label="-63"];
+ s0 -> s2 [label="-62"];
+ s0 -> s2 [label="-61"];
+ s0 -> s2 [label="-60"];
+ s0 -> s2 [label="-59"];
+ s0 -> s2 [label="-58"];
+ s0 -> s2 [label="-57"];
+ s0 -> s2 [label="-56"];
+ s0 -> s2 [label="-55"];
+ s0 -> s2 [label="-54"];
+ s0 -> s2 [label="-53"];
+ s0 -> s2 [label="-52"];
+ s0 -> s2 [label="-51"];
+ s0 -> s2 [label="-50"];
+ s0 -> s2 [label="-49"];
+ s0 -> s2 [label="-48"];
+ s0 -> s2 [label="-47"];
+ s0 -> s2 [label="-46"];
+ s0 -> s2 [label="-45"];
+ s0 -> s2 [label="-44"];
+ s0 -> s2 [label="-43"];
+ s0 -> s2 [label="-42"];
+ s0 -> s2 [label="-41"];
+ s0 -> s2 [label="-40"];
+ s0 -> s2 [label="-39"];
+ s0 -> s2 [label="-38"];
+ s0 -> s2 [label="-37"];
+ s0 -> s2 [label="-36"];
+ s0 -> s2 [label="-35"];
+ s0 -> s2 [label="-34"];
+ s0 -> s2 [label="-33"];
+ s0 -> s3 [label="-32"];
+ s0 -> s4 [label="-31"];
+ s0 -> s4 [label="-30"];
+ s0 -> s4 [label="-29"];
+ s0 -> s4 [label="-28"];
+ s0 -> s4 [label="-27"];
+ s0 -> s4 [label="-26"];
+ s0 -> s4 [label="-25"];
+ s0 -> s4 [label="-24"];
+ s0 -> s4 [label="-23"];
+ s0 -> s4 [label="-22"];
+ s0 -> s4 [label="-21"];
+ s0 -> s4 [label="-20"];
+ s0 -> s5 [label="-19"];
+ s0 -> s4 [label="-18"];
+ s0 -> s4 [label="-17"];
+ s0 -> s6 [label="-16"];
+ s0 -> s8 [label="-15"];
+ s0 -> s8 [label="-14"];
+ s0 -> s8 [label="-13"];
+ s0 -> s7 [label="-12"];
+ s0 -> s1 [label="-11"];
+ s0 -> s1 [label="-10"];
+ s0 -> s1 [label="-9"];
+ s0 -> s1 [label="-8"];
+ s0 -> s1 [label="-7"];
+ s0 -> s1 [label="-6"];
+ s0 -> s1 [label="-5"];
+ s0 -> s1 [label="-4"];
+ s0 -> s1 [label="-3"];
+ s0 -> s1 [label="-2"];
+ s0 -> s1 [label="-1"];
+ s1 -> s1 [label="0"];
+ s1 -> s1 [label="1"];
+ s1 -> s1 [label="2"];
+ s1 -> s1 [label="3"];
+ s1 -> s1 [label="4"];
+ s1 -> s1 [label="5"];
+ s1 -> s1 [label="6"];
+ s1 -> s1 [label="7"];
+ s1 -> s1 [label="8"];
+ s1 -> s1 [label="9"];
+ s1 -> s1 [label="10"];
+ s1 -> s1 [label="11"];
+ s1 -> s1 [label="12"];
+ s1 -> s1 [label="13"];
+ s1 -> s1 [label="14"];
+ s1 -> s1 [label="15"];
+ s1 -> s1 [label="16"];
+ s1 -> s1 [label="17"];
+ s1 -> s1 [label="18"];
+ s1 -> s1 [label="19"];
+ s1 -> s1 [label="20"];
+ s1 -> s1 [label="21"];
+ s1 -> s1 [label="22"];
+ s1 -> s1 [label="23"];
+ s1 -> s1 [label="24"];
+ s1 -> s1 [label="25"];
+ s1 -> s1 [label="26"];
+ s1 -> s1 [label="27"];
+ s1 -> s1 [label="28"];
+ s1 -> s1 [label="29"];
+ s1 -> s1 [label="30"];
+ s1 -> s1 [label="31"];
+ s1 -> s1 [label="32"];
+ s1 -> s1 [label="33"];
+ s1 -> s1 [label="34"];
+ s1 -> s1 [label="35"];
+ s1 -> s1 [label="36"];
+ s1 -> s1 [label="37"];
+ s1 -> s1 [label="38"];
+ s1 -> s1 [label="39"];
+ s1 -> s1 [label="40"];
+ s1 -> s1 [label="41"];
+ s1 -> s1 [label="42"];
+ s1 -> s1 [label="43"];
+ s1 -> s1 [label="44"];
+ s1 -> s1 [label="45"];
+ s1 -> s1 [label="46"];
+ s1 -> s1 [label="47"];
+ s1 -> s1 [label="48"];
+ s1 -> s1 [label="49"];
+ s1 -> s1 [label="50"];
+ s1 -> s1 [label="51"];
+ s1 -> s1 [label="52"];
+ s1 -> s1 [label="53"];
+ s1 -> s1 [label="54"];
+ s1 -> s1 [label="55"];
+ s1 -> s1 [label="56"];
+ s1 -> s1 [label="57"];
+ s1 -> s1 [label="58"];
+ s1 -> s1 [label="59"];
+ s1 -> s1 [label="60"];
+ s1 -> s1 [label="61"];
+ s1 -> s1 [label="62"];
+ s1 -> s1 [label="63"];
+ s1 -> s1 [label="64"];
+ s1 -> s1 [label="65"];
+ s1 -> s1 [label="66"];
+ s1 -> s1 [label="67"];
+ s1 -> s1 [label="68"];
+ s1 -> s1 [label="69"];
+ s1 -> s1 [label="70"];
+ s1 -> s1 [label="71"];
+ s1 -> s1 [label="72"];
+ s1 -> s1 [label="73"];
+ s1 -> s1 [label="74"];
+ s1 -> s1 [label="75"];
+ s1 -> s1 [label="76"];
+ s1 -> s1 [label="77"];
+ s1 -> s1 [label="78"];
+ s1 -> s1 [label="79"];
+ s1 -> s1 [label="80"];
+ s1 -> s1 [label="81"];
+ s1 -> s1 [label="82"];
+ s1 -> s1 [label="83"];
+ s1 -> s1 [label="84"];
+ s1 -> s1 [label="85"];
+ s1 -> s1 [label="86"];
+ s1 -> s1 [label="87"];
+ s1 -> s1 [label="88"];
+ s1 -> s1 [label="89"];
+ s1 -> s1 [label="90"];
+ s1 -> s1 [label="91"];
+ s1 -> s1 [label="92"];
+ s1 -> s1 [label="93"];
+ s1 -> s1 [label="94"];
+ s1 -> s1 [label="95"];
+ s1 -> s1 [label="96"];
+ s1 -> s1 [label="97"];
+ s1 -> s1 [label="98"];
+ s1 -> s1 [label="99"];
+ s1 -> s1 [label="100"];
+ s1 -> s1 [label="101"];
+ s1 -> s1 [label="102"];
+ s1 -> s1 [label="103"];
+ s1 -> s1 [label="104"];
+ s1 -> s1 [label="105"];
+ s1 -> s1 [label="106"];
+ s1 -> s1 [label="107"];
+ s1 -> s1 [label="108"];
+ s1 -> s1 [label="109"];
+ s1 -> s1 [label="110"];
+ s1 -> s1 [label="111"];
+ s1 -> s1 [label="112"];
+ s1 -> s1 [label="113"];
+ s1 -> s1 [label="114"];
+ s1 -> s1 [label="115"];
+ s1 -> s1 [label="116"];
+ s1 -> s1 [label="117"];
+ s1 -> s1 [label="118"];
+ s1 -> s1 [label="119"];
+ s1 -> s1 [label="120"];
+ s1 -> s1 [label="121"];
+ s1 -> s1 [label="122"];
+ s1 -> s1 [label="123"];
+ s1 -> s1 [label="124"];
+ s1 -> s1 [label="125"];
+ s1 -> s1 [label="126"];
+ s1 -> s1 [label="127"];
+ s1 -> s1 [label="-128"];
+ s1 -> s1 [label="-127"];
+ s1 -> s1 [label="-126"];
+ s1 -> s1 [label="-125"];
+ s1 -> s1 [label="-124"];
+ s1 -> s1 [label="-123"];
+ s1 -> s1 [label="-122"];
+ s1 -> s1 [label="-121"];
+ s1 -> s1 [label="-120"];
+ s1 -> s1 [label="-119"];
+ s1 -> s1 [label="-118"];
+ s1 -> s1 [label="-117"];
+ s1 -> s1 [label="-116"];
+ s1 -> s1 [label="-115"];
+ s1 -> s1 [label="-114"];
+ s1 -> s1 [label="-113"];
+ s1 -> s1 [label="-112"];
+ s1 -> s1 [label="-111"];
+ s1 -> s1 [label="-110"];
+ s1 -> s1 [label="-109"];
+ s1 -> s1 [label="-108"];
+ s1 -> s1 [label="-107"];
+ s1 -> s1 [label="-106"];
+ s1 -> s1 [label="-105"];
+ s1 -> s1 [label="-104"];
+ s1 -> s1 [label="-103"];
+ s1 -> s1 [label="-102"];
+ s1 -> s1 [label="-101"];
+ s1 -> s1 [label="-100"];
+ s1 -> s1 [label="-99"];
+ s1 -> s1 [label="-98"];
+ s1 -> s1 [label="-97"];
+ s1 -> s1 [label="-96"];
+ s1 -> s1 [label="-95"];
+ s1 -> s1 [label="-94"];
+ s1 -> s1 [label="-93"];
+ s1 -> s1 [label="-92"];
+ s1 -> s1 [label="-91"];
+ s1 -> s1 [label="-90"];
+ s1 -> s1 [label="-89"];
+ s1 -> s1 [label="-88"];
+ s1 -> s1 [label="-87"];
+ s1 -> s1 [label="-86"];
+ s1 -> s1 [label="-85"];
+ s1 -> s1 [label="-84"];
+ s1 -> s1 [label="-83"];
+ s1 -> s1 [label="-82"];
+ s1 -> s1 [label="-81"];
+ s1 -> s1 [label="-80"];
+ s1 -> s1 [label="-79"];
+ s1 -> s1 [label="-78"];
+ s1 -> s1 [label="-77"];
+ s1 -> s1 [label="-76"];
+ s1 -> s1 [label="-75"];
+ s1 -> s1 [label="-74"];
+ s1 -> s1 [label="-73"];
+ s1 -> s1 [label="-72"];
+ s1 -> s1 [label="-71"];
+ s1 -> s1 [label="-70"];
+ s1 -> s1 [label="-69"];
+ s1 -> s1 [label="-68"];
+ s1 -> s1 [label="-67"];
+ s1 -> s1 [label="-66"];
+ s1 -> s1 [label="-65"];
+ s1 -> s1 [label="-64"];
+ s1 -> s1 [label="-63"];
+ s1 -> s1 [label="-62"];
+ s1 -> s1 [label="-61"];
+ s1 -> s1 [label="-60"];
+ s1 -> s1 [label="-59"];
+ s1 -> s1 [label="-58"];
+ s1 -> s1 [label="-57"];
+ s1 -> s1 [label="-56"];
+ s1 -> s1 [label="-55"];
+ s1 -> s1 [label="-54"];
+ s1 -> s1 [label="-53"];
+ s1 -> s1 [label="-52"];
+ s1 -> s1 [label="-51"];
+ s1 -> s1 [label="-50"];
+ s1 -> s1 [label="-49"];
+ s1 -> s1 [label="-48"];
+ s1 -> s1 [label="-47"];
+ s1 -> s1 [label="-46"];
+ s1 -> s1 [label="-45"];
+ s1 -> s1 [label="-44"];
+ s1 -> s1 [label="-43"];
+ s1 -> s1 [label="-42"];
+ s1 -> s1 [label="-41"];
+ s1 -> s1 [label="-40"];
+ s1 -> s1 [label="-39"];
+ s1 -> s1 [label="-38"];
+ s1 -> s1 [label="-37"];
+ s1 -> s1 [label="-36"];
+ s1 -> s1 [label="-35"];
+ s1 -> s1 [label="-34"];
+ s1 -> s1 [label="-33"];
+ s1 -> s1 [label="-32"];
+ s1 -> s1 [label="-31"];
+ s1 -> s1 [label="-30"];
+ s1 -> s1 [label="-29"];
+ s1 -> s1 [label="-28"];
+ s1 -> s1 [label="-27"];
+ s1 -> s1 [label="-26"];
+ s1 -> s1 [label="-25"];
+ s1 -> s1 [label="-24"];
+ s1 -> s1 [label="-23"];
+ s1 -> s1 [label="-22"];
+ s1 -> s1 [label="-21"];
+ s1 -> s1 [label="-20"];
+ s1 -> s1 [label="-19"];
+ s1 -> s1 [label="-18"];
+ s1 -> s1 [label="-17"];
+ s1 -> s1 [label="-16"];
+ s1 -> s1 [label="-15"];
+ s1 -> s1 [label="-14"];
+ s1 -> s1 [label="-13"];
+ s1 -> s1 [label="-12"];
+ s1 -> s1 [label="-11"];
+ s1 -> s1 [label="-10"];
+ s1 -> s1 [label="-9"];
+ s1 -> s1 [label="-8"];
+ s1 -> s1 [label="-7"];
+ s1 -> s1 [label="-6"];
+ s1 -> s1 [label="-5"];
+ s1 -> s1 [label="-4"];
+ s1 -> s1 [label="-3"];
+ s1 -> s1 [label="-2"];
+ s1 -> s1 [label="-1"];
+ s2 -> s1 [label="0"];
+ s2 -> s1 [label="1"];
+ s2 -> s1 [label="2"];
+ s2 -> s1 [label="3"];
+ s2 -> s1 [label="4"];
+ s2 -> s1 [label="5"];
+ s2 -> s1 [label="6"];
+ s2 -> s1 [label="7"];
+ s2 -> s1 [label="8"];
+ s2 -> s1 [label="9"];
+ s2 -> s1 [label="10"];
+ s2 -> s1 [label="11"];
+ s2 -> s1 [label="12"];
+ s2 -> s1 [label="13"];
+ s2 -> s1 [label="14"];
+ s2 -> s1 [label="15"];
+ s2 -> s1 [label="16"];
+ s2 -> s1 [label="17"];
+ s2 -> s1 [label="18"];
+ s2 -> s1 [label="19"];
+ s2 -> s1 [label="20"];
+ s2 -> s1 [label="21"];
+ s2 -> s1 [label="22"];
+ s2 -> s1 [label="23"];
+ s2 -> s1 [label="24"];
+ s2 -> s1 [label="25"];
+ s2 -> s1 [label="26"];
+ s2 -> s1 [label="27"];
+ s2 -> s1 [label="28"];
+ s2 -> s1 [label="29"];
+ s2 -> s1 [label="30"];
+ s2 -> s1 [label="31"];
+ s2 -> s1 [label="32"];
+ s2 -> s1 [label="33"];
+ s2 -> s1 [label="34"];
+ s2 -> s1 [label="35"];
+ s2 -> s1 [label="36"];
+ s2 -> s1 [label="37"];
+ s2 -> s1 [label="38"];
+ s2 -> s1 [label="39"];
+ s2 -> s1 [label="40"];
+ s2 -> s1 [label="41"];
+ s2 -> s1 [label="42"];
+ s2 -> s1 [label="43"];
+ s2 -> s1 [label="44"];
+ s2 -> s1 [label="45"];
+ s2 -> s1 [label="46"];
+ s2 -> s1 [label="47"];
+ s2 -> s1 [label="48"];
+ s2 -> s1 [label="49"];
+ s2 -> s1 [label="50"];
+ s2 -> s1 [label="51"];
+ s2 -> s1 [label="52"];
+ s2 -> s1 [label="53"];
+ s2 -> s1 [label="54"];
+ s2 -> s1 [label="55"];
+ s2 -> s1 [label="56"];
+ s2 -> s1 [label="57"];
+ s2 -> s1 [label="58"];
+ s2 -> s1 [label="59"];
+ s2 -> s1 [label="60"];
+ s2 -> s1 [label="61"];
+ s2 -> s1 [label="62"];
+ s2 -> s1 [label="63"];
+ s2 -> s1 [label="64"];
+ s2 -> s1 [label="65"];
+ s2 -> s1 [label="66"];
+ s2 -> s1 [label="67"];
+ s2 -> s1 [label="68"];
+ s2 -> s1 [label="69"];
+ s2 -> s1 [label="70"];
+ s2 -> s1 [label="71"];
+ s2 -> s1 [label="72"];
+ s2 -> s1 [label="73"];
+ s2 -> s1 [label="74"];
+ s2 -> s1 [label="75"];
+ s2 -> s1 [label="76"];
+ s2 -> s1 [label="77"];
+ s2 -> s1 [label="78"];
+ s2 -> s1 [label="79"];
+ s2 -> s1 [label="80"];
+ s2 -> s1 [label="81"];
+ s2 -> s1 [label="82"];
+ s2 -> s1 [label="83"];
+ s2 -> s1 [label="84"];
+ s2 -> s1 [label="85"];
+ s2 -> s1 [label="86"];
+ s2 -> s1 [label="87"];
+ s2 -> s1 [label="88"];
+ s2 -> s1 [label="89"];
+ s2 -> s1 [label="90"];
+ s2 -> s1 [label="91"];
+ s2 -> s1 [label="92"];
+ s2 -> s1 [label="93"];
+ s2 -> s1 [label="94"];
+ s2 -> s1 [label="95"];
+ s2 -> s1 [label="96"];
+ s2 -> s1 [label="97"];
+ s2 -> s1 [label="98"];
+ s2 -> s1 [label="99"];
+ s2 -> s1 [label="100"];
+ s2 -> s1 [label="101"];
+ s2 -> s1 [label="102"];
+ s2 -> s1 [label="103"];
+ s2 -> s1 [label="104"];
+ s2 -> s1 [label="105"];
+ s2 -> s1 [label="106"];
+ s2 -> s1 [label="107"];
+ s2 -> s1 [label="108"];
+ s2 -> s1 [label="109"];
+ s2 -> s1 [label="110"];
+ s2 -> s1 [label="111"];
+ s2 -> s1 [label="112"];
+ s2 -> s1 [label="113"];
+ s2 -> s1 [label="114"];
+ s2 -> s1 [label="115"];
+ s2 -> s1 [label="116"];
+ s2 -> s1 [label="117"];
+ s2 -> s1 [label="118"];
+ s2 -> s1 [label="119"];
+ s2 -> s1 [label="120"];
+ s2 -> s1 [label="121"];
+ s2 -> s1 [label="122"];
+ s2 -> s1 [label="123"];
+ s2 -> s1 [label="124"];
+ s2 -> s1 [label="125"];
+ s2 -> s1 [label="126"];
+ s2 -> s1 [label="127"];
+ s2 -> s0 [label="-128"];
+ s2 -> s0 [label="-127"];
+ s2 -> s0 [label="-126"];
+ s2 -> s0 [label="-125"];
+ s2 -> s0 [label="-124"];
+ s2 -> s0 [label="-123"];
+ s2 -> s0 [label="-122"];
+ s2 -> s0 [label="-121"];
+ s2 -> s0 [label="-120"];
+ s2 -> s0 [label="-119"];
+ s2 -> s0 [label="-118"];
+ s2 -> s0 [label="-117"];
+ s2 -> s0 [label="-116"];
+ s2 -> s0 [label="-115"];
+ s2 -> s0 [label="-114"];
+ s2 -> s0 [label="-113"];
+ s2 -> s0 [label="-112"];
+ s2 -> s0 [label="-111"];
+ s2 -> s0 [label="-110"];
+ s2 -> s0 [label="-109"];
+ s2 -> s0 [label="-108"];
+ s2 -> s0 [label="-107"];
+ s2 -> s0 [label="-106"];
+ s2 -> s0 [label="-105"];
+ s2 -> s0 [label="-104"];
+ s2 -> s0 [label="-103"];
+ s2 -> s0 [label="-102"];
+ s2 -> s0 [label="-101"];
+ s2 -> s0 [label="-100"];
+ s2 -> s0 [label="-99"];
+ s2 -> s0 [label="-98"];
+ s2 -> s0 [label="-97"];
+ s2 -> s0 [label="-96"];
+ s2 -> s0 [label="-95"];
+ s2 -> s0 [label="-94"];
+ s2 -> s0 [label="-93"];
+ s2 -> s0 [label="-92"];
+ s2 -> s0 [label="-91"];
+ s2 -> s0 [label="-90"];
+ s2 -> s0 [label="-89"];
+ s2 -> s0 [label="-88"];
+ s2 -> s0 [label="-87"];
+ s2 -> s0 [label="-86"];
+ s2 -> s0 [label="-85"];
+ s2 -> s0 [label="-84"];
+ s2 -> s0 [label="-83"];
+ s2 -> s0 [label="-82"];
+ s2 -> s0 [label="-81"];
+ s2 -> s0 [label="-80"];
+ s2 -> s0 [label="-79"];
+ s2 -> s0 [label="-78"];
+ s2 -> s0 [label="-77"];
+ s2 -> s0 [label="-76"];
+ s2 -> s0 [label="-75"];
+ s2 -> s0 [label="-74"];
+ s2 -> s0 [label="-73"];
+ s2 -> s0 [label="-72"];
+ s2 -> s0 [label="-71"];
+ s2 -> s0 [label="-70"];
+ s2 -> s0 [label="-69"];
+ s2 -> s0 [label="-68"];
+ s2 -> s0 [label="-67"];
+ s2 -> s0 [label="-66"];
+ s2 -> s0 [label="-65"];
+ s2 -> s1 [label="-64"];
+ s2 -> s1 [label="-63"];
+ s2 -> s1 [label="-62"];
+ s2 -> s1 [label="-61"];
+ s2 -> s1 [label="-60"];
+ s2 -> s1 [label="-59"];
+ s2 -> s1 [label="-58"];
+ s2 -> s1 [label="-57"];
+ s2 -> s1 [label="-56"];
+ s2 -> s1 [label="-55"];
+ s2 -> s1 [label="-54"];
+ s2 -> s1 [label="-53"];
+ s2 -> s1 [label="-52"];
+ s2 -> s1 [label="-51"];
+ s2 -> s1 [label="-50"];
+ s2 -> s1 [label="-49"];
+ s2 -> s1 [label="-48"];
+ s2 -> s1 [label="-47"];
+ s2 -> s1 [label="-46"];
+ s2 -> s1 [label="-45"];
+ s2 -> s1 [label="-44"];
+ s2 -> s1 [label="-43"];
+ s2 -> s1 [label="-42"];
+ s2 -> s1 [label="-41"];
+ s2 -> s1 [label="-40"];
+ s2 -> s1 [label="-39"];
+ s2 -> s1 [label="-38"];
+ s2 -> s1 [label="-37"];
+ s2 -> s1 [label="-36"];
+ s2 -> s1 [label="-35"];
+ s2 -> s1 [label="-34"];
+ s2 -> s1 [label="-33"];
+ s2 -> s1 [label="-32"];
+ s2 -> s1 [label="-31"];
+ s2 -> s1 [label="-30"];
+ s2 -> s1 [label="-29"];
+ s2 -> s1 [label="-28"];
+ s2 -> s1 [label="-27"];
+ s2 -> s1 [label="-26"];
+ s2 -> s1 [label="-25"];
+ s2 -> s1 [label="-24"];
+ s2 -> s1 [label="-23"];
+ s2 -> s1 [label="-22"];
+ s2 -> s1 [label="-21"];
+ s2 -> s1 [label="-20"];
+ s2 -> s1 [label="-19"];
+ s2 -> s1 [label="-18"];
+ s2 -> s1 [label="-17"];
+ s2 -> s1 [label="-16"];
+ s2 -> s1 [label="-15"];
+ s2 -> s1 [label="-14"];
+ s2 -> s1 [label="-13"];
+ s2 -> s1 [label="-12"];
+ s2 -> s1 [label="-11"];
+ s2 -> s1 [label="-10"];
+ s2 -> s1 [label="-9"];
+ s2 -> s1 [label="-8"];
+ s2 -> s1 [label="-7"];
+ s2 -> s1 [label="-6"];
+ s2 -> s1 [label="-5"];
+ s2 -> s1 [label="-4"];
+ s2 -> s1 [label="-3"];
+ s2 -> s1 [label="-2"];
+ s2 -> s1 [label="-1"];
+ s3 -> s1 [label="0"];
+ s3 -> s1 [label="1"];
+ s3 -> s1 [label="2"];
+ s3 -> s1 [label="3"];
+ s3 -> s1 [label="4"];
+ s3 -> s1 [label="5"];
+ s3 -> s1 [label="6"];
+ s3 -> s1 [label="7"];
+ s3 -> s1 [label="8"];
+ s3 -> s1 [label="9"];
+ s3 -> s1 [label="10"];
+ s3 -> s1 [label="11"];
+ s3 -> s1 [label="12"];
+ s3 -> s1 [label="13"];
+ s3 -> s1 [label="14"];
+ s3 -> s1 [label="15"];
+ s3 -> s1 [label="16"];
+ s3 -> s1 [label="17"];
+ s3 -> s1 [label="18"];
+ s3 -> s1 [label="19"];
+ s3 -> s1 [label="20"];
+ s3 -> s1 [label="21"];
+ s3 -> s1 [label="22"];
+ s3 -> s1 [label="23"];
+ s3 -> s1 [label="24"];
+ s3 -> s1 [label="25"];
+ s3 -> s1 [label="26"];
+ s3 -> s1 [label="27"];
+ s3 -> s1 [label="28"];
+ s3 -> s1 [label="29"];
+ s3 -> s1 [label="30"];
+ s3 -> s1 [label="31"];
+ s3 -> s1 [label="32"];
+ s3 -> s1 [label="33"];
+ s3 -> s1 [label="34"];
+ s3 -> s1 [label="35"];
+ s3 -> s1 [label="36"];
+ s3 -> s1 [label="37"];
+ s3 -> s1 [label="38"];
+ s3 -> s1 [label="39"];
+ s3 -> s1 [label="40"];
+ s3 -> s1 [label="41"];
+ s3 -> s1 [label="42"];
+ s3 -> s1 [label="43"];
+ s3 -> s1 [label="44"];
+ s3 -> s1 [label="45"];
+ s3 -> s1 [label="46"];
+ s3 -> s1 [label="47"];
+ s3 -> s1 [label="48"];
+ s3 -> s1 [label="49"];
+ s3 -> s1 [label="50"];
+ s3 -> s1 [label="51"];
+ s3 -> s1 [label="52"];
+ s3 -> s1 [label="53"];
+ s3 -> s1 [label="54"];
+ s3 -> s1 [label="55"];
+ s3 -> s1 [label="56"];
+ s3 -> s1 [label="57"];
+ s3 -> s1 [label="58"];
+ s3 -> s1 [label="59"];
+ s3 -> s1 [label="60"];
+ s3 -> s1 [label="61"];
+ s3 -> s1 [label="62"];
+ s3 -> s1 [label="63"];
+ s3 -> s1 [label="64"];
+ s3 -> s1 [label="65"];
+ s3 -> s1 [label="66"];
+ s3 -> s1 [label="67"];
+ s3 -> s1 [label="68"];
+ s3 -> s1 [label="69"];
+ s3 -> s1 [label="70"];
+ s3 -> s1 [label="71"];
+ s3 -> s1 [label="72"];
+ s3 -> s1 [label="73"];
+ s3 -> s1 [label="74"];
+ s3 -> s1 [label="75"];
+ s3 -> s1 [label="76"];
+ s3 -> s1 [label="77"];
+ s3 -> s1 [label="78"];
+ s3 -> s1 [label="79"];
+ s3 -> s1 [label="80"];
+ s3 -> s1 [label="81"];
+ s3 -> s1 [label="82"];
+ s3 -> s1 [label="83"];
+ s3 -> s1 [label="84"];
+ s3 -> s1 [label="85"];
+ s3 -> s1 [label="86"];
+ s3 -> s1 [label="87"];
+ s3 -> s1 [label="88"];
+ s3 -> s1 [label="89"];
+ s3 -> s1 [label="90"];
+ s3 -> s1 [label="91"];
+ s3 -> s1 [label="92"];
+ s3 -> s1 [label="93"];
+ s3 -> s1 [label="94"];
+ s3 -> s1 [label="95"];
+ s3 -> s1 [label="96"];
+ s3 -> s1 [label="97"];
+ s3 -> s1 [label="98"];
+ s3 -> s1 [label="99"];
+ s3 -> s1 [label="100"];
+ s3 -> s1 [label="101"];
+ s3 -> s1 [label="102"];
+ s3 -> s1 [label="103"];
+ s3 -> s1 [label="104"];
+ s3 -> s1 [label="105"];
+ s3 -> s1 [label="106"];
+ s3 -> s1 [label="107"];
+ s3 -> s1 [label="108"];
+ s3 -> s1 [label="109"];
+ s3 -> s1 [label="110"];
+ s3 -> s1 [label="111"];
+ s3 -> s1 [label="112"];
+ s3 -> s1 [label="113"];
+ s3 -> s1 [label="114"];
+ s3 -> s1 [label="115"];
+ s3 -> s1 [label="116"];
+ s3 -> s1 [label="117"];
+ s3 -> s1 [label="118"];
+ s3 -> s1 [label="119"];
+ s3 -> s1 [label="120"];
+ s3 -> s1 [label="121"];
+ s3 -> s1 [label="122"];
+ s3 -> s1 [label="123"];
+ s3 -> s1 [label="124"];
+ s3 -> s1 [label="125"];
+ s3 -> s1 [label="126"];
+ s3 -> s1 [label="127"];
+ s3 -> s1 [label="-128"];
+ s3 -> s1 [label="-127"];
+ s3 -> s1 [label="-126"];
+ s3 -> s1 [label="-125"];
+ s3 -> s1 [label="-124"];
+ s3 -> s1 [label="-123"];
+ s3 -> s1 [label="-122"];
+ s3 -> s1 [label="-121"];
+ s3 -> s1 [label="-120"];
+ s3 -> s1 [label="-119"];
+ s3 -> s1 [label="-118"];
+ s3 -> s1 [label="-117"];
+ s3 -> s1 [label="-116"];
+ s3 -> s1 [label="-115"];
+ s3 -> s1 [label="-114"];
+ s3 -> s1 [label="-113"];
+ s3 -> s1 [label="-112"];
+ s3 -> s1 [label="-111"];
+ s3 -> s1 [label="-110"];
+ s3 -> s1 [label="-109"];
+ s3 -> s1 [label="-108"];
+ s3 -> s1 [label="-107"];
+ s3 -> s1 [label="-106"];
+ s3 -> s1 [label="-105"];
+ s3 -> s1 [label="-104"];
+ s3 -> s1 [label="-103"];
+ s3 -> s1 [label="-102"];
+ s3 -> s1 [label="-101"];
+ s3 -> s1 [label="-100"];
+ s3 -> s1 [label="-99"];
+ s3 -> s1 [label="-98"];
+ s3 -> s1 [label="-97"];
+ s3 -> s2 [label="-96"];
+ s3 -> s2 [label="-95"];
+ s3 -> s2 [label="-94"];
+ s3 -> s2 [label="-93"];
+ s3 -> s2 [label="-92"];
+ s3 -> s2 [label="-91"];
+ s3 -> s2 [label="-90"];
+ s3 -> s2 [label="-89"];
+ s3 -> s2 [label="-88"];
+ s3 -> s2 [label="-87"];
+ s3 -> s2 [label="-86"];
+ s3 -> s2 [label="-85"];
+ s3 -> s2 [label="-84"];
+ s3 -> s2 [label="-83"];
+ s3 -> s2 [label="-82"];
+ s3 -> s2 [label="-81"];
+ s3 -> s2 [label="-80"];
+ s3 -> s2 [label="-79"];
+ s3 -> s2 [label="-78"];
+ s3 -> s2 [label="-77"];
+ s3 -> s2 [label="-76"];
+ s3 -> s2 [label="-75"];
+ s3 -> s2 [label="-74"];
+ s3 -> s2 [label="-73"];
+ s3 -> s2 [label="-72"];
+ s3 -> s2 [label="-71"];
+ s3 -> s2 [label="-70"];
+ s3 -> s2 [label="-69"];
+ s3 -> s2 [label="-68"];
+ s3 -> s2 [label="-67"];
+ s3 -> s2 [label="-66"];
+ s3 -> s2 [label="-65"];
+ s3 -> s1 [label="-64"];
+ s3 -> s1 [label="-63"];
+ s3 -> s1 [label="-62"];
+ s3 -> s1 [label="-61"];
+ s3 -> s1 [label="-60"];
+ s3 -> s1 [label="-59"];
+ s3 -> s1 [label="-58"];
+ s3 -> s1 [label="-57"];
+ s3 -> s1 [label="-56"];
+ s3 -> s1 [label="-55"];
+ s3 -> s1 [label="-54"];
+ s3 -> s1 [label="-53"];
+ s3 -> s1 [label="-52"];
+ s3 -> s1 [label="-51"];
+ s3 -> s1 [label="-50"];
+ s3 -> s1 [label="-49"];
+ s3 -> s1 [label="-48"];
+ s3 -> s1 [label="-47"];
+ s3 -> s1 [label="-46"];
+ s3 -> s1 [label="-45"];
+ s3 -> s1 [label="-44"];
+ s3 -> s1 [label="-43"];
+ s3 -> s1 [label="-42"];
+ s3 -> s1 [label="-41"];
+ s3 -> s1 [label="-40"];
+ s3 -> s1 [label="-39"];
+ s3 -> s1 [label="-38"];
+ s3 -> s1 [label="-37"];
+ s3 -> s1 [label="-36"];
+ s3 -> s1 [label="-35"];
+ s3 -> s1 [label="-34"];
+ s3 -> s1 [label="-33"];
+ s3 -> s1 [label="-32"];
+ s3 -> s1 [label="-31"];
+ s3 -> s1 [label="-30"];
+ s3 -> s1 [label="-29"];
+ s3 -> s1 [label="-28"];
+ s3 -> s1 [label="-27"];
+ s3 -> s1 [label="-26"];
+ s3 -> s1 [label="-25"];
+ s3 -> s1 [label="-24"];
+ s3 -> s1 [label="-23"];
+ s3 -> s1 [label="-22"];
+ s3 -> s1 [label="-21"];
+ s3 -> s1 [label="-20"];
+ s3 -> s1 [label="-19"];
+ s3 -> s1 [label="-18"];
+ s3 -> s1 [label="-17"];
+ s3 -> s1 [label="-16"];
+ s3 -> s1 [label="-15"];
+ s3 -> s1 [label="-14"];
+ s3 -> s1 [label="-13"];
+ s3 -> s1 [label="-12"];
+ s3 -> s1 [label="-11"];
+ s3 -> s1 [label="-10"];
+ s3 -> s1 [label="-9"];
+ s3 -> s1 [label="-8"];
+ s3 -> s1 [label="-7"];
+ s3 -> s1 [label="-6"];
+ s3 -> s1 [label="-5"];
+ s3 -> s1 [label="-4"];
+ s3 -> s1 [label="-3"];
+ s3 -> s1 [label="-2"];
+ s3 -> s1 [label="-1"];
+ s4 -> s1 [label="0"];
+ s4 -> s1 [label="1"];
+ s4 -> s1 [label="2"];
+ s4 -> s1 [label="3"];
+ s4 -> s1 [label="4"];
+ s4 -> s1 [label="5"];
+ s4 -> s1 [label="6"];
+ s4 -> s1 [label="7"];
+ s4 -> s1 [label="8"];
+ s4 -> s1 [label="9"];
+ s4 -> s1 [label="10"];
+ s4 -> s1 [label="11"];
+ s4 -> s1 [label="12"];
+ s4 -> s1 [label="13"];
+ s4 -> s1 [label="14"];
+ s4 -> s1 [label="15"];
+ s4 -> s1 [label="16"];
+ s4 -> s1 [label="17"];
+ s4 -> s1 [label="18"];
+ s4 -> s1 [label="19"];
+ s4 -> s1 [label="20"];
+ s4 -> s1 [label="21"];
+ s4 -> s1 [label="22"];
+ s4 -> s1 [label="23"];
+ s4 -> s1 [label="24"];
+ s4 -> s1 [label="25"];
+ s4 -> s1 [label="26"];
+ s4 -> s1 [label="27"];
+ s4 -> s1 [label="28"];
+ s4 -> s1 [label="29"];
+ s4 -> s1 [label="30"];
+ s4 -> s1 [label="31"];
+ s4 -> s1 [label="32"];
+ s4 -> s1 [label="33"];
+ s4 -> s1 [label="34"];
+ s4 -> s1 [label="35"];
+ s4 -> s1 [label="36"];
+ s4 -> s1 [label="37"];
+ s4 -> s1 [label="38"];
+ s4 -> s1 [label="39"];
+ s4 -> s1 [label="40"];
+ s4 -> s1 [label="41"];
+ s4 -> s1 [label="42"];
+ s4 -> s1 [label="43"];
+ s4 -> s1 [label="44"];
+ s4 -> s1 [label="45"];
+ s4 -> s1 [label="46"];
+ s4 -> s1 [label="47"];
+ s4 -> s1 [label="48"];
+ s4 -> s1 [label="49"];
+ s4 -> s1 [label="50"];
+ s4 -> s1 [label="51"];
+ s4 -> s1 [label="52"];
+ s4 -> s1 [label="53"];
+ s4 -> s1 [label="54"];
+ s4 -> s1 [label="55"];
+ s4 -> s1 [label="56"];
+ s4 -> s1 [label="57"];
+ s4 -> s1 [label="58"];
+ s4 -> s1 [label="59"];
+ s4 -> s1 [label="60"];
+ s4 -> s1 [label="61"];
+ s4 -> s1 [label="62"];
+ s4 -> s1 [label="63"];
+ s4 -> s1 [label="64"];
+ s4 -> s1 [label="65"];
+ s4 -> s1 [label="66"];
+ s4 -> s1 [label="67"];
+ s4 -> s1 [label="68"];
+ s4 -> s1 [label="69"];
+ s4 -> s1 [label="70"];
+ s4 -> s1 [label="71"];
+ s4 -> s1 [label="72"];
+ s4 -> s1 [label="73"];
+ s4 -> s1 [label="74"];
+ s4 -> s1 [label="75"];
+ s4 -> s1 [label="76"];
+ s4 -> s1 [label="77"];
+ s4 -> s1 [label="78"];
+ s4 -> s1 [label="79"];
+ s4 -> s1 [label="80"];
+ s4 -> s1 [label="81"];
+ s4 -> s1 [label="82"];
+ s4 -> s1 [label="83"];
+ s4 -> s1 [label="84"];
+ s4 -> s1 [label="85"];
+ s4 -> s1 [label="86"];
+ s4 -> s1 [label="87"];
+ s4 -> s1 [label="88"];
+ s4 -> s1 [label="89"];
+ s4 -> s1 [label="90"];
+ s4 -> s1 [label="91"];
+ s4 -> s1 [label="92"];
+ s4 -> s1 [label="93"];
+ s4 -> s1 [label="94"];
+ s4 -> s1 [label="95"];
+ s4 -> s1 [label="96"];
+ s4 -> s1 [label="97"];
+ s4 -> s1 [label="98"];
+ s4 -> s1 [label="99"];
+ s4 -> s1 [label="100"];
+ s4 -> s1 [label="101"];
+ s4 -> s1 [label="102"];
+ s4 -> s1 [label="103"];
+ s4 -> s1 [label="104"];
+ s4 -> s1 [label="105"];
+ s4 -> s1 [label="106"];
+ s4 -> s1 [label="107"];
+ s4 -> s1 [label="108"];
+ s4 -> s1 [label="109"];
+ s4 -> s1 [label="110"];
+ s4 -> s1 [label="111"];
+ s4 -> s1 [label="112"];
+ s4 -> s1 [label="113"];
+ s4 -> s1 [label="114"];
+ s4 -> s1 [label="115"];
+ s4 -> s1 [label="116"];
+ s4 -> s1 [label="117"];
+ s4 -> s1 [label="118"];
+ s4 -> s1 [label="119"];
+ s4 -> s1 [label="120"];
+ s4 -> s1 [label="121"];
+ s4 -> s1 [label="122"];
+ s4 -> s1 [label="123"];
+ s4 -> s1 [label="124"];
+ s4 -> s1 [label="125"];
+ s4 -> s1 [label="126"];
+ s4 -> s1 [label="127"];
+ s4 -> s2 [label="-128"];
+ s4 -> s2 [label="-127"];
+ s4 -> s2 [label="-126"];
+ s4 -> s2 [label="-125"];
+ s4 -> s2 [label="-124"];
+ s4 -> s2 [label="-123"];
+ s4 -> s2 [label="-122"];
+ s4 -> s2 [label="-121"];
+ s4 -> s2 [label="-120"];
+ s4 -> s2 [label="-119"];
+ s4 -> s2 [label="-118"];
+ s4 -> s2 [label="-117"];
+ s4 -> s2 [label="-116"];
+ s4 -> s2 [label="-115"];
+ s4 -> s2 [label="-114"];
+ s4 -> s2 [label="-113"];
+ s4 -> s2 [label="-112"];
+ s4 -> s2 [label="-111"];
+ s4 -> s2 [label="-110"];
+ s4 -> s2 [label="-109"];
+ s4 -> s2 [label="-108"];
+ s4 -> s2 [label="-107"];
+ s4 -> s2 [label="-106"];
+ s4 -> s2 [label="-105"];
+ s4 -> s2 [label="-104"];
+ s4 -> s2 [label="-103"];
+ s4 -> s2 [label="-102"];
+ s4 -> s2 [label="-101"];
+ s4 -> s2 [label="-100"];
+ s4 -> s2 [label="-99"];
+ s4 -> s2 [label="-98"];
+ s4 -> s2 [label="-97"];
+ s4 -> s2 [label="-96"];
+ s4 -> s2 [label="-95"];
+ s4 -> s2 [label="-94"];
+ s4 -> s2 [label="-93"];
+ s4 -> s2 [label="-92"];
+ s4 -> s2 [label="-91"];
+ s4 -> s2 [label="-90"];
+ s4 -> s2 [label="-89"];
+ s4 -> s2 [label="-88"];
+ s4 -> s2 [label="-87"];
+ s4 -> s2 [label="-86"];
+ s4 -> s2 [label="-85"];
+ s4 -> s2 [label="-84"];
+ s4 -> s2 [label="-83"];
+ s4 -> s2 [label="-82"];
+ s4 -> s2 [label="-81"];
+ s4 -> s2 [label="-80"];
+ s4 -> s2 [label="-79"];
+ s4 -> s2 [label="-78"];
+ s4 -> s2 [label="-77"];
+ s4 -> s2 [label="-76"];
+ s4 -> s2 [label="-75"];
+ s4 -> s2 [label="-74"];
+ s4 -> s2 [label="-73"];
+ s4 -> s2 [label="-72"];
+ s4 -> s2 [label="-71"];
+ s4 -> s2 [label="-70"];
+ s4 -> s2 [label="-69"];
+ s4 -> s2 [label="-68"];
+ s4 -> s2 [label="-67"];
+ s4 -> s2 [label="-66"];
+ s4 -> s2 [label="-65"];
+ s4 -> s1 [label="-64"];
+ s4 -> s1 [label="-63"];
+ s4 -> s1 [label="-62"];
+ s4 -> s1 [label="-61"];
+ s4 -> s1 [label="-60"];
+ s4 -> s1 [label="-59"];
+ s4 -> s1 [label="-58"];
+ s4 -> s1 [label="-57"];
+ s4 -> s1 [label="-56"];
+ s4 -> s1 [label="-55"];
+ s4 -> s1 [label="-54"];
+ s4 -> s1 [label="-53"];
+ s4 -> s1 [label="-52"];
+ s4 -> s1 [label="-51"];
+ s4 -> s1 [label="-50"];
+ s4 -> s1 [label="-49"];
+ s4 -> s1 [label="-48"];
+ s4 -> s1 [label="-47"];
+ s4 -> s1 [label="-46"];
+ s4 -> s1 [label="-45"];
+ s4 -> s1 [label="-44"];
+ s4 -> s1 [label="-43"];
+ s4 -> s1 [label="-42"];
+ s4 -> s1 [label="-41"];
+ s4 -> s1 [label="-40"];
+ s4 -> s1 [label="-39"];
+ s4 -> s1 [label="-38"];
+ s4 -> s1 [label="-37"];
+ s4 -> s1 [label="-36"];
+ s4 -> s1 [label="-35"];
+ s4 -> s1 [label="-34"];
+ s4 -> s1 [label="-33"];
+ s4 -> s1 [label="-32"];
+ s4 -> s1 [label="-31"];
+ s4 -> s1 [label="-30"];
+ s4 -> s1 [label="-29"];
+ s4 -> s1 [label="-28"];
+ s4 -> s1 [label="-27"];
+ s4 -> s1 [label="-26"];
+ s4 -> s1 [label="-25"];
+ s4 -> s1 [label="-24"];
+ s4 -> s1 [label="-23"];
+ s4 -> s1 [label="-22"];
+ s4 -> s1 [label="-21"];
+ s4 -> s1 [label="-20"];
+ s4 -> s1 [label="-19"];
+ s4 -> s1 [label="-18"];
+ s4 -> s1 [label="-17"];
+ s4 -> s1 [label="-16"];
+ s4 -> s1 [label="-15"];
+ s4 -> s1 [label="-14"];
+ s4 -> s1 [label="-13"];
+ s4 -> s1 [label="-12"];
+ s4 -> s1 [label="-11"];
+ s4 -> s1 [label="-10"];
+ s4 -> s1 [label="-9"];
+ s4 -> s1 [label="-8"];
+ s4 -> s1 [label="-7"];
+ s4 -> s1 [label="-6"];
+ s4 -> s1 [label="-5"];
+ s4 -> s1 [label="-4"];
+ s4 -> s1 [label="-3"];
+ s4 -> s1 [label="-2"];
+ s4 -> s1 [label="-1"];
+ s5 -> s1 [label="0"];
+ s5 -> s1 [label="1"];
+ s5 -> s1 [label="2"];
+ s5 -> s1 [label="3"];
+ s5 -> s1 [label="4"];
+ s5 -> s1 [label="5"];
+ s5 -> s1 [label="6"];
+ s5 -> s1 [label="7"];
+ s5 -> s1 [label="8"];
+ s5 -> s1 [label="9"];
+ s5 -> s1 [label="10"];
+ s5 -> s1 [label="11"];
+ s5 -> s1 [label="12"];
+ s5 -> s1 [label="13"];
+ s5 -> s1 [label="14"];
+ s5 -> s1 [label="15"];
+ s5 -> s1 [label="16"];
+ s5 -> s1 [label="17"];
+ s5 -> s1 [label="18"];
+ s5 -> s1 [label="19"];
+ s5 -> s1 [label="20"];
+ s5 -> s1 [label="21"];
+ s5 -> s1 [label="22"];
+ s5 -> s1 [label="23"];
+ s5 -> s1 [label="24"];
+ s5 -> s1 [label="25"];
+ s5 -> s1 [label="26"];
+ s5 -> s1 [label="27"];
+ s5 -> s1 [label="28"];
+ s5 -> s1 [label="29"];
+ s5 -> s1 [label="30"];
+ s5 -> s1 [label="31"];
+ s5 -> s1 [label="32"];
+ s5 -> s1 [label="33"];
+ s5 -> s1 [label="34"];
+ s5 -> s1 [label="35"];
+ s5 -> s1 [label="36"];
+ s5 -> s1 [label="37"];
+ s5 -> s1 [label="38"];
+ s5 -> s1 [label="39"];
+ s5 -> s1 [label="40"];
+ s5 -> s1 [label="41"];
+ s5 -> s1 [label="42"];
+ s5 -> s1 [label="43"];
+ s5 -> s1 [label="44"];
+ s5 -> s1 [label="45"];
+ s5 -> s1 [label="46"];
+ s5 -> s1 [label="47"];
+ s5 -> s1 [label="48"];
+ s5 -> s1 [label="49"];
+ s5 -> s1 [label="50"];
+ s5 -> s1 [label="51"];
+ s5 -> s1 [label="52"];
+ s5 -> s1 [label="53"];
+ s5 -> s1 [label="54"];
+ s5 -> s1 [label="55"];
+ s5 -> s1 [label="56"];
+ s5 -> s1 [label="57"];
+ s5 -> s1 [label="58"];
+ s5 -> s1 [label="59"];
+ s5 -> s1 [label="60"];
+ s5 -> s1 [label="61"];
+ s5 -> s1 [label="62"];
+ s5 -> s1 [label="63"];
+ s5 -> s1 [label="64"];
+ s5 -> s1 [label="65"];
+ s5 -> s1 [label="66"];
+ s5 -> s1 [label="67"];
+ s5 -> s1 [label="68"];
+ s5 -> s1 [label="69"];
+ s5 -> s1 [label="70"];
+ s5 -> s1 [label="71"];
+ s5 -> s1 [label="72"];
+ s5 -> s1 [label="73"];
+ s5 -> s1 [label="74"];
+ s5 -> s1 [label="75"];
+ s5 -> s1 [label="76"];
+ s5 -> s1 [label="77"];
+ s5 -> s1 [label="78"];
+ s5 -> s1 [label="79"];
+ s5 -> s1 [label="80"];
+ s5 -> s1 [label="81"];
+ s5 -> s1 [label="82"];
+ s5 -> s1 [label="83"];
+ s5 -> s1 [label="84"];
+ s5 -> s1 [label="85"];
+ s5 -> s1 [label="86"];
+ s5 -> s1 [label="87"];
+ s5 -> s1 [label="88"];
+ s5 -> s1 [label="89"];
+ s5 -> s1 [label="90"];
+ s5 -> s1 [label="91"];
+ s5 -> s1 [label="92"];
+ s5 -> s1 [label="93"];
+ s5 -> s1 [label="94"];
+ s5 -> s1 [label="95"];
+ s5 -> s1 [label="96"];
+ s5 -> s1 [label="97"];
+ s5 -> s1 [label="98"];
+ s5 -> s1 [label="99"];
+ s5 -> s1 [label="100"];
+ s5 -> s1 [label="101"];
+ s5 -> s1 [label="102"];
+ s5 -> s1 [label="103"];
+ s5 -> s1 [label="104"];
+ s5 -> s1 [label="105"];
+ s5 -> s1 [label="106"];
+ s5 -> s1 [label="107"];
+ s5 -> s1 [label="108"];
+ s5 -> s1 [label="109"];
+ s5 -> s1 [label="110"];
+ s5 -> s1 [label="111"];
+ s5 -> s1 [label="112"];
+ s5 -> s1 [label="113"];
+ s5 -> s1 [label="114"];
+ s5 -> s1 [label="115"];
+ s5 -> s1 [label="116"];
+ s5 -> s1 [label="117"];
+ s5 -> s1 [label="118"];
+ s5 -> s1 [label="119"];
+ s5 -> s1 [label="120"];
+ s5 -> s1 [label="121"];
+ s5 -> s1 [label="122"];
+ s5 -> s1 [label="123"];
+ s5 -> s1 [label="124"];
+ s5 -> s1 [label="125"];
+ s5 -> s1 [label="126"];
+ s5 -> s1 [label="127"];
+ s5 -> s2 [label="-128"];
+ s5 -> s2 [label="-127"];
+ s5 -> s2 [label="-126"];
+ s5 -> s2 [label="-125"];
+ s5 -> s2 [label="-124"];
+ s5 -> s2 [label="-123"];
+ s5 -> s2 [label="-122"];
+ s5 -> s2 [label="-121"];
+ s5 -> s2 [label="-120"];
+ s5 -> s2 [label="-119"];
+ s5 -> s2 [label="-118"];
+ s5 -> s2 [label="-117"];
+ s5 -> s2 [label="-116"];
+ s5 -> s2 [label="-115"];
+ s5 -> s2 [label="-114"];
+ s5 -> s2 [label="-113"];
+ s5 -> s2 [label="-112"];
+ s5 -> s2 [label="-111"];
+ s5 -> s2 [label="-110"];
+ s5 -> s2 [label="-109"];
+ s5 -> s2 [label="-108"];
+ s5 -> s2 [label="-107"];
+ s5 -> s2 [label="-106"];
+ s5 -> s2 [label="-105"];
+ s5 -> s2 [label="-104"];
+ s5 -> s2 [label="-103"];
+ s5 -> s2 [label="-102"];
+ s5 -> s2 [label="-101"];
+ s5 -> s2 [label="-100"];
+ s5 -> s2 [label="-99"];
+ s5 -> s2 [label="-98"];
+ s5 -> s2 [label="-97"];
+ s5 -> s1 [label="-96"];
+ s5 -> s1 [label="-95"];
+ s5 -> s1 [label="-94"];
+ s5 -> s1 [label="-93"];
+ s5 -> s1 [label="-92"];
+ s5 -> s1 [label="-91"];
+ s5 -> s1 [label="-90"];
+ s5 -> s1 [label="-89"];
+ s5 -> s1 [label="-88"];
+ s5 -> s1 [label="-87"];
+ s5 -> s1 [label="-86"];
+ s5 -> s1 [label="-85"];
+ s5 -> s1 [label="-84"];
+ s5 -> s1 [label="-83"];
+ s5 -> s1 [label="-82"];
+ s5 -> s1 [label="-81"];
+ s5 -> s1 [label="-80"];
+ s5 -> s1 [label="-79"];
+ s5 -> s1 [label="-78"];
+ s5 -> s1 [label="-77"];
+ s5 -> s1 [label="-76"];
+ s5 -> s1 [label="-75"];
+ s5 -> s1 [label="-74"];
+ s5 -> s1 [label="-73"];
+ s5 -> s1 [label="-72"];
+ s5 -> s1 [label="-71"];
+ s5 -> s1 [label="-70"];
+ s5 -> s1 [label="-69"];
+ s5 -> s1 [label="-68"];
+ s5 -> s1 [label="-67"];
+ s5 -> s1 [label="-66"];
+ s5 -> s1 [label="-65"];
+ s5 -> s1 [label="-64"];
+ s5 -> s1 [label="-63"];
+ s5 -> s1 [label="-62"];
+ s5 -> s1 [label="-61"];
+ s5 -> s1 [label="-60"];
+ s5 -> s1 [label="-59"];
+ s5 -> s1 [label="-58"];
+ s5 -> s1 [label="-57"];
+ s5 -> s1 [label="-56"];
+ s5 -> s1 [label="-55"];
+ s5 -> s1 [label="-54"];
+ s5 -> s1 [label="-53"];
+ s5 -> s1 [label="-52"];
+ s5 -> s1 [label="-51"];
+ s5 -> s1 [label="-50"];
+ s5 -> s1 [label="-49"];
+ s5 -> s1 [label="-48"];
+ s5 -> s1 [label="-47"];
+ s5 -> s1 [label="-46"];
+ s5 -> s1 [label="-45"];
+ s5 -> s1 [label="-44"];
+ s5 -> s1 [label="-43"];
+ s5 -> s1 [label="-42"];
+ s5 -> s1 [label="-41"];
+ s5 -> s1 [label="-40"];
+ s5 -> s1 [label="-39"];
+ s5 -> s1 [label="-38"];
+ s5 -> s1 [label="-37"];
+ s5 -> s1 [label="-36"];
+ s5 -> s1 [label="-35"];
+ s5 -> s1 [label="-34"];
+ s5 -> s1 [label="-33"];
+ s5 -> s1 [label="-32"];
+ s5 -> s1 [label="-31"];
+ s5 -> s1 [label="-30"];
+ s5 -> s1 [label="-29"];
+ s5 -> s1 [label="-28"];
+ s5 -> s1 [label="-27"];
+ s5 -> s1 [label="-26"];
+ s5 -> s1 [label="-25"];
+ s5 -> s1 [label="-24"];
+ s5 -> s1 [label="-23"];
+ s5 -> s1 [label="-22"];
+ s5 -> s1 [label="-21"];
+ s5 -> s1 [label="-20"];
+ s5 -> s1 [label="-19"];
+ s5 -> s1 [label="-18"];
+ s5 -> s1 [label="-17"];
+ s5 -> s1 [label="-16"];
+ s5 -> s1 [label="-15"];
+ s5 -> s1 [label="-14"];
+ s5 -> s1 [label="-13"];
+ s5 -> s1 [label="-12"];
+ s5 -> s1 [label="-11"];
+ s5 -> s1 [label="-10"];
+ s5 -> s1 [label="-9"];
+ s5 -> s1 [label="-8"];
+ s5 -> s1 [label="-7"];
+ s5 -> s1 [label="-6"];
+ s5 -> s1 [label="-5"];
+ s5 -> s1 [label="-4"];
+ s5 -> s1 [label="-3"];
+ s5 -> s1 [label="-2"];
+ s5 -> s1 [label="-1"];
+ s6 -> s1 [label="0"];
+ s6 -> s1 [label="1"];
+ s6 -> s1 [label="2"];
+ s6 -> s1 [label="3"];
+ s6 -> s1 [label="4"];
+ s6 -> s1 [label="5"];
+ s6 -> s1 [label="6"];
+ s6 -> s1 [label="7"];
+ s6 -> s1 [label="8"];
+ s6 -> s1 [label="9"];
+ s6 -> s1 [label="10"];
+ s6 -> s1 [label="11"];
+ s6 -> s1 [label="12"];
+ s6 -> s1 [label="13"];
+ s6 -> s1 [label="14"];
+ s6 -> s1 [label="15"];
+ s6 -> s1 [label="16"];
+ s6 -> s1 [label="17"];
+ s6 -> s1 [label="18"];
+ s6 -> s1 [label="19"];
+ s6 -> s1 [label="20"];
+ s6 -> s1 [label="21"];
+ s6 -> s1 [label="22"];
+ s6 -> s1 [label="23"];
+ s6 -> s1 [label="24"];
+ s6 -> s1 [label="25"];
+ s6 -> s1 [label="26"];
+ s6 -> s1 [label="27"];
+ s6 -> s1 [label="28"];
+ s6 -> s1 [label="29"];
+ s6 -> s1 [label="30"];
+ s6 -> s1 [label="31"];
+ s6 -> s1 [label="32"];
+ s6 -> s1 [label="33"];
+ s6 -> s1 [label="34"];
+ s6 -> s1 [label="35"];
+ s6 -> s1 [label="36"];
+ s6 -> s1 [label="37"];
+ s6 -> s1 [label="38"];
+ s6 -> s1 [label="39"];
+ s6 -> s1 [label="40"];
+ s6 -> s1 [label="41"];
+ s6 -> s1 [label="42"];
+ s6 -> s1 [label="43"];
+ s6 -> s1 [label="44"];
+ s6 -> s1 [label="45"];
+ s6 -> s1 [label="46"];
+ s6 -> s1 [label="47"];
+ s6 -> s1 [label="48"];
+ s6 -> s1 [label="49"];
+ s6 -> s1 [label="50"];
+ s6 -> s1 [label="51"];
+ s6 -> s1 [label="52"];
+ s6 -> s1 [label="53"];
+ s6 -> s1 [label="54"];
+ s6 -> s1 [label="55"];
+ s6 -> s1 [label="56"];
+ s6 -> s1 [label="57"];
+ s6 -> s1 [label="58"];
+ s6 -> s1 [label="59"];
+ s6 -> s1 [label="60"];
+ s6 -> s1 [label="61"];
+ s6 -> s1 [label="62"];
+ s6 -> s1 [label="63"];
+ s6 -> s1 [label="64"];
+ s6 -> s1 [label="65"];
+ s6 -> s1 [label="66"];
+ s6 -> s1 [label="67"];
+ s6 -> s1 [label="68"];
+ s6 -> s1 [label="69"];
+ s6 -> s1 [label="70"];
+ s6 -> s1 [label="71"];
+ s6 -> s1 [label="72"];
+ s6 -> s1 [label="73"];
+ s6 -> s1 [label="74"];
+ s6 -> s1 [label="75"];
+ s6 -> s1 [label="76"];
+ s6 -> s1 [label="77"];
+ s6 -> s1 [label="78"];
+ s6 -> s1 [label="79"];
+ s6 -> s1 [label="80"];
+ s6 -> s1 [label="81"];
+ s6 -> s1 [label="82"];
+ s6 -> s1 [label="83"];
+ s6 -> s1 [label="84"];
+ s6 -> s1 [label="85"];
+ s6 -> s1 [label="86"];
+ s6 -> s1 [label="87"];
+ s6 -> s1 [label="88"];
+ s6 -> s1 [label="89"];
+ s6 -> s1 [label="90"];
+ s6 -> s1 [label="91"];
+ s6 -> s1 [label="92"];
+ s6 -> s1 [label="93"];
+ s6 -> s1 [label="94"];
+ s6 -> s1 [label="95"];
+ s6 -> s1 [label="96"];
+ s6 -> s1 [label="97"];
+ s6 -> s1 [label="98"];
+ s6 -> s1 [label="99"];
+ s6 -> s1 [label="100"];
+ s6 -> s1 [label="101"];
+ s6 -> s1 [label="102"];
+ s6 -> s1 [label="103"];
+ s6 -> s1 [label="104"];
+ s6 -> s1 [label="105"];
+ s6 -> s1 [label="106"];
+ s6 -> s1 [label="107"];
+ s6 -> s1 [label="108"];
+ s6 -> s1 [label="109"];
+ s6 -> s1 [label="110"];
+ s6 -> s1 [label="111"];
+ s6 -> s1 [label="112"];
+ s6 -> s1 [label="113"];
+ s6 -> s1 [label="114"];
+ s6 -> s1 [label="115"];
+ s6 -> s1 [label="116"];
+ s6 -> s1 [label="117"];
+ s6 -> s1 [label="118"];
+ s6 -> s1 [label="119"];
+ s6 -> s1 [label="120"];
+ s6 -> s1 [label="121"];
+ s6 -> s1 [label="122"];
+ s6 -> s1 [label="123"];
+ s6 -> s1 [label="124"];
+ s6 -> s1 [label="125"];
+ s6 -> s1 [label="126"];
+ s6 -> s1 [label="127"];
+ s6 -> s1 [label="-128"];
+ s6 -> s1 [label="-127"];
+ s6 -> s1 [label="-126"];
+ s6 -> s1 [label="-125"];
+ s6 -> s1 [label="-124"];
+ s6 -> s1 [label="-123"];
+ s6 -> s1 [label="-122"];
+ s6 -> s1 [label="-121"];
+ s6 -> s1 [label="-120"];
+ s6 -> s1 [label="-119"];
+ s6 -> s1 [label="-118"];
+ s6 -> s1 [label="-117"];
+ s6 -> s1 [label="-116"];
+ s6 -> s1 [label="-115"];
+ s6 -> s1 [label="-114"];
+ s6 -> s1 [label="-113"];
+ s6 -> s4 [label="-112"];
+ s6 -> s4 [label="-111"];
+ s6 -> s4 [label="-110"];
+ s6 -> s4 [label="-109"];
+ s6 -> s4 [label="-108"];
+ s6 -> s4 [label="-107"];
+ s6 -> s4 [label="-106"];
+ s6 -> s4 [label="-105"];
+ s6 -> s4 [label="-104"];
+ s6 -> s4 [label="-103"];
+ s6 -> s4 [label="-102"];
+ s6 -> s4 [label="-101"];
+ s6 -> s4 [label="-100"];
+ s6 -> s4 [label="-99"];
+ s6 -> s4 [label="-98"];
+ s6 -> s4 [label="-97"];
+ s6 -> s4 [label="-96"];
+ s6 -> s4 [label="-95"];
+ s6 -> s4 [label="-94"];
+ s6 -> s4 [label="-93"];
+ s6 -> s4 [label="-92"];
+ s6 -> s4 [label="-91"];
+ s6 -> s4 [label="-90"];
+ s6 -> s4 [label="-89"];
+ s6 -> s4 [label="-88"];
+ s6 -> s4 [label="-87"];
+ s6 -> s4 [label="-86"];
+ s6 -> s4 [label="-85"];
+ s6 -> s4 [label="-84"];
+ s6 -> s4 [label="-83"];
+ s6 -> s4 [label="-82"];
+ s6 -> s4 [label="-81"];
+ s6 -> s4 [label="-80"];
+ s6 -> s4 [label="-79"];
+ s6 -> s4 [label="-78"];
+ s6 -> s4 [label="-77"];
+ s6 -> s4 [label="-76"];
+ s6 -> s4 [label="-75"];
+ s6 -> s4 [label="-74"];
+ s6 -> s4 [label="-73"];
+ s6 -> s4 [label="-72"];
+ s6 -> s4 [label="-71"];
+ s6 -> s4 [label="-70"];
+ s6 -> s4 [label="-69"];
+ s6 -> s4 [label="-68"];
+ s6 -> s4 [label="-67"];
+ s6 -> s4 [label="-66"];
+ s6 -> s4 [label="-65"];
+ s6 -> s1 [label="-64"];
+ s6 -> s1 [label="-63"];
+ s6 -> s1 [label="-62"];
+ s6 -> s1 [label="-61"];
+ s6 -> s1 [label="-60"];
+ s6 -> s1 [label="-59"];
+ s6 -> s1 [label="-58"];
+ s6 -> s1 [label="-57"];
+ s6 -> s1 [label="-56"];
+ s6 -> s1 [label="-55"];
+ s6 -> s1 [label="-54"];
+ s6 -> s1 [label="-53"];
+ s6 -> s1 [label="-52"];
+ s6 -> s1 [label="-51"];
+ s6 -> s1 [label="-50"];
+ s6 -> s1 [label="-49"];
+ s6 -> s1 [label="-48"];
+ s6 -> s1 [label="-47"];
+ s6 -> s1 [label="-46"];
+ s6 -> s1 [label="-45"];
+ s6 -> s1 [label="-44"];
+ s6 -> s1 [label="-43"];
+ s6 -> s1 [label="-42"];
+ s6 -> s1 [label="-41"];
+ s6 -> s1 [label="-40"];
+ s6 -> s1 [label="-39"];
+ s6 -> s1 [label="-38"];
+ s6 -> s1 [label="-37"];
+ s6 -> s1 [label="-36"];
+ s6 -> s1 [label="-35"];
+ s6 -> s1 [label="-34"];
+ s6 -> s1 [label="-33"];
+ s6 -> s1 [label="-32"];
+ s6 -> s1 [label="-31"];
+ s6 -> s1 [label="-30"];
+ s6 -> s1 [label="-29"];
+ s6 -> s1 [label="-28"];
+ s6 -> s1 [label="-27"];
+ s6 -> s1 [label="-26"];
+ s6 -> s1 [label="-25"];
+ s6 -> s1 [label="-24"];
+ s6 -> s1 [label="-23"];
+ s6 -> s1 [label="-22"];
+ s6 -> s1 [label="-21"];
+ s6 -> s1 [label="-20"];
+ s6 -> s1 [label="-19"];
+ s6 -> s1 [label="-18"];
+ s6 -> s1 [label="-17"];
+ s6 -> s1 [label="-16"];
+ s6 -> s1 [label="-15"];
+ s6 -> s1 [label="-14"];
+ s6 -> s1 [label="-13"];
+ s6 -> s1 [label="-12"];
+ s6 -> s1 [label="-11"];
+ s6 -> s1 [label="-10"];
+ s6 -> s1 [label="-9"];
+ s6 -> s1 [label="-8"];
+ s6 -> s1 [label="-7"];
+ s6 -> s1 [label="-6"];
+ s6 -> s1 [label="-5"];
+ s6 -> s1 [label="-4"];
+ s6 -> s1 [label="-3"];
+ s6 -> s1 [label="-2"];
+ s6 -> s1 [label="-1"];
+ s7 -> s1 [label="0"];
+ s7 -> s1 [label="1"];
+ s7 -> s1 [label="2"];
+ s7 -> s1 [label="3"];
+ s7 -> s1 [label="4"];
+ s7 -> s1 [label="5"];
+ s7 -> s1 [label="6"];
+ s7 -> s1 [label="7"];
+ s7 -> s1 [label="8"];
+ s7 -> s1 [label="9"];
+ s7 -> s1 [label="10"];
+ s7 -> s1 [label="11"];
+ s7 -> s1 [label="12"];
+ s7 -> s1 [label="13"];
+ s7 -> s1 [label="14"];
+ s7 -> s1 [label="15"];
+ s7 -> s1 [label="16"];
+ s7 -> s1 [label="17"];
+ s7 -> s1 [label="18"];
+ s7 -> s1 [label="19"];
+ s7 -> s1 [label="20"];
+ s7 -> s1 [label="21"];
+ s7 -> s1 [label="22"];
+ s7 -> s1 [label="23"];
+ s7 -> s1 [label="24"];
+ s7 -> s1 [label="25"];
+ s7 -> s1 [label="26"];
+ s7 -> s1 [label="27"];
+ s7 -> s1 [label="28"];
+ s7 -> s1 [label="29"];
+ s7 -> s1 [label="30"];
+ s7 -> s1 [label="31"];
+ s7 -> s1 [label="32"];
+ s7 -> s1 [label="33"];
+ s7 -> s1 [label="34"];
+ s7 -> s1 [label="35"];
+ s7 -> s1 [label="36"];
+ s7 -> s1 [label="37"];
+ s7 -> s1 [label="38"];
+ s7 -> s1 [label="39"];
+ s7 -> s1 [label="40"];
+ s7 -> s1 [label="41"];
+ s7 -> s1 [label="42"];
+ s7 -> s1 [label="43"];
+ s7 -> s1 [label="44"];
+ s7 -> s1 [label="45"];
+ s7 -> s1 [label="46"];
+ s7 -> s1 [label="47"];
+ s7 -> s1 [label="48"];
+ s7 -> s1 [label="49"];
+ s7 -> s1 [label="50"];
+ s7 -> s1 [label="51"];
+ s7 -> s1 [label="52"];
+ s7 -> s1 [label="53"];
+ s7 -> s1 [label="54"];
+ s7 -> s1 [label="55"];
+ s7 -> s1 [label="56"];
+ s7 -> s1 [label="57"];
+ s7 -> s1 [label="58"];
+ s7 -> s1 [label="59"];
+ s7 -> s1 [label="60"];
+ s7 -> s1 [label="61"];
+ s7 -> s1 [label="62"];
+ s7 -> s1 [label="63"];
+ s7 -> s1 [label="64"];
+ s7 -> s1 [label="65"];
+ s7 -> s1 [label="66"];
+ s7 -> s1 [label="67"];
+ s7 -> s1 [label="68"];
+ s7 -> s1 [label="69"];
+ s7 -> s1 [label="70"];
+ s7 -> s1 [label="71"];
+ s7 -> s1 [label="72"];
+ s7 -> s1 [label="73"];
+ s7 -> s1 [label="74"];
+ s7 -> s1 [label="75"];
+ s7 -> s1 [label="76"];
+ s7 -> s1 [label="77"];
+ s7 -> s1 [label="78"];
+ s7 -> s1 [label="79"];
+ s7 -> s1 [label="80"];
+ s7 -> s1 [label="81"];
+ s7 -> s1 [label="82"];
+ s7 -> s1 [label="83"];
+ s7 -> s1 [label="84"];
+ s7 -> s1 [label="85"];
+ s7 -> s1 [label="86"];
+ s7 -> s1 [label="87"];
+ s7 -> s1 [label="88"];
+ s7 -> s1 [label="89"];
+ s7 -> s1 [label="90"];
+ s7 -> s1 [label="91"];
+ s7 -> s1 [label="92"];
+ s7 -> s1 [label="93"];
+ s7 -> s1 [label="94"];
+ s7 -> s1 [label="95"];
+ s7 -> s1 [label="96"];
+ s7 -> s1 [label="97"];
+ s7 -> s1 [label="98"];
+ s7 -> s1 [label="99"];
+ s7 -> s1 [label="100"];
+ s7 -> s1 [label="101"];
+ s7 -> s1 [label="102"];
+ s7 -> s1 [label="103"];
+ s7 -> s1 [label="104"];
+ s7 -> s1 [label="105"];
+ s7 -> s1 [label="106"];
+ s7 -> s1 [label="107"];
+ s7 -> s1 [label="108"];
+ s7 -> s1 [label="109"];
+ s7 -> s1 [label="110"];
+ s7 -> s1 [label="111"];
+ s7 -> s1 [label="112"];
+ s7 -> s1 [label="113"];
+ s7 -> s1 [label="114"];
+ s7 -> s1 [label="115"];
+ s7 -> s1 [label="116"];
+ s7 -> s1 [label="117"];
+ s7 -> s1 [label="118"];
+ s7 -> s1 [label="119"];
+ s7 -> s1 [label="120"];
+ s7 -> s1 [label="121"];
+ s7 -> s1 [label="122"];
+ s7 -> s1 [label="123"];
+ s7 -> s1 [label="124"];
+ s7 -> s1 [label="125"];
+ s7 -> s1 [label="126"];
+ s7 -> s1 [label="127"];
+ s7 -> s4 [label="-128"];
+ s7 -> s4 [label="-127"];
+ s7 -> s4 [label="-126"];
+ s7 -> s4 [label="-125"];
+ s7 -> s4 [label="-124"];
+ s7 -> s4 [label="-123"];
+ s7 -> s4 [label="-122"];
+ s7 -> s4 [label="-121"];
+ s7 -> s4 [label="-120"];
+ s7 -> s4 [label="-119"];
+ s7 -> s4 [label="-118"];
+ s7 -> s4 [label="-117"];
+ s7 -> s4 [label="-116"];
+ s7 -> s4 [label="-115"];
+ s7 -> s4 [label="-114"];
+ s7 -> s4 [label="-113"];
+ s7 -> s1 [label="-112"];
+ s7 -> s1 [label="-111"];
+ s7 -> s1 [label="-110"];
+ s7 -> s1 [label="-109"];
+ s7 -> s1 [label="-108"];
+ s7 -> s1 [label="-107"];
+ s7 -> s1 [label="-106"];
+ s7 -> s1 [label="-105"];
+ s7 -> s1 [label="-104"];
+ s7 -> s1 [label="-103"];
+ s7 -> s1 [label="-102"];
+ s7 -> s1 [label="-101"];
+ s7 -> s1 [label="-100"];
+ s7 -> s1 [label="-99"];
+ s7 -> s1 [label="-98"];
+ s7 -> s1 [label="-97"];
+ s7 -> s1 [label="-96"];
+ s7 -> s1 [label="-95"];
+ s7 -> s1 [label="-94"];
+ s7 -> s1 [label="-93"];
+ s7 -> s1 [label="-92"];
+ s7 -> s1 [label="-91"];
+ s7 -> s1 [label="-90"];
+ s7 -> s1 [label="-89"];
+ s7 -> s1 [label="-88"];
+ s7 -> s1 [label="-87"];
+ s7 -> s1 [label="-86"];
+ s7 -> s1 [label="-85"];
+ s7 -> s1 [label="-84"];
+ s7 -> s1 [label="-83"];
+ s7 -> s1 [label="-82"];
+ s7 -> s1 [label="-81"];
+ s7 -> s1 [label="-80"];
+ s7 -> s1 [label="-79"];
+ s7 -> s1 [label="-78"];
+ s7 -> s1 [label="-77"];
+ s7 -> s1 [label="-76"];
+ s7 -> s1 [label="-75"];
+ s7 -> s1 [label="-74"];
+ s7 -> s1 [label="-73"];
+ s7 -> s1 [label="-72"];
+ s7 -> s1 [label="-71"];
+ s7 -> s1 [label="-70"];
+ s7 -> s1 [label="-69"];
+ s7 -> s1 [label="-68"];
+ s7 -> s1 [label="-67"];
+ s7 -> s1 [label="-66"];
+ s7 -> s1 [label="-65"];
+ s7 -> s1 [label="-64"];
+ s7 -> s1 [label="-63"];
+ s7 -> s1 [label="-62"];
+ s7 -> s1 [label="-61"];
+ s7 -> s1 [label="-60"];
+ s7 -> s1 [label="-59"];
+ s7 -> s1 [label="-58"];
+ s7 -> s1 [label="-57"];
+ s7 -> s1 [label="-56"];
+ s7 -> s1 [label="-55"];
+ s7 -> s1 [label="-54"];
+ s7 -> s1 [label="-53"];
+ s7 -> s1 [label="-52"];
+ s7 -> s1 [label="-51"];
+ s7 -> s1 [label="-50"];
+ s7 -> s1 [label="-49"];
+ s7 -> s1 [label="-48"];
+ s7 -> s1 [label="-47"];
+ s7 -> s1 [label="-46"];
+ s7 -> s1 [label="-45"];
+ s7 -> s1 [label="-44"];
+ s7 -> s1 [label="-43"];
+ s7 -> s1 [label="-42"];
+ s7 -> s1 [label="-41"];
+ s7 -> s1 [label="-40"];
+ s7 -> s1 [label="-39"];
+ s7 -> s1 [label="-38"];
+ s7 -> s1 [label="-37"];
+ s7 -> s1 [label="-36"];
+ s7 -> s1 [label="-35"];
+ s7 -> s1 [label="-34"];
+ s7 -> s1 [label="-33"];
+ s7 -> s1 [label="-32"];
+ s7 -> s1 [label="-31"];
+ s7 -> s1 [label="-30"];
+ s7 -> s1 [label="-29"];
+ s7 -> s1 [label="-28"];
+ s7 -> s1 [label="-27"];
+ s7 -> s1 [label="-26"];
+ s7 -> s1 [label="-25"];
+ s7 -> s1 [label="-24"];
+ s7 -> s1 [label="-23"];
+ s7 -> s1 [label="-22"];
+ s7 -> s1 [label="-21"];
+ s7 -> s1 [label="-20"];
+ s7 -> s1 [label="-19"];
+ s7 -> s1 [label="-18"];
+ s7 -> s1 [label="-17"];
+ s7 -> s1 [label="-16"];
+ s7 -> s1 [label="-15"];
+ s7 -> s1 [label="-14"];
+ s7 -> s1 [label="-13"];
+ s7 -> s1 [label="-12"];
+ s7 -> s1 [label="-11"];
+ s7 -> s1 [label="-10"];
+ s7 -> s1 [label="-9"];
+ s7 -> s1 [label="-8"];
+ s7 -> s1 [label="-7"];
+ s7 -> s1 [label="-6"];
+ s7 -> s1 [label="-5"];
+ s7 -> s1 [label="-4"];
+ s7 -> s1 [label="-3"];
+ s7 -> s1 [label="-2"];
+ s7 -> s1 [label="-1"];
+ s8 -> s1 [label="0"];
+ s8 -> s1 [label="1"];
+ s8 -> s1 [label="2"];
+ s8 -> s1 [label="3"];
+ s8 -> s1 [label="4"];
+ s8 -> s1 [label="5"];
+ s8 -> s1 [label="6"];
+ s8 -> s1 [label="7"];
+ s8 -> s1 [label="8"];
+ s8 -> s1 [label="9"];
+ s8 -> s1 [label="10"];
+ s8 -> s1 [label="11"];
+ s8 -> s1 [label="12"];
+ s8 -> s1 [label="13"];
+ s8 -> s1 [label="14"];
+ s8 -> s1 [label="15"];
+ s8 -> s1 [label="16"];
+ s8 -> s1 [label="17"];
+ s8 -> s1 [label="18"];
+ s8 -> s1 [label="19"];
+ s8 -> s1 [label="20"];
+ s8 -> s1 [label="21"];
+ s8 -> s1 [label="22"];
+ s8 -> s1 [label="23"];
+ s8 -> s1 [label="24"];
+ s8 -> s1 [label="25"];
+ s8 -> s1 [label="26"];
+ s8 -> s1 [label="27"];
+ s8 -> s1 [label="28"];
+ s8 -> s1 [label="29"];
+ s8 -> s1 [label="30"];
+ s8 -> s1 [label="31"];
+ s8 -> s1 [label="32"];
+ s8 -> s1 [label="33"];
+ s8 -> s1 [label="34"];
+ s8 -> s1 [label="35"];
+ s8 -> s1 [label="36"];
+ s8 -> s1 [label="37"];
+ s8 -> s1 [label="38"];
+ s8 -> s1 [label="39"];
+ s8 -> s1 [label="40"];
+ s8 -> s1 [label="41"];
+ s8 -> s1 [label="42"];
+ s8 -> s1 [label="43"];
+ s8 -> s1 [label="44"];
+ s8 -> s1 [label="45"];
+ s8 -> s1 [label="46"];
+ s8 -> s1 [label="47"];
+ s8 -> s1 [label="48"];
+ s8 -> s1 [label="49"];
+ s8 -> s1 [label="50"];
+ s8 -> s1 [label="51"];
+ s8 -> s1 [label="52"];
+ s8 -> s1 [label="53"];
+ s8 -> s1 [label="54"];
+ s8 -> s1 [label="55"];
+ s8 -> s1 [label="56"];
+ s8 -> s1 [label="57"];
+ s8 -> s1 [label="58"];
+ s8 -> s1 [label="59"];
+ s8 -> s1 [label="60"];
+ s8 -> s1 [label="61"];
+ s8 -> s1 [label="62"];
+ s8 -> s1 [label="63"];
+ s8 -> s1 [label="64"];
+ s8 -> s1 [label="65"];
+ s8 -> s1 [label="66"];
+ s8 -> s1 [label="67"];
+ s8 -> s1 [label="68"];
+ s8 -> s1 [label="69"];
+ s8 -> s1 [label="70"];
+ s8 -> s1 [label="71"];
+ s8 -> s1 [label="72"];
+ s8 -> s1 [label="73"];
+ s8 -> s1 [label="74"];
+ s8 -> s1 [label="75"];
+ s8 -> s1 [label="76"];
+ s8 -> s1 [label="77"];
+ s8 -> s1 [label="78"];
+ s8 -> s1 [label="79"];
+ s8 -> s1 [label="80"];
+ s8 -> s1 [label="81"];
+ s8 -> s1 [label="82"];
+ s8 -> s1 [label="83"];
+ s8 -> s1 [label="84"];
+ s8 -> s1 [label="85"];
+ s8 -> s1 [label="86"];
+ s8 -> s1 [label="87"];
+ s8 -> s1 [label="88"];
+ s8 -> s1 [label="89"];
+ s8 -> s1 [label="90"];
+ s8 -> s1 [label="91"];
+ s8 -> s1 [label="92"];
+ s8 -> s1 [label="93"];
+ s8 -> s1 [label="94"];
+ s8 -> s1 [label="95"];
+ s8 -> s1 [label="96"];
+ s8 -> s1 [label="97"];
+ s8 -> s1 [label="98"];
+ s8 -> s1 [label="99"];
+ s8 -> s1 [label="100"];
+ s8 -> s1 [label="101"];
+ s8 -> s1 [label="102"];
+ s8 -> s1 [label="103"];
+ s8 -> s1 [label="104"];
+ s8 -> s1 [label="105"];
+ s8 -> s1 [label="106"];
+ s8 -> s1 [label="107"];
+ s8 -> s1 [label="108"];
+ s8 -> s1 [label="109"];
+ s8 -> s1 [label="110"];
+ s8 -> s1 [label="111"];
+ s8 -> s1 [label="112"];
+ s8 -> s1 [label="113"];
+ s8 -> s1 [label="114"];
+ s8 -> s1 [label="115"];
+ s8 -> s1 [label="116"];
+ s8 -> s1 [label="117"];
+ s8 -> s1 [label="118"];
+ s8 -> s1 [label="119"];
+ s8 -> s1 [label="120"];
+ s8 -> s1 [label="121"];
+ s8 -> s1 [label="122"];
+ s8 -> s1 [label="123"];
+ s8 -> s1 [label="124"];
+ s8 -> s1 [label="125"];
+ s8 -> s1 [label="126"];
+ s8 -> s1 [label="127"];
+ s8 -> s4 [label="-128"];
+ s8 -> s4 [label="-127"];
+ s8 -> s4 [label="-126"];
+ s8 -> s4 [label="-125"];
+ s8 -> s4 [label="-124"];
+ s8 -> s4 [label="-123"];
+ s8 -> s4 [label="-122"];
+ s8 -> s4 [label="-121"];
+ s8 -> s4 [label="-120"];
+ s8 -> s4 [label="-119"];
+ s8 -> s4 [label="-118"];
+ s8 -> s4 [label="-117"];
+ s8 -> s4 [label="-116"];
+ s8 -> s4 [label="-115"];
+ s8 -> s4 [label="-114"];
+ s8 -> s4 [label="-113"];
+ s8 -> s4 [label="-112"];
+ s8 -> s4 [label="-111"];
+ s8 -> s4 [label="-110"];
+ s8 -> s4 [label="-109"];
+ s8 -> s4 [label="-108"];
+ s8 -> s4 [label="-107"];
+ s8 -> s4 [label="-106"];
+ s8 -> s4 [label="-105"];
+ s8 -> s4 [label="-104"];
+ s8 -> s4 [label="-103"];
+ s8 -> s4 [label="-102"];
+ s8 -> s4 [label="-101"];
+ s8 -> s4 [label="-100"];
+ s8 -> s4 [label="-99"];
+ s8 -> s4 [label="-98"];
+ s8 -> s4 [label="-97"];
+ s8 -> s4 [label="-96"];
+ s8 -> s4 [label="-95"];
+ s8 -> s4 [label="-94"];
+ s8 -> s4 [label="-93"];
+ s8 -> s4 [label="-92"];
+ s8 -> s4 [label="-91"];
+ s8 -> s4 [label="-90"];
+ s8 -> s4 [label="-89"];
+ s8 -> s4 [label="-88"];
+ s8 -> s4 [label="-87"];
+ s8 -> s4 [label="-86"];
+ s8 -> s4 [label="-85"];
+ s8 -> s4 [label="-84"];
+ s8 -> s4 [label="-83"];
+ s8 -> s4 [label="-82"];
+ s8 -> s4 [label="-81"];
+ s8 -> s4 [label="-80"];
+ s8 -> s4 [label="-79"];
+ s8 -> s4 [label="-78"];
+ s8 -> s4 [label="-77"];
+ s8 -> s4 [label="-76"];
+ s8 -> s4 [label="-75"];
+ s8 -> s4 [label="-74"];
+ s8 -> s4 [label="-73"];
+ s8 -> s4 [label="-72"];
+ s8 -> s4 [label="-71"];
+ s8 -> s4 [label="-70"];
+ s8 -> s4 [label="-69"];
+ s8 -> s4 [label="-68"];
+ s8 -> s4 [label="-67"];
+ s8 -> s4 [label="-66"];
+ s8 -> s4 [label="-65"];
+ s8 -> s1 [label="-64"];
+ s8 -> s1 [label="-63"];
+ s8 -> s1 [label="-62"];
+ s8 -> s1 [label="-61"];
+ s8 -> s1 [label="-60"];
+ s8 -> s1 [label="-59"];
+ s8 -> s1 [label="-58"];
+ s8 -> s1 [label="-57"];
+ s8 -> s1 [label="-56"];
+ s8 -> s1 [label="-55"];
+ s8 -> s1 [label="-54"];
+ s8 -> s1 [label="-53"];
+ s8 -> s1 [label="-52"];
+ s8 -> s1 [label="-51"];
+ s8 -> s1 [label="-50"];
+ s8 -> s1 [label="-49"];
+ s8 -> s1 [label="-48"];
+ s8 -> s1 [label="-47"];
+ s8 -> s1 [label="-46"];
+ s8 -> s1 [label="-45"];
+ s8 -> s1 [label="-44"];
+ s8 -> s1 [label="-43"];
+ s8 -> s1 [label="-42"];
+ s8 -> s1 [label="-41"];
+ s8 -> s1 [label="-40"];
+ s8 -> s1 [label="-39"];
+ s8 -> s1 [label="-38"];
+ s8 -> s1 [label="-37"];
+ s8 -> s1 [label="-36"];
+ s8 -> s1 [label="-35"];
+ s8 -> s1 [label="-34"];
+ s8 -> s1 [label="-33"];
+ s8 -> s1 [label="-32"];
+ s8 -> s1 [label="-31"];
+ s8 -> s1 [label="-30"];
+ s8 -> s1 [label="-29"];
+ s8 -> s1 [label="-28"];
+ s8 -> s1 [label="-27"];
+ s8 -> s1 [label="-26"];
+ s8 -> s1 [label="-25"];
+ s8 -> s1 [label="-24"];
+ s8 -> s1 [label="-23"];
+ s8 -> s1 [label="-22"];
+ s8 -> s1 [label="-21"];
+ s8 -> s1 [label="-20"];
+ s8 -> s1 [label="-19"];
+ s8 -> s1 [label="-18"];
+ s8 -> s1 [label="-17"];
+ s8 -> s1 [label="-16"];
+ s8 -> s1 [label="-15"];
+ s8 -> s1 [label="-14"];
+ s8 -> s1 [label="-13"];
+ s8 -> s1 [label="-12"];
+ s8 -> s1 [label="-11"];
+ s8 -> s1 [label="-10"];
+ s8 -> s1 [label="-9"];
+ s8 -> s1 [label="-8"];
+ s8 -> s1 [label="-7"];
+ s8 -> s1 [label="-6"];
+ s8 -> s1 [label="-5"];
+ s8 -> s1 [label="-4"];
+ s8 -> s1 [label="-3"];
+ s8 -> s1 [label="-2"];
+ s8 -> s1 [label="-1"];
+
+__start0 [label="" shape="none" width="0" height="0"];
+__start0 -> s0;
+
+}
diff --git a/results/java.dot b/results/java.dot
new file mode 100644
index 0000000..dbe67e5
--- /dev/null
+++ b/results/java.dot
@@ -0,0 +1,2320 @@
+digraph g {
+
+ s0 [shape="doublecircle" label="s0"];
+ s1 [shape="circle" label="s1"];
+ s2 [shape="circle" label="s2"];
+ s3 [shape="circle" label="s3"];
+ s4 [shape="circle" label="s4"];
+ s5 [shape="circle" label="s5"];
+ s6 [shape="circle" label="s6"];
+ s7 [shape="circle" label="s7"];
+ s8 [shape="circle" label="s8"];
+ s0 -> s0 [label="0"];
+ s0 -> s0 [label="1"];
+ s0 -> s0 [label="2"];
+ s0 -> s0 [label="3"];
+ s0 -> s0 [label="4"];
+ s0 -> s0 [label="5"];
+ s0 -> s0 [label="6"];
+ s0 -> s0 [label="7"];
+ s0 -> s0 [label="8"];
+ s0 -> s0 [label="9"];
+ s0 -> s0 [label="10"];
+ s0 -> s0 [label="11"];
+ s0 -> s0 [label="12"];
+ s0 -> s0 [label="13"];
+ s0 -> s0 [label="14"];
+ s0 -> s0 [label="15"];
+ s0 -> s0 [label="16"];
+ s0 -> s0 [label="17"];
+ s0 -> s0 [label="18"];
+ s0 -> s0 [label="19"];
+ s0 -> s0 [label="20"];
+ s0 -> s0 [label="21"];
+ s0 -> s0 [label="22"];
+ s0 -> s0 [label="23"];
+ s0 -> s0 [label="24"];
+ s0 -> s0 [label="25"];
+ s0 -> s0 [label="26"];
+ s0 -> s0 [label="27"];
+ s0 -> s0 [label="28"];
+ s0 -> s0 [label="29"];
+ s0 -> s0 [label="30"];
+ s0 -> s0 [label="31"];
+ s0 -> s0 [label="32"];
+ s0 -> s0 [label="33"];
+ s0 -> s0 [label="34"];
+ s0 -> s0 [label="35"];
+ s0 -> s0 [label="36"];
+ s0 -> s0 [label="37"];
+ s0 -> s0 [label="38"];
+ s0 -> s0 [label="39"];
+ s0 -> s0 [label="40"];
+ s0 -> s0 [label="41"];
+ s0 -> s0 [label="42"];
+ s0 -> s0 [label="43"];
+ s0 -> s0 [label="44"];
+ s0 -> s0 [label="45"];
+ s0 -> s0 [label="46"];
+ s0 -> s0 [label="47"];
+ s0 -> s0 [label="48"];
+ s0 -> s0 [label="49"];
+ s0 -> s0 [label="50"];
+ s0 -> s0 [label="51"];
+ s0 -> s0 [label="52"];
+ s0 -> s0 [label="53"];
+ s0 -> s0 [label="54"];
+ s0 -> s0 [label="55"];
+ s0 -> s0 [label="56"];
+ s0 -> s0 [label="57"];
+ s0 -> s0 [label="58"];
+ s0 -> s0 [label="59"];
+ s0 -> s0 [label="60"];
+ s0 -> s0 [label="61"];
+ s0 -> s0 [label="62"];
+ s0 -> s0 [label="63"];
+ s0 -> s0 [label="64"];
+ s0 -> s0 [label="65"];
+ s0 -> s0 [label="66"];
+ s0 -> s0 [label="67"];
+ s0 -> s0 [label="68"];
+ s0 -> s0 [label="69"];
+ s0 -> s0 [label="70"];
+ s0 -> s0 [label="71"];
+ s0 -> s0 [label="72"];
+ s0 -> s0 [label="73"];
+ s0 -> s0 [label="74"];
+ s0 -> s0 [label="75"];
+ s0 -> s0 [label="76"];
+ s0 -> s0 [label="77"];
+ s0 -> s0 [label="78"];
+ s0 -> s0 [label="79"];
+ s0 -> s0 [label="80"];
+ s0 -> s0 [label="81"];
+ s0 -> s0 [label="82"];
+ s0 -> s0 [label="83"];
+ s0 -> s0 [label="84"];
+ s0 -> s0 [label="85"];
+ s0 -> s0 [label="86"];
+ s0 -> s0 [label="87"];
+ s0 -> s0 [label="88"];
+ s0 -> s0 [label="89"];
+ s0 -> s0 [label="90"];
+ s0 -> s0 [label="91"];
+ s0 -> s0 [label="92"];
+ s0 -> s0 [label="93"];
+ s0 -> s0 [label="94"];
+ s0 -> s0 [label="95"];
+ s0 -> s0 [label="96"];
+ s0 -> s0 [label="97"];
+ s0 -> s0 [label="98"];
+ s0 -> s0 [label="99"];
+ s0 -> s0 [label="100"];
+ s0 -> s0 [label="101"];
+ s0 -> s0 [label="102"];
+ s0 -> s0 [label="103"];
+ s0 -> s0 [label="104"];
+ s0 -> s0 [label="105"];
+ s0 -> s0 [label="106"];
+ s0 -> s0 [label="107"];
+ s0 -> s0 [label="108"];
+ s0 -> s0 [label="109"];
+ s0 -> s0 [label="110"];
+ s0 -> s0 [label="111"];
+ s0 -> s0 [label="112"];
+ s0 -> s0 [label="113"];
+ s0 -> s0 [label="114"];
+ s0 -> s0 [label="115"];
+ s0 -> s0 [label="116"];
+ s0 -> s0 [label="117"];
+ s0 -> s0 [label="118"];
+ s0 -> s0 [label="119"];
+ s0 -> s0 [label="120"];
+ s0 -> s0 [label="121"];
+ s0 -> s0 [label="122"];
+ s0 -> s0 [label="123"];
+ s0 -> s0 [label="124"];
+ s0 -> s0 [label="125"];
+ s0 -> s0 [label="126"];
+ s0 -> s0 [label="127"];
+ s0 -> s1 [label="-128"];
+ s0 -> s1 [label="-127"];
+ s0 -> s1 [label="-126"];
+ s0 -> s1 [label="-125"];
+ s0 -> s1 [label="-124"];
+ s0 -> s1 [label="-123"];
+ s0 -> s1 [label="-122"];
+ s0 -> s1 [label="-121"];
+ s0 -> s1 [label="-120"];
+ s0 -> s1 [label="-119"];
+ s0 -> s1 [label="-118"];
+ s0 -> s1 [label="-117"];
+ s0 -> s1 [label="-116"];
+ s0 -> s1 [label="-115"];
+ s0 -> s1 [label="-114"];
+ s0 -> s1 [label="-113"];
+ s0 -> s1 [label="-112"];
+ s0 -> s1 [label="-111"];
+ s0 -> s1 [label="-110"];
+ s0 -> s1 [label="-109"];
+ s0 -> s1 [label="-108"];
+ s0 -> s1 [label="-107"];
+ s0 -> s1 [label="-106"];
+ s0 -> s1 [label="-105"];
+ s0 -> s1 [label="-104"];
+ s0 -> s1 [label="-103"];
+ s0 -> s1 [label="-102"];
+ s0 -> s1 [label="-101"];
+ s0 -> s1 [label="-100"];
+ s0 -> s1 [label="-99"];
+ s0 -> s1 [label="-98"];
+ s0 -> s1 [label="-97"];
+ s0 -> s1 [label="-96"];
+ s0 -> s1 [label="-95"];
+ s0 -> s1 [label="-94"];
+ s0 -> s1 [label="-93"];
+ s0 -> s1 [label="-92"];
+ s0 -> s1 [label="-91"];
+ s0 -> s1 [label="-90"];
+ s0 -> s1 [label="-89"];
+ s0 -> s1 [label="-88"];
+ s0 -> s1 [label="-87"];
+ s0 -> s1 [label="-86"];
+ s0 -> s1 [label="-85"];
+ s0 -> s1 [label="-84"];
+ s0 -> s1 [label="-83"];
+ s0 -> s1 [label="-82"];
+ s0 -> s1 [label="-81"];
+ s0 -> s1 [label="-80"];
+ s0 -> s1 [label="-79"];
+ s0 -> s1 [label="-78"];
+ s0 -> s1 [label="-77"];
+ s0 -> s1 [label="-76"];
+ s0 -> s1 [label="-75"];
+ s0 -> s1 [label="-74"];
+ s0 -> s1 [label="-73"];
+ s0 -> s1 [label="-72"];
+ s0 -> s1 [label="-71"];
+ s0 -> s1 [label="-70"];
+ s0 -> s1 [label="-69"];
+ s0 -> s1 [label="-68"];
+ s0 -> s1 [label="-67"];
+ s0 -> s1 [label="-66"];
+ s0 -> s1 [label="-65"];
+ s0 -> s1 [label="-64"];
+ s0 -> s1 [label="-63"];
+ s0 -> s2 [label="-62"];
+ s0 -> s2 [label="-61"];
+ s0 -> s2 [label="-60"];
+ s0 -> s2 [label="-59"];
+ s0 -> s2 [label="-58"];
+ s0 -> s2 [label="-57"];
+ s0 -> s2 [label="-56"];
+ s0 -> s2 [label="-55"];
+ s0 -> s2 [label="-54"];
+ s0 -> s2 [label="-53"];
+ s0 -> s2 [label="-52"];
+ s0 -> s2 [label="-51"];
+ s0 -> s2 [label="-50"];
+ s0 -> s2 [label="-49"];
+ s0 -> s2 [label="-48"];
+ s0 -> s2 [label="-47"];
+ s0 -> s2 [label="-46"];
+ s0 -> s2 [label="-45"];
+ s0 -> s2 [label="-44"];
+ s0 -> s2 [label="-43"];
+ s0 -> s2 [label="-42"];
+ s0 -> s2 [label="-41"];
+ s0 -> s2 [label="-40"];
+ s0 -> s2 [label="-39"];
+ s0 -> s2 [label="-38"];
+ s0 -> s2 [label="-37"];
+ s0 -> s2 [label="-36"];
+ s0 -> s2 [label="-35"];
+ s0 -> s2 [label="-34"];
+ s0 -> s2 [label="-33"];
+ s0 -> s3 [label="-32"];
+ s0 -> s4 [label="-31"];
+ s0 -> s4 [label="-30"];
+ s0 -> s4 [label="-29"];
+ s0 -> s4 [label="-28"];
+ s0 -> s4 [label="-27"];
+ s0 -> s4 [label="-26"];
+ s0 -> s4 [label="-25"];
+ s0 -> s4 [label="-24"];
+ s0 -> s4 [label="-23"];
+ s0 -> s4 [label="-22"];
+ s0 -> s4 [label="-21"];
+ s0 -> s4 [label="-20"];
+ s0 -> s5 [label="-19"];
+ s0 -> s4 [label="-18"];
+ s0 -> s4 [label="-17"];
+ s0 -> s6 [label="-16"];
+ s0 -> s8 [label="-15"];
+ s0 -> s8 [label="-14"];
+ s0 -> s8 [label="-13"];
+ s0 -> s7 [label="-12"];
+ s0 -> s1 [label="-11"];
+ s0 -> s1 [label="-10"];
+ s0 -> s1 [label="-9"];
+ s0 -> s1 [label="-8"];
+ s0 -> s1 [label="-7"];
+ s0 -> s1 [label="-6"];
+ s0 -> s1 [label="-5"];
+ s0 -> s1 [label="-4"];
+ s0 -> s1 [label="-3"];
+ s0 -> s1 [label="-2"];
+ s0 -> s1 [label="-1"];
+ s1 -> s1 [label="0"];
+ s1 -> s1 [label="1"];
+ s1 -> s1 [label="2"];
+ s1 -> s1 [label="3"];
+ s1 -> s1 [label="4"];
+ s1 -> s1 [label="5"];
+ s1 -> s1 [label="6"];
+ s1 -> s1 [label="7"];
+ s1 -> s1 [label="8"];
+ s1 -> s1 [label="9"];
+ s1 -> s1 [label="10"];
+ s1 -> s1 [label="11"];
+ s1 -> s1 [label="12"];
+ s1 -> s1 [label="13"];
+ s1 -> s1 [label="14"];
+ s1 -> s1 [label="15"];
+ s1 -> s1 [label="16"];
+ s1 -> s1 [label="17"];
+ s1 -> s1 [label="18"];
+ s1 -> s1 [label="19"];
+ s1 -> s1 [label="20"];
+ s1 -> s1 [label="21"];
+ s1 -> s1 [label="22"];
+ s1 -> s1 [label="23"];
+ s1 -> s1 [label="24"];
+ s1 -> s1 [label="25"];
+ s1 -> s1 [label="26"];
+ s1 -> s1 [label="27"];
+ s1 -> s1 [label="28"];
+ s1 -> s1 [label="29"];
+ s1 -> s1 [label="30"];
+ s1 -> s1 [label="31"];
+ s1 -> s1 [label="32"];
+ s1 -> s1 [label="33"];
+ s1 -> s1 [label="34"];
+ s1 -> s1 [label="35"];
+ s1 -> s1 [label="36"];
+ s1 -> s1 [label="37"];
+ s1 -> s1 [label="38"];
+ s1 -> s1 [label="39"];
+ s1 -> s1 [label="40"];
+ s1 -> s1 [label="41"];
+ s1 -> s1 [label="42"];
+ s1 -> s1 [label="43"];
+ s1 -> s1 [label="44"];
+ s1 -> s1 [label="45"];
+ s1 -> s1 [label="46"];
+ s1 -> s1 [label="47"];
+ s1 -> s1 [label="48"];
+ s1 -> s1 [label="49"];
+ s1 -> s1 [label="50"];
+ s1 -> s1 [label="51"];
+ s1 -> s1 [label="52"];
+ s1 -> s1 [label="53"];
+ s1 -> s1 [label="54"];
+ s1 -> s1 [label="55"];
+ s1 -> s1 [label="56"];
+ s1 -> s1 [label="57"];
+ s1 -> s1 [label="58"];
+ s1 -> s1 [label="59"];
+ s1 -> s1 [label="60"];
+ s1 -> s1 [label="61"];
+ s1 -> s1 [label="62"];
+ s1 -> s1 [label="63"];
+ s1 -> s1 [label="64"];
+ s1 -> s1 [label="65"];
+ s1 -> s1 [label="66"];
+ s1 -> s1 [label="67"];
+ s1 -> s1 [label="68"];
+ s1 -> s1 [label="69"];
+ s1 -> s1 [label="70"];
+ s1 -> s1 [label="71"];
+ s1 -> s1 [label="72"];
+ s1 -> s1 [label="73"];
+ s1 -> s1 [label="74"];
+ s1 -> s1 [label="75"];
+ s1 -> s1 [label="76"];
+ s1 -> s1 [label="77"];
+ s1 -> s1 [label="78"];
+ s1 -> s1 [label="79"];
+ s1 -> s1 [label="80"];
+ s1 -> s1 [label="81"];
+ s1 -> s1 [label="82"];
+ s1 -> s1 [label="83"];
+ s1 -> s1 [label="84"];
+ s1 -> s1 [label="85"];
+ s1 -> s1 [label="86"];
+ s1 -> s1 [label="87"];
+ s1 -> s1 [label="88"];
+ s1 -> s1 [label="89"];
+ s1 -> s1 [label="90"];
+ s1 -> s1 [label="91"];
+ s1 -> s1 [label="92"];
+ s1 -> s1 [label="93"];
+ s1 -> s1 [label="94"];
+ s1 -> s1 [label="95"];
+ s1 -> s1 [label="96"];
+ s1 -> s1 [label="97"];
+ s1 -> s1 [label="98"];
+ s1 -> s1 [label="99"];
+ s1 -> s1 [label="100"];
+ s1 -> s1 [label="101"];
+ s1 -> s1 [label="102"];
+ s1 -> s1 [label="103"];
+ s1 -> s1 [label="104"];
+ s1 -> s1 [label="105"];
+ s1 -> s1 [label="106"];
+ s1 -> s1 [label="107"];
+ s1 -> s1 [label="108"];
+ s1 -> s1 [label="109"];
+ s1 -> s1 [label="110"];
+ s1 -> s1 [label="111"];
+ s1 -> s1 [label="112"];
+ s1 -> s1 [label="113"];
+ s1 -> s1 [label="114"];
+ s1 -> s1 [label="115"];
+ s1 -> s1 [label="116"];
+ s1 -> s1 [label="117"];
+ s1 -> s1 [label="118"];
+ s1 -> s1 [label="119"];
+ s1 -> s1 [label="120"];
+ s1 -> s1 [label="121"];
+ s1 -> s1 [label="122"];
+ s1 -> s1 [label="123"];
+ s1 -> s1 [label="124"];
+ s1 -> s1 [label="125"];
+ s1 -> s1 [label="126"];
+ s1 -> s1 [label="127"];
+ s1 -> s1 [label="-128"];
+ s1 -> s1 [label="-127"];
+ s1 -> s1 [label="-126"];
+ s1 -> s1 [label="-125"];
+ s1 -> s1 [label="-124"];
+ s1 -> s1 [label="-123"];
+ s1 -> s1 [label="-122"];
+ s1 -> s1 [label="-121"];
+ s1 -> s1 [label="-120"];
+ s1 -> s1 [label="-119"];
+ s1 -> s1 [label="-118"];
+ s1 -> s1 [label="-117"];
+ s1 -> s1 [label="-116"];
+ s1 -> s1 [label="-115"];
+ s1 -> s1 [label="-114"];
+ s1 -> s1 [label="-113"];
+ s1 -> s1 [label="-112"];
+ s1 -> s1 [label="-111"];
+ s1 -> s1 [label="-110"];
+ s1 -> s1 [label="-109"];
+ s1 -> s1 [label="-108"];
+ s1 -> s1 [label="-107"];
+ s1 -> s1 [label="-106"];
+ s1 -> s1 [label="-105"];
+ s1 -> s1 [label="-104"];
+ s1 -> s1 [label="-103"];
+ s1 -> s1 [label="-102"];
+ s1 -> s1 [label="-101"];
+ s1 -> s1 [label="-100"];
+ s1 -> s1 [label="-99"];
+ s1 -> s1 [label="-98"];
+ s1 -> s1 [label="-97"];
+ s1 -> s1 [label="-96"];
+ s1 -> s1 [label="-95"];
+ s1 -> s1 [label="-94"];
+ s1 -> s1 [label="-93"];
+ s1 -> s1 [label="-92"];
+ s1 -> s1 [label="-91"];
+ s1 -> s1 [label="-90"];
+ s1 -> s1 [label="-89"];
+ s1 -> s1 [label="-88"];
+ s1 -> s1 [label="-87"];
+ s1 -> s1 [label="-86"];
+ s1 -> s1 [label="-85"];
+ s1 -> s1 [label="-84"];
+ s1 -> s1 [label="-83"];
+ s1 -> s1 [label="-82"];
+ s1 -> s1 [label="-81"];
+ s1 -> s1 [label="-80"];
+ s1 -> s1 [label="-79"];
+ s1 -> s1 [label="-78"];
+ s1 -> s1 [label="-77"];
+ s1 -> s1 [label="-76"];
+ s1 -> s1 [label="-75"];
+ s1 -> s1 [label="-74"];
+ s1 -> s1 [label="-73"];
+ s1 -> s1 [label="-72"];
+ s1 -> s1 [label="-71"];
+ s1 -> s1 [label="-70"];
+ s1 -> s1 [label="-69"];
+ s1 -> s1 [label="-68"];
+ s1 -> s1 [label="-67"];
+ s1 -> s1 [label="-66"];
+ s1 -> s1 [label="-65"];
+ s1 -> s1 [label="-64"];
+ s1 -> s1 [label="-63"];
+ s1 -> s1 [label="-62"];
+ s1 -> s1 [label="-61"];
+ s1 -> s1 [label="-60"];
+ s1 -> s1 [label="-59"];
+ s1 -> s1 [label="-58"];
+ s1 -> s1 [label="-57"];
+ s1 -> s1 [label="-56"];
+ s1 -> s1 [label="-55"];
+ s1 -> s1 [label="-54"];
+ s1 -> s1 [label="-53"];
+ s1 -> s1 [label="-52"];
+ s1 -> s1 [label="-51"];
+ s1 -> s1 [label="-50"];
+ s1 -> s1 [label="-49"];
+ s1 -> s1 [label="-48"];
+ s1 -> s1 [label="-47"];
+ s1 -> s1 [label="-46"];
+ s1 -> s1 [label="-45"];
+ s1 -> s1 [label="-44"];
+ s1 -> s1 [label="-43"];
+ s1 -> s1 [label="-42"];
+ s1 -> s1 [label="-41"];
+ s1 -> s1 [label="-40"];
+ s1 -> s1 [label="-39"];
+ s1 -> s1 [label="-38"];
+ s1 -> s1 [label="-37"];
+ s1 -> s1 [label="-36"];
+ s1 -> s1 [label="-35"];
+ s1 -> s1 [label="-34"];
+ s1 -> s1 [label="-33"];
+ s1 -> s1 [label="-32"];
+ s1 -> s1 [label="-31"];
+ s1 -> s1 [label="-30"];
+ s1 -> s1 [label="-29"];
+ s1 -> s1 [label="-28"];
+ s1 -> s1 [label="-27"];
+ s1 -> s1 [label="-26"];
+ s1 -> s1 [label="-25"];
+ s1 -> s1 [label="-24"];
+ s1 -> s1 [label="-23"];
+ s1 -> s1 [label="-22"];
+ s1 -> s1 [label="-21"];
+ s1 -> s1 [label="-20"];
+ s1 -> s1 [label="-19"];
+ s1 -> s1 [label="-18"];
+ s1 -> s1 [label="-17"];
+ s1 -> s1 [label="-16"];
+ s1 -> s1 [label="-15"];
+ s1 -> s1 [label="-14"];
+ s1 -> s1 [label="-13"];
+ s1 -> s1 [label="-12"];
+ s1 -> s1 [label="-11"];
+ s1 -> s1 [label="-10"];
+ s1 -> s1 [label="-9"];
+ s1 -> s1 [label="-8"];
+ s1 -> s1 [label="-7"];
+ s1 -> s1 [label="-6"];
+ s1 -> s1 [label="-5"];
+ s1 -> s1 [label="-4"];
+ s1 -> s1 [label="-3"];
+ s1 -> s1 [label="-2"];
+ s1 -> s1 [label="-1"];
+ s2 -> s1 [label="0"];
+ s2 -> s1 [label="1"];
+ s2 -> s1 [label="2"];
+ s2 -> s1 [label="3"];
+ s2 -> s1 [label="4"];
+ s2 -> s1 [label="5"];
+ s2 -> s1 [label="6"];
+ s2 -> s1 [label="7"];
+ s2 -> s1 [label="8"];
+ s2 -> s1 [label="9"];
+ s2 -> s1 [label="10"];
+ s2 -> s1 [label="11"];
+ s2 -> s1 [label="12"];
+ s2 -> s1 [label="13"];
+ s2 -> s1 [label="14"];
+ s2 -> s1 [label="15"];
+ s2 -> s1 [label="16"];
+ s2 -> s1 [label="17"];
+ s2 -> s1 [label="18"];
+ s2 -> s1 [label="19"];
+ s2 -> s1 [label="20"];
+ s2 -> s1 [label="21"];
+ s2 -> s1 [label="22"];
+ s2 -> s1 [label="23"];
+ s2 -> s1 [label="24"];
+ s2 -> s1 [label="25"];
+ s2 -> s1 [label="26"];
+ s2 -> s1 [label="27"];
+ s2 -> s1 [label="28"];
+ s2 -> s1 [label="29"];
+ s2 -> s1 [label="30"];
+ s2 -> s1 [label="31"];
+ s2 -> s1 [label="32"];
+ s2 -> s1 [label="33"];
+ s2 -> s1 [label="34"];
+ s2 -> s1 [label="35"];
+ s2 -> s1 [label="36"];
+ s2 -> s1 [label="37"];
+ s2 -> s1 [label="38"];
+ s2 -> s1 [label="39"];
+ s2 -> s1 [label="40"];
+ s2 -> s1 [label="41"];
+ s2 -> s1 [label="42"];
+ s2 -> s1 [label="43"];
+ s2 -> s1 [label="44"];
+ s2 -> s1 [label="45"];
+ s2 -> s1 [label="46"];
+ s2 -> s1 [label="47"];
+ s2 -> s1 [label="48"];
+ s2 -> s1 [label="49"];
+ s2 -> s1 [label="50"];
+ s2 -> s1 [label="51"];
+ s2 -> s1 [label="52"];
+ s2 -> s1 [label="53"];
+ s2 -> s1 [label="54"];
+ s2 -> s1 [label="55"];
+ s2 -> s1 [label="56"];
+ s2 -> s1 [label="57"];
+ s2 -> s1 [label="58"];
+ s2 -> s1 [label="59"];
+ s2 -> s1 [label="60"];
+ s2 -> s1 [label="61"];
+ s2 -> s1 [label="62"];
+ s2 -> s1 [label="63"];
+ s2 -> s1 [label="64"];
+ s2 -> s1 [label="65"];
+ s2 -> s1 [label="66"];
+ s2 -> s1 [label="67"];
+ s2 -> s1 [label="68"];
+ s2 -> s1 [label="69"];
+ s2 -> s1 [label="70"];
+ s2 -> s1 [label="71"];
+ s2 -> s1 [label="72"];
+ s2 -> s1 [label="73"];
+ s2 -> s1 [label="74"];
+ s2 -> s1 [label="75"];
+ s2 -> s1 [label="76"];
+ s2 -> s1 [label="77"];
+ s2 -> s1 [label="78"];
+ s2 -> s1 [label="79"];
+ s2 -> s1 [label="80"];
+ s2 -> s1 [label="81"];
+ s2 -> s1 [label="82"];
+ s2 -> s1 [label="83"];
+ s2 -> s1 [label="84"];
+ s2 -> s1 [label="85"];
+ s2 -> s1 [label="86"];
+ s2 -> s1 [label="87"];
+ s2 -> s1 [label="88"];
+ s2 -> s1 [label="89"];
+ s2 -> s1 [label="90"];
+ s2 -> s1 [label="91"];
+ s2 -> s1 [label="92"];
+ s2 -> s1 [label="93"];
+ s2 -> s1 [label="94"];
+ s2 -> s1 [label="95"];
+ s2 -> s1 [label="96"];
+ s2 -> s1 [label="97"];
+ s2 -> s1 [label="98"];
+ s2 -> s1 [label="99"];
+ s2 -> s1 [label="100"];
+ s2 -> s1 [label="101"];
+ s2 -> s1 [label="102"];
+ s2 -> s1 [label="103"];
+ s2 -> s1 [label="104"];
+ s2 -> s1 [label="105"];
+ s2 -> s1 [label="106"];
+ s2 -> s1 [label="107"];
+ s2 -> s1 [label="108"];
+ s2 -> s1 [label="109"];
+ s2 -> s1 [label="110"];
+ s2 -> s1 [label="111"];
+ s2 -> s1 [label="112"];
+ s2 -> s1 [label="113"];
+ s2 -> s1 [label="114"];
+ s2 -> s1 [label="115"];
+ s2 -> s1 [label="116"];
+ s2 -> s1 [label="117"];
+ s2 -> s1 [label="118"];
+ s2 -> s1 [label="119"];
+ s2 -> s1 [label="120"];
+ s2 -> s1 [label="121"];
+ s2 -> s1 [label="122"];
+ s2 -> s1 [label="123"];
+ s2 -> s1 [label="124"];
+ s2 -> s1 [label="125"];
+ s2 -> s1 [label="126"];
+ s2 -> s1 [label="127"];
+ s2 -> s0 [label="-128"];
+ s2 -> s0 [label="-127"];
+ s2 -> s0 [label="-126"];
+ s2 -> s0 [label="-125"];
+ s2 -> s0 [label="-124"];
+ s2 -> s0 [label="-123"];
+ s2 -> s0 [label="-122"];
+ s2 -> s0 [label="-121"];
+ s2 -> s0 [label="-120"];
+ s2 -> s0 [label="-119"];
+ s2 -> s0 [label="-118"];
+ s2 -> s0 [label="-117"];
+ s2 -> s0 [label="-116"];
+ s2 -> s0 [label="-115"];
+ s2 -> s0 [label="-114"];
+ s2 -> s0 [label="-113"];
+ s2 -> s0 [label="-112"];
+ s2 -> s0 [label="-111"];
+ s2 -> s0 [label="-110"];
+ s2 -> s0 [label="-109"];
+ s2 -> s0 [label="-108"];
+ s2 -> s0 [label="-107"];
+ s2 -> s0 [label="-106"];
+ s2 -> s0 [label="-105"];
+ s2 -> s0 [label="-104"];
+ s2 -> s0 [label="-103"];
+ s2 -> s0 [label="-102"];
+ s2 -> s0 [label="-101"];
+ s2 -> s0 [label="-100"];
+ s2 -> s0 [label="-99"];
+ s2 -> s0 [label="-98"];
+ s2 -> s0 [label="-97"];
+ s2 -> s0 [label="-96"];
+ s2 -> s0 [label="-95"];
+ s2 -> s0 [label="-94"];
+ s2 -> s0 [label="-93"];
+ s2 -> s0 [label="-92"];
+ s2 -> s0 [label="-91"];
+ s2 -> s0 [label="-90"];
+ s2 -> s0 [label="-89"];
+ s2 -> s0 [label="-88"];
+ s2 -> s0 [label="-87"];
+ s2 -> s0 [label="-86"];
+ s2 -> s0 [label="-85"];
+ s2 -> s0 [label="-84"];
+ s2 -> s0 [label="-83"];
+ s2 -> s0 [label="-82"];
+ s2 -> s0 [label="-81"];
+ s2 -> s0 [label="-80"];
+ s2 -> s0 [label="-79"];
+ s2 -> s0 [label="-78"];
+ s2 -> s0 [label="-77"];
+ s2 -> s0 [label="-76"];
+ s2 -> s0 [label="-75"];
+ s2 -> s0 [label="-74"];
+ s2 -> s0 [label="-73"];
+ s2 -> s0 [label="-72"];
+ s2 -> s0 [label="-71"];
+ s2 -> s0 [label="-70"];
+ s2 -> s0 [label="-69"];
+ s2 -> s0 [label="-68"];
+ s2 -> s0 [label="-67"];
+ s2 -> s0 [label="-66"];
+ s2 -> s0 [label="-65"];
+ s2 -> s1 [label="-64"];
+ s2 -> s1 [label="-63"];
+ s2 -> s1 [label="-62"];
+ s2 -> s1 [label="-61"];
+ s2 -> s1 [label="-60"];
+ s2 -> s1 [label="-59"];
+ s2 -> s1 [label="-58"];
+ s2 -> s1 [label="-57"];
+ s2 -> s1 [label="-56"];
+ s2 -> s1 [label="-55"];
+ s2 -> s1 [label="-54"];
+ s2 -> s1 [label="-53"];
+ s2 -> s1 [label="-52"];
+ s2 -> s1 [label="-51"];
+ s2 -> s1 [label="-50"];
+ s2 -> s1 [label="-49"];
+ s2 -> s1 [label="-48"];
+ s2 -> s1 [label="-47"];
+ s2 -> s1 [label="-46"];
+ s2 -> s1 [label="-45"];
+ s2 -> s1 [label="-44"];
+ s2 -> s1 [label="-43"];
+ s2 -> s1 [label="-42"];
+ s2 -> s1 [label="-41"];
+ s2 -> s1 [label="-40"];
+ s2 -> s1 [label="-39"];
+ s2 -> s1 [label="-38"];
+ s2 -> s1 [label="-37"];
+ s2 -> s1 [label="-36"];
+ s2 -> s1 [label="-35"];
+ s2 -> s1 [label="-34"];
+ s2 -> s1 [label="-33"];
+ s2 -> s1 [label="-32"];
+ s2 -> s1 [label="-31"];
+ s2 -> s1 [label="-30"];
+ s2 -> s1 [label="-29"];
+ s2 -> s1 [label="-28"];
+ s2 -> s1 [label="-27"];
+ s2 -> s1 [label="-26"];
+ s2 -> s1 [label="-25"];
+ s2 -> s1 [label="-24"];
+ s2 -> s1 [label="-23"];
+ s2 -> s1 [label="-22"];
+ s2 -> s1 [label="-21"];
+ s2 -> s1 [label="-20"];
+ s2 -> s1 [label="-19"];
+ s2 -> s1 [label="-18"];
+ s2 -> s1 [label="-17"];
+ s2 -> s1 [label="-16"];
+ s2 -> s1 [label="-15"];
+ s2 -> s1 [label="-14"];
+ s2 -> s1 [label="-13"];
+ s2 -> s1 [label="-12"];
+ s2 -> s1 [label="-11"];
+ s2 -> s1 [label="-10"];
+ s2 -> s1 [label="-9"];
+ s2 -> s1 [label="-8"];
+ s2 -> s1 [label="-7"];
+ s2 -> s1 [label="-6"];
+ s2 -> s1 [label="-5"];
+ s2 -> s1 [label="-4"];
+ s2 -> s1 [label="-3"];
+ s2 -> s1 [label="-2"];
+ s2 -> s1 [label="-1"];
+ s3 -> s1 [label="0"];
+ s3 -> s1 [label="1"];
+ s3 -> s1 [label="2"];
+ s3 -> s1 [label="3"];
+ s3 -> s1 [label="4"];
+ s3 -> s1 [label="5"];
+ s3 -> s1 [label="6"];
+ s3 -> s1 [label="7"];
+ s3 -> s1 [label="8"];
+ s3 -> s1 [label="9"];
+ s3 -> s1 [label="10"];
+ s3 -> s1 [label="11"];
+ s3 -> s1 [label="12"];
+ s3 -> s1 [label="13"];
+ s3 -> s1 [label="14"];
+ s3 -> s1 [label="15"];
+ s3 -> s1 [label="16"];
+ s3 -> s1 [label="17"];
+ s3 -> s1 [label="18"];
+ s3 -> s1 [label="19"];
+ s3 -> s1 [label="20"];
+ s3 -> s1 [label="21"];
+ s3 -> s1 [label="22"];
+ s3 -> s1 [label="23"];
+ s3 -> s1 [label="24"];
+ s3 -> s1 [label="25"];
+ s3 -> s1 [label="26"];
+ s3 -> s1 [label="27"];
+ s3 -> s1 [label="28"];
+ s3 -> s1 [label="29"];
+ s3 -> s1 [label="30"];
+ s3 -> s1 [label="31"];
+ s3 -> s1 [label="32"];
+ s3 -> s1 [label="33"];
+ s3 -> s1 [label="34"];
+ s3 -> s1 [label="35"];
+ s3 -> s1 [label="36"];
+ s3 -> s1 [label="37"];
+ s3 -> s1 [label="38"];
+ s3 -> s1 [label="39"];
+ s3 -> s1 [label="40"];
+ s3 -> s1 [label="41"];
+ s3 -> s1 [label="42"];
+ s3 -> s1 [label="43"];
+ s3 -> s1 [label="44"];
+ s3 -> s1 [label="45"];
+ s3 -> s1 [label="46"];
+ s3 -> s1 [label="47"];
+ s3 -> s1 [label="48"];
+ s3 -> s1 [label="49"];
+ s3 -> s1 [label="50"];
+ s3 -> s1 [label="51"];
+ s3 -> s1 [label="52"];
+ s3 -> s1 [label="53"];
+ s3 -> s1 [label="54"];
+ s3 -> s1 [label="55"];
+ s3 -> s1 [label="56"];
+ s3 -> s1 [label="57"];
+ s3 -> s1 [label="58"];
+ s3 -> s1 [label="59"];
+ s3 -> s1 [label="60"];
+ s3 -> s1 [label="61"];
+ s3 -> s1 [label="62"];
+ s3 -> s1 [label="63"];
+ s3 -> s1 [label="64"];
+ s3 -> s1 [label="65"];
+ s3 -> s1 [label="66"];
+ s3 -> s1 [label="67"];
+ s3 -> s1 [label="68"];
+ s3 -> s1 [label="69"];
+ s3 -> s1 [label="70"];
+ s3 -> s1 [label="71"];
+ s3 -> s1 [label="72"];
+ s3 -> s1 [label="73"];
+ s3 -> s1 [label="74"];
+ s3 -> s1 [label="75"];
+ s3 -> s1 [label="76"];
+ s3 -> s1 [label="77"];
+ s3 -> s1 [label="78"];
+ s3 -> s1 [label="79"];
+ s3 -> s1 [label="80"];
+ s3 -> s1 [label="81"];
+ s3 -> s1 [label="82"];
+ s3 -> s1 [label="83"];
+ s3 -> s1 [label="84"];
+ s3 -> s1 [label="85"];
+ s3 -> s1 [label="86"];
+ s3 -> s1 [label="87"];
+ s3 -> s1 [label="88"];
+ s3 -> s1 [label="89"];
+ s3 -> s1 [label="90"];
+ s3 -> s1 [label="91"];
+ s3 -> s1 [label="92"];
+ s3 -> s1 [label="93"];
+ s3 -> s1 [label="94"];
+ s3 -> s1 [label="95"];
+ s3 -> s1 [label="96"];
+ s3 -> s1 [label="97"];
+ s3 -> s1 [label="98"];
+ s3 -> s1 [label="99"];
+ s3 -> s1 [label="100"];
+ s3 -> s1 [label="101"];
+ s3 -> s1 [label="102"];
+ s3 -> s1 [label="103"];
+ s3 -> s1 [label="104"];
+ s3 -> s1 [label="105"];
+ s3 -> s1 [label="106"];
+ s3 -> s1 [label="107"];
+ s3 -> s1 [label="108"];
+ s3 -> s1 [label="109"];
+ s3 -> s1 [label="110"];
+ s3 -> s1 [label="111"];
+ s3 -> s1 [label="112"];
+ s3 -> s1 [label="113"];
+ s3 -> s1 [label="114"];
+ s3 -> s1 [label="115"];
+ s3 -> s1 [label="116"];
+ s3 -> s1 [label="117"];
+ s3 -> s1 [label="118"];
+ s3 -> s1 [label="119"];
+ s3 -> s1 [label="120"];
+ s3 -> s1 [label="121"];
+ s3 -> s1 [label="122"];
+ s3 -> s1 [label="123"];
+ s3 -> s1 [label="124"];
+ s3 -> s1 [label="125"];
+ s3 -> s1 [label="126"];
+ s3 -> s1 [label="127"];
+ s3 -> s1 [label="-128"];
+ s3 -> s1 [label="-127"];
+ s3 -> s1 [label="-126"];
+ s3 -> s1 [label="-125"];
+ s3 -> s1 [label="-124"];
+ s3 -> s1 [label="-123"];
+ s3 -> s1 [label="-122"];
+ s3 -> s1 [label="-121"];
+ s3 -> s1 [label="-120"];
+ s3 -> s1 [label="-119"];
+ s3 -> s1 [label="-118"];
+ s3 -> s1 [label="-117"];
+ s3 -> s1 [label="-116"];
+ s3 -> s1 [label="-115"];
+ s3 -> s1 [label="-114"];
+ s3 -> s1 [label="-113"];
+ s3 -> s1 [label="-112"];
+ s3 -> s1 [label="-111"];
+ s3 -> s1 [label="-110"];
+ s3 -> s1 [label="-109"];
+ s3 -> s1 [label="-108"];
+ s3 -> s1 [label="-107"];
+ s3 -> s1 [label="-106"];
+ s3 -> s1 [label="-105"];
+ s3 -> s1 [label="-104"];
+ s3 -> s1 [label="-103"];
+ s3 -> s1 [label="-102"];
+ s3 -> s1 [label="-101"];
+ s3 -> s1 [label="-100"];
+ s3 -> s1 [label="-99"];
+ s3 -> s1 [label="-98"];
+ s3 -> s1 [label="-97"];
+ s3 -> s2 [label="-96"];
+ s3 -> s2 [label="-95"];
+ s3 -> s2 [label="-94"];
+ s3 -> s2 [label="-93"];
+ s3 -> s2 [label="-92"];
+ s3 -> s2 [label="-91"];
+ s3 -> s2 [label="-90"];
+ s3 -> s2 [label="-89"];
+ s3 -> s2 [label="-88"];
+ s3 -> s2 [label="-87"];
+ s3 -> s2 [label="-86"];
+ s3 -> s2 [label="-85"];
+ s3 -> s2 [label="-84"];
+ s3 -> s2 [label="-83"];
+ s3 -> s2 [label="-82"];
+ s3 -> s2 [label="-81"];
+ s3 -> s2 [label="-80"];
+ s3 -> s2 [label="-79"];
+ s3 -> s2 [label="-78"];
+ s3 -> s2 [label="-77"];
+ s3 -> s2 [label="-76"];
+ s3 -> s2 [label="-75"];
+ s3 -> s2 [label="-74"];
+ s3 -> s2 [label="-73"];
+ s3 -> s2 [label="-72"];
+ s3 -> s2 [label="-71"];
+ s3 -> s2 [label="-70"];
+ s3 -> s2 [label="-69"];
+ s3 -> s2 [label="-68"];
+ s3 -> s2 [label="-67"];
+ s3 -> s2 [label="-66"];
+ s3 -> s2 [label="-65"];
+ s3 -> s1 [label="-64"];
+ s3 -> s1 [label="-63"];
+ s3 -> s1 [label="-62"];
+ s3 -> s1 [label="-61"];
+ s3 -> s1 [label="-60"];
+ s3 -> s1 [label="-59"];
+ s3 -> s1 [label="-58"];
+ s3 -> s1 [label="-57"];
+ s3 -> s1 [label="-56"];
+ s3 -> s1 [label="-55"];
+ s3 -> s1 [label="-54"];
+ s3 -> s1 [label="-53"];
+ s3 -> s1 [label="-52"];
+ s3 -> s1 [label="-51"];
+ s3 -> s1 [label="-50"];
+ s3 -> s1 [label="-49"];
+ s3 -> s1 [label="-48"];
+ s3 -> s1 [label="-47"];
+ s3 -> s1 [label="-46"];
+ s3 -> s1 [label="-45"];
+ s3 -> s1 [label="-44"];
+ s3 -> s1 [label="-43"];
+ s3 -> s1 [label="-42"];
+ s3 -> s1 [label="-41"];
+ s3 -> s1 [label="-40"];
+ s3 -> s1 [label="-39"];
+ s3 -> s1 [label="-38"];
+ s3 -> s1 [label="-37"];
+ s3 -> s1 [label="-36"];
+ s3 -> s1 [label="-35"];
+ s3 -> s1 [label="-34"];
+ s3 -> s1 [label="-33"];
+ s3 -> s1 [label="-32"];
+ s3 -> s1 [label="-31"];
+ s3 -> s1 [label="-30"];
+ s3 -> s1 [label="-29"];
+ s3 -> s1 [label="-28"];
+ s3 -> s1 [label="-27"];
+ s3 -> s1 [label="-26"];
+ s3 -> s1 [label="-25"];
+ s3 -> s1 [label="-24"];
+ s3 -> s1 [label="-23"];
+ s3 -> s1 [label="-22"];
+ s3 -> s1 [label="-21"];
+ s3 -> s1 [label="-20"];
+ s3 -> s1 [label="-19"];
+ s3 -> s1 [label="-18"];
+ s3 -> s1 [label="-17"];
+ s3 -> s1 [label="-16"];
+ s3 -> s1 [label="-15"];
+ s3 -> s1 [label="-14"];
+ s3 -> s1 [label="-13"];
+ s3 -> s1 [label="-12"];
+ s3 -> s1 [label="-11"];
+ s3 -> s1 [label="-10"];
+ s3 -> s1 [label="-9"];
+ s3 -> s1 [label="-8"];
+ s3 -> s1 [label="-7"];
+ s3 -> s1 [label="-6"];
+ s3 -> s1 [label="-5"];
+ s3 -> s1 [label="-4"];
+ s3 -> s1 [label="-3"];
+ s3 -> s1 [label="-2"];
+ s3 -> s1 [label="-1"];
+ s4 -> s1 [label="0"];
+ s4 -> s1 [label="1"];
+ s4 -> s1 [label="2"];
+ s4 -> s1 [label="3"];
+ s4 -> s1 [label="4"];
+ s4 -> s1 [label="5"];
+ s4 -> s1 [label="6"];
+ s4 -> s1 [label="7"];
+ s4 -> s1 [label="8"];
+ s4 -> s1 [label="9"];
+ s4 -> s1 [label="10"];
+ s4 -> s1 [label="11"];
+ s4 -> s1 [label="12"];
+ s4 -> s1 [label="13"];
+ s4 -> s1 [label="14"];
+ s4 -> s1 [label="15"];
+ s4 -> s1 [label="16"];
+ s4 -> s1 [label="17"];
+ s4 -> s1 [label="18"];
+ s4 -> s1 [label="19"];
+ s4 -> s1 [label="20"];
+ s4 -> s1 [label="21"];
+ s4 -> s1 [label="22"];
+ s4 -> s1 [label="23"];
+ s4 -> s1 [label="24"];
+ s4 -> s1 [label="25"];
+ s4 -> s1 [label="26"];
+ s4 -> s1 [label="27"];
+ s4 -> s1 [label="28"];
+ s4 -> s1 [label="29"];
+ s4 -> s1 [label="30"];
+ s4 -> s1 [label="31"];
+ s4 -> s1 [label="32"];
+ s4 -> s1 [label="33"];
+ s4 -> s1 [label="34"];
+ s4 -> s1 [label="35"];
+ s4 -> s1 [label="36"];
+ s4 -> s1 [label="37"];
+ s4 -> s1 [label="38"];
+ s4 -> s1 [label="39"];
+ s4 -> s1 [label="40"];
+ s4 -> s1 [label="41"];
+ s4 -> s1 [label="42"];
+ s4 -> s1 [label="43"];
+ s4 -> s1 [label="44"];
+ s4 -> s1 [label="45"];
+ s4 -> s1 [label="46"];
+ s4 -> s1 [label="47"];
+ s4 -> s1 [label="48"];
+ s4 -> s1 [label="49"];
+ s4 -> s1 [label="50"];
+ s4 -> s1 [label="51"];
+ s4 -> s1 [label="52"];
+ s4 -> s1 [label="53"];
+ s4 -> s1 [label="54"];
+ s4 -> s1 [label="55"];
+ s4 -> s1 [label="56"];
+ s4 -> s1 [label="57"];
+ s4 -> s1 [label="58"];
+ s4 -> s1 [label="59"];
+ s4 -> s1 [label="60"];
+ s4 -> s1 [label="61"];
+ s4 -> s1 [label="62"];
+ s4 -> s1 [label="63"];
+ s4 -> s1 [label="64"];
+ s4 -> s1 [label="65"];
+ s4 -> s1 [label="66"];
+ s4 -> s1 [label="67"];
+ s4 -> s1 [label="68"];
+ s4 -> s1 [label="69"];
+ s4 -> s1 [label="70"];
+ s4 -> s1 [label="71"];
+ s4 -> s1 [label="72"];
+ s4 -> s1 [label="73"];
+ s4 -> s1 [label="74"];
+ s4 -> s1 [label="75"];
+ s4 -> s1 [label="76"];
+ s4 -> s1 [label="77"];
+ s4 -> s1 [label="78"];
+ s4 -> s1 [label="79"];
+ s4 -> s1 [label="80"];
+ s4 -> s1 [label="81"];
+ s4 -> s1 [label="82"];
+ s4 -> s1 [label="83"];
+ s4 -> s1 [label="84"];
+ s4 -> s1 [label="85"];
+ s4 -> s1 [label="86"];
+ s4 -> s1 [label="87"];
+ s4 -> s1 [label="88"];
+ s4 -> s1 [label="89"];
+ s4 -> s1 [label="90"];
+ s4 -> s1 [label="91"];
+ s4 -> s1 [label="92"];
+ s4 -> s1 [label="93"];
+ s4 -> s1 [label="94"];
+ s4 -> s1 [label="95"];
+ s4 -> s1 [label="96"];
+ s4 -> s1 [label="97"];
+ s4 -> s1 [label="98"];
+ s4 -> s1 [label="99"];
+ s4 -> s1 [label="100"];
+ s4 -> s1 [label="101"];
+ s4 -> s1 [label="102"];
+ s4 -> s1 [label="103"];
+ s4 -> s1 [label="104"];
+ s4 -> s1 [label="105"];
+ s4 -> s1 [label="106"];
+ s4 -> s1 [label="107"];
+ s4 -> s1 [label="108"];
+ s4 -> s1 [label="109"];
+ s4 -> s1 [label="110"];
+ s4 -> s1 [label="111"];
+ s4 -> s1 [label="112"];
+ s4 -> s1 [label="113"];
+ s4 -> s1 [label="114"];
+ s4 -> s1 [label="115"];
+ s4 -> s1 [label="116"];
+ s4 -> s1 [label="117"];
+ s4 -> s1 [label="118"];
+ s4 -> s1 [label="119"];
+ s4 -> s1 [label="120"];
+ s4 -> s1 [label="121"];
+ s4 -> s1 [label="122"];
+ s4 -> s1 [label="123"];
+ s4 -> s1 [label="124"];
+ s4 -> s1 [label="125"];
+ s4 -> s1 [label="126"];
+ s4 -> s1 [label="127"];
+ s4 -> s2 [label="-128"];
+ s4 -> s2 [label="-127"];
+ s4 -> s2 [label="-126"];
+ s4 -> s2 [label="-125"];
+ s4 -> s2 [label="-124"];
+ s4 -> s2 [label="-123"];
+ s4 -> s2 [label="-122"];
+ s4 -> s2 [label="-121"];
+ s4 -> s2 [label="-120"];
+ s4 -> s2 [label="-119"];
+ s4 -> s2 [label="-118"];
+ s4 -> s2 [label="-117"];
+ s4 -> s2 [label="-116"];
+ s4 -> s2 [label="-115"];
+ s4 -> s2 [label="-114"];
+ s4 -> s2 [label="-113"];
+ s4 -> s2 [label="-112"];
+ s4 -> s2 [label="-111"];
+ s4 -> s2 [label="-110"];
+ s4 -> s2 [label="-109"];
+ s4 -> s2 [label="-108"];
+ s4 -> s2 [label="-107"];
+ s4 -> s2 [label="-106"];
+ s4 -> s2 [label="-105"];
+ s4 -> s2 [label="-104"];
+ s4 -> s2 [label="-103"];
+ s4 -> s2 [label="-102"];
+ s4 -> s2 [label="-101"];
+ s4 -> s2 [label="-100"];
+ s4 -> s2 [label="-99"];
+ s4 -> s2 [label="-98"];
+ s4 -> s2 [label="-97"];
+ s4 -> s2 [label="-96"];
+ s4 -> s2 [label="-95"];
+ s4 -> s2 [label="-94"];
+ s4 -> s2 [label="-93"];
+ s4 -> s2 [label="-92"];
+ s4 -> s2 [label="-91"];
+ s4 -> s2 [label="-90"];
+ s4 -> s2 [label="-89"];
+ s4 -> s2 [label="-88"];
+ s4 -> s2 [label="-87"];
+ s4 -> s2 [label="-86"];
+ s4 -> s2 [label="-85"];
+ s4 -> s2 [label="-84"];
+ s4 -> s2 [label="-83"];
+ s4 -> s2 [label="-82"];
+ s4 -> s2 [label="-81"];
+ s4 -> s2 [label="-80"];
+ s4 -> s2 [label="-79"];
+ s4 -> s2 [label="-78"];
+ s4 -> s2 [label="-77"];
+ s4 -> s2 [label="-76"];
+ s4 -> s2 [label="-75"];
+ s4 -> s2 [label="-74"];
+ s4 -> s2 [label="-73"];
+ s4 -> s2 [label="-72"];
+ s4 -> s2 [label="-71"];
+ s4 -> s2 [label="-70"];
+ s4 -> s2 [label="-69"];
+ s4 -> s2 [label="-68"];
+ s4 -> s2 [label="-67"];
+ s4 -> s2 [label="-66"];
+ s4 -> s2 [label="-65"];
+ s4 -> s1 [label="-64"];
+ s4 -> s1 [label="-63"];
+ s4 -> s1 [label="-62"];
+ s4 -> s1 [label="-61"];
+ s4 -> s1 [label="-60"];
+ s4 -> s1 [label="-59"];
+ s4 -> s1 [label="-58"];
+ s4 -> s1 [label="-57"];
+ s4 -> s1 [label="-56"];
+ s4 -> s1 [label="-55"];
+ s4 -> s1 [label="-54"];
+ s4 -> s1 [label="-53"];
+ s4 -> s1 [label="-52"];
+ s4 -> s1 [label="-51"];
+ s4 -> s1 [label="-50"];
+ s4 -> s1 [label="-49"];
+ s4 -> s1 [label="-48"];
+ s4 -> s1 [label="-47"];
+ s4 -> s1 [label="-46"];
+ s4 -> s1 [label="-45"];
+ s4 -> s1 [label="-44"];
+ s4 -> s1 [label="-43"];
+ s4 -> s1 [label="-42"];
+ s4 -> s1 [label="-41"];
+ s4 -> s1 [label="-40"];
+ s4 -> s1 [label="-39"];
+ s4 -> s1 [label="-38"];
+ s4 -> s1 [label="-37"];
+ s4 -> s1 [label="-36"];
+ s4 -> s1 [label="-35"];
+ s4 -> s1 [label="-34"];
+ s4 -> s1 [label="-33"];
+ s4 -> s1 [label="-32"];
+ s4 -> s1 [label="-31"];
+ s4 -> s1 [label="-30"];
+ s4 -> s1 [label="-29"];
+ s4 -> s1 [label="-28"];
+ s4 -> s1 [label="-27"];
+ s4 -> s1 [label="-26"];
+ s4 -> s1 [label="-25"];
+ s4 -> s1 [label="-24"];
+ s4 -> s1 [label="-23"];
+ s4 -> s1 [label="-22"];
+ s4 -> s1 [label="-21"];
+ s4 -> s1 [label="-20"];
+ s4 -> s1 [label="-19"];
+ s4 -> s1 [label="-18"];
+ s4 -> s1 [label="-17"];
+ s4 -> s1 [label="-16"];
+ s4 -> s1 [label="-15"];
+ s4 -> s1 [label="-14"];
+ s4 -> s1 [label="-13"];
+ s4 -> s1 [label="-12"];
+ s4 -> s1 [label="-11"];
+ s4 -> s1 [label="-10"];
+ s4 -> s1 [label="-9"];
+ s4 -> s1 [label="-8"];
+ s4 -> s1 [label="-7"];
+ s4 -> s1 [label="-6"];
+ s4 -> s1 [label="-5"];
+ s4 -> s1 [label="-4"];
+ s4 -> s1 [label="-3"];
+ s4 -> s1 [label="-2"];
+ s4 -> s1 [label="-1"];
+ s5 -> s1 [label="0"];
+ s5 -> s1 [label="1"];
+ s5 -> s1 [label="2"];
+ s5 -> s1 [label="3"];
+ s5 -> s1 [label="4"];
+ s5 -> s1 [label="5"];
+ s5 -> s1 [label="6"];
+ s5 -> s1 [label="7"];
+ s5 -> s1 [label="8"];
+ s5 -> s1 [label="9"];
+ s5 -> s1 [label="10"];
+ s5 -> s1 [label="11"];
+ s5 -> s1 [label="12"];
+ s5 -> s1 [label="13"];
+ s5 -> s1 [label="14"];
+ s5 -> s1 [label="15"];
+ s5 -> s1 [label="16"];
+ s5 -> s1 [label="17"];
+ s5 -> s1 [label="18"];
+ s5 -> s1 [label="19"];
+ s5 -> s1 [label="20"];
+ s5 -> s1 [label="21"];
+ s5 -> s1 [label="22"];
+ s5 -> s1 [label="23"];
+ s5 -> s1 [label="24"];
+ s5 -> s1 [label="25"];
+ s5 -> s1 [label="26"];
+ s5 -> s1 [label="27"];
+ s5 -> s1 [label="28"];
+ s5 -> s1 [label="29"];
+ s5 -> s1 [label="30"];
+ s5 -> s1 [label="31"];
+ s5 -> s1 [label="32"];
+ s5 -> s1 [label="33"];
+ s5 -> s1 [label="34"];
+ s5 -> s1 [label="35"];
+ s5 -> s1 [label="36"];
+ s5 -> s1 [label="37"];
+ s5 -> s1 [label="38"];
+ s5 -> s1 [label="39"];
+ s5 -> s1 [label="40"];
+ s5 -> s1 [label="41"];
+ s5 -> s1 [label="42"];
+ s5 -> s1 [label="43"];
+ s5 -> s1 [label="44"];
+ s5 -> s1 [label="45"];
+ s5 -> s1 [label="46"];
+ s5 -> s1 [label="47"];
+ s5 -> s1 [label="48"];
+ s5 -> s1 [label="49"];
+ s5 -> s1 [label="50"];
+ s5 -> s1 [label="51"];
+ s5 -> s1 [label="52"];
+ s5 -> s1 [label="53"];
+ s5 -> s1 [label="54"];
+ s5 -> s1 [label="55"];
+ s5 -> s1 [label="56"];
+ s5 -> s1 [label="57"];
+ s5 -> s1 [label="58"];
+ s5 -> s1 [label="59"];
+ s5 -> s1 [label="60"];
+ s5 -> s1 [label="61"];
+ s5 -> s1 [label="62"];
+ s5 -> s1 [label="63"];
+ s5 -> s1 [label="64"];
+ s5 -> s1 [label="65"];
+ s5 -> s1 [label="66"];
+ s5 -> s1 [label="67"];
+ s5 -> s1 [label="68"];
+ s5 -> s1 [label="69"];
+ s5 -> s1 [label="70"];
+ s5 -> s1 [label="71"];
+ s5 -> s1 [label="72"];
+ s5 -> s1 [label="73"];
+ s5 -> s1 [label="74"];
+ s5 -> s1 [label="75"];
+ s5 -> s1 [label="76"];
+ s5 -> s1 [label="77"];
+ s5 -> s1 [label="78"];
+ s5 -> s1 [label="79"];
+ s5 -> s1 [label="80"];
+ s5 -> s1 [label="81"];
+ s5 -> s1 [label="82"];
+ s5 -> s1 [label="83"];
+ s5 -> s1 [label="84"];
+ s5 -> s1 [label="85"];
+ s5 -> s1 [label="86"];
+ s5 -> s1 [label="87"];
+ s5 -> s1 [label="88"];
+ s5 -> s1 [label="89"];
+ s5 -> s1 [label="90"];
+ s5 -> s1 [label="91"];
+ s5 -> s1 [label="92"];
+ s5 -> s1 [label="93"];
+ s5 -> s1 [label="94"];
+ s5 -> s1 [label="95"];
+ s5 -> s1 [label="96"];
+ s5 -> s1 [label="97"];
+ s5 -> s1 [label="98"];
+ s5 -> s1 [label="99"];
+ s5 -> s1 [label="100"];
+ s5 -> s1 [label="101"];
+ s5 -> s1 [label="102"];
+ s5 -> s1 [label="103"];
+ s5 -> s1 [label="104"];
+ s5 -> s1 [label="105"];
+ s5 -> s1 [label="106"];
+ s5 -> s1 [label="107"];
+ s5 -> s1 [label="108"];
+ s5 -> s1 [label="109"];
+ s5 -> s1 [label="110"];
+ s5 -> s1 [label="111"];
+ s5 -> s1 [label="112"];
+ s5 -> s1 [label="113"];
+ s5 -> s1 [label="114"];
+ s5 -> s1 [label="115"];
+ s5 -> s1 [label="116"];
+ s5 -> s1 [label="117"];
+ s5 -> s1 [label="118"];
+ s5 -> s1 [label="119"];
+ s5 -> s1 [label="120"];
+ s5 -> s1 [label="121"];
+ s5 -> s1 [label="122"];
+ s5 -> s1 [label="123"];
+ s5 -> s1 [label="124"];
+ s5 -> s1 [label="125"];
+ s5 -> s1 [label="126"];
+ s5 -> s1 [label="127"];
+ s5 -> s2 [label="-128"];
+ s5 -> s2 [label="-127"];
+ s5 -> s2 [label="-126"];
+ s5 -> s2 [label="-125"];
+ s5 -> s2 [label="-124"];
+ s5 -> s2 [label="-123"];
+ s5 -> s2 [label="-122"];
+ s5 -> s2 [label="-121"];
+ s5 -> s2 [label="-120"];
+ s5 -> s2 [label="-119"];
+ s5 -> s2 [label="-118"];
+ s5 -> s2 [label="-117"];
+ s5 -> s2 [label="-116"];
+ s5 -> s2 [label="-115"];
+ s5 -> s2 [label="-114"];
+ s5 -> s2 [label="-113"];
+ s5 -> s2 [label="-112"];
+ s5 -> s2 [label="-111"];
+ s5 -> s2 [label="-110"];
+ s5 -> s2 [label="-109"];
+ s5 -> s2 [label="-108"];
+ s5 -> s2 [label="-107"];
+ s5 -> s2 [label="-106"];
+ s5 -> s2 [label="-105"];
+ s5 -> s2 [label="-104"];
+ s5 -> s2 [label="-103"];
+ s5 -> s2 [label="-102"];
+ s5 -> s2 [label="-101"];
+ s5 -> s2 [label="-100"];
+ s5 -> s2 [label="-99"];
+ s5 -> s2 [label="-98"];
+ s5 -> s2 [label="-97"];
+ s5 -> s1 [label="-96"];
+ s5 -> s1 [label="-95"];
+ s5 -> s1 [label="-94"];
+ s5 -> s1 [label="-93"];
+ s5 -> s1 [label="-92"];
+ s5 -> s1 [label="-91"];
+ s5 -> s1 [label="-90"];
+ s5 -> s1 [label="-89"];
+ s5 -> s1 [label="-88"];
+ s5 -> s1 [label="-87"];
+ s5 -> s1 [label="-86"];
+ s5 -> s1 [label="-85"];
+ s5 -> s1 [label="-84"];
+ s5 -> s1 [label="-83"];
+ s5 -> s1 [label="-82"];
+ s5 -> s1 [label="-81"];
+ s5 -> s1 [label="-80"];
+ s5 -> s1 [label="-79"];
+ s5 -> s1 [label="-78"];
+ s5 -> s1 [label="-77"];
+ s5 -> s1 [label="-76"];
+ s5 -> s1 [label="-75"];
+ s5 -> s1 [label="-74"];
+ s5 -> s1 [label="-73"];
+ s5 -> s1 [label="-72"];
+ s5 -> s1 [label="-71"];
+ s5 -> s1 [label="-70"];
+ s5 -> s1 [label="-69"];
+ s5 -> s1 [label="-68"];
+ s5 -> s1 [label="-67"];
+ s5 -> s1 [label="-66"];
+ s5 -> s1 [label="-65"];
+ s5 -> s1 [label="-64"];
+ s5 -> s1 [label="-63"];
+ s5 -> s1 [label="-62"];
+ s5 -> s1 [label="-61"];
+ s5 -> s1 [label="-60"];
+ s5 -> s1 [label="-59"];
+ s5 -> s1 [label="-58"];
+ s5 -> s1 [label="-57"];
+ s5 -> s1 [label="-56"];
+ s5 -> s1 [label="-55"];
+ s5 -> s1 [label="-54"];
+ s5 -> s1 [label="-53"];
+ s5 -> s1 [label="-52"];
+ s5 -> s1 [label="-51"];
+ s5 -> s1 [label="-50"];
+ s5 -> s1 [label="-49"];
+ s5 -> s1 [label="-48"];
+ s5 -> s1 [label="-47"];
+ s5 -> s1 [label="-46"];
+ s5 -> s1 [label="-45"];
+ s5 -> s1 [label="-44"];
+ s5 -> s1 [label="-43"];
+ s5 -> s1 [label="-42"];
+ s5 -> s1 [label="-41"];
+ s5 -> s1 [label="-40"];
+ s5 -> s1 [label="-39"];
+ s5 -> s1 [label="-38"];
+ s5 -> s1 [label="-37"];
+ s5 -> s1 [label="-36"];
+ s5 -> s1 [label="-35"];
+ s5 -> s1 [label="-34"];
+ s5 -> s1 [label="-33"];
+ s5 -> s1 [label="-32"];
+ s5 -> s1 [label="-31"];
+ s5 -> s1 [label="-30"];
+ s5 -> s1 [label="-29"];
+ s5 -> s1 [label="-28"];
+ s5 -> s1 [label="-27"];
+ s5 -> s1 [label="-26"];
+ s5 -> s1 [label="-25"];
+ s5 -> s1 [label="-24"];
+ s5 -> s1 [label="-23"];
+ s5 -> s1 [label="-22"];
+ s5 -> s1 [label="-21"];
+ s5 -> s1 [label="-20"];
+ s5 -> s1 [label="-19"];
+ s5 -> s1 [label="-18"];
+ s5 -> s1 [label="-17"];
+ s5 -> s1 [label="-16"];
+ s5 -> s1 [label="-15"];
+ s5 -> s1 [label="-14"];
+ s5 -> s1 [label="-13"];
+ s5 -> s1 [label="-12"];
+ s5 -> s1 [label="-11"];
+ s5 -> s1 [label="-10"];
+ s5 -> s1 [label="-9"];
+ s5 -> s1 [label="-8"];
+ s5 -> s1 [label="-7"];
+ s5 -> s1 [label="-6"];
+ s5 -> s1 [label="-5"];
+ s5 -> s1 [label="-4"];
+ s5 -> s1 [label="-3"];
+ s5 -> s1 [label="-2"];
+ s5 -> s1 [label="-1"];
+ s6 -> s1 [label="0"];
+ s6 -> s1 [label="1"];
+ s6 -> s1 [label="2"];
+ s6 -> s1 [label="3"];
+ s6 -> s1 [label="4"];
+ s6 -> s1 [label="5"];
+ s6 -> s1 [label="6"];
+ s6 -> s1 [label="7"];
+ s6 -> s1 [label="8"];
+ s6 -> s1 [label="9"];
+ s6 -> s1 [label="10"];
+ s6 -> s1 [label="11"];
+ s6 -> s1 [label="12"];
+ s6 -> s1 [label="13"];
+ s6 -> s1 [label="14"];
+ s6 -> s1 [label="15"];
+ s6 -> s1 [label="16"];
+ s6 -> s1 [label="17"];
+ s6 -> s1 [label="18"];
+ s6 -> s1 [label="19"];
+ s6 -> s1 [label="20"];
+ s6 -> s1 [label="21"];
+ s6 -> s1 [label="22"];
+ s6 -> s1 [label="23"];
+ s6 -> s1 [label="24"];
+ s6 -> s1 [label="25"];
+ s6 -> s1 [label="26"];
+ s6 -> s1 [label="27"];
+ s6 -> s1 [label="28"];
+ s6 -> s1 [label="29"];
+ s6 -> s1 [label="30"];
+ s6 -> s1 [label="31"];
+ s6 -> s1 [label="32"];
+ s6 -> s1 [label="33"];
+ s6 -> s1 [label="34"];
+ s6 -> s1 [label="35"];
+ s6 -> s1 [label="36"];
+ s6 -> s1 [label="37"];
+ s6 -> s1 [label="38"];
+ s6 -> s1 [label="39"];
+ s6 -> s1 [label="40"];
+ s6 -> s1 [label="41"];
+ s6 -> s1 [label="42"];
+ s6 -> s1 [label="43"];
+ s6 -> s1 [label="44"];
+ s6 -> s1 [label="45"];
+ s6 -> s1 [label="46"];
+ s6 -> s1 [label="47"];
+ s6 -> s1 [label="48"];
+ s6 -> s1 [label="49"];
+ s6 -> s1 [label="50"];
+ s6 -> s1 [label="51"];
+ s6 -> s1 [label="52"];
+ s6 -> s1 [label="53"];
+ s6 -> s1 [label="54"];
+ s6 -> s1 [label="55"];
+ s6 -> s1 [label="56"];
+ s6 -> s1 [label="57"];
+ s6 -> s1 [label="58"];
+ s6 -> s1 [label="59"];
+ s6 -> s1 [label="60"];
+ s6 -> s1 [label="61"];
+ s6 -> s1 [label="62"];
+ s6 -> s1 [label="63"];
+ s6 -> s1 [label="64"];
+ s6 -> s1 [label="65"];
+ s6 -> s1 [label="66"];
+ s6 -> s1 [label="67"];
+ s6 -> s1 [label="68"];
+ s6 -> s1 [label="69"];
+ s6 -> s1 [label="70"];
+ s6 -> s1 [label="71"];
+ s6 -> s1 [label="72"];
+ s6 -> s1 [label="73"];
+ s6 -> s1 [label="74"];
+ s6 -> s1 [label="75"];
+ s6 -> s1 [label="76"];
+ s6 -> s1 [label="77"];
+ s6 -> s1 [label="78"];
+ s6 -> s1 [label="79"];
+ s6 -> s1 [label="80"];
+ s6 -> s1 [label="81"];
+ s6 -> s1 [label="82"];
+ s6 -> s1 [label="83"];
+ s6 -> s1 [label="84"];
+ s6 -> s1 [label="85"];
+ s6 -> s1 [label="86"];
+ s6 -> s1 [label="87"];
+ s6 -> s1 [label="88"];
+ s6 -> s1 [label="89"];
+ s6 -> s1 [label="90"];
+ s6 -> s1 [label="91"];
+ s6 -> s1 [label="92"];
+ s6 -> s1 [label="93"];
+ s6 -> s1 [label="94"];
+ s6 -> s1 [label="95"];
+ s6 -> s1 [label="96"];
+ s6 -> s1 [label="97"];
+ s6 -> s1 [label="98"];
+ s6 -> s1 [label="99"];
+ s6 -> s1 [label="100"];
+ s6 -> s1 [label="101"];
+ s6 -> s1 [label="102"];
+ s6 -> s1 [label="103"];
+ s6 -> s1 [label="104"];
+ s6 -> s1 [label="105"];
+ s6 -> s1 [label="106"];
+ s6 -> s1 [label="107"];
+ s6 -> s1 [label="108"];
+ s6 -> s1 [label="109"];
+ s6 -> s1 [label="110"];
+ s6 -> s1 [label="111"];
+ s6 -> s1 [label="112"];
+ s6 -> s1 [label="113"];
+ s6 -> s1 [label="114"];
+ s6 -> s1 [label="115"];
+ s6 -> s1 [label="116"];
+ s6 -> s1 [label="117"];
+ s6 -> s1 [label="118"];
+ s6 -> s1 [label="119"];
+ s6 -> s1 [label="120"];
+ s6 -> s1 [label="121"];
+ s6 -> s1 [label="122"];
+ s6 -> s1 [label="123"];
+ s6 -> s1 [label="124"];
+ s6 -> s1 [label="125"];
+ s6 -> s1 [label="126"];
+ s6 -> s1 [label="127"];
+ s6 -> s1 [label="-128"];
+ s6 -> s1 [label="-127"];
+ s6 -> s1 [label="-126"];
+ s6 -> s1 [label="-125"];
+ s6 -> s1 [label="-124"];
+ s6 -> s1 [label="-123"];
+ s6 -> s1 [label="-122"];
+ s6 -> s1 [label="-121"];
+ s6 -> s1 [label="-120"];
+ s6 -> s1 [label="-119"];
+ s6 -> s1 [label="-118"];
+ s6 -> s1 [label="-117"];
+ s6 -> s1 [label="-116"];
+ s6 -> s1 [label="-115"];
+ s6 -> s1 [label="-114"];
+ s6 -> s1 [label="-113"];
+ s6 -> s4 [label="-112"];
+ s6 -> s4 [label="-111"];
+ s6 -> s4 [label="-110"];
+ s6 -> s4 [label="-109"];
+ s6 -> s4 [label="-108"];
+ s6 -> s4 [label="-107"];
+ s6 -> s4 [label="-106"];
+ s6 -> s4 [label="-105"];
+ s6 -> s4 [label="-104"];
+ s6 -> s4 [label="-103"];
+ s6 -> s4 [label="-102"];
+ s6 -> s4 [label="-101"];
+ s6 -> s4 [label="-100"];
+ s6 -> s4 [label="-99"];
+ s6 -> s4 [label="-98"];
+ s6 -> s4 [label="-97"];
+ s6 -> s4 [label="-96"];
+ s6 -> s4 [label="-95"];
+ s6 -> s4 [label="-94"];
+ s6 -> s4 [label="-93"];
+ s6 -> s4 [label="-92"];
+ s6 -> s4 [label="-91"];
+ s6 -> s4 [label="-90"];
+ s6 -> s4 [label="-89"];
+ s6 -> s4 [label="-88"];
+ s6 -> s4 [label="-87"];
+ s6 -> s4 [label="-86"];
+ s6 -> s4 [label="-85"];
+ s6 -> s4 [label="-84"];
+ s6 -> s4 [label="-83"];
+ s6 -> s4 [label="-82"];
+ s6 -> s4 [label="-81"];
+ s6 -> s4 [label="-80"];
+ s6 -> s4 [label="-79"];
+ s6 -> s4 [label="-78"];
+ s6 -> s4 [label="-77"];
+ s6 -> s4 [label="-76"];
+ s6 -> s4 [label="-75"];
+ s6 -> s4 [label="-74"];
+ s6 -> s4 [label="-73"];
+ s6 -> s4 [label="-72"];
+ s6 -> s4 [label="-71"];
+ s6 -> s4 [label="-70"];
+ s6 -> s4 [label="-69"];
+ s6 -> s4 [label="-68"];
+ s6 -> s4 [label="-67"];
+ s6 -> s4 [label="-66"];
+ s6 -> s4 [label="-65"];
+ s6 -> s1 [label="-64"];
+ s6 -> s1 [label="-63"];
+ s6 -> s1 [label="-62"];
+ s6 -> s1 [label="-61"];
+ s6 -> s1 [label="-60"];
+ s6 -> s1 [label="-59"];
+ s6 -> s1 [label="-58"];
+ s6 -> s1 [label="-57"];
+ s6 -> s1 [label="-56"];
+ s6 -> s1 [label="-55"];
+ s6 -> s1 [label="-54"];
+ s6 -> s1 [label="-53"];
+ s6 -> s1 [label="-52"];
+ s6 -> s1 [label="-51"];
+ s6 -> s1 [label="-50"];
+ s6 -> s1 [label="-49"];
+ s6 -> s1 [label="-48"];
+ s6 -> s1 [label="-47"];
+ s6 -> s1 [label="-46"];
+ s6 -> s1 [label="-45"];
+ s6 -> s1 [label="-44"];
+ s6 -> s1 [label="-43"];
+ s6 -> s1 [label="-42"];
+ s6 -> s1 [label="-41"];
+ s6 -> s1 [label="-40"];
+ s6 -> s1 [label="-39"];
+ s6 -> s1 [label="-38"];
+ s6 -> s1 [label="-37"];
+ s6 -> s1 [label="-36"];
+ s6 -> s1 [label="-35"];
+ s6 -> s1 [label="-34"];
+ s6 -> s1 [label="-33"];
+ s6 -> s1 [label="-32"];
+ s6 -> s1 [label="-31"];
+ s6 -> s1 [label="-30"];
+ s6 -> s1 [label="-29"];
+ s6 -> s1 [label="-28"];
+ s6 -> s1 [label="-27"];
+ s6 -> s1 [label="-26"];
+ s6 -> s1 [label="-25"];
+ s6 -> s1 [label="-24"];
+ s6 -> s1 [label="-23"];
+ s6 -> s1 [label="-22"];
+ s6 -> s1 [label="-21"];
+ s6 -> s1 [label="-20"];
+ s6 -> s1 [label="-19"];
+ s6 -> s1 [label="-18"];
+ s6 -> s1 [label="-17"];
+ s6 -> s1 [label="-16"];
+ s6 -> s1 [label="-15"];
+ s6 -> s1 [label="-14"];
+ s6 -> s1 [label="-13"];
+ s6 -> s1 [label="-12"];
+ s6 -> s1 [label="-11"];
+ s6 -> s1 [label="-10"];
+ s6 -> s1 [label="-9"];
+ s6 -> s1 [label="-8"];
+ s6 -> s1 [label="-7"];
+ s6 -> s1 [label="-6"];
+ s6 -> s1 [label="-5"];
+ s6 -> s1 [label="-4"];
+ s6 -> s1 [label="-3"];
+ s6 -> s1 [label="-2"];
+ s6 -> s1 [label="-1"];
+ s7 -> s1 [label="0"];
+ s7 -> s1 [label="1"];
+ s7 -> s1 [label="2"];
+ s7 -> s1 [label="3"];
+ s7 -> s1 [label="4"];
+ s7 -> s1 [label="5"];
+ s7 -> s1 [label="6"];
+ s7 -> s1 [label="7"];
+ s7 -> s1 [label="8"];
+ s7 -> s1 [label="9"];
+ s7 -> s1 [label="10"];
+ s7 -> s1 [label="11"];
+ s7 -> s1 [label="12"];
+ s7 -> s1 [label="13"];
+ s7 -> s1 [label="14"];
+ s7 -> s1 [label="15"];
+ s7 -> s1 [label="16"];
+ s7 -> s1 [label="17"];
+ s7 -> s1 [label="18"];
+ s7 -> s1 [label="19"];
+ s7 -> s1 [label="20"];
+ s7 -> s1 [label="21"];
+ s7 -> s1 [label="22"];
+ s7 -> s1 [label="23"];
+ s7 -> s1 [label="24"];
+ s7 -> s1 [label="25"];
+ s7 -> s1 [label="26"];
+ s7 -> s1 [label="27"];
+ s7 -> s1 [label="28"];
+ s7 -> s1 [label="29"];
+ s7 -> s1 [label="30"];
+ s7 -> s1 [label="31"];
+ s7 -> s1 [label="32"];
+ s7 -> s1 [label="33"];
+ s7 -> s1 [label="34"];
+ s7 -> s1 [label="35"];
+ s7 -> s1 [label="36"];
+ s7 -> s1 [label="37"];
+ s7 -> s1 [label="38"];
+ s7 -> s1 [label="39"];
+ s7 -> s1 [label="40"];
+ s7 -> s1 [label="41"];
+ s7 -> s1 [label="42"];
+ s7 -> s1 [label="43"];
+ s7 -> s1 [label="44"];
+ s7 -> s1 [label="45"];
+ s7 -> s1 [label="46"];
+ s7 -> s1 [label="47"];
+ s7 -> s1 [label="48"];
+ s7 -> s1 [label="49"];
+ s7 -> s1 [label="50"];
+ s7 -> s1 [label="51"];
+ s7 -> s1 [label="52"];
+ s7 -> s1 [label="53"];
+ s7 -> s1 [label="54"];
+ s7 -> s1 [label="55"];
+ s7 -> s1 [label="56"];
+ s7 -> s1 [label="57"];
+ s7 -> s1 [label="58"];
+ s7 -> s1 [label="59"];
+ s7 -> s1 [label="60"];
+ s7 -> s1 [label="61"];
+ s7 -> s1 [label="62"];
+ s7 -> s1 [label="63"];
+ s7 -> s1 [label="64"];
+ s7 -> s1 [label="65"];
+ s7 -> s1 [label="66"];
+ s7 -> s1 [label="67"];
+ s7 -> s1 [label="68"];
+ s7 -> s1 [label="69"];
+ s7 -> s1 [label="70"];
+ s7 -> s1 [label="71"];
+ s7 -> s1 [label="72"];
+ s7 -> s1 [label="73"];
+ s7 -> s1 [label="74"];
+ s7 -> s1 [label="75"];
+ s7 -> s1 [label="76"];
+ s7 -> s1 [label="77"];
+ s7 -> s1 [label="78"];
+ s7 -> s1 [label="79"];
+ s7 -> s1 [label="80"];
+ s7 -> s1 [label="81"];
+ s7 -> s1 [label="82"];
+ s7 -> s1 [label="83"];
+ s7 -> s1 [label="84"];
+ s7 -> s1 [label="85"];
+ s7 -> s1 [label="86"];
+ s7 -> s1 [label="87"];
+ s7 -> s1 [label="88"];
+ s7 -> s1 [label="89"];
+ s7 -> s1 [label="90"];
+ s7 -> s1 [label="91"];
+ s7 -> s1 [label="92"];
+ s7 -> s1 [label="93"];
+ s7 -> s1 [label="94"];
+ s7 -> s1 [label="95"];
+ s7 -> s1 [label="96"];
+ s7 -> s1 [label="97"];
+ s7 -> s1 [label="98"];
+ s7 -> s1 [label="99"];
+ s7 -> s1 [label="100"];
+ s7 -> s1 [label="101"];
+ s7 -> s1 [label="102"];
+ s7 -> s1 [label="103"];
+ s7 -> s1 [label="104"];
+ s7 -> s1 [label="105"];
+ s7 -> s1 [label="106"];
+ s7 -> s1 [label="107"];
+ s7 -> s1 [label="108"];
+ s7 -> s1 [label="109"];
+ s7 -> s1 [label="110"];
+ s7 -> s1 [label="111"];
+ s7 -> s1 [label="112"];
+ s7 -> s1 [label="113"];
+ s7 -> s1 [label="114"];
+ s7 -> s1 [label="115"];
+ s7 -> s1 [label="116"];
+ s7 -> s1 [label="117"];
+ s7 -> s1 [label="118"];
+ s7 -> s1 [label="119"];
+ s7 -> s1 [label="120"];
+ s7 -> s1 [label="121"];
+ s7 -> s1 [label="122"];
+ s7 -> s1 [label="123"];
+ s7 -> s1 [label="124"];
+ s7 -> s1 [label="125"];
+ s7 -> s1 [label="126"];
+ s7 -> s1 [label="127"];
+ s7 -> s4 [label="-128"];
+ s7 -> s4 [label="-127"];
+ s7 -> s4 [label="-126"];
+ s7 -> s4 [label="-125"];
+ s7 -> s4 [label="-124"];
+ s7 -> s4 [label="-123"];
+ s7 -> s4 [label="-122"];
+ s7 -> s4 [label="-121"];
+ s7 -> s4 [label="-120"];
+ s7 -> s4 [label="-119"];
+ s7 -> s4 [label="-118"];
+ s7 -> s4 [label="-117"];
+ s7 -> s4 [label="-116"];
+ s7 -> s4 [label="-115"];
+ s7 -> s4 [label="-114"];
+ s7 -> s4 [label="-113"];
+ s7 -> s1 [label="-112"];
+ s7 -> s1 [label="-111"];
+ s7 -> s1 [label="-110"];
+ s7 -> s1 [label="-109"];
+ s7 -> s1 [label="-108"];
+ s7 -> s1 [label="-107"];
+ s7 -> s1 [label="-106"];
+ s7 -> s1 [label="-105"];
+ s7 -> s1 [label="-104"];
+ s7 -> s1 [label="-103"];
+ s7 -> s1 [label="-102"];
+ s7 -> s1 [label="-101"];
+ s7 -> s1 [label="-100"];
+ s7 -> s1 [label="-99"];
+ s7 -> s1 [label="-98"];
+ s7 -> s1 [label="-97"];
+ s7 -> s1 [label="-96"];
+ s7 -> s1 [label="-95"];
+ s7 -> s1 [label="-94"];
+ s7 -> s1 [label="-93"];
+ s7 -> s1 [label="-92"];
+ s7 -> s1 [label="-91"];
+ s7 -> s1 [label="-90"];
+ s7 -> s1 [label="-89"];
+ s7 -> s1 [label="-88"];
+ s7 -> s1 [label="-87"];
+ s7 -> s1 [label="-86"];
+ s7 -> s1 [label="-85"];
+ s7 -> s1 [label="-84"];
+ s7 -> s1 [label="-83"];
+ s7 -> s1 [label="-82"];
+ s7 -> s1 [label="-81"];
+ s7 -> s1 [label="-80"];
+ s7 -> s1 [label="-79"];
+ s7 -> s1 [label="-78"];
+ s7 -> s1 [label="-77"];
+ s7 -> s1 [label="-76"];
+ s7 -> s1 [label="-75"];
+ s7 -> s1 [label="-74"];
+ s7 -> s1 [label="-73"];
+ s7 -> s1 [label="-72"];
+ s7 -> s1 [label="-71"];
+ s7 -> s1 [label="-70"];
+ s7 -> s1 [label="-69"];
+ s7 -> s1 [label="-68"];
+ s7 -> s1 [label="-67"];
+ s7 -> s1 [label="-66"];
+ s7 -> s1 [label="-65"];
+ s7 -> s1 [label="-64"];
+ s7 -> s1 [label="-63"];
+ s7 -> s1 [label="-62"];
+ s7 -> s1 [label="-61"];
+ s7 -> s1 [label="-60"];
+ s7 -> s1 [label="-59"];
+ s7 -> s1 [label="-58"];
+ s7 -> s1 [label="-57"];
+ s7 -> s1 [label="-56"];
+ s7 -> s1 [label="-55"];
+ s7 -> s1 [label="-54"];
+ s7 -> s1 [label="-53"];
+ s7 -> s1 [label="-52"];
+ s7 -> s1 [label="-51"];
+ s7 -> s1 [label="-50"];
+ s7 -> s1 [label="-49"];
+ s7 -> s1 [label="-48"];
+ s7 -> s1 [label="-47"];
+ s7 -> s1 [label="-46"];
+ s7 -> s1 [label="-45"];
+ s7 -> s1 [label="-44"];
+ s7 -> s1 [label="-43"];
+ s7 -> s1 [label="-42"];
+ s7 -> s1 [label="-41"];
+ s7 -> s1 [label="-40"];
+ s7 -> s1 [label="-39"];
+ s7 -> s1 [label="-38"];
+ s7 -> s1 [label="-37"];
+ s7 -> s1 [label="-36"];
+ s7 -> s1 [label="-35"];
+ s7 -> s1 [label="-34"];
+ s7 -> s1 [label="-33"];
+ s7 -> s1 [label="-32"];
+ s7 -> s1 [label="-31"];
+ s7 -> s1 [label="-30"];
+ s7 -> s1 [label="-29"];
+ s7 -> s1 [label="-28"];
+ s7 -> s1 [label="-27"];
+ s7 -> s1 [label="-26"];
+ s7 -> s1 [label="-25"];
+ s7 -> s1 [label="-24"];
+ s7 -> s1 [label="-23"];
+ s7 -> s1 [label="-22"];
+ s7 -> s1 [label="-21"];
+ s7 -> s1 [label="-20"];
+ s7 -> s1 [label="-19"];
+ s7 -> s1 [label="-18"];
+ s7 -> s1 [label="-17"];
+ s7 -> s1 [label="-16"];
+ s7 -> s1 [label="-15"];
+ s7 -> s1 [label="-14"];
+ s7 -> s1 [label="-13"];
+ s7 -> s1 [label="-12"];
+ s7 -> s1 [label="-11"];
+ s7 -> s1 [label="-10"];
+ s7 -> s1 [label="-9"];
+ s7 -> s1 [label="-8"];
+ s7 -> s1 [label="-7"];
+ s7 -> s1 [label="-6"];
+ s7 -> s1 [label="-5"];
+ s7 -> s1 [label="-4"];
+ s7 -> s1 [label="-3"];
+ s7 -> s1 [label="-2"];
+ s7 -> s1 [label="-1"];
+ s8 -> s1 [label="0"];
+ s8 -> s1 [label="1"];
+ s8 -> s1 [label="2"];
+ s8 -> s1 [label="3"];
+ s8 -> s1 [label="4"];
+ s8 -> s1 [label="5"];
+ s8 -> s1 [label="6"];
+ s8 -> s1 [label="7"];
+ s8 -> s1 [label="8"];
+ s8 -> s1 [label="9"];
+ s8 -> s1 [label="10"];
+ s8 -> s1 [label="11"];
+ s8 -> s1 [label="12"];
+ s8 -> s1 [label="13"];
+ s8 -> s1 [label="14"];
+ s8 -> s1 [label="15"];
+ s8 -> s1 [label="16"];
+ s8 -> s1 [label="17"];
+ s8 -> s1 [label="18"];
+ s8 -> s1 [label="19"];
+ s8 -> s1 [label="20"];
+ s8 -> s1 [label="21"];
+ s8 -> s1 [label="22"];
+ s8 -> s1 [label="23"];
+ s8 -> s1 [label="24"];
+ s8 -> s1 [label="25"];
+ s8 -> s1 [label="26"];
+ s8 -> s1 [label="27"];
+ s8 -> s1 [label="28"];
+ s8 -> s1 [label="29"];
+ s8 -> s1 [label="30"];
+ s8 -> s1 [label="31"];
+ s8 -> s1 [label="32"];
+ s8 -> s1 [label="33"];
+ s8 -> s1 [label="34"];
+ s8 -> s1 [label="35"];
+ s8 -> s1 [label="36"];
+ s8 -> s1 [label="37"];
+ s8 -> s1 [label="38"];
+ s8 -> s1 [label="39"];
+ s8 -> s1 [label="40"];
+ s8 -> s1 [label="41"];
+ s8 -> s1 [label="42"];
+ s8 -> s1 [label="43"];
+ s8 -> s1 [label="44"];
+ s8 -> s1 [label="45"];
+ s8 -> s1 [label="46"];
+ s8 -> s1 [label="47"];
+ s8 -> s1 [label="48"];
+ s8 -> s1 [label="49"];
+ s8 -> s1 [label="50"];
+ s8 -> s1 [label="51"];
+ s8 -> s1 [label="52"];
+ s8 -> s1 [label="53"];
+ s8 -> s1 [label="54"];
+ s8 -> s1 [label="55"];
+ s8 -> s1 [label="56"];
+ s8 -> s1 [label="57"];
+ s8 -> s1 [label="58"];
+ s8 -> s1 [label="59"];
+ s8 -> s1 [label="60"];
+ s8 -> s1 [label="61"];
+ s8 -> s1 [label="62"];
+ s8 -> s1 [label="63"];
+ s8 -> s1 [label="64"];
+ s8 -> s1 [label="65"];
+ s8 -> s1 [label="66"];
+ s8 -> s1 [label="67"];
+ s8 -> s1 [label="68"];
+ s8 -> s1 [label="69"];
+ s8 -> s1 [label="70"];
+ s8 -> s1 [label="71"];
+ s8 -> s1 [label="72"];
+ s8 -> s1 [label="73"];
+ s8 -> s1 [label="74"];
+ s8 -> s1 [label="75"];
+ s8 -> s1 [label="76"];
+ s8 -> s1 [label="77"];
+ s8 -> s1 [label="78"];
+ s8 -> s1 [label="79"];
+ s8 -> s1 [label="80"];
+ s8 -> s1 [label="81"];
+ s8 -> s1 [label="82"];
+ s8 -> s1 [label="83"];
+ s8 -> s1 [label="84"];
+ s8 -> s1 [label="85"];
+ s8 -> s1 [label="86"];
+ s8 -> s1 [label="87"];
+ s8 -> s1 [label="88"];
+ s8 -> s1 [label="89"];
+ s8 -> s1 [label="90"];
+ s8 -> s1 [label="91"];
+ s8 -> s1 [label="92"];
+ s8 -> s1 [label="93"];
+ s8 -> s1 [label="94"];
+ s8 -> s1 [label="95"];
+ s8 -> s1 [label="96"];
+ s8 -> s1 [label="97"];
+ s8 -> s1 [label="98"];
+ s8 -> s1 [label="99"];
+ s8 -> s1 [label="100"];
+ s8 -> s1 [label="101"];
+ s8 -> s1 [label="102"];
+ s8 -> s1 [label="103"];
+ s8 -> s1 [label="104"];
+ s8 -> s1 [label="105"];
+ s8 -> s1 [label="106"];
+ s8 -> s1 [label="107"];
+ s8 -> s1 [label="108"];
+ s8 -> s1 [label="109"];
+ s8 -> s1 [label="110"];
+ s8 -> s1 [label="111"];
+ s8 -> s1 [label="112"];
+ s8 -> s1 [label="113"];
+ s8 -> s1 [label="114"];
+ s8 -> s1 [label="115"];
+ s8 -> s1 [label="116"];
+ s8 -> s1 [label="117"];
+ s8 -> s1 [label="118"];
+ s8 -> s1 [label="119"];
+ s8 -> s1 [label="120"];
+ s8 -> s1 [label="121"];
+ s8 -> s1 [label="122"];
+ s8 -> s1 [label="123"];
+ s8 -> s1 [label="124"];
+ s8 -> s1 [label="125"];
+ s8 -> s1 [label="126"];
+ s8 -> s1 [label="127"];
+ s8 -> s4 [label="-128"];
+ s8 -> s4 [label="-127"];
+ s8 -> s4 [label="-126"];
+ s8 -> s4 [label="-125"];
+ s8 -> s4 [label="-124"];
+ s8 -> s4 [label="-123"];
+ s8 -> s4 [label="-122"];
+ s8 -> s4 [label="-121"];
+ s8 -> s4 [label="-120"];
+ s8 -> s4 [label="-119"];
+ s8 -> s4 [label="-118"];
+ s8 -> s4 [label="-117"];
+ s8 -> s4 [label="-116"];
+ s8 -> s4 [label="-115"];
+ s8 -> s4 [label="-114"];
+ s8 -> s4 [label="-113"];
+ s8 -> s4 [label="-112"];
+ s8 -> s4 [label="-111"];
+ s8 -> s4 [label="-110"];
+ s8 -> s4 [label="-109"];
+ s8 -> s4 [label="-108"];
+ s8 -> s4 [label="-107"];
+ s8 -> s4 [label="-106"];
+ s8 -> s4 [label="-105"];
+ s8 -> s4 [label="-104"];
+ s8 -> s4 [label="-103"];
+ s8 -> s4 [label="-102"];
+ s8 -> s4 [label="-101"];
+ s8 -> s4 [label="-100"];
+ s8 -> s4 [label="-99"];
+ s8 -> s4 [label="-98"];
+ s8 -> s4 [label="-97"];
+ s8 -> s4 [label="-96"];
+ s8 -> s4 [label="-95"];
+ s8 -> s4 [label="-94"];
+ s8 -> s4 [label="-93"];
+ s8 -> s4 [label="-92"];
+ s8 -> s4 [label="-91"];
+ s8 -> s4 [label="-90"];
+ s8 -> s4 [label="-89"];
+ s8 -> s4 [label="-88"];
+ s8 -> s4 [label="-87"];
+ s8 -> s4 [label="-86"];
+ s8 -> s4 [label="-85"];
+ s8 -> s4 [label="-84"];
+ s8 -> s4 [label="-83"];
+ s8 -> s4 [label="-82"];
+ s8 -> s4 [label="-81"];
+ s8 -> s4 [label="-80"];
+ s8 -> s4 [label="-79"];
+ s8 -> s4 [label="-78"];
+ s8 -> s4 [label="-77"];
+ s8 -> s4 [label="-76"];
+ s8 -> s4 [label="-75"];
+ s8 -> s4 [label="-74"];
+ s8 -> s4 [label="-73"];
+ s8 -> s4 [label="-72"];
+ s8 -> s4 [label="-71"];
+ s8 -> s4 [label="-70"];
+ s8 -> s4 [label="-69"];
+ s8 -> s4 [label="-68"];
+ s8 -> s4 [label="-67"];
+ s8 -> s4 [label="-66"];
+ s8 -> s4 [label="-65"];
+ s8 -> s1 [label="-64"];
+ s8 -> s1 [label="-63"];
+ s8 -> s1 [label="-62"];
+ s8 -> s1 [label="-61"];
+ s8 -> s1 [label="-60"];
+ s8 -> s1 [label="-59"];
+ s8 -> s1 [label="-58"];
+ s8 -> s1 [label="-57"];
+ s8 -> s1 [label="-56"];
+ s8 -> s1 [label="-55"];
+ s8 -> s1 [label="-54"];
+ s8 -> s1 [label="-53"];
+ s8 -> s1 [label="-52"];
+ s8 -> s1 [label="-51"];
+ s8 -> s1 [label="-50"];
+ s8 -> s1 [label="-49"];
+ s8 -> s1 [label="-48"];
+ s8 -> s1 [label="-47"];
+ s8 -> s1 [label="-46"];
+ s8 -> s1 [label="-45"];
+ s8 -> s1 [label="-44"];
+ s8 -> s1 [label="-43"];
+ s8 -> s1 [label="-42"];
+ s8 -> s1 [label="-41"];
+ s8 -> s1 [label="-40"];
+ s8 -> s1 [label="-39"];
+ s8 -> s1 [label="-38"];
+ s8 -> s1 [label="-37"];
+ s8 -> s1 [label="-36"];
+ s8 -> s1 [label="-35"];
+ s8 -> s1 [label="-34"];
+ s8 -> s1 [label="-33"];
+ s8 -> s1 [label="-32"];
+ s8 -> s1 [label="-31"];
+ s8 -> s1 [label="-30"];
+ s8 -> s1 [label="-29"];
+ s8 -> s1 [label="-28"];
+ s8 -> s1 [label="-27"];
+ s8 -> s1 [label="-26"];
+ s8 -> s1 [label="-25"];
+ s8 -> s1 [label="-24"];
+ s8 -> s1 [label="-23"];
+ s8 -> s1 [label="-22"];
+ s8 -> s1 [label="-21"];
+ s8 -> s1 [label="-20"];
+ s8 -> s1 [label="-19"];
+ s8 -> s1 [label="-18"];
+ s8 -> s1 [label="-17"];
+ s8 -> s1 [label="-16"];
+ s8 -> s1 [label="-15"];
+ s8 -> s1 [label="-14"];
+ s8 -> s1 [label="-13"];
+ s8 -> s1 [label="-12"];
+ s8 -> s1 [label="-11"];
+ s8 -> s1 [label="-10"];
+ s8 -> s1 [label="-9"];
+ s8 -> s1 [label="-8"];
+ s8 -> s1 [label="-7"];
+ s8 -> s1 [label="-6"];
+ s8 -> s1 [label="-5"];
+ s8 -> s1 [label="-4"];
+ s8 -> s1 [label="-3"];
+ s8 -> s1 [label="-2"];
+ s8 -> s1 [label="-1"];
+
+__start0 [label="" shape="none" width="0" height="0"];
+__start0 -> s0;
+
+}
diff --git a/run.sh b/run.sh
new file mode 100755
index 0000000..3b23c30
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+set -euxo pipefail
+
+mvn package
+
+time java -cp target/utf8learner-1.0.0-SNAPSHOT.jar nl.ou.utf8learner.Main
diff --git a/src/main/java/nl/ou/utf8learner/Main.java b/src/main/java/nl/ou/utf8learner/Main.java
new file mode 100644
index 0000000..4c3b69f
--- /dev/null
+++ b/src/main/java/nl/ou/utf8learner/Main.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2025 Joshua Moerman, Open Universiteit
+ * SPDX-License-Identifier: EUPL-1.2
+ */
+
+package nl.ou.utf8learner;
+
+import java.io.IOException;
+import java.util.Collection;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import com.google.common.collect.Lists;
+import de.learnlib.acex.AcexAnalyzers;
+import de.learnlib.algorithm.LearningAlgorithm.DFALearner;
+import de.learnlib.algorithm.ttt.dfa.TTTLearnerDFA;
+import de.learnlib.oracle.EquivalenceOracle;
+import de.learnlib.oracle.EquivalenceOracle.DFAEquivalenceOracle;
+import de.learnlib.oracle.MembershipOracle.DFAMembershipOracle;
+import de.learnlib.oracle.equivalence.DFAEQOracleChain;
+import de.learnlib.oracle.equivalence.DFARandomWpMethodEQOracle;
+import de.learnlib.oracle.equivalence.DFAWMethodEQOracle;
+import de.learnlib.query.DefaultQuery;
+import de.learnlib.query.Query;
+import de.learnlib.util.Experiment.DFAExperiment;
+import net.automatalib.alphabet.impl.AbstractAlphabet;
+import net.automatalib.automaton.fsa.DFA;
+import net.automatalib.serialization.dot.GraphDOT;
+import net.automatalib.word.Word;
+
+public class Main {
+ public static void main(String[] args) throws IOException {
+ // Basic set-up. Normally one would use a Cache, but in this case
+ // the queries are much faster than the lookup. So no cache here.
+ ByteAlphabet alph = new ByteAlphabet();
+ DFAMembershipOracle mqOracle = new UTF8MembershipOracle();
+
+ // We run three equivalence oracles in sequence: from fast to exhaustive.
+ // It is really only the W-method in the end which makes a lot of queries.
+ // But we want at least some guarantee of completeness :-).
+ DFAEquivalenceOracle fixedTestSuite = new DFASampleSetEQOracle<>(getTestSuite(), mqOracle);
+ DFAEquivalenceOracle randomWpMethod = new DFARandomWpMethodEQOracle<>(mqOracle, 0, 8, 5000);
+ DFAEquivalenceOracle wmethod = new DFAWMethodEQOracle<>(mqOracle, 1);
+ DFAEquivalenceOracle eqOracle = new DFAEQOracleChain<>(fixedTestSuite, randomWpMethod, wmethod);
+
+ // TTT is always a good default
+ DFALearner learner = new TTTLearnerDFA<>(alph, mqOracle, AcexAnalyzers.BINARY_SEARCH_BWD);
+ DFAExperiment experiment = new DFAExperiment<>(learner, eqOracle, alph);
+ experiment.run();
+
+ // Output result!
+ System.err.println("");
+ System.out.println(experiment.getRounds().getSummary());
+ GraphDOT.write(experiment.getFinalHypothesis(), alph, System.out);
+ }
+
+ // Implementing the membership oracle directly. We obtain a word of bytes,
+ // and assemble them into a byte array, which is then passed to the
+ // underlying implementation.
+ public static class UTF8MembershipOracle implements DFAMembershipOracle {
+ private long count = 0;
+
+ @Override
+ public void processQuery(Query query) {
+ count++;
+ System.err.print("\r" + count);
+
+ Word input = query.getInput();
+ byte[] bytearray = new byte[input.length()];
+
+ int i = 0;
+ for (Byte b : input) {
+ bytearray[i] = b;
+ i++;
+ }
+
+ boolean acc = UTF8SUL.accepts(bytearray);
+ query.answer(acc);
+ }
+
+ @Override
+ public void processQueries(Collection extends Query> queries) {
+ for (Query query : queries) {
+ processQuery(query);
+ }
+ }
+ }
+
+ // Alphabet of all 256 bytes. Implemented directly for efficiency.
+ public static class ByteAlphabet extends AbstractAlphabet {
+ @Override
+ public Byte getSymbol(int index) {
+ return (byte) index;
+ }
+
+ @Override
+ public int getSymbolIndex(Byte symbol) {
+ if (symbol >= 0) {
+ return (int) symbol;
+ } else {
+ return (int) (symbol + 256);
+ }
+ }
+
+ @Override
+ public boolean containsSymbol(Byte symbol) {
+ return true;
+ }
+
+ @Override
+ public int size() {
+ return 256;
+ }
+ }
+
+ // For some reason the SampleSetEQOracle of LearnLib was not easy to
+ // use with DFAs. So I made my own.
+ public static class DFASampleSetEQOracle implements EquivalenceOracle.DFAEquivalenceOracle {
+ final private Collection> testSuite;
+ final private DFAMembershipOracle truth;
+
+ public DFASampleSetEQOracle(Collection> testSuite, DFAMembershipOracle truth) {
+ this.testSuite = testSuite;
+ this.truth = truth;
+ }
+
+ @Override
+ public @Nullable DefaultQuery findCounterExample(DFA, I> hypothesis,
+ Collection extends I> alphabet) {
+ for (Word test : testSuite) {
+ DefaultQuery query = new DefaultQuery<>(test);
+ truth.processQuery(query);
+
+ if (hypothesis.accepts(test) != query.getOutput()) {
+ return query;
+ }
+ }
+
+ return null;
+ }
+ }
+
+ // This should cover all states, I think.
+ public static Collection> getTestSuite() {
+ return Lists.newArrayList(
+ Word.fromSymbols((byte) -15, (byte) 64),
+ Word.fromSymbols((byte) -62, (byte) -65),
+ Word.fromSymbols((byte) -33, (byte) 127),
+ Word.fromSymbols((byte) -32, (byte) 0),
+ Word.fromSymbols((byte) -12, (byte) -112),
+ Word.fromSymbols((byte) -18, (byte) -100, (byte) 0),
+ Word.fromSymbols((byte) -32, (byte) -70, (byte) -120),
+ Word.fromSymbols((byte) -19, (byte) -97, (byte) -1),
+ Word.fromSymbols((byte) -31, (byte) -128, (byte) -100),
+ Word.fromSymbols((byte) -31, (byte) -128, (byte) 127),
+ Word.fromSymbols((byte) -16, (byte) -112, (byte) -64),
+ Word.fromSymbols((byte) -18, (byte) -100, (byte) -100),
+ Word.fromSymbols((byte) -19, (byte) -97, (byte) -90),
+ Word.fromSymbols((byte) 0xEF, (byte) 0xBB, (byte) 0xBF),
+ Word.fromSymbols((byte) -16, (byte) -112, (byte) -128, (byte) -128),
+ Word.fromSymbols((byte) -12, (byte) -120, (byte) -65, (byte) -80),
+ Word.fromSymbols((byte) -15, (byte) -65, (byte) -65, (byte) -65),
+ Word.fromSymbols((byte) -15, (byte) -128, (byte) -128, (byte) -128));
+ }
+}
diff --git a/src/main/java/nl/ou/utf8learner/UTF8SUL.java b/src/main/java/nl/ou/utf8learner/UTF8SUL.java
new file mode 100644
index 0000000..6a7022f
--- /dev/null
+++ b/src/main/java/nl/ou/utf8learner/UTF8SUL.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2025 Joshua Moerman, Open Universiteit
+ * SPDX-License-Identifier: EUPL-1.2
+ */
+
+package nl.ou.utf8learner;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.CharacterCodingException;
+
+public class UTF8SUL {
+ public static boolean accepts(byte[] data) {
+ CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
+ decoder.onMalformedInput(CodingErrorAction.REPORT);
+ decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+
+ try {
+ decoder.decode(ByteBuffer.wrap(data));
+ return true;
+ } catch (CharacterCodingException e) {
+ return false;
+ }
+ }
+}
diff --git a/src/main/java/nl/ou/utf8learner/UTF8SULApache.java b/src/main/java/nl/ou/utf8learner/UTF8SULApache.java
new file mode 100644
index 0000000..17bbf84
--- /dev/null
+++ b/src/main/java/nl/ou/utf8learner/UTF8SULApache.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Joshua Moerman, Open Universiteit
+ * SPDX-License-Identifier: EUPL-1.2
+ */
+
+package nl.ou.utf8learner;
+
+import java.util.Arrays;
+import org.apache.commons.codec.binary.StringUtils;
+
+public class UTF8SULApache {
+ public static boolean accepts(byte[] data) {
+ try {
+ String s = StringUtils.newStringUtf8(data);
+ return Arrays.equals(data, StringUtils.getBytesUtf8(s));
+ } catch (Exception e) {
+ return false;
+ }
+ }
+}
diff --git a/src/main/java/nl/ou/utf8learner/UTF8SULGuava.java b/src/main/java/nl/ou/utf8learner/UTF8SULGuava.java
new file mode 100644
index 0000000..b78cea1
--- /dev/null
+++ b/src/main/java/nl/ou/utf8learner/UTF8SULGuava.java
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2025 Joshua Moerman, Open Universiteit
+ * SPDX-License-Identifier: EUPL-1.2
+ */
+
+package nl.ou.utf8learner;
+
+import com.google.common.base.Utf8;
+
+public class UTF8SULGuava {
+ public static boolean accepts(byte[] data) {
+ return Utf8.isWellFormed(data);
+ }
+}
diff --git a/src/main/java/nl/ou/utf8learner/UTF8SULICU4J.java b/src/main/java/nl/ou/utf8learner/UTF8SULICU4J.java
new file mode 100644
index 0000000..59c89ef
--- /dev/null
+++ b/src/main/java/nl/ou/utf8learner/UTF8SULICU4J.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2025 Joshua Moerman, Open Universiteit
+ * SPDX-License-Identifier: EUPL-1.2
+ */
+
+package nl.ou.utf8learner;
+
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
+
+public class UTF8SULICU4J {
+ public static boolean accepts(byte[] data) {
+ // The CharsetDetector is not a good validator, it accepts a certain
+ // amount of errors. And it doesn't always report short strings as
+ // valid UTF-8.
+ CharsetDetector detector = new CharsetDetector();
+ detector.setDeclaredEncoding("UTF-8");
+ detector.setText(data);
+
+ CharsetMatch[] matches = detector.detectAll();
+ for (CharsetMatch match : matches) {
+ // The confidence can be either 15, 25, 80 or 100.
+ if ("UTF-8".equalsIgnoreCase(match.getName()) && match.getConfidence() >= 100) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}