+++ /dev/null
-(15, 25)
-(5, 21)
-(1, 19)
-(7, 8)
-(6, 14)
-(2, 9)
-(11, 16)
-(1, 10)
-(14, 22)
-(2, 25)
-(7, 9)
-(8, 18)
-(6, 23)
-(4, 6)
-(2, 13)
-(9, 14)
-(12, 18)
-(0, 10)
-(2, 3)
-(6, 19)
-(1, 10)
-(8, 10)
-(0, 19)
-(10, 25)
-(19, 20)
-(2, 25)
-(10, 23)
-(3, 19)
-(17, 20)
-(3, 5)
-(8, 25)
-(19, 23)
-(2, 21)
-(16, 17)
-(1, 10)
-(2, 18)
-(8, 13)
-(3, 4)
-(1, 5)
-(1, 21)
-(11, 13)
-(4, 12)
-(0, 8)
-(3, 4)
-(1, 5)
-(4, 10)
-(1, 21)
-(5, 22)
-(1, 12)
-(10, 15)
-(4, 9)
-(5, 24)
-(8, 21)
-(3, 8)
-(1, 14)
-(14, 24)
-(8, 13)
-(1, 12)
-(3, 22)
-(13, 19)
-(0, 3)
-(1, 10)
-(12, 18)
-(5, 22)
-(4, 19)
-(5, 7)
-(10, 16)
-(0, 17)
-(9, 13)
-(3, 18)
-(6, 13)
-(0, 14)
-(19, 25)
-(2, 17)
-(4, 21)
-(3, 16)
-(10, 15)
-(11, 19)
-(2, 22)
-(3, 4)
-(9, 15)
-(11, 21)
-(2, 18)
-(8, 19)
-(8, 23)
-(2, 25)
-(10, 18)
-(2, 22)
-(7, 25)
-(6, 18)
-(22, 25)
-(7, 11)
-(2, 12)
-(0, 18)
-(9, 11)
-(12, 19)
-(2, 10)
-(22, 24)
-(10, 15)
-(24, 25)
-(20, 22)
-(19, 23)
-(8, 10)
-(0, 19)
-(16, 22)
-(15, 21)
-(1, 21)
-(13, 22)
-(12, 16)
-(15, 17)
-(2, 10)
-(0, 18)
-(6, 10)
-(21, 23)
-(9, 15)
-(2, 7)
-(9, 23)
-(0, 6)
-(10, 24)
-(7, 21)
-(5, 23)
-(14, 24)
-(1, 10)
-(6, 7)
-(5, 21)
-(4, 6)
-(9, 10)
-(1, 20)
-(2, 23)
-(1, 25)
-(0, 20)
-(9, 16)
-(13, 20)
-(2, 25)
-(1, 17)
-(16, 24)
-(9, 10)
-(19, 25)
-(3, 16)
-(20, 21)
-(13, 18)
-(14, 24)
-(1, 23)
-(0, 17)
-(0, 10)
-(17, 19)
-(9, 23)
-(1, 15)
-(12, 25)
-(13, 24)
-(0, 3)
-(2, 19)
-(23, 24)
-(4, 10)
-(3, 8)
-(4, 7)
-(2, 9)
-(20, 23)
-(5, 7)
-(2, 18)
-(9, 11)
-(0, 3)
-(2, 12)
-(7, 24)
-(0, 16)
-(3, 9)
-(10, 18)
-(6, 7)
-(9, 20)
-(3, 21)
-(15, 16)
-(16, 23)
-(5, 7)
-(3, 8)
-(0, 9)
-(8, 12)
-(7, 15)
-(5, 9)
-(0, 6)
-(16, 19)
-(9, 18)
-(12, 21)
-(1, 6)
-(16, 23)
-(0, 3)
-(16, 19)
-(3, 14)
-(0, 18)
-(6, 20)
-(21, 24)
-(1, 17)
-(2, 12)
-(12, 13)
-(2, 8)
-(17, 24)
-(5, 20)
-(1, 16)
-(3, 19)
-(8, 22)
-(19, 20)
-(2, 10)
-(12, 25)
-(4, 8)
-(2, 7)
-(13, 25)
-(9, 20)
-(20, 21)
-(5, 8)
-(4, 10)
-(0, 9)
-(5, 14)
-(6, 9)
-(2, 20)
-(0, 16)
-(5, 10)
-(14, 20)
-(0, 11)
-(1, 16)
-(3, 9)
-(3, 6)
-(2, 16)
-(0, 12)
-(11, 22)
-(2, 25)
-(11, 23)
-(0, 17)
-(12, 18)
-(3, 14)
-(1, 22)
-(8, 25)
-(5, 12)
-(0, 24)
-(15, 23)
-(3, 21)
-(2, 22)
-(0, 12)
-(7, 23)
-(1, 25)
-(5, 18)
-(11, 24)
-(3, 6)
-(12, 18)
-(7, 19)
-(5, 20)
-(10, 23)
-(3, 4)
-(3, 21)
-(4, 19)
-(7, 15)
-(0, 10)
-(20, 22)
-(14, 23)
-(21, 24)
-(3, 20)
-(8, 14)
-(6, 23)
-(10, 18)
-(4, 20)
-(6, 9)
-(8, 13)
-(16, 23)
-(11, 14)
-(13, 17)
-(8, 10)
-(16, 19)
-(11, 15)
-(9, 10)
-(13, 14)
-(17, 25)
-(9, 16)
-(6, 17)
-(0, 14)
-(10, 23)
-(11, 25)
-(0, 4)
-(3, 23)
-(20, 25)
-(14, 24)
-(6, 8)
-(10, 22)
-(17, 23)
-(5, 6)
-(14, 16)
-(0, 10)
-(8, 12)
-(10, 13)
-(2, 12)
-(4, 6)
-(1, 17)
-(14, 21)
-(6, 15)
-(2, 3)
-(0, 10)
-(2, 22)
-(0, 8)
-(3, 18)
-(10, 13)
-(2, 15)
-(3, 19)
-(8, 17)
-(0, 18)
-(10, 23)
-(12, 13)
-(17, 20)
-(5, 13)
-(3, 25)
-(0, 9)
-(6, 12)
-(15, 16)
-(14, 23)
-(5, 14)
-(15, 21)
-(1, 23)
-(6, 24)
-(13, 18)
-(10, 23)
-(13, 22)
-(4, 24)
-(3, 14)
-(1, 6)
-(5, 6)
-(13, 25)
-(6, 15)
-(5, 21)
-(13, 19)
-(9, 25)
-(13, 16)
-(9, 22)
-(18, 25)
-(6, 22)
-(10, 25)
-(9, 24)
-(3, 13)
-(6, 11)
-(16, 22)
-(10, 18)
-(3, 17)
-(15, 24)
-(8, 25)
-(9, 23)
-(2, 23)
-(10, 12)
-(13, 17)
-(8, 15)
-(0, 25)
-(19, 24)
-(16, 24)
-(12, 15)
-(13, 25)
-(7, 10)
-(3, 17)
-(0, 2)
-(7, 11)
-(16, 19)
-(5, 10)
-(12, 17)
-(2, 24)
-(14, 25)
-(4, 10)
-(2, 22)
-(5, 8)
-(1, 14)
-(5, 18)
-(12, 14)
-(8, 20)
-(4, 15)
-(10, 21)
-(18, 19)
-(10, 23)
-(8, 16)
-(20, 22)
-(5, 7)
-(7, 9)
-(0, 22)
-(8, 11)
-(19, 20)
-(4, 16)
-(11, 20)
-(4, 17)
-(9, 21)
-(8, 15)
-(6, 22)
-(3, 16)
-(1, 19)
-(0, 19)
-(5, 6)
-(7, 16)
-(1, 24)
-(8, 10)
-(8, 14)
-(3, 10)
-(7, 11)
-(2, 5)
-(12, 19)
-(6, 18)
-(13, 24)
-(10, 13)
-(1, 3)
-(12, 16)
-(6, 9)
-(19, 23)
-(14, 17)
-(4, 24)
-(3, 20)
-(15, 16)
-(1, 7)
-(11, 12)
-(0, 24)
-(10, 18)
-(2, 13)
-(12, 22)
-(0, 17)
-(4, 10)
-(15, 25)
-(10, 23)
-(13, 15)
-(1, 25)
-(4, 17)
-(13, 18)
-(2, 10)
-(21, 25)
-(4, 14)
-(1, 11)
-(0, 4)
-(14, 19)
-(8, 11)
-(9, 18)
-(1, 15)
-(13, 18)
-(5, 11)
-(2, 8)
-(3, 13)
-(5, 16)
-(15, 18)
-(3, 23)
-(7, 18)
-(13, 17)
-(0, 15)
-(5, 9)
-(5, 15)
-(1, 23)
-(18, 20)
-(17, 24)
-(6, 13)
-(12, 15)
-(5, 14)
-(20, 23)
-(1, 21)
-(16, 17)
-(20, 24)
-(16, 23)
-(10, 17)
-(7, 14)
-(11, 16)
-(7, 23)
-(24, 25)
-(10, 21)
-(22, 23)
-(10, 18)
-(4, 16)
-(17, 21)
-(15, 22)
-(18, 19)
-(13, 21)
-(16, 20)
-(15, 23)
-(21, 24)
-(14, 16)
-(3, 13)
-(5, 20)
-(17, 19)
-(7, 22)
-(9, 21)
-(7, 23)
-(2, 13)
-(14, 25)
-(5, 24)
-(3, 8)
-(6, 16)
-(0, 6)
-(3, 7)
-(13, 22)
-(14, 18)
-(3, 12)
-(4, 6)
-(0, 8)
-(6, 9)
-(7, 8)
-(1, 3)
-(4, 25)
-(0, 20)
-(17, 20)
-(8, 18)
-(5, 6)
-(10, 25)
-(8, 15)
-(6, 23)
-(10, 21)
-(4, 5)
-(14, 18)
-(14, 20)
-(11, 21)
-(6, 24)
-(4, 18)
-(3, 4)
-(7, 24)
-(6, 17)
-(17, 19)
-(4, 25)
-(18, 24)
-(7, 10)
-(6, 12)
-(10, 18)
-(5, 19)
-(6, 23)
-(12, 16)
-(0, 17)
-(4, 14)
-(3, 19)
-(9, 12)
-(11, 23)
-(6, 21)
-(1, 17)
-(16, 22)
-(1, 24)
-(5, 12)
-(0, 9)
-(19, 21)
-(6, 8)
-(17, 24)
-(5, 9)
-(2, 12)
-(1, 15)
-(17, 22)
-(20, 24)
-(2, 23)
-(14, 15)
-(1, 13)
-(3, 20)
-(4, 24)
-(2, 23)
-(0, 1)
-(13, 25)
-(10, 17)
-(7, 10)
-(20, 24)
-(13, 22)
-(1, 9)
-(0, 3)
-(0, 20)
-(18, 24)
-(22, 23)
-(5, 7)
-(10, 11)
-(2, 11)
-(8, 24)
-(14, 20)
-(7, 12)
-(0, 25)
-(4, 18)
-(2, 3)
-(23, 25)
-(0, 15)
-(14, 21)
-(16, 18)
-(13, 24)
-(6, 12)
-(0, 21)
-(7, 23)
-(2, 14)
-(10, 24)
-(6, 17)
-(3, 22)
-(9, 12)
-(15, 22)
-(11, 24)
-(6, 21)
-(3, 14)
-(0, 9)
-(10, 16)
-(5, 17)
-(6, 13)
-(22, 25)
-(2, 10)
-(8, 15)
-(4, 25)
-(13, 19)
-(8, 24)
-(10, 13)
-(4, 6)
-(3, 25)
-(0, 24)
-(18, 19)
-(8, 9)
-(8, 19)
-(18, 20)
-(7, 13)
-(5, 10)
-(17, 25)
-(6, 25)
-(20, 24)
-(16, 18)
-(12, 16)
-(2, 20)
-(15, 18)
-(5, 24)
-(4, 25)
-(9, 20)
-(3, 18)
-(8, 16)
-(2, 22)
-(2, 15)
-(7, 16)
-(11, 20)
-(1, 7)
-(0, 11)
-(2, 6)
-(11, 15)
-(2, 22)
-(0, 14)
-(1, 16)
-(1, 10)
-(16, 20)
-(14, 17)
-(6, 15)
-(4, 11)
-(0, 15)
-(5, 20)
-(12, 17)
-(1, 11)
-(10, 20)
-(5, 9)
-(12, 18)
-(17, 24)
-(15, 20)
-(4, 12)
-(14, 18)
-(5, 16)
-(14, 19)
-(5, 13)
-(8, 16)
-(1, 12)
-(18, 23)
-(10, 13)
-(5, 11)
-(9, 19)
-(8, 21)
-(14, 25)
-(12, 17)
-(0, 16)
-(23, 24)
-(15, 18)
-(6, 18)
-(16, 25)
-(15, 19)
-(10, 21)
-(0, 13)
-(5, 17)
-(18, 22)
-(11, 15)
-(0, 24)
-(7, 19)
-(5, 8)
-(2, 10)
-(10, 21)
-(23, 24)
-(0, 24)
-(11, 23)
-(2, 10)
-(0, 16)
-(6, 11)
-(2, 25)
-(10, 21)
-(12, 24)
-(10, 22)
-(1, 16)
-(12, 13)
-(4, 25)
-(0, 9)
-(12, 22)
-(19, 25)
-(10, 20)
-(7, 13)
-(1, 2)
-(16, 19)
-(2, 3)
-(0, 25)
-(4, 22)
-(6, 13)
-(13, 15)
-(0, 5)
-(6, 9)
-(22, 24)
-(1, 2)
-(8, 16)
-(12, 25)
-(7, 16)
-(8, 21)
-(13, 24)
-(3, 5)
-(9, 23)
-(3, 18)
-(0, 8)
-(9, 11)
-(2, 5)
-(10, 13)
-(6, 21)
-(15, 23)
-(9, 13)
-(15, 23)
-(1, 11)
-(8, 20)
-(3, 10)
-(4, 6)
-(14, 18)
-(8, 15)
-(1, 2)
-(0, 6)
-(10, 19)
-(20, 21)
-(20, 24)
-(21, 23)
-(10, 16)
-(6, 22)
-(23, 25)
-(5, 21)
-(8, 20)
-(14, 24)
-(8, 21)
-(6, 14)
-(10, 23)
-(4, 5)
-(4, 20)
-(6, 25)
-(5, 19)
-(10, 12)
-(8, 9)
-(1, 20)
-(9, 18)
-(11, 19)
-(0, 6)
-(8, 13)
-(7, 13)
-(17, 18)
-(20, 21)
-(3, 9)
-(6, 11)
-(2, 18)
-(4, 20)
-(7, 8)
-(13, 22)
-(12, 21)
-(3, 6)
-(6, 11)
-(2, 24)
-(12, 14)
-(20, 23)
-(5, 7)
-(2, 17)
-(5, 12)
-(3, 6)
-(0, 7)
-(8, 24)
-(18, 23)
-(15, 23)
-(7, 20)
-(1, 2)
-(8, 13)
-(22, 24)
-(17, 24)
-(1, 25)
-(16, 23)
-(8, 19)
-(17, 18)
-(20, 25)
-(14, 16)
-(0, 1)
-(9, 23)
-(3, 19)
-(22, 23)
-(19, 20)
-(24, 25)
-(9, 12)
-(6, 23)
-(2, 22)
-(17, 25)
-(8, 23)
-(1, 6)
-(19, 25)
-(2, 16)
-(14, 22)
-(0, 14)
-(6, 16)
-(4, 23)
-(1, 13)
-(21, 22)
-(17, 25)
-(8, 18)
-(6, 15)
-(1, 3)
-(7, 22)
-(14, 24)
-(1, 23)
-(7, 9)
-(10, 22)
-(19, 24)
-(1, 2)
-(3, 22)
-(5, 10)
-(3, 8)
-(5, 12)
-(11, 12)
-(12, 15)
-(10, 11)
-(10, 15)
-(0, 11)
-(10, 14)
-(5, 15)
-(11, 21)
-(0, 9)
-(8, 14)
-(6, 21)
-(5, 18)
-(11, 12)
-(0, 5)
-(4, 12)
-(18, 22)
-(11, 13)
-(3, 8)
-(3, 16)
-(10, 13)
-(12, 15)
-(5, 20)
-(12, 16)
-(8, 15)
-(20, 22)
-(4, 5)
-(1, 5)
-(14, 20)
-(6, 12)
-(3, 8)
-(4, 7)
-(10, 22)
-(5, 22)
-(2, 6)
-(9, 20)
-(0, 12)
-(8, 23)
-(10, 21)
-(1, 10)
-(7, 20)
-(7, 24)
-(1, 14)
-(14, 18)
-(2, 24)
-(1, 20)
-(7, 22)
-(9, 20)
-(1, 8)
-(2, 21)
-(18, 19)
-(7, 23)
-(16, 22)
-(1, 12)
-(13, 23)
-(9, 25)
-(5, 21)
-(12, 20)
-(2, 21)
-(13, 18)
-(20, 23)
-(5, 21)
-(16, 21)
-(5, 19)
-(10, 23)
-(16, 24)
-(4, 21)
-(5, 14)
-(14, 18)
-(22, 24)
-(0, 16)
-(7, 21)
-(14, 16)
-(8, 21)
-(1, 24)
-(0, 15)
-(16, 23)
-(2, 14)
-(21, 22)
-(15, 18)
-(12, 18)
-(3, 22)
-(8, 14)
-(5, 15)
-(2, 4)
-(3, 10)
-(1, 14)
-(4, 9)
-(13, 22)
-(6, 8)
-(18, 21)
-(11, 12)
-(16, 18)
-(12, 17)
-(4, 21)
-(0, 14)
-(9, 23)
-(10, 15)
-(0, 11)
-(14, 18)
-(7, 16)
-(12, 22)
-(5, 23)
-(3, 9)
-(14, 24)
-(10, 11)
-(5, 7)
-(6, 22)
-(0, 19)
-(16, 25)
-(1, 9)
-(5, 9)
-(14, 23)
-(6, 11)
-(0, 15)
-(1, 3)
-(20, 24)
-(1, 7)
-(14, 18)
-(20, 22)
-(11, 12)
-(0, 7)
-(18, 25)
-(9, 12)
-(6, 22)
-(2, 11)
-(13, 18)
-(16, 25)
-(0, 7)
-(1, 9)
-(10, 11)
-(18, 20)
-(13, 25)
-(11, 12)
-(7, 17)
-(0, 2)
-(10, 19)
-(7, 15)
-(8, 13)
-(0, 24)
-(5, 19)
-(22, 25)
-(4, 22)
-(18, 24)
-(8, 9)
-(2, 13)
-(14, 15)
-(7, 14)
-(13, 23)
-(16, 18)
-(14, 15)
-(2, 16)
-(6, 7)
-(22, 23)
-(22, 23)
-(1, 14)
-(6, 8)
-(15, 25)
-(6, 24)
-(17, 25)
-(8, 11)
-(15, 21)
-(4, 15)
-(10, 24)
-(17, 23)
-(7, 11)
-(13, 15)
-(6, 11)
-(17, 23)
-(7, 21)
-(3, 21)
-(4, 7)
-(12, 15)
-(4, 14)
-(6, 21)
-(9, 15)
-(12, 13)
-(3, 5)
-(19, 21)
-(4, 25)
-(3, 24)
-(6, 7)
-(5, 18)
-(9, 22)
-(14, 23)
-(5, 7)
-(14, 15)
-(16, 22)
-(20, 24)
-(2, 18)
-(0, 3)
-(0, 6)
-(21, 22)
-(18, 23)
-(3, 12)
-(9, 16)
-(5, 17)
-(14, 19)
-(11, 23)
-(14, 24)
-(19, 20)
-(12, 22)
-(7, 20)
-(5, 19)
-(17, 24)
-(0, 20)
-(5, 6)
-(4, 19)
-(7, 25)
-(10, 17)
-(1, 10)
-(4, 8)
-(3, 25)
-(7, 18)
-(8, 14)
-(5, 7)
-(22, 25)
-(3, 6)
-(4, 10)
-(3, 20)
-(0, 7)
-(4, 15)
-(16, 25)
-(2, 6)
-(3, 8)
-(0, 9)
-(7, 24)
-(16, 18)
-(17, 20)
-(17, 19)
-(1, 20)
-(22, 24)
-(0, 12)
-(12, 13)
-(2, 17)
-(3, 24)
-(20, 22)
-(0, 11)
-(4, 24)
-(10, 11)
-(14, 20)
-(1, 3)
-(6, 17)
-(3, 25)
-(6, 16)
-(1, 5)
-(0, 20)
-(2, 17)
-(4, 8)
-(19, 25)
-(3, 9)
-(2, 21)
-(8, 18)
-(0, 12)
-(4, 21)
-(2, 16)
-(15, 19)
-(3, 25)
-(10, 15)
-(8, 19)
-(9, 25)
-(11, 19)
-(7, 8)
-(10, 14)
-(3, 8)
-(2, 10)
-(13, 14)
-(5, 11)
-(6, 7)
-(6, 20)
-(3, 9)
-(11, 16)
-(7, 14)
-(5, 24)
-(17, 24)
-(0, 11)
-(20, 22)
-(10, 16)
-(6, 18)
-(11, 12)
-(8, 18)
-(14, 16)
-(17, 22)
-(1, 20)
-(5, 6)
-(8, 9)
-(17, 18)
-(10, 14)
-(16, 21)
-(6, 7)
-(5, 7)
-(4, 6)
-(11, 16)
-(2, 4)
-(10, 11)
-(6, 15)
-(7, 22)
-(15, 25)
-(7, 24)
-(13, 22)
-(2, 5)
-(5, 18)
-(2, 19)
-(1, 7)
-(4, 25)
-(2, 12)
-(4, 21)
-(7, 16)
-(9, 18)
-(1, 24)
-(13, 24)
-(7, 21)
-(14, 16)
-(21, 23)
-(8, 14)
-(6, 23)
-(14, 17)
-(8, 22)
-(23, 25)
-(6, 13)
-(12, 14)
-(11, 17)
-(20, 25)
-(16, 23)
-(13, 21)
-(11, 14)
-(9, 11)
-(16, 20)
-(15, 25)
-(0, 23)
-(11, 18)
-(0, 2)
-(16, 20)
-(9, 14)
-(9, 18)
-(2, 3)
-(0, 19)
-(8, 20)
-(3, 4)
-(0, 5)
-(4, 24)
-(3, 10)
-(4, 23)
-(3, 19)
-(10, 21)
-(1, 21)
-(3, 6)
-(2, 10)
-(6, 21)
-(2, 17)
-(3, 22)
-(1, 23)
-(1, 2)
-(3, 13)
-(0, 22)
-(14, 21)
-(7, 17)
-(21, 22)
-(13, 16)
-(14, 19)
-(2, 4)
-(1, 17)
-(6, 19)
-(21, 24)
-(15, 16)
-(1, 3)
-(4, 25)
-(8, 22)
-(5, 22)
-(19, 20)
-(14, 21)
-(13, 22)
-(0, 14)
-(11, 19)
-(5, 15)
-(13, 23)
-(6, 15)
-(19, 24)
-(17, 22)
-(10, 23)
-(7, 15)
-(13, 21)
-(8, 15)
-(10, 14)
-(7, 25)
-(4, 23)
-(9, 21)
-(13, 16)
-(2, 21)
-(5, 9)
-(4, 18)
-(15, 19)
-(0, 8)
-(15, 25)
-(13, 21)
-(5, 11)
-(0, 19)
-(4, 22)
-(8, 11)
-(7, 15)
-(14, 22)
-(5, 9)
-(13, 24)
-(6, 21)
-(3, 14)
-(4, 21)
-(1, 5)
-(20, 22)
-(9, 24)
-(5, 18)
-(9, 17)
-(0, 14)
-(4, 13)
-(1, 6)
-(1, 23)
-(3, 6)
-(13, 22)
-(5, 8)
-(5, 7)
-(13, 18)
-(1, 9)
-(3, 19)
-(11, 23)
-(13, 25)
-(1, 2)
-(0, 23)
-(11, 14)
-(0, 18)
-(13, 24)
-(8, 14)
-(13, 17)
-(0, 3)
-(4, 18)
-(6, 24)
-(6, 25)
-(12, 17)
-(18, 21)
-(4, 16)
-(13, 19)
-(15, 16)
-(17, 20)
-(0, 13)
-(9, 18)
-(4, 24)
-(21, 25)
-(5, 12)
-(15, 24)
-(18, 25)
-(3, 16)
-(1, 20)
-(7, 13)
-(4, 19)
-(7, 11)
-(4, 6)
-(1, 10)
-(10, 21)
-(7, 13)
-(1, 17)
-(2, 4)
-(10, 22)
-(2, 5)
-(7, 11)
-(12, 21)
-(7, 16)
-(17, 21)
-(10, 13)
-(1, 22)
-(1, 9)
-(13, 16)
-(3, 21)
-(17, 23)
-(1, 22)
-(15, 21)
-(10, 23)
-(12, 17)
-(5, 10)
-(2, 15)
-(11, 22)
-(17, 19)
-(0, 12)
-(1, 25)
-(9, 12)
-(19, 24)
-(2, 20)
-(17, 19)
-(2, 4)
-(8, 24)
-(3, 24)
-(9, 17)
-(19, 21)
-(3, 20)
-(16, 24)
-(9, 18)
-(9, 14)
-(3, 13)
-(1, 20)
-(1, 6)
-(14, 15)
-(16, 20)
-(8, 9)
-(9, 19)
-(16, 22)
-(15, 24)
-(12, 14)
-(7, 20)
-(8, 15)
-(14, 19)
-(3, 24)
-(12, 21)
-(16, 18)
-(9, 10)
-(6, 9)
-(2, 16)
-(12, 18)
-(20, 24)
-(11, 19)
-(0, 8)
-(5, 14)
-(4, 15)
-(14, 25)
-(7, 8)
-(5, 13)
-(0, 19)
-(0, 2)
-(23, 25)
-(14, 15)
-(13, 18)
-(19, 24)
-(20, 24)
-(5, 15)
-(0, 9)
-(12, 25)
-(8, 13)
-(3, 23)
-(2, 17)
-(1, 8)
-(2, 11)
-(14, 15)
-(5, 15)
-(2, 7)
-(14, 16)
-(5, 12)
-(14, 25)
-(15, 17)
-(0, 5)
-(15, 21)
-(12, 20)
-(17, 24)
-(6, 21)
-(12, 25)
-(9, 15)
-(15, 18)
-(21, 22)
-(6, 17)
-(0, 9)
-(20, 22)
-(4, 21)
-(6, 15)
-(9, 24)
-(0, 8)
-(5, 17)
-(7, 21)
-(1, 4)
-(17, 20)
-(11, 15)
-(1, 7)
-(14, 20)
-(12, 21)
-(0, 11)
-(2, 4)
-(7, 13)
-(2, 10)
-(5, 12)
-(1, 3)
-(14, 15)
-(12, 13)
-(10, 19)
-(2, 23)
-(0, 5)
-(1, 16)
-(7, 20)
-(15, 23)
-(12, 18)
-(10, 14)
-(16, 24)
-(6, 13)
-(0, 8)
-(17, 24)
-(1, 8)
-(3, 16)
-(9, 23)
-(12, 21)
-(7, 13)
-(15, 19)
-(1, 19)
-(12, 25)
-(13, 15)
-(18, 21)
-(5, 8)
-(4, 12)
-(0, 18)
-(1, 14)
-(15, 17)
-(5, 23)
-(7, 17)
-(8, 23)
-(0, 6)
-(13, 18)
-(4, 22)
-(14, 25)
-(6, 22)
-(13, 20)
-(1, 23)
-(11, 25)
-(0, 24)
-(5, 14)
-(11, 13)
-(2, 5)
-(18, 23)
-(6, 7)
-(16, 24)
-(16, 19)
-(0, 13)
-(2, 3)
-(9, 24)
-(4, 13)
-(15, 16)
-(17, 24)
-(0, 21)
-(19, 22)
-(0, 6)
-(4, 12)
-(9, 19)
-(13, 25)
-(1, 4)
-(15, 25)
-(9, 23)
-(12, 21)
-(17, 23)
-(3, 15)
-(9, 20)
-(2, 17)
-(9, 13)
-(15, 22)
-(0, 20)
-(14, 15)
-(3, 17)
-(15, 25)
-(3, 5)
-(14, 18)
-(2, 17)
-(10, 18)
-(2, 4)
-(0, 14)
-(3, 24)
-(15, 19)
-(7, 19)
-(22, 24)
-(15, 25)
-(5, 24)
-(7, 16)
-(12, 25)
-(4, 25)
-(16, 20)
-(7, 18)
-(1, 5)
-(4, 21)
-(7, 14)
-(20, 23)
-(8, 18)
-(9, 16)
-(3, 9)
-(10, 18)
-(8, 22)
-(13, 23)
-(7, 11)
-(9, 20)
-(7, 25)
-(10, 11)
-(3, 6)
-(15, 23)
-(2, 13)
-(0, 11)
-(21, 23)
-(3, 13)
-(8, 9)
-(12, 20)
-(15, 22)
-(9, 22)
-(15, 23)
-(16, 21)
-(7, 12)
-(0, 8)
-(1, 20)
-(5, 21)
-(7, 20)
-(10, 15)
-(23, 25)
-(8, 11)
-(5, 6)
-(7, 15)
-(23, 24)
-(14, 25)
-(8, 12)
-(2, 5)
-(0, 6)
-(12, 13)
-(8, 24)
-(14, 17)
-(3, 23)
-(8, 14)
-(4, 13)
-(5, 10)
-(24, 25)
-(6, 21)
-(0, 16)
-(19, 21)
-(10, 20)
-(5, 22)
-(1, 6)
-(16, 18)
-(9, 14)
-(4, 15)
-(2, 21)
-(5, 12)
-(6, 23)
-(0, 20)
-(1, 19)
-(3, 22)
-(2, 14)
-(10, 22)
-(0, 15)
-(8, 21)
-(1, 24)
-(4, 22)
-(6, 15)
-(10, 11)
-(18, 21)
-(23, 24)
-(10, 25)
-(8, 22)
-(1, 11)
-(8, 18)
-(1, 7)
-(3, 11)
-(1, 4)
-(3, 16)
-(7, 15)
-(7, 8)
-(1, 2)
-(16, 19)
-(3, 25)
-(19, 24)
-(6, 8)
-(1, 9)
-(3, 18)
-(10, 16)
-(3, 14)
-(10, 15)
-(12, 16)
-(9, 13)
-(18, 25)
-(11, 24)
-(0, 10)
-(11, 14)
-(3, 12)
-(18, 21)
-(16, 19)
-(19, 23)
-(0, 16)
-(7, 14)
-(8, 10)
-(8, 20)
-(14, 25)
-(1, 23)
-(10, 17)
-(16, 19)
-(1, 5)
-(7, 19)
-(13, 17)
-(0, 16)
-(2, 5)
-(13, 19)
-(1, 20)
-(4, 5)
-(1, 9)
-(2, 23)
-(15, 23)
-(5, 22)
-(5, 11)
-(15, 22)
-(0, 11)
-(5, 23)
-(20, 22)
-(3, 22)
-(8, 23)
-(3, 6)
-(4, 23)
-(4, 7)
-(17, 23)
-(6, 9)
-(7, 10)
-(17, 22)
-(12, 23)
-(4, 6)
-(1, 12)
-(17, 24)
-(5, 10)
-(7, 11)
-(16, 23)
-(5, 8)
-(1, 11)
-(10, 13)
-(3, 17)
-(7, 18)
-(8, 13)
-(6, 11)
-(0, 18)
-(10, 22)
-(3, 24)
-(7, 21)
-(5, 23)
-(4, 22)
-(8, 18)
-(0, 9)
-(3, 15)
-(7, 20)
-(10, 13)
-(5, 19)
-(10, 12)
-(9, 25)
-(2, 20)
-(4, 7)
-(1, 5)
-(13, 22)
-(5, 19)
-(12, 20)
-(1, 21)
-(16, 21)
-(1, 7)
-(5, 23)
-(14, 19)
-(18, 21)
-(11, 14)
-(9, 18)
-(8, 11)
-(14, 21)
-(11, 19)
-(1, 21)
-(0, 18)
-(9, 23)
-(7, 18)
-(1, 3)
-(2, 19)
-(16, 23)
-(3, 5)
-(7, 15)
-(9, 23)
-(1, 8)
-(6, 16)
-(4, 15)
-(13, 23)
-(0, 3)
-(4, 21)
-(3, 22)
-(0, 17)
-(6, 23)
-(15, 16)
-(12, 22)
-(8, 15)
-(0, 13)
-(14, 16)
-(7, 23)
-(2, 23)
-(14, 24)
-(3, 12)
-(7, 25)
-(16, 21)
-(4, 7)
-(1, 25)
-(2, 10)
-(0, 23)
-(2, 20)
-(7, 22)
-(4, 9)
-(13, 25)
-(0, 14)
-(0, 24)
-(7, 18)
-(4, 12)
-(20, 21)
-(9, 23)
-(1, 14)
-(0, 6)
-(24, 25)
-(9, 13)
-(11, 20)
-(16, 21)
-(1, 22)
-(0, 3)
-(10, 11)
-(20, 24)
-(21, 23)
-(7, 16)
-(8, 13)
-(1, 25)
-(10, 18)
-(3, 16)
-(2, 11)
-(5, 21)
-(21, 24)
-(10, 17)
-(3, 4)
-(11, 14)
-(6, 18)
-(12, 18)
-(3, 22)
-(6, 7)
-(0, 14)
-(15, 24)
-(6, 9)
-(12, 22)
-(18, 19)
-(0, 21)
-(3, 7)
-(14, 18)
-(19, 20)
-(3, 15)
-(9, 22)
-(5, 18)
-(14, 23)
-(2, 5)
-(12, 18)
-(9, 14)
-(17, 23)
-(5, 21)
-(16, 17)
-(9, 20)
-(2, 6)
-(19, 20)
-(10, 16)
-(18, 21)
-(9, 25)
-(5, 13)
-(13, 14)
-(7, 25)
-(2, 16)
-(11, 21)
-(19, 22)
-(12, 22)
-(5, 19)
-(0, 13)
-(7, 21)
-(10, 12)
-(0, 18)
-(13, 17)
-(1, 19)
-(22, 24)
-(17, 19)
-(18, 25)
-(11, 12)
-(10, 15)
-(0, 21)
-(1, 8)
-(12, 13)
-(17, 21)
-(14, 25)
-(5, 15)
-(0, 12)
-(7, 21)
-(8, 15)
-(14, 18)
-(6, 25)
-(20, 25)
-(1, 8)
-(0, 24)
-(14, 16)
-(8, 15)
-(1, 17)
-(5, 24)
-(0, 10)
-(10, 22)
-(1, 25)
-(8, 12)
-(4, 17)
-(12, 13)
-(21, 25)
-(2, 8)
-(23, 25)
-(0, 8)
-(2, 6)
-(13, 15)
-(16, 21)
-(15, 17)
-(6, 11)
-(21, 24)
-(3, 13)
-(16, 20)
-(2, 5)
-(3, 7)
-(17, 20)
-(6, 22)
-(4, 13)
-(14, 15)
-(5, 9)
-(2, 25)
-(15, 19)
-(9, 10)
-(5, 24)
-(14, 22)
-(3, 20)
-(0, 6)
-(12, 15)
-(0, 17)
-(4, 14)
-(3, 5)
-(19, 24)
-(2, 22)
-(22, 25)
-(16, 19)
-(7, 12)
-(13, 15)
-(12, 20)
-(8, 22)
-(20, 23)
-(8, 10)
-(1, 22)
-(4, 12)
-(10, 20)
-(3, 22)
-(4, 11)
-(4, 9)
-(8, 20)
-(2, 11)
-(11, 18)
-(5, 9)
-(9, 23)
-(5, 14)
-(3, 11)
-(5, 20)
-(4, 11)
-(23, 24)
-(7, 23)
-(21, 24)
-(12, 23)
-(7, 18)
-(9, 24)
-(0, 21)
-(14, 24)
-(20, 21)
-(0, 2)
-(18, 25)
-(11, 14)
-(0, 6)
-(16, 24)
-(6, 14)
-(10, 11)
-(6, 9)
-(10, 19)
-(7, 11)
-(11, 18)
-(2, 19)
-(7, 12)
-(10, 16)
-(7, 25)
-(5, 19)
-(11, 17)
-(10, 21)
-(16, 18)
-(4, 12)
-(19, 24)
-(4, 22)
-(9, 17)
-(19, 24)
-(22, 25)
-(3, 9)
-(4, 14)
-(8, 17)
-(1, 8)
-(7, 25)
-(17, 23)
-(11, 19)
-(6, 23)
-(15, 19)
-(8, 18)
-(12, 25)
-(0, 11)
-(8, 17)
-(22, 25)
-(9, 18)
-(0, 10)
-(19, 21)
-(14, 22)
-(1, 10)
-(5, 19)
-(4, 18)
-(0, 2)
-(9, 25)
-(6, 18)
-(3, 5)
-(9, 21)
-(7, 19)
-(17, 25)
-(0, 13)
-(13, 24)
-(3, 19)
-(9, 21)
-(2, 5)
-(14, 18)
-(14, 22)
-(8, 13)
-(2, 9)
-(5, 23)
-(0, 24)
-(3, 4)
-(5, 9)
-(20, 24)
-(14, 18)
-(0, 15)
-(13, 17)
-(2, 13)
-(12, 20)
-(4, 14)
-(15, 21)
-(0, 8)
-(16, 18)
-(1, 16)
-(4, 24)
-(21, 25)
-(0, 17)
-(3, 20)
-(11, 12)
-(7, 18)
-(17, 22)
-(10, 18)
-(4, 19)
-(5, 21)
-(7, 15)
-(8, 25)
-(14, 24)
-(11, 23)
-(0, 8)
-(5, 10)
-(12, 22)
-(11, 21)
-(9, 25)
-(14, 18)
-(4, 21)
-(0, 6)
-(7, 11)
-(10, 16)
-(14, 17)
-(3, 12)
-(7, 20)
-(11, 24)
-(2, 14)
-(17, 23)
-(4, 19)
-(0, 23)
-(2, 11)
-(5, 14)
-(9, 24)
-(10, 17)
-(3, 4)
-(3, 12)
-(5, 19)
-(4, 18)
-(8, 9)
-(6, 24)
-(2, 16)
-(1, 19)
-(4, 9)
-(13, 18)
-(12, 22)
-(3, 25)
-(8, 14)
-(5, 19)
-(3, 10)
-(2, 5)
-(1, 19)
-(1, 20)
-(0, 19)
-(19, 22)
-(9, 20)
-(1, 21)
-(9, 12)
-(17, 19)
-(0, 21)
-(9, 22)
-(0, 1)
-(15, 21)
-(13, 17)
-(12, 20)
-(11, 15)
-(20, 24)
-(0, 25)
-(9, 12)
-(22, 25)
-(0, 8)
-(11, 16)
-(7, 8)
-(2, 22)
-(4, 25)
-(11, 15)
-(0, 23)
-(1, 16)
-(4, 6)
-(1, 23)
-(11, 14)
-(0, 5)
-(8, 14)
-(0, 22)
-(4, 19)
-(11, 24)
-(5, 18)
-(8, 16)
-(4, 12)
-(5, 7)
-(11, 21)
-(3, 22)
-(0, 2)
-(14, 23)
-(7, 20)
-(5, 11)
-(3, 15)
-(11, 18)
-(13, 20)
-(3, 25)
-(6, 7)
-(0, 15)
-(7, 23)
-(3, 20)
-(8, 25)
-(13, 22)
-(0, 7)
-(3, 24)
-(3, 16)
-(4, 24)
-(0, 6)
-(0, 8)
-(6, 23)
-(22, 24)
-(4, 17)
-(3, 16)
-(12, 24)
-(16, 25)
-(0, 17)
-(4, 23)
-(18, 22)
-(2, 22)
-(16, 21)
-(4, 12)
-(8, 24)
-(0, 6)
-(5, 25)
-(4, 13)
-(2, 22)
-(10, 25)
-(0, 15)
-(16, 18)
-(3, 21)
-(22, 24)
-(7, 21)
-(14, 15)
-(0, 15)
-(14, 15)
-(0, 3)
-(3, 23)
-(15, 25)
-(15, 19)
-(10, 25)
-(7, 10)
-(2, 19)
-(1, 15)
-(1, 24)
-(2, 16)
-(6, 19)
-(7, 18)
-(15, 21)
-(8, 10)
-(18, 20)
-(9, 24)
-(5, 16)
-(15, 24)
-(2, 16)
-(18, 20)
-(9, 25)
-(18, 22)
-(4, 24)
-(11, 15)
-(2, 8)
-(16, 20)
-(4, 12)
-(6, 18)
-(8, 11)
-(13, 16)
-(7, 22)
-(24, 25)
-(0, 8)
-(2, 18)
-(16, 24)
-(7, 19)
-(3, 11)
-(6, 14)
-(0, 22)
-(3, 17)
-(7, 23)
-(7, 19)
-(4, 17)
-(0, 25)
-(6, 22)
-(12, 23)
-(16, 19)
-(20, 23)
-(0, 1)
-(9, 16)
-(19, 24)
-(10, 20)
-(0, 8)
-(0, 12)
-(9, 11)
-(18, 19)
-(1, 8)
-(10, 25)
-(5, 10)
-(0, 2)
-(13, 19)
-(12, 24)
-(17, 25)
-(9, 25)
-(10, 19)
-(13, 14)
-(0, 11)
-(15, 17)
-(4, 5)
-(4, 23)
-(15, 22)
-(14, 19)
-(8, 13)
-(5, 21)
-(7, 23)
-(18, 22)
-(3, 19)
-(13, 17)
-(8, 20)
-(4, 6)
-(0, 15)
-(8, 11)
-(6, 16)
-(12, 20)
-(2, 3)
-(19, 23)
-(11, 13)
-(2, 24)
-(5, 20)
-(14, 23)
-(4, 11)
-(2, 19)
-(3, 14)
-(3, 6)
-(4, 5)
-(17, 19)
-(0, 6)
-(3, 8)
-(14, 19)
-(7, 17)
-(2, 17)
-(14, 23)
-(0, 1)
-(3, 6)
-(19, 25)
-(1, 10)
-(0, 21)
-(6, 20)
-(3, 24)
-(13, 23)
-(15, 19)
-(0, 16)
-(1, 9)
-(6, 10)
-(18, 23)
-(2, 20)
-(1, 12)
-(4, 18)
-(2, 3)
-(8, 16)
-(0, 22)
-(10, 13)
-(1, 23)
-(4, 11)
-(0, 8)
-(18, 22)
-(1, 4)
-(16, 18)
-(9, 23)
-(0, 24)
-(11, 13)
-(2, 4)
-(8, 9)
-(14, 23)
-(11, 17)
-(1, 15)
-(11, 20)
-(1, 25)
-(2, 19)
-(4, 9)
-(14, 18)
-(12, 17)
-(14, 18)
-(11, 21)
-(5, 21)
-(13, 14)
-(5, 17)
-(6, 21)
-(13, 23)
-(11, 13)
-(6, 12)
-(10, 17)
-(5, 25)
-(6, 23)
-(15, 17)
-(13, 14)
-(10, 19)
-(0, 12)
-(0, 23)
-(9, 14)
-(6, 7)
-(3, 15)
-(7, 16)
-(1, 15)
-(6, 8)
-(17, 23)
-(1, 25)
-(0, 17)
-(3, 7)
-(4, 6)
-(13, 25)
-(0, 5)
-(7, 23)
-(4, 21)
-(1, 14)
-(2, 3)
-(16, 25)
-(11, 14)
-(5, 6)
-(1, 8)
-(13, 17)
-(8, 20)
-(1, 13)
-(0, 14)
-(12, 25)
-(4, 17)
-(4, 5)
-(11, 13)
-(8, 10)
-(2, 17)
-(3, 14)
-(1, 15)
-(17, 23)
-(0, 4)
-(4, 16)
-(15, 17)
-(0, 24)
-(4, 13)
-(16, 19)
-(23, 24)
-(14, 15)
-(11, 19)
-(13, 22)
-(0, 24)
-(4, 21)
-(3, 16)
-(1, 4)
-(0, 2)
-(20, 22)
-(16, 24)
-(5, 13)
-(10, 21)
-(3, 9)
-(4, 23)
-(6, 20)
-(8, 22)
-(9, 25)
-(23, 24)
-(8, 14)
-(2, 14)
-(9, 23)
-(6, 8)
-(14, 22)
-(5, 6)
-(2, 15)
-(7, 8)
-(11, 22)
-(2, 4)
-(1, 7)
-(14, 25)
-(14, 22)
-(0, 11)
-(2, 3)
-(6, 25)
-(0, 9)
-(23, 25)
-(3, 10)
-(14, 20)
-(1, 6)
-(1, 12)
-(9, 22)
-(0, 19)
-(10, 25)
-(9, 16)
-(12, 20)
-(17, 19)
-(0, 7)
-(6, 22)
-(5, 20)
-(12, 18)
-(1, 9)
-(16, 19)
-(14, 22)
-(6, 8)
-(4, 6)
-(18, 19)
-(8, 13)
-(1, 11)
-(17, 22)
-(9, 24)
-(1, 17)
-(2, 13)
-(6, 20)
-(7, 9)
-(4, 21)
-(15, 20)
-(10, 21)
-(4, 22)
-(0, 13)
-(0, 24)
-(5, 10)
-(13, 23)
-(1, 4)
-(2, 22)
-(14, 21)
-(16, 21)
-(14, 18)
-(0, 15)
-(13, 19)
-(8, 23)
-(7, 23)
-(8, 25)
-(3, 16)
-(6, 18)
-(8, 14)
-(3, 11)
-(6, 12)
-(12, 21)
-(6, 16)
-(13, 14)
-(18, 21)
-(1, 14)
-(7, 13)
-(10, 14)
-(4, 13)
-(0, 13)
-(4, 6)
-(3, 10)
-(9, 13)
-(3, 23)
-(6, 20)
-(17, 20)
-(3, 7)
-(2, 23)
-(5, 6)
-(12, 23)
-(7, 19)
-(14, 17)
-(3, 24)
-(1, 2)
-(6, 9)
-(11, 23)
-(11, 22)
-(17, 23)
-(22, 25)
-(11, 16)
-(4, 22)
-(4, 10)
-(4, 18)
-(10, 22)
-(5, 18)
-(4, 24)
-(1, 10)
-(12, 24)
-(1, 13)
-(0, 10)
-(12, 25)
-(7, 12)
-(21, 25)
-(14, 25)
-(10, 12)
-(20, 21)
-(7, 11)
-(12, 18)
-(1, 20)
-(16, 21)
-(11, 17)
-(8, 10)
-(6, 8)
-(12, 15)
-(3, 20)
-(1, 19)
-(4, 8)
-(12, 18)
-(1, 23)
-(13, 23)
-(6, 8)
-(4, 25)
-(20, 25)
-(4, 15)
-(6, 9)
-(1, 13)
-(3, 13)
-(1, 23)
-(6, 10)
-(11, 25)
-(0, 20)
-(3, 5)
-(18, 25)
-(22, 23)
-(7, 13)
-(3, 20)
-(4, 22)
-(7, 12)
-(13, 21)
-(9, 25)
-(5, 17)
-(11, 25)
-(20, 24)
-(16, 17)
-(6, 21)
-(9, 10)
-(19, 25)
-(13, 21)
-(16, 17)
-(5, 13)
-(4, 16)
-(1, 17)
-(7, 19)
-(6, 21)
-(11, 21)
-(5, 24)
-(1, 14)
-(2, 7)
-(7, 14)
-(11, 25)
-(16, 21)
-(1, 20)
-(17, 24)
-(5, 12)
-(15, 25)
-(5, 17)
-(1, 22)
-(3, 24)
-(12, 23)
-(1, 4)
-(15, 16)
-(18, 23)
-(13, 17)
-(0, 17)
-(4, 21)
-(1, 10)
-(19, 23)
-(6, 13)
-(23, 25)
-(4, 22)
-(8, 19)
-(3, 6)
-(17, 24)
-(1, 11)
-(13, 19)
-(20, 24)
-(6, 18)
-(3, 6)
-(17, 24)
-(5, 20)
-(13, 14)
-(1, 3)
-(21, 24)
-(16, 20)
-(6, 9)
-(8, 16)
-(11, 21)
-(7, 20)
-(10, 21)
-(7, 12)
-(9, 11)
-(5, 16)
-(12, 20)
-(17, 21)
-(9, 24)
-(8, 16)
-(10, 15)
-(12, 21)
-(1, 10)
-(6, 15)
-(16, 21)
-(1, 7)
-(5, 15)
-(6, 18)
-(5, 7)
-(14, 18)
-(2, 6)
-(5, 24)
-(4, 6)
-(0, 2)
-(6, 13)
-(0, 23)
-(13, 22)
-(0, 2)
-(3, 23)
-(2, 17)
-(0, 4)
-(11, 13)
-(14, 23)
-(2, 15)
-(9, 11)
-(4, 19)
-(1, 13)
-(6, 11)
-(4, 25)
-(9, 18)
-(2, 12)
-(15, 18)
-(22, 25)
-(3, 11)
-(4, 10)
-(0, 4)
-(23, 25)
-(10, 21)
-(14, 22)
-(6, 14)
-(0, 15)
-(17, 25)
-(9, 14)
-(17, 20)
-(8, 15)
-(6, 11)
-(0, 18)
-(2, 9)
-(6, 21)
-(10, 17)
-(18, 24)
-(14, 19)
-(3, 18)
-(10, 23)
-(11, 24)
-(2, 4)
-(13, 14)
-(5, 19)
-(5, 18)
-(19, 25)
-(2, 23)
-(4, 9)
-(10, 17)
-(7, 23)
-(0, 9)
-(1, 19)
-(4, 12)
-(2, 17)
-(0, 23)
-(1, 16)
-(14, 19)
-(2, 12)
-(5, 16)
-(7, 23)
-(2, 9)
-(7, 22)
-(5, 17)
-(16, 18)
-(17, 21)
-(7, 13)
-(16, 24)
-(6, 21)
-(4, 7)
-(13, 15)
-(17, 19)
-(19, 20)
-(1, 21)
-(20, 25)
-(12, 21)
-(14, 19)
-(1, 23)
-(10, 25)
-(0, 12)
-(18, 20)
-(16, 21)
-(0, 6)
-(5, 10)
-(16, 22)
-(2, 20)
-(8, 12)
-(1, 16)
-(8, 13)
-(7, 10)
-(17, 22)
-(0, 4)
-(8, 23)
-(2, 17)
-(5, 13)
-(0, 19)
-(7, 20)
-(8, 20)
-(15, 17)
-(2, 23)
-(9, 19)
-(0, 1)
-(1, 24)
-(11, 15)
-(18, 19)
-(0, 16)
-(10, 20)
-(4, 24)
-(0, 14)
-(15, 22)
-(0, 18)
-(2, 15)
-(13, 14)
-(14, 16)
-(5, 15)
-(6, 13)
-(3, 16)
-(6, 8)
-(0, 14)
-(5, 17)
-(17, 25)
-(4, 8)
-(3, 6)
-(14, 24)
-(16, 19)
-(14, 18)
-(7, 16)
-(13, 19)
-(3, 20)
-(6, 10)
-(18, 24)
-(14, 22)
-(2, 13)
-(24, 25)
-(13, 23)
-(2, 17)
-(6, 25)
-(17, 21)
-(16, 24)
-(22, 25)
-(11, 24)
-(13, 16)
-(8, 17)
-(10, 13)
-(7, 25)
-(8, 15)
-(9, 16)
-(5, 22)
-(18, 25)
-(4, 9)
-(16, 24)
-(2, 7)
-(4, 5)
-(11, 24)
-(18, 19)
-(14, 16)
-(18, 21)
-(0, 14)
-(5, 22)
-(9, 11)
-(16, 25)
-(21, 23)
-(6, 16)
-(0, 24)
-(13, 25)
-(11, 19)
-(17, 22)
-(14, 20)
-(0, 7)
-(12, 21)
-(13, 19)
-(11, 18)
-(1, 16)
-(2, 21)
-(1, 15)
-(11, 23)
-(12, 25)
-(6, 11)
-(16, 21)
-(2, 18)
-(16, 25)
-(4, 18)
-(21, 23)
-(5, 16)
-(18, 24)
-(13, 25)
-(17, 21)
-(8, 25)
-(2, 16)
-(13, 20)
-(1, 18)
-(17, 22)
-(13, 24)
-(3, 8)
-(15, 16)
-(2, 19)
-(20, 23)
-(11, 23)
-(6, 8)
-(2, 12)
-(7, 16)
-(13, 18)
-(2, 9)
-(4, 18)
-(12, 25)
-(12, 23)
-(22, 25)
-(14, 18)
-(9, 19)
-(2, 14)
-(18, 21)
-(0, 22)
-(5, 25)
-(4, 23)
-(17, 22)
-(14, 16)
-(12, 23)
-(5, 18)
-(2, 11)
-(1, 17)
-(9, 18)
-(20, 23)
-(0, 11)
-(2, 19)
-(9, 25)
-(17, 23)
-(0, 22)
-(0, 7)
-(14, 22)
-(1, 23)
-(7, 16)
-(17, 23)
-(6, 14)
-(7, 24)
-(10, 17)
-(1, 23)
-(5, 16)
-(5, 9)
-(11, 23)
-(10, 15)
-(17, 18)
-(4, 17)
-(10, 23)
-(15, 20)
-(11, 13)
-(0, 4)
-(11, 15)
-(8, 13)
-(3, 23)
-(12, 17)
-(19, 23)
-(11, 24)
-(2, 3)
-(8, 25)
-(12, 15)
-(9, 13)
-(13, 22)
-(6, 9)
-(7, 19)
-(1, 2)
-(18, 25)
-(8, 16)
-(1, 23)
-(19, 20)
-(2, 15)
-(8, 10)
-(5, 19)
-(0, 10)
-(2, 24)
-(8, 22)
-(19, 20)
-(3, 10)
-(7, 22)
-(0, 17)
-(3, 13)
-(17, 19)
-(7, 8)
-(0, 23)
-(4, 13)
-(0, 19)
-(7, 12)
-(23, 25)
-(7, 9)
-(12, 16)
-(16, 25)
-(7, 15)
-(6, 9)
-(12, 18)
-(7, 13)
-(4, 6)
-(15, 17)
-(3, 25)
-(14, 15)
-(13, 23)
-(7, 11)
-(4, 9)
-(15, 19)
-(0, 23)
-(11, 21)
-(10, 14)
-(4, 17)
-(18, 23)
-(1, 17)
-(6, 15)
-(5, 15)
-(4, 6)
-(10, 23)
-(1, 20)
-(4, 14)
-(9, 15)
-(23, 24)
-(2, 6)
-(10, 22)
-(2, 18)
-(5, 23)
-(4, 12)
-(7, 14)
-(5, 6)
-(12, 13)
-(14, 19)
-(16, 18)
-(2, 15)
-(0, 7)
-(5, 7)
-(4, 13)
-(6, 23)
-(2, 10)
-(15, 17)
-(8, 19)
-(11, 18)
-(4, 9)
-(2, 25)
-(16, 18)
-(14, 19)
-(10, 15)
-(11, 24)
-(4, 10)
-(13, 19)
-(23, 25)
-(15, 18)
-(8, 18)
-(10, 24)
-(15, 17)
-(4, 21)
-(13, 22)
-(19, 21)
-(14, 15)
-(2, 4)
-(18, 23)
-(10, 11)
-(0, 18)
-(3, 19)
-(2, 25)
-(14, 17)
-(6, 25)
-(2, 20)
-(1, 14)
-(3, 18)
-(5, 19)
-(0, 11)
-(20, 22)
-(15, 19)
-(4, 18)
-(1, 24)
-(2, 17)
-(7, 11)
-(0, 25)
-(6, 11)
-(21, 24)
-(13, 22)
-(7, 25)
-(12, 15)
-(8, 17)
-(10, 17)
-(23, 24)
-(11, 13)
-(15, 20)
-(2, 22)
-(17, 19)
-(3, 10)
-(24, 25)
-(2, 7)
-(16, 20)
-(21, 22)
-(1, 20)
-(3, 8)
-(0, 25)
-(10, 23)
-(7, 14)
-(2, 4)
-(3, 5)
-(11, 20)
-(2, 13)
-(1, 22)
-(1, 6)
-(22, 24)
-(2, 14)
-(4, 22)
-(1, 7)
-(7, 15)
-(1, 6)
-(22, 25)
-(19, 25)
-(6, 17)
-(7, 17)
-(4, 25)
-(6, 11)
-(17, 21)
-(6, 8)
-(3, 11)
-(0, 6)
-(3, 16)
-(15, 17)
-(3, 23)
-(6, 8)
-(0, 21)
-(14, 15)
-(12, 16)
-(12, 23)
-(6, 11)
-(7, 15)
-(14, 16)
-(2, 8)
-(5, 23)
-(8, 9)
-(10, 11)
-(14, 20)
-(17, 20)
-(5, 14)
-(9, 13)
-(5, 17)
-(0, 20)
-(1, 13)
-(7, 9)
-(20, 25)
-(1, 15)
-(9, 12)
-(13, 24)
-(7, 23)
-(10, 17)
-(5, 11)
-(14, 24)
-(1, 8)
-(0, 12)
-(3, 9)
-(11, 22)
-(3, 15)
-(1, 13)
-(17, 22)
-(5, 14)
-(2, 13)
-(1, 15)
-(11, 22)
-(11, 21)
-(8, 13)
-(9, 22)
-(4, 9)
-(10, 13)
-(20, 21)
-(8, 23)
-(2, 4)
-(16, 20)
-(19, 21)
-(10, 24)
-(13, 19)
-(1, 16)
-(3, 10)
-(5, 20)
-(12, 19)
-(13, 14)
-(5, 7)
-(3, 8)
-(20, 23)
-(16, 18)
-(20, 25)
-(16, 17)
-(6, 7)
-(13, 23)
-(5, 8)
-(7, 15)
-(6, 11)
-(3, 11)
-(5, 15)
-(7, 18)
-(14, 15)
-(5, 24)
-(1, 11)
-(1, 7)
-(5, 21)
-(15, 18)
-(8, 21)
-(9, 18)
-(9, 24)
-(13, 21)
-(8, 25)
-(8, 15)
-(14, 24)
-(10, 21)
-(3, 13)
-(1, 3)
-(4, 15)
-(5, 21)
-(11, 13)
-(8, 20)
-(11, 14)
-(1, 9)
-(15, 19)
-(4, 23)
-(20, 22)
-(13, 17)
-(2, 3)
-(12, 19)
-(11, 20)
-(17, 25)
-(1, 7)
-(13, 21)
-(6, 23)
-(4, 20)
-(13, 15)
-(18, 19)
-(1, 25)
-(14, 17)
-(7, 9)
-(8, 23)
-(3, 20)
-(16, 19)
-(6, 14)
-(8, 9)
-(18, 23)
-(0, 13)
-(7, 21)
-(4, 19)
-(5, 16)
-(3, 6)
-(8, 25)
-(15, 20)
-(11, 21)
-(2, 16)
-(5, 23)
-(1, 4)
-(6, 10)
-(7, 19)
-(21, 22)
-(15, 25)
-(0, 19)
-(11, 25)
-(15, 18)
-(1, 20)
-(20, 24)
-(9, 25)
-(1, 7)
-(4, 18)
-(6, 15)
-(0, 10)
-(11, 16)
-(3, 4)
-(12, 24)
-(6, 11)
-(5, 18)
-(2, 10)
-(8, 20)
-(2, 13)
-(5, 8)
-(10, 21)
-(1, 12)
-(17, 24)
-(0, 20)
-(0, 16)
-(10, 23)
-(9, 24)
-(7, 8)
-(20, 22)
-(6, 12)
-(3, 5)
-(16, 24)
-(7, 20)
-(6, 8)
-(3, 23)
-(7, 25)
-(8, 15)
-(3, 14)
-(19, 25)
-(3, 15)
-(8, 15)
-(21, 25)
-(6, 21)
-(3, 15)
-(15, 20)
-(12, 20)
-(15, 18)
-(17, 20)
-(15, 16)
-(0, 12)
-(18, 22)
-(18, 19)
-(13, 15)
-(17, 24)
-(16, 22)
-(16, 25)
-(5, 22)
-(12, 19)
-(1, 16)
-(21, 25)
-(2, 5)
-(10, 22)
-(18, 21)
-(5, 9)
-(2, 20)
-(7, 22)
-(5, 22)
-(9, 12)
-(2, 4)
-(11, 20)
-(12, 14)
-(2, 16)
-(10, 20)
-(22, 25)
-(4, 13)
-(9, 14)
-(4, 7)
-(2, 24)
-(1, 25)
-(3, 22)
-(6, 10)
-(2, 21)
-(19, 22)
-(3, 13)
-(6, 15)
-(0, 24)
-(10, 18)
-(11, 15)
-(7, 18)
-(19, 20)
-(4, 21)
-(2, 8)
-(2, 4)
-(15, 18)
-(19, 23)
-(12, 21)
-(1, 7)
-(0, 1)
-(2, 25)
-(5, 7)
-(12, 20)
-(2, 13)
-(7, 11)
-(22, 25)
-(12, 25)
-(15, 22)
-(1, 7)
-(13, 14)
-(2, 17)
-(9, 17)
-(5, 15)
-(22, 24)
-(8, 9)
-(13, 24)
-(2, 22)
-(5, 24)
-(2, 11)
-(3, 9)
-(8, 21)
-(9, 20)
-(3, 18)
-(2, 7)
-(7, 24)
-(3, 12)
-(8, 20)
-(18, 25)
-(3, 25)
-(8, 17)
-(1, 12)
-(10, 20)
-(17, 20)
-(10, 12)
-(6, 25)
-(3, 17)
-(8, 20)
-(10, 19)
-(12, 21)
-(0, 25)
-(6, 7)
-(0, 1)
-(4, 19)
-(22, 25)
-(21, 24)
-(6, 14)
-(6, 20)
-(15, 19)
-(0, 23)
-(9, 24)
-(5, 14)
-(21, 22)
-(2, 15)
-(0, 10)
-(9, 20)
-(3, 19)
-(13, 23)
-(18, 22)
-(23, 25)
-(10, 19)
-(12, 15)
-(3, 24)
-(1, 24)
-(10, 17)
-(12, 16)
-(2, 15)
-(13, 15)
-(2, 4)
-(1, 3)
-(20, 24)
-(17, 25)
-(15, 16)
-(10, 13)
-(1, 6)
-(12, 24)
-(3, 23)
-(2, 11)
-(1, 19)
-(11, 20)
-(3, 13)
-(4, 15)
-(16, 17)
-(0, 2)
-(6, 9)
-(1, 15)
-(11, 14)
-(6, 8)
-(4, 7)
-(13, 25)
-(16, 20)
-(10, 15)
-(18, 25)
-(2, 4)
-(6, 11)
-(1, 24)
-(1, 3)
-(10, 23)
-(19, 25)
-(2, 10)
-(1, 5)
-(21, 25)
-(3, 12)
-(3, 4)
-(10, 22)
-(19, 25)
-(2, 8)
-(1, 14)
-(13, 21)
-(19, 20)
-(7, 10)
-(5, 21)
-(11, 22)
-(3, 8)
-(19, 24)
-(15, 20)
-(0, 10)
-(9, 22)
-(3, 17)
-(7, 20)
-(4, 22)
-(12, 17)
-(10, 13)
-(24, 25)
-(2, 9)
-(1, 15)
-(17, 22)
-(10, 18)
-(11, 25)
-(3, 12)
-(0, 2)
-(7, 13)
-(2, 23)
-(12, 24)
-(0, 14)
-(10, 16)
-(9, 25)
-(8, 17)
-(2, 18)
-(10, 15)
-(6, 25)
-(11, 17)
-(14, 21)
-(6, 18)
-(2, 8)
-(23, 25)
-(11, 19)
-(16, 21)
-(15, 20)
-(9, 15)
-(0, 21)
-(10, 25)
-(14, 23)
-(1, 16)
-(16, 17)
-(5, 16)
-(0, 17)
-(13, 17)
-(5, 7)
-(0, 19)
-(16, 23)
-(7, 22)
-(2, 17)
-(10, 16)
-(12, 19)
-(3, 5)
-(15, 23)
-(1, 22)
-(7, 24)
-(5, 8)
-(3, 6)
-(14, 22)
-(6, 20)
-(2, 24)
-(2, 17)
-(11, 22)
-(4, 24)
-(6, 8)
-(3, 20)
-(8, 9)
-(19, 20)
-(1, 22)
-(0, 3)
-(10, 22)
-(9, 25)
-(4, 19)
-(18, 25)
-(10, 13)
-(8, 19)
-(4, 24)
-(0, 24)
-(5, 19)
-(2, 4)
-(23, 25)
-(0, 20)
-(4, 12)
-(17, 19)
-(5, 8)
-(1, 20)
-(4, 11)
-(5, 6)
-(13, 20)
-(5, 19)
-(4, 17)
-(1, 16)
-(20, 22)
-(9, 17)
-(13, 24)
-(15, 16)
-(20, 25)
-(13, 18)
-(2, 22)
-(16, 23)
-(5, 13)
-(9, 20)
-(18, 24)
-(1, 2)
-(16, 25)
-(18, 22)
-(2, 6)
-(1, 12)
-(7, 12)
-(3, 6)
-(10, 22)
-(1, 8)
-(22, 23)
-(0, 7)
-(1, 12)
-(18, 23)
-(1, 24)
-(0, 7)
-(18, 19)
-(7, 24)
-(13, 23)
-(0, 8)
-(1, 6)
-(8, 12)
-(6, 16)
-(7, 10)
-(0, 15)
-(0, 24)
-(2, 12)
-(7, 15)
-(3, 6)
-(2, 8)
-(5, 24)
-(4, 15)
-(0, 16)
-(8, 13)
-(5, 7)
-(4, 21)
-(0, 25)
-(14, 16)
-(9, 24)
-(8, 10)
-(9, 25)
-(0, 11)
-(3, 14)
-(21, 24)
-(4, 17)
-(7, 18)
-(3, 22)
-(0, 12)
-(7, 8)
-(4, 19)
-(16, 24)
-(18, 23)
-(15, 17)
-(1, 24)
-(4, 7)
-(20, 23)
-(19, 22)
-(16, 17)
-(1, 15)
-(18, 20)
-(21, 23)
-(10, 15)
-(16, 18)
-(14, 20)
-(2, 23)
-(7, 16)
-(15, 24)
-(1, 2)
-(20, 25)
-(14, 16)
-(1, 6)
-(7, 20)
-(9, 24)
-(14, 18)
-(5, 9)
-(2, 6)
-(1, 4)
-(4, 21)
-(14, 25)
-(1, 23)
-(5, 11)
-(9, 10)
-(11, 16)
-(9, 17)
-(23, 24)
-(10, 17)
-(7, 11)
-(0, 23)
-(15, 24)
-(9, 12)
-(6, 24)
-(15, 21)
-(17, 19)
-(4, 10)
-(4, 22)
-(20, 21)
-(2, 15)
-(7, 19)
-(2, 3)
-(15, 23)
-(3, 6)
-(0, 15)
-(8, 23)
-(2, 10)
-(3, 4)
-(6, 13)
-(8, 15)
-(0, 7)
-(10, 21)
-(2, 10)
-(7, 24)
-(12, 15)
-(1, 15)
-(8, 24)
-(12, 19)
-(1, 5)
-(3, 19)
-(7, 24)
-(3, 18)
-(8, 24)
-(19, 21)
-(5, 23)
-(23, 25)
-(5, 9)
-(15, 24)
-(8, 17)
-(13, 17)
-(9, 25)
-(8, 11)
-(0, 5)
-(19, 23)
-(15, 20)
-(5, 9)
-(6, 17)
-(8, 13)
-(1, 20)
-(2, 6)
-(10, 20)
-(4, 8)
-(14, 17)
-(11, 20)
-(8, 13)
-(6, 24)
-(4, 8)
-(13, 25)
-(2, 11)
-(8, 14)
-(4, 8)
-(4, 22)
-(8, 25)
-(4, 15)
-(3, 8)
-(15, 18)
-(4, 7)
-(4, 16)
-(12, 18)
-(7, 19)
-(15, 22)
-(18, 22)
-(6, 7)
-(15, 17)
-(4, 21)
-(3, 12)
-(5, 21)
-(20, 22)
-(3, 7)
-(13, 17)
-(16, 17)
-(1, 22)
-(7, 19)
-(15, 20)
-(10, 17)
-(11, 15)
-(2, 22)
-(1, 2)
-(4, 22)
-(16, 17)
-(11, 14)
-(0, 15)
-(3, 16)
-(5, 11)
-(21, 22)
-(6, 14)
-(0, 6)
-(16, 17)
-(3, 16)
-(17, 20)
-(9, 20)
-(4, 17)
-(9, 21)
-(17, 24)
-(4, 16)
-(15, 24)
-(17, 24)
-(15, 23)
-(8, 17)
-(13, 23)
-(11, 17)
-(8, 16)
-(4, 17)
-(11, 13)
-(8, 19)
-(8, 10)
-(11, 15)
-(2, 17)
-(19, 22)
-(1, 22)
-(19, 24)
-(13, 17)
-(2, 12)
-(5, 13)
-(6, 17)
-(3, 12)
-(2, 25)
-(2, 10)
-(11, 12)
-(1, 6)
-(5, 24)
-(3, 16)
-(11, 14)
-(12, 22)
-(8, 24)
-(15, 16)
-(9, 10)
-(3, 21)
-(6, 19)
-(16, 23)
-(15, 20)
-(6, 17)
-(11, 19)
-(17, 22)
-(9, 19)
-(3, 11)
-(6, 14)
-(0, 17)
-(19, 25)
-(6, 10)
-(11, 21)
-(7, 14)
-(4, 10)
-(6, 9)
-(13, 21)
-(14, 16)
-(3, 17)
-(6, 24)
-(7, 9)
-(2, 16)
-(20, 21)
-(12, 14)
-(11, 14)
-(8, 20)
-(9, 25)
-(16, 22)
-(2, 18)
-(16, 20)
-(6, 11)
-(9, 21)
-(16, 24)
-(6, 12)
-(6, 14)
-(13, 24)
-(16, 25)
-(5, 12)
-(14, 17)
-(1, 13)
-(10, 25)
-(12, 23)
-(6, 16)
-(0, 10)
-(3, 14)
-(4, 16)
-(22, 23)
-(3, 7)
-(2, 23)
-(14, 20)
-(16, 18)
-(3, 24)
-(6, 20)
-(7, 12)
-(17, 24)
-(3, 8)
-(6, 10)
-(17, 19)
-(11, 24)
-(0, 6)
-(10, 13)
-(3, 20)
-(9, 19)
-(8, 20)
-(0, 24)
-(11, 16)
-(17, 22)
-(11, 15)
-(12, 20)
-(1, 22)
-(3, 19)
-(17, 22)
-(1, 2)
-(3, 13)
-(1, 2)
-(5, 22)
-(3, 9)
-(16, 17)
-(4, 5)
-(22, 24)
-(1, 15)
-(6, 22)
-(0, 15)
-(14, 24)
-(3, 5)
-(1, 13)
-(8, 22)
-(18, 24)
-(3, 11)
-(1, 16)
-(17, 22)
-(18, 19)
-(7, 24)
-(16, 23)
-(0, 24)
-(8, 16)
-(13, 22)
-(7, 19)
-(9, 19)
-(17, 22)
-(13, 14)
-(16, 23)
-(24, 25)
-(9, 18)
-(12, 17)
-(7, 14)
-(21, 22)
-(16, 19)
-(2, 13)
-(13, 24)
-(1, 9)
-(11, 14)
-(7, 20)
-(4, 24)
-(11, 21)
-(7, 23)
-(1, 18)
-(0, 20)
-(14, 21)
-(3, 20)
-(11, 21)
-(0, 3)
-(12, 14)
-(3, 22)
-(12, 20)
-(13, 21)
-(10, 11)
-(4, 14)
-(4, 20)
-(15, 21)
-(3, 6)
-(8, 13)
-(0, 21)
-(6, 22)
-(1, 4)
-(14, 15)
-(3, 19)
-(8, 9)
-(0, 25)
-(1, 24)
-(9, 23)
-(8, 15)
-(2, 19)
-(15, 20)
-(0, 14)
-(5, 23)
-(3, 8)
-(6, 19)
-(9, 10)
-(8, 9)
-(6, 11)
-(20, 24)
-(10, 21)
-(2, 23)
-(10, 12)
-(6, 13)
-(1, 21)
-(2, 14)
-(17, 23)
-(12, 13)
-(18, 23)
-(17, 25)
-(0, 10)
-(14, 24)
-(6, 24)
-(14, 16)
-(5, 18)
-(4, 10)
-(9, 24)
-(5, 12)
-(6, 19)
-(4, 18)
-(10, 11)
-(12, 17)
-(3, 19)
-(1, 18)
-(4, 20)
-(10, 23)
-(6, 7)
-(5, 17)
-(10, 16)
-(6, 22)
-(1, 11)
-(2, 12)
-(12, 23)
-(4, 17)
-(2, 13)
-(5, 8)
-(5, 18)
-(4, 7)
-(11, 12)
-(10, 13)
-(0, 23)
-(13, 15)
-(1, 10)
-(16, 23)
-(5, 9)
-(3, 7)
-(1, 25)
-(10, 20)
-(15, 21)
-(5, 6)
-(2, 23)
-(16, 18)
-(9, 24)
-(19, 21)
-(2, 24)
-(9, 20)
-(12, 16)
-(6, 25)
-(0, 5)
-(1, 14)
-(18, 19)
-(6, 8)
-(7, 21)
-(5, 14)
-(13, 25)
-(16, 23)
-(0, 2)
-(2, 8)
-(1, 6)
-(3, 14)
-(5, 21)
-(24, 25)
-(12, 18)
-(13, 17)
-(12, 22)
-(2, 16)
-(14, 21)
-(6, 9)
-(8, 25)
-(10, 17)
-(8, 16)
-(4, 6)
-(10, 21)
-(2, 5)
-(14, 19)
-(17, 18)
-(0, 8)
-(14, 22)
-(16, 20)
-(15, 19)
-(3, 17)
-(7, 18)
-(7, 13)
-(17, 23)
-(15, 24)
-(3, 22)
-(18, 19)
-(12, 13)
-(4, 24)
-(5, 23)
-(19, 21)
-(1, 17)
-(12, 18)
-(5, 14)
-(15, 17)
-(20, 23)
-(8, 18)
-(7, 17)
-(14, 16)
-(12, 15)
-(18, 19)
-(7, 25)
-(11, 16)
-(0, 15)
-(1, 14)
-(16, 21)
-(17, 18)
-(0, 11)
-(13, 15)
-(3, 15)
-(0, 23)
-(8, 23)
-(0, 9)
-(9, 11)
-(0, 22)
-(5, 8)
-(1, 22)
-(0, 23)
-(6, 8)
-(11, 14)
-(14, 15)
-(8, 20)
-(1, 23)
-(3, 22)
-(3, 21)
-(19, 23)
-(8, 11)
-(17, 20)
-(6, 22)
-(3, 16)
-(6, 21)
-(23, 25)
-(4, 17)
-(17, 25)
-(6, 21)
-(4, 15)
-(11, 23)
-(3, 9)
-(6, 14)
-(17, 21)
-(3, 25)
-(9, 23)
-(5, 11)
-(14, 18)
-(4, 5)
-(3, 10)
-(9, 20)
-(1, 23)
-(6, 15)
-(0, 25)
-(2, 11)
-(0, 7)
-(15, 21)
-(14, 19)
-(4, 8)
-(1, 2)
-(22, 23)
-(14, 20)
-(4, 15)
-(2, 9)
-(16, 22)
-(5, 23)
-(0, 13)
-(1, 3)
-(6, 8)
-(8, 19)
-(5, 17)
-(14, 23)
-(6, 11)
-(10, 14)
-(2, 6)
-(11, 21)
-(5, 25)
-(3, 17)
-(8, 16)
-(14, 20)
-(6, 22)
-(10, 17)
-(16, 18)
-(9, 11)
-(7, 25)
-(2, 24)
-(1, 24)
-(0, 10)
-(18, 25)
-(4, 9)
-(14, 23)
-(3, 22)
-(2, 16)
-(6, 15)
-(11, 12)
-(10, 23)
-(3, 13)
-(1, 15)
-(6, 11)
-(4, 8)
-(0, 14)
-(21, 25)
-(3, 6)
-(11, 16)
-(23, 24)
-(9, 25)
-(2, 15)
-(4, 18)
-(7, 21)
-(14, 25)
-(6, 17)
-(13, 15)
-(11, 23)
-(12, 25)
-(2, 15)
-(1, 14)
-(14, 22)
-(7, 12)
-(1, 10)
-(2, 3)
-(13, 15)
-(5, 15)
-(4, 7)
-(13, 18)
-(1, 2)
-(3, 25)
-(7, 20)
-(5, 6)
-(4, 19)
-(15, 22)
-(11, 25)
-(18, 20)
-(8, 25)
-(4, 24)
-(9, 22)
-(8, 16)
-(9, 10)
-(2, 20)
-(24, 25)
-(1, 22)
-(7, 18)
-(6, 10)
-(4, 7)
-(16, 22)
-(12, 18)
-(7, 24)
-(11, 18)
-(5, 12)
-(8, 16)
-(5, 21)
-(15, 18)
-(8, 9)
-(6, 16)
-(1, 11)
-(7, 19)
-(1, 6)
-(18, 20)
-(8, 21)
-(15, 25)
-(7, 17)
-(1, 10)
-(2, 20)
-(12, 15)
-(18, 24)
-(23, 25)
-(5, 23)
-(15, 16)
-(9, 24)
-(16, 23)
-(2, 24)
-(14, 15)
-(5, 7)
-(5, 25)
-(7, 17)
-(4, 23)
-(7, 22)
-(4, 25)
-(15, 23)
-(14, 15)
-(0, 7)
-(19, 22)
-(18, 25)
-(4, 11)
-(9, 23)
-(15, 16)
-(4, 18)
-(8, 25)
-(5, 23)
-(3, 14)
-(4, 24)
-(11, 18)
-(14, 17)
-(1, 15)
-(10, 25)
-(5, 11)
-(21, 25)
-(6, 14)
-(15, 19)
-(8, 17)
-(10, 17)
-(7, 8)
-(2, 15)
-(6, 12)
-(1, 5)
-(0, 14)
-(0, 22)
-(17, 18)
-(6, 13)
-(7, 11)
-(15, 16)
-(3, 13)
-(2, 15)
-(0, 12)
-(6, 9)
-(1, 22)
-(0, 18)
-(4, 12)
-(2, 5)
-(15, 16)
-(11, 13)
-(1, 17)
-(3, 20)
-(4, 20)
-(18, 22)
-(5, 6)
-(2, 8)
-(11, 13)
-(13, 14)
-(1, 11)
-(10, 18)
-(4, 22)
-(8, 12)
-(1, 8)
-(4, 9)
-(14, 24)
-(13, 15)
-(3, 24)
-(6, 15)
-(9, 11)
-(1, 5)
-(13, 16)
-(2, 13)
-(4, 15)
-(8, 16)
-(4, 20)
-(0, 13)
-(2, 17)
-(16, 19)
-(13, 24)
-(0, 22)
-(2, 7)
-(4, 14)
-(5, 20)
-(9, 17)
-(0, 3)
-(6, 17)
-(10, 20)
-(2, 8)
-(14, 23)
-(8, 20)
-(2, 25)
-(9, 23)
-(6, 13)
-(3, 24)
-(10, 15)
-(18, 20)
-(22, 24)
-(0, 10)
-(4, 15)
-(9, 25)
-(1, 9)
-(8, 22)
-(2, 10)
-(15, 17)
-(14, 24)
-(4, 12)
-(7, 9)
-(15, 20)
-(4, 23)
-(12, 16)
-(16, 19)
-(6, 20)
-(7, 21)
-(11, 12)
-(8, 23)
-(13, 15)
-(4, 5)
-(1, 4)
-(10, 13)
-(19, 25)
-(9, 19)
-(1, 3)
-(4, 21)
-(9, 17)
-(1, 12)
-(3, 22)
-(12, 22)
-(3, 15)
-(1, 3)
-(15, 23)
-(23, 25)
-(1, 2)
-(3, 9)
-(14, 25)
-(2, 3)
-(1, 15)
-(16, 23)
-(2, 20)
-(8, 16)
-(1, 4)
-(13, 15)
-(1, 5)
-(15, 24)
-(4, 23)
-(10, 16)
-(8, 21)
-(8, 13)
-(5, 19)
-(4, 18)
-(14, 21)
-(10, 24)
-(19, 23)
-(17, 24)
-(4, 6)
-(5, 15)
-(13, 20)
-(4, 8)
-(17, 18)
-(2, 15)
-(1, 19)
-(5, 6)
-(1, 12)
-(4, 15)
-(2, 11)
-(7, 8)
-(9, 19)
-(5, 21)
-(2, 25)
-(8, 10)
-(6, 7)
-(5, 24)
-(0, 12)
-(16, 25)
-(10, 21)
-(2, 20)
-(6, 8)
-(7, 22)
-(21, 24)
-(5, 8)
-(6, 19)
-(4, 10)
-(1, 22)
-(16, 18)
-(3, 8)
-(12, 19)
-(6, 24)
-(5, 22)
-(4, 7)
-(1, 15)
-(15, 23)
-(8, 17)
-(13, 19)
-(6, 16)
-(2, 23)
-(14, 15)
-(2, 9)
-(14, 20)
-(7, 23)
-(2, 24)
-(9, 21)
-(13, 23)
-(4, 20)
-(7, 22)
-(14, 25)
-(4, 19)
-(5, 9)
-(6, 21)
-(7, 20)
-(10, 23)
-(18, 25)
-(1, 22)
-(7, 21)
-(13, 18)
-(17, 22)
-(1, 11)
-(0, 5)
-(15, 25)
-(8, 17)
-(23, 25)
-(5, 12)
-(3, 15)
-(7, 17)
-(3, 10)
-(20, 25)
-(6, 23)
-(2, 15)
-(8, 10)
-(7, 18)
-(2, 14)
-(6, 11)
-(2, 15)
-(6, 19)
-(11, 23)
-(5, 8)
-(4, 19)
-(2, 14)
-(5, 13)
-(6, 8)
-(0, 11)
-(15, 16)
-(14, 20)
-(6, 10)
-(0, 9)
-(3, 16)
-(2, 12)
-(3, 11)
-(14, 25)
-(10, 13)
-(1, 2)
-(12, 21)
-(6, 14)
-(23, 25)
-(0, 12)
-(23, 24)
-(15, 25)
-(0, 2)
-(4, 14)
-(14, 16)
-(4, 17)
-(20, 25)
-(8, 23)
-(7, 15)
-(7, 12)
-(6, 23)
-(8, 19)
-(21, 23)
-(5, 6)
-(8, 18)
-(19, 21)
-(14, 18)
-(22, 23)
-(5, 15)
-(12, 19)
-(13, 22)
-(8, 21)
-(11, 18)
-(5, 8)
-(13, 23)
-(18, 25)
-(7, 22)
-(4, 23)
-(13, 15)
-(21, 22)
-(15, 16)
-(13, 18)
-(4, 11)
-(15, 19)
-(0, 16)
-(15, 17)
-(10, 16)
-(6, 19)
-(1, 10)
-(2, 17)
-(18, 19)
-(6, 7)
-(3, 15)
-(2, 11)
-(7, 12)
-(13, 18)
-(8, 17)
-(15, 23)
-(5, 10)
-(6, 22)
-(3, 14)
-(18, 19)
-(8, 17)
-(5, 15)
-(11, 22)
-(8, 17)
-(2, 19)
-(15, 21)
-(8, 10)
-(1, 17)
-(2, 14)
-(10, 15)
-(8, 22)
-(13, 17)
-(2, 3)
-(3, 4)
-(17, 24)
-(5, 10)
-(15, 25)
-(9, 13)
-(16, 17)
-(20, 24)
-(6, 9)
-(7, 13)
-(0, 25)
-(7, 8)
-(5, 16)
-(0, 3)
-(17, 19)
-(6, 12)
-(9, 12)
-(8, 14)
-(6, 24)
-(2, 5)
-(1, 7)
-(17, 23)
-(0, 23)
-(7, 22)
-(1, 6)
-(9, 21)
-(13, 14)
-(8, 12)
-(5, 16)
-(4, 21)
-(13, 19)
-(8, 20)
-(10, 12)
-(9, 24)
-(2, 5)
-(1, 8)
-(4, 10)
-(15, 24)
-(9, 18)
-(11, 20)
-(16, 21)
-(5, 22)
-(5, 7)
-(22, 25)
-(20, 21)
-(6, 11)
-(8, 10)
-(14, 18)
-(2, 11)
-(3, 5)
-(16, 25)
-(13, 14)
-(10, 25)
-(2, 6)
-(3, 4)
-(11, 24)
-(21, 24)
-(5, 6)
-(1, 2)
-(5, 22)
-(9, 24)
-(2, 23)
-(6, 17)
-(1, 16)
-(2, 14)
-(21, 22)
-(4, 9)
-(1, 18)
-(6, 19)
-(5, 16)
-(7, 24)
-(0, 19)
-(1, 2)
-(13, 21)
-(17, 22)
-(14, 16)
-(0, 3)
-(17, 18)
-(2, 6)
-(20, 22)
-(1, 8)
-(16, 23)
-(14, 21)
-(9, 19)
-(16, 25)
-(0, 20)
-(2, 15)
-(9, 22)
-(3, 17)
-(19, 20)
-(0, 3)
-(9, 16)
-(15, 22)
-(2, 23)
-(0, 1)
-(12, 23)
-(3, 5)
-(13, 23)
-(0, 5)
-(3, 17)
-(4, 12)
-(1, 10)
-(13, 14)
-(6, 10)
-(1, 4)
-(4, 9)
-(13, 19)
-(1, 11)
-(6, 15)
-(14, 20)
-(11, 24)
-(7, 13)
-(10, 14)
-(15, 16)
-(8, 19)
-(6, 14)
-(24, 25)
-(11, 22)
-(0, 22)
-(1, 25)
-(23, 24)
-(11, 15)
-(2, 6)
-(0, 20)
-(6, 10)
-(1, 17)
-(14, 15)
-(9, 25)
-(17, 24)
-(9, 18)
-(12, 20)
-(3, 6)
-(0, 16)
-(1, 25)
-(19, 20)
-(3, 5)
-(6, 21)
-(9, 20)
-(21, 22)
-(6, 17)
-(3, 11)
-(5, 24)
-(2, 19)
-(20, 22)
-(5, 6)
-(8, 11)
-(2, 7)
-(15, 19)
-(2, 24)
-(5, 12)
-(0, 11)
-(6, 14)
-(10, 15)
-(0, 16)
-(5, 7)
-(14, 24)
-(16, 19)
-(0, 25)
-(0, 18)
-(16, 17)
-(16, 25)
-(17, 25)
-(16, 19)
-(18, 19)
-(1, 17)
-(24, 25)
-(13, 16)
-(15, 24)
-(3, 16)
-(17, 21)
-(1, 9)
-(0, 17)
-(8, 24)
-(2, 21)
-(1, 15)
-(10, 21)
-(3, 17)
-(9, 24)
-(8, 22)
-(9, 24)
-(3, 15)
-(16, 21)
-(17, 18)
-(8, 19)
-(9, 17)
-(12, 24)
-(18, 23)
-(18, 21)
-(9, 20)
-(16, 17)
-(12, 15)
-(13, 15)
-(10, 20)
-(0, 17)
-(9, 14)
-(14, 24)
-(2, 13)
-(6, 10)
-(0, 3)
-(20, 25)
-(6, 17)
-(7, 14)
-(18, 25)
-(19, 24)
-(10, 22)
-(11, 24)
-(0, 22)
-(16, 18)
-(8, 19)
-(15, 25)
-(5, 6)
-(12, 16)
-(3, 5)
-(4, 18)
-(1, 6)
-(14, 24)
-(15, 20)
-(2, 4)
-(15, 18)
-(13, 24)
-(3, 22)
-(2, 9)
-(5, 24)
-(13, 14)
-(4, 19)
-(18, 19)
-(4, 8)
-(9, 12)
-(9, 22)
-(3, 19)
-(12, 23)
-(4, 11)
-(12, 24)
-(10, 11)
-(6, 23)
-(10, 16)
-(16, 21)
-(10, 14)
-(11, 16)
-(20, 21)
-(10, 20)
-(8, 11)
-(14, 21)
-(15, 16)
-(0, 16)
-(14, 15)
-(5, 10)
-(8, 13)
-(7, 11)
-(13, 24)
-(0, 20)
-(2, 7)
-(1, 11)
-(0, 16)
-(2, 18)
-(5, 24)
-(1, 6)
-(7, 25)
-(1, 17)
-(16, 21)
-(6, 8)
-(5, 12)
-(0, 11)
-(19, 25)
-(11, 24)
-(6, 10)
-(21, 22)
-(12, 13)
-(5, 11)
-(12, 22)
-(0, 24)
-(13, 21)
-(4, 10)
-(2, 6)
-(3, 6)
-(18, 24)
-(18, 23)
-(6, 9)
-(3, 19)
-(11, 19)
-(9, 16)
-(6, 14)
-(16, 24)
-(2, 6)
-(3, 14)
-(9, 23)
-(6, 7)
-(9, 14)
-(15, 16)
-(2, 13)
-(9, 24)
-(13, 18)
-(8, 16)
-(4, 7)
-(2, 10)
-(0, 6)
-(7, 21)
-(1, 2)
-(5, 18)
-(13, 15)
-(6, 20)
-(0, 17)
-(6, 15)
-(1, 22)
-(2, 16)
-(3, 21)
-(17, 19)
-(14, 18)
-(0, 4)
-(0, 25)
-(11, 16)
-(18, 22)
-(2, 19)
-(12, 21)
-(6, 20)
-(8, 15)
-(21, 25)
-(9, 18)
-(8, 13)
-(0, 16)
-(4, 20)
-(5, 16)
-(0, 19)
-(13, 20)
-(3, 21)
-(12, 25)
-(9, 24)
-(10, 12)
-(11, 16)
-(2, 3)
-(14, 21)
-(8, 25)
-(1, 20)
-(9, 18)
-(4, 25)
-(21, 24)
-(10, 23)
-(11, 12)
-(8, 17)
-(17, 22)
-(3, 8)
-(2, 25)
-(1, 21)
-(10, 12)
-(18, 23)
-(7, 10)
-(2, 3)
-(18, 19)
-(1, 25)
-(16, 23)
-(0, 22)
-(4, 18)
-(15, 19)
-(0, 16)
-(14, 22)
-(3, 19)
-(2, 14)
-(14, 19)
-(2, 13)
-(14, 18)
-(2, 21)
-(19, 20)
-(13, 15)
-(4, 15)
-(3, 21)
-(2, 10)
-(6, 19)
-(11, 20)
-(3, 13)
-(15, 22)
-(4, 20)
-(0, 21)
-(1, 22)
-(21, 24)
-(11, 15)
-(4, 5)
-(3, 16)
-(9, 11)
-(3, 19)
-(5, 21)
-(4, 12)
-(8, 15)
-(8, 11)
-(3, 15)
-(4, 25)
-(2, 21)
-(6, 8)
-(12, 21)
-(1, 25)
-(13, 21)
-(12, 23)
-(18, 23)
-(5, 13)
-(4, 18)
-(5, 21)
-(12, 13)
-(2, 23)
-(17, 18)
-(12, 20)
-(3, 4)
-(0, 2)
-(21, 24)
-(5, 19)
-(15, 18)
-(0, 17)
-(6, 20)
-(14, 24)
-(2, 5)
-(10, 20)
-(0, 1)
-(8, 14)
-(15, 16)
-(2, 9)
-(5, 25)
-(19, 24)
-(12, 18)
-(11, 17)
-(7, 16)
-(0, 5)
-(1, 3)
-(11, 25)
-(4, 25)
-(15, 16)
-(7, 22)
-(11, 20)
-(15, 22)
-(7, 12)
-(0, 4)
-(16, 17)
-(12, 24)
-(8, 17)
-(7, 23)
-(13, 16)
-(3, 22)
-(15, 25)
-(12, 14)
-(5, 8)
-(22, 23)
-(2, 16)
-(9, 17)
-(11, 12)
-(16, 21)
-(8, 10)
-(16, 18)
-(1, 8)
-(10, 18)
-(16, 19)
-(1, 17)
-(17, 25)
-(0, 16)
-(5, 18)
-(13, 19)
-(6, 18)
-(3, 5)
-(0, 15)
-(2, 6)
-(18, 24)
-(2, 4)
-(20, 24)
-(2, 16)
-(8, 20)
-(10, 24)
-(4, 20)
-(2, 22)
-(19, 24)
-(8, 9)
-(2, 9)
-(13, 19)
-(10, 24)
-(13, 18)
-(14, 19)
-(2, 12)
-(13, 20)
-(18, 23)
-(14, 22)
-(9, 18)
-(21, 23)
-(6, 22)
-(4, 20)
-(18, 24)
-(20, 21)
-(4, 11)
-(9, 20)
-(3, 4)
-(14, 24)
-(11, 13)
-(11, 22)
-(9, 21)
-(4, 25)
-(3, 12)
-(8, 20)
-(9, 23)
-(2, 25)
-(3, 13)
-(0, 8)
-(22, 25)
-(8, 16)
-(2, 19)
-(0, 15)
-(10, 22)
-(8, 13)
-(6, 16)
-(0, 21)
-(16, 19)
-(8, 11)
-(6, 17)
-(2, 8)
-(4, 6)
-(4, 8)
-(6, 21)
-(6, 16)
-(4, 9)
-(13, 21)
-(1, 13)
-(9, 14)
-(6, 19)
-(12, 16)
-(3, 21)
-(2, 12)
-(6, 18)
-(0, 14)
-(7, 13)
-(10, 14)
-(0, 16)
-(18, 23)
-(8, 23)
-(0, 3)
-(16, 24)
-(10, 16)
-(8, 9)
-(17, 23)
-(1, 17)
-(8, 25)
-(2, 9)
-(1, 11)
-(2, 14)
-(5, 9)
-(8, 20)
-(5, 6)
-(14, 24)
-(9, 19)
-(11, 16)
-(12, 20)
-(8, 14)
-(11, 22)
-(10, 20)
-(24, 25)
-(6, 19)
-(3, 5)
-(3, 17)
-(14, 20)
-(5, 23)
-(15, 24)
-(16, 25)
-(5, 21)
-(3, 13)
-(12, 15)
-(19, 23)
-(9, 24)
-(22, 25)
-(15, 18)
-(5, 8)
-(16, 21)
-(9, 12)
-(2, 21)
-(7, 15)
-(12, 20)
-(0, 8)
-(0, 1)
-(8, 20)
-(3, 15)
-(7, 14)
-(12, 19)
-(7, 25)
-(18, 19)
-(2, 12)
-(8, 14)
-(3, 10)
-(1, 12)
-(5, 10)
-(14, 23)
-(24, 25)
-(3, 9)
-(12, 23)
-(5, 13)
-(9, 17)
-(3, 25)
-(9, 11)
-(0, 25)
-(8, 13)
-(17, 20)
-(9, 16)
-(14, 17)
-(20, 24)
-(5, 16)
-(20, 21)
-(4, 9)
-(9, 18)
-(4, 13)
-(1, 5)
-(10, 16)
-(2, 18)
-(3, 5)
-(16, 22)
-(4, 23)
-(2, 14)
-(4, 23)
-(11, 22)
-(5, 6)
-(16, 17)
-(5, 17)
-(2, 6)
-(8, 16)
-(9, 22)
-(4, 5)
-(16, 22)
-(1, 9)
-(19, 22)
-(1, 15)
-(10, 19)
-(3, 22)
-(7, 15)
-(1, 14)
-(3, 11)
-(19, 24)
-(1, 6)
-(10, 16)
-(12, 22)
-(4, 19)
-(3, 20)
-(16, 23)
-(11, 23)
-(3, 13)
-(16, 17)
-(6, 13)
-(3, 10)
-(1, 23)
-(12, 16)
-(17, 18)
-(9, 23)
-(16, 24)
-(0, 17)
-(12, 25)
-(6, 21)
-(8, 18)
-(2, 18)
-(13, 25)
-(5, 9)
-(10, 23)
-(12, 14)
-(17, 20)
-(6, 20)
-(12, 15)
-(1, 17)
-(0, 15)
-(6, 10)
-(3, 20)
-(4, 6)
-(3, 12)
-(11, 20)
-(0, 19)
-(8, 19)
-(16, 20)
-(3, 22)
-(11, 12)
-(6, 9)
-(6, 23)
-(4, 8)
-(7, 19)
-(5, 9)
-(9, 10)
-(8, 15)
-(4, 17)
-(0, 7)
-(5, 11)
-(0, 17)
-(2, 11)
-(4, 20)
-(6, 9)
-(11, 21)
-(9, 10)
-(6, 12)
-(6, 16)
-(8, 9)
-(3, 10)
-(3, 23)
-(6, 22)
-(0, 16)
-(0, 7)
-(12, 16)
-(3, 9)
-(7, 24)
-(0, 19)
-(15, 19)
-(7, 8)
-(22, 24)
-(0, 24)
-(19, 25)
-(15, 23)
-(3, 8)
-(3, 13)
-(10, 23)
-(0, 25)
-(9, 13)
-(3, 11)
-(6, 25)
-(19, 23)
-(16, 19)
-(0, 25)
-(11, 24)
-(13, 21)
-(10, 23)
-(9, 15)
-(3, 21)
-(14, 15)
-(3, 20)
-(13, 21)
-(14, 15)
-(8, 13)
-(14, 15)
-(3, 25)
-(21, 24)
-(13, 24)
-(4, 21)
-(10, 15)
-(8, 16)
-(11, 14)
-(6, 25)
-(14, 20)
-(5, 15)
-(9, 11)
-(12, 15)
-(4, 9)
-(11, 14)
-(5, 16)
-(0, 20)
-(15, 22)
-(8, 11)
-(14, 20)
-(3, 4)
-(0, 23)
-(2, 9)
-(18, 20)
-(4, 10)
-(3, 25)
-(14, 16)
-(0, 24)
-(1, 22)
-(8, 19)
-(2, 21)
-(12, 19)
-(7, 16)
-(10, 17)
-(4, 5)
-(8, 25)
-(9, 24)
-(2, 21)
-(12, 20)
-(3, 4)
-(15, 19)
-(11, 21)
-(4, 6)
-(11, 14)
-(12, 15)
-(4, 25)
-(3, 15)
-(11, 21)
-(5, 6)
-(21, 22)
-(0, 4)
-(11, 14)
-(6, 20)
-(10, 14)
-(1, 6)
-(0, 2)
-(11, 18)
-(4, 23)
-(22, 25)
-(8, 21)
-(3, 6)
-(7, 10)
-(17, 23)
-(2, 15)
-(12, 18)
-(11, 16)
-(9, 21)
-(17, 25)
-(11, 14)
-(5, 23)
-(18, 22)
-(6, 19)
-(4, 19)
-(6, 15)
-(14, 20)
-(16, 23)
-(0, 25)
-(4, 13)
-(5, 14)
-(15, 22)
-(0, 8)
-(18, 19)
-(4, 11)
-(22, 25)
-(12, 19)
-(14, 18)
-(16, 22)
-(6, 25)
-(15, 19)
-(2, 18)
-(19, 21)
-(4, 6)
-(15, 17)
-(4, 12)
-(11, 19)
-(3, 17)
-(14, 21)
-(2, 15)
-(15, 24)
-(3, 9)
-(13, 17)
-(12, 21)
-(2, 19)
-(2, 14)
-(5, 12)
-(13, 18)
-(6, 9)
-(6, 8)
-(13, 24)
-(2, 3)
-(18, 20)
-(9, 24)
-(8, 15)
-(2, 7)
-(6, 24)
-(7, 25)
-(8, 17)
-(9, 11)
-(1, 8)
-(11, 16)
-(14, 17)
-(7, 10)
-(6, 13)
-(10, 11)
-(8, 22)
-(5, 13)
-(17, 23)
-(1, 24)
-(8, 15)
-(13, 16)
-(14, 24)
-(21, 22)
-(17, 21)
-(22, 23)
-(16, 20)
-(10, 15)
-(23, 25)
-(4, 21)
-(13, 17)
-(0, 22)
-(9, 20)
-(11, 16)
-(13, 20)
-(6, 9)
-(3, 23)
-(8, 16)
-(0, 3)
-(2, 9)
-(22, 23)
-(16, 19)
-(1, 19)
-(5, 16)
-(3, 8)
-(2, 6)
-(12, 22)
-(14, 23)
-(8, 14)
-(22, 25)
-(17, 23)
-(15, 16)
-(1, 6)
-(8, 20)
-(0, 15)
-(5, 16)
-(14, 22)
-(3, 25)
-(9, 15)
-(12, 25)
-(14, 21)
-(13, 20)
-(0, 18)
-(7, 15)
-(20, 25)
-(13, 24)
-(17, 21)
-(18, 20)
-(3, 13)
-(9, 21)
-(14, 24)
-(12, 25)
-(10, 25)
-(13, 22)
-(3, 17)
-(1, 24)
-(7, 20)
-(14, 23)
-(12, 16)
-(1, 13)
-(12, 23)
-(2, 3)
-(6, 14)
-(1, 15)
-(2, 19)
-(6, 20)
-(12, 16)
-(23, 24)
-(2, 22)
-(20, 23)
-(16, 25)
-(11, 19)
-(13, 25)
-(7, 16)
-(0, 11)
-(19, 23)
-(14, 22)
-(3, 22)
-(17, 23)
-(7, 24)
-(12, 16)
-(11, 14)
-(5, 7)
-(8, 12)
-(4, 17)
-(12, 23)
-(4, 25)
-(1, 7)
-(8, 9)
-(21, 23)
-(2, 12)
-(9, 19)
-(8, 16)
-(4, 13)
-(15, 19)
-(3, 4)
-(11, 13)
-(2, 5)
-(15, 18)
-(4, 20)
-(13, 22)
-(1, 19)
-(3, 14)
-(0, 5)
-(22, 24)
-(15, 17)
-(14, 16)
-(3, 11)
-(24, 25)
-(13, 14)
-(10, 22)
-(2, 15)
-(12, 17)
-(23, 25)
-(1, 15)
-(11, 14)
-(8, 22)
-(24, 25)
-(0, 11)
-(9, 14)
-(15, 19)
-(8, 16)
-(2, 9)
-(8, 19)
-(1, 11)
-(0, 13)
-(9, 20)
-(1, 4)
-(2, 22)
-(0, 10)
-(0, 15)
-(3, 9)
-(4, 13)
-(19, 20)
-(10, 12)
-(14, 15)
-(5, 13)
-(6, 12)
-(10, 17)
-(0, 21)
-(3, 7)
-(10, 14)
-(6, 9)
-(0, 13)
-(15, 22)
-(2, 3)
-(1, 5)
-(7, 16)
-(3, 11)
-(9, 14)
-(0, 8)
-(1, 12)
-(5, 13)
-(2, 10)
-(4, 7)
-(11, 20)
-(6, 10)
-(12, 22)
-(3, 7)
-(2, 21)
-(5, 24)
-(14, 19)
-(4, 19)
-(10, 13)
-(3, 14)
-(9, 11)
-(18, 21)
-(2, 17)
-(0, 13)
-(19, 20)
-(12, 21)
-(1, 4)
-(2, 15)
-(2, 16)
-(20, 21)
-(5, 19)
-(13, 15)
-(0, 14)
-(12, 25)
-(4, 25)
-(9, 15)
-(2, 6)
-(5, 18)
-(16, 19)
-(3, 16)
-(12, 19)
-(4, 7)
-(6, 10)
-(10, 22)
-(19, 21)
-(16, 24)
-(6, 20)
-(10, 11)
-(23, 24)
-(9, 22)
-(12, 20)
-(2, 24)
-(5, 9)
-(10, 16)
-(6, 22)
-(11, 15)
-(10, 20)
-(8, 15)
-(6, 22)
-(1, 16)
-(15, 22)
-(16, 21)
-(10, 13)
-(8, 23)
-(13, 15)
-(17, 22)
-(8, 25)
-(3, 10)
-(9, 15)
-(23, 25)
-(0, 8)
-(6, 9)
-(4, 8)
-(20, 23)
-(8, 11)
-(2, 4)
-(8, 22)
-(11, 19)
-(4, 25)
-(5, 11)
-(6, 8)
-(2, 4)
-(14, 19)
-(5, 17)
-(4, 21)
-(11, 13)
-(14, 22)
-(18, 21)
-(2, 5)
-(1, 4)
-(14, 23)
-(16, 17)
-(4, 21)
-(2, 24)
-(13, 18)
-(1, 9)
-(3, 17)
-(5, 8)
-(7, 16)
-(17, 24)
-(1, 7)
-(18, 20)
-(3, 22)
-(3, 13)
-(14, 22)
-(24, 25)
-(18, 21)
-(4, 22)
-(14, 15)
-(23, 24)
-(2, 25)
-(18, 19)
-(4, 23)
-(12, 25)
-(6, 24)
-(2, 3)
-(11, 23)
-(10, 24)
-(4, 8)
-(20, 25)
-(9, 25)
-(3, 24)
-(10, 16)
-(6, 23)
-(1, 20)
-(7, 11)
-(2, 8)
-(4, 20)
-(12, 24)
-(11, 18)
-(0, 7)
-(13, 25)
-(3, 15)
-(10, 23)
-(6, 18)
-(2, 23)
-(3, 14)
-(16, 24)
-(0, 5)
-(7, 19)
-(4, 8)
-(1, 18)
-(4, 15)
-(7, 12)
-(8, 13)
-(11, 19)
-(8, 23)
-(7, 17)
-(0, 11)
-(5, 19)
-(2, 15)
-(4, 13)
-(11, 19)
-(13, 15)
-(1, 17)
-(7, 12)
-(0, 6)
-(5, 9)
-(5, 21)
-(13, 15)
-(9, 25)
-(1, 24)
-(10, 19)
-(1, 24)
-(10, 22)
-(3, 25)
-(5, 7)
-(5, 25)
-(1, 20)
-(12, 22)
-(10, 18)
-(12, 24)
-(14, 22)
-(10, 11)
-(20, 21)
-(11, 19)
-(6, 20)
-(4, 21)
-(2, 24)
-(15, 22)
-(1, 10)
-(7, 22)
-(21, 24)
-(12, 20)
-(10, 17)
-(10, 18)
-(16, 20)
-(22, 23)
-(13, 17)
-(12, 14)
-(4, 7)
-(10, 15)
-(18, 21)
-(5, 7)
-(14, 24)
-(0, 16)
-(11, 12)
-(16, 17)
-(12, 20)
-(13, 21)
-(9, 24)
-(6, 10)
-(5, 14)
-(17, 22)
-(12, 15)
-(9, 23)
-(14, 25)
-(10, 16)
-(0, 16)
-(8, 22)
-(3, 23)
-(1, 25)
-(6, 10)
-(3, 19)
-(8, 11)
-(6, 9)
-(6, 19)
-(8, 22)
-(7, 11)
-(5, 22)
-(2, 11)
-(7, 13)
-(12, 19)
-(8, 20)
-(8, 17)
-(7, 15)
-(1, 20)
-(18, 20)
-(9, 15)
-(17, 25)
-(1, 20)
-(24, 25)
-(9, 10)
-(15, 23)
-(10, 17)
-(3, 25)
-(5, 23)
-(9, 16)
-(12, 15)
-(1, 4)
-(3, 7)
-(4, 22)
-(17, 21)
-(13, 25)
-(0, 9)
-(8, 15)
-(9, 10)
-(3, 19)
-(0, 21)
-(13, 22)
-(7, 13)
-(21, 25)
-(12, 22)
-(7, 20)
-(2, 13)
-(5, 12)
-(12, 22)
-(8, 20)
-(2, 18)
-(13, 14)
-(15, 18)
-(1, 2)
-(8, 21)
-(12, 16)
-(13, 22)
-(7, 20)
-(2, 4)
-(22, 24)
-(0, 20)
-(1, 9)
-(16, 23)
-(1, 14)
-(9, 17)
-(15, 22)
-(4, 5)
-(6, 23)
-(5, 7)
-(1, 18)
-(4, 9)
-(11, 17)
-(0, 6)
-(4, 10)
-(7, 18)
-(9, 13)
-(0, 23)
-(5, 14)
-(14, 17)
-(5, 11)
-(6, 7)
-(13, 19)
-(0, 2)
-(10, 14)
-(19, 21)
-(4, 6)
-(0, 8)
-(13, 16)
-(5, 17)
-(6, 9)
-(13, 18)
-(5, 11)
-(2, 16)
-(1, 4)
-(9, 20)
-(6, 13)
-(5, 7)
-(3, 11)
-(4, 10)
-(18, 22)
-(4, 9)
-(6, 21)
-(2, 5)
-(7, 14)
-(1, 20)
-(3, 15)
-(6, 22)
-(7, 13)
-(9, 20)
-(4, 14)
-(12, 15)
-(6, 19)
-(20, 22)
-(7, 18)
-(10, 12)
-(13, 21)
-(10, 15)
-(11, 18)
-(12, 24)
-(7, 20)
-(3, 24)
-(15, 23)
-(18, 25)
-(2, 11)
-(6, 23)
-(12, 15)
-(2, 13)
-(8, 11)
-(4, 24)
-(1, 11)
-(24, 25)
-(12, 23)
-(8, 9)
-(3, 13)
-(2, 5)
-(8, 18)
-(0, 25)
-(9, 15)
-(23, 24)
-(5, 22)
-(2, 12)
-(1, 17)
-(9, 25)
-(0, 11)
-(17, 21)
-(12, 22)
-(7, 18)
-(5, 20)
-(16, 18)
-(13, 20)
-(1, 7)
-(12, 15)
-(0, 14)
-(4, 21)
-(17, 21)
-(4, 8)
-(0, 11)
-(1, 5)
-(2, 21)
-(0, 14)
-(4, 18)
-(17, 19)
-(4, 20)
-(6, 17)
-(18, 25)
-(14, 16)
-(3, 19)
-(13, 16)
-(9, 25)
-(0, 14)
-(15, 18)
-(0, 2)
-(11, 25)
-(13, 21)
-(9, 21)
-(12, 25)
-(0, 24)
-(8, 13)
-(11, 22)
-(10, 25)
-(1, 12)
-(8, 17)
-(16, 22)
-(15, 24)
-(11, 15)
-(8, 21)
-(16, 23)
-(1, 9)
-(10, 19)
-(8, 17)
-(10, 25)
-(18, 19)
-(13, 23)
-(21, 23)
-(14, 17)
-(1, 8)
-(0, 25)
-(10, 16)
-(3, 18)
-(16, 22)
-(14, 24)
-(3, 4)
-(18, 25)
-(3, 7)
-(0, 4)
-(11, 16)
-(17, 25)
-(15, 18)
-(13, 16)
-(0, 25)
-(4, 22)
-(5, 15)
-(3, 23)
-(4, 21)
-(0, 17)
-(2, 13)
-(16, 19)
-(5, 25)
-(6, 17)
-(13, 18)
-(3, 16)
-(0, 25)
-(12, 21)
-(2, 22)
-(0, 10)
-(12, 23)
-(8, 22)
-(15, 21)
-(2, 25)
-(12, 20)
-(9, 10)
-(2, 8)
-(0, 24)
-(4, 21)
-(4, 13)
-(1, 10)
-(17, 24)
-(7, 20)
-(12, 14)
-(9, 19)
-(4, 7)
-(9, 22)
-(10, 11)
-(20, 23)
-(14, 17)
-(23, 24)
-(11, 12)
-(17, 18)
-(6, 14)
-(10, 20)
-(12, 22)
-(2, 10)
-(1, 20)
-(24, 25)
-(4, 23)
-(14, 17)
-(3, 20)
-(0, 4)
-(5, 24)
-(6, 22)
-(12, 25)
-(4, 11)
-(12, 23)
-(6, 14)
-(9, 22)
-(1, 25)
-(0, 16)
-(5, 18)
-(14, 15)
-(1, 5)
-(12, 17)
-(16, 22)
-(6, 7)
-(18, 21)
-(7, 10)
-(18, 20)
-(14, 24)
-(18, 23)
-(4, 10)
-(3, 14)
-(5, 24)
-(1, 20)
-(1, 17)
-(0, 23)
-(3, 16)
-(13, 24)
-(8, 10)
-(3, 22)
-(6, 16)
-(18, 23)
-(7, 8)
-(17, 23)
-(5, 7)
-(8, 24)
-(18, 25)
-(3, 22)
-(21, 23)
-(3, 16)
-(11, 25)
-(4, 25)
-(11, 19)
-(0, 16)
-(2, 25)
-(11, 20)
-(9, 19)
-(20, 22)
-(17, 19)
-(23, 25)
-(11, 18)
-(1, 18)
-(9, 20)
-(4, 19)
-(15, 22)
-(17, 24)
-(11, 16)
-(18, 19)
-(10, 11)
-(1, 14)
-(4, 21)
-(5, 20)
-(6, 15)
-(8, 24)
-(11, 23)
-(0, 14)
-(2, 10)
-(17, 18)
-(0, 10)
-(5, 18)
-(13, 17)
-(11, 21)
-(21, 22)
-(0, 2)
-(15, 18)
-(5, 24)
-(9, 18)
-(24, 25)
-(11, 21)
-(8, 15)
-(10, 22)
-(2, 16)
-(5, 14)
-(15, 24)
-(11, 14)
-(13, 21)
-(7, 9)
-(17, 18)
-(4, 8)
-(6, 8)
-(11, 23)
-(1, 15)
-(9, 20)
-(7, 12)
-(15, 16)
-(9, 24)
-(8, 25)
-(12, 17)
-(19, 20)
-(2, 7)
-(2, 19)
-(1, 7)
-(12, 21)
-(16, 20)
-(3, 9)
-(5, 15)
-(10, 20)
-(9, 11)
-(17, 21)
-(15, 18)
-(0, 7)
-(10, 13)
-(1, 20)
-(9, 17)
-(7, 12)
-(3, 11)
-(6, 21)
-(12, 15)
-(5, 20)
-(10, 25)
-(4, 9)
-(0, 13)
-(12, 18)
-(13, 22)
-(10, 23)
-(1, 5)
-(14, 25)
-(4, 10)
-(8, 13)
-(21, 22)
-(12, 24)
-(3, 14)
-(7, 8)
-(6, 13)
-(4, 9)
-(12, 18)
-(1, 3)
-(8, 11)
-(3, 19)
-(4, 10)
-(12, 24)
-(13, 16)
-(8, 20)
-(9, 10)
-(24, 25)
-(6, 16)
-(18, 19)
-(10, 11)
-(15, 25)
-(9, 23)
-(18, 20)
-(6, 14)
-(12, 16)
-(8, 24)
-(10, 23)
-(13, 18)
-(5, 11)
-(17, 24)
-(6, 21)
-(4, 25)
-(7, 15)
-(7, 8)
-(3, 17)
-(11, 21)
-(18, 23)
-(13, 16)
-(5, 20)
-(4, 15)
-(5, 23)
-(1, 11)
-(8, 24)
-(9, 13)
-(4, 19)
-(15, 18)
-(0, 21)
-(7, 10)
-(11, 24)
-(6, 19)
-(9, 25)
-(5, 10)
-(8, 14)
-(21, 22)
-(0, 22)
-(7, 24)
-(2, 9)
-(3, 14)
-(9, 18)
-(2, 10)
-(4, 22)
-(7, 15)
-(0, 17)
-(4, 13)
-(0, 23)
-(12, 22)
-(16, 18)
-(3, 7)
-(5, 18)
-(6, 16)
-(3, 24)
-(7, 20)
-(0, 17)
-(8, 22)
-(9, 22)
-(0, 23)
-(2, 20)
-(8, 13)
-(6, 17)
-(10, 20)
-(23, 25)
-(0, 11)
-(14, 17)
-(6, 18)
-(19, 23)
-(0, 2)
-(12, 17)
-(1, 18)
-(23, 25)
-(2, 19)
-(3, 18)
-(1, 11)
-(8, 17)
-(1, 5)
-(10, 23)
-(11, 21)
-(6, 17)
-(7, 21)
-(5, 16)
-(1, 9)
-(11, 15)
-(2, 10)
-(4, 7)
-(15, 17)
-(5, 25)
-(11, 14)
-(8, 10)
-(11, 19)
-(7, 9)
-(20, 25)
-(1, 7)
-(0, 9)
-(16, 20)
-(1, 21)
-(7, 20)
-(4, 9)
-(6, 16)
-(7, 15)
-(11, 20)
-(8, 21)
-(1, 6)
-(9, 18)
-(16, 25)
-(8, 13)
-(20, 22)
-(7, 11)
-(0, 6)
-(4, 16)
-(10, 15)
-(16, 17)
-(6, 19)
-(2, 10)
-(9, 22)
-(15, 19)
-(4, 16)
-(15, 19)
-(16, 17)
-(4, 8)
-(3, 8)
-(4, 19)
-(16, 23)
-(6, 15)
-(1, 3)
-(5, 16)
-(23, 24)
-(3, 13)
-(16, 18)
-(12, 23)
-(12, 24)
-(1, 13)
-(12, 17)
-(0, 24)
-(12, 14)
-(0, 9)
-(5, 24)
-(12, 21)
-(5, 20)
-(14, 25)
-(19, 24)
-(20, 23)
-(15, 24)
-(17, 19)
-(12, 16)
-(18, 21)
-(5, 16)
-(4, 12)
-(6, 18)
-(20, 21)
-(5, 21)
-(4, 22)
-(2, 16)
-(1, 2)
-(12, 16)
-(5, 13)
-(19, 21)
-(10, 21)
-(13, 19)
-(5, 14)
-(2, 4)
-(16, 23)
-(3, 16)
-(0, 23)
-(19, 20)
-(13, 19)
-(16, 22)
-(20, 24)
-(3, 6)
-(4, 24)
-(3, 21)
-(7, 22)
-(16, 23)
-(6, 11)
-(0, 13)
-(13, 22)
-(16, 18)
-(3, 7)
-(11, 20)
-(2, 11)
-(14, 22)
-(12, 13)
-(20, 21)
-(3, 12)
-(5, 20)
-(11, 15)
-(13, 14)
-(2, 8)
-(1, 8)
-(3, 20)
-(0, 15)
-(13, 16)
-(2, 19)
-(10, 13)
-(7, 19)
-(6, 15)
-(0, 25)
-(11, 25)
-(9, 15)
-(6, 18)
-(10, 16)
-(4, 25)
-(0, 15)
-(10, 17)
-(2, 16)
-(7, 9)
-(11, 13)
-(16, 23)
-(1, 15)
-(10, 21)
-(9, 12)
-(0, 5)
-(17, 19)
-(13, 21)
-(0, 25)
-(3, 15)
-(2, 19)
-(16, 17)
-(18, 21)
-(19, 23)
-(22, 25)
-(0, 7)
-(1, 15)
-(18, 20)
-(11, 25)
-(17, 23)
-(15, 19)
-(1, 21)
-(4, 19)
-(10, 20)
-(13, 23)
-(1, 14)
-(6, 21)
-(4, 17)
-(14, 25)
-(21, 24)
-(2, 24)
-(5, 17)
-(2, 25)
-(3, 17)
-(18, 24)
-(4, 24)
-(17, 21)
-(0, 18)
-(3, 22)
-(10, 24)
-(4, 11)
-(1, 4)
-(11, 20)
-(0, 10)
-(12, 20)
-(0, 2)
-(9, 11)
-(8, 11)
-(9, 25)
-(6, 20)
-(12, 24)
-(8, 23)
-(6, 13)
-(7, 11)
-(5, 8)
-(7, 14)
-(11, 13)
-(7, 10)
-(11, 17)
-(1, 14)
-(13, 20)
-(1, 19)
-(4, 20)
-(13, 22)
-(6, 13)
-(4, 15)
-(5, 22)
-(15, 18)
-(6, 8)
-(13, 14)
-(1, 4)
-(20, 22)
-(8, 25)
-(7, 20)
-(5, 22)
-(13, 18)
-(8, 10)
-(2, 22)
-(0, 5)
-(13, 24)
-(7, 14)
-(5, 21)
-(2, 7)
-(15, 22)
-(13, 17)
-(5, 24)
-(15, 23)
-(18, 21)
-(1, 2)
-(11, 17)
-(7, 8)
-(5, 13)
-(19, 23)
-(21, 22)
-(14, 15)
-(10, 24)
-(2, 25)
-(12, 18)
-(11, 14)
-(0, 24)
-(17, 21)
-(4, 22)
-(16, 18)
-(6, 10)
-(13, 20)
-(5, 24)
-(8, 17)
-(1, 10)
-(0, 9)
-(13, 19)
-(8, 23)
-(0, 18)
-(7, 9)
-(3, 24)
-(14, 17)
-(8, 19)
-(14, 20)
-(7, 13)
-(16, 17)
-(8, 25)
-(14, 21)
-(16, 22)
-(12, 13)
-(3, 25)
-(16, 21)
-(8, 11)
-(14, 24)
-(2, 22)
-(0, 25)
-(13, 22)
-(11, 19)
-(6, 24)
-(8, 16)
-(8, 22)
-(0, 18)
-(9, 25)
-(6, 15)
-(20, 24)
-(3, 19)
-(12, 19)
-(15, 24)
-(0, 23)
-(17, 23)
-(0, 18)
-(18, 23)
-(1, 23)
-(10, 18)
-(0, 23)
-(4, 18)
-(0, 3)
-(7, 23)
-(5, 18)
-(4, 13)
-(3, 19)
-(0, 1)
-(14, 23)
-(5, 16)
-(13, 24)
-(3, 21)
-(0, 11)
-(16, 18)
-(23, 24)
-(2, 5)
-(6, 11)
-(0, 19)
-(5, 7)
-(12, 16)
-(4, 21)
-(3, 18)
-(2, 3)
-(6, 13)
-(4, 22)
-(1, 7)
-(11, 12)
-(5, 9)
-(0, 1)
-(5, 14)
-(11, 13)
-(9, 20)
-(20, 24)
-(13, 25)
-(7, 9)
-(0, 10)
-(14, 15)
-(14, 16)
-(0, 15)
-(9, 19)
-(21, 25)
-(19, 21)
-(12, 16)
-(9, 17)
-(0, 6)
-(10, 15)
-(6, 25)
-(9, 22)
-(2, 15)
-(0, 24)
-(3, 17)
-(7, 10)
-(12, 14)
-(1, 10)
-(3, 15)
-(8, 9)
-(22, 23)
-(0, 14)
-(11, 24)
-(1, 4)
-(11, 24)
-(0, 14)
-(14, 19)
-(4, 25)
-(18, 24)
-(11, 24)
-(4, 7)
-(6, 19)
-(5, 14)
-(21, 25)
-(14, 16)
-(18, 24)
-(6, 22)
-(2, 5)
-(0, 21)
-(7, 15)
-(17, 19)
-(15, 25)
-(1, 22)
-(0, 16)
-(4, 21)
-(8, 18)
-(13, 14)
-(7, 17)
-(0, 11)
-(9, 16)
-(4, 18)
-(7, 10)
-(3, 8)
-(23, 25)
-(5, 14)
-(9, 18)
-(3, 25)
-(7, 17)
-(8, 10)
-(0, 24)
-(14, 21)
-(10, 23)
-(9, 21)
-(0, 1)
-(3, 5)
-(24, 25)
-(6, 17)
-(4, 24)
-(3, 7)
-(2, 17)
-(21, 25)
-(8, 10)
-(5, 14)
-(7, 23)
-(4, 6)
-(19, 24)
-(12, 21)
-(3, 15)
-(0, 5)
-(15, 24)
-(4, 22)
-(2, 3)
-(5, 14)
-(9, 12)
-(6, 20)
-(11, 23)
-(19, 25)
-(14, 21)
-(3, 13)
-(10, 12)
-(2, 16)
-(1, 4)
-(5, 17)
-(5, 10)
-(21, 22)
-(16, 20)
-(1, 25)
-(3, 8)
-(6, 20)
-(10, 21)
-(5, 25)
-(16, 20)
-(9, 25)
-(13, 25)
-(7, 16)
-(9, 10)
-(4, 20)
-(7, 18)
-(2, 4)
-(13, 24)
-(15, 16)
-(3, 10)
-(4, 10)
-(0, 18)
-(11, 16)
-(7, 14)
-(15, 19)
-(7, 23)
-(8, 18)
-(14, 17)
-(11, 24)
-(0, 3)
-(22, 23)
-(17, 25)
-(6, 7)
-(18, 21)
-(19, 21)
-(6, 15)
-(10, 25)
-(5, 22)
-(7, 12)
-(14, 18)
-(14, 15)
-(0, 5)
-(9, 19)
-(17, 18)
-(16, 25)
-(6, 21)
-(6, 18)
-(0, 7)
-(12, 17)
-(21, 25)
-(14, 22)
-(10, 15)
-(2, 22)
-(12, 13)
-(4, 7)
-(20, 25)
-(10, 17)
-(10, 12)
-(4, 9)
-(3, 13)
-(7, 11)
-(3, 23)
-(11, 13)
-(6, 7)
-(6, 10)
-(22, 23)
-(12, 13)
-(3, 19)
-(5, 7)
-(10, 14)
-(7, 9)
-(6, 24)
-(17, 19)
-(11, 23)
-(5, 21)
-(2, 19)
-(11, 15)
-(6, 25)
-(3, 14)
-(10, 20)
-(19, 23)
-(15, 16)
-(1, 2)
-(4, 6)
-(11, 13)
-(12, 20)
-(6, 25)
-(12, 22)
-(0, 1)
-(2, 18)
-(3, 15)
-(6, 14)
-(1, 18)
-(0, 8)
-(2, 13)
-(15, 17)
-(8, 24)
-(1, 19)
-(13, 23)
-(2, 20)
-(0, 3)
-(5, 6)
-(17, 22)
-(9, 18)
-(4, 15)
-(9, 21)
-(4, 7)
-(13, 22)
-(17, 23)
-(14, 15)
-(5, 8)
-(3, 17)
-(2, 14)
-(17, 23)
-(2, 18)
-(2, 4)
-(3, 17)
-(12, 18)
-(16, 18)
-(3, 21)
-(10, 17)
-(18, 23)
-(10, 14)
-(13, 17)
-(2, 16)
-(0, 2)
-(8, 18)
-(17, 21)
-(10, 15)
-(14, 23)
-(16, 22)
-(21, 25)
-(20, 23)
-(5, 10)
-(2, 11)
-(0, 9)
-(6, 15)
-(6, 7)
-(0, 8)
-(2, 19)
-(3, 20)
-(9, 11)
-(23, 24)
-(19, 25)
-(3, 22)
-(21, 23)
-(1, 11)
-(8, 9)
-(9, 18)
-(5, 25)
-(0, 19)
-(1, 6)
-(0, 8)
-(18, 25)
-(9, 20)
-(8, 16)
-(9, 21)
-(12, 20)
-(0, 4)
-(20, 25)
-(0, 1)
-(15, 16)
-(1, 22)
-(21, 25)
-(20, 23)
-(14, 15)
-(9, 25)
-(13, 14)
-(4, 23)
-(18, 23)
-(17, 25)
-(14, 23)
-(17, 24)
-(2, 18)
-(11, 14)
-(9, 24)
-(16, 23)
-(2, 4)
-(1, 18)
-(1, 7)
-(0, 23)
-(16, 22)
-(16, 25)
-(0, 21)
-(1, 19)
-(7, 23)
-(1, 3)
-(16, 17)
-(0, 18)
-(5, 25)
-(7, 9)
-(4, 19)
-(7, 23)
-(12, 16)
-(19, 20)
-(18, 24)
-(13, 17)
-(1, 15)
-(5, 9)
-(4, 20)
-(13, 25)
-(5, 15)
-(12, 22)
-(18, 21)
-(16, 24)
-(12, 13)
-(3, 25)
-(1, 24)
-(0, 4)
-(14, 22)
-(8, 14)
-(3, 17)
-(6, 24)
-(1, 10)
-(7, 12)
-(4, 18)
-(1, 9)
-(0, 10)
-(21, 24)
-(4, 13)
-(18, 23)
-(6, 11)
-(12, 15)
-(6, 20)
-(18, 22)
-(2, 11)
-(8, 13)
-(0, 21)
-(10, 20)
-(8, 23)
-(11, 21)
-(2, 3)
-(9, 10)
-(3, 24)
-(4, 24)
-(10, 25)
-(9, 17)
-(2, 3)
-(2, 16)
-(17, 24)
-(22, 25)
-(9, 13)
-(3, 7)
-(0, 2)
-(17, 21)
-(9, 16)
-(6, 7)
-(1, 2)
-(10, 21)
-(0, 20)
-(6, 11)
-(0, 8)
-(21, 24)
-(6, 25)
-(1, 8)
-(0, 13)
-(0, 2)
-(11, 13)
-(1, 3)
-(8, 20)
-(3, 21)
-(5, 8)
-(13, 22)
-(7, 20)
-(8, 23)
-(13, 25)
-(5, 20)
-(13, 18)
-(23, 24)
-(5, 22)
-(19, 25)
-(3, 8)
-(10, 22)
-(3, 9)
-(12, 25)
-(6, 18)
-(4, 8)
-(17, 23)
-(8, 11)
-(10, 20)
-(2, 25)
-(21, 23)
-(7, 21)
-(2, 12)
-(4, 8)
-(7, 25)
-(9, 21)
-(8, 17)
-(8, 15)
-(14, 21)
-(17, 24)
-(7, 16)
-(9, 19)
-(11, 16)
-(19, 25)
-(5, 9)
-(3, 17)
-(20, 21)
-(7, 25)
-(11, 18)
-(20, 23)
-(14, 21)
-(2, 9)
-(13, 19)
-(6, 11)
-(15, 21)
-(17, 25)
-(4, 18)
-(16, 23)
-(19, 20)
-(10, 19)
-(12, 17)
-(0, 20)
-(8, 11)
-(3, 16)
-(15, 25)
-(0, 9)
-(14, 19)
-(2, 15)
-(5, 10)
-(17, 22)
-(3, 21)
-(7, 19)
-(10, 23)
-(2, 6)
-(6, 25)
-(7, 24)
-(2, 4)
-(0, 19)
-(18, 23)
-(23, 24)
-(6, 21)
-(0, 15)
-(2, 5)
-(4, 11)
-(9, 19)
-(0, 20)
-(2, 10)
-(19, 25)
-(22, 24)
-(3, 11)
-(8, 9)
-(5, 17)
-(13, 24)
-(17, 23)
-(14, 20)
-(0, 16)
-(3, 4)
-(14, 22)
-(3, 9)
-(0, 7)
-(12, 20)
-(4, 21)
-(2, 7)
-(6, 14)
-(16, 20)
-(0, 15)
-(22, 23)
-(9, 11)
-(6, 8)
-(0, 25)
-(7, 18)
-(3, 11)
-(9, 13)
-(16, 24)
-(15, 20)
-(1, 24)
-(5, 15)
-(11, 20)
-(19, 25)
-(4, 6)
-(14, 19)
-(4, 21)
-(2, 20)
-(11, 18)
-(8, 15)
-(5, 9)
-(17, 21)
-(15, 20)
-(2, 13)
-(4, 12)
-(10, 18)
-(0, 8)
-(0, 11)
-(2, 14)
-(20, 25)
-(3, 15)
-(10, 24)
-(16, 17)
-(13, 23)
-(21, 25)
-(0, 4)
-(5, 23)
-(14, 24)
-(15, 18)
-(12, 20)
-(3, 20)
-(8, 21)
-(13, 24)
-(12, 25)
-(15, 19)
-(8, 10)
-(16, 21)
-(15, 25)
-(3, 19)
-(1, 13)
-(14, 20)
-(10, 20)
-(6, 21)
-(1, 3)
-(7, 19)
-(13, 17)
-(17, 20)
-(9, 21)
-(7, 22)
-(2, 6)
-(6, 24)
-(18, 22)
-(7, 8)
-(2, 11)
-(10, 17)
-(8, 20)
-(17, 24)
-(6, 16)
-(17, 21)
-(16, 23)
-(2, 20)
-(15, 21)
-(10, 23)
-(16, 22)
-(7, 17)
-(6, 20)
-(6, 9)
-(15, 16)
-(13, 20)
-(8, 17)
-(14, 23)
-(7, 25)
-(6, 15)
-(12, 23)
-(10, 14)
-(11, 13)
-(8, 16)
-(19, 25)
-(5, 23)
-(12, 18)
-(4, 15)
-(14, 17)
-(11, 13)
-(7, 10)
-(13, 20)
-(4, 5)
-(6, 23)
-(7, 11)
-(2, 12)
-(1, 18)
-(15, 18)
-(22, 23)
-(4, 13)
-(3, 6)
-(6, 9)
-(8, 23)
-(22, 25)
-(9, 10)
-(7, 23)
-(10, 21)
-(8, 23)
-(7, 23)
-(0, 10)
-(3, 8)
-(0, 13)
-(20, 23)
-(6, 7)
-(3, 11)
-(10, 16)
-(7, 24)
-(10, 15)
-(12, 23)
-(9, 11)
-(6, 21)
-(7, 22)
-(19, 24)
-(6, 16)
-(1, 10)
-(0, 21)
-(8, 10)
-(3, 22)
-(1, 15)
-(18, 21)
-(5, 19)
-(20, 24)
-(20, 23)
-(3, 18)
-(2, 15)
-(9, 10)
-(1, 11)
-(14, 24)
-(0, 22)
-(12, 24)
-(4, 20)
-(23, 25)
-(17, 18)
-(11, 25)
-(4, 16)
-(2, 25)
-(13, 16)
-(9, 16)
-(6, 13)
-(2, 20)
-(6, 18)
-(9, 12)
-(4, 16)
-(13, 17)
-(0, 18)
-(7, 16)
-(5, 12)
-(9, 16)
-(5, 23)
-(0, 6)
-(8, 12)
-(0, 11)
-(12, 17)
-(8, 12)
-(17, 23)
-(2, 8)
-(5, 12)
-(20, 23)
-(8, 24)
-(4, 5)
-(12, 17)
-(20, 25)
-(17, 18)
-(12, 22)
-(8, 21)
-(1, 20)
-(12, 20)
-(11, 17)
-(1, 7)
-(2, 18)
-(16, 22)
-(5, 8)
-(13, 18)
-(1, 21)
-(22, 23)
-(7, 17)
-(8, 10)
-(18, 25)
-(13, 14)
-(6, 21)
-(9, 22)
-(13, 24)
-(11, 18)
-(4, 14)
-(9, 25)
-(0, 24)
-(11, 15)
-(14, 23)
-(9, 16)
-(12, 13)
-(4, 14)
-(11, 12)
-(7, 16)
-(15, 18)
-(16, 24)
-(4, 15)
-(5, 11)
-(14, 23)
-(12, 13)
-(14, 23)
-(15, 18)
-(0, 12)
-(5, 10)
-(4, 11)
-(16, 17)
-(7, 11)
-(5, 25)
-(2, 14)
-(16, 24)
-(19, 23)
-(0, 10)
-(4, 7)
-(13, 14)
-(0, 1)
-(3, 23)
-(19, 25)
-(1, 21)
-(18, 19)
-(14, 22)
-(0, 1)
-(2, 14)
-(12, 22)
-(13, 14)
-(2, 24)
-(1, 21)
-(17, 22)
-(9, 24)
-(4, 17)
-(2, 10)
-(8, 22)
-(3, 14)
-(10, 20)
-(19, 22)
-(2, 7)
-(16, 24)
-(13, 14)
-(4, 23)
-(4, 8)
-(10, 14)
-(5, 19)
-(12, 13)
-(15, 22)
-(6, 7)
-(6, 23)
-(0, 12)
-(19, 20)
-(8, 11)
-(15, 18)
-(3, 5)
-(11, 24)
-(5, 20)
-(8, 23)
-(1, 3)
-(6, 10)
-(3, 22)
-(1, 2)
-(7, 8)
-(0, 20)
-(10, 21)
-(3, 14)
-(15, 20)
-(18, 22)
-(1, 5)
-(2, 23)
-(12, 18)
-(1, 13)
-(11, 20)
-(5, 15)
-(11, 17)
-(0, 13)
-(5, 16)
-(4, 15)
-(10, 17)
-(16, 24)
-(11, 20)
-(5, 15)
-(10, 14)
-(8, 17)
-(11, 25)
-(5, 22)
-(3, 11)
-(17, 25)
-(2, 3)
-(11, 21)
-(4, 17)
-(11, 19)
-(13, 21)
-(3, 9)
-(2, 10)
-(1, 11)
-(18, 19)
-(7, 21)
-(8, 19)
-(18, 19)
-(12, 19)
-(13, 19)
-(12, 24)
-(19, 25)
-(13, 16)
-(20, 24)
-(3, 12)
-(16, 18)
-(15, 25)
-(17, 24)
-(15, 19)
-(12, 18)
-(22, 25)
-(11, 15)
-(2, 25)
-(0, 12)
-(19, 23)
-(4, 18)
-(18, 22)
-(4, 10)
-(6, 15)
-(0, 23)
-(9, 12)
-(11, 17)
-(2, 19)
-(1, 15)
-(6, 7)
-(9, 14)
-(8, 18)
-(12, 18)
-(3, 15)
-(0, 1)
-(6, 20)
-(3, 11)
-(1, 10)
-(6, 24)
-(15, 22)
-(6, 16)
-(1, 19)
-(4, 15)
-(24, 25)
-(15, 22)
-(5, 24)
-(5, 7)
-(2, 24)
-(4, 5)
-(17, 24)
-(2, 10)
-(7, 8)
-(1, 24)
-(4, 17)
-(8, 23)
-(7, 14)
-(9, 24)
-(4, 5)
-(7, 14)
-(11, 17)
-(7, 15)
-(14, 23)
-(9, 13)
-(0, 11)
-(15, 22)
-(3, 9)
-(0, 18)
-(8, 11)
-(13, 21)
-(6, 14)
-(9, 12)
-(10, 14)
-(3, 22)
-(7, 15)
-(3, 7)
-(17, 22)
-(1, 12)
-(5, 12)
-(2, 17)
-(3, 4)
-(15, 22)
-(1, 5)
-(19, 22)
-(10, 15)
-(7, 12)
-(10, 17)
-(15, 24)
-(12, 14)
-(1, 6)
-(9, 17)
-(1, 16)
-(15, 21)
-(8, 10)
-(9, 13)
-(17, 21)
-(1, 19)
-(8, 12)
-(19, 23)
-(9, 24)
-(8, 25)
-(13, 15)
-(3, 17)
-(4, 17)
-(0, 23)
-(8, 20)
-(16, 24)
-(2, 9)
-(3, 11)
-(4, 21)
-(10, 24)
-(9, 18)
-(13, 20)
-(0, 12)
-(6, 23)
-(16, 24)
-(0, 15)
-(11, 23)
-(6, 17)
-(5, 6)
-(14, 16)
-(9, 23)
-(4, 11)
-(2, 24)
-(8, 16)
-(2, 19)
-(3, 23)
-(1, 14)
-(10, 24)
-(6, 12)
-(6, 23)
-(2, 22)
-(1, 4)
-(14, 16)
-(5, 19)
-(15, 19)
-(4, 24)
-(2, 11)
-(21, 24)
-(2, 25)
-(9, 19)
-(7, 11)
-(5, 15)
-(5, 6)
-(7, 18)
-(2, 20)
-(14, 18)
-(8, 20)
-(12, 14)
-(20, 22)
-(8, 15)
-(8, 18)
-(13, 15)
-(14, 23)
-(10, 20)
-(8, 13)
-(20, 25)
-(10, 17)
-(8, 12)
-(11, 17)
-(10, 24)
-(13, 14)
-(7, 11)
-(23, 24)
-(10, 21)
-(3, 17)
-(3, 5)
-(6, 24)
-(1, 10)
-(11, 22)
-(18, 21)
-(4, 17)
-(8, 17)
-(10, 16)
-(5, 18)
-(19, 22)
-(6, 9)
-(0, 10)
-(14, 22)
-(12, 18)
-(2, 8)
-(9, 15)
-(4, 15)
-(14, 21)
-(0, 11)
-(20, 22)
-(3, 9)
-(10, 13)
-(17, 22)
-(5, 9)
-(11, 13)
-(12, 20)
-(3, 16)
-(15, 25)
-(1, 4)
-(12, 18)
-(11, 14)
-(4, 7)
-(16, 21)
-(1, 23)
-(1, 22)
-(6, 16)
-(11, 13)
-(7, 19)
-(2, 23)
-(3, 18)
-(12, 20)
-(12, 15)
-(1, 17)
-(5, 22)
-(3, 20)
-(9, 18)
-(0, 7)
-(7, 10)
-(1, 23)
-(3, 19)
-(0, 15)
-(9, 14)
-(4, 7)
-(19, 23)
-(3, 6)
-(4, 24)
-(20, 23)
-(2, 7)
-(2, 11)
-(21, 24)
-(7, 22)
-(16, 23)
-(17, 21)
-(8, 24)
-(11, 18)
-(13, 18)
-(7, 21)
-(14, 17)
-(0, 21)
-(10, 17)
-(6, 18)
-(14, 19)
-(5, 6)
-(13, 18)
-(21, 23)
-(10, 24)
-(7, 17)
-(3, 10)
-(18, 22)
-(5, 9)
-(1, 5)
-(0, 10)
-(9, 12)
-(14, 22)
-(9, 18)
-(1, 22)
-(12, 15)
-(12, 13)
-(2, 18)
-(14, 15)
-(9, 20)
-(12, 16)
-(1, 2)
-(18, 24)
-(8, 20)
-(4, 9)
-(14, 22)
-(13, 25)
-(9, 13)
-(14, 21)
-(6, 22)
-(16, 17)
-(5, 8)
-(7, 12)
-(0, 5)
-(7, 15)
-(22, 25)
-(6, 12)
-(17, 18)
-(14, 20)
-(14, 22)
-(5, 8)
-(6, 13)
-(4, 12)
-(0, 9)
-(9, 10)
-(5, 21)
-(1, 13)
-(0, 23)
-(3, 22)
-(8, 17)
-(20, 23)
-(5, 12)
-(3, 7)
-(11, 21)
-(12, 25)
-(3, 16)
-(0, 5)
-(11, 24)
-(18, 21)
-(5, 24)
-(11, 25)
-(18, 22)
-(17, 21)
-(8, 12)
-(7, 25)
-(16, 21)
-(18, 19)
-(4, 12)
-(11, 15)
-(8, 20)
-(7, 11)
-(8, 20)
-(13, 18)
-(12, 15)
-(1, 21)
-(4, 6)
-(8, 12)
-(19, 20)
-(20, 22)
-(6, 12)
-(8, 24)
-(19, 20)
-(11, 22)
-(3, 24)
-(15, 24)
-(17, 24)
-(15, 16)
-(23, 24)
-(8, 16)
-(3, 17)
-(1, 15)
-(5, 16)
-(1, 7)
-(2, 17)
-(3, 22)
-(8, 15)
-(10, 16)
-(0, 5)
-(0, 4)
-(8, 16)
-(5, 25)
-(5, 15)
-(1, 8)
-(13, 25)
-(14, 16)
-(13, 17)
-(4, 14)
-(0, 16)
-(18, 25)
-(1, 7)
-(1, 2)
-(0, 25)
-(14, 18)
-(15, 16)
-(17, 22)
-(5, 25)
-(14, 18)
-(2, 10)
-(11, 18)
-(10, 25)
-(2, 19)
-(19, 22)
-(3, 18)
-(2, 13)
-(18, 19)
-(3, 21)
-(11, 21)
-(3, 9)
-(11, 15)
-(20, 21)
-(9, 23)
-(9, 22)
-(10, 11)
-(5, 15)
-(18, 21)
-(0, 20)
-(3, 9)
-(4, 10)
-(22, 24)
-(5, 17)
-(16, 24)
-(2, 3)
-(5, 15)
-(12, 22)
-(13, 22)
-(3, 12)
-(15, 18)
-(2, 7)
-(16, 17)
-(13, 16)
-(1, 15)
-(6, 17)
-(22, 24)
-(18, 19)
-(4, 18)
-(13, 19)
-(1, 7)
-(10, 17)
-(6, 10)
-(3, 17)
-(4, 15)
-(8, 15)
-(10, 20)
-(4, 9)
-(6, 8)
-(9, 11)
-(3, 4)
-(8, 20)
-(11, 12)
-(3, 7)
-(0, 4)
-(4, 5)
-(12, 25)
-(7, 14)
-(8, 9)
-(0, 21)
-(11, 25)
-(1, 9)
-(10, 14)
-(6, 21)
-(4, 12)
-(2, 8)
-(0, 16)
-(7, 18)
-(12, 18)
-(10, 19)
-(6, 16)
-(11, 13)
-(5, 7)
-(14, 15)
-(16, 23)
-(7, 9)
-(6, 19)
-(3, 11)
-(13, 20)
-(6, 14)
-(13, 23)
-(16, 17)
-(4, 14)
-(3, 13)
-(5, 6)
-(2, 17)
-(16, 22)
-(10, 23)
-(1, 13)
-(8, 16)
-(2, 18)
-(16, 21)
-(8, 12)
-(1, 11)
-(7, 13)
-(5, 21)
-(11, 17)
-(3, 13)
-(1, 20)
-(0, 8)
-(16, 22)
-(12, 24)
-(0, 23)
-(10, 12)
-(3, 25)
-(18, 24)
-(1, 22)
-(14, 24)
-(9, 12)
-(6, 23)
-(10, 15)
-(5, 22)
-(11, 15)
-(7, 14)
-(0, 24)
-(2, 23)
-(12, 13)
-(13, 24)
-(5, 15)
-(7, 19)
-(1, 11)
-(14, 18)
-(22, 23)
-(7, 16)
-(15, 21)
-(5, 14)
-(8, 18)
-(10, 24)
-(15, 23)
-(16, 17)
-(3, 8)
-(10, 25)
-(22, 24)
-(0, 14)
-(1, 18)
-(6, 16)
-(5, 8)
-(15, 18)
-(1, 13)
-(17, 20)
-(8, 23)
-(14, 16)
-(5, 19)
-(6, 7)
-(13, 24)
-(0, 17)
-(14, 21)
-(4, 23)
-(3, 19)
-(0, 17)
-(7, 22)
-(12, 21)
-(0, 16)
-(17, 18)
-(6, 22)
-(9, 23)
-(4, 14)
-(18, 19)
-(0, 8)
-(5, 16)
-(2, 4)
-(1, 23)
-(14, 24)
-(9, 22)
-(13, 24)
-(0, 2)
-(10, 16)
-(9, 17)
-(4, 11)
-(5, 12)
-(14, 24)
-(7, 12)
-(4, 22)
-(16, 18)
-(1, 5)
-(8, 13)
-(1, 14)
-(9, 18)
-(0, 8)
-(5, 24)
-(9, 16)
-(3, 8)
-(1, 7)
-(5, 21)
-(6, 21)
-(3, 20)
-(5, 23)
-(14, 21)
-(6, 7)
-(13, 23)
-(5, 25)
-(5, 15)
-(2, 14)
-(11, 25)
-(10, 21)
-(7, 8)
-(0, 15)
-(14, 24)
-(1, 2)
-(5, 19)
-(7, 8)
-(6, 25)
-(4, 19)
-(2, 18)
-(1, 11)
-(15, 23)
-(5, 22)
-(9, 14)
-(2, 14)
-(19, 25)
-(4, 12)
-(10, 15)
-(5, 7)
-(1, 12)
-(0, 25)
-(5, 18)
-(15, 22)
-(4, 20)
-(7, 8)
-(2, 11)
-(15, 25)
-(1, 13)
-(5, 24)
-(8, 21)
-(11, 13)
-(1, 23)
-(17, 21)
-(8, 9)
-(11, 16)
-(6, 23)
-(2, 17)
-(1, 21)
-(9, 10)
-(13, 24)
-(3, 6)
-(4, 9)
-(8, 23)
-(14, 21)
-(3, 24)
-(8, 19)
-(4, 12)
-(10, 14)
-(9, 22)
-(6, 23)
-(11, 19)
-(3, 21)
-(8, 25)
-(7, 22)
-(11, 23)
-(6, 8)
-(7, 19)
-(3, 24)
-(8, 17)
-(3, 21)
-(0, 11)
-(6, 19)
-(3, 24)
-(9, 21)
-(3, 5)
-(13, 24)
-(20, 21)
-(5, 13)
-(15, 24)
-(20, 22)
-(1, 5)
-(13, 18)
-(2, 24)
-(9, 22)
-(4, 22)
-(5, 20)
-(3, 9)
-(5, 23)
-(4, 11)
-(3, 25)
-(0, 25)
-(3, 15)
-(4, 9)
-(7, 25)
-(9, 10)
-(0, 8)
-(21, 25)
-(1, 9)
-(1, 4)
-(3, 9)
-(8, 25)
-(12, 21)
-(1, 5)
-(19, 25)
-(20, 21)
-(4, 17)
-(8, 15)
-(15, 25)
-(14, 21)
-(10, 20)
-(10, 16)
-(9, 21)
-(2, 20)
-(3, 20)
-(2, 7)
-(2, 13)
-(7, 22)
-(3, 12)
-(14, 22)
-(12, 18)
-(0, 3)
-(0, 5)
-(3, 13)
-(2, 22)
-(12, 20)
-(2, 21)
-(13, 14)
-(7, 12)
-(17, 20)
-(15, 20)
-(10, 17)
-(7, 16)
-(1, 14)
-(12, 25)
-(1, 7)
-(2, 16)
-(3, 10)
-(8, 15)
-(9, 20)
-(7, 21)
-(4, 10)
-(6, 8)
-(9, 19)
-(15, 23)
-(3, 11)
-(17, 23)
-(3, 25)
-(9, 24)
-(8, 13)
-(13, 21)
-(12, 17)
-(0, 25)
-(5, 24)
-(3, 11)
-(6, 23)
-(4, 24)
-(12, 20)
-(1, 5)
-(16, 25)
-(10, 17)
-(2, 10)
-(8, 16)
-(4, 9)
-(19, 24)
-(20, 22)
-(0, 12)
-(17, 24)
-(7, 9)
-(6, 8)
-(2, 15)
-(18, 20)
-(5, 19)
-(11, 18)
-(15, 23)
-(7, 14)
-(9, 21)
-(2, 4)
-(5, 25)
-(17, 19)
-(10, 19)
-(1, 25)
-(5, 16)
-(11, 20)
-(5, 13)
-(10, 17)
-(18, 25)
-(13, 14)
-(5, 23)
-(17, 22)
-(21, 22)
-(3, 5)
-(7, 23)
-(14, 19)
-(15, 23)
-(8, 19)
-(7, 12)
-(4, 15)
-(8, 24)
-(12, 14)
-(9, 19)
-(15, 17)
-(19, 25)
-(2, 14)
-(12, 21)
-(18, 24)
-(5, 24)
-(12, 18)
-(2, 16)
-(10, 21)
-(6, 25)
-(4, 14)
-(9, 21)
-(0, 4)
-(10, 17)
-(2, 15)
-(22, 25)
-(2, 23)
-(4, 7)
-(8, 25)
-(1, 15)
-(0, 18)
-(9, 19)
-(7, 13)
-(9, 16)
-(0, 21)
-(1, 11)
-(7, 8)
-(11, 25)
-(13, 21)
-(8, 20)
-(0, 21)
-(6, 7)
-(13, 21)
-(4, 20)
-(8, 24)
-(6, 23)
-(1, 13)
-(9, 20)
-(21, 25)
-(4, 19)
-(3, 24)
-(9, 16)
-(1, 7)
-(13, 19)
-(15, 24)
-(11, 21)
-(3, 12)
-(5, 25)
-(1, 17)
-(19, 20)
-(15, 25)
-(3, 16)
-(0, 9)
-(6, 13)
-(13, 15)
-(7, 9)
-(19, 23)
-(8, 17)
-(1, 24)
-(2, 19)
-(8, 16)
-(7, 12)
-(1, 16)
-(7, 9)
-(8, 10)
-(16, 23)
-(7, 12)
-(7, 20)
-(12, 21)
-(4, 20)
-(9, 12)
-(13, 21)
-(12, 22)
-(4, 21)
-(9, 13)
-(9, 17)
-(12, 14)
-(6, 22)
-(4, 16)
-(22, 24)
-(14, 21)
-(5, 17)
-(2, 12)
-(6, 19)
-(7, 24)
-(11, 14)
-(0, 12)
-(6, 13)
-(21, 22)
-(4, 6)
-(13, 25)
-(20, 22)
-(17, 24)
-(0, 21)
-(19, 22)
-(3, 24)
-(0, 2)
-(6, 22)
-(0, 18)
-(2, 5)
-(8, 19)
-(5, 15)
-(11, 18)
-(1, 11)
-(0, 5)
-(2, 15)
-(7, 11)
-(1, 25)
-(5, 18)
-(7, 9)
-(18, 21)
-(1, 3)
-(3, 25)
-(7, 15)
-(19, 21)
-(9, 11)
-(11, 14)
-(9, 18)
-(2, 25)
-(5, 25)
-(9, 14)
-(2, 6)
-(9, 15)
-(2, 22)
-(24, 25)
-(12, 24)
-(21, 25)
-(6, 22)
-(8, 24)
-(9, 12)
-(13, 21)
-(2, 25)
-(11, 22)
-(11, 16)
-(5, 25)
-(13, 17)
-(8, 10)
-(2, 9)
-(1, 21)
-(23, 24)
-(12, 20)
-(13, 15)
-(9, 14)
-(17, 25)
-(19, 24)
-(1, 7)
-(11, 24)
-(1, 15)
-(0, 19)
-(17, 22)
-(1, 11)
-(22, 25)
-(7, 19)
-(0, 3)
-(13, 25)
-(4, 19)
-(7, 15)
-(5, 11)
-(0, 23)
-(5, 8)
-(3, 11)
-(2, 19)
-(4, 16)
-(7, 18)
-(3, 9)
-(4, 25)
-(0, 11)
-(19, 23)
-(10, 23)
-(4, 13)
-(19, 20)
-(11, 16)
-(9, 15)
-(2, 25)
-(14, 20)
-(21, 23)
-(6, 16)
-(10, 12)
-(10, 16)
-(14, 23)
-(6, 22)
-(17, 20)
-(16, 24)
-(11, 22)
-(7, 23)
-(14, 18)
-(6, 15)
-(1, 10)
-(4, 11)
-(16, 22)
-(0, 1)
-(10, 14)
-(6, 19)
-(15, 16)
-(19, 25)
-(1, 5)
-(12, 22)
-(2, 10)
-(7, 12)
-(6, 15)
-(3, 25)
-(10, 21)
-(22, 25)
-(10, 20)
-(2, 21)
-(2, 23)
-(17, 21)
-(10, 18)
-(8, 25)
-(3, 22)
-(0, 25)
-(9, 22)
-(2, 12)
-(8, 24)
-(0, 14)
-(5, 8)
-(2, 11)
-(9, 21)
-(4, 24)
-(2, 3)
-(7, 24)
-(1, 14)
-(0, 19)
-(4, 24)
-(2, 14)
-(3, 19)
-(7, 16)
-(13, 24)
-(7, 10)
-(4, 22)
-(22, 23)
-(13, 21)
-(4, 9)
-(10, 11)
-(13, 19)
-(20, 22)
-(2, 11)
-(5, 23)
-(6, 10)
-(11, 16)
-(13, 25)
-(2, 18)
-(10, 24)
-(5, 17)
-(21, 22)
-(14, 16)
-(5, 19)
-(6, 11)
-(9, 21)
-(5, 23)
-(6, 15)
-(12, 21)
-(14, 17)
-(19, 25)
-(8, 16)
-(14, 23)
-(7, 8)
-(5, 16)
-(2, 15)
-(3, 17)
-(0, 3)
-(1, 8)
-(17, 19)
-(7, 25)
-(19, 24)
-(7, 22)
-(1, 15)
-(16, 24)
-(7, 20)
-(8, 15)
-(5, 19)
-(8, 13)
-(7, 23)
-(10, 24)
-(20, 22)
-(8, 25)
-(2, 20)
-(7, 18)
-(7, 23)
-(1, 18)
-(1, 10)
-(4, 7)
-(22, 23)
-(11, 23)
-(7, 18)
-(4, 25)
-(8, 22)
-(9, 18)
-(8, 10)
-(21, 22)
-(5, 7)
-(6, 11)
-(3, 7)
-(11, 15)
-(6, 13)
-(13, 24)
-(11, 14)
-(4, 15)
-(7, 20)
-(6, 16)
-(0, 14)
-(6, 23)
-(10, 16)
-(2, 24)
-(6, 8)
-(0, 17)
-(14, 25)
-(11, 25)
-(0, 20)
-(14, 15)
-(19, 20)
-(3, 25)
-(11, 21)
-(12, 14)
-(14, 23)
-(3, 12)
-(19, 24)
-(0, 25)
-(2, 12)
-(3, 22)
-(7, 12)
-(3, 24)
-(1, 22)
-(1, 17)
-(0, 22)
-(7, 20)
-(8, 24)
-(12, 22)
-(11, 20)
-(8, 18)
-(7, 10)
-(0, 13)
-(21, 22)
-(16, 18)
-(11, 24)
-(0, 20)
-(10, 19)
-(2, 13)
-(10, 15)
-(12, 19)
-(4, 22)
-(21, 23)
-(9, 20)
-(1, 13)
-(3, 16)
-(6, 10)
-(17, 20)
-(16, 23)
-(1, 24)
-(11, 15)
-(3, 19)
-(22, 25)
-(5, 17)
-(21, 25)
-(1, 11)
-(7, 22)
-(8, 24)
-(2, 24)
-(6, 22)
-(9, 21)
-(7, 8)
-(2, 18)
-(0, 22)
-(15, 21)
-(7, 25)
-(2, 20)
-(0, 19)
-(22, 23)
-(11, 15)
-(18, 19)
-(2, 10)
-(3, 20)
-(16, 23)
-(17, 22)
-(3, 25)
-(6, 16)
-(2, 7)
-(9, 10)
-(4, 25)
-(6, 23)
-(7, 8)
-(9, 15)
-(1, 16)
-(5, 8)
-(9, 17)
-(3, 7)
-(14, 23)
-(13, 25)
-(6, 21)
-(9, 14)
-(0, 6)
-(5, 12)
-(8, 10)
-(4, 13)
-(14, 24)
-(8, 16)
-(4, 25)
-(10, 17)
-(13, 20)
-(3, 4)
-(20, 22)
-(17, 21)
-(8, 16)
-(9, 24)
-(3, 7)
-(12, 24)
-(4, 21)
-(9, 18)
-(14, 21)
-(10, 12)
-(4, 23)
-(12, 19)
-(7, 21)
-(2, 23)
-(4, 17)
-(1, 14)
-(7, 20)
-(9, 17)
-(16, 19)
-(2, 14)
-(1, 24)
-(14, 25)
-(15, 24)
-(4, 19)
-(1, 23)
-(16, 20)
-(17, 23)
-(19, 20)
-(8, 24)
-(12, 15)
-(1, 3)
-(2, 15)
-(0, 1)
-(6, 8)
-(3, 11)
-(19, 24)
-(7, 23)
-(12, 13)
-(6, 18)
-(8, 20)
-(22, 24)
-(4, 13)
-(1, 13)
-(21, 24)
-(2, 20)
-(8, 15)
-(3, 18)
-(12, 22)
-(2, 10)
-(1, 8)
-(6, 22)
-(0, 3)
-(16, 20)
-(7, 15)
-(1, 7)
-(18, 22)
-(5, 10)
-(6, 12)
-(3, 13)
-(9, 20)
-(10, 15)
-(8, 22)
-(2, 12)
-(6, 16)
-(13, 21)
-(9, 22)
-(0, 12)
-(4, 13)
-(8, 18)
-(2, 5)
-(6, 22)
-(0, 7)
-(6, 25)
-(2, 22)
-(4, 7)
-(0, 11)
-(2, 16)
-(12, 22)
-(11, 14)
-(0, 4)
-(5, 12)
-(2, 17)
-(20, 22)
-(8, 12)
-(5, 18)
-(2, 15)
-(8, 24)
-(16, 18)
-(12, 23)
-(10, 12)
-(9, 23)
-(8, 25)
-(6, 18)
-(20, 23)
-(10, 14)
-(4, 8)
-(9, 18)
-(2, 8)
-(3, 23)
-(16, 20)
-(1, 9)
-(0, 10)
-(5, 14)
-(18, 25)
-(6, 8)
-(18, 24)
-(22, 25)
-(1, 13)
-(6, 22)
-(2, 8)
-(21, 24)
-(1, 14)
-(9, 21)
-(6, 19)
-(1, 23)
-(8, 25)
-(17, 22)
-(2, 3)
-(5, 24)
-(8, 20)
-(3, 24)
-(6, 18)
-(2, 4)
-(12, 21)
-(6, 17)
-(2, 18)
-(9, 21)
-(4, 13)
-(21, 23)
-(5, 17)
-(2, 16)
-(18, 25)
-(7, 9)
-(6, 11)
-(11, 23)
-(0, 2)
-(8, 21)
-(1, 17)
-(15, 25)
-(11, 20)
-(6, 17)
-(20, 22)
-(6, 14)
-(13, 17)
-(20, 21)
-(12, 17)
-(2, 20)
-(10, 17)
-(12, 22)
-(2, 16)
-(0, 22)
-(11, 17)
-(1, 22)
-(17, 23)
-(0, 5)
-(11, 13)
-(13, 24)
-(21, 23)
-(5, 22)
-(1, 8)
-(11, 19)
-(11, 25)
-(3, 19)
-(2, 23)
-(14, 24)
-(3, 17)
-(6, 11)
-(12, 24)
-(18, 25)
-(18, 23)
-(8, 25)
-(6, 12)
-(3, 15)
-(17, 21)
-(10, 12)
-(13, 25)
-(6, 8)
-(12, 25)
-(8, 22)
-(6, 14)
-(13, 20)
-(7, 10)
-(5, 12)
-(8, 25)
-(0, 7)
-(2, 14)
-(10, 22)
-(9, 13)
-(2, 15)
-(4, 13)
-(12, 16)
-(9, 17)
-(3, 5)
-(1, 12)
-(0, 4)
-(15, 23)
-(11, 16)
-(9, 25)
-(13, 21)
-(16, 18)
-(19, 21)
-(2, 9)
-(14, 25)
-(1, 12)
-(1, 13)
-(12, 19)
-(11, 21)
-(7, 12)
-(1, 4)
-(8, 13)
-(16, 21)
-(11, 14)
-(8, 20)
-(1, 19)
-(16, 18)
-(13, 24)
-(4, 8)
-(15, 20)
-(1, 21)
-(12, 13)
-(9, 24)
-(9, 15)
-(2, 13)
-(16, 24)
-(4, 7)
-(6, 8)
-(6, 12)
-(2, 18)
-(7, 14)
-(2, 6)
-(13, 18)
-(12, 17)
-(7, 20)
-(14, 19)
-(10, 14)
-(6, 20)
-(13, 21)
-(2, 8)
-(9, 12)
-(17, 22)
-(4, 18)
-(19, 24)
-(7, 14)
-(5, 6)
-(18, 23)
-(19, 20)
-(1, 8)
-(12, 17)
-(22, 23)
-(0, 5)
-(1, 16)
-(9, 17)
-(8, 21)
-(2, 18)
-(7, 19)
-(8, 25)
-(2, 10)
-(16, 24)
-(7, 14)
-(13, 22)
-(2, 15)
-(10, 18)
-(16, 20)
-(23, 24)
-(10, 25)
-(5, 15)
-(1, 16)
-(20, 23)
-(1, 8)
-(24, 25)
-(5, 6)
-(20, 21)
-(22, 24)
-(4, 21)
-(2, 6)
-(1, 25)
-(8, 10)
-(16, 22)
-(2, 18)
-(1, 15)
-(10, 20)
-(21, 24)
-(6, 14)
-(1, 23)
-(15, 21)
-(7, 16)
-(17, 20)
-(0, 10)
-(10, 24)
-(11, 20)
-(23, 25)
-(13, 17)
-(0, 9)
-(9, 25)
-(8, 24)
-(19, 23)
-(13, 18)
-(0, 14)
-(1, 11)
-(1, 17)
-(13, 23)
-(9, 11)
-(14, 16)
-(6, 18)
-(10, 24)
-(8, 24)
-(11, 15)
-(6, 19)
-(5, 23)
-(1, 22)
-(9, 16)
-(4, 17)
-(22, 24)
-(8, 25)
-(4, 14)
-(17, 21)
-(0, 9)
-(8, 19)
-(13, 25)
-(2, 4)
-(0, 3)
-(17, 23)
-(13, 16)
-(4, 23)
-(15, 16)
-(9, 13)
-(3, 4)
-(4, 23)
-(12, 15)
-(13, 18)
-(8, 13)
-(7, 15)
-(3, 4)
-(17, 18)
-(5, 23)
-(12, 24)
-(12, 15)
-(3, 14)
-(20, 24)
-(10, 14)
-(9, 15)
-(13, 24)
-(3, 7)
-(12, 25)
-(5, 20)
-(0, 3)
-(12, 23)
-(5, 21)
-(4, 20)
-(11, 24)
-(8, 15)
-(7, 18)
-(6, 21)
-(16, 18)
-(5, 25)
-(7, 24)
-(4, 17)
-(2, 6)
-(21, 24)
-(7, 11)
-(19, 25)
-(12, 21)
-(2, 25)
-(19, 23)
-(3, 25)
-(8, 21)
-(13, 19)
-(15, 23)
-(8, 16)
-(2, 19)
-(9, 13)
-(4, 23)
-(2, 4)
-(6, 13)
-(17, 19)
-(2, 25)
-(3, 13)
-(4, 23)
-(17, 20)
-(6, 24)
-(19, 25)
-(15, 20)
-(18, 23)
-(3, 5)
-(9, 13)
-(2, 10)
-(12, 23)
-(13, 21)
-(0, 9)
-(5, 24)
-(18, 22)
-(10, 20)
-(4, 24)
-(12, 15)
-(19, 21)
-(0, 14)
-(7, 9)
-(10, 16)
-(0, 16)
-(15, 25)
-(8, 12)
-(1, 14)
-(20, 21)
-(4, 22)
-(7, 23)
-(8, 11)
-(14, 15)
-(18, 25)
-(19, 21)
-(15, 19)
-(8, 14)
-(9, 11)
-(5, 15)
-(14, 18)
-(2, 9)
-(17, 19)
-(11, 23)
-(0, 15)
-(11, 21)
-(5, 18)
-(9, 16)
-(1, 2)
-(7, 14)
-(1, 23)
-(18, 19)
-(3, 21)
-(4, 15)
-(2, 14)
-(7, 12)
-(11, 13)
-(1, 11)
-(13, 20)
-(2, 4)
-(3, 7)
-(21, 22)
-(6, 22)
-(3, 10)
-(0, 21)
-(16, 20)
-(4, 25)
-(6, 11)
-(2, 21)
-(24, 25)
-(9, 10)
-(12, 22)
-(0, 14)
-(16, 21)
-(0, 17)
-(22, 23)
-(12, 13)
-(8, 10)
-(10, 14)
-(9, 21)
-(3, 23)
-(15, 17)
-(12, 20)
-(0, 8)
-(8, 10)
-(1, 3)
-(4, 15)
-(19, 20)
-(11, 21)
-(4, 14)
-(3, 19)
-(6, 20)
-(2, 19)
-(4, 24)
-(3, 12)
-(14, 25)
-(20, 23)
-(7, 14)
-(8, 12)
-(20, 23)
-(10, 23)
-(10, 22)
-(16, 23)
-(15, 22)
-(17, 23)
-(4, 10)
-(5, 17)
-(10, 24)
-(1, 23)
-(6, 15)
-(4, 20)
-(11, 22)
-(8, 17)
-(3, 24)
-(18, 22)
-(10, 19)
-(5, 21)
-(18, 19)
-(8, 13)
-(5, 12)
-(3, 21)
-(7, 22)
-(6, 12)
-(5, 23)
-(1, 3)
-(2, 13)
-(5, 23)
-(1, 11)
-(13, 20)
-(3, 7)
-(4, 6)
-(5, 21)
-(6, 13)
-(4, 17)
-(1, 20)
-(11, 25)
-(5, 24)
-(16, 17)
-(13, 15)
-(9, 16)
-(10, 13)
-(5, 12)
-(16, 20)
-(6, 9)
-(10, 18)
-(12, 22)
-(2, 5)
-(0, 9)
-(8, 12)
-(22, 25)
-(2, 7)
-(16, 23)
-(5, 21)
-(13, 23)
-(12, 17)
-(16, 24)
-(11, 22)
-(7, 8)
-(19, 25)
-(11, 18)
-(17, 21)
-(14, 19)
-(16, 18)
-(9, 17)
-(21, 25)
-(19, 21)
-(9, 13)
-(12, 25)
-(0, 17)
-(12, 15)
-(0, 3)
-(14, 21)
-(10, 13)
-(1, 25)
-(8, 9)
-(3, 8)
-(0, 23)
-(9, 11)
-(2, 14)
-(6, 12)
-(13, 17)
-(5, 21)
-(4, 23)
-(11, 22)
-(6, 25)
-(6, 9)
-(19, 22)
-(21, 25)
-(1, 4)
-(18, 19)
-(12, 22)
-(1, 2)
-(4, 7)
-(1, 14)
-(7, 13)
-(22, 24)
-(11, 13)
-(1, 2)
-(12, 14)
-(7, 25)
-(14, 19)
-(2, 10)
-(1, 9)
-(7, 20)
-(13, 25)
-(11, 16)
-(8, 16)
-(13, 21)
-(2, 23)
-(17, 19)
-(18, 20)
-(4, 8)
-(3, 23)
-(17, 24)
-(1, 20)
-(18, 19)
-(12, 13)
-(10, 23)
-(18, 19)
-(3, 15)
-(21, 24)
-(7, 13)
-(12, 14)
-(5, 17)
-(17, 22)
-(9, 21)
-(6, 14)
-(6, 8)
-(21, 22)
-(5, 21)
-(6, 15)
-(8, 25)
-(8, 12)
-(14, 25)
-(1, 6)
-(23, 25)
-(12, 21)
-(1, 7)
-(8, 15)
-(8, 13)
-(0, 7)
-(9, 25)
-(6, 15)
-(1, 11)
-(6, 8)
-(9, 18)
-(11, 23)
-(24, 25)
-(10, 13)
-(7, 21)
-(4, 9)
-(6, 17)
-(7, 12)
-(14, 18)
-(23, 25)
-(13, 22)
-(8, 19)
-(0, 10)
-(20, 22)
-(14, 23)
-(10, 19)
-(2, 4)
-(7, 25)
-(8, 18)
-(17, 23)
-(14, 24)
-(2, 19)
-(15, 25)
-(4, 14)
-(2, 19)
-(16, 17)
-(23, 24)
-(3, 24)
-(10, 14)
-(17, 20)
-(4, 21)
-(9, 16)
-(10, 23)
-(19, 20)
-(3, 6)
-(1, 16)
-(4, 11)
-(17, 21)
-(1, 7)
-(0, 17)
-(9, 23)
-(2, 10)
-(10, 16)
-(2, 14)
-(9, 25)
-(12, 23)
-(10, 20)
-(3, 12)
-(2, 24)
-(8, 16)
-(14, 21)
-(13, 23)
-(1, 24)
-(0, 21)
-(8, 12)
-(11, 13)
-(2, 5)
-(13, 15)
-(1, 22)
-(9, 11)
-(12, 20)
-(5, 25)
-(2, 18)
-(9, 13)
-(14, 20)
-(11, 24)
-(15, 17)
-(1, 3)
-(23, 25)
-(8, 23)
-(1, 10)
-(0, 20)
-(17, 21)
-(11, 19)
-(14, 18)
-(4, 25)
-(2, 14)
-(8, 16)
-(11, 12)
-(4, 10)
-(1, 9)
-(17, 25)
-(4, 6)
-(2, 19)
-(14, 24)
-(7, 8)
-(3, 19)
-(6, 22)
-(2, 8)
-(2, 12)
-(3, 4)
-(5, 6)
-(8, 9)
-(4, 13)
-(3, 9)
-(7, 8)
-(5, 14)
-(8, 15)
-(0, 5)
-(7, 11)
-(3, 17)
-(1, 14)
-(13, 22)
-(10, 13)
-(14, 24)
-(7, 12)
-(1, 21)
-(19, 22)
-(1, 6)
-(2, 13)
-(3, 24)
-(12, 15)
-(18, 21)
-(6, 14)
-(1, 18)
-(2, 3)
-(0, 21)
-(2, 4)
-(1, 6)
-(0, 9)
-(19, 21)
-(6, 25)
-(1, 17)
-(5, 21)
-(0, 2)
-(19, 22)
-(22, 23)
-(14, 19)
-(5, 12)
-(7, 14)
-(6, 22)
-(4, 23)
-(13, 19)
-(9, 19)
-(14, 17)
-(2, 23)
-(6, 10)
-(13, 18)
-(3, 7)
-(18, 20)
-(0, 23)
-(8, 13)
-(3, 19)
-(10, 16)
-(7, 17)
-(12, 17)
-(20, 25)
-(14, 16)
-(3, 11)
-(0, 10)
-(4, 18)
-(7, 15)
-(5, 25)
-(12, 17)
-(4, 24)
-(3, 15)
-(9, 17)
-(3, 11)
-(8, 24)
-(12, 18)
-(13, 24)
-(4, 9)
-(12, 20)
-(8, 21)
-(3, 22)
-(3, 14)
-(18, 21)
-(15, 20)
-(2, 24)
-(2, 17)
-(8, 14)
-(18, 19)
-(1, 20)
-(6, 15)
-(1, 22)
-(15, 25)
-(2, 5)
-(16, 17)
-(19, 23)
-(15, 21)
-(5, 8)
-(2, 8)
-(5, 25)
-(11, 15)
-(11, 21)
-(18, 25)
-(2, 12)
-(3, 5)
-(3, 9)
-(19, 25)
-(2, 4)
-(1, 11)
-(15, 25)
-(2, 20)
-(5, 9)
-(1, 24)
-(4, 22)
-(3, 7)
-(7, 11)
-(9, 13)
-(17, 24)
-(2, 3)
-(4, 14)
-(8, 24)
-(17, 19)
-(13, 21)
-(4, 7)
-(9, 23)
-(18, 24)
-(19, 23)
-(7, 15)
-(8, 19)
-(4, 7)
-(3, 24)
-(3, 21)
-(4, 18)
-(7, 15)
-(24, 25)
-(3, 4)
-(6, 7)
-(3, 18)
-(7, 12)
-(0, 6)
-(0, 2)
-(7, 20)
-(6, 18)
-(3, 9)
-(2, 18)
-(0, 11)
-(15, 20)
-(1, 20)
-(8, 15)
-(4, 11)
-(0, 16)
-(3, 18)
-(2, 7)
-(8, 19)
-(12, 18)
-(7, 10)
-(1, 11)
-(20, 23)
-(0, 22)
-(0, 6)
-(10, 16)
-(8, 15)
-(23, 24)
-(11, 21)
-(9, 11)
-(21, 25)
-(17, 24)
-(6, 22)
-(4, 15)
-(3, 11)
-(20, 25)
-(14, 25)
-(3, 12)
-(11, 23)
-(16, 20)
-(7, 16)
-(14, 19)
-(4, 23)
-(21, 23)
-(8, 16)
-(1, 19)
-(2, 8)
-(7, 19)
-(3, 16)
-(8, 11)
-(17, 19)
-(2, 10)
-(7, 13)
-(18, 19)
-(1, 13)
-(8, 10)
-(11, 12)
-(19, 20)
-(5, 18)
-(7, 8)
-(2, 18)
-(20, 23)
-(5, 15)
-(4, 19)
-(15, 16)
-(5, 7)
-(2, 6)
-(9, 18)
-(9, 24)
-(3, 18)
-(10, 15)
-(2, 23)
-(2, 22)
-(1, 9)
-(16, 18)
-(10, 20)
-(17, 23)
-(12, 15)
-(8, 20)
-(0, 16)
-(1, 2)
-(13, 15)
-(12, 24)
-(21, 23)
-(16, 25)
-(0, 18)
-(3, 24)
-(11, 13)
-(15, 21)
-(19, 24)
-(4, 13)
-(10, 11)
-(3, 15)
-(2, 21)
-(6, 16)
-(18, 25)
-(11, 15)
-(22, 24)
-(12, 13)
-(16, 19)
-(18, 20)
-(5, 6)
-(4, 21)
-(18, 25)
-(14, 24)
-(4, 10)
-(6, 13)
-(5, 15)
-(4, 18)
-(2, 14)
-(10, 25)
-(8, 14)
-(10, 21)
-(2, 8)
-(9, 10)
-(2, 23)
-(10, 11)
-(5, 8)
-(5, 16)
-(10, 12)
-(21, 23)
-(8, 11)
-(5, 13)
-(18, 23)
-(9, 21)
-(11, 19)
-(0, 11)
-(6, 19)
-(14, 23)
-(1, 21)
-(9, 20)
-(4, 11)
-(0, 12)
-(10, 21)
-(3, 14)
-(13, 19)
-(1, 7)
-(16, 19)
-(1, 13)
-(7, 8)
-(14, 25)
-(19, 22)
-(6, 25)
-(14, 18)
-(8, 9)
-(16, 24)
-(17, 25)
-(9, 21)
-(16, 20)
-(0, 24)
-(3, 22)
-(12, 16)
-(10, 20)
-(4, 22)
-(8, 9)
-(6, 10)
-(22, 25)
-(8, 12)
-(7, 20)
-(3, 16)
-(2, 20)
-(3, 19)
-(7, 22)
-(8, 15)
-(4, 16)
-(0, 6)
-(4, 24)
-(7, 18)
-(2, 10)
-(6, 17)
-(11, 16)
-(5, 7)
-(10, 19)
-(17, 18)
-(6, 16)
-(4, 21)
-(22, 24)
-(9, 19)
-(8, 10)
-(5, 14)
-(3, 24)
-(2, 19)
-(6, 24)
-(9, 11)
-(8, 22)
-(2, 13)
-(1, 19)
-(6, 25)
-(2, 20)
-(1, 16)
-(19, 21)
-(2, 10)
-(13, 19)
-(1, 4)
-(9, 20)
-(7, 21)
-(12, 21)
-(13, 15)
-(0, 19)
-(1, 9)
-(7, 11)
-(2, 24)
-(23, 24)
-(17, 21)
-(4, 13)
-(7, 19)
-(13, 16)
-(14, 17)
-(21, 22)
-(1, 24)
-(17, 18)
-(0, 24)
-(21, 25)
-(20, 22)
-(10, 18)
-(11, 17)
-(3, 25)
-(15, 21)
-(1, 22)
-(1, 7)
-(12, 25)
-(13, 21)
-(5, 15)
-(12, 16)
-(0, 13)
-(3, 5)
-(11, 16)
-(3, 4)
-(10, 12)
-(6, 16)
-(11, 21)
-(9, 10)
-(4, 5)
-(12, 23)
-(6, 20)
-(8, 16)
-(7, 21)
-(12, 19)
-(16, 25)
-(12, 14)
-(2, 19)
-(15, 25)
-(0, 19)
-(12, 24)
-(16, 18)
-(17, 24)
-(5, 15)
-(0, 1)
-(2, 16)
-(12, 21)
-(3, 25)
-(1, 24)
-(3, 11)
-(7, 25)
-(0, 6)
-(4, 5)
-(8, 15)
-(1, 5)
-(19, 24)
-(15, 20)
-(7, 12)
-(4, 14)
-(10, 14)
-(20, 22)
-(7, 12)
-(8, 19)
-(15, 20)
-(13, 22)
-(4, 20)
-(12, 15)
-(2, 22)
-(4, 12)
-(20, 23)
-(2, 21)
-(6, 22)
-(16, 20)
-(2, 12)
-(0, 23)
-(9, 21)
-(18, 23)
-(1, 16)
-(20, 25)
-(11, 18)
-(3, 23)
-(5, 25)
-(20, 22)
-(0, 18)
-(1, 3)
-(5, 19)
-(17, 23)
-(8, 20)
-(3, 25)
-(0, 10)
-(5, 18)
-(1, 21)
-(19, 21)
-(0, 15)
-(4, 10)
-(10, 14)
-(7, 19)
-(4, 12)
-(0, 21)
-(12, 17)
-(8, 14)
-(0, 20)
-(12, 24)
-(5, 14)
-(17, 23)
-(7, 20)
-(13, 14)
-(17, 22)
-(9, 23)
-(17, 18)
-(23, 24)
-(16, 22)
-(11, 13)
-(0, 22)
-(2, 18)
-(17, 19)
-(24, 25)
-(5, 23)
-(13, 14)
-(21, 23)
-(14, 24)
-(6, 17)
-(1, 19)
-(11, 22)
-(0, 7)
-(12, 25)
-(18, 23)
-(6, 9)
-(4, 25)
-(20, 21)
-(10, 12)
-(17, 20)
-(2, 4)
-(12, 22)
-(9, 13)
-(6, 8)
-(5, 23)
-(2, 15)
-(4, 10)
-(5, 20)
-(1, 6)
-(17, 21)
-(6, 13)
-(0, 4)
-(1, 12)
-(15, 20)
-(9, 13)
-(11, 20)
-(6, 22)
-(12, 25)
-(10, 15)
-(1, 16)
-(11, 14)
-(1, 8)
-(10, 16)
-(13, 19)
-(12, 23)
-(5, 20)
-(9, 21)
-(12, 25)
-(4, 9)
-(19, 22)
-(11, 13)
-(19, 20)
-(12, 21)
-(7, 22)
-(24, 25)
-(11, 21)
-(17, 19)
-(0, 22)
-(7, 18)
-(23, 25)
-(9, 12)
-(14, 18)
-(6, 12)
-(19, 25)
-(2, 9)
-(7, 14)
-(3, 6)
-(18, 20)
-(2, 23)
-(7, 16)
-(17, 20)
-(14, 25)
-(3, 13)
-(7, 16)
-(2, 20)
-(5, 17)
-(14, 18)
-(20, 23)
-(2, 6)
-(14, 25)
-(7, 16)
-(5, 18)
-(17, 21)
-(6, 16)
-(15, 23)
-(2, 8)
-(9, 21)
-(5, 24)
-(7, 20)
-(17, 23)
-(8, 14)
-(10, 20)
-(0, 7)
-(14, 25)
-(1, 17)
-(18, 23)
-(0, 4)
-(10, 19)
-(13, 18)
-(7, 19)
-(12, 23)
-(0, 2)
-(11, 19)
-(13, 14)
-(2, 15)
-(6, 7)
-(1, 7)
-(4, 11)
-(6, 16)
-(19, 22)
-(2, 9)
-(1, 14)
-(10, 16)
-(3, 19)
-(9, 15)
-(6, 20)
-(11, 22)
-(2, 19)
-(15, 21)
-(5, 22)
-(3, 17)
-(0, 20)
-(5, 17)
-(19, 25)
-(12, 21)
-(0, 24)
-(9, 12)
-(18, 21)
-(0, 4)
-(0, 17)
-(8, 21)
-(10, 12)
-(4, 7)
-(6, 9)
-(2, 17)
-(9, 25)
-(4, 22)
-(10, 20)
-(3, 6)
-(2, 5)
-(9, 13)
-(0, 6)
-(4, 20)
-(3, 15)
-(15, 24)
-(3, 11)
-(13, 17)
-(0, 8)
-(5, 18)
-(16, 18)
-(6, 15)
-(11, 12)
-(3, 7)
-(8, 14)
-(3, 13)
-(11, 21)
-(10, 12)
-(1, 8)
-(9, 18)
-(6, 17)
-(13, 16)
-(5, 21)
-(9, 19)
-(6, 14)
-(7, 10)
-(17, 23)
-(5, 20)
-(16, 24)
-(1, 7)
-(15, 21)
-(10, 12)
-(4, 23)
-(2, 20)
-(16, 25)
-(9, 12)
-(5, 17)
-(7, 17)
-(0, 20)
-(5, 11)
-(1, 16)
-(4, 16)
-(11, 21)
-(17, 24)
-(0, 2)
-(10, 20)
-(0, 16)
-(4, 7)
-(6, 17)
-(2, 20)
-(10, 14)
-(21, 23)
-(7, 9)
-(16, 22)
-(14, 15)
-(1, 6)
-(4, 5)
-(10, 17)
-(15, 20)
-(1, 2)
-(6, 10)
-(0, 4)
-(14, 17)
-(10, 16)
-(4, 8)
-(1, 13)
-(15, 18)
-(0, 24)
-(2, 15)
-(8, 18)
-(3, 4)
-(0, 1)
-(1, 16)
-(0, 19)
-(15, 21)
-(2, 15)
-(19, 25)
-(11, 21)
-(15, 23)
-(2, 10)
-(4, 19)
-(8, 25)
-(19, 20)
-(12, 25)
-(2, 18)
-(11, 12)
-(8, 25)
-(16, 19)
-(2, 7)
-(0, 16)
-(13, 25)
-(8, 14)
-(10, 19)
-(8, 9)
-(7, 16)
-(10, 24)
-(3, 25)
-(9, 25)
-(10, 15)
-(3, 8)
-(10, 16)
-(3, 13)
-(6, 9)
-(2, 8)
-(1, 8)
-(13, 23)
-(0, 6)
-(10, 15)
-(10, 16)
-(18, 23)
-(1, 10)
-(12, 23)
-(3, 18)
-(13, 16)
-(3, 5)
-(20, 23)
-(12, 25)
-(0, 13)
-(3, 22)
-(20, 25)
-(15, 23)
-(5, 19)
-(1, 19)
-(8, 23)
-(3, 16)
-(14, 22)
-(5, 10)
-(1, 9)
-(10, 14)
-(15, 22)
-(2, 16)
-(0, 3)
-(14, 23)
-(16, 21)
-(0, 19)
-(2, 25)
-(3, 11)
-(1, 17)
-(3, 18)
-(4, 25)
-(6, 17)
-(20, 21)
-(2, 17)
-(10, 18)
-(3, 24)
-(1, 4)
-(6, 22)
-(1, 9)
-(14, 17)
-(3, 7)
-(4, 19)
-(22, 24)
-(10, 15)
-(1, 16)
-(2, 22)
-(14, 24)
-(7, 17)
-(12, 15)
-(10, 20)
-(7, 23)
-(11, 20)
-(0, 10)
-(3, 22)
-(9, 14)
-(1, 11)
-(7, 16)
-(20, 25)
-(9, 17)
-(10, 15)
-(0, 8)
-(14, 25)
-(9, 13)
-(17, 19)
-(1, 12)
-(9, 24)
-(13, 19)
-(14, 21)
-(1, 3)
-(11, 25)
-(17, 23)
-(0, 14)
-(9, 10)
-(3, 12)
-(14, 22)
-(10, 24)
-(8, 9)
-(0, 12)
-(10, 20)
-(2, 9)
-(18, 24)
-(11, 12)
-(18, 22)
-(3, 11)
-(9, 24)
-(5, 10)
-(6, 12)
-(12, 25)
-(9, 20)
-(6, 8)
-(2, 24)
-(11, 19)
-(16, 18)
-(3, 17)
-(12, 19)
-(7, 18)
-(11, 17)
-(1, 2)
-(3, 23)
-(24, 25)
-(0, 9)
-(17, 22)
-(19, 25)
-(2, 24)
-(11, 20)
-(5, 9)
-(1, 16)
-(0, 6)
-(15, 20)
-(5, 10)
-(3, 9)
-(14, 17)
-(6, 22)
-(5, 8)
-(1, 15)
-(2, 6)
-(18, 20)
-(9, 25)
-(10, 21)
-(3, 8)
-(4, 5)
-(6, 24)
-(17, 18)
-(11, 21)
-(1, 19)
-(10, 12)
-(0, 11)
-(12, 22)
-(1, 6)
-(0, 3)
-(13, 22)
-(5, 11)
-(0, 1)
-(5, 23)
-(3, 14)
-(10, 22)
-(19, 23)
-(10, 13)
-(18, 22)
-(3, 5)
-(6, 23)
-(5, 9)
-(3, 16)
-(19, 24)
-(22, 25)
-(5, 14)
-(4, 19)
-(7, 24)
-(11, 16)
-(7, 8)
-(15, 16)
-(6, 24)
-(1, 14)
-(3, 4)
-(19, 22)
-(5, 19)
-(2, 24)
-(7, 12)
-(8, 23)
-(3, 25)
-(4, 10)
-(4, 13)
-(6, 8)
-(23, 25)
-(0, 10)
-(12, 14)
-(2, 9)
-(10, 15)
-(11, 13)
-(18, 25)
-(2, 20)
-(6, 9)
-(4, 16)
-(0, 7)
-(7, 25)
-(1, 13)
-(0, 8)
-(9, 16)
-(14, 18)
-(2, 21)
-(11, 17)
-(1, 15)
-(2, 20)
-(18, 22)
-(12, 17)
-(21, 25)
-(0, 17)
-(1, 13)
-(8, 12)
-(14, 20)
-(1, 10)
-(13, 24)
-(3, 20)
-(14, 18)
-(0, 22)
-(22, 24)
-(3, 17)
-(20, 23)
-(1, 4)
-(10, 11)
-(4, 6)
-(10, 21)
-(7, 22)
-(22, 24)
-(6, 9)
-(9, 17)
-(24, 25)
-(7, 22)
-(4, 7)
-(1, 22)
-(12, 17)
-(10, 22)
-(5, 12)
-(7, 8)
-(1, 25)
-(7, 19)
-(24, 25)
-(8, 23)
-(3, 19)
-(5, 25)
-(15, 23)
-(6, 24)
-(16, 19)
-(3, 4)
-(3, 21)
-(7, 19)
-(4, 22)
-(13, 16)
-(13, 17)
-(2, 19)
-(7, 18)
-(1, 21)
-(0, 4)
-(4, 15)
-(1, 24)
-(7, 11)
-(13, 21)
-(2, 3)
-(9, 18)
-(18, 25)
-(0, 11)
-(16, 24)
-(3, 12)
-(2, 8)
-(0, 14)
-(2, 13)
-(6, 8)
-(15, 24)
-(10, 18)
-(8, 12)
-(10, 11)
-(19, 24)
-(2, 23)
-(13, 18)
-(13, 25)
-(1, 8)
-(10, 11)
-(2, 6)
-(8, 14)
-(11, 22)
-(6, 21)
-(1, 12)
-(12, 20)
-(15, 22)
-(1, 23)
-(5, 6)
-(19, 21)
-(7, 8)
-(1, 4)
-(12, 16)
-(8, 24)
-(17, 23)
-(6, 14)
-(4, 20)
-(2, 24)
-(5, 6)
-(15, 16)
-(21, 23)
-(7, 20)
-(11, 16)
-(6, 14)
-(3, 4)
-(6, 10)
-(16, 22)
-(9, 14)
-(5, 16)
-(1, 10)
-(6, 17)
-(3, 9)
-(14, 24)
-(17, 25)
-(10, 12)
-(5, 21)
-(6, 13)
-(9, 24)
-(16, 24)
-(10, 15)
-(4, 13)
-(0, 12)
-(2, 6)
-(0, 11)
-(16, 24)
-(4, 6)
-(3, 15)
-(10, 23)
-(12, 19)
-(3, 22)
-(2, 19)
-(15, 18)
-(1, 11)
-(16, 24)
-(0, 11)
-(2, 25)
-(12, 24)
-(10, 16)
-(8, 22)
-(1, 17)
-(14, 15)
-(18, 20)
-(17, 24)
-(0, 22)
-(2, 15)
-(1, 23)
-(18, 19)
-(14, 21)
-(3, 16)
-(5, 10)
-(0, 8)
-(7, 19)
-(3, 6)
-(20, 23)
-(1, 18)
-(3, 14)
-(6, 13)
-(20, 21)
-(8, 24)
-(0, 7)
-(1, 9)
-(4, 13)
-(21, 25)
-(6, 19)
-(9, 11)
-(7, 15)
-(1, 17)
-(8, 23)
-(8, 12)
-(19, 22)
-(9, 25)
-(4, 13)
-(1, 15)
-(11, 18)
-(7, 22)
-(8, 17)
-(4, 13)
-(5, 25)
-(4, 11)
-(22, 23)
-(15, 25)
-(3, 17)
-(2, 8)
-(5, 8)
-(2, 12)
-(6, 11)
-(7, 17)
-(4, 16)
-(10, 23)
-(19, 23)
-(0, 2)
-(1, 6)
-(9, 12)
-(16, 21)
-(9, 22)
-(12, 19)
-(0, 5)
-(1, 11)
-(2, 8)
-(1, 24)
-(4, 11)
-(17, 19)
-(1, 3)
-(10, 24)
-(11, 20)
-(15, 24)
-(20, 25)
-(21, 25)
-(15, 19)
-(14, 20)
-(17, 24)
-(6, 25)
-(14, 23)
-(13, 21)
-(4, 20)
-(3, 13)
-(12, 14)
-(4, 22)
-(4, 16)
-(3, 5)
-(7, 22)
-(14, 25)
-(16, 18)
-(4, 6)
-(5, 19)
-(17, 18)
-(4, 21)
-(6, 11)
-(11, 18)
-(20, 21)
-(16, 20)
-(4, 16)
-(4, 13)
-(0, 16)
-(4, 17)
-(13, 14)
-(7, 13)
-(17, 23)
-(5, 14)
-(4, 25)
-(2, 7)
-(10, 17)
-(11, 13)
-(4, 24)
-(14, 23)
-(13, 15)
-(2, 25)
-(14, 17)
-(21, 23)
-(1, 4)
-(12, 25)
-(1, 15)
-(16, 17)
-(14, 23)
-(8, 13)
-(2, 22)
-(16, 18)
-(11, 14)
-(2, 5)
-(6, 12)
-(4, 13)
-(14, 22)
-(13, 24)
-(5, 15)
-(6, 19)
-(2, 25)
-(9, 11)
-(6, 21)
-(10, 13)
-(19, 25)
-(6, 18)
-(19, 22)
-(13, 17)
-(10, 16)
-(2, 19)
-(4, 13)
-(10, 15)
-(8, 18)
-(6, 21)
-(4, 17)
-(18, 23)
-(19, 24)
-(3, 6)
-(1, 13)
-(19, 24)
-(1, 21)
-(6, 13)
-(4, 18)
-(3, 7)
-(19, 22)
-(1, 14)
-(2, 3)
-(4, 18)
-(6, 25)
-(0, 13)
-(0, 2)
-(4, 24)
-(5, 14)
-(18, 25)
-(13, 15)
-(15, 16)
-(13, 19)
-(5, 22)
-(0, 3)
-(4, 9)
-(9, 10)
-(19, 21)
-(1, 22)
-(16, 17)
-(0, 5)
-(4, 11)
-(17, 23)
-(4, 8)
-(6, 9)
-(10, 13)
-(0, 7)
-(2, 6)
-(9, 11)
-(20, 23)
-(8, 16)
-(10, 21)
-(10, 22)
-(1, 9)
-(3, 11)
-(5, 20)
-(3, 21)
-(1, 13)
-(9, 22)
-(10, 16)
-(3, 19)
-(15, 21)
-(3, 19)
\ No newline at end of file
+++ /dev/null
-(2, 5)
-(1, 4)
-(0, 3)
-(0, 3)
-(0, 5)
-(3, 5)
-(0, 2)
-(3, 4)
-(2, 4)
-(1, 2)
-(0, 4)
-(1, 2)
-(2, 4)
-(0, 4)
-(1, 4)
\ No newline at end of file
+++ /dev/null
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import collections\n",
- "import random\n",
- "import string\n",
- "import itertools"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "Link = collections.namedtuple('Link', 'height left right')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def link_ends(link):\n",
- " return set((link.left, link.right))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def can_add(link, links):\n",
- " ends = link_ends(link)\n",
- " same_height_links = [l for l in links if l.height == link.height]\n",
- " return all(ends.isdisjoint(link_ends(l)) for l in same_height_links)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def make_net(num_links, lines=10, height=50):\n",
- " links = set()\n",
- " while len(links) < num_links:\n",
- " a = random.randrange(lines)\n",
- " b = random.randrange(lines)\n",
- " if a != b:\n",
- " l = min(a, b)\n",
- " r = max(a, b)\n",
- " h = random.randrange(height)\n",
- " link = Link(h, l, r)\n",
- " if can_add(link, links):\n",
- " links.add(link)\n",
- " return links"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "{Link(height=4, left=0, right=3),\n",
- " Link(height=8, left=1, right=5),\n",
- " Link(height=16, left=0, right=4),\n",
- " Link(height=17, left=1, right=5),\n",
- " Link(height=18, left=3, right=5),\n",
- " Link(height=20, left=0, right=1),\n",
- " Link(height=25, left=0, right=3),\n",
- " Link(height=30, left=1, right=4),\n",
- " Link(height=33, left=0, right=4),\n",
- " Link(height=34, left=4, right=5),\n",
- " Link(height=35, left=0, right=3),\n",
- " Link(height=36, left=1, right=4),\n",
- " Link(height=37, left=2, right=5),\n",
- " Link(height=45, left=4, right=5),\n",
- " Link(height=46, left=2, right=5)}"
- ]
- },
- "execution_count": 41,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "net = make_net(15, lines=6)\n",
- "net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow(initial_line, links):\n",
- " line = initial_line\n",
- " heights = sorted(set(l.height for l in links))\n",
- " for h in heights:\n",
- " for l in [l for l in links if l.height == h]:\n",
- " if line in link_ends(l):\n",
- " line = [e for e in link_ends(l) if e != line][0]\n",
- "# print(l, line)\n",
- " return line"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "3"
- ]
- },
- "execution_count": 43,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "follow(4, net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def pack(net):\n",
- " packed_links = []\n",
- " line_heights = collections.defaultdict(lambda: -1)\n",
- " for link in sorted(net):\n",
- " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
- " line_heights[link.left] = link_height\n",
- " line_heights[link.right] = link_height\n",
- " packed_links += [Link(link_height, link.left, link.right)]\n",
- " return sorted(packed_links)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow_many_slow(in_sequence, links):\n",
- " out_sequence = [(follow(i, links), term) \n",
- " for i, term in enumerate(in_sequence)]\n",
- " return [term for i, term in sorted(out_sequence)]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow_many(in_sequence, net):\n",
- " height_groups = [list(g) for _, g in itertools.groupby(pack(net), lambda l: l.height)]\n",
- " seq = list(in_sequence)\n",
- " for links in height_groups:\n",
- " for link in links:\n",
- "# l = seq[link.left]\n",
- "# r = seq[link.right]\n",
- "# seq[link.right] = l\n",
- "# seq[link.left] = r\n",
- " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
- " return seq"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10000 loops, best of 3: 39.2 µs per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many('abcdef', net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# %%timeit\n",
- "# follow_many_slow('abcdefghij', net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def show_net(links, randomise=False, pair_sep=', '):\n",
- " if randomise:\n",
- " output = []\n",
- " heights = sorted(set(l.height for l in links))\n",
- " for h in heights:\n",
- " ls = [l for l in links if l.height == h]\n",
- " random.shuffle(ls)\n",
- " output += ['({}, {})'.format(l.left, l.right) for l in ls]\n",
- " return pair_sep.join(output)\n",
- " return pair_sep.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'"
- ]
- },
- "execution_count": 50,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "show_net(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'"
- ]
- },
- "execution_count": 51,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "show_net(net, randomise=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'(0, 3) : (1, 5) : (0, 4) : (1, 5) : (3, 5) : (0, 1) : (0, 3) : (1, 4) : (0, 4) : (4, 5) : (0, 3) : (1, 4) : (2, 5) : (4, 5) : (2, 5)'"
- ]
- },
- "execution_count": 52,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "show_net(net, pair_sep=' : ')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'(0, 3)\\n(1, 5)\\n(0, 4)\\n(1, 5)\\n(3, 5)\\n(0, 1)\\n(0, 3)\\n(1, 4)\\n(0, 4)\\n(4, 5)\\n(0, 3)\\n(1, 4)\\n(2, 5)\\n(4, 5)\\n(2, 5)'"
- ]
- },
- "execution_count": 53,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "show_net(net, pair_sep='\\n')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "(0, 3)\n",
- "(1, 5)\n",
- "(0, 4)\n",
- "(1, 5)\n",
- "(3, 5)\n",
- "(0, 1)\n",
- "(0, 3)\n",
- "(1, 4)\n",
- "(0, 4)\n",
- "(4, 5)\n",
- "(0, 3)\n",
- "(1, 4)\n",
- "(2, 5)\n",
- "(4, 5)\n",
- "(2, 5)\n"
- ]
- }
- ],
- "source": [
- "print(show_net(net, pair_sep='\\n'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {},
- "outputs": [],
- "source": [
- "# open('04-small.txt', 'w').write(show_net(net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 56,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'"
- ]
- },
- "execution_count": 56,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "show_net(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 57,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "ls = [l for l in net if l.height == 1]\n",
- "ls"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "random.shuffle(ls)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 59,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def read_net(net_string):\n",
- " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def extract_pairs(net_string):\n",
- " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "net = read_net('(1, 5), (2, 4), (0, 2), (0, 4), (0, 1), (0, 2), (1, 5), (0, 3), (1, 2), (4, 5), (0, 5), (3, 5), (1, 4), (0, 1), (2, 3)')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=1, right=5),\n",
- " Link(height=1, left=2, right=4),\n",
- " Link(height=2, left=0, right=2),\n",
- " Link(height=3, left=0, right=4),\n",
- " Link(height=4, left=0, right=1),\n",
- " Link(height=5, left=0, right=2),\n",
- " Link(height=6, left=1, right=5),\n",
- " Link(height=7, left=0, right=3),\n",
- " Link(height=8, left=1, right=2),\n",
- " Link(height=9, left=4, right=5),\n",
- " Link(height=10, left=0, right=5),\n",
- " Link(height=11, left=3, right=5),\n",
- " Link(height=12, left=1, right=4),\n",
- " Link(height=13, left=0, right=1),\n",
- " Link(height=14, left=2, right=3)]"
- ]
- },
- "execution_count": 62,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "read_net(show_net(net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=1, right=5),\n",
- " Link(height=0, left=2, right=4),\n",
- " Link(height=1, left=0, right=2),\n",
- " Link(height=2, left=0, right=4),\n",
- " Link(height=3, left=0, right=1),\n",
- " Link(height=4, left=0, right=2),\n",
- " Link(height=4, left=1, right=5),\n",
- " Link(height=5, left=0, right=3),\n",
- " Link(height=5, left=1, right=2),\n",
- " Link(height=5, left=4, right=5),\n",
- " Link(height=6, left=0, right=5),\n",
- " Link(height=6, left=1, right=4),\n",
- " Link(height=7, left=0, right=1),\n",
- " Link(height=7, left=3, right=5),\n",
- " Link(height=8, left=2, right=3)]"
- ]
- },
- "execution_count": 63,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "pack(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=1, right=5),\n",
- " Link(height=0, left=2, right=4),\n",
- " Link(height=1, left=0, right=2),\n",
- " Link(height=2, left=0, right=4),\n",
- " Link(height=3, left=0, right=1),\n",
- " Link(height=4, left=0, right=2),\n",
- " Link(height=4, left=1, right=5),\n",
- " Link(height=5, left=0, right=3),\n",
- " Link(height=5, left=1, right=2),\n",
- " Link(height=5, left=4, right=5),\n",
- " Link(height=6, left=0, right=5),\n",
- " Link(height=6, left=1, right=4),\n",
- " Link(height=7, left=0, right=1),\n",
- " Link(height=7, left=3, right=5),\n",
- " Link(height=8, left=2, right=3)]"
- ]
- },
- "execution_count": 64,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "pack(read_net(show_net(net)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 65,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(True, True)"
- ]
- },
- "execution_count": 65,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "pnet = pack(net)\n",
- "rrnet = read_net(show_net(net, randomise=True))\n",
- "rnet = read_net(show_net(net))\n",
- "rnet == rrnet, pack(rrnet) == pnet"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "lnet = make_net(10207, 26, 100000)\n",
- "plnet = pack(lnet)\n",
- "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, plnet)\n",
- "# for i in range(204):\n",
- "# assert follow(i, lnet) == follow(i, plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "rlnet = read_net(show_net(lnet))\n",
- "prlnet = pack(rlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2239"
- ]
- },
- "execution_count": 68,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "99989"
- ]
- },
- "execution_count": 69,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10206"
- ]
- },
- "execution_count": 70,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in rlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2239"
- ]
- },
- "execution_count": 71,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in prlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, prlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 25.9 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many(string.ascii_lowercase, lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# %%timeit\n",
- "# follow_many_slow(string.ascii_lowercase, lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pairs_slow(net):\n",
- " eps = []\n",
- " for l in net:\n",
- " o = Link(l.height + 1, l.left, l.right)\n",
- " if o in net:\n",
- " eps += [(l, o)]\n",
- " return eps "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pairs(net):\n",
- " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- " eps = []\n",
- " for h in range(1, max(height_groups.keys())):\n",
- " for l in height_groups[h]:\n",
- " o = Link(l.height - 1, l.left, l.right)\n",
- " if o in height_groups[h-1]:\n",
- " eps += [(l, o)]\n",
- " return eps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 77,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 24.1 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "eliminable_pairs(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pair(net):\n",
- " for l in net:\n",
- " o = Link(l.height + 1, l.left, l.right)\n",
- " if o in net:\n",
- " return l, o\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pair_hg(height_groups):\n",
- " for h in range(1, max(height_groups.keys())):\n",
- " for l in height_groups[h]:\n",
- " o = Link(l.height - 1, l.left, l.right)\n",
- " if o in height_groups[h-1]:\n",
- " return l, o\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 80,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_pairs_slow(net):\n",
- " eliminable_links = eliminable_pair(net)\n",
- " while eliminable_links:\n",
- " net = pack(l for l in net if l not in eliminable_links)\n",
- " eliminable_links = eliminable_pair(net)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 81,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_pairs(net):\n",
- " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- " eliminable_links = eliminable_pair_hg(height_groups)\n",
- " while eliminable_links:\n",
- " net = pack(l for l in net if l not in eliminable_links)\n",
- " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- " eliminable_links = eliminable_pair_hg(height_groups)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 82,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10207\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "(10207, 9813)"
- ]
- },
- "execution_count": 82,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "print(len(plnet))\n",
- "elnet = eliminate_pairs(plnet)\n",
- "len(plnet), len(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 83,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 83,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eliminable_pairs(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, elnet)\n",
- "assert follow_many(string.ascii_lowercase, plnet) == follow_many(string.ascii_lowercase, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 6.08 s per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "elnet = eliminate_pairs(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# for i in range(26):\n",
- "# assert follow(i, plnet) == follow(i, elnet)\n",
- "# assert follow(i, lnet) == follow(i, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# follow(0, plnet), follow(0, elnet), follow(0, lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 88,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def triple_slow(net):\n",
- " x = None\n",
- " y = None\n",
- " ts = []\n",
- " for a in net:\n",
- " bs = [l for l in net if l.height == a.height + 1 \n",
- " if l.left == a.right or l.right == a.left]\n",
- " for b in bs:\n",
- " c = Link(a.height + 2, a.left, a.right)\n",
- " if c in net:\n",
- " ts += [(a, b, c)]\n",
- " return ts"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 89,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def triple_pair_slow(net):\n",
- " ts = []\n",
- " for a in net:\n",
- " a_ends = link_ends(a)\n",
- " bs = [l for l in net if l.height == a.height + 1 \n",
- " if link_ends(l) & a_ends]\n",
- " if len(bs) == 1:\n",
- " b = bs[0]\n",
- " lines = set((a.left, a.right, b.left, b.right))\n",
- " cs = [l for l in net \n",
- " if l.height == a.height + 2\n",
- " if link_ends(l) & lines]\n",
- " if len(cs) == 1:\n",
- " c = Link(a.height + 2, a.left, a.right)\n",
- " if c in cs:\n",
- " ds = [l for l in net \n",
- " if l.height == a.height + 3\n",
- " if link_ends(l) & lines]\n",
- " d = Link(a.height + 3, b.left, b.right)\n",
- " if d in ds:\n",
- " ts += [(a, b, c, d)]\n",
- " return ts"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 90,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def find_height_groups(net):\n",
- " return {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 91,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def triple_pair_hg(height_groups, debug=False):\n",
- " ts = []\n",
- " for h in range(3, max(height_groups.keys())):\n",
- " for d in height_groups[h]:\n",
- " if debug: print('d:', d)\n",
- " ch = h - 1\n",
- " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
- " if debug: print('cs:', cs)\n",
- " while ch > 2 and not cs:\n",
- " ch -= 1\n",
- " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
- " if debug: print('cs:', cs)\n",
- " if len(cs) == 1:\n",
- " c = cs[0]\n",
- " lines = set((d.left, d.right, c.left, c.right))\n",
- " if debug: print('c:', '; lines:', lines)\n",
- " bs = [l for l in height_groups[ch-1] if link_ends(l) & lines]\n",
- " b = Link(ch - 1, d.left, d.right)\n",
- " if debug: print('b:', b, '; bs:', bs)\n",
- " if len(bs) == 1 and b in bs:\n",
- " ah = b.height - 1\n",
- " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
- " if debug: print('ah:', ah, '; als:', als)\n",
- " while ah > 0 and not als:\n",
- " ah -= 1\n",
- " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
- " if debug: print('ah:', ah, '; als:', als)\n",
- " a = Link(ah, c.left, c.right)\n",
- " if debug: print('a:', a)\n",
- " if a in als:\n",
- " if debug: print('adding:', a, b, c, d)\n",
- " ts += [(a, b, c, d)]\n",
- " return ts"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 92,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_a_triple_pair_slow(net, debug=False):\n",
- " tps = triple_pair_slow(net)\n",
- " if debug: print('eatp', tps)\n",
- "\n",
- " if tps:\n",
- " a, b, c, d = tps[0]\n",
- "# x = Link(a.height, b.left, b.right)\n",
- "# y = Link(b.height, a.left, a.right)\n",
- " x = Link(b.height - 0.5, b.left, b.right)\n",
- " y = Link(b.height, a.left, a.right)\n",
- " if debug: print('removing', a, b, c, d, '; adding', x, y)\n",
- " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 93,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_a_triple_pair(net, debug=False):\n",
- " height_groups = find_height_groups(net)\n",
- "\n",
- " tps = triple_pair_hg(height_groups)\n",
- " if debug: print('eatp', tps)\n",
- " if tps:\n",
- " a, b, c, d = tps[0]\n",
- " x = Link(b.height - 0.5, b.left, b.right)\n",
- " y = Link(b.height, a.left, a.right)\n",
- " if debug: print('removing', a, b, c, d, '; adding', x, y)\n",
- " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 94,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=1126, left=8, right=17),\n",
- " Link(height=1127, left=1, right=8),\n",
- " Link(height=1128, left=8, right=17),\n",
- " Link(height=1129, left=1, right=8)),\n",
- " (Link(height=1952, left=12, right=25),\n",
- " Link(height=1953, left=10, right=12),\n",
- " Link(height=1954, left=12, right=25),\n",
- " Link(height=1955, left=10, right=12))]"
- ]
- },
- "execution_count": 94,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "height_groups = find_height_groups(elnet)\n",
- "triple_pair_hg(height_groups)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 95,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 98.7 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "height_groups = find_height_groups(elnet)\n",
- "triple_pair_hg(height_groups)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 96,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_triple_pairs_slow(net):\n",
- " print(len(net))\n",
- " new_net = eliminate_a_triple_pair_slow(net)\n",
- " while new_net:\n",
- " print(len(net))\n",
- " net = new_net\n",
- " new_net = eliminate_a_triple_pair_slow(net)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 97,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_triple_pairs(net):\n",
- " print(len(net))\n",
- " new_net = eliminate_a_triple_pair(net)\n",
- " while new_net:\n",
- " print(len(net))\n",
- " net = new_net\n",
- " new_net = eliminate_a_triple_pair(net)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 98,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "etlnet = eliminate_a_triple_pair(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 99,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 100,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9813\n",
- "9813\n",
- "9811\n"
- ]
- }
- ],
- "source": [
- "setlnet = eliminate_triple_pairs(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 101,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9809"
- ]
- },
- "execution_count": 101,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(setlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 102,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 103,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'ypetfugkzdsacbvwjohqlnirmx'"
- ]
- },
- "execution_count": 103,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, etlnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 104,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'ypetfugkzdsacbvwjohqlnirmx'"
- ]
- },
- "execution_count": 104,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, setlnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 105,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'ypetfugkzdsacbvwjohqlnirmx'"
- ]
- },
- "execution_count": 105,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, elnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 106,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'ypetfugkzdsacbvwjohqlnirmx'"
- ]
- },
- "execution_count": 106,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 107,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 107,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eliminable_pairs(etlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 108,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(10207, 9811)"
- ]
- },
- "execution_count": 108,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(lnet), len(etlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 109,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def simplify(net0):\n",
- " netp = eliminate_pairs(net0)\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " while new_net:\n",
- "# print('sipl', len(net0), len(netp), len(new_net))\n",
- " netp = eliminate_pairs(new_net)\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " return netp"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 110,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "simple_lnet = simplify(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 111,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 111,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, simple_lnet)) == ''.join(follow_many(string.ascii_lowercase, lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 112,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'ypetfugkzdsacbvwjohqlnirmx'"
- ]
- },
- "execution_count": 112,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, simple_lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 113,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'ypetfugkzdsacbvwjohqlnirmx'"
- ]
- },
- "execution_count": 113,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 114,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9809"
- ]
- },
- "execution_count": 114,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(simple_lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 115,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def add_triple_pair(net, max_lines=None, trace=False):\n",
- " if not max_lines:\n",
- " max_lines = max(l.right for l in net)\n",
- " a, b, c = 0, 0, 0\n",
- " while len(set((a, b, c))) != 3:\n",
- " a = random.randrange(max_lines)\n",
- " b = random.randrange(max_lines)\n",
- " c = random.randrange(max_lines)\n",
- " tp = [(min(a, b), max(a, b)), (min(b, c), max(b, c))] * 2\n",
- " \n",
- " pairs = [(l.left, l.right) for l in sorted(net)]\n",
- " i = random.randrange(len(pairs))\n",
- " if trace: print(i, tp)\n",
- " new_pairs = pairs[:i] + tp + pairs[i:]\n",
- " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 116,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def add_pair(net, max_lines=None, trace=False):\n",
- " if not max_lines:\n",
- " max_lines = max(l.right for l in net)\n",
- "\n",
- " a, b = 0, 0\n",
- " while a == b:\n",
- " a = random.randrange(max_lines)\n",
- " b = random.randrange(max_lines)\n",
- " p = [(min(a, b), max(a, b))] * 2\n",
- " \n",
- " pairs = [(l.left, l.right) for l in sorted(net)]\n",
- " i = random.randrange(len(pairs))\n",
- " \n",
- " if trace: print(i, p)\n",
- " new_pairs = pairs[:i] + p + pairs[i:]\n",
- " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 117,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 117,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 118,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 118,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "lnettp = simple_lnet\n",
- "for _ in range(10):\n",
- " lnettp = add_pair(lnettp)\n",
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 119,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=301, left=7, right=23),\n",
- " Link(height=302, left=16, right=23),\n",
- " Link(height=303, left=7, right=23),\n",
- " Link(height=304, left=16, right=23)),\n",
- " (Link(height=362, left=11, right=23),\n",
- " Link(height=363, left=3, right=23),\n",
- " Link(height=364, left=11, right=23),\n",
- " Link(height=365, left=3, right=23)),\n",
- " (Link(height=363, left=3, right=23),\n",
- " Link(height=364, left=11, right=23),\n",
- " Link(height=365, left=3, right=23),\n",
- " Link(height=366, left=11, right=23)),\n",
- " (Link(height=595, left=12, right=15),\n",
- " Link(height=596, left=10, right=15),\n",
- " Link(height=597, left=12, right=15),\n",
- " Link(height=598, left=10, right=15)),\n",
- " (Link(height=796, left=12, right=21),\n",
- " Link(height=797, left=4, right=12),\n",
- " Link(height=798, left=12, right=21),\n",
- " Link(height=799, left=4, right=12)),\n",
- " (Link(height=879, left=0, right=18),\n",
- " Link(height=880, left=0, right=8),\n",
- " Link(height=881, left=0, right=18),\n",
- " Link(height=882, left=0, right=8)),\n",
- " (Link(height=930, left=3, right=17),\n",
- " Link(height=931, left=3, right=21),\n",
- " Link(height=932, left=3, right=17),\n",
- " Link(height=933, left=3, right=21)),\n",
- " (Link(height=1120, left=5, right=19),\n",
- " Link(height=1121, left=18, right=19),\n",
- " Link(height=1122, left=5, right=19),\n",
- " Link(height=1123, left=18, right=19)),\n",
- " (Link(height=2040, left=9, right=21),\n",
- " Link(height=2041, left=9, right=15),\n",
- " Link(height=2042, left=9, right=21),\n",
- " Link(height=2043, left=9, right=15)),\n",
- " (Link(height=2110, left=13, right=21),\n",
- " Link(height=2111, left=13, right=24),\n",
- " Link(height=2112, left=13, right=21),\n",
- " Link(height=2113, left=13, right=24))]"
- ]
- },
- "execution_count": 119,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "lnettp = simple_lnet\n",
- "for _ in range(10):\n",
- " lnettp = add_triple_pair(lnettp)\n",
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 120,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=49, left=10, right=20),\n",
- " Link(height=50, left=2, right=20),\n",
- " Link(height=51, left=10, right=20),\n",
- " Link(height=52, left=2, right=20)),\n",
- " (Link(height=54, left=2, right=24),\n",
- " Link(height=55, left=3, right=24),\n",
- " Link(height=56, left=2, right=24),\n",
- " Link(height=57, left=3, right=24)),\n",
- " (Link(height=62, left=2, right=15),\n",
- " Link(height=63, left=0, right=15),\n",
- " Link(height=64, left=2, right=15),\n",
- " Link(height=65, left=0, right=15)),\n",
- " (Link(height=114, left=14, right=18),\n",
- " Link(height=115, left=3, right=18),\n",
- " Link(height=116, left=14, right=18),\n",
- " Link(height=117, left=3, right=18)),\n",
- " (Link(height=138, left=13, right=19),\n",
- " Link(height=139, left=8, right=19),\n",
- " Link(height=140, left=13, right=19),\n",
- " Link(height=141, left=8, right=19)),\n",
- " (Link(height=160, left=12, right=13),\n",
- " Link(height=161, left=4, right=12),\n",
- " Link(height=162, left=12, right=13),\n",
- " Link(height=163, left=4, right=12)),\n",
- " (Link(height=315, left=23, right=24),\n",
- " Link(height=320, left=20, right=23),\n",
- " Link(height=321, left=23, right=24),\n",
- " Link(height=322, left=20, right=23)),\n",
- " (Link(height=324, left=3, right=18),\n",
- " Link(height=325, left=16, right=18),\n",
- " Link(height=326, left=3, right=18),\n",
- " Link(height=327, left=16, right=18)),\n",
- " (Link(height=342, left=21, right=22),\n",
- " Link(height=345, left=1, right=22),\n",
- " Link(height=346, left=21, right=22),\n",
- " Link(height=347, left=1, right=22)),\n",
- " (Link(height=405, left=8, right=19),\n",
- " Link(height=406, left=4, right=8),\n",
- " Link(height=407, left=8, right=19),\n",
- " Link(height=408, left=4, right=8)),\n",
- " (Link(height=468, left=11, right=22),\n",
- " Link(height=469, left=15, right=22),\n",
- " Link(height=470, left=11, right=22),\n",
- " Link(height=471, left=15, right=22)),\n",
- " (Link(height=549, left=1, right=2),\n",
- " Link(height=550, left=1, right=6),\n",
- " Link(height=551, left=1, right=2),\n",
- " Link(height=552, left=1, right=6)),\n",
- " (Link(height=568, left=16, right=21),\n",
- " Link(height=569, left=11, right=21),\n",
- " Link(height=570, left=16, right=21),\n",
- " Link(height=571, left=11, right=21)),\n",
- " (Link(height=608, left=17, right=20),\n",
- " Link(height=609, left=2, right=17),\n",
- " Link(height=610, left=17, right=20),\n",
- " Link(height=611, left=2, right=17)),\n",
- " (Link(height=613, left=18, right=21),\n",
- " Link(height=618, left=18, right=19),\n",
- " Link(height=619, left=18, right=21),\n",
- " Link(height=620, left=18, right=19)),\n",
- " (Link(height=635, left=2, right=4),\n",
- " Link(height=636, left=4, right=20),\n",
- " Link(height=637, left=2, right=4),\n",
- " Link(height=638, left=4, right=20)),\n",
- " (Link(height=681, left=7, right=20),\n",
- " Link(height=682, left=20, right=22),\n",
- " Link(height=683, left=7, right=20),\n",
- " Link(height=684, left=20, right=22)),\n",
- " (Link(height=750, left=23, right=24),\n",
- " Link(height=751, left=18, right=24),\n",
- " Link(height=752, left=23, right=24),\n",
- " Link(height=753, left=18, right=24)),\n",
- " (Link(height=760, left=12, right=18),\n",
- " Link(height=761, left=17, right=18),\n",
- " Link(height=762, left=12, right=18),\n",
- " Link(height=763, left=17, right=18)),\n",
- " (Link(height=765, left=0, right=9),\n",
- " Link(height=766, left=0, right=14),\n",
- " Link(height=767, left=0, right=9),\n",
- " Link(height=768, left=0, right=14)),\n",
- " (Link(height=805, left=16, right=22),\n",
- " Link(height=806, left=0, right=16),\n",
- " Link(height=807, left=16, right=22),\n",
- " Link(height=808, left=0, right=16)),\n",
- " (Link(height=834, left=1, right=6),\n",
- " Link(height=835, left=3, right=6),\n",
- " Link(height=836, left=1, right=6),\n",
- " Link(height=837, left=3, right=6)),\n",
- " (Link(height=881, left=2, right=12),\n",
- " Link(height=882, left=2, right=23),\n",
- " Link(height=883, left=2, right=12),\n",
- " Link(height=884, left=2, right=23)),\n",
- " (Link(height=904, left=12, right=23),\n",
- " Link(height=905, left=12, right=14),\n",
- " Link(height=906, left=12, right=23),\n",
- " Link(height=907, left=12, right=14)),\n",
- " (Link(height=936, left=7, right=17),\n",
- " Link(height=937, left=15, right=17),\n",
- " Link(height=938, left=7, right=17),\n",
- " Link(height=939, left=15, right=17)),\n",
- " (Link(height=1010, left=4, right=6),\n",
- " Link(height=1011, left=6, right=17),\n",
- " Link(height=1012, left=4, right=6),\n",
- " Link(height=1013, left=6, right=17)),\n",
- " (Link(height=1030, left=1, right=12),\n",
- " Link(height=1031, left=1, right=20),\n",
- " Link(height=1032, left=1, right=12),\n",
- " Link(height=1033, left=1, right=20)),\n",
- " (Link(height=1197, left=2, right=9),\n",
- " Link(height=1198, left=9, right=22),\n",
- " Link(height=1199, left=2, right=9),\n",
- " Link(height=1200, left=9, right=22)),\n",
- " (Link(height=1222, left=2, right=3),\n",
- " Link(height=1223, left=2, right=5),\n",
- " Link(height=1224, left=2, right=3),\n",
- " Link(height=1225, left=2, right=5)),\n",
- " (Link(height=1318, left=12, right=23),\n",
- " Link(height=1319, left=4, right=12),\n",
- " Link(height=1320, left=12, right=23),\n",
- " Link(height=1321, left=4, right=12)),\n",
- " (Link(height=1341, left=17, right=22),\n",
- " Link(height=1342, left=11, right=17),\n",
- " Link(height=1343, left=17, right=22),\n",
- " Link(height=1344, left=11, right=17)),\n",
- " (Link(height=1396, left=4, right=9),\n",
- " Link(height=1397, left=3, right=9),\n",
- " Link(height=1398, left=4, right=9),\n",
- " Link(height=1399, left=3, right=9)),\n",
- " (Link(height=1426, left=18, right=24),\n",
- " Link(height=1427, left=17, right=18),\n",
- " Link(height=1428, left=18, right=24),\n",
- " Link(height=1429, left=17, right=18)),\n",
- " (Link(height=1456, left=2, right=15),\n",
- " Link(height=1457, left=3, right=15),\n",
- " Link(height=1458, left=2, right=15),\n",
- " Link(height=1459, left=3, right=15)),\n",
- " (Link(height=1505, left=13, right=18),\n",
- " Link(height=1506, left=13, right=21),\n",
- " Link(height=1507, left=13, right=18),\n",
- " Link(height=1508, left=13, right=21)),\n",
- " (Link(height=1551, left=10, right=12),\n",
- " Link(height=1552, left=4, right=12),\n",
- " Link(height=1553, left=10, right=12),\n",
- " Link(height=1554, left=4, right=12)),\n",
- " (Link(height=1622, left=4, right=11),\n",
- " Link(height=1623, left=11, right=16),\n",
- " Link(height=1624, left=4, right=11),\n",
- " Link(height=1625, left=11, right=16)),\n",
- " (Link(height=1653, left=8, right=24),\n",
- " Link(height=1654, left=4, right=8),\n",
- " Link(height=1655, left=8, right=24),\n",
- " Link(height=1656, left=4, right=8)),\n",
- " (Link(height=1688, left=0, right=5),\n",
- " Link(height=1689, left=0, right=23),\n",
- " Link(height=1690, left=0, right=5),\n",
- " Link(height=1691, left=0, right=23)),\n",
- " (Link(height=1724, left=10, right=23),\n",
- " Link(height=1725, left=10, right=11),\n",
- " Link(height=1726, left=10, right=23),\n",
- " Link(height=1727, left=10, right=11)),\n",
- " (Link(height=1863, left=1, right=12),\n",
- " Link(height=1864, left=1, right=13),\n",
- " Link(height=1865, left=1, right=12),\n",
- " Link(height=1866, left=1, right=13)),\n",
- " (Link(height=1873, left=10, right=22),\n",
- " Link(height=1874, left=10, right=15),\n",
- " Link(height=1875, left=10, right=22),\n",
- " Link(height=1876, left=10, right=15)),\n",
- " (Link(height=1879, left=18, right=20),\n",
- " Link(height=1880, left=17, right=20),\n",
- " Link(height=1881, left=18, right=20),\n",
- " Link(height=1882, left=17, right=20)),\n",
- " (Link(height=1916, left=18, right=19),\n",
- " Link(height=1917, left=7, right=18),\n",
- " Link(height=1918, left=18, right=19),\n",
- " Link(height=1919, left=7, right=18)),\n",
- " (Link(height=1961, left=11, right=20),\n",
- " Link(height=1962, left=7, right=20),\n",
- " Link(height=1963, left=11, right=20),\n",
- " Link(height=1964, left=7, right=20)),\n",
- " (Link(height=1962, left=9, right=18),\n",
- " Link(height=1963, left=18, right=19),\n",
- " Link(height=1964, left=9, right=18),\n",
- " Link(height=1965, left=18, right=19)),\n",
- " (Link(height=2031, left=3, right=6),\n",
- " Link(height=2032, left=3, right=4),\n",
- " Link(height=2033, left=3, right=6),\n",
- " Link(height=2034, left=3, right=4)),\n",
- " (Link(height=2077, left=2, right=9),\n",
- " Link(height=2078, left=2, right=23),\n",
- " Link(height=2079, left=2, right=9),\n",
- " Link(height=2080, left=2, right=23)),\n",
- " (Link(height=2165, left=1, right=8),\n",
- " Link(height=2166, left=4, right=8),\n",
- " Link(height=2167, left=1, right=8),\n",
- " Link(height=2168, left=4, right=8)),\n",
- " (Link(height=2185, left=6, right=21),\n",
- " Link(height=2186, left=11, right=21),\n",
- " Link(height=2187, left=6, right=21),\n",
- " Link(height=2188, left=11, right=21))]"
- ]
- },
- "execution_count": 120,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "lnettp = simple_lnet\n",
- "for _ in range(50):\n",
- " lnettp = add_pair(lnettp)\n",
- "for _ in range(50):\n",
- " lnettp = add_triple_pair(lnettp)\n",
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 121,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 121,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "lnettp == pack(lnettp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 122,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9909"
- ]
- },
- "execution_count": 122,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "lnettps = simplify(lnettp)\n",
- "len(lnettps)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 123,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(9809, 10109, 9909)"
- ]
- },
- "execution_count": 123,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(simple_lnet), len(lnettp), len(lnettps)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 124,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 124,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, lnet)) == ''.join(follow_many(string.ascii_lowercase, simple_lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 125,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 125,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, lnettps)) == ''.join(follow_many(string.ascii_lowercase, lnettp))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 126,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2285"
- ]
- },
- "execution_count": 126,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in lnettp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 127,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def simplify_with_checks(net0):\n",
- " netp = eliminate_pairs(net0)\n",
- " if follow_many(string.ascii_lowercase, net0) != follow_many(string.ascii_lowercase, netp):\n",
- " print('pairs', eliminable_pairs(net0))\n",
- " return net0\n",
- " else:\n",
- " print('pairs ok')\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
- " hg = find_height_groups(netp)\n",
- " print('triple', triple_pair_hg(hg))\n",
- " return netp\n",
- " else:\n",
- " print('triple ok')\n",
- " while new_net:\n",
- "# print('sipl', len(net0), len(netp), len(new_net))\n",
- " netp = eliminate_pairs(new_net)\n",
- " if follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
- " print('pairs', eliminable_pairs(new_net))\n",
- " return new_net\n",
- " else:\n",
- " print('pairs ok')\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
- " hg = find_height_groups(netp)\n",
- " print('triple', triple_pair_hg(hg))\n",
- " return netp\n",
- " else:\n",
- " print('triple ok')\n",
- " print('** done')\n",
- " return netp"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 128,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "** done\n"
- ]
- }
- ],
- "source": [
- "lnettps = simplify_with_checks(lnettp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 129,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 129,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, lnettps)) == ''.join(follow_many(string.ascii_lowercase, lnettp))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 130,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10109"
- ]
- },
- "execution_count": 130,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(lnettp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 131,
- "metadata": {},
- "outputs": [],
- "source": [
- "# open('04-lines.txt', 'w').write(show_net(lnettp, randomise=True, pair_sep='\\n'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 114,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "139"
- ]
- },
- "execution_count": 114,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# open('04-small.txt', 'w').write(show_net(make_net(20), randomise=True, pair_sep='\\n'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 143,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "8 [(2, 4), (0, 4), (2, 4), (0, 4)]\n",
- "10 [(1, 2), (1, 2)]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=2, right=5),\n",
- " Link(height=1, left=1, right=4),\n",
- " Link(height=2, left=0, right=3),\n",
- " Link(height=3, left=0, right=3),\n",
- " Link(height=4, left=0, right=5),\n",
- " Link(height=5, left=3, right=5),\n",
- " Link(height=6, left=0, right=2),\n",
- " Link(height=7, left=3, right=4),\n",
- " Link(height=8, left=2, right=4),\n",
- " Link(height=9, left=1, right=2),\n",
- " Link(height=10, left=0, right=4),\n",
- " Link(height=11, left=1, right=2),\n",
- " Link(height=12, left=2, right=4),\n",
- " Link(height=13, left=1, right=2),\n",
- " Link(height=14, left=0, right=4),\n",
- " Link(height=15, left=1, right=4)]"
- ]
- },
- "execution_count": 143,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "net = make_net(10, lines=6)\n",
- "net = add_triple_pair(net, trace=True)\n",
- "net = add_pair(net, trace=True)\n",
- "net = read_net(show_net(net, randomise=True))\n",
- "net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 147,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'(2, 5), (1, 4), (0, 3), (0, 3), (0, 5), (3, 5), (0, 2), (3, 4), (2, 4), (1, 2), (0, 4), (1, 2), (2, 4), (1, 2), (0, 4), (1, 4)'"
- ]
- },
- "execution_count": 147,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "show_net(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 149,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=2, right=5),\n",
- " Link(height=1, left=1, right=4),\n",
- " Link(height=2, left=0, right=3),\n",
- " Link(height=3, left=0, right=3),\n",
- " Link(height=4, left=0, right=5),\n",
- " Link(height=5, left=3, right=5),\n",
- " Link(height=6, left=0, right=2),\n",
- " Link(height=7, left=3, right=4),\n",
- " Link(height=8, left=2, right=4),\n",
- " Link(height=9, left=1, right=2),\n",
- " Link(height=10, left=0, right=4),\n",
- " Link(height=11, left=1, right=2),\n",
- " Link(height=12, left=2, right=4),\n",
- " Link(height=13, left=0, right=4),\n",
- " Link(height=14, left=1, right=4)]"
- ]
- },
- "execution_count": 149,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "net = read_net('(2, 5), (1, 4), (0, 3), (0, 3), (0, 5), (3, 5), (0, 2), (3, 4), (2, 4), (1, 2), (0, 4), (1, 2), (2, 4), (0, 4), (1, 4)')\n",
- "net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 150,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=0, right=3),\n",
- " Link(height=0, left=1, right=4),\n",
- " Link(height=0, left=2, right=5),\n",
- " Link(height=1, left=0, right=3),\n",
- " Link(height=2, left=0, right=5),\n",
- " Link(height=3, left=0, right=2),\n",
- " Link(height=3, left=3, right=5),\n",
- " Link(height=4, left=3, right=4),\n",
- " Link(height=5, left=2, right=4),\n",
- " Link(height=6, left=0, right=4),\n",
- " Link(height=6, left=1, right=2),\n",
- " Link(height=7, left=1, right=2),\n",
- " Link(height=8, left=2, right=4),\n",
- " Link(height=9, left=0, right=4),\n",
- " Link(height=10, left=1, right=4)]"
- ]
- },
- "execution_count": 150,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "pack(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 151,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=1, right=4),\n",
- " Link(height=0, left=2, right=5),\n",
- " Link(height=1, left=0, right=5),\n",
- " Link(height=2, left=0, right=2),\n",
- " Link(height=2, left=3, right=5),\n",
- " Link(height=3, left=3, right=4),\n",
- " Link(height=4, left=2, right=4),\n",
- " Link(height=5, left=0, right=4),\n",
- " Link(height=6, left=2, right=4),\n",
- " Link(height=7, left=0, right=4),\n",
- " Link(height=8, left=1, right=4)]"
- ]
- },
- "execution_count": 151,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "epnet = eliminate_pairs(net)\n",
- "pack(epnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 152,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "11\n",
- "11\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=1, right=4),\n",
- " Link(height=0, left=2, right=5),\n",
- " Link(height=1, left=0, right=5),\n",
- " Link(height=2, left=0, right=2),\n",
- " Link(height=2, left=3, right=5),\n",
- " Link(height=3, left=3, right=4),\n",
- " Link(height=4, left=0, right=4),\n",
- " Link(height=5, left=2, right=4),\n",
- " Link(height=6, left=1, right=4)]"
- ]
- },
- "execution_count": 152,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eptnet = eliminate_triple_pairs(epnet)\n",
- "pack(eptnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 153,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 153,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, net)) == ''.join(follow_many(string.ascii_lowercase, eptnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 155,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "104"
- ]
- },
- "execution_count": 155,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "open('04-small.txt', 'w').write(show_net(net, pair_sep='\\n'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.5.2+"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
+++ /dev/null
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import collections\n",
- "import string\n",
- "import itertools"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "Link = collections.namedtuple('Link', 'height left right')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def link_ends(link):\n",
- " return set((link.left, link.right))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def read_net(net_string):\n",
- " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow(initial_line, links):\n",
- " line = initial_line\n",
- " heights = sorted(set(l.height for l in links))\n",
- " for h in heights:\n",
- " for l in [l for l in links if l.height == h]:\n",
- " if line in link_ends(l):\n",
- " line = [e for e in link_ends(l) if e != line][0]\n",
- "# print(l, line)\n",
- " return line"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def pack(net):\n",
- " packed_links = []\n",
- " line_heights = collections.defaultdict(lambda: -1)\n",
- " for link in sorted(net):\n",
- " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
- " line_heights[link.left] = link_height\n",
- " line_heights[link.right] = link_height\n",
- " packed_links += [Link(link_height, link.left, link.right)]\n",
- " return sorted(packed_links)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow_many_slow(in_sequence, links):\n",
- " out_sequence = [(follow(i, links), term) \n",
- " for i, term in enumerate(in_sequence)]\n",
- " return [term for i, term in sorted(out_sequence)]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow_many(in_sequence, net):\n",
- " height_groups = [list(g) for _, g in itertools.groupby(pack(net), lambda l: l.height)]\n",
- " seq = list(in_sequence)\n",
- " for links in height_groups:\n",
- " for link in links:\n",
- " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
- " return seq"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10000 loops, best of 3: 47.5 µs per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many('abcdefghij', net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# %%timeit\n",
- "# follow_many_slow('abcdefghij', net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def show_net(links, randomise=False):\n",
- " if randomise:\n",
- " output = []\n",
- " heights = sorted(set(l.height for l in links))\n",
- " for h in heights:\n",
- " ls = [l for l in links if l.height == h]\n",
- " random.shuffle(ls)\n",
- " output += ['({}, {})'.format(l.left, l.right) for l in ls]\n",
- " return ', '.join(output)\n",
- " return ', '.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def extract_pairs(net_string):\n",
- " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(True, True)"
- ]
- },
- "execution_count": 25,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "rrnet = read_net(show_net(net, randomise=True))\n",
- "rnet = read_net(show_net(net))\n",
- "rnet == rrnet, pack(rrnet) == pnet"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "lnet = make_net(10207, 26, 100000)\n",
- "plnet = pack(lnet)\n",
- "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, plnet)\n",
- "# for i in range(204):\n",
- "# assert follow(i, lnet) == follow(i, plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "rlnet = read_net(show_net(lnet))\n",
- "prlnet = pack(rlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2251"
- ]
- },
- "execution_count": 28,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "99998"
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10206"
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in rlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2251"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(link.height for link in prlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, prlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 24.5 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many(string.ascii_lowercase, lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# %%timeit\n",
- "# follow_many_slow(string.ascii_lowercase, lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pairs_slow(net):\n",
- " eps = []\n",
- " for l in net:\n",
- " o = Link(l.height + 1, l.left, l.right)\n",
- " if o in net:\n",
- " eps += [(l, o)]\n",
- " return eps "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pairs(net):\n",
- " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- " eps = []\n",
- " for h in range(1, max(height_groups.keys())):\n",
- " for l in height_groups[h]:\n",
- " o = Link(l.height - 1, l.left, l.right)\n",
- " if o in height_groups[h-1]:\n",
- " eps += [(l, o)]\n",
- " return eps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 23.5 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "eliminable_pairs(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 2.33 s per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "eliminable_pairs_slow(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert sorted(sorted(p) for p in eliminable_pairs(plnet)) == sorted(sorted(p) for p in eliminable_pairs_slow(plnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pair(net):\n",
- " for l in net:\n",
- " o = Link(l.height + 1, l.left, l.right)\n",
- " if o in net:\n",
- " return l, o\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pair_hg(height_groups):\n",
- " for h in range(1, max(height_groups.keys())):\n",
- " for l in height_groups[h]:\n",
- " o = Link(l.height - 1, l.left, l.right)\n",
- " if o in height_groups[h-1]:\n",
- " return l, o\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_pairs_slow(net):\n",
- " eliminable_links = eliminable_pair(net)\n",
- " while eliminable_links:\n",
- " net = pack(l for l in net if l not in eliminable_links)\n",
- " eliminable_links = eliminable_pair(net)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_pairs(net):\n",
- " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- " eliminable_links = eliminable_pair_hg(height_groups)\n",
- " while eliminable_links:\n",
- " net = pack(l for l in net if l not in eliminable_links)\n",
- " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- " eliminable_links = eliminable_pair_hg(height_groups)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10207\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "(10207, 9811)"
- ]
- },
- "execution_count": 44,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "print(len(plnet))\n",
- "elnet = eliminate_pairs_slow(plnet)\n",
- "len(plnet), len(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10207\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "(10207, 9811)"
- ]
- },
- "execution_count": 45,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "print(len(plnet))\n",
- "elnet = eliminate_pairs(plnet)\n",
- "len(plnet), len(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 46,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eliminable_pairs(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert eliminate_pairs_slow(plnet) == eliminate_pairs(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, elnet)\n",
- "assert follow_many(string.ascii_lowercase, plnet) == follow_many(string.ascii_lowercase, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 3min 30s per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "elnet = eliminate_pairs_slow(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 6.27 s per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "elnet = eliminate_pairs(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# for i in range(26):\n",
- "# assert follow(i, plnet) == follow(i, elnet)\n",
- "# assert follow(i, lnet) == follow(i, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# follow(0, plnet), follow(0, elnet), follow(0, lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def triple(net):\n",
- " x = None\n",
- " y = None\n",
- " ts = []\n",
- " for a in net:\n",
- " bs = [l for l in net if l.height == a.height + 1 \n",
- " if l.left == a.right or l.right == a.left]\n",
- " for b in bs:\n",
- " c = Link(a.height + 2, a.left, a.right)\n",
- " if c in net:\n",
- " ts += [(a, b, c)]\n",
- " return ts"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def triple_pair(net):\n",
- " ts = []\n",
- " for a in net:\n",
- " a_ends = link_ends(a)\n",
- " bs = [l for l in net if l.height == a.height + 1 \n",
- " if link_ends(l) & a_ends]\n",
- " if len(bs) == 1:\n",
- " b = bs[0]\n",
- " lines = set((a.left, a.right, b.left, b.right))\n",
- " cs = [l for l in net \n",
- " if l.height == a.height + 2\n",
- " if link_ends(l) & lines]\n",
- " if len(cs) == 1:\n",
- " c = Link(a.height + 2, a.left, a.right)\n",
- " if c in cs:\n",
- " ds = [l for l in net \n",
- " if l.height == a.height + 3\n",
- " if link_ends(l) & lines]\n",
- " d = Link(a.height + 3, b.left, b.right)\n",
- " if d in ds:\n",
- " ts += [(a, b, c, d)]\n",
- " return ts"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 129,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def triple_pair_hg(height_groups, debug=False):\n",
- " ts = []\n",
- " for h in range(3, max(height_groups.keys())):\n",
- " for d in height_groups[h]:\n",
- " if debug: print('d:', d)\n",
- " ch = h - 1\n",
- " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
- " if debug: print('cs:', cs)\n",
- " while ch > 2 and not cs:\n",
- " ch -= 1\n",
- " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
- " if debug: print('cs:', cs)\n",
- " if len(cs) == 1:\n",
- " c = cs[0]\n",
- " lines = set((d.left, d.right, c.left, c.right))\n",
- " if debug: print('c:', '; lines:', lines)\n",
- " bs = [l for l in height_groups[ch-1] if link_ends(l) & lines]\n",
- " b = Link(ch - 1, d.left, d.right)\n",
- " if debug: print('b:', b, '; bs:', bs)\n",
- " if len(bs) == 1 and b in bs:\n",
- " ah = b.height - 1\n",
- " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
- " if debug: print('ah:', ah, '; als:', als)\n",
- " while ah > 0 and not als:\n",
- " ah -= 1\n",
- " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
- " if debug: print('ah:', ah, '; als:', als)\n",
- " a = Link(ah, c.left, c.right)\n",
- " if debug: print('a:', a)\n",
- " if a in als:\n",
- " if debug: print('adding:', a, b, c, d)\n",
- " ts += [(a, b, c, d)]\n",
- " return ts"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 132,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_a_triple_pair_slow(net):\n",
- " tps = triple_pair(net)\n",
- " print('eatp', tps)\n",
- "\n",
- " if tps:\n",
- " a, b, c, d = tps[0]\n",
- "# x = Link(a.height, b.left, b.right)\n",
- "# y = Link(b.height, a.left, a.right)\n",
- " x = Link(a.height, b.left, b.right)\n",
- " y = Link(b.height, a.left, a.right)\n",
- " print('removing', a, b, c, d, '; adding', x, y)\n",
- " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 133,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_a_triple_pair(net):\n",
- " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- "\n",
- " tps = triple_pair_hg(height_groups)\n",
- " print('eatp', tps)\n",
- " if tps:\n",
- " a, b, c, d = tps[0]\n",
- " x = Link(a.height, b.left, b.right)\n",
- " y = Link(b.height, a.left, a.right)\n",
- " print('removing', a, b, c, d, '; adding', x, y)\n",
- " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=12, left=0, right=5),\n",
- " Link(height=13, left=5, right=11),\n",
- " Link(height=14, left=0, right=5)),\n",
- " (Link(height=29, left=2, right=18),\n",
- " Link(height=30, left=1, right=2),\n",
- " Link(height=31, left=2, right=18)),\n",
- " (Link(height=40, left=2, right=3),\n",
- " Link(height=41, left=3, right=18),\n",
- " Link(height=42, left=2, right=3)),\n",
- " (Link(height=43, left=1, right=10),\n",
- " Link(height=44, left=10, right=20),\n",
- " Link(height=45, left=1, right=10)),\n",
- " (Link(height=91, left=5, right=8),\n",
- " Link(height=92, left=3, right=5),\n",
- " Link(height=93, left=5, right=8)),\n",
- " (Link(height=91, left=5, right=8),\n",
- " Link(height=92, left=8, right=18),\n",
- " Link(height=93, left=5, right=8)),\n",
- " (Link(height=99, left=13, right=17),\n",
- " Link(height=100, left=4, right=13),\n",
- " Link(height=101, left=13, right=17)),\n",
- " (Link(height=120, left=18, right=20),\n",
- " Link(height=121, left=9, right=18),\n",
- " Link(height=122, left=18, right=20)),\n",
- " (Link(height=147, left=19, right=21),\n",
- " Link(height=148, left=7, right=19),\n",
- " Link(height=149, left=19, right=21)),\n",
- " (Link(height=147, left=19, right=21),\n",
- " Link(height=148, left=21, right=23),\n",
- " Link(height=149, left=19, right=21)),\n",
- " (Link(height=179, left=13, right=25),\n",
- " Link(height=180, left=12, right=13),\n",
- " Link(height=181, left=13, right=25)),\n",
- " (Link(height=265, left=3, right=20),\n",
- " Link(height=266, left=20, right=23),\n",
- " Link(height=267, left=3, right=20)),\n",
- " (Link(height=291, left=5, right=23),\n",
- " Link(height=292, left=2, right=5),\n",
- " Link(height=293, left=5, right=23)),\n",
- " (Link(height=292, left=18, right=25),\n",
- " Link(height=293, left=0, right=18),\n",
- " Link(height=294, left=18, right=25)),\n",
- " (Link(height=302, left=11, right=19),\n",
- " Link(height=303, left=6, right=11),\n",
- " Link(height=304, left=11, right=19)),\n",
- " (Link(height=309, left=15, right=20),\n",
- " Link(height=310, left=20, right=25),\n",
- " Link(height=311, left=15, right=20)),\n",
- " (Link(height=325, left=13, right=18),\n",
- " Link(height=326, left=11, right=13),\n",
- " Link(height=327, left=13, right=18)),\n",
- " (Link(height=362, left=11, right=22),\n",
- " Link(height=363, left=22, right=24),\n",
- " Link(height=364, left=11, right=22)),\n",
- " (Link(height=372, left=22, right=23),\n",
- " Link(height=373, left=1, right=22),\n",
- " Link(height=374, left=22, right=23)),\n",
- " (Link(height=386, left=4, right=17),\n",
- " Link(height=387, left=17, right=21),\n",
- " Link(height=388, left=4, right=17)),\n",
- " (Link(height=393, left=4, right=16),\n",
- " Link(height=394, left=0, right=4),\n",
- " Link(height=395, left=4, right=16)),\n",
- " (Link(height=531, left=0, right=4),\n",
- " Link(height=532, left=4, right=15),\n",
- " Link(height=533, left=0, right=4)),\n",
- " (Link(height=575, left=5, right=21),\n",
- " Link(height=576, left=1, right=5),\n",
- " Link(height=577, left=5, right=21)),\n",
- " (Link(height=639, left=7, right=11),\n",
- " Link(height=640, left=11, right=17),\n",
- " Link(height=641, left=7, right=11)),\n",
- " (Link(height=687, left=2, right=4),\n",
- " Link(height=688, left=4, right=15),\n",
- " Link(height=689, left=2, right=4)),\n",
- " (Link(height=706, left=8, right=11),\n",
- " Link(height=707, left=11, right=22),\n",
- " Link(height=708, left=8, right=11)),\n",
- " (Link(height=722, left=22, right=23),\n",
- " Link(height=723, left=21, right=22),\n",
- " Link(height=724, left=22, right=23)),\n",
- " (Link(height=768, left=9, right=11),\n",
- " Link(height=769, left=11, right=17),\n",
- " Link(height=770, left=9, right=11)),\n",
- " (Link(height=792, left=5, right=12),\n",
- " Link(height=793, left=12, right=17),\n",
- " Link(height=794, left=5, right=12)),\n",
- " (Link(height=805, left=20, right=22),\n",
- " Link(height=806, left=19, right=20),\n",
- " Link(height=807, left=20, right=22)),\n",
- " (Link(height=806, left=19, right=20),\n",
- " Link(height=807, left=18, right=19),\n",
- " Link(height=808, left=19, right=20)),\n",
- " (Link(height=806, left=19, right=20),\n",
- " Link(height=807, left=20, right=22),\n",
- " Link(height=808, left=19, right=20)),\n",
- " (Link(height=882, left=7, right=14),\n",
- " Link(height=883, left=14, right=22),\n",
- " Link(height=884, left=7, right=14)),\n",
- " (Link(height=884, left=6, right=11),\n",
- " Link(height=885, left=11, right=19),\n",
- " Link(height=886, left=6, right=11)),\n",
- " (Link(height=892, left=12, right=17),\n",
- " Link(height=893, left=10, right=12),\n",
- " Link(height=894, left=12, right=17)),\n",
- " (Link(height=916, left=18, right=24),\n",
- " Link(height=917, left=16, right=18),\n",
- " Link(height=918, left=18, right=24)),\n",
- " (Link(height=919, left=14, right=17),\n",
- " Link(height=920, left=6, right=14),\n",
- " Link(height=921, left=14, right=17)),\n",
- " (Link(height=994, left=0, right=3),\n",
- " Link(height=995, left=3, right=24),\n",
- " Link(height=996, left=0, right=3)),\n",
- " (Link(height=1012, left=9, right=12),\n",
- " Link(height=1013, left=12, right=24),\n",
- " Link(height=1014, left=9, right=12)),\n",
- " (Link(height=1034, left=1, right=6),\n",
- " Link(height=1035, left=6, right=12),\n",
- " Link(height=1036, left=1, right=6)),\n",
- " (Link(height=1035, left=7, right=21),\n",
- " Link(height=1036, left=4, right=7),\n",
- " Link(height=1037, left=7, right=21)),\n",
- " (Link(height=1047, left=3, right=10),\n",
- " Link(height=1048, left=10, right=11),\n",
- " Link(height=1049, left=3, right=10)),\n",
- " (Link(height=1088, left=7, right=8),\n",
- " Link(height=1089, left=8, right=14),\n",
- " Link(height=1090, left=7, right=8)),\n",
- " (Link(height=1104, left=3, right=10),\n",
- " Link(height=1105, left=10, right=11),\n",
- " Link(height=1106, left=3, right=10)),\n",
- " (Link(height=1135, left=5, right=8),\n",
- " Link(height=1136, left=8, right=19),\n",
- " Link(height=1137, left=5, right=8)),\n",
- " (Link(height=1138, left=1, right=3),\n",
- " Link(height=1139, left=3, right=23),\n",
- " Link(height=1140, left=1, right=3)),\n",
- " (Link(height=1146, left=5, right=7),\n",
- " Link(height=1147, left=7, right=24),\n",
- " Link(height=1148, left=5, right=7)),\n",
- " (Link(height=1197, left=5, right=14),\n",
- " Link(height=1198, left=14, right=15),\n",
- " Link(height=1199, left=5, right=14)),\n",
- " (Link(height=1205, left=7, right=23),\n",
- " Link(height=1206, left=3, right=7),\n",
- " Link(height=1207, left=7, right=23)),\n",
- " (Link(height=1276, left=18, right=25),\n",
- " Link(height=1277, left=17, right=18),\n",
- " Link(height=1278, left=18, right=25)),\n",
- " (Link(height=1319, left=14, right=20),\n",
- " Link(height=1320, left=20, right=24),\n",
- " Link(height=1321, left=14, right=20)),\n",
- " (Link(height=1328, left=8, right=21),\n",
- " Link(height=1329, left=1, right=8),\n",
- " Link(height=1330, left=8, right=21)),\n",
- " (Link(height=1329, left=2, right=14),\n",
- " Link(height=1330, left=14, right=25),\n",
- " Link(height=1331, left=2, right=14)),\n",
- " (Link(height=1385, left=10, right=14),\n",
- " Link(height=1386, left=14, right=15),\n",
- " Link(height=1387, left=10, right=14)),\n",
- " (Link(height=1419, left=2, right=8),\n",
- " Link(height=1420, left=8, right=15),\n",
- " Link(height=1421, left=2, right=8)),\n",
- " (Link(height=1465, left=13, right=21),\n",
- " Link(height=1466, left=21, right=24),\n",
- " Link(height=1467, left=13, right=21)),\n",
- " (Link(height=1514, left=11, right=15),\n",
- " Link(height=1515, left=15, right=21),\n",
- " Link(height=1516, left=11, right=15)),\n",
- " (Link(height=1545, left=3, right=11),\n",
- " Link(height=1546, left=11, right=25),\n",
- " Link(height=1547, left=3, right=11)),\n",
- " (Link(height=1561, left=7, right=18),\n",
- " Link(height=1562, left=0, right=7),\n",
- " Link(height=1563, left=7, right=18)),\n",
- " (Link(height=1671, left=9, right=15),\n",
- " Link(height=1672, left=15, right=23),\n",
- " Link(height=1673, left=9, right=15)),\n",
- " (Link(height=1701, left=13, right=21),\n",
- " Link(height=1702, left=4, right=13),\n",
- " Link(height=1703, left=13, right=21)),\n",
- " (Link(height=1706, left=5, right=13),\n",
- " Link(height=1707, left=13, right=23),\n",
- " Link(height=1708, left=5, right=13)),\n",
- " (Link(height=1730, left=7, right=16),\n",
- " Link(height=1731, left=1, right=7),\n",
- " Link(height=1732, left=7, right=16)),\n",
- " (Link(height=1781, left=0, right=8),\n",
- " Link(height=1782, left=8, right=17),\n",
- " Link(height=1783, left=0, right=8)),\n",
- " (Link(height=1784, left=8, right=18),\n",
- " Link(height=1785, left=1, right=8),\n",
- " Link(height=1786, left=8, right=18)),\n",
- " (Link(height=1804, left=19, right=24),\n",
- " Link(height=1805, left=7, right=19),\n",
- " Link(height=1806, left=19, right=24)),\n",
- " (Link(height=1827, left=3, right=23),\n",
- " Link(height=1828, left=23, right=25),\n",
- " Link(height=1829, left=3, right=23)),\n",
- " (Link(height=1837, left=1, right=16),\n",
- " Link(height=1838, left=16, right=17),\n",
- " Link(height=1839, left=1, right=16)),\n",
- " (Link(height=1849, left=18, right=25),\n",
- " Link(height=1850, left=4, right=18),\n",
- " Link(height=1851, left=18, right=25)),\n",
- " (Link(height=1856, left=6, right=13),\n",
- " Link(height=1857, left=13, right=17),\n",
- " Link(height=1858, left=6, right=13)),\n",
- " (Link(height=1875, left=2, right=11),\n",
- " Link(height=1876, left=11, right=15),\n",
- " Link(height=1877, left=2, right=11)),\n",
- " (Link(height=1970, left=6, right=24),\n",
- " Link(height=1971, left=1, right=6),\n",
- " Link(height=1972, left=6, right=24)),\n",
- " (Link(height=2075, left=20, right=25),\n",
- " Link(height=2076, left=5, right=20),\n",
- " Link(height=2077, left=20, right=25)),\n",
- " (Link(height=2081, left=4, right=19),\n",
- " Link(height=2082, left=1, right=4),\n",
- " Link(height=2083, left=4, right=19)),\n",
- " (Link(height=2111, left=3, right=25),\n",
- " Link(height=2112, left=1, right=3),\n",
- " Link(height=2113, left=3, right=25)),\n",
- " (Link(height=2225, left=3, right=12),\n",
- " Link(height=2226, left=12, right=24),\n",
- " Link(height=2227, left=3, right=12)),\n",
- " (Link(height=2242, left=3, right=18),\n",
- " Link(height=2243, left=18, right=23),\n",
- " Link(height=2244, left=3, right=18))]"
- ]
- },
- "execution_count": 58,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "triple(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 59,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=316, left=8, right=17),\n",
- " Link(height=317, left=8, right=21),\n",
- " Link(height=318, left=8, right=17),\n",
- " Link(height=319, left=8, right=21)),\n",
- " (Link(height=867, left=4, right=11),\n",
- " Link(height=868, left=5, right=11),\n",
- " Link(height=869, left=4, right=11),\n",
- " Link(height=870, left=5, right=11))]"
- ]
- },
- "execution_count": 59,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "triple_pair(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=316, left=8, right=17),\n",
- " Link(height=317, left=8, right=21),\n",
- " Link(height=318, left=8, right=17),\n",
- " Link(height=319, left=8, right=21)),\n",
- " (Link(height=867, left=4, right=11),\n",
- " Link(height=868, left=5, right=11),\n",
- " Link(height=869, left=4, right=11),\n",
- " Link(height=870, left=5, right=11))]"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(elnet), lambda l: l.height)}\n",
- "triple_pair_hg(height_groups)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=1368, left=13, right=19),\n",
- " Link(height=1368, left=14, right=16),\n",
- " Link(height=1369, left=3, right=6)]"
- ]
- },
- "execution_count": 61,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "[l for l in elnet if l.height >= 1367 if l.height <= 1370 if link_ends(l) & set((6, 16, 19))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 21.3 s per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "triple_pair(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 105 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(elnet), lambda l: l.height)}\n",
- "triple_pair_hg(height_groups)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(elnet), lambda l: l.height)}\n",
- "assert triple_pair_hg(height_groups) == triple_pair(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 65,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=242, left=8, right=9),\n",
- " Link(height=242, left=15, right=21),\n",
- " Link(height=243, left=1, right=9),\n",
- " Link(height=243, left=8, right=14),\n",
- " Link(height=243, left=11, right=15),\n",
- " Link(height=244, left=1, right=18),\n",
- " Link(height=244, left=6, right=8),\n",
- " Link(height=244, left=9, right=20),\n",
- " Link(height=244, left=15, right=25),\n",
- " Link(height=245, left=0, right=15),\n",
- " Link(height=245, left=1, right=16),\n",
- " Link(height=245, left=9, right=12),\n",
- " Link(height=245, left=18, right=21)]"
- ]
- },
- "execution_count": 65,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "[l for l in elnet if l.height >= 242 if l.height <= 245 ] #if l.left in [13, 17, 20] or l.right in [13, 17, 20]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_triple_pairs_slow(net):\n",
- " print(len(net))\n",
- " new_net = eliminate_a_triple_pair_slow(net)\n",
- " while new_net:\n",
- " print(len(net))\n",
- " net = new_net\n",
- " new_net = eliminate_a_triple_pair_slow(net)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 118,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_triple_pairs(net):\n",
- " print(len(net))\n",
- " new_net = eliminate_a_triple_pair(net)\n",
- " while new_net:\n",
- " print(len(net))\n",
- " net = new_net\n",
- " new_net = eliminate_a_triple_pair(net)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 134,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9811\n",
- "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
- "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=316, left=8, right=21) Link(height=317, left=8, right=17)\n",
- "9811\n",
- "eatp [(Link(height=866, left=4, right=11), Link(height=867, left=5, right=11), Link(height=868, left=4, right=11), Link(height=869, left=5, right=11))]\n",
- "removing Link(height=866, left=4, right=11) Link(height=867, left=5, right=11) Link(height=868, left=4, right=11) Link(height=869, left=5, right=11) ; adding Link(height=866, left=5, right=11) Link(height=867, left=4, right=11)\n",
- "9809\n",
- "eatp []\n"
- ]
- }
- ],
- "source": [
- "etlnet = eliminate_triple_pairs(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 112,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
- "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=317, left=8, right=17) Link(height=318, left=8, right=21)\n"
- ]
- }
- ],
- "source": [
- "etlnet = eliminate_a_triple_pair(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 135,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 136,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=315, left=17, right=20),\n",
- " Link(height=316, left=8, right=17),\n",
- " Link(height=317, left=8, right=21),\n",
- " Link(height=318, left=8, right=17),\n",
- " Link(height=319, left=8, right=21),\n",
- " Link(height=319, left=14, right=17),\n",
- " Link(height=320, left=2, right=8),\n",
- " Link(height=320, left=17, right=21)]"
- ]
- },
- "execution_count": 136,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "[l for l in elnet if l.height >= 315 if l.height <= 320 if link_ends(l) & set((8, 17, 21))] "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 137,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=17, right=20),\n",
- " Link(height=1, left=8, right=17),\n",
- " Link(height=2, left=8, right=21),\n",
- " Link(height=3, left=8, right=17),\n",
- " Link(height=4, left=8, right=21),\n",
- " Link(height=4, left=14, right=17),\n",
- " Link(height=5, left=2, right=8),\n",
- " Link(height=5, left=17, right=21)]"
- ]
- },
- "execution_count": 137,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "nf = [l for l in elnet if l.height >= 315 if l.height <= 320 if link_ends(l) & set((8, 17, 21))]\n",
- "pnf = pack(nf)\n",
- "pnf"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 138,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "d: Link(height=3, left=8, right=17)\n",
- "cs: [Link(height=2, left=8, right=21)]\n",
- "c: ; lines: {8, 17, 21}\n",
- "b: Link(height=1, left=8, right=17) ; bs: [Link(height=1, left=8, right=17)]\n",
- "ah: 0 ; als: []\n",
- "a: Link(height=0, left=8, right=21)\n",
- "d: Link(height=4, left=8, right=21)\n",
- "cs: [Link(height=3, left=8, right=17)]\n",
- "c: ; lines: {8, 17, 21}\n",
- "b: Link(height=2, left=8, right=21) ; bs: [Link(height=2, left=8, right=21)]\n",
- "ah: 1 ; als: [Link(height=1, left=8, right=17)]\n",
- "a: Link(height=1, left=8, right=17)\n",
- "adding: Link(height=1, left=8, right=17) Link(height=2, left=8, right=21) Link(height=3, left=8, right=17) Link(height=4, left=8, right=21)\n",
- "d: Link(height=4, left=14, right=17)\n",
- "cs: [Link(height=3, left=8, right=17)]\n",
- "c: ; lines: {8, 17, 14}\n",
- "b: Link(height=2, left=14, right=17) ; bs: [Link(height=2, left=8, right=21)]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "[(Link(height=1, left=8, right=17),\n",
- " Link(height=2, left=8, right=21),\n",
- " Link(height=3, left=8, right=17),\n",
- " Link(height=4, left=8, right=21))]"
- ]
- },
- "execution_count": 138,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(pnf), lambda l: l.height)}\n",
- "triple_pair_hg(height_groups, debug=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 139,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9811\n",
- "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
- "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=316, left=8, right=21) Link(height=317, left=8, right=17)\n",
- "9811\n",
- "eatp [(Link(height=866, left=4, right=11), Link(height=867, left=5, right=11), Link(height=868, left=4, right=11), Link(height=869, left=5, right=11))]\n",
- "removing Link(height=866, left=4, right=11) Link(height=867, left=5, right=11) Link(height=868, left=4, right=11) Link(height=869, left=5, right=11) ; adding Link(height=866, left=5, right=11) Link(height=867, left=4, right=11)\n",
- "9809\n",
- "eatp []\n"
- ]
- }
- ],
- "source": [
- "setlnet = eliminate_triple_pairs_slow(elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 140,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9807"
- ]
- },
- "execution_count": 140,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(setlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 141,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 142,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'zdunvslcfiqywjmkobhxtraegp'"
- ]
- },
- "execution_count": 142,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, etlnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 143,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'zdunvslcfiqywjmkobhxtraegp'"
- ]
- },
- "execution_count": 143,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, setlnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 144,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'zdunvslcfiqywjmkobhxtraegp'"
- ]
- },
- "execution_count": 144,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, elnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 145,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'zdunvslcfiqywjmkobhxtraegp'"
- ]
- },
- "execution_count": 145,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 146,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 146,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eliminable_pairs(etlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 147,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(10207, 9807)"
- ]
- },
- "execution_count": 147,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(lnet), len(etlnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 148,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def simplify(net0):\n",
- " netp = eliminate_pairs(net0)\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " while new_net:\n",
- "# print('sipl', len(net0), len(netp), len(new_net))\n",
- " netp = eliminate_pairs(new_net)\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " return netp"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 149,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
- "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=316, left=8, right=21) Link(height=317, left=8, right=17)\n",
- "eatp [(Link(height=866, left=4, right=11), Link(height=867, left=5, right=11), Link(height=868, left=4, right=11), Link(height=869, left=5, right=11))]\n",
- "removing Link(height=866, left=4, right=11) Link(height=867, left=5, right=11) Link(height=868, left=4, right=11) Link(height=869, left=5, right=11) ; adding Link(height=866, left=5, right=11) Link(height=867, left=4, right=11)\n",
- "eatp []\n"
- ]
- }
- ],
- "source": [
- "simple_lnet = simplify(plnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 150,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 150,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, simple_lnet)) == ''.join(follow_many(string.ascii_lowercase, lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 151,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'zdunvslcfiqywjmkobhxtraegp'"
- ]
- },
- "execution_count": 151,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, simple_lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 152,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'zdunvslcfiqywjmkobhxtraegp'"
- ]
- },
- "execution_count": 152,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, lnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 153,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9807"
- ]
- },
- "execution_count": 153,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(simple_lnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def add_triple_pair(net, max_lines=None):\n",
- " if not max_lines:\n",
- " max_lines = max(l.right for l in net)\n",
- " a, b, c = 0, 0, 0\n",
- " while len(set((a, b, c))) != 3:\n",
- " a = random.randrange(max_lines)\n",
- " b = random.randrange(max_lines)\n",
- " c = random.randrange(max_lines)\n",
- " tp = [(min(a, b), max(a, b)), (min(b, c), max(b, c))] * 2\n",
- " \n",
- " pairs = [(l.left, l.right) for l in sorted(net)]\n",
- " i = random.randrange(len(pairs))\n",
- " print(i, tp)\n",
- " new_pairs = pairs[:i] + tp + pairs[i:]\n",
- " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def add_pair(net, max_lines=None):\n",
- " if not max_lines:\n",
- " max_lines = max(l.right for l in net)\n",
- "\n",
- " a, b = 0, 0\n",
- " while a == b:\n",
- " a = random.randrange(max_lines)\n",
- " b = random.randrange(max_lines)\n",
- " p = [(min(a, b), max(a, b))] * 2\n",
- " \n",
- " pairs = [(l.left, l.right) for l in sorted(net)]\n",
- " i = random.randrange(len(pairs))\n",
- " \n",
- " print(i, p)\n",
- " new_pairs = pairs[:i] + p + pairs[i:]\n",
- " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true,
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "lnettp = simple_lnet\n",
- "for _ in range(10):\n",
- " lnettp = add_pair(lnettp)\n",
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true,
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "lnettp = simple_lnet\n",
- "for _ in range(10):\n",
- " lnettp = add_triple_pair(lnettp)\n",
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true,
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "lnettp = simple_lnet\n",
- "for _ in range(10):\n",
- " lnettp = add_pair(lnettp)\n",
- "for _ in range(10):\n",
- " lnettp = add_triple_pair(lnettp)\n",
- "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
- "tps = triple_pair_hg(height_groups)\n",
- "tps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "lnettp == pack(lnettp)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "lnettps = simplify(lnettp)\n",
- "len(lnettps)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "len(simple_lnet), len(lnettp), len(lnettps)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.5.2+"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
+++ /dev/null
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import collections\n",
- "import string\n",
- "import itertools\n",
- "import re"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "Link = collections.namedtuple('Link', 'height left right')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def extract_pairs(net_string):\n",
- " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def read_net_string(net_string):\n",
- " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def read_net(filename):\n",
- " with open(filename) as f:\n",
- " pairs = [re.split('\\D+', p.strip()) for p in f.readlines()]\n",
- " lrs = [(int(lr[1]), int(lr[2])) for lr in pairs]\n",
- " return [Link(h, l, r) \n",
- " for h, (l, r) in enumerate(lrs)]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=2, right=5),\n",
- " Link(height=1, left=1, right=4),\n",
- " Link(height=2, left=0, right=3),\n",
- " Link(height=3, left=0, right=3),\n",
- " Link(height=4, left=0, right=5),\n",
- " Link(height=5, left=3, right=5),\n",
- " Link(height=6, left=0, right=2),\n",
- " Link(height=7, left=3, right=4),\n",
- " Link(height=8, left=2, right=4),\n",
- " Link(height=9, left=1, right=2),\n",
- " Link(height=10, left=0, right=4),\n",
- " Link(height=11, left=1, right=2),\n",
- " Link(height=12, left=2, right=4),\n",
- " Link(height=13, left=0, right=4),\n",
- " Link(height=14, left=1, right=4)]"
- ]
- },
- "execution_count": 32,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "small_net = read_net('04-small.txt')\n",
- "small_net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10135"
- ]
- },
- "execution_count": 33,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "net = read_net('04-lines.txt')\n",
- "len(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def show_net(links, pair_sep=', '):\n",
- " return pair_sep.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def link_ends(link):\n",
- " return set((link.left, link.right))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow(initial_line, links):\n",
- " line = initial_line\n",
- " heights = sorted(set(l.height for l in links))\n",
- " for h in heights:\n",
- " for l in [l for l in links if l.height == h]:\n",
- " if line in link_ends(l):\n",
- " line = [e for e in link_ends(l) if e != line][0]\n",
- "# print(l, line)\n",
- " return line"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def pack(net):\n",
- " packed_links = []\n",
- " line_heights = collections.defaultdict(lambda: -1)\n",
- " for link in sorted(net):\n",
- " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
- " line_heights[link.left] = link_height\n",
- " line_heights[link.right] = link_height\n",
- " packed_links += [Link(link_height, link.left, link.right)]\n",
- " return sorted(packed_links)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "14"
- ]
- },
- "execution_count": 38,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in small_net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10"
- ]
- },
- "execution_count": 39,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in pack(small_net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10134"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "pnet = pack(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2286"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def height_groups(net):\n",
- " return {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow_many(in_sequence, net):\n",
- " hgs = height_groups(net)\n",
- " seq = list(in_sequence)\n",
- " for h in hgs:\n",
- " for link in hgs[h]:\n",
- " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
- " return seq"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'acfbed'"
- ]
- },
- "execution_count": 45,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many('abcdef', small_net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10000 loops, best of 3: 39.5 µs per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many('abcdefghij', small_net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 47,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 19.7 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many(string.ascii_lowercase, net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "100 loops, best of 3: 18.6 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many(string.ascii_lowercase, pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.5.2+"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
+++ /dev/null
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import collections\n",
- "import string\n",
- "import itertools\n",
- "import re"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "Link = collections.namedtuple('Link', 'height left right')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def extract_pairs(net_string):\n",
- " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def read_net_string(net_string):\n",
- " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def read_net(filename):\n",
- " with open(filename) as f:\n",
- " pairs = [re.split('\\D+', p.strip()) for p in f.readlines()]\n",
- " lrs = [(int(lr[1]), int(lr[2])) for lr in pairs]\n",
- " return [Link(h, l, r) \n",
- " for h, (l, r) in enumerate(lrs)]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[Link(height=0, left=2, right=5),\n",
- " Link(height=1, left=1, right=4),\n",
- " Link(height=2, left=0, right=3),\n",
- " Link(height=3, left=0, right=3),\n",
- " Link(height=4, left=0, right=5),\n",
- " Link(height=5, left=3, right=5),\n",
- " Link(height=6, left=0, right=2),\n",
- " Link(height=7, left=3, right=4),\n",
- " Link(height=8, left=2, right=4),\n",
- " Link(height=9, left=1, right=2),\n",
- " Link(height=10, left=0, right=4),\n",
- " Link(height=11, left=1, right=2),\n",
- " Link(height=12, left=2, right=4),\n",
- " Link(height=13, left=0, right=4),\n",
- " Link(height=14, left=1, right=4)]"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "small_net = read_net('04-small.txt')\n",
- "small_net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10135"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "net = read_net('04-lines.txt')\n",
- "len(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def show_net(links, pair_sep=', '):\n",
- " return pair_sep.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def link_ends(link):\n",
- " return set((link.left, link.right))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow(initial_line, links):\n",
- " line = initial_line\n",
- " heights = sorted(set(l.height for l in links))\n",
- " for h in heights:\n",
- " for l in [l for l in links if l.height == h]:\n",
- " if line in link_ends(l):\n",
- " line = [e for e in link_ends(l) if e != line][0]\n",
- "# print(l, line)\n",
- " return line"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def pack(net):\n",
- " packed_links = []\n",
- " line_heights = collections.defaultdict(lambda: -1)\n",
- " for link in sorted(net):\n",
- " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
- " line_heights[link.left] = link_height\n",
- " line_heights[link.right] = link_height\n",
- " packed_links += [Link(link_height, link.left, link.right)]\n",
- " return sorted(packed_links)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "14"
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in small_net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10"
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in pack(small_net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "10134"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2286"
- ]
- },
- "execution_count": 15,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "max(l.height for l in pack(net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def height_groups(net):\n",
- " return {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def follow_many(in_sequence, net):\n",
- " hgs = height_groups(net)\n",
- " seq = list(in_sequence)\n",
- " for h in hgs:\n",
- " for link in hgs[h]:\n",
- " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
- " return seq"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'acfbedghij'"
- ]
- },
- "execution_count": 18,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many('abcdefghij', small_net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10000 loops, best of 3: 38.1 µs per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many('abcdefghij', small_net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 20,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "100 loops, best of 3: 19 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "follow_many(string.ascii_lowercase, net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "pnet = pack(net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pairs(net):\n",
- " hgs = height_groups(net)\n",
- " eps = []\n",
- " for h in range(1, max(hgs.keys())):\n",
- " for l in hgs[h]:\n",
- " o = Link(l.height - 1, l.left, l.right)\n",
- " if o in hgs[h-1]:\n",
- " eps += [(l, o)]\n",
- " return eps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=115, left=2, right=23), Link(height=114, left=2, right=23)),\n",
- " (Link(height=149, left=15, right=23), Link(height=148, left=15, right=23)),\n",
- " (Link(height=201, left=0, right=7), Link(height=200, left=0, right=7)),\n",
- " (Link(height=207, left=22, right=23), Link(height=206, left=22, right=23)),\n",
- " (Link(height=210, left=17, right=23), Link(height=209, left=17, right=23)),\n",
- " (Link(height=247, left=16, right=20), Link(height=246, left=16, right=20)),\n",
- " (Link(height=418, left=19, right=24), Link(height=417, left=19, right=24)),\n",
- " (Link(height=424, left=9, right=21), Link(height=423, left=9, right=21)),\n",
- " (Link(height=453, left=3, right=16), Link(height=452, left=3, right=16)),\n",
- " (Link(height=456, left=2, right=22), Link(height=455, left=2, right=22)),\n",
- " (Link(height=465, left=18, right=20), Link(height=464, left=18, right=20)),\n",
- " (Link(height=491, left=14, right=18), Link(height=490, left=14, right=18)),\n",
- " (Link(height=552, left=16, right=17), Link(height=551, left=16, right=17)),\n",
- " (Link(height=772, left=0, right=7), Link(height=771, left=0, right=7)),\n",
- " (Link(height=848, left=1, right=2), Link(height=847, left=1, right=2)),\n",
- " (Link(height=895, left=6, right=21), Link(height=894, left=6, right=21)),\n",
- " (Link(height=930, left=11, right=13), Link(height=929, left=11, right=13)),\n",
- " (Link(height=987, left=8, right=17), Link(height=986, left=8, right=17)),\n",
- " (Link(height=988, left=8, right=17), Link(height=987, left=8, right=17)),\n",
- " (Link(height=1030, left=9, right=24), Link(height=1029, left=9, right=24)),\n",
- " (Link(height=1134, left=4, right=23), Link(height=1133, left=4, right=23)),\n",
- " (Link(height=1163, left=14, right=15), Link(height=1162, left=14, right=15)),\n",
- " (Link(height=1164, left=14, right=15), Link(height=1163, left=14, right=15)),\n",
- " (Link(height=1170, left=2, right=21), Link(height=1169, left=2, right=21)),\n",
- " (Link(height=1232, left=6, right=22), Link(height=1231, left=6, right=22)),\n",
- " (Link(height=1254, left=13, right=15), Link(height=1253, left=13, right=15)),\n",
- " (Link(height=1255, left=1, right=24), Link(height=1254, left=1, right=24)),\n",
- " (Link(height=1324, left=3, right=22), Link(height=1323, left=3, right=22)),\n",
- " (Link(height=1370, left=15, right=19), Link(height=1369, left=15, right=19)),\n",
- " (Link(height=1441, left=0, right=14), Link(height=1440, left=0, right=14)),\n",
- " (Link(height=1441, left=11, right=24), Link(height=1440, left=11, right=24)),\n",
- " (Link(height=1547, left=11, right=13), Link(height=1546, left=11, right=13)),\n",
- " (Link(height=1578, left=14, right=23), Link(height=1577, left=14, right=23)),\n",
- " (Link(height=1616, left=7, right=14), Link(height=1615, left=7, right=14)),\n",
- " (Link(height=1671, left=8, right=20), Link(height=1670, left=8, right=20)),\n",
- " (Link(height=1684, left=14, right=18), Link(height=1683, left=14, right=18)),\n",
- " (Link(height=1717, left=0, right=17), Link(height=1716, left=0, right=17)),\n",
- " (Link(height=1727, left=7, right=8), Link(height=1726, left=7, right=8)),\n",
- " (Link(height=1866, left=8, right=16), Link(height=1865, left=8, right=16)),\n",
- " (Link(height=1911, left=1, right=12), Link(height=1910, left=1, right=12)),\n",
- " (Link(height=1966, left=20, right=23), Link(height=1965, left=20, right=23)),\n",
- " (Link(height=1974, left=5, right=23), Link(height=1973, left=5, right=23)),\n",
- " (Link(height=1994, left=18, right=19), Link(height=1993, left=18, right=19)),\n",
- " (Link(height=2005, left=2, right=19), Link(height=2004, left=2, right=19)),\n",
- " (Link(height=2031, left=12, right=17), Link(height=2030, left=12, right=17)),\n",
- " (Link(height=2108, left=7, right=12), Link(height=2107, left=7, right=12)),\n",
- " (Link(height=2137, left=7, right=16), Link(height=2136, left=7, right=16)),\n",
- " (Link(height=2138, left=7, right=16), Link(height=2137, left=7, right=16)),\n",
- " (Link(height=2229, left=10, right=11), Link(height=2228, left=10, right=11)),\n",
- " (Link(height=2239, left=16, right=24), Link(height=2238, left=16, right=24)),\n",
- " (Link(height=2240, left=16, right=24), Link(height=2239, left=16, right=24)),\n",
- " (Link(height=2246, left=4, right=13), Link(height=2245, left=4, right=13)),\n",
- " (Link(height=2247, left=4, right=13), Link(height=2246, left=4, right=13)),\n",
- " (Link(height=2276, left=19, right=24), Link(height=2275, left=19, right=24)),\n",
- " (Link(height=2277, left=4, right=18), Link(height=2276, left=4, right=18))]"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eliminable_pairs(pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10 loops, best of 3: 23.5 ms per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "eliminable_pairs(pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminable_pair(hgs):\n",
- " for h in range(1, max(hgs.keys())):\n",
- " for l in hgs[h]:\n",
- " o = Link(l.height - 1, l.left, l.right)\n",
- " if o in hgs[h-1]:\n",
- " return l, o\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_pairs(net):\n",
- " hgs = height_groups(pack(net))\n",
- " eliminable_links = eliminable_pair(hgs)\n",
- " while eliminable_links:\n",
- " net = pack(l for l in net if l not in eliminable_links)\n",
- " hgs = height_groups(pack(net))\n",
- " eliminable_links = eliminable_pair(hgs)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "enet = eliminate_pairs(pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, net) == follow_many(string.ascii_lowercase, enet)\n",
- "assert follow_many(string.ascii_lowercase, pnet) == follow_many(string.ascii_lowercase, enet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 2.35 s per loop\n"
- ]
- }
- ],
- "source": [
- "%%timeit\n",
- "eliminate_pairs(pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def triple_pair(height_groups, debug=False):\n",
- " ts = []\n",
- " for h in range(3, max(height_groups.keys())):\n",
- " for d in height_groups[h]:\n",
- " if debug: print('d:', d)\n",
- " ch = h - 1\n",
- " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
- " if debug: print('cs:', cs)\n",
- " while ch > 2 and not cs:\n",
- " ch -= 1\n",
- " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
- " if debug: print('cs:', cs)\n",
- " if len(cs) == 1:\n",
- " c = cs[0]\n",
- " lines = set((d.left, d.right, c.left, c.right))\n",
- " if debug: print('c:', '; lines:', lines)\n",
- " bs = [l for l in height_groups[ch-1] if link_ends(l) & lines]\n",
- " b = Link(ch - 1, d.left, d.right)\n",
- " if debug: print('b:', b, '; bs:', bs)\n",
- " if len(bs) == 1 and b in bs:\n",
- " ah = b.height - 1\n",
- " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
- " if debug: print('ah:', ah, '; als:', als)\n",
- " while ah > 0 and not als:\n",
- " ah -= 1\n",
- " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
- " if debug: print('ah:', ah, '; als:', als)\n",
- " a = Link(ah, c.left, c.right)\n",
- " if debug: print('a:', a)\n",
- " if a in als:\n",
- " if debug: print('adding:', a, b, c, d)\n",
- " ts += [(a, b, c, d)]\n",
- " return ts"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_a_triple_pair(net, debug=False):\n",
- " hgs = height_groups(net)\n",
- "\n",
- " tps = triple_pair(hgs)\n",
- " if debug: print('eatp', tps)\n",
- " if tps:\n",
- " a, b, c, d = tps[0]\n",
- " x = Link(b.height - 0.5, b.left, b.right)\n",
- " y = Link(b.height, a.left, a.right)\n",
- " if debug: print('removing', a, b, c, d, '; adding', x, y)\n",
- " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
- " return None"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(Link(height=8, left=1, right=5),\n",
- " Link(height=9, left=1, right=21),\n",
- " Link(height=10, left=1, right=5),\n",
- " Link(height=11, left=1, right=21)),\n",
- " (Link(height=40, left=16, right=23),\n",
- " Link(height=41, left=16, right=19),\n",
- " Link(height=42, left=16, right=23),\n",
- " Link(height=43, left=16, right=19)),\n",
- " (Link(height=62, left=0, right=10),\n",
- " Link(height=63, left=10, right=13),\n",
- " Link(height=64, left=0, right=10),\n",
- " Link(height=65, left=10, right=13)),\n",
- " (Link(height=137, left=23, right=24),\n",
- " Link(height=139, left=0, right=24),\n",
- " Link(height=140, left=23, right=24),\n",
- " Link(height=141, left=0, right=24)),\n",
- " (Link(height=138, left=10, right=21),\n",
- " Link(height=139, left=2, right=10),\n",
- " Link(height=140, left=10, right=21),\n",
- " Link(height=141, left=2, right=10)),\n",
- " (Link(height=139, left=2, right=10),\n",
- " Link(height=140, left=10, right=21),\n",
- " Link(height=141, left=2, right=10),\n",
- " Link(height=142, left=10, right=21)),\n",
- " (Link(height=156, left=6, right=11),\n",
- " Link(height=157, left=3, right=6),\n",
- " Link(height=158, left=6, right=11),\n",
- " Link(height=159, left=3, right=6)),\n",
- " (Link(height=184, left=2, right=21),\n",
- " Link(height=185, left=5, right=21),\n",
- " Link(height=186, left=2, right=21),\n",
- " Link(height=187, left=5, right=21)),\n",
- " (Link(height=272, left=7, right=13),\n",
- " Link(height=273, left=7, right=11),\n",
- " Link(height=274, left=7, right=13),\n",
- " Link(height=275, left=7, right=11)),\n",
- " (Link(height=290, left=14, right=15),\n",
- " Link(height=291, left=5, right=15),\n",
- " Link(height=292, left=14, right=15),\n",
- " Link(height=293, left=5, right=15)),\n",
- " (Link(height=387, left=1, right=8),\n",
- " Link(height=389, left=8, right=15),\n",
- " Link(height=390, left=1, right=8),\n",
- " Link(height=391, left=8, right=15)),\n",
- " (Link(height=420, left=14, right=22),\n",
- " Link(height=422, left=14, right=18),\n",
- " Link(height=423, left=14, right=22),\n",
- " Link(height=424, left=14, right=18)),\n",
- " (Link(height=432, left=5, right=19),\n",
- " Link(height=433, left=1, right=19),\n",
- " Link(height=434, left=5, right=19),\n",
- " Link(height=435, left=1, right=19)),\n",
- " (Link(height=454, left=0, right=15),\n",
- " Link(height=455, left=14, right=15),\n",
- " Link(height=456, left=0, right=15),\n",
- " Link(height=457, left=14, right=15)),\n",
- " (Link(height=546, left=13, right=21),\n",
- " Link(height=547, left=6, right=21),\n",
- " Link(height=548, left=13, right=21),\n",
- " Link(height=549, left=6, right=21)),\n",
- " (Link(height=620, left=17, right=23),\n",
- " Link(height=621, left=1, right=23),\n",
- " Link(height=622, left=17, right=23),\n",
- " Link(height=623, left=1, right=23)),\n",
- " (Link(height=699, left=8, right=15),\n",
- " Link(height=700, left=3, right=15),\n",
- " Link(height=701, left=8, right=15),\n",
- " Link(height=702, left=3, right=15)),\n",
- " (Link(height=789, left=7, right=24),\n",
- " Link(height=790, left=8, right=24),\n",
- " Link(height=791, left=7, right=24),\n",
- " Link(height=792, left=8, right=24)),\n",
- " (Link(height=795, left=8, right=13),\n",
- " Link(height=796, left=4, right=8),\n",
- " Link(height=797, left=8, right=13),\n",
- " Link(height=798, left=4, right=8)),\n",
- " (Link(height=809, left=16, right=17),\n",
- " Link(height=810, left=3, right=16),\n",
- " Link(height=811, left=16, right=17),\n",
- " Link(height=812, left=3, right=16)),\n",
- " (Link(height=900, left=2, right=15),\n",
- " Link(height=901, left=13, right=15),\n",
- " Link(height=902, left=2, right=15),\n",
- " Link(height=903, left=13, right=15)),\n",
- " (Link(height=921, left=2, right=15),\n",
- " Link(height=922, left=15, right=16),\n",
- " Link(height=923, left=2, right=15),\n",
- " Link(height=924, left=15, right=16)),\n",
- " (Link(height=961, left=2, right=15),\n",
- " Link(height=962, left=2, right=14),\n",
- " Link(height=963, left=2, right=15),\n",
- " Link(height=964, left=2, right=14)),\n",
- " (Link(height=976, left=13, right=18),\n",
- " Link(height=979, left=18, right=19),\n",
- " Link(height=980, left=13, right=18),\n",
- " Link(height=981, left=18, right=19)),\n",
- " (Link(height=985, left=5, right=16),\n",
- " Link(height=986, left=2, right=5),\n",
- " Link(height=987, left=5, right=16),\n",
- " Link(height=988, left=2, right=5)),\n",
- " (Link(height=1050, left=9, right=24),\n",
- " Link(height=1054, left=9, right=18),\n",
- " Link(height=1055, left=9, right=24),\n",
- " Link(height=1056, left=9, right=18)),\n",
- " (Link(height=1159, left=11, right=21),\n",
- " Link(height=1160, left=11, right=14),\n",
- " Link(height=1161, left=11, right=21),\n",
- " Link(height=1162, left=11, right=14)),\n",
- " (Link(height=1284, left=0, right=11),\n",
- " Link(height=1285, left=0, right=14),\n",
- " Link(height=1286, left=0, right=11),\n",
- " Link(height=1287, left=0, right=14)),\n",
- " (Link(height=1331, left=4, right=9),\n",
- " Link(height=1333, left=4, right=10),\n",
- " Link(height=1334, left=4, right=9),\n",
- " Link(height=1335, left=4, right=10)),\n",
- " (Link(height=1332, left=12, right=18),\n",
- " Link(height=1333, left=12, right=24),\n",
- " Link(height=1334, left=12, right=18),\n",
- " Link(height=1335, left=12, right=24)),\n",
- " (Link(height=1343, left=0, right=17),\n",
- " Link(height=1344, left=0, right=23),\n",
- " Link(height=1345, left=0, right=17),\n",
- " Link(height=1346, left=0, right=23)),\n",
- " (Link(height=1357, left=4, right=16),\n",
- " Link(height=1358, left=16, right=17),\n",
- " Link(height=1359, left=4, right=16),\n",
- " Link(height=1360, left=16, right=17)),\n",
- " (Link(height=1441, left=6, right=20),\n",
- " Link(height=1443, left=16, right=20),\n",
- " Link(height=1444, left=6, right=20),\n",
- " Link(height=1445, left=16, right=20)),\n",
- " (Link(height=1464, left=17, right=23),\n",
- " Link(height=1465, left=3, right=17),\n",
- " Link(height=1466, left=17, right=23),\n",
- " Link(height=1467, left=3, right=17)),\n",
- " (Link(height=1540, left=8, right=23),\n",
- " Link(height=1541, left=7, right=23),\n",
- " Link(height=1542, left=8, right=23),\n",
- " Link(height=1543, left=7, right=23)),\n",
- " (Link(height=1570, left=0, right=1),\n",
- " Link(height=1571, left=1, right=21),\n",
- " Link(height=1572, left=0, right=1),\n",
- " Link(height=1573, left=1, right=21)),\n",
- " (Link(height=1600, left=15, right=22),\n",
- " Link(height=1603, left=7, right=15),\n",
- " Link(height=1604, left=15, right=22),\n",
- " Link(height=1605, left=7, right=15)),\n",
- " (Link(height=1632, left=12, right=18),\n",
- " Link(height=1634, left=12, right=20),\n",
- " Link(height=1635, left=12, right=18),\n",
- " Link(height=1636, left=12, right=20)),\n",
- " (Link(height=1702, left=13, right=24),\n",
- " Link(height=1705, left=14, right=24),\n",
- " Link(height=1706, left=13, right=24),\n",
- " Link(height=1707, left=14, right=24)),\n",
- " (Link(height=1721, left=3, right=24),\n",
- " Link(height=1722, left=3, right=21),\n",
- " Link(height=1723, left=3, right=24),\n",
- " Link(height=1724, left=3, right=21)),\n",
- " (Link(height=1722, left=3, right=21),\n",
- " Link(height=1723, left=3, right=24),\n",
- " Link(height=1724, left=3, right=21),\n",
- " Link(height=1725, left=3, right=24)),\n",
- " (Link(height=1762, left=0, right=21),\n",
- " Link(height=1763, left=13, right=21),\n",
- " Link(height=1764, left=0, right=21),\n",
- " Link(height=1765, left=13, right=21)),\n",
- " (Link(height=1769, left=7, right=9),\n",
- " Link(height=1770, left=7, right=12),\n",
- " Link(height=1771, left=7, right=9),\n",
- " Link(height=1772, left=7, right=12)),\n",
- " (Link(height=1914, left=10, right=24),\n",
- " Link(height=1915, left=8, right=24),\n",
- " Link(height=1916, left=10, right=24),\n",
- " Link(height=1917, left=8, right=24)),\n",
- " (Link(height=1920, left=4, right=23),\n",
- " Link(height=1921, left=3, right=4),\n",
- " Link(height=1922, left=4, right=23),\n",
- " Link(height=1923, left=3, right=4)),\n",
- " (Link(height=2023, left=4, right=7),\n",
- " Link(height=2024, left=7, right=15),\n",
- " Link(height=2025, left=4, right=7),\n",
- " Link(height=2026, left=7, right=15)),\n",
- " (Link(height=2025, left=8, right=19),\n",
- " Link(height=2031, left=8, right=15),\n",
- " Link(height=2032, left=8, right=19),\n",
- " Link(height=2033, left=8, right=15)),\n",
- " (Link(height=2152, left=10, right=15),\n",
- " Link(height=2153, left=10, right=16),\n",
- " Link(height=2154, left=10, right=15),\n",
- " Link(height=2155, left=10, right=16)),\n",
- " (Link(height=2194, left=22, right=24),\n",
- " Link(height=2195, left=7, right=22),\n",
- " Link(height=2196, left=22, right=24),\n",
- " Link(height=2197, left=7, right=22)),\n",
- " (Link(height=2211, left=5, right=6),\n",
- " Link(height=2212, left=6, right=14),\n",
- " Link(height=2213, left=5, right=6),\n",
- " Link(height=2214, left=6, right=14))]"
- ]
- },
- "execution_count": 33,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "hgs = height_groups(enet)\n",
- "triple_pair(hgs)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "etnet = eliminate_a_triple_pair(enet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, etnet) == follow_many(string.ascii_lowercase, enet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def eliminate_triple_pairs(net):\n",
- " print(len(net))\n",
- " new_net = eliminate_a_triple_pair(net)\n",
- " while new_net:\n",
- " print(len(net))\n",
- " net = new_net\n",
- " new_net = eliminate_a_triple_pair(net)\n",
- " return net"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "10033\n",
- "10033\n",
- "10031\n",
- "10029\n",
- "10027\n",
- "10025\n",
- "10023\n",
- "10021\n",
- "10019\n",
- "10017\n",
- "10015\n",
- "10013\n",
- "10011\n",
- "10009\n",
- "10007\n",
- "10005\n",
- "10003\n",
- "10001\n",
- "9999\n",
- "9997\n",
- "9995\n",
- "9993\n",
- "9991\n",
- "9989\n",
- "9987\n",
- "9985\n",
- "9983\n",
- "9981\n",
- "9979\n",
- "9977\n",
- "9975\n",
- "9973\n",
- "9971\n",
- "9969\n",
- "9967\n",
- "9965\n",
- "9963\n",
- "9961\n",
- "9959\n",
- "9957\n",
- "9955\n",
- "9953\n",
- "9951\n",
- "9949\n",
- "9947\n",
- "9945\n",
- "9943\n",
- "9941\n",
- "9939\n"
- ]
- }
- ],
- "source": [
- "setnet = eliminate_triple_pairs(enet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9937"
- ]
- },
- "execution_count": 38,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(setnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "assert follow_many(string.ascii_lowercase, etnet) == follow_many(string.ascii_lowercase, enet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, etnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 41,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, setnet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, enet))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 43,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 44,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "eliminable_pairs(etnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(10135, 10031)"
- ]
- },
- "execution_count": 45,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(net), len(etnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def simplify(net0):\n",
- " netp = eliminate_pairs(net0)\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " while new_net:\n",
- "# print('sipl', len(net0), len(netp), len(new_net))\n",
- " netp = eliminate_pairs(new_net)\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " return netp"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "simple_net = simplify(pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, simple_net)) == ''.join(follow_many(string.ascii_lowercase, net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 49,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, simple_net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'doqzmbishkwunvltpcexyjgfra'"
- ]
- },
- "execution_count": 50,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9931"
- ]
- },
- "execution_count": 51,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(simple_net)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def simplify_with_checks(net0):\n",
- " netp = eliminate_pairs(net0)\n",
- " if follow_many(string.ascii_lowercase, net0) != follow_many(string.ascii_lowercase, netp):\n",
- " print('pairs', eliminable_pairs(net0))\n",
- " return net0\n",
- " else:\n",
- " print('pairs ok')\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
- " hg = find_height_groups(netp)\n",
- " print('triple', triple_pair_hg(hg))\n",
- " return netp\n",
- " else:\n",
- " print('triple ok')\n",
- " while new_net:\n",
- "# print('sipl', len(net0), len(netp), len(new_net))\n",
- " netp = eliminate_pairs(new_net)\n",
- " if follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
- " print('pairs', eliminable_pairs(new_net))\n",
- " return new_net\n",
- " else:\n",
- " print('pairs ok')\n",
- " new_net = eliminate_a_triple_pair(netp)\n",
- " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
- " hg = find_height_groups(netp)\n",
- " print('triple', triple_pair_hg(hg))\n",
- " return netp\n",
- " else:\n",
- " print('triple ok')\n",
- " print('** done')\n",
- " return netp"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "pairs ok\n",
- "triple ok\n",
- "** done\n"
- ]
- }
- ],
- "source": [
- "spnet = simplify_with_checks(pnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "''.join(follow_many(string.ascii_lowercase, spnet)) == ''.join(follow_many(string.ascii_lowercase, net))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "9931"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "len(spnet)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.5.2+"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
+++ /dev/null
-(ns day4
- (:require [clojure.string :as str]))
-
-(defstruct link :height :left :right)
-
-; (def network (str/split-lines (slurp "../04-small.txt")))
-(def network (str/split-lines (slurp "../04-lines.txt")))
-
-(defn parse-link [l, h]
- (let [endss (rest (str/split l #"\D+"))
- ends (map #(Integer/parseInt %) endss)]
- (struct-map link
- :height h
- :left (first ends)
- :right (second ends))))
-
-(defn parse-network [links]
- (map-indexed
- (fn [i l] (parse-link l i))
- links))
-
-(def parsed-network
- (parse-network network))
-
-
-(def initial
- (str/split "abcdefghijklmnopqrstuvwxyz" #""))
-
-(defn apply-link [items link]
- (let [li (get link :left)
- ri (get link :right)
- le (nth items li)
- re (nth items ri)
- pre (subvec items 0 li)
- mid (subvec items (inc li) ri)
- suf (subvec items (inc ri))]
- (into [] (concat pre (vector re) mid (vector le) suf))))
-
-(defn follow [items links]
- (reduce apply-link items links))
-
-
-(defn lane-count [links]
- (inc (apply max (map (fn [l] (get l :right)) links))))
-
-(defn initial-heights [links]
- (vec (replicate (lane-count links) -1)))
-
-(defn pack-one [lane-heights link]
- (let
- [li (get link :left)
- ri (get link :right)
- new-height (inc (max (nth lane-heights li)
- (nth lane-heights ri)))]
- (assoc lane-heights li new-height ri new-height)))
-
-(defn pack [lane-heights links]
- (reduce pack-one lane-heights links))
-
-
-(spit "day4.out" (prn-str
- (str/join (follow initial parsed-network))))
-
-(spit "day4.out" (prn-str
- (apply max
- (pack
- (initial-heights parsed-network)
- parsed-network)))
- :append true)
-
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ooo="http://xml.openoffice.org/svg/export"
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="210mm"
- height="297mm"
- viewBox="0 0 21000 29700"
- preserveAspectRatio="xMidYMid"
- fill-rule="evenodd"
- clip-path="url(#presentation_clip_path)"
- stroke-width="28.222"
- stroke-linejoin="round"
- xml:space="preserve"
- id="svg3643"
- inkscape:version="0.91 r13725"
- sodipodi:docname="small-expanded-trace.svg"
- inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/small-expanded-trace.svg.png"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><metadata
- id="metadata3910"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="1861"
- id="namedview3908"
- showgrid="false"
- inkscape:zoom="1.0643833"
- inkscape:cx="276.90122"
- inkscape:cy="367.61981"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g3695" /><defs
- class="ClipPathGroup"
- id="defs3645"><linearGradient
- id="linearGradient8870"
- osb:paint="solid"><stop
- style="stop-color:#ff0000;stop-opacity:1;"
- offset="0"
- id="stop8872" /></linearGradient><clipPath
- id="presentation_clip_path"
- clipPathUnits="userSpaceOnUse"><rect
- x="0"
- y="0"
- width="21000"
- height="29700"
- id="rect3648" /></clipPath><linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient8870"
- id="linearGradient8874"
- x1="7966.9326"
- y1="9084.5154"
- x2="11468.632"
- y2="9084.5154"
- gradientUnits="userSpaceOnUse" /></defs><defs
- class="TextShapeIndex"
- id="defs3650"><g
- ooo:slide="id1"
- ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
- id="g3652" /></defs><defs
- class="EmbeddedBulletChars"
- id="defs3654"><g
- id="bullet-char-template(57356)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
- id="path3657" /></g><g
- id="bullet-char-template(57354)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
- id="path3660" /></g><g
- id="bullet-char-template(10146)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
- id="path3663" /></g><g
- id="bullet-char-template(10132)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
- id="path3666" /></g><g
- id="bullet-char-template(10007)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
- id="path3669" /></g><g
- id="bullet-char-template(10004)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
- id="path3672" /></g><g
- id="bullet-char-template(9679)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
- id="path3675" /></g><g
- id="bullet-char-template(8226)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
- id="path3678" /></g><g
- id="bullet-char-template(8211)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
- id="path3681" /></g></defs><defs
- class="TextEmbeddedBitmaps"
- id="defs3683" /><g
- id="g3685"><g
- id="id2"
- class="Master_Slide"><g
- id="bg-id2"
- class="Background" /><g
- id="bo-id2"
- class="BackgroundObjects" /></g></g><g
- id="id1"
- class="Slide"
- clip-path="url(#presentation_clip_path)"><g
- class="Page"
- id="g3695"><g
- class="com.sun.star.drawing.LineShape"
- id="g3697"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id3"><path
- d="m 3000,4000 14000,0"
- id="path3700"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3702"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id4"><path
- d="m 3000,7000 14000,0"
- id="path3705"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3707"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id5"><path
- d="m 3000,6000 14000,0"
- id="path3710"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3712"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id6"><path
- d="m 3000,5000 14000,0"
- id="path3715"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3726"
- transform="matrix(0,1,-1,0,15249.203,8350.0008)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id8"><path
- d="m 5000,4130 0,1740"
- id="path3729"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3731"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3733"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id12"><path
- d="m 3000,8000 14000,0"
- id="path3765"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id15"><path
- d="m 3000,9000 14000,0"
- id="path3780"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3791"
- transform="matrix(0,1,-1,0,18234.183,1949.9993)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id17"><path
- d="m 6000,9140 0,1740"
- id="path3794"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3796"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3798"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3872"
- transform="matrix(0,1,-1,0,19281.34,-10450.002)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id26"><path
- d="m 13000,7140 0,2740"
- id="path3875"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3877"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3879"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3881"
- transform="matrix(0,1,-1,0,18223.967,-6950.0009)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id27"><path
- d="m 14000,6130 0,1740"
- id="path3884"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3886"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3888"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g4694"
- transform="translate(-360.97102,-11006.389)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><path
- d="m 12453.539,17156.388 -4740,0"
- id="path5000"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
- d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
- id="path5002"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
- id="path5004"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g><g
- transform="matrix(0,1,-1,0,16235.126,-5349.9999)"
- id="g5026"
- class="com.sun.star.drawing.LineShape"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5028"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5030"
- d="m 16000,7140 0,740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5032"
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5034"
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,18267.97,-7150.0004)"
- class="com.sun.star.drawing.LineShape"
- id="g5056"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5058"><path
- d="m 16000,7140 0,740"
- id="path5060"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g5006-1"
- class="com.sun.star.drawing.LineShape"
- transform="matrix(0,1,-1,0,18262.594,-5250.0002)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5008-4"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5010-9"
- d="m 15000,7140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5012-1"
- d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5014-0"
- d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2"
- transform="matrix(0,1,-1,0,15263.423,-5650.0016)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2"><path
- d="m 10000,5130 0,2740"
- id="path3848-0"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-9"
- transform="matrix(0,1,-1,0,16233.264,-6550.0019)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-5"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-0"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-0"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-2"
- transform="matrix(0,1,-1,0,16235.049,5150.0013)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-1"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-05"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15213.374,6250.001)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-8"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g4988-9"><path
- d="m 8000,4120 0,3740"
- id="path4990-8"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-0"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,16275.21,-3549.9995)"
- id="g5026-8"
- class="com.sun.star.drawing.LineShape"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5028-8"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5030-3"
- d="m 16000,7140 0,740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5032-8"
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5034-7"
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,15228.446,3550.0003)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-9"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g4988-94"><path
- d="m 8000,4120 0,3740"
- id="path4990-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-81"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="7129.8301"
- y="1827.9266"
- id="text5084"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5086"
- x="7129.8301"
- y="1827.9266">0</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="8151.4199"
- y="1834.2767"
- id="text5088"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5090"
- x="8151.4199"
- y="1834.2767">1</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="9133.6406"
- y="1834.2767"
- id="text5092"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5094"
- x="9133.6406"
- y="1834.2767">2</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="10134.063"
- y="1827.9266"
- id="text5096"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5098"
- x="10134.063"
- y="1827.9266">3</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="11130.253"
- y="1834.2767"
- id="text5100"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5102"
- x="11130.253"
- y="1834.2767">4</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="12131.523"
- y="1827.9266"
- id="text5104"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5106"
- x="12131.523"
- y="1827.9266">5</tspan></text>
-<g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-0"
- transform="matrix(0,1,-1,0,15252.775,-4750.0014)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-9"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-6"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-7"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-2"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><path
- style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient8874);stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:225.77779049,225.77779049;stroke-dashoffset:0"
- d="m 7981.0437,2124.3028 0,1113.6341 3473.4773,0 0,5356.0492 -1431.815,0 0,7450.7419"
- id="path8868"
- inkscape:connector-curvature="0"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001" /><path
- style="fill:none;fill-rule:evenodd;stroke:#00a900;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:225.77779049,112.88889524,56.44444762,112.88889524;stroke-opacity:1;stroke-dashoffset:0"
- d="m 12037.853,2150.8179 -58.359,217.7977 -3017.3919,0 -26.5151,5297.342 -1909.0868,26.5151 -53.0302,3632.5683 4507.566,0 0,1856.056 -2465.9037,0 0,2731.055"
- id="path8876"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccc"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001" /><path
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:169.33334287,169.33334287;stroke-opacity:1;stroke-dashoffset:0"
- d="m 7053.0154,2203.8481 0,1882.5716 3446.9626,0 0,1007.5738 -3526.508,0 0,848.4831 5541.655,0 0,901.5132 -2624.9946,0 0,1617.4207 1856.0566,0 0,1087.119 -2810.5999,0 0,768.9375 -928.0283,0 0,1829.542 1484.8454,0 0,874.998 2306.8128,0 0,1034.089 -4931.8073,0 0,1829.541"
- id="path8878"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccccccccccc"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001" /></g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ooo="http://xml.openoffice.org/svg/export"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="210mm"
- height="297mm"
- viewBox="0 0 21000 29700"
- preserveAspectRatio="xMidYMid"
- fill-rule="evenodd"
- clip-path="url(#presentation_clip_path)"
- stroke-width="28.222"
- stroke-linejoin="round"
- xml:space="preserve"
- id="svg3643"
- inkscape:version="0.91 r13725"
- sodipodi:docname="small-expanded.svg"
- inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/small-expanded.svg.png"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><metadata
- id="metadata3910"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="1861"
- id="namedview3908"
- showgrid="false"
- inkscape:zoom="1.1236312"
- inkscape:cx="296.83884"
- inkscape:cy="553.63354"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g3695" /><defs
- class="ClipPathGroup"
- id="defs3645"><clipPath
- id="presentation_clip_path"
- clipPathUnits="userSpaceOnUse"><rect
- x="0"
- y="0"
- width="21000"
- height="29700"
- id="rect3648" /></clipPath></defs><defs
- class="TextShapeIndex"
- id="defs3650"><g
- ooo:slide="id1"
- ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
- id="g3652" /></defs><defs
- class="EmbeddedBulletChars"
- id="defs3654"><g
- id="bullet-char-template(57356)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
- id="path3657" /></g><g
- id="bullet-char-template(57354)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
- id="path3660" /></g><g
- id="bullet-char-template(10146)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
- id="path3663" /></g><g
- id="bullet-char-template(10132)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
- id="path3666" /></g><g
- id="bullet-char-template(10007)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
- id="path3669" /></g><g
- id="bullet-char-template(10004)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
- id="path3672" /></g><g
- id="bullet-char-template(9679)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
- id="path3675" /></g><g
- id="bullet-char-template(8226)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
- id="path3678" /></g><g
- id="bullet-char-template(8211)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
- id="path3681" /></g></defs><defs
- class="TextEmbeddedBitmaps"
- id="defs3683" /><g
- id="g3685"><g
- id="id2"
- class="Master_Slide"><g
- id="bg-id2"
- class="Background" /><g
- id="bo-id2"
- class="BackgroundObjects" /></g></g><g
- id="id1"
- class="Slide"
- clip-path="url(#presentation_clip_path)"><g
- class="Page"
- id="g3695"><g
- class="com.sun.star.drawing.LineShape"
- id="g3697"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id3"><path
- d="m 3000,4000 14000,0"
- id="path3700"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3702"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id4"><path
- d="m 3000,7000 14000,0"
- id="path3705"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3707"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id5"><path
- d="m 3000,6000 14000,0"
- id="path3710"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3712"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id6"><path
- d="m 3000,5000 14000,0"
- id="path3715"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3726"
- transform="matrix(0,1,-1,0,15249.203,8350.0008)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id8"><path
- d="m 5000,4130 0,1740"
- id="path3729"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3731"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3733"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id12"><path
- d="m 3000,8000 14000,0"
- id="path3765"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id15"><path
- d="m 3000,9000 14000,0"
- id="path3780"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3791"
- transform="matrix(0,1,-1,0,18234.183,1949.9993)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id17"><path
- d="m 6000,9140 0,1740"
- id="path3794"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3796"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3798"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3872"
- transform="matrix(0,1,-1,0,19281.34,-10450.002)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id26"><path
- d="m 13000,7140 0,2740"
- id="path3875"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3877"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3879"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3881"
- transform="matrix(0,1,-1,0,18223.967,-6950.0009)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id27"><path
- d="m 14000,6130 0,1740"
- id="path3884"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3886"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3888"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g4694"
- transform="translate(-360.97102,-11006.389)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><path
- d="m 12453.539,17156.388 -4740,0"
- id="path5000"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
- d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
- id="path5002"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
- id="path5004"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g><g
- transform="matrix(0,1,-1,0,16235.126,-5349.9999)"
- id="g5026"
- class="com.sun.star.drawing.LineShape"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5028"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5030"
- d="m 16000,7140 0,740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5032"
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5034"
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,18267.97,-7150.0004)"
- class="com.sun.star.drawing.LineShape"
- id="g5056"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5058"><path
- d="m 16000,7140 0,740"
- id="path5060"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g5006-1"
- class="com.sun.star.drawing.LineShape"
- transform="matrix(0,1,-1,0,18262.594,-5250.0002)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5008-4"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5010-9"
- d="m 15000,7140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5012-1"
- d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5014-0"
- d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2"
- transform="matrix(0,1,-1,0,15263.423,-5650.0016)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2"><path
- d="m 10000,5130 0,2740"
- id="path3848-0"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-9"
- transform="matrix(0,1,-1,0,16233.264,-6550.0019)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-5"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-0"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-0"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-2"
- transform="matrix(0,1,-1,0,16235.049,5150.0013)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-1"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-05"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15213.374,6250.001)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-8"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g4988-9"><path
- d="m 8000,4120 0,3740"
- id="path4990-8"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-0"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,16275.21,-3549.9995)"
- id="g5026-8"
- class="com.sun.star.drawing.LineShape"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5028-8"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5030-3"
- d="m 16000,7140 0,740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5032-8"
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5034-7"
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,15228.446,3550.0003)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-9"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g4988-94"><path
- d="m 8000,4120 0,3740"
- id="path4990-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-81"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="7129.8301"
- y="1827.9266"
- id="text5084"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5086"
- x="7129.8301"
- y="1827.9266">0</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="8151.4199"
- y="1834.2767"
- id="text5088"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5090"
- x="8151.4199"
- y="1834.2767">1</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="9133.6406"
- y="1834.2767"
- id="text5092"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5094"
- x="9133.6406"
- y="1834.2767">2</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="10134.063"
- y="1827.9266"
- id="text5096"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5098"
- x="10134.063"
- y="1827.9266">3</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="11130.253"
- y="1834.2767"
- id="text5100"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5102"
- x="11130.253"
- y="1834.2767">4</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="12131.523"
- y="1827.9266"
- id="text5104"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5106"
- x="12131.523"
- y="1827.9266">5</tspan></text>
-<g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-0"
- transform="matrix(0,1,-1,0,15252.775,-4750.0014)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-9"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-6"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-7"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-2"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ooo="http://xml.openoffice.org/svg/export"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="210mm"
- height="297mm"
- viewBox="0 0 21000 29700"
- preserveAspectRatio="xMidYMid"
- fill-rule="evenodd"
- clip-path="url(#presentation_clip_path)"
- stroke-width="28.222"
- stroke-linejoin="round"
- xml:space="preserve"
- id="svg3643"
- inkscape:version="0.91 r13725"
- sodipodi:docname="small-packed.svg"
- inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/small-packed.svg.png"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><metadata
- id="metadata3910"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="1861"
- id="namedview3908"
- showgrid="false"
- inkscape:zoom="0.79452724"
- inkscape:cx="274.82193"
- inkscape:cy="553.63354"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g3695" /><defs
- class="ClipPathGroup"
- id="defs3645"><clipPath
- id="presentation_clip_path"
- clipPathUnits="userSpaceOnUse"><rect
- x="0"
- y="0"
- width="21000"
- height="29700"
- id="rect3648" /></clipPath></defs><defs
- class="TextShapeIndex"
- id="defs3650"><g
- ooo:slide="id1"
- ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
- id="g3652" /></defs><defs
- class="EmbeddedBulletChars"
- id="defs3654"><g
- id="bullet-char-template(57356)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
- id="path3657" /></g><g
- id="bullet-char-template(57354)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
- id="path3660" /></g><g
- id="bullet-char-template(10146)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
- id="path3663" /></g><g
- id="bullet-char-template(10132)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
- id="path3666" /></g><g
- id="bullet-char-template(10007)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
- id="path3669" /></g><g
- id="bullet-char-template(10004)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
- id="path3672" /></g><g
- id="bullet-char-template(9679)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
- id="path3675" /></g><g
- id="bullet-char-template(8226)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
- id="path3678" /></g><g
- id="bullet-char-template(8211)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
- id="path3681" /></g></defs><defs
- class="TextEmbeddedBitmaps"
- id="defs3683" /><g
- id="g3685"><g
- id="id2"
- class="Master_Slide"><g
- id="bg-id2"
- class="Background" /><g
- id="bo-id2"
- class="BackgroundObjects" /></g></g><g
- id="id1"
- class="Slide"
- clip-path="url(#presentation_clip_path)"><g
- class="Page"
- id="g3695"><g
- class="com.sun.star.drawing.LineShape"
- id="g3697"
- transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id3"><path
- d="m 3000,4000 14000,0"
- id="path3700"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3702"
- transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id4"><path
- d="m 3000,7000 14000,0"
- id="path3705"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3707"
- transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id5"><path
- d="m 3000,6000 14000,0"
- id="path3710"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3712"
- transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id6"><path
- d="m 3000,5000 14000,0"
- id="path3715"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3726"
- transform="matrix(0,1,-1,0,15249.203,5339.9514)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id8"><path
- d="m 5000,4130 0,1740"
- id="path3729"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3731"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3733"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762"
- transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id12"><path
- d="m 3000,8000 14000,0"
- id="path3765"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777"
- transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id15"><path
- d="m 3000,9000 14000,0"
- id="path3780"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- id="g4694"
- transform="translate(-360.97102,-12113.126)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><path
- d="m 12453.539,17156.388 -4740,0"
- id="path5000"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
- d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
- id="path5002"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
- id="path5004"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g><g
- id="g5937"
- transform="translate(0,223.62194)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- transform="matrix(0,1,-1,0,18223.967,-8349.5546)"
- id="g3881"
- class="com.sun.star.drawing.LineShape"><g
- id="id27"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3884"
- d="m 14000,6130 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3886"
- d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3888"
- d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,18234.183,-349.55456)"
- id="g3791"
- class="com.sun.star.drawing.LineShape"><g
- id="id17"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3794"
- d="m 6000,9140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3796"
- d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3798"
- d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- transform="matrix(0,1,-1,0,18267.97,-9295.131)"
- class="com.sun.star.drawing.LineShape"
- id="g5056"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5058"><path
- d="m 16000,7140 0,740"
- id="path5060"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g5006-1"
- class="com.sun.star.drawing.LineShape"
- transform="matrix(0,1,-1,0,18262.594,-7464.3289)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5008-4"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5010-9"
- d="m 15000,7140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5012-1"
- d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5014-0"
- d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- id="g5886"
- transform="translate(0,451.53465)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- transform="matrix(0,1,-1,0,19281.34,-10450)"
- id="g3872"
- class="com.sun.star.drawing.LineShape"><g
- id="id26"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3875"
- d="m 13000,7140 c -605.414,224.7611 -562.462,2618.4281 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3877"
- d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3879"
- d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,15263.423,-7436.6648)"
- id="g3845-2"
- class="com.sun.star.drawing.LineShape"><g
- id="id23-2"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3848-0"
- d="m 10000,5130 c 601.166,371.825 643.252,2484.2375 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3850-5"
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3852-5"
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
- id="g3845-2-9"
- class="com.sun.star.drawing.LineShape"><g
- id="id23-2-5"><path
- sodipodi:nodetypes="csc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3848-0-0"
- d="m 10000,5130 c -277.667,213.9675 -421.2037,1098.6751 9.274,1390.4294 324.857,220.17 439.1,1136.4521 -9.274,1349.5706" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3850-5-6"
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3852-5-0"
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-2"
- transform="matrix(0,1,-1,0,16235.049,2001.5555)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-1"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-05"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,16275.21,-6490.8506)"
- id="g5026-8"
- class="com.sun.star.drawing.LineShape"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g5028-8"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5030-3"
- d="m 16000,7140 0,740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5032-8"
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5034-7"
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- id="g5915"
- transform="translate(0,112.02661)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- class="com.sun.star.drawing.LineShape"
- id="g5026"
- transform="matrix(0,1,-1,0,16235.126,-7745.5541)"><g
- id="g5028"><path
- d="m 16000,7140 0,740"
- id="path5030"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5032"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5034"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g4986-9"
- class="com.sun.star.drawing.LineShape"
- transform="matrix(0,1,-1,0,15228.446,261.1142)"><g
- id="g4988-94"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path4990-9"
- d="m 8000,4120 c 418.244,712.6982 649.9435,3520.9134 0,3740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path4992-81"
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path4994-6"
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="7129.8301"
- y="1827.9266"
- id="text5084"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5086"
- x="7129.8301"
- y="1827.9266">0</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="8151.4199"
- y="1834.2767"
- id="text5088"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5090"
- x="8151.4199"
- y="1834.2767">1</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="9133.6406"
- y="1834.2767"
- id="text5092"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5094"
- x="9133.6406"
- y="1834.2767">2</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="10134.063"
- y="1827.9266"
- id="text5096"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5098"
- x="10134.063"
- y="1827.9266">3</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="11130.253"
- y="1834.2767"
- id="text5100"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5102"
- x="11130.253"
- y="1834.2767">4</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="12131.523"
- y="1827.9266"
- id="text5104"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><tspan
- sodipodi:role="line"
- id="tspan5106"
- x="12131.523"
- y="1827.9266">5</tspan></text>
-<g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-0"
- transform="matrix(0,1,-1,0,15252.775,-5787.5371)"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="id23-2-9"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-6"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-7"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-2"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15233.259,3170.7535)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-8"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><g
- id="g4988-9"><path
- d="m 8000,4120 0,3740"
- id="path4990-8"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-0"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ooo="http://xml.openoffice.org/svg/export"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="210mm"
- height="297mm"
- viewBox="0 0 21000 29700"
- preserveAspectRatio="xMidYMid"
- fill-rule="evenodd"
- clip-path="url(#presentation_clip_path)"
- stroke-width="28.222"
- stroke-linejoin="round"
- xml:space="preserve"
- id="svg3643"
- inkscape:version="0.91 r13725"
- sodipodi:docname="small-unpaired.svg"><metadata
- id="metadata3910"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="1861"
- id="namedview3908"
- showgrid="false"
- inkscape:zoom="1.5052653"
- inkscape:cx="352.90096"
- inkscape:cy="553.63354"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g3695" /><defs
- class="ClipPathGroup"
- id="defs3645"><clipPath
- id="presentation_clip_path"
- clipPathUnits="userSpaceOnUse"><rect
- x="0"
- y="0"
- width="21000"
- height="29700"
- id="rect3648" /></clipPath></defs><defs
- class="TextShapeIndex"
- id="defs3650"><g
- ooo:slide="id1"
- ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
- id="g3652" /></defs><defs
- class="EmbeddedBulletChars"
- id="defs3654"><g
- id="bullet-char-template(57356)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
- id="path3657" /></g><g
- id="bullet-char-template(57354)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
- id="path3660" /></g><g
- id="bullet-char-template(10146)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
- id="path3663" /></g><g
- id="bullet-char-template(10132)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
- id="path3666" /></g><g
- id="bullet-char-template(10007)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
- id="path3669" /></g><g
- id="bullet-char-template(10004)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
- id="path3672" /></g><g
- id="bullet-char-template(9679)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
- id="path3675" /></g><g
- id="bullet-char-template(8226)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
- id="path3678" /></g><g
- id="bullet-char-template(8211)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
- id="path3681" /></g></defs><defs
- class="TextEmbeddedBitmaps"
- id="defs3683" /><g
- id="g3685"><g
- id="id2"
- class="Master_Slide"><g
- id="bg-id2"
- class="Background" /><g
- id="bo-id2"
- class="BackgroundObjects" /></g></g><g
- id="id1"
- class="Slide"
- clip-path="url(#presentation_clip_path)"><g
- class="Page"
- id="g3695"><g
- class="com.sun.star.drawing.LineShape"
- id="g3697"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id3"><path
- d="m 3000,4000 14000,0"
- id="path3700"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3702"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id4"><path
- d="m 3000,7000 14000,0"
- id="path3705"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3707"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id5"><path
- d="m 3000,6000 14000,0"
- id="path3710"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3712"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id6"><path
- d="m 3000,5000 14000,0"
- id="path3715"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3726"
- transform="matrix(0,1,-1,0,15249.203,2349.4313)"><g
- id="id8"><path
- d="m 5000,4130 0,1740"
- id="path3729"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3731"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3733"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id12"><path
- d="m 3000,8000 14000,0"
- id="path3765"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id15"><path
- d="m 3000,9000 14000,0"
- id="path3780"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- id="g6375"
- transform="translate(0,-298.59846)"><g
- transform="matrix(0,1,-1,0,18234.183,-1353.1102)"
- id="g3791"
- class="com.sun.star.drawing.LineShape"><g
- id="id17"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3794"
- d="m 6000,9140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3796"
- d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3798"
- d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,18223.967,-9353.1102)"
- id="g3881"
- class="com.sun.star.drawing.LineShape"><g
- id="id27"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3884"
- d="m 14000,6130 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3886"
- d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3888"
- d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- id="g4694"
- transform="translate(-360.97102,-13558.382)"><path
- d="m 12453.539,17156.388 -4740,0"
- id="path5000"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
- d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
- id="path5002"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
- id="path5004"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g><g
- transform="matrix(0,1,-1,0,18267.97,-10901.424)"
- class="com.sun.star.drawing.LineShape"
- id="g5056"><g
- id="g5058"><path
- d="m 16000,7140 0,740"
- id="path5060"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g5006-1"
- class="com.sun.star.drawing.LineShape"
- transform="matrix(0,1,-1,0,18262.594,-9151.1387)"><g
- id="g5008-4"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path5010-9"
- d="m 15000,7140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5012-1"
- d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path5014-0"
- d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- id="g6363"
- transform="translate(0,-0.00494257)"><g
- transform="matrix(0,1,-1,0,19281.34,-10450)"
- id="g3872"
- class="com.sun.star.drawing.LineShape"><g
- id="id26"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3875"
- d="m 13000,7140 c -349.649,193.8279 -401.112,1686.6051 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3877"
- d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3879"
- d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
- id="g3845-2-9"
- class="com.sun.star.drawing.LineShape"><g
- id="id23-2-5"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3848-0-0"
- d="m 10000,5130 c 464.914,658.12 574.991,2352.8025 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3850-5-6"
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3852-5-0"
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-2"
- transform="matrix(0,1,-1,0,16235.049,-1149.9987)"><g
- id="id23-2-1"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-05"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15213.374,99.716312)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-8"><g
- id="g4988-9"><path
- d="m 8000,4120 0,3740"
- id="path4990-8"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-0"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15228.446,-1400.8537)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-9"><g
- id="g4988-94"><path
- d="m 8000,4120 0,3740"
- id="path4990-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-81"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="7129.8301"
- y="1827.9266"
- id="text5084"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5086"
- x="7129.8301"
- y="1827.9266">0</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="8151.4199"
- y="1834.2767"
- id="text5088"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5090"
- x="8151.4199"
- y="1834.2767">1</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="9133.6406"
- y="1834.2767"
- id="text5092"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5094"
- x="9133.6406"
- y="1834.2767">2</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="10134.063"
- y="1827.9266"
- id="text5096"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5098"
- x="10134.063"
- y="1827.9266">3</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="11130.253"
- y="1834.2767"
- id="text5100"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5102"
- x="11130.253"
- y="1834.2767">4</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="12131.523"
- y="1827.9266"
- id="text5104"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5106"
- x="12131.523"
- y="1827.9266">5</tspan></text>
-</g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ooo="http://xml.openoffice.org/svg/export"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="210mm"
- height="297mm"
- viewBox="0 0 21000 29700"
- preserveAspectRatio="xMidYMid"
- fill-rule="evenodd"
- clip-path="url(#presentation_clip_path)"
- stroke-width="28.222"
- stroke-linejoin="round"
- xml:space="preserve"
- id="svg3643"
- inkscape:version="0.91 r13725"
- sodipodi:docname="small-untriple-1.svg"><metadata
- id="metadata3910"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="1861"
- id="namedview3908"
- showgrid="false"
- inkscape:zoom="1.5052653"
- inkscape:cx="352.90096"
- inkscape:cy="553.63354"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g3695" /><defs
- class="ClipPathGroup"
- id="defs3645"><clipPath
- id="presentation_clip_path"
- clipPathUnits="userSpaceOnUse"><rect
- x="0"
- y="0"
- width="21000"
- height="29700"
- id="rect3648" /></clipPath></defs><defs
- class="TextShapeIndex"
- id="defs3650"><g
- ooo:slide="id1"
- ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
- id="g3652" /></defs><defs
- class="EmbeddedBulletChars"
- id="defs3654"><g
- id="bullet-char-template(57356)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
- id="path3657" /></g><g
- id="bullet-char-template(57354)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
- id="path3660" /></g><g
- id="bullet-char-template(10146)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
- id="path3663" /></g><g
- id="bullet-char-template(10132)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
- id="path3666" /></g><g
- id="bullet-char-template(10007)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
- id="path3669" /></g><g
- id="bullet-char-template(10004)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
- id="path3672" /></g><g
- id="bullet-char-template(9679)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
- id="path3675" /></g><g
- id="bullet-char-template(8226)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
- id="path3678" /></g><g
- id="bullet-char-template(8211)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
- id="path3681" /></g></defs><defs
- class="TextEmbeddedBitmaps"
- id="defs3683" /><g
- id="g3685"><g
- id="id2"
- class="Master_Slide"><g
- id="bg-id2"
- class="Background" /><g
- id="bo-id2"
- class="BackgroundObjects" /></g></g><g
- id="id1"
- class="Slide"
- clip-path="url(#presentation_clip_path)"><g
- class="Page"
- id="g3695"><g
- class="com.sun.star.drawing.LineShape"
- id="g3697"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id3"><path
- d="m 3000,4000 14000,0"
- id="path3700"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3702"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id4"><path
- d="m 3000,7000 14000,0"
- id="path3705"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3707"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id5"><path
- d="m 3000,6000 14000,0"
- id="path3710"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3712"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id6"><path
- d="m 3000,5000 14000,0"
- id="path3715"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3726"
- transform="matrix(0,1,-1,0,15249.203,1599.1463)"><g
- id="id8"><path
- d="m 5000,4130 0,1740"
- id="path3729"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3731"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3733"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id12"><path
- d="m 3000,8000 14000,0"
- id="path3765"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id15"><path
- d="m 3000,9000 14000,0"
- id="path3780"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- id="g6375"
- transform="translate(0,-298.59846)"><g
- transform="matrix(0,1,-1,0,18234.183,-1353.1102)"
- id="g3791"
- class="com.sun.star.drawing.LineShape"><g
- id="id17"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3794"
- d="m 6000,9140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3796"
- d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3798"
- d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,18223.967,-9353.1102)"
- id="g3881"
- class="com.sun.star.drawing.LineShape"><g
- id="id27"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3884"
- d="m 14000,6130 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3886"
- d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3888"
- d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- id="g4694"
- transform="translate(-360.97102,-13558.382)"><path
- d="m 12453.539,17156.388 -4740,0"
- id="path5000"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
- d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
- id="path5002"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
- id="path5004"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g><g
- transform="matrix(0,1,-1,0,18267.97,-10901.424)"
- class="com.sun.star.drawing.LineShape"
- id="g5056"><g
- id="g5058"><path
- d="m 16000,7140 0,740"
- id="path5060"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g6363"
- transform="translate(0,-0.00494257)"><g
- transform="matrix(0,1,-1,0,19281.34,-10450)"
- id="g3872"
- class="com.sun.star.drawing.LineShape"><g
- id="id26"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3875"
- d="m 13000,7140 c -349.649,193.8279 -401.112,1686.6051 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3877"
- d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3879"
- d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
- id="g3845-2-9"
- class="com.sun.star.drawing.LineShape"><g
- id="id23-2-5"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3848-0-0"
- d="m 10000,5130 c 464.914,658.12 574.991,2352.8025 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3850-5-6"
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3852-5-0"
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-2"
- transform="matrix(0,1,-1,0,16235.049,-1149.9987)"><g
- id="id23-2-1"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-05"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15213.374,99.716312)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-8"><g
- id="g4988-9"><path
- d="m 8000,4120 0,3740"
- id="path4990-8"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-0"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15228.446,-2151.1387)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-9"><g
- id="g4988-94"><path
- d="m 8000,4120 0,3740"
- id="path4990-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-81"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="7129.8301"
- y="1827.9266"
- id="text5084"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5086"
- x="7129.8301"
- y="1827.9266">0</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="8151.4199"
- y="1834.2767"
- id="text5088"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5090"
- x="8151.4199"
- y="1834.2767">1</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="9133.6406"
- y="1834.2767"
- id="text5092"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5094"
- x="9133.6406"
- y="1834.2767">2</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="10134.063"
- y="1827.9266"
- id="text5096"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5098"
- x="10134.063"
- y="1827.9266">3</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="11130.253"
- y="1834.2767"
- id="text5100"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5102"
- x="11130.253"
- y="1834.2767">4</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="12131.523"
- y="1827.9266"
- id="text5104"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5106"
- x="12131.523"
- y="1827.9266">5</tspan></text>
-<g
- transform="matrix(0,1,-1,0,15270.757,-650.56868)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-9-7"><g
- id="g4988-94-7"><path
- d="m 8000,4120 0,3740"
- id="path4990-9-3"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-81-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-6-3"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ooo="http://xml.openoffice.org/svg/export"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="210mm"
- height="297mm"
- viewBox="0 0 21000 29700"
- preserveAspectRatio="xMidYMid"
- fill-rule="evenodd"
- clip-path="url(#presentation_clip_path)"
- stroke-width="28.222"
- stroke-linejoin="round"
- xml:space="preserve"
- id="svg3643"
- inkscape:version="0.91 r13725"
- sodipodi:docname="small-untriple-2.svg"><metadata
- id="metadata3910"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="1861"
- id="namedview3908"
- showgrid="false"
- inkscape:zoom="1.5052653"
- inkscape:cx="352.90096"
- inkscape:cy="553.63354"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g3695" /><defs
- class="ClipPathGroup"
- id="defs3645"><clipPath
- id="presentation_clip_path"
- clipPathUnits="userSpaceOnUse"><rect
- x="0"
- y="0"
- width="21000"
- height="29700"
- id="rect3648" /></clipPath></defs><defs
- class="TextShapeIndex"
- id="defs3650"><g
- ooo:slide="id1"
- ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
- id="g3652" /></defs><defs
- class="EmbeddedBulletChars"
- id="defs3654"><g
- id="bullet-char-template(57356)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
- id="path3657" /></g><g
- id="bullet-char-template(57354)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
- id="path3660" /></g><g
- id="bullet-char-template(10146)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
- id="path3663" /></g><g
- id="bullet-char-template(10132)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
- id="path3666" /></g><g
- id="bullet-char-template(10007)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
- id="path3669" /></g><g
- id="bullet-char-template(10004)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
- id="path3672" /></g><g
- id="bullet-char-template(9679)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
- id="path3675" /></g><g
- id="bullet-char-template(8226)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
- id="path3678" /></g><g
- id="bullet-char-template(8211)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
- id="path3681" /></g></defs><defs
- class="TextEmbeddedBitmaps"
- id="defs3683" /><g
- id="g3685"><g
- id="id2"
- class="Master_Slide"><g
- id="bg-id2"
- class="Background" /><g
- id="bo-id2"
- class="BackgroundObjects" /></g></g><g
- id="id1"
- class="Slide"
- clip-path="url(#presentation_clip_path)"><g
- class="Page"
- id="g3695"><g
- class="com.sun.star.drawing.LineShape"
- id="g3697"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id3"><path
- d="m 3000,4000 14000,0"
- id="path3700"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3702"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id4"><path
- d="m 3000,7000 14000,0"
- id="path3705"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3707"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id5"><path
- d="m 3000,6000 14000,0"
- id="path3710"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3712"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id6"><path
- d="m 3000,5000 14000,0"
- id="path3715"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3726"
- transform="matrix(0,1,-1,0,15249.203,1599.1463)"><g
- id="id8"><path
- d="m 5000,4130 0,1740"
- id="path3729"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3731"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3733"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id12"><path
- d="m 3000,8000 14000,0"
- id="path3765"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777"
- transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
- id="id15"><path
- d="m 3000,9000 14000,0"
- id="path3780"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- id="g6375"
- transform="translate(0,-298.59846)"><g
- transform="matrix(0,1,-1,0,18234.183,-1353.1102)"
- id="g3791"
- class="com.sun.star.drawing.LineShape"><g
- id="id17"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3794"
- d="m 6000,9140 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3796"
- d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3798"
- d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,18223.967,-9353.1102)"
- id="g3881"
- class="com.sun.star.drawing.LineShape"><g
- id="id27"><path
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3884"
- d="m 14000,6130 0,1740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3886"
- d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3888"
- d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- id="g4694"
- transform="translate(-360.97102,-13558.382)"><path
- d="m 12453.539,17156.388 -4740,0"
- id="path5000"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
- d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
- id="path5002"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
- id="path5004"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g><g
- transform="matrix(0,1,-1,0,18267.97,-10901.424)"
- class="com.sun.star.drawing.LineShape"
- id="g5056"><g
- id="g5058"><path
- d="m 16000,7140 0,740"
- id="path5060"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- id="g6363"
- transform="translate(0,-0.00494257)"><g
- transform="matrix(0,1,-1,0,19281.34,-10450)"
- id="g3872"
- class="com.sun.star.drawing.LineShape"><g
- id="id26"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3875"
- d="m 13000,7140 c -349.649,193.8279 -401.112,1686.6051 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3877"
- d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3879"
- d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
- transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
- id="g3845-2-9"
- class="com.sun.star.drawing.LineShape"><g
- id="id23-2-5"><path
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
- inkscape:connector-curvature="0"
- id="path3848-0-0"
- d="m 10000,5130 c 464.914,658.12 574.991,2352.8025 0,2740" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3850-5-6"
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0"
- id="path3852-5-0"
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3845-2-2"
- transform="matrix(0,1,-1,0,16235.049,-2724.222)"><g
- id="id23-2-1"><path
- d="m 10000,5130 0,2740"
- id="path3848-0-05"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path3850-5-8"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path3852-5-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,15228.446,-2151.1387)"
- class="com.sun.star.drawing.LineShape"
- id="g4986-9"><g
- id="g4988-94"><path
- d="m 8000,4120 0,3740"
- id="path4990-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path4992-81"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path4994-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="7129.8301"
- y="1827.9266"
- id="text5084"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5086"
- x="7129.8301"
- y="1827.9266">0</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="8151.4199"
- y="1834.2767"
- id="text5088"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5090"
- x="8151.4199"
- y="1834.2767">1</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="9133.6406"
- y="1834.2767"
- id="text5092"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5094"
- x="9133.6406"
- y="1834.2767">2</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="10134.063"
- y="1827.9266"
- id="text5096"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5098"
- x="10134.063"
- y="1827.9266">3</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="11130.253"
- y="1834.2767"
- id="text5100"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5102"
- x="11130.253"
- y="1834.2767">4</tspan></text>
-<text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="12131.523"
- y="1827.9266"
- id="text5104"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan5106"
- x="12131.523"
- y="1827.9266">5</tspan></text>
-</g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:ooo="http://xml.openoffice.org/svg/export"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="210mm"
- height="297mm"
- viewBox="0 0 21000 29700"
- preserveAspectRatio="xMidYMid"
- fill-rule="evenodd"
- clip-path="url(#presentation_clip_path)"
- stroke-width="28.222"
- stroke-linejoin="round"
- xml:space="preserve"
- id="svg3643"
- inkscape:version="0.91 r13725"
- sodipodi:docname="untriple-general.svg"
- inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/untriple-general.svg.png"
- inkscape:export-xdpi="195.49001"
- inkscape:export-ydpi="195.49001"><metadata
- id="metadata3910"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1200"
- inkscape:window-height="1861"
- id="namedview3908"
- showgrid="false"
- inkscape:zoom="1.5890545"
- inkscape:cx="318.60384"
- inkscape:cy="553.63354"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g3695" /><defs
- class="ClipPathGroup"
- id="defs3645"><marker
- inkscape:stockid="DotL"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="DotL"
- style="overflow:visible"
- inkscape:isstock="true"><path
- id="path7709"
- d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) translate(7.4, 1)" /></marker><clipPath
- id="presentation_clip_path"
- clipPathUnits="userSpaceOnUse"><rect
- x="0"
- y="0"
- width="21000"
- height="29700"
- id="rect3648" /></clipPath></defs><defs
- class="TextShapeIndex"
- id="defs3650"><g
- ooo:slide="id1"
- ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
- id="g3652" /></defs><defs
- class="EmbeddedBulletChars"
- id="defs3654"><g
- id="bullet-char-template(57356)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
- id="path3657" /></g><g
- id="bullet-char-template(57354)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
- id="path3660" /></g><g
- id="bullet-char-template(10146)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
- id="path3663" /></g><g
- id="bullet-char-template(10132)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
- id="path3666" /></g><g
- id="bullet-char-template(10007)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
- id="path3669" /></g><g
- id="bullet-char-template(10004)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
- id="path3672" /></g><g
- id="bullet-char-template(9679)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
- id="path3675" /></g><g
- id="bullet-char-template(8226)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
- id="path3678" /></g><g
- id="bullet-char-template(8211)"
- transform="scale(0.00048828125,-0.00048828125)"><path
- d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
- id="path3681" /></g></defs><defs
- class="TextEmbeddedBitmaps"
- id="defs3683" /><g
- id="g3685"><g
- id="id2"
- class="Master_Slide"><g
- id="bg-id2"
- class="Background" /><g
- id="bo-id2"
- class="BackgroundObjects" /></g></g><g
- id="id1"
- class="Slide"
- clip-path="url(#presentation_clip_path)"><g
- class="Page"
- id="g3695"><path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,112.88889524;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 11201.748,2704.2129 0,2433.1719 310.443,0 0,-2433.1719 -310.443,0 z"
- id="path9048"
- inkscape:connector-curvature="0" /><path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,112.88889524;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 12201.748,2730.8534 0,2433.172 310.443,0 0,-2433.172 -310.443,0 z"
- id="path9048-0"
- inkscape:connector-curvature="0" /><path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,225.77779049;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 5688.1953,2576.7266 0,1806.9375 172.9824,0 0,-292.6836 137.4629,137.4629 0,-1651.7168 -310.4453,0 z"
- id="path8833"
- inkscape:connector-curvature="0" /><path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,225.77779049;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 7694.8688,3399.1784 0,1806.9376 172.9824,0 0,-292.6837 137.4629,137.463 0,-1651.7169 -310.4453,0 z"
- id="path8833-1"
- inkscape:connector-curvature="0" /><path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,225.77779049;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6664.7676,2704.2129 0,2379.8906 310.4433,0 0,-2379.8906 -310.4433,0 z"
- id="path8864"
- inkscape:connector-curvature="0" /><g
- class="com.sun.star.drawing.LineShape"
- id="g3702"
- transform="matrix(0,0.2718241,-1,0,14843.418,1267.4623)"><g
- id="id4"><path
- d="m 3000,7000 14000,0"
- id="path3705"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762"
- transform="matrix(0,0.2718241,-1,0,14843.418,1267.4623)"><g
- id="id12"><path
- d="m 3000,8000 14000,0"
- id="path3765"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777"
- transform="matrix(0,0.2718241,-1,0,14843.418,1267.4623)"><g
- id="id15"><path
- d="m 3000,9000 14000,0"
- id="path3780"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- transform="matrix(0,1,-1,0,13848.796,-13334.597)"
- class="com.sun.star.drawing.LineShape"
- id="g5056"><g
- id="g5058"><path
- d="m 16000,7140 0,740"
- id="path5060"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,14862.8,-12522.444)"
- class="com.sun.star.drawing.LineShape"
- id="g5056-0"><g
- id="g5058-0"><path
- d="m 16000,7140 0,740"
- id="path5060-7"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062-3"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064-9"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,13850.458,-11710.288)"
- class="com.sun.star.drawing.LineShape"
- id="g5056-4"><g
- id="g5058-5"><path
- d="m 16000,7140 0,740"
- id="path5060-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064-4"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,14862.8,-10898.135)"
- class="com.sun.star.drawing.LineShape"
- id="g5056-04"><g
- id="g5058-1"><path
- d="m 16000,7140 0,740"
- id="path5060-5"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062-2"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064-43"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3702-9"
- transform="matrix(0,0.27182404,-1,0,19356.969,1318.001)"><g
- id="id4-2"><path
- d="m 3000,7000 14000,0"
- id="path3705-8"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3762-8"
- transform="matrix(0,0.27182404,-1,0,19356.969,1318.001)"><g
- id="id12-5"><path
- d="m 3000,8000 14000,0"
- id="path3765-5"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- class="com.sun.star.drawing.LineShape"
- id="g3777-4"
- transform="matrix(0,0.27182404,-1,0,19356.969,1318.001)"><g
- id="id15-8"><path
- d="m 3000,9000 14000,0"
- id="path3780-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
- transform="matrix(0,1,-1,0,19378.339,-13284.059)"
- class="com.sun.star.drawing.LineShape"
- id="g5056-8"><g
- id="g5058-9"><path
- d="m 16000,7140 0,740"
- id="path5060-76"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062-4"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,18360.359,-12471.905)"
- class="com.sun.star.drawing.LineShape"
- id="g5056-0-3"><g
- id="g5058-0-5"><path
- d="m 16000,7140 0,740"
- id="path5060-7-7"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062-3-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064-9-9"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,19380.001,-11659.75)"
- class="com.sun.star.drawing.LineShape"
- id="g5056-4-5"><g
- id="g5058-5-1"><path
- d="m 16000,7140 0,740"
- id="path5060-9-1"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062-6-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064-4-5"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g><g
- transform="matrix(0,1,-1,0,19376.351,-10847.597)"
- class="com.sun.star.drawing.LineShape"
- id="g5056-04-9"><g
- id="g5058-1-0"><path
- d="m 16000,7140 0,740"
- id="path5060-5-6"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
- d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
- id="path5062-2-6"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /><path
- d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
- id="path5064-43-2"
- inkscape:connector-curvature="0"
- style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
--- /dev/null
+(15, 25)
+(5, 21)
+(1, 19)
+(7, 8)
+(6, 14)
+(2, 9)
+(11, 16)
+(1, 10)
+(14, 22)
+(2, 25)
+(7, 9)
+(8, 18)
+(6, 23)
+(4, 6)
+(2, 13)
+(9, 14)
+(12, 18)
+(0, 10)
+(2, 3)
+(6, 19)
+(1, 10)
+(8, 10)
+(0, 19)
+(10, 25)
+(19, 20)
+(2, 25)
+(10, 23)
+(3, 19)
+(17, 20)
+(3, 5)
+(8, 25)
+(19, 23)
+(2, 21)
+(16, 17)
+(1, 10)
+(2, 18)
+(8, 13)
+(3, 4)
+(1, 5)
+(1, 21)
+(11, 13)
+(4, 12)
+(0, 8)
+(3, 4)
+(1, 5)
+(4, 10)
+(1, 21)
+(5, 22)
+(1, 12)
+(10, 15)
+(4, 9)
+(5, 24)
+(8, 21)
+(3, 8)
+(1, 14)
+(14, 24)
+(8, 13)
+(1, 12)
+(3, 22)
+(13, 19)
+(0, 3)
+(1, 10)
+(12, 18)
+(5, 22)
+(4, 19)
+(5, 7)
+(10, 16)
+(0, 17)
+(9, 13)
+(3, 18)
+(6, 13)
+(0, 14)
+(19, 25)
+(2, 17)
+(4, 21)
+(3, 16)
+(10, 15)
+(11, 19)
+(2, 22)
+(3, 4)
+(9, 15)
+(11, 21)
+(2, 18)
+(8, 19)
+(8, 23)
+(2, 25)
+(10, 18)
+(2, 22)
+(7, 25)
+(6, 18)
+(22, 25)
+(7, 11)
+(2, 12)
+(0, 18)
+(9, 11)
+(12, 19)
+(2, 10)
+(22, 24)
+(10, 15)
+(24, 25)
+(20, 22)
+(19, 23)
+(8, 10)
+(0, 19)
+(16, 22)
+(15, 21)
+(1, 21)
+(13, 22)
+(12, 16)
+(15, 17)
+(2, 10)
+(0, 18)
+(6, 10)
+(21, 23)
+(9, 15)
+(2, 7)
+(9, 23)
+(0, 6)
+(10, 24)
+(7, 21)
+(5, 23)
+(14, 24)
+(1, 10)
+(6, 7)
+(5, 21)
+(4, 6)
+(9, 10)
+(1, 20)
+(2, 23)
+(1, 25)
+(0, 20)
+(9, 16)
+(13, 20)
+(2, 25)
+(1, 17)
+(16, 24)
+(9, 10)
+(19, 25)
+(3, 16)
+(20, 21)
+(13, 18)
+(14, 24)
+(1, 23)
+(0, 17)
+(0, 10)
+(17, 19)
+(9, 23)
+(1, 15)
+(12, 25)
+(13, 24)
+(0, 3)
+(2, 19)
+(23, 24)
+(4, 10)
+(3, 8)
+(4, 7)
+(2, 9)
+(20, 23)
+(5, 7)
+(2, 18)
+(9, 11)
+(0, 3)
+(2, 12)
+(7, 24)
+(0, 16)
+(3, 9)
+(10, 18)
+(6, 7)
+(9, 20)
+(3, 21)
+(15, 16)
+(16, 23)
+(5, 7)
+(3, 8)
+(0, 9)
+(8, 12)
+(7, 15)
+(5, 9)
+(0, 6)
+(16, 19)
+(9, 18)
+(12, 21)
+(1, 6)
+(16, 23)
+(0, 3)
+(16, 19)
+(3, 14)
+(0, 18)
+(6, 20)
+(21, 24)
+(1, 17)
+(2, 12)
+(12, 13)
+(2, 8)
+(17, 24)
+(5, 20)
+(1, 16)
+(3, 19)
+(8, 22)
+(19, 20)
+(2, 10)
+(12, 25)
+(4, 8)
+(2, 7)
+(13, 25)
+(9, 20)
+(20, 21)
+(5, 8)
+(4, 10)
+(0, 9)
+(5, 14)
+(6, 9)
+(2, 20)
+(0, 16)
+(5, 10)
+(14, 20)
+(0, 11)
+(1, 16)
+(3, 9)
+(3, 6)
+(2, 16)
+(0, 12)
+(11, 22)
+(2, 25)
+(11, 23)
+(0, 17)
+(12, 18)
+(3, 14)
+(1, 22)
+(8, 25)
+(5, 12)
+(0, 24)
+(15, 23)
+(3, 21)
+(2, 22)
+(0, 12)
+(7, 23)
+(1, 25)
+(5, 18)
+(11, 24)
+(3, 6)
+(12, 18)
+(7, 19)
+(5, 20)
+(10, 23)
+(3, 4)
+(3, 21)
+(4, 19)
+(7, 15)
+(0, 10)
+(20, 22)
+(14, 23)
+(21, 24)
+(3, 20)
+(8, 14)
+(6, 23)
+(10, 18)
+(4, 20)
+(6, 9)
+(8, 13)
+(16, 23)
+(11, 14)
+(13, 17)
+(8, 10)
+(16, 19)
+(11, 15)
+(9, 10)
+(13, 14)
+(17, 25)
+(9, 16)
+(6, 17)
+(0, 14)
+(10, 23)
+(11, 25)
+(0, 4)
+(3, 23)
+(20, 25)
+(14, 24)
+(6, 8)
+(10, 22)
+(17, 23)
+(5, 6)
+(14, 16)
+(0, 10)
+(8, 12)
+(10, 13)
+(2, 12)
+(4, 6)
+(1, 17)
+(14, 21)
+(6, 15)
+(2, 3)
+(0, 10)
+(2, 22)
+(0, 8)
+(3, 18)
+(10, 13)
+(2, 15)
+(3, 19)
+(8, 17)
+(0, 18)
+(10, 23)
+(12, 13)
+(17, 20)
+(5, 13)
+(3, 25)
+(0, 9)
+(6, 12)
+(15, 16)
+(14, 23)
+(5, 14)
+(15, 21)
+(1, 23)
+(6, 24)
+(13, 18)
+(10, 23)
+(13, 22)
+(4, 24)
+(3, 14)
+(1, 6)
+(5, 6)
+(13, 25)
+(6, 15)
+(5, 21)
+(13, 19)
+(9, 25)
+(13, 16)
+(9, 22)
+(18, 25)
+(6, 22)
+(10, 25)
+(9, 24)
+(3, 13)
+(6, 11)
+(16, 22)
+(10, 18)
+(3, 17)
+(15, 24)
+(8, 25)
+(9, 23)
+(2, 23)
+(10, 12)
+(13, 17)
+(8, 15)
+(0, 25)
+(19, 24)
+(16, 24)
+(12, 15)
+(13, 25)
+(7, 10)
+(3, 17)
+(0, 2)
+(7, 11)
+(16, 19)
+(5, 10)
+(12, 17)
+(2, 24)
+(14, 25)
+(4, 10)
+(2, 22)
+(5, 8)
+(1, 14)
+(5, 18)
+(12, 14)
+(8, 20)
+(4, 15)
+(10, 21)
+(18, 19)
+(10, 23)
+(8, 16)
+(20, 22)
+(5, 7)
+(7, 9)
+(0, 22)
+(8, 11)
+(19, 20)
+(4, 16)
+(11, 20)
+(4, 17)
+(9, 21)
+(8, 15)
+(6, 22)
+(3, 16)
+(1, 19)
+(0, 19)
+(5, 6)
+(7, 16)
+(1, 24)
+(8, 10)
+(8, 14)
+(3, 10)
+(7, 11)
+(2, 5)
+(12, 19)
+(6, 18)
+(13, 24)
+(10, 13)
+(1, 3)
+(12, 16)
+(6, 9)
+(19, 23)
+(14, 17)
+(4, 24)
+(3, 20)
+(15, 16)
+(1, 7)
+(11, 12)
+(0, 24)
+(10, 18)
+(2, 13)
+(12, 22)
+(0, 17)
+(4, 10)
+(15, 25)
+(10, 23)
+(13, 15)
+(1, 25)
+(4, 17)
+(13, 18)
+(2, 10)
+(21, 25)
+(4, 14)
+(1, 11)
+(0, 4)
+(14, 19)
+(8, 11)
+(9, 18)
+(1, 15)
+(13, 18)
+(5, 11)
+(2, 8)
+(3, 13)
+(5, 16)
+(15, 18)
+(3, 23)
+(7, 18)
+(13, 17)
+(0, 15)
+(5, 9)
+(5, 15)
+(1, 23)
+(18, 20)
+(17, 24)
+(6, 13)
+(12, 15)
+(5, 14)
+(20, 23)
+(1, 21)
+(16, 17)
+(20, 24)
+(16, 23)
+(10, 17)
+(7, 14)
+(11, 16)
+(7, 23)
+(24, 25)
+(10, 21)
+(22, 23)
+(10, 18)
+(4, 16)
+(17, 21)
+(15, 22)
+(18, 19)
+(13, 21)
+(16, 20)
+(15, 23)
+(21, 24)
+(14, 16)
+(3, 13)
+(5, 20)
+(17, 19)
+(7, 22)
+(9, 21)
+(7, 23)
+(2, 13)
+(14, 25)
+(5, 24)
+(3, 8)
+(6, 16)
+(0, 6)
+(3, 7)
+(13, 22)
+(14, 18)
+(3, 12)
+(4, 6)
+(0, 8)
+(6, 9)
+(7, 8)
+(1, 3)
+(4, 25)
+(0, 20)
+(17, 20)
+(8, 18)
+(5, 6)
+(10, 25)
+(8, 15)
+(6, 23)
+(10, 21)
+(4, 5)
+(14, 18)
+(14, 20)
+(11, 21)
+(6, 24)
+(4, 18)
+(3, 4)
+(7, 24)
+(6, 17)
+(17, 19)
+(4, 25)
+(18, 24)
+(7, 10)
+(6, 12)
+(10, 18)
+(5, 19)
+(6, 23)
+(12, 16)
+(0, 17)
+(4, 14)
+(3, 19)
+(9, 12)
+(11, 23)
+(6, 21)
+(1, 17)
+(16, 22)
+(1, 24)
+(5, 12)
+(0, 9)
+(19, 21)
+(6, 8)
+(17, 24)
+(5, 9)
+(2, 12)
+(1, 15)
+(17, 22)
+(20, 24)
+(2, 23)
+(14, 15)
+(1, 13)
+(3, 20)
+(4, 24)
+(2, 23)
+(0, 1)
+(13, 25)
+(10, 17)
+(7, 10)
+(20, 24)
+(13, 22)
+(1, 9)
+(0, 3)
+(0, 20)
+(18, 24)
+(22, 23)
+(5, 7)
+(10, 11)
+(2, 11)
+(8, 24)
+(14, 20)
+(7, 12)
+(0, 25)
+(4, 18)
+(2, 3)
+(23, 25)
+(0, 15)
+(14, 21)
+(16, 18)
+(13, 24)
+(6, 12)
+(0, 21)
+(7, 23)
+(2, 14)
+(10, 24)
+(6, 17)
+(3, 22)
+(9, 12)
+(15, 22)
+(11, 24)
+(6, 21)
+(3, 14)
+(0, 9)
+(10, 16)
+(5, 17)
+(6, 13)
+(22, 25)
+(2, 10)
+(8, 15)
+(4, 25)
+(13, 19)
+(8, 24)
+(10, 13)
+(4, 6)
+(3, 25)
+(0, 24)
+(18, 19)
+(8, 9)
+(8, 19)
+(18, 20)
+(7, 13)
+(5, 10)
+(17, 25)
+(6, 25)
+(20, 24)
+(16, 18)
+(12, 16)
+(2, 20)
+(15, 18)
+(5, 24)
+(4, 25)
+(9, 20)
+(3, 18)
+(8, 16)
+(2, 22)
+(2, 15)
+(7, 16)
+(11, 20)
+(1, 7)
+(0, 11)
+(2, 6)
+(11, 15)
+(2, 22)
+(0, 14)
+(1, 16)
+(1, 10)
+(16, 20)
+(14, 17)
+(6, 15)
+(4, 11)
+(0, 15)
+(5, 20)
+(12, 17)
+(1, 11)
+(10, 20)
+(5, 9)
+(12, 18)
+(17, 24)
+(15, 20)
+(4, 12)
+(14, 18)
+(5, 16)
+(14, 19)
+(5, 13)
+(8, 16)
+(1, 12)
+(18, 23)
+(10, 13)
+(5, 11)
+(9, 19)
+(8, 21)
+(14, 25)
+(12, 17)
+(0, 16)
+(23, 24)
+(15, 18)
+(6, 18)
+(16, 25)
+(15, 19)
+(10, 21)
+(0, 13)
+(5, 17)
+(18, 22)
+(11, 15)
+(0, 24)
+(7, 19)
+(5, 8)
+(2, 10)
+(10, 21)
+(23, 24)
+(0, 24)
+(11, 23)
+(2, 10)
+(0, 16)
+(6, 11)
+(2, 25)
+(10, 21)
+(12, 24)
+(10, 22)
+(1, 16)
+(12, 13)
+(4, 25)
+(0, 9)
+(12, 22)
+(19, 25)
+(10, 20)
+(7, 13)
+(1, 2)
+(16, 19)
+(2, 3)
+(0, 25)
+(4, 22)
+(6, 13)
+(13, 15)
+(0, 5)
+(6, 9)
+(22, 24)
+(1, 2)
+(8, 16)
+(12, 25)
+(7, 16)
+(8, 21)
+(13, 24)
+(3, 5)
+(9, 23)
+(3, 18)
+(0, 8)
+(9, 11)
+(2, 5)
+(10, 13)
+(6, 21)
+(15, 23)
+(9, 13)
+(15, 23)
+(1, 11)
+(8, 20)
+(3, 10)
+(4, 6)
+(14, 18)
+(8, 15)
+(1, 2)
+(0, 6)
+(10, 19)
+(20, 21)
+(20, 24)
+(21, 23)
+(10, 16)
+(6, 22)
+(23, 25)
+(5, 21)
+(8, 20)
+(14, 24)
+(8, 21)
+(6, 14)
+(10, 23)
+(4, 5)
+(4, 20)
+(6, 25)
+(5, 19)
+(10, 12)
+(8, 9)
+(1, 20)
+(9, 18)
+(11, 19)
+(0, 6)
+(8, 13)
+(7, 13)
+(17, 18)
+(20, 21)
+(3, 9)
+(6, 11)
+(2, 18)
+(4, 20)
+(7, 8)
+(13, 22)
+(12, 21)
+(3, 6)
+(6, 11)
+(2, 24)
+(12, 14)
+(20, 23)
+(5, 7)
+(2, 17)
+(5, 12)
+(3, 6)
+(0, 7)
+(8, 24)
+(18, 23)
+(15, 23)
+(7, 20)
+(1, 2)
+(8, 13)
+(22, 24)
+(17, 24)
+(1, 25)
+(16, 23)
+(8, 19)
+(17, 18)
+(20, 25)
+(14, 16)
+(0, 1)
+(9, 23)
+(3, 19)
+(22, 23)
+(19, 20)
+(24, 25)
+(9, 12)
+(6, 23)
+(2, 22)
+(17, 25)
+(8, 23)
+(1, 6)
+(19, 25)
+(2, 16)
+(14, 22)
+(0, 14)
+(6, 16)
+(4, 23)
+(1, 13)
+(21, 22)
+(17, 25)
+(8, 18)
+(6, 15)
+(1, 3)
+(7, 22)
+(14, 24)
+(1, 23)
+(7, 9)
+(10, 22)
+(19, 24)
+(1, 2)
+(3, 22)
+(5, 10)
+(3, 8)
+(5, 12)
+(11, 12)
+(12, 15)
+(10, 11)
+(10, 15)
+(0, 11)
+(10, 14)
+(5, 15)
+(11, 21)
+(0, 9)
+(8, 14)
+(6, 21)
+(5, 18)
+(11, 12)
+(0, 5)
+(4, 12)
+(18, 22)
+(11, 13)
+(3, 8)
+(3, 16)
+(10, 13)
+(12, 15)
+(5, 20)
+(12, 16)
+(8, 15)
+(20, 22)
+(4, 5)
+(1, 5)
+(14, 20)
+(6, 12)
+(3, 8)
+(4, 7)
+(10, 22)
+(5, 22)
+(2, 6)
+(9, 20)
+(0, 12)
+(8, 23)
+(10, 21)
+(1, 10)
+(7, 20)
+(7, 24)
+(1, 14)
+(14, 18)
+(2, 24)
+(1, 20)
+(7, 22)
+(9, 20)
+(1, 8)
+(2, 21)
+(18, 19)
+(7, 23)
+(16, 22)
+(1, 12)
+(13, 23)
+(9, 25)
+(5, 21)
+(12, 20)
+(2, 21)
+(13, 18)
+(20, 23)
+(5, 21)
+(16, 21)
+(5, 19)
+(10, 23)
+(16, 24)
+(4, 21)
+(5, 14)
+(14, 18)
+(22, 24)
+(0, 16)
+(7, 21)
+(14, 16)
+(8, 21)
+(1, 24)
+(0, 15)
+(16, 23)
+(2, 14)
+(21, 22)
+(15, 18)
+(12, 18)
+(3, 22)
+(8, 14)
+(5, 15)
+(2, 4)
+(3, 10)
+(1, 14)
+(4, 9)
+(13, 22)
+(6, 8)
+(18, 21)
+(11, 12)
+(16, 18)
+(12, 17)
+(4, 21)
+(0, 14)
+(9, 23)
+(10, 15)
+(0, 11)
+(14, 18)
+(7, 16)
+(12, 22)
+(5, 23)
+(3, 9)
+(14, 24)
+(10, 11)
+(5, 7)
+(6, 22)
+(0, 19)
+(16, 25)
+(1, 9)
+(5, 9)
+(14, 23)
+(6, 11)
+(0, 15)
+(1, 3)
+(20, 24)
+(1, 7)
+(14, 18)
+(20, 22)
+(11, 12)
+(0, 7)
+(18, 25)
+(9, 12)
+(6, 22)
+(2, 11)
+(13, 18)
+(16, 25)
+(0, 7)
+(1, 9)
+(10, 11)
+(18, 20)
+(13, 25)
+(11, 12)
+(7, 17)
+(0, 2)
+(10, 19)
+(7, 15)
+(8, 13)
+(0, 24)
+(5, 19)
+(22, 25)
+(4, 22)
+(18, 24)
+(8, 9)
+(2, 13)
+(14, 15)
+(7, 14)
+(13, 23)
+(16, 18)
+(14, 15)
+(2, 16)
+(6, 7)
+(22, 23)
+(22, 23)
+(1, 14)
+(6, 8)
+(15, 25)
+(6, 24)
+(17, 25)
+(8, 11)
+(15, 21)
+(4, 15)
+(10, 24)
+(17, 23)
+(7, 11)
+(13, 15)
+(6, 11)
+(17, 23)
+(7, 21)
+(3, 21)
+(4, 7)
+(12, 15)
+(4, 14)
+(6, 21)
+(9, 15)
+(12, 13)
+(3, 5)
+(19, 21)
+(4, 25)
+(3, 24)
+(6, 7)
+(5, 18)
+(9, 22)
+(14, 23)
+(5, 7)
+(14, 15)
+(16, 22)
+(20, 24)
+(2, 18)
+(0, 3)
+(0, 6)
+(21, 22)
+(18, 23)
+(3, 12)
+(9, 16)
+(5, 17)
+(14, 19)
+(11, 23)
+(14, 24)
+(19, 20)
+(12, 22)
+(7, 20)
+(5, 19)
+(17, 24)
+(0, 20)
+(5, 6)
+(4, 19)
+(7, 25)
+(10, 17)
+(1, 10)
+(4, 8)
+(3, 25)
+(7, 18)
+(8, 14)
+(5, 7)
+(22, 25)
+(3, 6)
+(4, 10)
+(3, 20)
+(0, 7)
+(4, 15)
+(16, 25)
+(2, 6)
+(3, 8)
+(0, 9)
+(7, 24)
+(16, 18)
+(17, 20)
+(17, 19)
+(1, 20)
+(22, 24)
+(0, 12)
+(12, 13)
+(2, 17)
+(3, 24)
+(20, 22)
+(0, 11)
+(4, 24)
+(10, 11)
+(14, 20)
+(1, 3)
+(6, 17)
+(3, 25)
+(6, 16)
+(1, 5)
+(0, 20)
+(2, 17)
+(4, 8)
+(19, 25)
+(3, 9)
+(2, 21)
+(8, 18)
+(0, 12)
+(4, 21)
+(2, 16)
+(15, 19)
+(3, 25)
+(10, 15)
+(8, 19)
+(9, 25)
+(11, 19)
+(7, 8)
+(10, 14)
+(3, 8)
+(2, 10)
+(13, 14)
+(5, 11)
+(6, 7)
+(6, 20)
+(3, 9)
+(11, 16)
+(7, 14)
+(5, 24)
+(17, 24)
+(0, 11)
+(20, 22)
+(10, 16)
+(6, 18)
+(11, 12)
+(8, 18)
+(14, 16)
+(17, 22)
+(1, 20)
+(5, 6)
+(8, 9)
+(17, 18)
+(10, 14)
+(16, 21)
+(6, 7)
+(5, 7)
+(4, 6)
+(11, 16)
+(2, 4)
+(10, 11)
+(6, 15)
+(7, 22)
+(15, 25)
+(7, 24)
+(13, 22)
+(2, 5)
+(5, 18)
+(2, 19)
+(1, 7)
+(4, 25)
+(2, 12)
+(4, 21)
+(7, 16)
+(9, 18)
+(1, 24)
+(13, 24)
+(7, 21)
+(14, 16)
+(21, 23)
+(8, 14)
+(6, 23)
+(14, 17)
+(8, 22)
+(23, 25)
+(6, 13)
+(12, 14)
+(11, 17)
+(20, 25)
+(16, 23)
+(13, 21)
+(11, 14)
+(9, 11)
+(16, 20)
+(15, 25)
+(0, 23)
+(11, 18)
+(0, 2)
+(16, 20)
+(9, 14)
+(9, 18)
+(2, 3)
+(0, 19)
+(8, 20)
+(3, 4)
+(0, 5)
+(4, 24)
+(3, 10)
+(4, 23)
+(3, 19)
+(10, 21)
+(1, 21)
+(3, 6)
+(2, 10)
+(6, 21)
+(2, 17)
+(3, 22)
+(1, 23)
+(1, 2)
+(3, 13)
+(0, 22)
+(14, 21)
+(7, 17)
+(21, 22)
+(13, 16)
+(14, 19)
+(2, 4)
+(1, 17)
+(6, 19)
+(21, 24)
+(15, 16)
+(1, 3)
+(4, 25)
+(8, 22)
+(5, 22)
+(19, 20)
+(14, 21)
+(13, 22)
+(0, 14)
+(11, 19)
+(5, 15)
+(13, 23)
+(6, 15)
+(19, 24)
+(17, 22)
+(10, 23)
+(7, 15)
+(13, 21)
+(8, 15)
+(10, 14)
+(7, 25)
+(4, 23)
+(9, 21)
+(13, 16)
+(2, 21)
+(5, 9)
+(4, 18)
+(15, 19)
+(0, 8)
+(15, 25)
+(13, 21)
+(5, 11)
+(0, 19)
+(4, 22)
+(8, 11)
+(7, 15)
+(14, 22)
+(5, 9)
+(13, 24)
+(6, 21)
+(3, 14)
+(4, 21)
+(1, 5)
+(20, 22)
+(9, 24)
+(5, 18)
+(9, 17)
+(0, 14)
+(4, 13)
+(1, 6)
+(1, 23)
+(3, 6)
+(13, 22)
+(5, 8)
+(5, 7)
+(13, 18)
+(1, 9)
+(3, 19)
+(11, 23)
+(13, 25)
+(1, 2)
+(0, 23)
+(11, 14)
+(0, 18)
+(13, 24)
+(8, 14)
+(13, 17)
+(0, 3)
+(4, 18)
+(6, 24)
+(6, 25)
+(12, 17)
+(18, 21)
+(4, 16)
+(13, 19)
+(15, 16)
+(17, 20)
+(0, 13)
+(9, 18)
+(4, 24)
+(21, 25)
+(5, 12)
+(15, 24)
+(18, 25)
+(3, 16)
+(1, 20)
+(7, 13)
+(4, 19)
+(7, 11)
+(4, 6)
+(1, 10)
+(10, 21)
+(7, 13)
+(1, 17)
+(2, 4)
+(10, 22)
+(2, 5)
+(7, 11)
+(12, 21)
+(7, 16)
+(17, 21)
+(10, 13)
+(1, 22)
+(1, 9)
+(13, 16)
+(3, 21)
+(17, 23)
+(1, 22)
+(15, 21)
+(10, 23)
+(12, 17)
+(5, 10)
+(2, 15)
+(11, 22)
+(17, 19)
+(0, 12)
+(1, 25)
+(9, 12)
+(19, 24)
+(2, 20)
+(17, 19)
+(2, 4)
+(8, 24)
+(3, 24)
+(9, 17)
+(19, 21)
+(3, 20)
+(16, 24)
+(9, 18)
+(9, 14)
+(3, 13)
+(1, 20)
+(1, 6)
+(14, 15)
+(16, 20)
+(8, 9)
+(9, 19)
+(16, 22)
+(15, 24)
+(12, 14)
+(7, 20)
+(8, 15)
+(14, 19)
+(3, 24)
+(12, 21)
+(16, 18)
+(9, 10)
+(6, 9)
+(2, 16)
+(12, 18)
+(20, 24)
+(11, 19)
+(0, 8)
+(5, 14)
+(4, 15)
+(14, 25)
+(7, 8)
+(5, 13)
+(0, 19)
+(0, 2)
+(23, 25)
+(14, 15)
+(13, 18)
+(19, 24)
+(20, 24)
+(5, 15)
+(0, 9)
+(12, 25)
+(8, 13)
+(3, 23)
+(2, 17)
+(1, 8)
+(2, 11)
+(14, 15)
+(5, 15)
+(2, 7)
+(14, 16)
+(5, 12)
+(14, 25)
+(15, 17)
+(0, 5)
+(15, 21)
+(12, 20)
+(17, 24)
+(6, 21)
+(12, 25)
+(9, 15)
+(15, 18)
+(21, 22)
+(6, 17)
+(0, 9)
+(20, 22)
+(4, 21)
+(6, 15)
+(9, 24)
+(0, 8)
+(5, 17)
+(7, 21)
+(1, 4)
+(17, 20)
+(11, 15)
+(1, 7)
+(14, 20)
+(12, 21)
+(0, 11)
+(2, 4)
+(7, 13)
+(2, 10)
+(5, 12)
+(1, 3)
+(14, 15)
+(12, 13)
+(10, 19)
+(2, 23)
+(0, 5)
+(1, 16)
+(7, 20)
+(15, 23)
+(12, 18)
+(10, 14)
+(16, 24)
+(6, 13)
+(0, 8)
+(17, 24)
+(1, 8)
+(3, 16)
+(9, 23)
+(12, 21)
+(7, 13)
+(15, 19)
+(1, 19)
+(12, 25)
+(13, 15)
+(18, 21)
+(5, 8)
+(4, 12)
+(0, 18)
+(1, 14)
+(15, 17)
+(5, 23)
+(7, 17)
+(8, 23)
+(0, 6)
+(13, 18)
+(4, 22)
+(14, 25)
+(6, 22)
+(13, 20)
+(1, 23)
+(11, 25)
+(0, 24)
+(5, 14)
+(11, 13)
+(2, 5)
+(18, 23)
+(6, 7)
+(16, 24)
+(16, 19)
+(0, 13)
+(2, 3)
+(9, 24)
+(4, 13)
+(15, 16)
+(17, 24)
+(0, 21)
+(19, 22)
+(0, 6)
+(4, 12)
+(9, 19)
+(13, 25)
+(1, 4)
+(15, 25)
+(9, 23)
+(12, 21)
+(17, 23)
+(3, 15)
+(9, 20)
+(2, 17)
+(9, 13)
+(15, 22)
+(0, 20)
+(14, 15)
+(3, 17)
+(15, 25)
+(3, 5)
+(14, 18)
+(2, 17)
+(10, 18)
+(2, 4)
+(0, 14)
+(3, 24)
+(15, 19)
+(7, 19)
+(22, 24)
+(15, 25)
+(5, 24)
+(7, 16)
+(12, 25)
+(4, 25)
+(16, 20)
+(7, 18)
+(1, 5)
+(4, 21)
+(7, 14)
+(20, 23)
+(8, 18)
+(9, 16)
+(3, 9)
+(10, 18)
+(8, 22)
+(13, 23)
+(7, 11)
+(9, 20)
+(7, 25)
+(10, 11)
+(3, 6)
+(15, 23)
+(2, 13)
+(0, 11)
+(21, 23)
+(3, 13)
+(8, 9)
+(12, 20)
+(15, 22)
+(9, 22)
+(15, 23)
+(16, 21)
+(7, 12)
+(0, 8)
+(1, 20)
+(5, 21)
+(7, 20)
+(10, 15)
+(23, 25)
+(8, 11)
+(5, 6)
+(7, 15)
+(23, 24)
+(14, 25)
+(8, 12)
+(2, 5)
+(0, 6)
+(12, 13)
+(8, 24)
+(14, 17)
+(3, 23)
+(8, 14)
+(4, 13)
+(5, 10)
+(24, 25)
+(6, 21)
+(0, 16)
+(19, 21)
+(10, 20)
+(5, 22)
+(1, 6)
+(16, 18)
+(9, 14)
+(4, 15)
+(2, 21)
+(5, 12)
+(6, 23)
+(0, 20)
+(1, 19)
+(3, 22)
+(2, 14)
+(10, 22)
+(0, 15)
+(8, 21)
+(1, 24)
+(4, 22)
+(6, 15)
+(10, 11)
+(18, 21)
+(23, 24)
+(10, 25)
+(8, 22)
+(1, 11)
+(8, 18)
+(1, 7)
+(3, 11)
+(1, 4)
+(3, 16)
+(7, 15)
+(7, 8)
+(1, 2)
+(16, 19)
+(3, 25)
+(19, 24)
+(6, 8)
+(1, 9)
+(3, 18)
+(10, 16)
+(3, 14)
+(10, 15)
+(12, 16)
+(9, 13)
+(18, 25)
+(11, 24)
+(0, 10)
+(11, 14)
+(3, 12)
+(18, 21)
+(16, 19)
+(19, 23)
+(0, 16)
+(7, 14)
+(8, 10)
+(8, 20)
+(14, 25)
+(1, 23)
+(10, 17)
+(16, 19)
+(1, 5)
+(7, 19)
+(13, 17)
+(0, 16)
+(2, 5)
+(13, 19)
+(1, 20)
+(4, 5)
+(1, 9)
+(2, 23)
+(15, 23)
+(5, 22)
+(5, 11)
+(15, 22)
+(0, 11)
+(5, 23)
+(20, 22)
+(3, 22)
+(8, 23)
+(3, 6)
+(4, 23)
+(4, 7)
+(17, 23)
+(6, 9)
+(7, 10)
+(17, 22)
+(12, 23)
+(4, 6)
+(1, 12)
+(17, 24)
+(5, 10)
+(7, 11)
+(16, 23)
+(5, 8)
+(1, 11)
+(10, 13)
+(3, 17)
+(7, 18)
+(8, 13)
+(6, 11)
+(0, 18)
+(10, 22)
+(3, 24)
+(7, 21)
+(5, 23)
+(4, 22)
+(8, 18)
+(0, 9)
+(3, 15)
+(7, 20)
+(10, 13)
+(5, 19)
+(10, 12)
+(9, 25)
+(2, 20)
+(4, 7)
+(1, 5)
+(13, 22)
+(5, 19)
+(12, 20)
+(1, 21)
+(16, 21)
+(1, 7)
+(5, 23)
+(14, 19)
+(18, 21)
+(11, 14)
+(9, 18)
+(8, 11)
+(14, 21)
+(11, 19)
+(1, 21)
+(0, 18)
+(9, 23)
+(7, 18)
+(1, 3)
+(2, 19)
+(16, 23)
+(3, 5)
+(7, 15)
+(9, 23)
+(1, 8)
+(6, 16)
+(4, 15)
+(13, 23)
+(0, 3)
+(4, 21)
+(3, 22)
+(0, 17)
+(6, 23)
+(15, 16)
+(12, 22)
+(8, 15)
+(0, 13)
+(14, 16)
+(7, 23)
+(2, 23)
+(14, 24)
+(3, 12)
+(7, 25)
+(16, 21)
+(4, 7)
+(1, 25)
+(2, 10)
+(0, 23)
+(2, 20)
+(7, 22)
+(4, 9)
+(13, 25)
+(0, 14)
+(0, 24)
+(7, 18)
+(4, 12)
+(20, 21)
+(9, 23)
+(1, 14)
+(0, 6)
+(24, 25)
+(9, 13)
+(11, 20)
+(16, 21)
+(1, 22)
+(0, 3)
+(10, 11)
+(20, 24)
+(21, 23)
+(7, 16)
+(8, 13)
+(1, 25)
+(10, 18)
+(3, 16)
+(2, 11)
+(5, 21)
+(21, 24)
+(10, 17)
+(3, 4)
+(11, 14)
+(6, 18)
+(12, 18)
+(3, 22)
+(6, 7)
+(0, 14)
+(15, 24)
+(6, 9)
+(12, 22)
+(18, 19)
+(0, 21)
+(3, 7)
+(14, 18)
+(19, 20)
+(3, 15)
+(9, 22)
+(5, 18)
+(14, 23)
+(2, 5)
+(12, 18)
+(9, 14)
+(17, 23)
+(5, 21)
+(16, 17)
+(9, 20)
+(2, 6)
+(19, 20)
+(10, 16)
+(18, 21)
+(9, 25)
+(5, 13)
+(13, 14)
+(7, 25)
+(2, 16)
+(11, 21)
+(19, 22)
+(12, 22)
+(5, 19)
+(0, 13)
+(7, 21)
+(10, 12)
+(0, 18)
+(13, 17)
+(1, 19)
+(22, 24)
+(17, 19)
+(18, 25)
+(11, 12)
+(10, 15)
+(0, 21)
+(1, 8)
+(12, 13)
+(17, 21)
+(14, 25)
+(5, 15)
+(0, 12)
+(7, 21)
+(8, 15)
+(14, 18)
+(6, 25)
+(20, 25)
+(1, 8)
+(0, 24)
+(14, 16)
+(8, 15)
+(1, 17)
+(5, 24)
+(0, 10)
+(10, 22)
+(1, 25)
+(8, 12)
+(4, 17)
+(12, 13)
+(21, 25)
+(2, 8)
+(23, 25)
+(0, 8)
+(2, 6)
+(13, 15)
+(16, 21)
+(15, 17)
+(6, 11)
+(21, 24)
+(3, 13)
+(16, 20)
+(2, 5)
+(3, 7)
+(17, 20)
+(6, 22)
+(4, 13)
+(14, 15)
+(5, 9)
+(2, 25)
+(15, 19)
+(9, 10)
+(5, 24)
+(14, 22)
+(3, 20)
+(0, 6)
+(12, 15)
+(0, 17)
+(4, 14)
+(3, 5)
+(19, 24)
+(2, 22)
+(22, 25)
+(16, 19)
+(7, 12)
+(13, 15)
+(12, 20)
+(8, 22)
+(20, 23)
+(8, 10)
+(1, 22)
+(4, 12)
+(10, 20)
+(3, 22)
+(4, 11)
+(4, 9)
+(8, 20)
+(2, 11)
+(11, 18)
+(5, 9)
+(9, 23)
+(5, 14)
+(3, 11)
+(5, 20)
+(4, 11)
+(23, 24)
+(7, 23)
+(21, 24)
+(12, 23)
+(7, 18)
+(9, 24)
+(0, 21)
+(14, 24)
+(20, 21)
+(0, 2)
+(18, 25)
+(11, 14)
+(0, 6)
+(16, 24)
+(6, 14)
+(10, 11)
+(6, 9)
+(10, 19)
+(7, 11)
+(11, 18)
+(2, 19)
+(7, 12)
+(10, 16)
+(7, 25)
+(5, 19)
+(11, 17)
+(10, 21)
+(16, 18)
+(4, 12)
+(19, 24)
+(4, 22)
+(9, 17)
+(19, 24)
+(22, 25)
+(3, 9)
+(4, 14)
+(8, 17)
+(1, 8)
+(7, 25)
+(17, 23)
+(11, 19)
+(6, 23)
+(15, 19)
+(8, 18)
+(12, 25)
+(0, 11)
+(8, 17)
+(22, 25)
+(9, 18)
+(0, 10)
+(19, 21)
+(14, 22)
+(1, 10)
+(5, 19)
+(4, 18)
+(0, 2)
+(9, 25)
+(6, 18)
+(3, 5)
+(9, 21)
+(7, 19)
+(17, 25)
+(0, 13)
+(13, 24)
+(3, 19)
+(9, 21)
+(2, 5)
+(14, 18)
+(14, 22)
+(8, 13)
+(2, 9)
+(5, 23)
+(0, 24)
+(3, 4)
+(5, 9)
+(20, 24)
+(14, 18)
+(0, 15)
+(13, 17)
+(2, 13)
+(12, 20)
+(4, 14)
+(15, 21)
+(0, 8)
+(16, 18)
+(1, 16)
+(4, 24)
+(21, 25)
+(0, 17)
+(3, 20)
+(11, 12)
+(7, 18)
+(17, 22)
+(10, 18)
+(4, 19)
+(5, 21)
+(7, 15)
+(8, 25)
+(14, 24)
+(11, 23)
+(0, 8)
+(5, 10)
+(12, 22)
+(11, 21)
+(9, 25)
+(14, 18)
+(4, 21)
+(0, 6)
+(7, 11)
+(10, 16)
+(14, 17)
+(3, 12)
+(7, 20)
+(11, 24)
+(2, 14)
+(17, 23)
+(4, 19)
+(0, 23)
+(2, 11)
+(5, 14)
+(9, 24)
+(10, 17)
+(3, 4)
+(3, 12)
+(5, 19)
+(4, 18)
+(8, 9)
+(6, 24)
+(2, 16)
+(1, 19)
+(4, 9)
+(13, 18)
+(12, 22)
+(3, 25)
+(8, 14)
+(5, 19)
+(3, 10)
+(2, 5)
+(1, 19)
+(1, 20)
+(0, 19)
+(19, 22)
+(9, 20)
+(1, 21)
+(9, 12)
+(17, 19)
+(0, 21)
+(9, 22)
+(0, 1)
+(15, 21)
+(13, 17)
+(12, 20)
+(11, 15)
+(20, 24)
+(0, 25)
+(9, 12)
+(22, 25)
+(0, 8)
+(11, 16)
+(7, 8)
+(2, 22)
+(4, 25)
+(11, 15)
+(0, 23)
+(1, 16)
+(4, 6)
+(1, 23)
+(11, 14)
+(0, 5)
+(8, 14)
+(0, 22)
+(4, 19)
+(11, 24)
+(5, 18)
+(8, 16)
+(4, 12)
+(5, 7)
+(11, 21)
+(3, 22)
+(0, 2)
+(14, 23)
+(7, 20)
+(5, 11)
+(3, 15)
+(11, 18)
+(13, 20)
+(3, 25)
+(6, 7)
+(0, 15)
+(7, 23)
+(3, 20)
+(8, 25)
+(13, 22)
+(0, 7)
+(3, 24)
+(3, 16)
+(4, 24)
+(0, 6)
+(0, 8)
+(6, 23)
+(22, 24)
+(4, 17)
+(3, 16)
+(12, 24)
+(16, 25)
+(0, 17)
+(4, 23)
+(18, 22)
+(2, 22)
+(16, 21)
+(4, 12)
+(8, 24)
+(0, 6)
+(5, 25)
+(4, 13)
+(2, 22)
+(10, 25)
+(0, 15)
+(16, 18)
+(3, 21)
+(22, 24)
+(7, 21)
+(14, 15)
+(0, 15)
+(14, 15)
+(0, 3)
+(3, 23)
+(15, 25)
+(15, 19)
+(10, 25)
+(7, 10)
+(2, 19)
+(1, 15)
+(1, 24)
+(2, 16)
+(6, 19)
+(7, 18)
+(15, 21)
+(8, 10)
+(18, 20)
+(9, 24)
+(5, 16)
+(15, 24)
+(2, 16)
+(18, 20)
+(9, 25)
+(18, 22)
+(4, 24)
+(11, 15)
+(2, 8)
+(16, 20)
+(4, 12)
+(6, 18)
+(8, 11)
+(13, 16)
+(7, 22)
+(24, 25)
+(0, 8)
+(2, 18)
+(16, 24)
+(7, 19)
+(3, 11)
+(6, 14)
+(0, 22)
+(3, 17)
+(7, 23)
+(7, 19)
+(4, 17)
+(0, 25)
+(6, 22)
+(12, 23)
+(16, 19)
+(20, 23)
+(0, 1)
+(9, 16)
+(19, 24)
+(10, 20)
+(0, 8)
+(0, 12)
+(9, 11)
+(18, 19)
+(1, 8)
+(10, 25)
+(5, 10)
+(0, 2)
+(13, 19)
+(12, 24)
+(17, 25)
+(9, 25)
+(10, 19)
+(13, 14)
+(0, 11)
+(15, 17)
+(4, 5)
+(4, 23)
+(15, 22)
+(14, 19)
+(8, 13)
+(5, 21)
+(7, 23)
+(18, 22)
+(3, 19)
+(13, 17)
+(8, 20)
+(4, 6)
+(0, 15)
+(8, 11)
+(6, 16)
+(12, 20)
+(2, 3)
+(19, 23)
+(11, 13)
+(2, 24)
+(5, 20)
+(14, 23)
+(4, 11)
+(2, 19)
+(3, 14)
+(3, 6)
+(4, 5)
+(17, 19)
+(0, 6)
+(3, 8)
+(14, 19)
+(7, 17)
+(2, 17)
+(14, 23)
+(0, 1)
+(3, 6)
+(19, 25)
+(1, 10)
+(0, 21)
+(6, 20)
+(3, 24)
+(13, 23)
+(15, 19)
+(0, 16)
+(1, 9)
+(6, 10)
+(18, 23)
+(2, 20)
+(1, 12)
+(4, 18)
+(2, 3)
+(8, 16)
+(0, 22)
+(10, 13)
+(1, 23)
+(4, 11)
+(0, 8)
+(18, 22)
+(1, 4)
+(16, 18)
+(9, 23)
+(0, 24)
+(11, 13)
+(2, 4)
+(8, 9)
+(14, 23)
+(11, 17)
+(1, 15)
+(11, 20)
+(1, 25)
+(2, 19)
+(4, 9)
+(14, 18)
+(12, 17)
+(14, 18)
+(11, 21)
+(5, 21)
+(13, 14)
+(5, 17)
+(6, 21)
+(13, 23)
+(11, 13)
+(6, 12)
+(10, 17)
+(5, 25)
+(6, 23)
+(15, 17)
+(13, 14)
+(10, 19)
+(0, 12)
+(0, 23)
+(9, 14)
+(6, 7)
+(3, 15)
+(7, 16)
+(1, 15)
+(6, 8)
+(17, 23)
+(1, 25)
+(0, 17)
+(3, 7)
+(4, 6)
+(13, 25)
+(0, 5)
+(7, 23)
+(4, 21)
+(1, 14)
+(2, 3)
+(16, 25)
+(11, 14)
+(5, 6)
+(1, 8)
+(13, 17)
+(8, 20)
+(1, 13)
+(0, 14)
+(12, 25)
+(4, 17)
+(4, 5)
+(11, 13)
+(8, 10)
+(2, 17)
+(3, 14)
+(1, 15)
+(17, 23)
+(0, 4)
+(4, 16)
+(15, 17)
+(0, 24)
+(4, 13)
+(16, 19)
+(23, 24)
+(14, 15)
+(11, 19)
+(13, 22)
+(0, 24)
+(4, 21)
+(3, 16)
+(1, 4)
+(0, 2)
+(20, 22)
+(16, 24)
+(5, 13)
+(10, 21)
+(3, 9)
+(4, 23)
+(6, 20)
+(8, 22)
+(9, 25)
+(23, 24)
+(8, 14)
+(2, 14)
+(9, 23)
+(6, 8)
+(14, 22)
+(5, 6)
+(2, 15)
+(7, 8)
+(11, 22)
+(2, 4)
+(1, 7)
+(14, 25)
+(14, 22)
+(0, 11)
+(2, 3)
+(6, 25)
+(0, 9)
+(23, 25)
+(3, 10)
+(14, 20)
+(1, 6)
+(1, 12)
+(9, 22)
+(0, 19)
+(10, 25)
+(9, 16)
+(12, 20)
+(17, 19)
+(0, 7)
+(6, 22)
+(5, 20)
+(12, 18)
+(1, 9)
+(16, 19)
+(14, 22)
+(6, 8)
+(4, 6)
+(18, 19)
+(8, 13)
+(1, 11)
+(17, 22)
+(9, 24)
+(1, 17)
+(2, 13)
+(6, 20)
+(7, 9)
+(4, 21)
+(15, 20)
+(10, 21)
+(4, 22)
+(0, 13)
+(0, 24)
+(5, 10)
+(13, 23)
+(1, 4)
+(2, 22)
+(14, 21)
+(16, 21)
+(14, 18)
+(0, 15)
+(13, 19)
+(8, 23)
+(7, 23)
+(8, 25)
+(3, 16)
+(6, 18)
+(8, 14)
+(3, 11)
+(6, 12)
+(12, 21)
+(6, 16)
+(13, 14)
+(18, 21)
+(1, 14)
+(7, 13)
+(10, 14)
+(4, 13)
+(0, 13)
+(4, 6)
+(3, 10)
+(9, 13)
+(3, 23)
+(6, 20)
+(17, 20)
+(3, 7)
+(2, 23)
+(5, 6)
+(12, 23)
+(7, 19)
+(14, 17)
+(3, 24)
+(1, 2)
+(6, 9)
+(11, 23)
+(11, 22)
+(17, 23)
+(22, 25)
+(11, 16)
+(4, 22)
+(4, 10)
+(4, 18)
+(10, 22)
+(5, 18)
+(4, 24)
+(1, 10)
+(12, 24)
+(1, 13)
+(0, 10)
+(12, 25)
+(7, 12)
+(21, 25)
+(14, 25)
+(10, 12)
+(20, 21)
+(7, 11)
+(12, 18)
+(1, 20)
+(16, 21)
+(11, 17)
+(8, 10)
+(6, 8)
+(12, 15)
+(3, 20)
+(1, 19)
+(4, 8)
+(12, 18)
+(1, 23)
+(13, 23)
+(6, 8)
+(4, 25)
+(20, 25)
+(4, 15)
+(6, 9)
+(1, 13)
+(3, 13)
+(1, 23)
+(6, 10)
+(11, 25)
+(0, 20)
+(3, 5)
+(18, 25)
+(22, 23)
+(7, 13)
+(3, 20)
+(4, 22)
+(7, 12)
+(13, 21)
+(9, 25)
+(5, 17)
+(11, 25)
+(20, 24)
+(16, 17)
+(6, 21)
+(9, 10)
+(19, 25)
+(13, 21)
+(16, 17)
+(5, 13)
+(4, 16)
+(1, 17)
+(7, 19)
+(6, 21)
+(11, 21)
+(5, 24)
+(1, 14)
+(2, 7)
+(7, 14)
+(11, 25)
+(16, 21)
+(1, 20)
+(17, 24)
+(5, 12)
+(15, 25)
+(5, 17)
+(1, 22)
+(3, 24)
+(12, 23)
+(1, 4)
+(15, 16)
+(18, 23)
+(13, 17)
+(0, 17)
+(4, 21)
+(1, 10)
+(19, 23)
+(6, 13)
+(23, 25)
+(4, 22)
+(8, 19)
+(3, 6)
+(17, 24)
+(1, 11)
+(13, 19)
+(20, 24)
+(6, 18)
+(3, 6)
+(17, 24)
+(5, 20)
+(13, 14)
+(1, 3)
+(21, 24)
+(16, 20)
+(6, 9)
+(8, 16)
+(11, 21)
+(7, 20)
+(10, 21)
+(7, 12)
+(9, 11)
+(5, 16)
+(12, 20)
+(17, 21)
+(9, 24)
+(8, 16)
+(10, 15)
+(12, 21)
+(1, 10)
+(6, 15)
+(16, 21)
+(1, 7)
+(5, 15)
+(6, 18)
+(5, 7)
+(14, 18)
+(2, 6)
+(5, 24)
+(4, 6)
+(0, 2)
+(6, 13)
+(0, 23)
+(13, 22)
+(0, 2)
+(3, 23)
+(2, 17)
+(0, 4)
+(11, 13)
+(14, 23)
+(2, 15)
+(9, 11)
+(4, 19)
+(1, 13)
+(6, 11)
+(4, 25)
+(9, 18)
+(2, 12)
+(15, 18)
+(22, 25)
+(3, 11)
+(4, 10)
+(0, 4)
+(23, 25)
+(10, 21)
+(14, 22)
+(6, 14)
+(0, 15)
+(17, 25)
+(9, 14)
+(17, 20)
+(8, 15)
+(6, 11)
+(0, 18)
+(2, 9)
+(6, 21)
+(10, 17)
+(18, 24)
+(14, 19)
+(3, 18)
+(10, 23)
+(11, 24)
+(2, 4)
+(13, 14)
+(5, 19)
+(5, 18)
+(19, 25)
+(2, 23)
+(4, 9)
+(10, 17)
+(7, 23)
+(0, 9)
+(1, 19)
+(4, 12)
+(2, 17)
+(0, 23)
+(1, 16)
+(14, 19)
+(2, 12)
+(5, 16)
+(7, 23)
+(2, 9)
+(7, 22)
+(5, 17)
+(16, 18)
+(17, 21)
+(7, 13)
+(16, 24)
+(6, 21)
+(4, 7)
+(13, 15)
+(17, 19)
+(19, 20)
+(1, 21)
+(20, 25)
+(12, 21)
+(14, 19)
+(1, 23)
+(10, 25)
+(0, 12)
+(18, 20)
+(16, 21)
+(0, 6)
+(5, 10)
+(16, 22)
+(2, 20)
+(8, 12)
+(1, 16)
+(8, 13)
+(7, 10)
+(17, 22)
+(0, 4)
+(8, 23)
+(2, 17)
+(5, 13)
+(0, 19)
+(7, 20)
+(8, 20)
+(15, 17)
+(2, 23)
+(9, 19)
+(0, 1)
+(1, 24)
+(11, 15)
+(18, 19)
+(0, 16)
+(10, 20)
+(4, 24)
+(0, 14)
+(15, 22)
+(0, 18)
+(2, 15)
+(13, 14)
+(14, 16)
+(5, 15)
+(6, 13)
+(3, 16)
+(6, 8)
+(0, 14)
+(5, 17)
+(17, 25)
+(4, 8)
+(3, 6)
+(14, 24)
+(16, 19)
+(14, 18)
+(7, 16)
+(13, 19)
+(3, 20)
+(6, 10)
+(18, 24)
+(14, 22)
+(2, 13)
+(24, 25)
+(13, 23)
+(2, 17)
+(6, 25)
+(17, 21)
+(16, 24)
+(22, 25)
+(11, 24)
+(13, 16)
+(8, 17)
+(10, 13)
+(7, 25)
+(8, 15)
+(9, 16)
+(5, 22)
+(18, 25)
+(4, 9)
+(16, 24)
+(2, 7)
+(4, 5)
+(11, 24)
+(18, 19)
+(14, 16)
+(18, 21)
+(0, 14)
+(5, 22)
+(9, 11)
+(16, 25)
+(21, 23)
+(6, 16)
+(0, 24)
+(13, 25)
+(11, 19)
+(17, 22)
+(14, 20)
+(0, 7)
+(12, 21)
+(13, 19)
+(11, 18)
+(1, 16)
+(2, 21)
+(1, 15)
+(11, 23)
+(12, 25)
+(6, 11)
+(16, 21)
+(2, 18)
+(16, 25)
+(4, 18)
+(21, 23)
+(5, 16)
+(18, 24)
+(13, 25)
+(17, 21)
+(8, 25)
+(2, 16)
+(13, 20)
+(1, 18)
+(17, 22)
+(13, 24)
+(3, 8)
+(15, 16)
+(2, 19)
+(20, 23)
+(11, 23)
+(6, 8)
+(2, 12)
+(7, 16)
+(13, 18)
+(2, 9)
+(4, 18)
+(12, 25)
+(12, 23)
+(22, 25)
+(14, 18)
+(9, 19)
+(2, 14)
+(18, 21)
+(0, 22)
+(5, 25)
+(4, 23)
+(17, 22)
+(14, 16)
+(12, 23)
+(5, 18)
+(2, 11)
+(1, 17)
+(9, 18)
+(20, 23)
+(0, 11)
+(2, 19)
+(9, 25)
+(17, 23)
+(0, 22)
+(0, 7)
+(14, 22)
+(1, 23)
+(7, 16)
+(17, 23)
+(6, 14)
+(7, 24)
+(10, 17)
+(1, 23)
+(5, 16)
+(5, 9)
+(11, 23)
+(10, 15)
+(17, 18)
+(4, 17)
+(10, 23)
+(15, 20)
+(11, 13)
+(0, 4)
+(11, 15)
+(8, 13)
+(3, 23)
+(12, 17)
+(19, 23)
+(11, 24)
+(2, 3)
+(8, 25)
+(12, 15)
+(9, 13)
+(13, 22)
+(6, 9)
+(7, 19)
+(1, 2)
+(18, 25)
+(8, 16)
+(1, 23)
+(19, 20)
+(2, 15)
+(8, 10)
+(5, 19)
+(0, 10)
+(2, 24)
+(8, 22)
+(19, 20)
+(3, 10)
+(7, 22)
+(0, 17)
+(3, 13)
+(17, 19)
+(7, 8)
+(0, 23)
+(4, 13)
+(0, 19)
+(7, 12)
+(23, 25)
+(7, 9)
+(12, 16)
+(16, 25)
+(7, 15)
+(6, 9)
+(12, 18)
+(7, 13)
+(4, 6)
+(15, 17)
+(3, 25)
+(14, 15)
+(13, 23)
+(7, 11)
+(4, 9)
+(15, 19)
+(0, 23)
+(11, 21)
+(10, 14)
+(4, 17)
+(18, 23)
+(1, 17)
+(6, 15)
+(5, 15)
+(4, 6)
+(10, 23)
+(1, 20)
+(4, 14)
+(9, 15)
+(23, 24)
+(2, 6)
+(10, 22)
+(2, 18)
+(5, 23)
+(4, 12)
+(7, 14)
+(5, 6)
+(12, 13)
+(14, 19)
+(16, 18)
+(2, 15)
+(0, 7)
+(5, 7)
+(4, 13)
+(6, 23)
+(2, 10)
+(15, 17)
+(8, 19)
+(11, 18)
+(4, 9)
+(2, 25)
+(16, 18)
+(14, 19)
+(10, 15)
+(11, 24)
+(4, 10)
+(13, 19)
+(23, 25)
+(15, 18)
+(8, 18)
+(10, 24)
+(15, 17)
+(4, 21)
+(13, 22)
+(19, 21)
+(14, 15)
+(2, 4)
+(18, 23)
+(10, 11)
+(0, 18)
+(3, 19)
+(2, 25)
+(14, 17)
+(6, 25)
+(2, 20)
+(1, 14)
+(3, 18)
+(5, 19)
+(0, 11)
+(20, 22)
+(15, 19)
+(4, 18)
+(1, 24)
+(2, 17)
+(7, 11)
+(0, 25)
+(6, 11)
+(21, 24)
+(13, 22)
+(7, 25)
+(12, 15)
+(8, 17)
+(10, 17)
+(23, 24)
+(11, 13)
+(15, 20)
+(2, 22)
+(17, 19)
+(3, 10)
+(24, 25)
+(2, 7)
+(16, 20)
+(21, 22)
+(1, 20)
+(3, 8)
+(0, 25)
+(10, 23)
+(7, 14)
+(2, 4)
+(3, 5)
+(11, 20)
+(2, 13)
+(1, 22)
+(1, 6)
+(22, 24)
+(2, 14)
+(4, 22)
+(1, 7)
+(7, 15)
+(1, 6)
+(22, 25)
+(19, 25)
+(6, 17)
+(7, 17)
+(4, 25)
+(6, 11)
+(17, 21)
+(6, 8)
+(3, 11)
+(0, 6)
+(3, 16)
+(15, 17)
+(3, 23)
+(6, 8)
+(0, 21)
+(14, 15)
+(12, 16)
+(12, 23)
+(6, 11)
+(7, 15)
+(14, 16)
+(2, 8)
+(5, 23)
+(8, 9)
+(10, 11)
+(14, 20)
+(17, 20)
+(5, 14)
+(9, 13)
+(5, 17)
+(0, 20)
+(1, 13)
+(7, 9)
+(20, 25)
+(1, 15)
+(9, 12)
+(13, 24)
+(7, 23)
+(10, 17)
+(5, 11)
+(14, 24)
+(1, 8)
+(0, 12)
+(3, 9)
+(11, 22)
+(3, 15)
+(1, 13)
+(17, 22)
+(5, 14)
+(2, 13)
+(1, 15)
+(11, 22)
+(11, 21)
+(8, 13)
+(9, 22)
+(4, 9)
+(10, 13)
+(20, 21)
+(8, 23)
+(2, 4)
+(16, 20)
+(19, 21)
+(10, 24)
+(13, 19)
+(1, 16)
+(3, 10)
+(5, 20)
+(12, 19)
+(13, 14)
+(5, 7)
+(3, 8)
+(20, 23)
+(16, 18)
+(20, 25)
+(16, 17)
+(6, 7)
+(13, 23)
+(5, 8)
+(7, 15)
+(6, 11)
+(3, 11)
+(5, 15)
+(7, 18)
+(14, 15)
+(5, 24)
+(1, 11)
+(1, 7)
+(5, 21)
+(15, 18)
+(8, 21)
+(9, 18)
+(9, 24)
+(13, 21)
+(8, 25)
+(8, 15)
+(14, 24)
+(10, 21)
+(3, 13)
+(1, 3)
+(4, 15)
+(5, 21)
+(11, 13)
+(8, 20)
+(11, 14)
+(1, 9)
+(15, 19)
+(4, 23)
+(20, 22)
+(13, 17)
+(2, 3)
+(12, 19)
+(11, 20)
+(17, 25)
+(1, 7)
+(13, 21)
+(6, 23)
+(4, 20)
+(13, 15)
+(18, 19)
+(1, 25)
+(14, 17)
+(7, 9)
+(8, 23)
+(3, 20)
+(16, 19)
+(6, 14)
+(8, 9)
+(18, 23)
+(0, 13)
+(7, 21)
+(4, 19)
+(5, 16)
+(3, 6)
+(8, 25)
+(15, 20)
+(11, 21)
+(2, 16)
+(5, 23)
+(1, 4)
+(6, 10)
+(7, 19)
+(21, 22)
+(15, 25)
+(0, 19)
+(11, 25)
+(15, 18)
+(1, 20)
+(20, 24)
+(9, 25)
+(1, 7)
+(4, 18)
+(6, 15)
+(0, 10)
+(11, 16)
+(3, 4)
+(12, 24)
+(6, 11)
+(5, 18)
+(2, 10)
+(8, 20)
+(2, 13)
+(5, 8)
+(10, 21)
+(1, 12)
+(17, 24)
+(0, 20)
+(0, 16)
+(10, 23)
+(9, 24)
+(7, 8)
+(20, 22)
+(6, 12)
+(3, 5)
+(16, 24)
+(7, 20)
+(6, 8)
+(3, 23)
+(7, 25)
+(8, 15)
+(3, 14)
+(19, 25)
+(3, 15)
+(8, 15)
+(21, 25)
+(6, 21)
+(3, 15)
+(15, 20)
+(12, 20)
+(15, 18)
+(17, 20)
+(15, 16)
+(0, 12)
+(18, 22)
+(18, 19)
+(13, 15)
+(17, 24)
+(16, 22)
+(16, 25)
+(5, 22)
+(12, 19)
+(1, 16)
+(21, 25)
+(2, 5)
+(10, 22)
+(18, 21)
+(5, 9)
+(2, 20)
+(7, 22)
+(5, 22)
+(9, 12)
+(2, 4)
+(11, 20)
+(12, 14)
+(2, 16)
+(10, 20)
+(22, 25)
+(4, 13)
+(9, 14)
+(4, 7)
+(2, 24)
+(1, 25)
+(3, 22)
+(6, 10)
+(2, 21)
+(19, 22)
+(3, 13)
+(6, 15)
+(0, 24)
+(10, 18)
+(11, 15)
+(7, 18)
+(19, 20)
+(4, 21)
+(2, 8)
+(2, 4)
+(15, 18)
+(19, 23)
+(12, 21)
+(1, 7)
+(0, 1)
+(2, 25)
+(5, 7)
+(12, 20)
+(2, 13)
+(7, 11)
+(22, 25)
+(12, 25)
+(15, 22)
+(1, 7)
+(13, 14)
+(2, 17)
+(9, 17)
+(5, 15)
+(22, 24)
+(8, 9)
+(13, 24)
+(2, 22)
+(5, 24)
+(2, 11)
+(3, 9)
+(8, 21)
+(9, 20)
+(3, 18)
+(2, 7)
+(7, 24)
+(3, 12)
+(8, 20)
+(18, 25)
+(3, 25)
+(8, 17)
+(1, 12)
+(10, 20)
+(17, 20)
+(10, 12)
+(6, 25)
+(3, 17)
+(8, 20)
+(10, 19)
+(12, 21)
+(0, 25)
+(6, 7)
+(0, 1)
+(4, 19)
+(22, 25)
+(21, 24)
+(6, 14)
+(6, 20)
+(15, 19)
+(0, 23)
+(9, 24)
+(5, 14)
+(21, 22)
+(2, 15)
+(0, 10)
+(9, 20)
+(3, 19)
+(13, 23)
+(18, 22)
+(23, 25)
+(10, 19)
+(12, 15)
+(3, 24)
+(1, 24)
+(10, 17)
+(12, 16)
+(2, 15)
+(13, 15)
+(2, 4)
+(1, 3)
+(20, 24)
+(17, 25)
+(15, 16)
+(10, 13)
+(1, 6)
+(12, 24)
+(3, 23)
+(2, 11)
+(1, 19)
+(11, 20)
+(3, 13)
+(4, 15)
+(16, 17)
+(0, 2)
+(6, 9)
+(1, 15)
+(11, 14)
+(6, 8)
+(4, 7)
+(13, 25)
+(16, 20)
+(10, 15)
+(18, 25)
+(2, 4)
+(6, 11)
+(1, 24)
+(1, 3)
+(10, 23)
+(19, 25)
+(2, 10)
+(1, 5)
+(21, 25)
+(3, 12)
+(3, 4)
+(10, 22)
+(19, 25)
+(2, 8)
+(1, 14)
+(13, 21)
+(19, 20)
+(7, 10)
+(5, 21)
+(11, 22)
+(3, 8)
+(19, 24)
+(15, 20)
+(0, 10)
+(9, 22)
+(3, 17)
+(7, 20)
+(4, 22)
+(12, 17)
+(10, 13)
+(24, 25)
+(2, 9)
+(1, 15)
+(17, 22)
+(10, 18)
+(11, 25)
+(3, 12)
+(0, 2)
+(7, 13)
+(2, 23)
+(12, 24)
+(0, 14)
+(10, 16)
+(9, 25)
+(8, 17)
+(2, 18)
+(10, 15)
+(6, 25)
+(11, 17)
+(14, 21)
+(6, 18)
+(2, 8)
+(23, 25)
+(11, 19)
+(16, 21)
+(15, 20)
+(9, 15)
+(0, 21)
+(10, 25)
+(14, 23)
+(1, 16)
+(16, 17)
+(5, 16)
+(0, 17)
+(13, 17)
+(5, 7)
+(0, 19)
+(16, 23)
+(7, 22)
+(2, 17)
+(10, 16)
+(12, 19)
+(3, 5)
+(15, 23)
+(1, 22)
+(7, 24)
+(5, 8)
+(3, 6)
+(14, 22)
+(6, 20)
+(2, 24)
+(2, 17)
+(11, 22)
+(4, 24)
+(6, 8)
+(3, 20)
+(8, 9)
+(19, 20)
+(1, 22)
+(0, 3)
+(10, 22)
+(9, 25)
+(4, 19)
+(18, 25)
+(10, 13)
+(8, 19)
+(4, 24)
+(0, 24)
+(5, 19)
+(2, 4)
+(23, 25)
+(0, 20)
+(4, 12)
+(17, 19)
+(5, 8)
+(1, 20)
+(4, 11)
+(5, 6)
+(13, 20)
+(5, 19)
+(4, 17)
+(1, 16)
+(20, 22)
+(9, 17)
+(13, 24)
+(15, 16)
+(20, 25)
+(13, 18)
+(2, 22)
+(16, 23)
+(5, 13)
+(9, 20)
+(18, 24)
+(1, 2)
+(16, 25)
+(18, 22)
+(2, 6)
+(1, 12)
+(7, 12)
+(3, 6)
+(10, 22)
+(1, 8)
+(22, 23)
+(0, 7)
+(1, 12)
+(18, 23)
+(1, 24)
+(0, 7)
+(18, 19)
+(7, 24)
+(13, 23)
+(0, 8)
+(1, 6)
+(8, 12)
+(6, 16)
+(7, 10)
+(0, 15)
+(0, 24)
+(2, 12)
+(7, 15)
+(3, 6)
+(2, 8)
+(5, 24)
+(4, 15)
+(0, 16)
+(8, 13)
+(5, 7)
+(4, 21)
+(0, 25)
+(14, 16)
+(9, 24)
+(8, 10)
+(9, 25)
+(0, 11)
+(3, 14)
+(21, 24)
+(4, 17)
+(7, 18)
+(3, 22)
+(0, 12)
+(7, 8)
+(4, 19)
+(16, 24)
+(18, 23)
+(15, 17)
+(1, 24)
+(4, 7)
+(20, 23)
+(19, 22)
+(16, 17)
+(1, 15)
+(18, 20)
+(21, 23)
+(10, 15)
+(16, 18)
+(14, 20)
+(2, 23)
+(7, 16)
+(15, 24)
+(1, 2)
+(20, 25)
+(14, 16)
+(1, 6)
+(7, 20)
+(9, 24)
+(14, 18)
+(5, 9)
+(2, 6)
+(1, 4)
+(4, 21)
+(14, 25)
+(1, 23)
+(5, 11)
+(9, 10)
+(11, 16)
+(9, 17)
+(23, 24)
+(10, 17)
+(7, 11)
+(0, 23)
+(15, 24)
+(9, 12)
+(6, 24)
+(15, 21)
+(17, 19)
+(4, 10)
+(4, 22)
+(20, 21)
+(2, 15)
+(7, 19)
+(2, 3)
+(15, 23)
+(3, 6)
+(0, 15)
+(8, 23)
+(2, 10)
+(3, 4)
+(6, 13)
+(8, 15)
+(0, 7)
+(10, 21)
+(2, 10)
+(7, 24)
+(12, 15)
+(1, 15)
+(8, 24)
+(12, 19)
+(1, 5)
+(3, 19)
+(7, 24)
+(3, 18)
+(8, 24)
+(19, 21)
+(5, 23)
+(23, 25)
+(5, 9)
+(15, 24)
+(8, 17)
+(13, 17)
+(9, 25)
+(8, 11)
+(0, 5)
+(19, 23)
+(15, 20)
+(5, 9)
+(6, 17)
+(8, 13)
+(1, 20)
+(2, 6)
+(10, 20)
+(4, 8)
+(14, 17)
+(11, 20)
+(8, 13)
+(6, 24)
+(4, 8)
+(13, 25)
+(2, 11)
+(8, 14)
+(4, 8)
+(4, 22)
+(8, 25)
+(4, 15)
+(3, 8)
+(15, 18)
+(4, 7)
+(4, 16)
+(12, 18)
+(7, 19)
+(15, 22)
+(18, 22)
+(6, 7)
+(15, 17)
+(4, 21)
+(3, 12)
+(5, 21)
+(20, 22)
+(3, 7)
+(13, 17)
+(16, 17)
+(1, 22)
+(7, 19)
+(15, 20)
+(10, 17)
+(11, 15)
+(2, 22)
+(1, 2)
+(4, 22)
+(16, 17)
+(11, 14)
+(0, 15)
+(3, 16)
+(5, 11)
+(21, 22)
+(6, 14)
+(0, 6)
+(16, 17)
+(3, 16)
+(17, 20)
+(9, 20)
+(4, 17)
+(9, 21)
+(17, 24)
+(4, 16)
+(15, 24)
+(17, 24)
+(15, 23)
+(8, 17)
+(13, 23)
+(11, 17)
+(8, 16)
+(4, 17)
+(11, 13)
+(8, 19)
+(8, 10)
+(11, 15)
+(2, 17)
+(19, 22)
+(1, 22)
+(19, 24)
+(13, 17)
+(2, 12)
+(5, 13)
+(6, 17)
+(3, 12)
+(2, 25)
+(2, 10)
+(11, 12)
+(1, 6)
+(5, 24)
+(3, 16)
+(11, 14)
+(12, 22)
+(8, 24)
+(15, 16)
+(9, 10)
+(3, 21)
+(6, 19)
+(16, 23)
+(15, 20)
+(6, 17)
+(11, 19)
+(17, 22)
+(9, 19)
+(3, 11)
+(6, 14)
+(0, 17)
+(19, 25)
+(6, 10)
+(11, 21)
+(7, 14)
+(4, 10)
+(6, 9)
+(13, 21)
+(14, 16)
+(3, 17)
+(6, 24)
+(7, 9)
+(2, 16)
+(20, 21)
+(12, 14)
+(11, 14)
+(8, 20)
+(9, 25)
+(16, 22)
+(2, 18)
+(16, 20)
+(6, 11)
+(9, 21)
+(16, 24)
+(6, 12)
+(6, 14)
+(13, 24)
+(16, 25)
+(5, 12)
+(14, 17)
+(1, 13)
+(10, 25)
+(12, 23)
+(6, 16)
+(0, 10)
+(3, 14)
+(4, 16)
+(22, 23)
+(3, 7)
+(2, 23)
+(14, 20)
+(16, 18)
+(3, 24)
+(6, 20)
+(7, 12)
+(17, 24)
+(3, 8)
+(6, 10)
+(17, 19)
+(11, 24)
+(0, 6)
+(10, 13)
+(3, 20)
+(9, 19)
+(8, 20)
+(0, 24)
+(11, 16)
+(17, 22)
+(11, 15)
+(12, 20)
+(1, 22)
+(3, 19)
+(17, 22)
+(1, 2)
+(3, 13)
+(1, 2)
+(5, 22)
+(3, 9)
+(16, 17)
+(4, 5)
+(22, 24)
+(1, 15)
+(6, 22)
+(0, 15)
+(14, 24)
+(3, 5)
+(1, 13)
+(8, 22)
+(18, 24)
+(3, 11)
+(1, 16)
+(17, 22)
+(18, 19)
+(7, 24)
+(16, 23)
+(0, 24)
+(8, 16)
+(13, 22)
+(7, 19)
+(9, 19)
+(17, 22)
+(13, 14)
+(16, 23)
+(24, 25)
+(9, 18)
+(12, 17)
+(7, 14)
+(21, 22)
+(16, 19)
+(2, 13)
+(13, 24)
+(1, 9)
+(11, 14)
+(7, 20)
+(4, 24)
+(11, 21)
+(7, 23)
+(1, 18)
+(0, 20)
+(14, 21)
+(3, 20)
+(11, 21)
+(0, 3)
+(12, 14)
+(3, 22)
+(12, 20)
+(13, 21)
+(10, 11)
+(4, 14)
+(4, 20)
+(15, 21)
+(3, 6)
+(8, 13)
+(0, 21)
+(6, 22)
+(1, 4)
+(14, 15)
+(3, 19)
+(8, 9)
+(0, 25)
+(1, 24)
+(9, 23)
+(8, 15)
+(2, 19)
+(15, 20)
+(0, 14)
+(5, 23)
+(3, 8)
+(6, 19)
+(9, 10)
+(8, 9)
+(6, 11)
+(20, 24)
+(10, 21)
+(2, 23)
+(10, 12)
+(6, 13)
+(1, 21)
+(2, 14)
+(17, 23)
+(12, 13)
+(18, 23)
+(17, 25)
+(0, 10)
+(14, 24)
+(6, 24)
+(14, 16)
+(5, 18)
+(4, 10)
+(9, 24)
+(5, 12)
+(6, 19)
+(4, 18)
+(10, 11)
+(12, 17)
+(3, 19)
+(1, 18)
+(4, 20)
+(10, 23)
+(6, 7)
+(5, 17)
+(10, 16)
+(6, 22)
+(1, 11)
+(2, 12)
+(12, 23)
+(4, 17)
+(2, 13)
+(5, 8)
+(5, 18)
+(4, 7)
+(11, 12)
+(10, 13)
+(0, 23)
+(13, 15)
+(1, 10)
+(16, 23)
+(5, 9)
+(3, 7)
+(1, 25)
+(10, 20)
+(15, 21)
+(5, 6)
+(2, 23)
+(16, 18)
+(9, 24)
+(19, 21)
+(2, 24)
+(9, 20)
+(12, 16)
+(6, 25)
+(0, 5)
+(1, 14)
+(18, 19)
+(6, 8)
+(7, 21)
+(5, 14)
+(13, 25)
+(16, 23)
+(0, 2)
+(2, 8)
+(1, 6)
+(3, 14)
+(5, 21)
+(24, 25)
+(12, 18)
+(13, 17)
+(12, 22)
+(2, 16)
+(14, 21)
+(6, 9)
+(8, 25)
+(10, 17)
+(8, 16)
+(4, 6)
+(10, 21)
+(2, 5)
+(14, 19)
+(17, 18)
+(0, 8)
+(14, 22)
+(16, 20)
+(15, 19)
+(3, 17)
+(7, 18)
+(7, 13)
+(17, 23)
+(15, 24)
+(3, 22)
+(18, 19)
+(12, 13)
+(4, 24)
+(5, 23)
+(19, 21)
+(1, 17)
+(12, 18)
+(5, 14)
+(15, 17)
+(20, 23)
+(8, 18)
+(7, 17)
+(14, 16)
+(12, 15)
+(18, 19)
+(7, 25)
+(11, 16)
+(0, 15)
+(1, 14)
+(16, 21)
+(17, 18)
+(0, 11)
+(13, 15)
+(3, 15)
+(0, 23)
+(8, 23)
+(0, 9)
+(9, 11)
+(0, 22)
+(5, 8)
+(1, 22)
+(0, 23)
+(6, 8)
+(11, 14)
+(14, 15)
+(8, 20)
+(1, 23)
+(3, 22)
+(3, 21)
+(19, 23)
+(8, 11)
+(17, 20)
+(6, 22)
+(3, 16)
+(6, 21)
+(23, 25)
+(4, 17)
+(17, 25)
+(6, 21)
+(4, 15)
+(11, 23)
+(3, 9)
+(6, 14)
+(17, 21)
+(3, 25)
+(9, 23)
+(5, 11)
+(14, 18)
+(4, 5)
+(3, 10)
+(9, 20)
+(1, 23)
+(6, 15)
+(0, 25)
+(2, 11)
+(0, 7)
+(15, 21)
+(14, 19)
+(4, 8)
+(1, 2)
+(22, 23)
+(14, 20)
+(4, 15)
+(2, 9)
+(16, 22)
+(5, 23)
+(0, 13)
+(1, 3)
+(6, 8)
+(8, 19)
+(5, 17)
+(14, 23)
+(6, 11)
+(10, 14)
+(2, 6)
+(11, 21)
+(5, 25)
+(3, 17)
+(8, 16)
+(14, 20)
+(6, 22)
+(10, 17)
+(16, 18)
+(9, 11)
+(7, 25)
+(2, 24)
+(1, 24)
+(0, 10)
+(18, 25)
+(4, 9)
+(14, 23)
+(3, 22)
+(2, 16)
+(6, 15)
+(11, 12)
+(10, 23)
+(3, 13)
+(1, 15)
+(6, 11)
+(4, 8)
+(0, 14)
+(21, 25)
+(3, 6)
+(11, 16)
+(23, 24)
+(9, 25)
+(2, 15)
+(4, 18)
+(7, 21)
+(14, 25)
+(6, 17)
+(13, 15)
+(11, 23)
+(12, 25)
+(2, 15)
+(1, 14)
+(14, 22)
+(7, 12)
+(1, 10)
+(2, 3)
+(13, 15)
+(5, 15)
+(4, 7)
+(13, 18)
+(1, 2)
+(3, 25)
+(7, 20)
+(5, 6)
+(4, 19)
+(15, 22)
+(11, 25)
+(18, 20)
+(8, 25)
+(4, 24)
+(9, 22)
+(8, 16)
+(9, 10)
+(2, 20)
+(24, 25)
+(1, 22)
+(7, 18)
+(6, 10)
+(4, 7)
+(16, 22)
+(12, 18)
+(7, 24)
+(11, 18)
+(5, 12)
+(8, 16)
+(5, 21)
+(15, 18)
+(8, 9)
+(6, 16)
+(1, 11)
+(7, 19)
+(1, 6)
+(18, 20)
+(8, 21)
+(15, 25)
+(7, 17)
+(1, 10)
+(2, 20)
+(12, 15)
+(18, 24)
+(23, 25)
+(5, 23)
+(15, 16)
+(9, 24)
+(16, 23)
+(2, 24)
+(14, 15)
+(5, 7)
+(5, 25)
+(7, 17)
+(4, 23)
+(7, 22)
+(4, 25)
+(15, 23)
+(14, 15)
+(0, 7)
+(19, 22)
+(18, 25)
+(4, 11)
+(9, 23)
+(15, 16)
+(4, 18)
+(8, 25)
+(5, 23)
+(3, 14)
+(4, 24)
+(11, 18)
+(14, 17)
+(1, 15)
+(10, 25)
+(5, 11)
+(21, 25)
+(6, 14)
+(15, 19)
+(8, 17)
+(10, 17)
+(7, 8)
+(2, 15)
+(6, 12)
+(1, 5)
+(0, 14)
+(0, 22)
+(17, 18)
+(6, 13)
+(7, 11)
+(15, 16)
+(3, 13)
+(2, 15)
+(0, 12)
+(6, 9)
+(1, 22)
+(0, 18)
+(4, 12)
+(2, 5)
+(15, 16)
+(11, 13)
+(1, 17)
+(3, 20)
+(4, 20)
+(18, 22)
+(5, 6)
+(2, 8)
+(11, 13)
+(13, 14)
+(1, 11)
+(10, 18)
+(4, 22)
+(8, 12)
+(1, 8)
+(4, 9)
+(14, 24)
+(13, 15)
+(3, 24)
+(6, 15)
+(9, 11)
+(1, 5)
+(13, 16)
+(2, 13)
+(4, 15)
+(8, 16)
+(4, 20)
+(0, 13)
+(2, 17)
+(16, 19)
+(13, 24)
+(0, 22)
+(2, 7)
+(4, 14)
+(5, 20)
+(9, 17)
+(0, 3)
+(6, 17)
+(10, 20)
+(2, 8)
+(14, 23)
+(8, 20)
+(2, 25)
+(9, 23)
+(6, 13)
+(3, 24)
+(10, 15)
+(18, 20)
+(22, 24)
+(0, 10)
+(4, 15)
+(9, 25)
+(1, 9)
+(8, 22)
+(2, 10)
+(15, 17)
+(14, 24)
+(4, 12)
+(7, 9)
+(15, 20)
+(4, 23)
+(12, 16)
+(16, 19)
+(6, 20)
+(7, 21)
+(11, 12)
+(8, 23)
+(13, 15)
+(4, 5)
+(1, 4)
+(10, 13)
+(19, 25)
+(9, 19)
+(1, 3)
+(4, 21)
+(9, 17)
+(1, 12)
+(3, 22)
+(12, 22)
+(3, 15)
+(1, 3)
+(15, 23)
+(23, 25)
+(1, 2)
+(3, 9)
+(14, 25)
+(2, 3)
+(1, 15)
+(16, 23)
+(2, 20)
+(8, 16)
+(1, 4)
+(13, 15)
+(1, 5)
+(15, 24)
+(4, 23)
+(10, 16)
+(8, 21)
+(8, 13)
+(5, 19)
+(4, 18)
+(14, 21)
+(10, 24)
+(19, 23)
+(17, 24)
+(4, 6)
+(5, 15)
+(13, 20)
+(4, 8)
+(17, 18)
+(2, 15)
+(1, 19)
+(5, 6)
+(1, 12)
+(4, 15)
+(2, 11)
+(7, 8)
+(9, 19)
+(5, 21)
+(2, 25)
+(8, 10)
+(6, 7)
+(5, 24)
+(0, 12)
+(16, 25)
+(10, 21)
+(2, 20)
+(6, 8)
+(7, 22)
+(21, 24)
+(5, 8)
+(6, 19)
+(4, 10)
+(1, 22)
+(16, 18)
+(3, 8)
+(12, 19)
+(6, 24)
+(5, 22)
+(4, 7)
+(1, 15)
+(15, 23)
+(8, 17)
+(13, 19)
+(6, 16)
+(2, 23)
+(14, 15)
+(2, 9)
+(14, 20)
+(7, 23)
+(2, 24)
+(9, 21)
+(13, 23)
+(4, 20)
+(7, 22)
+(14, 25)
+(4, 19)
+(5, 9)
+(6, 21)
+(7, 20)
+(10, 23)
+(18, 25)
+(1, 22)
+(7, 21)
+(13, 18)
+(17, 22)
+(1, 11)
+(0, 5)
+(15, 25)
+(8, 17)
+(23, 25)
+(5, 12)
+(3, 15)
+(7, 17)
+(3, 10)
+(20, 25)
+(6, 23)
+(2, 15)
+(8, 10)
+(7, 18)
+(2, 14)
+(6, 11)
+(2, 15)
+(6, 19)
+(11, 23)
+(5, 8)
+(4, 19)
+(2, 14)
+(5, 13)
+(6, 8)
+(0, 11)
+(15, 16)
+(14, 20)
+(6, 10)
+(0, 9)
+(3, 16)
+(2, 12)
+(3, 11)
+(14, 25)
+(10, 13)
+(1, 2)
+(12, 21)
+(6, 14)
+(23, 25)
+(0, 12)
+(23, 24)
+(15, 25)
+(0, 2)
+(4, 14)
+(14, 16)
+(4, 17)
+(20, 25)
+(8, 23)
+(7, 15)
+(7, 12)
+(6, 23)
+(8, 19)
+(21, 23)
+(5, 6)
+(8, 18)
+(19, 21)
+(14, 18)
+(22, 23)
+(5, 15)
+(12, 19)
+(13, 22)
+(8, 21)
+(11, 18)
+(5, 8)
+(13, 23)
+(18, 25)
+(7, 22)
+(4, 23)
+(13, 15)
+(21, 22)
+(15, 16)
+(13, 18)
+(4, 11)
+(15, 19)
+(0, 16)
+(15, 17)
+(10, 16)
+(6, 19)
+(1, 10)
+(2, 17)
+(18, 19)
+(6, 7)
+(3, 15)
+(2, 11)
+(7, 12)
+(13, 18)
+(8, 17)
+(15, 23)
+(5, 10)
+(6, 22)
+(3, 14)
+(18, 19)
+(8, 17)
+(5, 15)
+(11, 22)
+(8, 17)
+(2, 19)
+(15, 21)
+(8, 10)
+(1, 17)
+(2, 14)
+(10, 15)
+(8, 22)
+(13, 17)
+(2, 3)
+(3, 4)
+(17, 24)
+(5, 10)
+(15, 25)
+(9, 13)
+(16, 17)
+(20, 24)
+(6, 9)
+(7, 13)
+(0, 25)
+(7, 8)
+(5, 16)
+(0, 3)
+(17, 19)
+(6, 12)
+(9, 12)
+(8, 14)
+(6, 24)
+(2, 5)
+(1, 7)
+(17, 23)
+(0, 23)
+(7, 22)
+(1, 6)
+(9, 21)
+(13, 14)
+(8, 12)
+(5, 16)
+(4, 21)
+(13, 19)
+(8, 20)
+(10, 12)
+(9, 24)
+(2, 5)
+(1, 8)
+(4, 10)
+(15, 24)
+(9, 18)
+(11, 20)
+(16, 21)
+(5, 22)
+(5, 7)
+(22, 25)
+(20, 21)
+(6, 11)
+(8, 10)
+(14, 18)
+(2, 11)
+(3, 5)
+(16, 25)
+(13, 14)
+(10, 25)
+(2, 6)
+(3, 4)
+(11, 24)
+(21, 24)
+(5, 6)
+(1, 2)
+(5, 22)
+(9, 24)
+(2, 23)
+(6, 17)
+(1, 16)
+(2, 14)
+(21, 22)
+(4, 9)
+(1, 18)
+(6, 19)
+(5, 16)
+(7, 24)
+(0, 19)
+(1, 2)
+(13, 21)
+(17, 22)
+(14, 16)
+(0, 3)
+(17, 18)
+(2, 6)
+(20, 22)
+(1, 8)
+(16, 23)
+(14, 21)
+(9, 19)
+(16, 25)
+(0, 20)
+(2, 15)
+(9, 22)
+(3, 17)
+(19, 20)
+(0, 3)
+(9, 16)
+(15, 22)
+(2, 23)
+(0, 1)
+(12, 23)
+(3, 5)
+(13, 23)
+(0, 5)
+(3, 17)
+(4, 12)
+(1, 10)
+(13, 14)
+(6, 10)
+(1, 4)
+(4, 9)
+(13, 19)
+(1, 11)
+(6, 15)
+(14, 20)
+(11, 24)
+(7, 13)
+(10, 14)
+(15, 16)
+(8, 19)
+(6, 14)
+(24, 25)
+(11, 22)
+(0, 22)
+(1, 25)
+(23, 24)
+(11, 15)
+(2, 6)
+(0, 20)
+(6, 10)
+(1, 17)
+(14, 15)
+(9, 25)
+(17, 24)
+(9, 18)
+(12, 20)
+(3, 6)
+(0, 16)
+(1, 25)
+(19, 20)
+(3, 5)
+(6, 21)
+(9, 20)
+(21, 22)
+(6, 17)
+(3, 11)
+(5, 24)
+(2, 19)
+(20, 22)
+(5, 6)
+(8, 11)
+(2, 7)
+(15, 19)
+(2, 24)
+(5, 12)
+(0, 11)
+(6, 14)
+(10, 15)
+(0, 16)
+(5, 7)
+(14, 24)
+(16, 19)
+(0, 25)
+(0, 18)
+(16, 17)
+(16, 25)
+(17, 25)
+(16, 19)
+(18, 19)
+(1, 17)
+(24, 25)
+(13, 16)
+(15, 24)
+(3, 16)
+(17, 21)
+(1, 9)
+(0, 17)
+(8, 24)
+(2, 21)
+(1, 15)
+(10, 21)
+(3, 17)
+(9, 24)
+(8, 22)
+(9, 24)
+(3, 15)
+(16, 21)
+(17, 18)
+(8, 19)
+(9, 17)
+(12, 24)
+(18, 23)
+(18, 21)
+(9, 20)
+(16, 17)
+(12, 15)
+(13, 15)
+(10, 20)
+(0, 17)
+(9, 14)
+(14, 24)
+(2, 13)
+(6, 10)
+(0, 3)
+(20, 25)
+(6, 17)
+(7, 14)
+(18, 25)
+(19, 24)
+(10, 22)
+(11, 24)
+(0, 22)
+(16, 18)
+(8, 19)
+(15, 25)
+(5, 6)
+(12, 16)
+(3, 5)
+(4, 18)
+(1, 6)
+(14, 24)
+(15, 20)
+(2, 4)
+(15, 18)
+(13, 24)
+(3, 22)
+(2, 9)
+(5, 24)
+(13, 14)
+(4, 19)
+(18, 19)
+(4, 8)
+(9, 12)
+(9, 22)
+(3, 19)
+(12, 23)
+(4, 11)
+(12, 24)
+(10, 11)
+(6, 23)
+(10, 16)
+(16, 21)
+(10, 14)
+(11, 16)
+(20, 21)
+(10, 20)
+(8, 11)
+(14, 21)
+(15, 16)
+(0, 16)
+(14, 15)
+(5, 10)
+(8, 13)
+(7, 11)
+(13, 24)
+(0, 20)
+(2, 7)
+(1, 11)
+(0, 16)
+(2, 18)
+(5, 24)
+(1, 6)
+(7, 25)
+(1, 17)
+(16, 21)
+(6, 8)
+(5, 12)
+(0, 11)
+(19, 25)
+(11, 24)
+(6, 10)
+(21, 22)
+(12, 13)
+(5, 11)
+(12, 22)
+(0, 24)
+(13, 21)
+(4, 10)
+(2, 6)
+(3, 6)
+(18, 24)
+(18, 23)
+(6, 9)
+(3, 19)
+(11, 19)
+(9, 16)
+(6, 14)
+(16, 24)
+(2, 6)
+(3, 14)
+(9, 23)
+(6, 7)
+(9, 14)
+(15, 16)
+(2, 13)
+(9, 24)
+(13, 18)
+(8, 16)
+(4, 7)
+(2, 10)
+(0, 6)
+(7, 21)
+(1, 2)
+(5, 18)
+(13, 15)
+(6, 20)
+(0, 17)
+(6, 15)
+(1, 22)
+(2, 16)
+(3, 21)
+(17, 19)
+(14, 18)
+(0, 4)
+(0, 25)
+(11, 16)
+(18, 22)
+(2, 19)
+(12, 21)
+(6, 20)
+(8, 15)
+(21, 25)
+(9, 18)
+(8, 13)
+(0, 16)
+(4, 20)
+(5, 16)
+(0, 19)
+(13, 20)
+(3, 21)
+(12, 25)
+(9, 24)
+(10, 12)
+(11, 16)
+(2, 3)
+(14, 21)
+(8, 25)
+(1, 20)
+(9, 18)
+(4, 25)
+(21, 24)
+(10, 23)
+(11, 12)
+(8, 17)
+(17, 22)
+(3, 8)
+(2, 25)
+(1, 21)
+(10, 12)
+(18, 23)
+(7, 10)
+(2, 3)
+(18, 19)
+(1, 25)
+(16, 23)
+(0, 22)
+(4, 18)
+(15, 19)
+(0, 16)
+(14, 22)
+(3, 19)
+(2, 14)
+(14, 19)
+(2, 13)
+(14, 18)
+(2, 21)
+(19, 20)
+(13, 15)
+(4, 15)
+(3, 21)
+(2, 10)
+(6, 19)
+(11, 20)
+(3, 13)
+(15, 22)
+(4, 20)
+(0, 21)
+(1, 22)
+(21, 24)
+(11, 15)
+(4, 5)
+(3, 16)
+(9, 11)
+(3, 19)
+(5, 21)
+(4, 12)
+(8, 15)
+(8, 11)
+(3, 15)
+(4, 25)
+(2, 21)
+(6, 8)
+(12, 21)
+(1, 25)
+(13, 21)
+(12, 23)
+(18, 23)
+(5, 13)
+(4, 18)
+(5, 21)
+(12, 13)
+(2, 23)
+(17, 18)
+(12, 20)
+(3, 4)
+(0, 2)
+(21, 24)
+(5, 19)
+(15, 18)
+(0, 17)
+(6, 20)
+(14, 24)
+(2, 5)
+(10, 20)
+(0, 1)
+(8, 14)
+(15, 16)
+(2, 9)
+(5, 25)
+(19, 24)
+(12, 18)
+(11, 17)
+(7, 16)
+(0, 5)
+(1, 3)
+(11, 25)
+(4, 25)
+(15, 16)
+(7, 22)
+(11, 20)
+(15, 22)
+(7, 12)
+(0, 4)
+(16, 17)
+(12, 24)
+(8, 17)
+(7, 23)
+(13, 16)
+(3, 22)
+(15, 25)
+(12, 14)
+(5, 8)
+(22, 23)
+(2, 16)
+(9, 17)
+(11, 12)
+(16, 21)
+(8, 10)
+(16, 18)
+(1, 8)
+(10, 18)
+(16, 19)
+(1, 17)
+(17, 25)
+(0, 16)
+(5, 18)
+(13, 19)
+(6, 18)
+(3, 5)
+(0, 15)
+(2, 6)
+(18, 24)
+(2, 4)
+(20, 24)
+(2, 16)
+(8, 20)
+(10, 24)
+(4, 20)
+(2, 22)
+(19, 24)
+(8, 9)
+(2, 9)
+(13, 19)
+(10, 24)
+(13, 18)
+(14, 19)
+(2, 12)
+(13, 20)
+(18, 23)
+(14, 22)
+(9, 18)
+(21, 23)
+(6, 22)
+(4, 20)
+(18, 24)
+(20, 21)
+(4, 11)
+(9, 20)
+(3, 4)
+(14, 24)
+(11, 13)
+(11, 22)
+(9, 21)
+(4, 25)
+(3, 12)
+(8, 20)
+(9, 23)
+(2, 25)
+(3, 13)
+(0, 8)
+(22, 25)
+(8, 16)
+(2, 19)
+(0, 15)
+(10, 22)
+(8, 13)
+(6, 16)
+(0, 21)
+(16, 19)
+(8, 11)
+(6, 17)
+(2, 8)
+(4, 6)
+(4, 8)
+(6, 21)
+(6, 16)
+(4, 9)
+(13, 21)
+(1, 13)
+(9, 14)
+(6, 19)
+(12, 16)
+(3, 21)
+(2, 12)
+(6, 18)
+(0, 14)
+(7, 13)
+(10, 14)
+(0, 16)
+(18, 23)
+(8, 23)
+(0, 3)
+(16, 24)
+(10, 16)
+(8, 9)
+(17, 23)
+(1, 17)
+(8, 25)
+(2, 9)
+(1, 11)
+(2, 14)
+(5, 9)
+(8, 20)
+(5, 6)
+(14, 24)
+(9, 19)
+(11, 16)
+(12, 20)
+(8, 14)
+(11, 22)
+(10, 20)
+(24, 25)
+(6, 19)
+(3, 5)
+(3, 17)
+(14, 20)
+(5, 23)
+(15, 24)
+(16, 25)
+(5, 21)
+(3, 13)
+(12, 15)
+(19, 23)
+(9, 24)
+(22, 25)
+(15, 18)
+(5, 8)
+(16, 21)
+(9, 12)
+(2, 21)
+(7, 15)
+(12, 20)
+(0, 8)
+(0, 1)
+(8, 20)
+(3, 15)
+(7, 14)
+(12, 19)
+(7, 25)
+(18, 19)
+(2, 12)
+(8, 14)
+(3, 10)
+(1, 12)
+(5, 10)
+(14, 23)
+(24, 25)
+(3, 9)
+(12, 23)
+(5, 13)
+(9, 17)
+(3, 25)
+(9, 11)
+(0, 25)
+(8, 13)
+(17, 20)
+(9, 16)
+(14, 17)
+(20, 24)
+(5, 16)
+(20, 21)
+(4, 9)
+(9, 18)
+(4, 13)
+(1, 5)
+(10, 16)
+(2, 18)
+(3, 5)
+(16, 22)
+(4, 23)
+(2, 14)
+(4, 23)
+(11, 22)
+(5, 6)
+(16, 17)
+(5, 17)
+(2, 6)
+(8, 16)
+(9, 22)
+(4, 5)
+(16, 22)
+(1, 9)
+(19, 22)
+(1, 15)
+(10, 19)
+(3, 22)
+(7, 15)
+(1, 14)
+(3, 11)
+(19, 24)
+(1, 6)
+(10, 16)
+(12, 22)
+(4, 19)
+(3, 20)
+(16, 23)
+(11, 23)
+(3, 13)
+(16, 17)
+(6, 13)
+(3, 10)
+(1, 23)
+(12, 16)
+(17, 18)
+(9, 23)
+(16, 24)
+(0, 17)
+(12, 25)
+(6, 21)
+(8, 18)
+(2, 18)
+(13, 25)
+(5, 9)
+(10, 23)
+(12, 14)
+(17, 20)
+(6, 20)
+(12, 15)
+(1, 17)
+(0, 15)
+(6, 10)
+(3, 20)
+(4, 6)
+(3, 12)
+(11, 20)
+(0, 19)
+(8, 19)
+(16, 20)
+(3, 22)
+(11, 12)
+(6, 9)
+(6, 23)
+(4, 8)
+(7, 19)
+(5, 9)
+(9, 10)
+(8, 15)
+(4, 17)
+(0, 7)
+(5, 11)
+(0, 17)
+(2, 11)
+(4, 20)
+(6, 9)
+(11, 21)
+(9, 10)
+(6, 12)
+(6, 16)
+(8, 9)
+(3, 10)
+(3, 23)
+(6, 22)
+(0, 16)
+(0, 7)
+(12, 16)
+(3, 9)
+(7, 24)
+(0, 19)
+(15, 19)
+(7, 8)
+(22, 24)
+(0, 24)
+(19, 25)
+(15, 23)
+(3, 8)
+(3, 13)
+(10, 23)
+(0, 25)
+(9, 13)
+(3, 11)
+(6, 25)
+(19, 23)
+(16, 19)
+(0, 25)
+(11, 24)
+(13, 21)
+(10, 23)
+(9, 15)
+(3, 21)
+(14, 15)
+(3, 20)
+(13, 21)
+(14, 15)
+(8, 13)
+(14, 15)
+(3, 25)
+(21, 24)
+(13, 24)
+(4, 21)
+(10, 15)
+(8, 16)
+(11, 14)
+(6, 25)
+(14, 20)
+(5, 15)
+(9, 11)
+(12, 15)
+(4, 9)
+(11, 14)
+(5, 16)
+(0, 20)
+(15, 22)
+(8, 11)
+(14, 20)
+(3, 4)
+(0, 23)
+(2, 9)
+(18, 20)
+(4, 10)
+(3, 25)
+(14, 16)
+(0, 24)
+(1, 22)
+(8, 19)
+(2, 21)
+(12, 19)
+(7, 16)
+(10, 17)
+(4, 5)
+(8, 25)
+(9, 24)
+(2, 21)
+(12, 20)
+(3, 4)
+(15, 19)
+(11, 21)
+(4, 6)
+(11, 14)
+(12, 15)
+(4, 25)
+(3, 15)
+(11, 21)
+(5, 6)
+(21, 22)
+(0, 4)
+(11, 14)
+(6, 20)
+(10, 14)
+(1, 6)
+(0, 2)
+(11, 18)
+(4, 23)
+(22, 25)
+(8, 21)
+(3, 6)
+(7, 10)
+(17, 23)
+(2, 15)
+(12, 18)
+(11, 16)
+(9, 21)
+(17, 25)
+(11, 14)
+(5, 23)
+(18, 22)
+(6, 19)
+(4, 19)
+(6, 15)
+(14, 20)
+(16, 23)
+(0, 25)
+(4, 13)
+(5, 14)
+(15, 22)
+(0, 8)
+(18, 19)
+(4, 11)
+(22, 25)
+(12, 19)
+(14, 18)
+(16, 22)
+(6, 25)
+(15, 19)
+(2, 18)
+(19, 21)
+(4, 6)
+(15, 17)
+(4, 12)
+(11, 19)
+(3, 17)
+(14, 21)
+(2, 15)
+(15, 24)
+(3, 9)
+(13, 17)
+(12, 21)
+(2, 19)
+(2, 14)
+(5, 12)
+(13, 18)
+(6, 9)
+(6, 8)
+(13, 24)
+(2, 3)
+(18, 20)
+(9, 24)
+(8, 15)
+(2, 7)
+(6, 24)
+(7, 25)
+(8, 17)
+(9, 11)
+(1, 8)
+(11, 16)
+(14, 17)
+(7, 10)
+(6, 13)
+(10, 11)
+(8, 22)
+(5, 13)
+(17, 23)
+(1, 24)
+(8, 15)
+(13, 16)
+(14, 24)
+(21, 22)
+(17, 21)
+(22, 23)
+(16, 20)
+(10, 15)
+(23, 25)
+(4, 21)
+(13, 17)
+(0, 22)
+(9, 20)
+(11, 16)
+(13, 20)
+(6, 9)
+(3, 23)
+(8, 16)
+(0, 3)
+(2, 9)
+(22, 23)
+(16, 19)
+(1, 19)
+(5, 16)
+(3, 8)
+(2, 6)
+(12, 22)
+(14, 23)
+(8, 14)
+(22, 25)
+(17, 23)
+(15, 16)
+(1, 6)
+(8, 20)
+(0, 15)
+(5, 16)
+(14, 22)
+(3, 25)
+(9, 15)
+(12, 25)
+(14, 21)
+(13, 20)
+(0, 18)
+(7, 15)
+(20, 25)
+(13, 24)
+(17, 21)
+(18, 20)
+(3, 13)
+(9, 21)
+(14, 24)
+(12, 25)
+(10, 25)
+(13, 22)
+(3, 17)
+(1, 24)
+(7, 20)
+(14, 23)
+(12, 16)
+(1, 13)
+(12, 23)
+(2, 3)
+(6, 14)
+(1, 15)
+(2, 19)
+(6, 20)
+(12, 16)
+(23, 24)
+(2, 22)
+(20, 23)
+(16, 25)
+(11, 19)
+(13, 25)
+(7, 16)
+(0, 11)
+(19, 23)
+(14, 22)
+(3, 22)
+(17, 23)
+(7, 24)
+(12, 16)
+(11, 14)
+(5, 7)
+(8, 12)
+(4, 17)
+(12, 23)
+(4, 25)
+(1, 7)
+(8, 9)
+(21, 23)
+(2, 12)
+(9, 19)
+(8, 16)
+(4, 13)
+(15, 19)
+(3, 4)
+(11, 13)
+(2, 5)
+(15, 18)
+(4, 20)
+(13, 22)
+(1, 19)
+(3, 14)
+(0, 5)
+(22, 24)
+(15, 17)
+(14, 16)
+(3, 11)
+(24, 25)
+(13, 14)
+(10, 22)
+(2, 15)
+(12, 17)
+(23, 25)
+(1, 15)
+(11, 14)
+(8, 22)
+(24, 25)
+(0, 11)
+(9, 14)
+(15, 19)
+(8, 16)
+(2, 9)
+(8, 19)
+(1, 11)
+(0, 13)
+(9, 20)
+(1, 4)
+(2, 22)
+(0, 10)
+(0, 15)
+(3, 9)
+(4, 13)
+(19, 20)
+(10, 12)
+(14, 15)
+(5, 13)
+(6, 12)
+(10, 17)
+(0, 21)
+(3, 7)
+(10, 14)
+(6, 9)
+(0, 13)
+(15, 22)
+(2, 3)
+(1, 5)
+(7, 16)
+(3, 11)
+(9, 14)
+(0, 8)
+(1, 12)
+(5, 13)
+(2, 10)
+(4, 7)
+(11, 20)
+(6, 10)
+(12, 22)
+(3, 7)
+(2, 21)
+(5, 24)
+(14, 19)
+(4, 19)
+(10, 13)
+(3, 14)
+(9, 11)
+(18, 21)
+(2, 17)
+(0, 13)
+(19, 20)
+(12, 21)
+(1, 4)
+(2, 15)
+(2, 16)
+(20, 21)
+(5, 19)
+(13, 15)
+(0, 14)
+(12, 25)
+(4, 25)
+(9, 15)
+(2, 6)
+(5, 18)
+(16, 19)
+(3, 16)
+(12, 19)
+(4, 7)
+(6, 10)
+(10, 22)
+(19, 21)
+(16, 24)
+(6, 20)
+(10, 11)
+(23, 24)
+(9, 22)
+(12, 20)
+(2, 24)
+(5, 9)
+(10, 16)
+(6, 22)
+(11, 15)
+(10, 20)
+(8, 15)
+(6, 22)
+(1, 16)
+(15, 22)
+(16, 21)
+(10, 13)
+(8, 23)
+(13, 15)
+(17, 22)
+(8, 25)
+(3, 10)
+(9, 15)
+(23, 25)
+(0, 8)
+(6, 9)
+(4, 8)
+(20, 23)
+(8, 11)
+(2, 4)
+(8, 22)
+(11, 19)
+(4, 25)
+(5, 11)
+(6, 8)
+(2, 4)
+(14, 19)
+(5, 17)
+(4, 21)
+(11, 13)
+(14, 22)
+(18, 21)
+(2, 5)
+(1, 4)
+(14, 23)
+(16, 17)
+(4, 21)
+(2, 24)
+(13, 18)
+(1, 9)
+(3, 17)
+(5, 8)
+(7, 16)
+(17, 24)
+(1, 7)
+(18, 20)
+(3, 22)
+(3, 13)
+(14, 22)
+(24, 25)
+(18, 21)
+(4, 22)
+(14, 15)
+(23, 24)
+(2, 25)
+(18, 19)
+(4, 23)
+(12, 25)
+(6, 24)
+(2, 3)
+(11, 23)
+(10, 24)
+(4, 8)
+(20, 25)
+(9, 25)
+(3, 24)
+(10, 16)
+(6, 23)
+(1, 20)
+(7, 11)
+(2, 8)
+(4, 20)
+(12, 24)
+(11, 18)
+(0, 7)
+(13, 25)
+(3, 15)
+(10, 23)
+(6, 18)
+(2, 23)
+(3, 14)
+(16, 24)
+(0, 5)
+(7, 19)
+(4, 8)
+(1, 18)
+(4, 15)
+(7, 12)
+(8, 13)
+(11, 19)
+(8, 23)
+(7, 17)
+(0, 11)
+(5, 19)
+(2, 15)
+(4, 13)
+(11, 19)
+(13, 15)
+(1, 17)
+(7, 12)
+(0, 6)
+(5, 9)
+(5, 21)
+(13, 15)
+(9, 25)
+(1, 24)
+(10, 19)
+(1, 24)
+(10, 22)
+(3, 25)
+(5, 7)
+(5, 25)
+(1, 20)
+(12, 22)
+(10, 18)
+(12, 24)
+(14, 22)
+(10, 11)
+(20, 21)
+(11, 19)
+(6, 20)
+(4, 21)
+(2, 24)
+(15, 22)
+(1, 10)
+(7, 22)
+(21, 24)
+(12, 20)
+(10, 17)
+(10, 18)
+(16, 20)
+(22, 23)
+(13, 17)
+(12, 14)
+(4, 7)
+(10, 15)
+(18, 21)
+(5, 7)
+(14, 24)
+(0, 16)
+(11, 12)
+(16, 17)
+(12, 20)
+(13, 21)
+(9, 24)
+(6, 10)
+(5, 14)
+(17, 22)
+(12, 15)
+(9, 23)
+(14, 25)
+(10, 16)
+(0, 16)
+(8, 22)
+(3, 23)
+(1, 25)
+(6, 10)
+(3, 19)
+(8, 11)
+(6, 9)
+(6, 19)
+(8, 22)
+(7, 11)
+(5, 22)
+(2, 11)
+(7, 13)
+(12, 19)
+(8, 20)
+(8, 17)
+(7, 15)
+(1, 20)
+(18, 20)
+(9, 15)
+(17, 25)
+(1, 20)
+(24, 25)
+(9, 10)
+(15, 23)
+(10, 17)
+(3, 25)
+(5, 23)
+(9, 16)
+(12, 15)
+(1, 4)
+(3, 7)
+(4, 22)
+(17, 21)
+(13, 25)
+(0, 9)
+(8, 15)
+(9, 10)
+(3, 19)
+(0, 21)
+(13, 22)
+(7, 13)
+(21, 25)
+(12, 22)
+(7, 20)
+(2, 13)
+(5, 12)
+(12, 22)
+(8, 20)
+(2, 18)
+(13, 14)
+(15, 18)
+(1, 2)
+(8, 21)
+(12, 16)
+(13, 22)
+(7, 20)
+(2, 4)
+(22, 24)
+(0, 20)
+(1, 9)
+(16, 23)
+(1, 14)
+(9, 17)
+(15, 22)
+(4, 5)
+(6, 23)
+(5, 7)
+(1, 18)
+(4, 9)
+(11, 17)
+(0, 6)
+(4, 10)
+(7, 18)
+(9, 13)
+(0, 23)
+(5, 14)
+(14, 17)
+(5, 11)
+(6, 7)
+(13, 19)
+(0, 2)
+(10, 14)
+(19, 21)
+(4, 6)
+(0, 8)
+(13, 16)
+(5, 17)
+(6, 9)
+(13, 18)
+(5, 11)
+(2, 16)
+(1, 4)
+(9, 20)
+(6, 13)
+(5, 7)
+(3, 11)
+(4, 10)
+(18, 22)
+(4, 9)
+(6, 21)
+(2, 5)
+(7, 14)
+(1, 20)
+(3, 15)
+(6, 22)
+(7, 13)
+(9, 20)
+(4, 14)
+(12, 15)
+(6, 19)
+(20, 22)
+(7, 18)
+(10, 12)
+(13, 21)
+(10, 15)
+(11, 18)
+(12, 24)
+(7, 20)
+(3, 24)
+(15, 23)
+(18, 25)
+(2, 11)
+(6, 23)
+(12, 15)
+(2, 13)
+(8, 11)
+(4, 24)
+(1, 11)
+(24, 25)
+(12, 23)
+(8, 9)
+(3, 13)
+(2, 5)
+(8, 18)
+(0, 25)
+(9, 15)
+(23, 24)
+(5, 22)
+(2, 12)
+(1, 17)
+(9, 25)
+(0, 11)
+(17, 21)
+(12, 22)
+(7, 18)
+(5, 20)
+(16, 18)
+(13, 20)
+(1, 7)
+(12, 15)
+(0, 14)
+(4, 21)
+(17, 21)
+(4, 8)
+(0, 11)
+(1, 5)
+(2, 21)
+(0, 14)
+(4, 18)
+(17, 19)
+(4, 20)
+(6, 17)
+(18, 25)
+(14, 16)
+(3, 19)
+(13, 16)
+(9, 25)
+(0, 14)
+(15, 18)
+(0, 2)
+(11, 25)
+(13, 21)
+(9, 21)
+(12, 25)
+(0, 24)
+(8, 13)
+(11, 22)
+(10, 25)
+(1, 12)
+(8, 17)
+(16, 22)
+(15, 24)
+(11, 15)
+(8, 21)
+(16, 23)
+(1, 9)
+(10, 19)
+(8, 17)
+(10, 25)
+(18, 19)
+(13, 23)
+(21, 23)
+(14, 17)
+(1, 8)
+(0, 25)
+(10, 16)
+(3, 18)
+(16, 22)
+(14, 24)
+(3, 4)
+(18, 25)
+(3, 7)
+(0, 4)
+(11, 16)
+(17, 25)
+(15, 18)
+(13, 16)
+(0, 25)
+(4, 22)
+(5, 15)
+(3, 23)
+(4, 21)
+(0, 17)
+(2, 13)
+(16, 19)
+(5, 25)
+(6, 17)
+(13, 18)
+(3, 16)
+(0, 25)
+(12, 21)
+(2, 22)
+(0, 10)
+(12, 23)
+(8, 22)
+(15, 21)
+(2, 25)
+(12, 20)
+(9, 10)
+(2, 8)
+(0, 24)
+(4, 21)
+(4, 13)
+(1, 10)
+(17, 24)
+(7, 20)
+(12, 14)
+(9, 19)
+(4, 7)
+(9, 22)
+(10, 11)
+(20, 23)
+(14, 17)
+(23, 24)
+(11, 12)
+(17, 18)
+(6, 14)
+(10, 20)
+(12, 22)
+(2, 10)
+(1, 20)
+(24, 25)
+(4, 23)
+(14, 17)
+(3, 20)
+(0, 4)
+(5, 24)
+(6, 22)
+(12, 25)
+(4, 11)
+(12, 23)
+(6, 14)
+(9, 22)
+(1, 25)
+(0, 16)
+(5, 18)
+(14, 15)
+(1, 5)
+(12, 17)
+(16, 22)
+(6, 7)
+(18, 21)
+(7, 10)
+(18, 20)
+(14, 24)
+(18, 23)
+(4, 10)
+(3, 14)
+(5, 24)
+(1, 20)
+(1, 17)
+(0, 23)
+(3, 16)
+(13, 24)
+(8, 10)
+(3, 22)
+(6, 16)
+(18, 23)
+(7, 8)
+(17, 23)
+(5, 7)
+(8, 24)
+(18, 25)
+(3, 22)
+(21, 23)
+(3, 16)
+(11, 25)
+(4, 25)
+(11, 19)
+(0, 16)
+(2, 25)
+(11, 20)
+(9, 19)
+(20, 22)
+(17, 19)
+(23, 25)
+(11, 18)
+(1, 18)
+(9, 20)
+(4, 19)
+(15, 22)
+(17, 24)
+(11, 16)
+(18, 19)
+(10, 11)
+(1, 14)
+(4, 21)
+(5, 20)
+(6, 15)
+(8, 24)
+(11, 23)
+(0, 14)
+(2, 10)
+(17, 18)
+(0, 10)
+(5, 18)
+(13, 17)
+(11, 21)
+(21, 22)
+(0, 2)
+(15, 18)
+(5, 24)
+(9, 18)
+(24, 25)
+(11, 21)
+(8, 15)
+(10, 22)
+(2, 16)
+(5, 14)
+(15, 24)
+(11, 14)
+(13, 21)
+(7, 9)
+(17, 18)
+(4, 8)
+(6, 8)
+(11, 23)
+(1, 15)
+(9, 20)
+(7, 12)
+(15, 16)
+(9, 24)
+(8, 25)
+(12, 17)
+(19, 20)
+(2, 7)
+(2, 19)
+(1, 7)
+(12, 21)
+(16, 20)
+(3, 9)
+(5, 15)
+(10, 20)
+(9, 11)
+(17, 21)
+(15, 18)
+(0, 7)
+(10, 13)
+(1, 20)
+(9, 17)
+(7, 12)
+(3, 11)
+(6, 21)
+(12, 15)
+(5, 20)
+(10, 25)
+(4, 9)
+(0, 13)
+(12, 18)
+(13, 22)
+(10, 23)
+(1, 5)
+(14, 25)
+(4, 10)
+(8, 13)
+(21, 22)
+(12, 24)
+(3, 14)
+(7, 8)
+(6, 13)
+(4, 9)
+(12, 18)
+(1, 3)
+(8, 11)
+(3, 19)
+(4, 10)
+(12, 24)
+(13, 16)
+(8, 20)
+(9, 10)
+(24, 25)
+(6, 16)
+(18, 19)
+(10, 11)
+(15, 25)
+(9, 23)
+(18, 20)
+(6, 14)
+(12, 16)
+(8, 24)
+(10, 23)
+(13, 18)
+(5, 11)
+(17, 24)
+(6, 21)
+(4, 25)
+(7, 15)
+(7, 8)
+(3, 17)
+(11, 21)
+(18, 23)
+(13, 16)
+(5, 20)
+(4, 15)
+(5, 23)
+(1, 11)
+(8, 24)
+(9, 13)
+(4, 19)
+(15, 18)
+(0, 21)
+(7, 10)
+(11, 24)
+(6, 19)
+(9, 25)
+(5, 10)
+(8, 14)
+(21, 22)
+(0, 22)
+(7, 24)
+(2, 9)
+(3, 14)
+(9, 18)
+(2, 10)
+(4, 22)
+(7, 15)
+(0, 17)
+(4, 13)
+(0, 23)
+(12, 22)
+(16, 18)
+(3, 7)
+(5, 18)
+(6, 16)
+(3, 24)
+(7, 20)
+(0, 17)
+(8, 22)
+(9, 22)
+(0, 23)
+(2, 20)
+(8, 13)
+(6, 17)
+(10, 20)
+(23, 25)
+(0, 11)
+(14, 17)
+(6, 18)
+(19, 23)
+(0, 2)
+(12, 17)
+(1, 18)
+(23, 25)
+(2, 19)
+(3, 18)
+(1, 11)
+(8, 17)
+(1, 5)
+(10, 23)
+(11, 21)
+(6, 17)
+(7, 21)
+(5, 16)
+(1, 9)
+(11, 15)
+(2, 10)
+(4, 7)
+(15, 17)
+(5, 25)
+(11, 14)
+(8, 10)
+(11, 19)
+(7, 9)
+(20, 25)
+(1, 7)
+(0, 9)
+(16, 20)
+(1, 21)
+(7, 20)
+(4, 9)
+(6, 16)
+(7, 15)
+(11, 20)
+(8, 21)
+(1, 6)
+(9, 18)
+(16, 25)
+(8, 13)
+(20, 22)
+(7, 11)
+(0, 6)
+(4, 16)
+(10, 15)
+(16, 17)
+(6, 19)
+(2, 10)
+(9, 22)
+(15, 19)
+(4, 16)
+(15, 19)
+(16, 17)
+(4, 8)
+(3, 8)
+(4, 19)
+(16, 23)
+(6, 15)
+(1, 3)
+(5, 16)
+(23, 24)
+(3, 13)
+(16, 18)
+(12, 23)
+(12, 24)
+(1, 13)
+(12, 17)
+(0, 24)
+(12, 14)
+(0, 9)
+(5, 24)
+(12, 21)
+(5, 20)
+(14, 25)
+(19, 24)
+(20, 23)
+(15, 24)
+(17, 19)
+(12, 16)
+(18, 21)
+(5, 16)
+(4, 12)
+(6, 18)
+(20, 21)
+(5, 21)
+(4, 22)
+(2, 16)
+(1, 2)
+(12, 16)
+(5, 13)
+(19, 21)
+(10, 21)
+(13, 19)
+(5, 14)
+(2, 4)
+(16, 23)
+(3, 16)
+(0, 23)
+(19, 20)
+(13, 19)
+(16, 22)
+(20, 24)
+(3, 6)
+(4, 24)
+(3, 21)
+(7, 22)
+(16, 23)
+(6, 11)
+(0, 13)
+(13, 22)
+(16, 18)
+(3, 7)
+(11, 20)
+(2, 11)
+(14, 22)
+(12, 13)
+(20, 21)
+(3, 12)
+(5, 20)
+(11, 15)
+(13, 14)
+(2, 8)
+(1, 8)
+(3, 20)
+(0, 15)
+(13, 16)
+(2, 19)
+(10, 13)
+(7, 19)
+(6, 15)
+(0, 25)
+(11, 25)
+(9, 15)
+(6, 18)
+(10, 16)
+(4, 25)
+(0, 15)
+(10, 17)
+(2, 16)
+(7, 9)
+(11, 13)
+(16, 23)
+(1, 15)
+(10, 21)
+(9, 12)
+(0, 5)
+(17, 19)
+(13, 21)
+(0, 25)
+(3, 15)
+(2, 19)
+(16, 17)
+(18, 21)
+(19, 23)
+(22, 25)
+(0, 7)
+(1, 15)
+(18, 20)
+(11, 25)
+(17, 23)
+(15, 19)
+(1, 21)
+(4, 19)
+(10, 20)
+(13, 23)
+(1, 14)
+(6, 21)
+(4, 17)
+(14, 25)
+(21, 24)
+(2, 24)
+(5, 17)
+(2, 25)
+(3, 17)
+(18, 24)
+(4, 24)
+(17, 21)
+(0, 18)
+(3, 22)
+(10, 24)
+(4, 11)
+(1, 4)
+(11, 20)
+(0, 10)
+(12, 20)
+(0, 2)
+(9, 11)
+(8, 11)
+(9, 25)
+(6, 20)
+(12, 24)
+(8, 23)
+(6, 13)
+(7, 11)
+(5, 8)
+(7, 14)
+(11, 13)
+(7, 10)
+(11, 17)
+(1, 14)
+(13, 20)
+(1, 19)
+(4, 20)
+(13, 22)
+(6, 13)
+(4, 15)
+(5, 22)
+(15, 18)
+(6, 8)
+(13, 14)
+(1, 4)
+(20, 22)
+(8, 25)
+(7, 20)
+(5, 22)
+(13, 18)
+(8, 10)
+(2, 22)
+(0, 5)
+(13, 24)
+(7, 14)
+(5, 21)
+(2, 7)
+(15, 22)
+(13, 17)
+(5, 24)
+(15, 23)
+(18, 21)
+(1, 2)
+(11, 17)
+(7, 8)
+(5, 13)
+(19, 23)
+(21, 22)
+(14, 15)
+(10, 24)
+(2, 25)
+(12, 18)
+(11, 14)
+(0, 24)
+(17, 21)
+(4, 22)
+(16, 18)
+(6, 10)
+(13, 20)
+(5, 24)
+(8, 17)
+(1, 10)
+(0, 9)
+(13, 19)
+(8, 23)
+(0, 18)
+(7, 9)
+(3, 24)
+(14, 17)
+(8, 19)
+(14, 20)
+(7, 13)
+(16, 17)
+(8, 25)
+(14, 21)
+(16, 22)
+(12, 13)
+(3, 25)
+(16, 21)
+(8, 11)
+(14, 24)
+(2, 22)
+(0, 25)
+(13, 22)
+(11, 19)
+(6, 24)
+(8, 16)
+(8, 22)
+(0, 18)
+(9, 25)
+(6, 15)
+(20, 24)
+(3, 19)
+(12, 19)
+(15, 24)
+(0, 23)
+(17, 23)
+(0, 18)
+(18, 23)
+(1, 23)
+(10, 18)
+(0, 23)
+(4, 18)
+(0, 3)
+(7, 23)
+(5, 18)
+(4, 13)
+(3, 19)
+(0, 1)
+(14, 23)
+(5, 16)
+(13, 24)
+(3, 21)
+(0, 11)
+(16, 18)
+(23, 24)
+(2, 5)
+(6, 11)
+(0, 19)
+(5, 7)
+(12, 16)
+(4, 21)
+(3, 18)
+(2, 3)
+(6, 13)
+(4, 22)
+(1, 7)
+(11, 12)
+(5, 9)
+(0, 1)
+(5, 14)
+(11, 13)
+(9, 20)
+(20, 24)
+(13, 25)
+(7, 9)
+(0, 10)
+(14, 15)
+(14, 16)
+(0, 15)
+(9, 19)
+(21, 25)
+(19, 21)
+(12, 16)
+(9, 17)
+(0, 6)
+(10, 15)
+(6, 25)
+(9, 22)
+(2, 15)
+(0, 24)
+(3, 17)
+(7, 10)
+(12, 14)
+(1, 10)
+(3, 15)
+(8, 9)
+(22, 23)
+(0, 14)
+(11, 24)
+(1, 4)
+(11, 24)
+(0, 14)
+(14, 19)
+(4, 25)
+(18, 24)
+(11, 24)
+(4, 7)
+(6, 19)
+(5, 14)
+(21, 25)
+(14, 16)
+(18, 24)
+(6, 22)
+(2, 5)
+(0, 21)
+(7, 15)
+(17, 19)
+(15, 25)
+(1, 22)
+(0, 16)
+(4, 21)
+(8, 18)
+(13, 14)
+(7, 17)
+(0, 11)
+(9, 16)
+(4, 18)
+(7, 10)
+(3, 8)
+(23, 25)
+(5, 14)
+(9, 18)
+(3, 25)
+(7, 17)
+(8, 10)
+(0, 24)
+(14, 21)
+(10, 23)
+(9, 21)
+(0, 1)
+(3, 5)
+(24, 25)
+(6, 17)
+(4, 24)
+(3, 7)
+(2, 17)
+(21, 25)
+(8, 10)
+(5, 14)
+(7, 23)
+(4, 6)
+(19, 24)
+(12, 21)
+(3, 15)
+(0, 5)
+(15, 24)
+(4, 22)
+(2, 3)
+(5, 14)
+(9, 12)
+(6, 20)
+(11, 23)
+(19, 25)
+(14, 21)
+(3, 13)
+(10, 12)
+(2, 16)
+(1, 4)
+(5, 17)
+(5, 10)
+(21, 22)
+(16, 20)
+(1, 25)
+(3, 8)
+(6, 20)
+(10, 21)
+(5, 25)
+(16, 20)
+(9, 25)
+(13, 25)
+(7, 16)
+(9, 10)
+(4, 20)
+(7, 18)
+(2, 4)
+(13, 24)
+(15, 16)
+(3, 10)
+(4, 10)
+(0, 18)
+(11, 16)
+(7, 14)
+(15, 19)
+(7, 23)
+(8, 18)
+(14, 17)
+(11, 24)
+(0, 3)
+(22, 23)
+(17, 25)
+(6, 7)
+(18, 21)
+(19, 21)
+(6, 15)
+(10, 25)
+(5, 22)
+(7, 12)
+(14, 18)
+(14, 15)
+(0, 5)
+(9, 19)
+(17, 18)
+(16, 25)
+(6, 21)
+(6, 18)
+(0, 7)
+(12, 17)
+(21, 25)
+(14, 22)
+(10, 15)
+(2, 22)
+(12, 13)
+(4, 7)
+(20, 25)
+(10, 17)
+(10, 12)
+(4, 9)
+(3, 13)
+(7, 11)
+(3, 23)
+(11, 13)
+(6, 7)
+(6, 10)
+(22, 23)
+(12, 13)
+(3, 19)
+(5, 7)
+(10, 14)
+(7, 9)
+(6, 24)
+(17, 19)
+(11, 23)
+(5, 21)
+(2, 19)
+(11, 15)
+(6, 25)
+(3, 14)
+(10, 20)
+(19, 23)
+(15, 16)
+(1, 2)
+(4, 6)
+(11, 13)
+(12, 20)
+(6, 25)
+(12, 22)
+(0, 1)
+(2, 18)
+(3, 15)
+(6, 14)
+(1, 18)
+(0, 8)
+(2, 13)
+(15, 17)
+(8, 24)
+(1, 19)
+(13, 23)
+(2, 20)
+(0, 3)
+(5, 6)
+(17, 22)
+(9, 18)
+(4, 15)
+(9, 21)
+(4, 7)
+(13, 22)
+(17, 23)
+(14, 15)
+(5, 8)
+(3, 17)
+(2, 14)
+(17, 23)
+(2, 18)
+(2, 4)
+(3, 17)
+(12, 18)
+(16, 18)
+(3, 21)
+(10, 17)
+(18, 23)
+(10, 14)
+(13, 17)
+(2, 16)
+(0, 2)
+(8, 18)
+(17, 21)
+(10, 15)
+(14, 23)
+(16, 22)
+(21, 25)
+(20, 23)
+(5, 10)
+(2, 11)
+(0, 9)
+(6, 15)
+(6, 7)
+(0, 8)
+(2, 19)
+(3, 20)
+(9, 11)
+(23, 24)
+(19, 25)
+(3, 22)
+(21, 23)
+(1, 11)
+(8, 9)
+(9, 18)
+(5, 25)
+(0, 19)
+(1, 6)
+(0, 8)
+(18, 25)
+(9, 20)
+(8, 16)
+(9, 21)
+(12, 20)
+(0, 4)
+(20, 25)
+(0, 1)
+(15, 16)
+(1, 22)
+(21, 25)
+(20, 23)
+(14, 15)
+(9, 25)
+(13, 14)
+(4, 23)
+(18, 23)
+(17, 25)
+(14, 23)
+(17, 24)
+(2, 18)
+(11, 14)
+(9, 24)
+(16, 23)
+(2, 4)
+(1, 18)
+(1, 7)
+(0, 23)
+(16, 22)
+(16, 25)
+(0, 21)
+(1, 19)
+(7, 23)
+(1, 3)
+(16, 17)
+(0, 18)
+(5, 25)
+(7, 9)
+(4, 19)
+(7, 23)
+(12, 16)
+(19, 20)
+(18, 24)
+(13, 17)
+(1, 15)
+(5, 9)
+(4, 20)
+(13, 25)
+(5, 15)
+(12, 22)
+(18, 21)
+(16, 24)
+(12, 13)
+(3, 25)
+(1, 24)
+(0, 4)
+(14, 22)
+(8, 14)
+(3, 17)
+(6, 24)
+(1, 10)
+(7, 12)
+(4, 18)
+(1, 9)
+(0, 10)
+(21, 24)
+(4, 13)
+(18, 23)
+(6, 11)
+(12, 15)
+(6, 20)
+(18, 22)
+(2, 11)
+(8, 13)
+(0, 21)
+(10, 20)
+(8, 23)
+(11, 21)
+(2, 3)
+(9, 10)
+(3, 24)
+(4, 24)
+(10, 25)
+(9, 17)
+(2, 3)
+(2, 16)
+(17, 24)
+(22, 25)
+(9, 13)
+(3, 7)
+(0, 2)
+(17, 21)
+(9, 16)
+(6, 7)
+(1, 2)
+(10, 21)
+(0, 20)
+(6, 11)
+(0, 8)
+(21, 24)
+(6, 25)
+(1, 8)
+(0, 13)
+(0, 2)
+(11, 13)
+(1, 3)
+(8, 20)
+(3, 21)
+(5, 8)
+(13, 22)
+(7, 20)
+(8, 23)
+(13, 25)
+(5, 20)
+(13, 18)
+(23, 24)
+(5, 22)
+(19, 25)
+(3, 8)
+(10, 22)
+(3, 9)
+(12, 25)
+(6, 18)
+(4, 8)
+(17, 23)
+(8, 11)
+(10, 20)
+(2, 25)
+(21, 23)
+(7, 21)
+(2, 12)
+(4, 8)
+(7, 25)
+(9, 21)
+(8, 17)
+(8, 15)
+(14, 21)
+(17, 24)
+(7, 16)
+(9, 19)
+(11, 16)
+(19, 25)
+(5, 9)
+(3, 17)
+(20, 21)
+(7, 25)
+(11, 18)
+(20, 23)
+(14, 21)
+(2, 9)
+(13, 19)
+(6, 11)
+(15, 21)
+(17, 25)
+(4, 18)
+(16, 23)
+(19, 20)
+(10, 19)
+(12, 17)
+(0, 20)
+(8, 11)
+(3, 16)
+(15, 25)
+(0, 9)
+(14, 19)
+(2, 15)
+(5, 10)
+(17, 22)
+(3, 21)
+(7, 19)
+(10, 23)
+(2, 6)
+(6, 25)
+(7, 24)
+(2, 4)
+(0, 19)
+(18, 23)
+(23, 24)
+(6, 21)
+(0, 15)
+(2, 5)
+(4, 11)
+(9, 19)
+(0, 20)
+(2, 10)
+(19, 25)
+(22, 24)
+(3, 11)
+(8, 9)
+(5, 17)
+(13, 24)
+(17, 23)
+(14, 20)
+(0, 16)
+(3, 4)
+(14, 22)
+(3, 9)
+(0, 7)
+(12, 20)
+(4, 21)
+(2, 7)
+(6, 14)
+(16, 20)
+(0, 15)
+(22, 23)
+(9, 11)
+(6, 8)
+(0, 25)
+(7, 18)
+(3, 11)
+(9, 13)
+(16, 24)
+(15, 20)
+(1, 24)
+(5, 15)
+(11, 20)
+(19, 25)
+(4, 6)
+(14, 19)
+(4, 21)
+(2, 20)
+(11, 18)
+(8, 15)
+(5, 9)
+(17, 21)
+(15, 20)
+(2, 13)
+(4, 12)
+(10, 18)
+(0, 8)
+(0, 11)
+(2, 14)
+(20, 25)
+(3, 15)
+(10, 24)
+(16, 17)
+(13, 23)
+(21, 25)
+(0, 4)
+(5, 23)
+(14, 24)
+(15, 18)
+(12, 20)
+(3, 20)
+(8, 21)
+(13, 24)
+(12, 25)
+(15, 19)
+(8, 10)
+(16, 21)
+(15, 25)
+(3, 19)
+(1, 13)
+(14, 20)
+(10, 20)
+(6, 21)
+(1, 3)
+(7, 19)
+(13, 17)
+(17, 20)
+(9, 21)
+(7, 22)
+(2, 6)
+(6, 24)
+(18, 22)
+(7, 8)
+(2, 11)
+(10, 17)
+(8, 20)
+(17, 24)
+(6, 16)
+(17, 21)
+(16, 23)
+(2, 20)
+(15, 21)
+(10, 23)
+(16, 22)
+(7, 17)
+(6, 20)
+(6, 9)
+(15, 16)
+(13, 20)
+(8, 17)
+(14, 23)
+(7, 25)
+(6, 15)
+(12, 23)
+(10, 14)
+(11, 13)
+(8, 16)
+(19, 25)
+(5, 23)
+(12, 18)
+(4, 15)
+(14, 17)
+(11, 13)
+(7, 10)
+(13, 20)
+(4, 5)
+(6, 23)
+(7, 11)
+(2, 12)
+(1, 18)
+(15, 18)
+(22, 23)
+(4, 13)
+(3, 6)
+(6, 9)
+(8, 23)
+(22, 25)
+(9, 10)
+(7, 23)
+(10, 21)
+(8, 23)
+(7, 23)
+(0, 10)
+(3, 8)
+(0, 13)
+(20, 23)
+(6, 7)
+(3, 11)
+(10, 16)
+(7, 24)
+(10, 15)
+(12, 23)
+(9, 11)
+(6, 21)
+(7, 22)
+(19, 24)
+(6, 16)
+(1, 10)
+(0, 21)
+(8, 10)
+(3, 22)
+(1, 15)
+(18, 21)
+(5, 19)
+(20, 24)
+(20, 23)
+(3, 18)
+(2, 15)
+(9, 10)
+(1, 11)
+(14, 24)
+(0, 22)
+(12, 24)
+(4, 20)
+(23, 25)
+(17, 18)
+(11, 25)
+(4, 16)
+(2, 25)
+(13, 16)
+(9, 16)
+(6, 13)
+(2, 20)
+(6, 18)
+(9, 12)
+(4, 16)
+(13, 17)
+(0, 18)
+(7, 16)
+(5, 12)
+(9, 16)
+(5, 23)
+(0, 6)
+(8, 12)
+(0, 11)
+(12, 17)
+(8, 12)
+(17, 23)
+(2, 8)
+(5, 12)
+(20, 23)
+(8, 24)
+(4, 5)
+(12, 17)
+(20, 25)
+(17, 18)
+(12, 22)
+(8, 21)
+(1, 20)
+(12, 20)
+(11, 17)
+(1, 7)
+(2, 18)
+(16, 22)
+(5, 8)
+(13, 18)
+(1, 21)
+(22, 23)
+(7, 17)
+(8, 10)
+(18, 25)
+(13, 14)
+(6, 21)
+(9, 22)
+(13, 24)
+(11, 18)
+(4, 14)
+(9, 25)
+(0, 24)
+(11, 15)
+(14, 23)
+(9, 16)
+(12, 13)
+(4, 14)
+(11, 12)
+(7, 16)
+(15, 18)
+(16, 24)
+(4, 15)
+(5, 11)
+(14, 23)
+(12, 13)
+(14, 23)
+(15, 18)
+(0, 12)
+(5, 10)
+(4, 11)
+(16, 17)
+(7, 11)
+(5, 25)
+(2, 14)
+(16, 24)
+(19, 23)
+(0, 10)
+(4, 7)
+(13, 14)
+(0, 1)
+(3, 23)
+(19, 25)
+(1, 21)
+(18, 19)
+(14, 22)
+(0, 1)
+(2, 14)
+(12, 22)
+(13, 14)
+(2, 24)
+(1, 21)
+(17, 22)
+(9, 24)
+(4, 17)
+(2, 10)
+(8, 22)
+(3, 14)
+(10, 20)
+(19, 22)
+(2, 7)
+(16, 24)
+(13, 14)
+(4, 23)
+(4, 8)
+(10, 14)
+(5, 19)
+(12, 13)
+(15, 22)
+(6, 7)
+(6, 23)
+(0, 12)
+(19, 20)
+(8, 11)
+(15, 18)
+(3, 5)
+(11, 24)
+(5, 20)
+(8, 23)
+(1, 3)
+(6, 10)
+(3, 22)
+(1, 2)
+(7, 8)
+(0, 20)
+(10, 21)
+(3, 14)
+(15, 20)
+(18, 22)
+(1, 5)
+(2, 23)
+(12, 18)
+(1, 13)
+(11, 20)
+(5, 15)
+(11, 17)
+(0, 13)
+(5, 16)
+(4, 15)
+(10, 17)
+(16, 24)
+(11, 20)
+(5, 15)
+(10, 14)
+(8, 17)
+(11, 25)
+(5, 22)
+(3, 11)
+(17, 25)
+(2, 3)
+(11, 21)
+(4, 17)
+(11, 19)
+(13, 21)
+(3, 9)
+(2, 10)
+(1, 11)
+(18, 19)
+(7, 21)
+(8, 19)
+(18, 19)
+(12, 19)
+(13, 19)
+(12, 24)
+(19, 25)
+(13, 16)
+(20, 24)
+(3, 12)
+(16, 18)
+(15, 25)
+(17, 24)
+(15, 19)
+(12, 18)
+(22, 25)
+(11, 15)
+(2, 25)
+(0, 12)
+(19, 23)
+(4, 18)
+(18, 22)
+(4, 10)
+(6, 15)
+(0, 23)
+(9, 12)
+(11, 17)
+(2, 19)
+(1, 15)
+(6, 7)
+(9, 14)
+(8, 18)
+(12, 18)
+(3, 15)
+(0, 1)
+(6, 20)
+(3, 11)
+(1, 10)
+(6, 24)
+(15, 22)
+(6, 16)
+(1, 19)
+(4, 15)
+(24, 25)
+(15, 22)
+(5, 24)
+(5, 7)
+(2, 24)
+(4, 5)
+(17, 24)
+(2, 10)
+(7, 8)
+(1, 24)
+(4, 17)
+(8, 23)
+(7, 14)
+(9, 24)
+(4, 5)
+(7, 14)
+(11, 17)
+(7, 15)
+(14, 23)
+(9, 13)
+(0, 11)
+(15, 22)
+(3, 9)
+(0, 18)
+(8, 11)
+(13, 21)
+(6, 14)
+(9, 12)
+(10, 14)
+(3, 22)
+(7, 15)
+(3, 7)
+(17, 22)
+(1, 12)
+(5, 12)
+(2, 17)
+(3, 4)
+(15, 22)
+(1, 5)
+(19, 22)
+(10, 15)
+(7, 12)
+(10, 17)
+(15, 24)
+(12, 14)
+(1, 6)
+(9, 17)
+(1, 16)
+(15, 21)
+(8, 10)
+(9, 13)
+(17, 21)
+(1, 19)
+(8, 12)
+(19, 23)
+(9, 24)
+(8, 25)
+(13, 15)
+(3, 17)
+(4, 17)
+(0, 23)
+(8, 20)
+(16, 24)
+(2, 9)
+(3, 11)
+(4, 21)
+(10, 24)
+(9, 18)
+(13, 20)
+(0, 12)
+(6, 23)
+(16, 24)
+(0, 15)
+(11, 23)
+(6, 17)
+(5, 6)
+(14, 16)
+(9, 23)
+(4, 11)
+(2, 24)
+(8, 16)
+(2, 19)
+(3, 23)
+(1, 14)
+(10, 24)
+(6, 12)
+(6, 23)
+(2, 22)
+(1, 4)
+(14, 16)
+(5, 19)
+(15, 19)
+(4, 24)
+(2, 11)
+(21, 24)
+(2, 25)
+(9, 19)
+(7, 11)
+(5, 15)
+(5, 6)
+(7, 18)
+(2, 20)
+(14, 18)
+(8, 20)
+(12, 14)
+(20, 22)
+(8, 15)
+(8, 18)
+(13, 15)
+(14, 23)
+(10, 20)
+(8, 13)
+(20, 25)
+(10, 17)
+(8, 12)
+(11, 17)
+(10, 24)
+(13, 14)
+(7, 11)
+(23, 24)
+(10, 21)
+(3, 17)
+(3, 5)
+(6, 24)
+(1, 10)
+(11, 22)
+(18, 21)
+(4, 17)
+(8, 17)
+(10, 16)
+(5, 18)
+(19, 22)
+(6, 9)
+(0, 10)
+(14, 22)
+(12, 18)
+(2, 8)
+(9, 15)
+(4, 15)
+(14, 21)
+(0, 11)
+(20, 22)
+(3, 9)
+(10, 13)
+(17, 22)
+(5, 9)
+(11, 13)
+(12, 20)
+(3, 16)
+(15, 25)
+(1, 4)
+(12, 18)
+(11, 14)
+(4, 7)
+(16, 21)
+(1, 23)
+(1, 22)
+(6, 16)
+(11, 13)
+(7, 19)
+(2, 23)
+(3, 18)
+(12, 20)
+(12, 15)
+(1, 17)
+(5, 22)
+(3, 20)
+(9, 18)
+(0, 7)
+(7, 10)
+(1, 23)
+(3, 19)
+(0, 15)
+(9, 14)
+(4, 7)
+(19, 23)
+(3, 6)
+(4, 24)
+(20, 23)
+(2, 7)
+(2, 11)
+(21, 24)
+(7, 22)
+(16, 23)
+(17, 21)
+(8, 24)
+(11, 18)
+(13, 18)
+(7, 21)
+(14, 17)
+(0, 21)
+(10, 17)
+(6, 18)
+(14, 19)
+(5, 6)
+(13, 18)
+(21, 23)
+(10, 24)
+(7, 17)
+(3, 10)
+(18, 22)
+(5, 9)
+(1, 5)
+(0, 10)
+(9, 12)
+(14, 22)
+(9, 18)
+(1, 22)
+(12, 15)
+(12, 13)
+(2, 18)
+(14, 15)
+(9, 20)
+(12, 16)
+(1, 2)
+(18, 24)
+(8, 20)
+(4, 9)
+(14, 22)
+(13, 25)
+(9, 13)
+(14, 21)
+(6, 22)
+(16, 17)
+(5, 8)
+(7, 12)
+(0, 5)
+(7, 15)
+(22, 25)
+(6, 12)
+(17, 18)
+(14, 20)
+(14, 22)
+(5, 8)
+(6, 13)
+(4, 12)
+(0, 9)
+(9, 10)
+(5, 21)
+(1, 13)
+(0, 23)
+(3, 22)
+(8, 17)
+(20, 23)
+(5, 12)
+(3, 7)
+(11, 21)
+(12, 25)
+(3, 16)
+(0, 5)
+(11, 24)
+(18, 21)
+(5, 24)
+(11, 25)
+(18, 22)
+(17, 21)
+(8, 12)
+(7, 25)
+(16, 21)
+(18, 19)
+(4, 12)
+(11, 15)
+(8, 20)
+(7, 11)
+(8, 20)
+(13, 18)
+(12, 15)
+(1, 21)
+(4, 6)
+(8, 12)
+(19, 20)
+(20, 22)
+(6, 12)
+(8, 24)
+(19, 20)
+(11, 22)
+(3, 24)
+(15, 24)
+(17, 24)
+(15, 16)
+(23, 24)
+(8, 16)
+(3, 17)
+(1, 15)
+(5, 16)
+(1, 7)
+(2, 17)
+(3, 22)
+(8, 15)
+(10, 16)
+(0, 5)
+(0, 4)
+(8, 16)
+(5, 25)
+(5, 15)
+(1, 8)
+(13, 25)
+(14, 16)
+(13, 17)
+(4, 14)
+(0, 16)
+(18, 25)
+(1, 7)
+(1, 2)
+(0, 25)
+(14, 18)
+(15, 16)
+(17, 22)
+(5, 25)
+(14, 18)
+(2, 10)
+(11, 18)
+(10, 25)
+(2, 19)
+(19, 22)
+(3, 18)
+(2, 13)
+(18, 19)
+(3, 21)
+(11, 21)
+(3, 9)
+(11, 15)
+(20, 21)
+(9, 23)
+(9, 22)
+(10, 11)
+(5, 15)
+(18, 21)
+(0, 20)
+(3, 9)
+(4, 10)
+(22, 24)
+(5, 17)
+(16, 24)
+(2, 3)
+(5, 15)
+(12, 22)
+(13, 22)
+(3, 12)
+(15, 18)
+(2, 7)
+(16, 17)
+(13, 16)
+(1, 15)
+(6, 17)
+(22, 24)
+(18, 19)
+(4, 18)
+(13, 19)
+(1, 7)
+(10, 17)
+(6, 10)
+(3, 17)
+(4, 15)
+(8, 15)
+(10, 20)
+(4, 9)
+(6, 8)
+(9, 11)
+(3, 4)
+(8, 20)
+(11, 12)
+(3, 7)
+(0, 4)
+(4, 5)
+(12, 25)
+(7, 14)
+(8, 9)
+(0, 21)
+(11, 25)
+(1, 9)
+(10, 14)
+(6, 21)
+(4, 12)
+(2, 8)
+(0, 16)
+(7, 18)
+(12, 18)
+(10, 19)
+(6, 16)
+(11, 13)
+(5, 7)
+(14, 15)
+(16, 23)
+(7, 9)
+(6, 19)
+(3, 11)
+(13, 20)
+(6, 14)
+(13, 23)
+(16, 17)
+(4, 14)
+(3, 13)
+(5, 6)
+(2, 17)
+(16, 22)
+(10, 23)
+(1, 13)
+(8, 16)
+(2, 18)
+(16, 21)
+(8, 12)
+(1, 11)
+(7, 13)
+(5, 21)
+(11, 17)
+(3, 13)
+(1, 20)
+(0, 8)
+(16, 22)
+(12, 24)
+(0, 23)
+(10, 12)
+(3, 25)
+(18, 24)
+(1, 22)
+(14, 24)
+(9, 12)
+(6, 23)
+(10, 15)
+(5, 22)
+(11, 15)
+(7, 14)
+(0, 24)
+(2, 23)
+(12, 13)
+(13, 24)
+(5, 15)
+(7, 19)
+(1, 11)
+(14, 18)
+(22, 23)
+(7, 16)
+(15, 21)
+(5, 14)
+(8, 18)
+(10, 24)
+(15, 23)
+(16, 17)
+(3, 8)
+(10, 25)
+(22, 24)
+(0, 14)
+(1, 18)
+(6, 16)
+(5, 8)
+(15, 18)
+(1, 13)
+(17, 20)
+(8, 23)
+(14, 16)
+(5, 19)
+(6, 7)
+(13, 24)
+(0, 17)
+(14, 21)
+(4, 23)
+(3, 19)
+(0, 17)
+(7, 22)
+(12, 21)
+(0, 16)
+(17, 18)
+(6, 22)
+(9, 23)
+(4, 14)
+(18, 19)
+(0, 8)
+(5, 16)
+(2, 4)
+(1, 23)
+(14, 24)
+(9, 22)
+(13, 24)
+(0, 2)
+(10, 16)
+(9, 17)
+(4, 11)
+(5, 12)
+(14, 24)
+(7, 12)
+(4, 22)
+(16, 18)
+(1, 5)
+(8, 13)
+(1, 14)
+(9, 18)
+(0, 8)
+(5, 24)
+(9, 16)
+(3, 8)
+(1, 7)
+(5, 21)
+(6, 21)
+(3, 20)
+(5, 23)
+(14, 21)
+(6, 7)
+(13, 23)
+(5, 25)
+(5, 15)
+(2, 14)
+(11, 25)
+(10, 21)
+(7, 8)
+(0, 15)
+(14, 24)
+(1, 2)
+(5, 19)
+(7, 8)
+(6, 25)
+(4, 19)
+(2, 18)
+(1, 11)
+(15, 23)
+(5, 22)
+(9, 14)
+(2, 14)
+(19, 25)
+(4, 12)
+(10, 15)
+(5, 7)
+(1, 12)
+(0, 25)
+(5, 18)
+(15, 22)
+(4, 20)
+(7, 8)
+(2, 11)
+(15, 25)
+(1, 13)
+(5, 24)
+(8, 21)
+(11, 13)
+(1, 23)
+(17, 21)
+(8, 9)
+(11, 16)
+(6, 23)
+(2, 17)
+(1, 21)
+(9, 10)
+(13, 24)
+(3, 6)
+(4, 9)
+(8, 23)
+(14, 21)
+(3, 24)
+(8, 19)
+(4, 12)
+(10, 14)
+(9, 22)
+(6, 23)
+(11, 19)
+(3, 21)
+(8, 25)
+(7, 22)
+(11, 23)
+(6, 8)
+(7, 19)
+(3, 24)
+(8, 17)
+(3, 21)
+(0, 11)
+(6, 19)
+(3, 24)
+(9, 21)
+(3, 5)
+(13, 24)
+(20, 21)
+(5, 13)
+(15, 24)
+(20, 22)
+(1, 5)
+(13, 18)
+(2, 24)
+(9, 22)
+(4, 22)
+(5, 20)
+(3, 9)
+(5, 23)
+(4, 11)
+(3, 25)
+(0, 25)
+(3, 15)
+(4, 9)
+(7, 25)
+(9, 10)
+(0, 8)
+(21, 25)
+(1, 9)
+(1, 4)
+(3, 9)
+(8, 25)
+(12, 21)
+(1, 5)
+(19, 25)
+(20, 21)
+(4, 17)
+(8, 15)
+(15, 25)
+(14, 21)
+(10, 20)
+(10, 16)
+(9, 21)
+(2, 20)
+(3, 20)
+(2, 7)
+(2, 13)
+(7, 22)
+(3, 12)
+(14, 22)
+(12, 18)
+(0, 3)
+(0, 5)
+(3, 13)
+(2, 22)
+(12, 20)
+(2, 21)
+(13, 14)
+(7, 12)
+(17, 20)
+(15, 20)
+(10, 17)
+(7, 16)
+(1, 14)
+(12, 25)
+(1, 7)
+(2, 16)
+(3, 10)
+(8, 15)
+(9, 20)
+(7, 21)
+(4, 10)
+(6, 8)
+(9, 19)
+(15, 23)
+(3, 11)
+(17, 23)
+(3, 25)
+(9, 24)
+(8, 13)
+(13, 21)
+(12, 17)
+(0, 25)
+(5, 24)
+(3, 11)
+(6, 23)
+(4, 24)
+(12, 20)
+(1, 5)
+(16, 25)
+(10, 17)
+(2, 10)
+(8, 16)
+(4, 9)
+(19, 24)
+(20, 22)
+(0, 12)
+(17, 24)
+(7, 9)
+(6, 8)
+(2, 15)
+(18, 20)
+(5, 19)
+(11, 18)
+(15, 23)
+(7, 14)
+(9, 21)
+(2, 4)
+(5, 25)
+(17, 19)
+(10, 19)
+(1, 25)
+(5, 16)
+(11, 20)
+(5, 13)
+(10, 17)
+(18, 25)
+(13, 14)
+(5, 23)
+(17, 22)
+(21, 22)
+(3, 5)
+(7, 23)
+(14, 19)
+(15, 23)
+(8, 19)
+(7, 12)
+(4, 15)
+(8, 24)
+(12, 14)
+(9, 19)
+(15, 17)
+(19, 25)
+(2, 14)
+(12, 21)
+(18, 24)
+(5, 24)
+(12, 18)
+(2, 16)
+(10, 21)
+(6, 25)
+(4, 14)
+(9, 21)
+(0, 4)
+(10, 17)
+(2, 15)
+(22, 25)
+(2, 23)
+(4, 7)
+(8, 25)
+(1, 15)
+(0, 18)
+(9, 19)
+(7, 13)
+(9, 16)
+(0, 21)
+(1, 11)
+(7, 8)
+(11, 25)
+(13, 21)
+(8, 20)
+(0, 21)
+(6, 7)
+(13, 21)
+(4, 20)
+(8, 24)
+(6, 23)
+(1, 13)
+(9, 20)
+(21, 25)
+(4, 19)
+(3, 24)
+(9, 16)
+(1, 7)
+(13, 19)
+(15, 24)
+(11, 21)
+(3, 12)
+(5, 25)
+(1, 17)
+(19, 20)
+(15, 25)
+(3, 16)
+(0, 9)
+(6, 13)
+(13, 15)
+(7, 9)
+(19, 23)
+(8, 17)
+(1, 24)
+(2, 19)
+(8, 16)
+(7, 12)
+(1, 16)
+(7, 9)
+(8, 10)
+(16, 23)
+(7, 12)
+(7, 20)
+(12, 21)
+(4, 20)
+(9, 12)
+(13, 21)
+(12, 22)
+(4, 21)
+(9, 13)
+(9, 17)
+(12, 14)
+(6, 22)
+(4, 16)
+(22, 24)
+(14, 21)
+(5, 17)
+(2, 12)
+(6, 19)
+(7, 24)
+(11, 14)
+(0, 12)
+(6, 13)
+(21, 22)
+(4, 6)
+(13, 25)
+(20, 22)
+(17, 24)
+(0, 21)
+(19, 22)
+(3, 24)
+(0, 2)
+(6, 22)
+(0, 18)
+(2, 5)
+(8, 19)
+(5, 15)
+(11, 18)
+(1, 11)
+(0, 5)
+(2, 15)
+(7, 11)
+(1, 25)
+(5, 18)
+(7, 9)
+(18, 21)
+(1, 3)
+(3, 25)
+(7, 15)
+(19, 21)
+(9, 11)
+(11, 14)
+(9, 18)
+(2, 25)
+(5, 25)
+(9, 14)
+(2, 6)
+(9, 15)
+(2, 22)
+(24, 25)
+(12, 24)
+(21, 25)
+(6, 22)
+(8, 24)
+(9, 12)
+(13, 21)
+(2, 25)
+(11, 22)
+(11, 16)
+(5, 25)
+(13, 17)
+(8, 10)
+(2, 9)
+(1, 21)
+(23, 24)
+(12, 20)
+(13, 15)
+(9, 14)
+(17, 25)
+(19, 24)
+(1, 7)
+(11, 24)
+(1, 15)
+(0, 19)
+(17, 22)
+(1, 11)
+(22, 25)
+(7, 19)
+(0, 3)
+(13, 25)
+(4, 19)
+(7, 15)
+(5, 11)
+(0, 23)
+(5, 8)
+(3, 11)
+(2, 19)
+(4, 16)
+(7, 18)
+(3, 9)
+(4, 25)
+(0, 11)
+(19, 23)
+(10, 23)
+(4, 13)
+(19, 20)
+(11, 16)
+(9, 15)
+(2, 25)
+(14, 20)
+(21, 23)
+(6, 16)
+(10, 12)
+(10, 16)
+(14, 23)
+(6, 22)
+(17, 20)
+(16, 24)
+(11, 22)
+(7, 23)
+(14, 18)
+(6, 15)
+(1, 10)
+(4, 11)
+(16, 22)
+(0, 1)
+(10, 14)
+(6, 19)
+(15, 16)
+(19, 25)
+(1, 5)
+(12, 22)
+(2, 10)
+(7, 12)
+(6, 15)
+(3, 25)
+(10, 21)
+(22, 25)
+(10, 20)
+(2, 21)
+(2, 23)
+(17, 21)
+(10, 18)
+(8, 25)
+(3, 22)
+(0, 25)
+(9, 22)
+(2, 12)
+(8, 24)
+(0, 14)
+(5, 8)
+(2, 11)
+(9, 21)
+(4, 24)
+(2, 3)
+(7, 24)
+(1, 14)
+(0, 19)
+(4, 24)
+(2, 14)
+(3, 19)
+(7, 16)
+(13, 24)
+(7, 10)
+(4, 22)
+(22, 23)
+(13, 21)
+(4, 9)
+(10, 11)
+(13, 19)
+(20, 22)
+(2, 11)
+(5, 23)
+(6, 10)
+(11, 16)
+(13, 25)
+(2, 18)
+(10, 24)
+(5, 17)
+(21, 22)
+(14, 16)
+(5, 19)
+(6, 11)
+(9, 21)
+(5, 23)
+(6, 15)
+(12, 21)
+(14, 17)
+(19, 25)
+(8, 16)
+(14, 23)
+(7, 8)
+(5, 16)
+(2, 15)
+(3, 17)
+(0, 3)
+(1, 8)
+(17, 19)
+(7, 25)
+(19, 24)
+(7, 22)
+(1, 15)
+(16, 24)
+(7, 20)
+(8, 15)
+(5, 19)
+(8, 13)
+(7, 23)
+(10, 24)
+(20, 22)
+(8, 25)
+(2, 20)
+(7, 18)
+(7, 23)
+(1, 18)
+(1, 10)
+(4, 7)
+(22, 23)
+(11, 23)
+(7, 18)
+(4, 25)
+(8, 22)
+(9, 18)
+(8, 10)
+(21, 22)
+(5, 7)
+(6, 11)
+(3, 7)
+(11, 15)
+(6, 13)
+(13, 24)
+(11, 14)
+(4, 15)
+(7, 20)
+(6, 16)
+(0, 14)
+(6, 23)
+(10, 16)
+(2, 24)
+(6, 8)
+(0, 17)
+(14, 25)
+(11, 25)
+(0, 20)
+(14, 15)
+(19, 20)
+(3, 25)
+(11, 21)
+(12, 14)
+(14, 23)
+(3, 12)
+(19, 24)
+(0, 25)
+(2, 12)
+(3, 22)
+(7, 12)
+(3, 24)
+(1, 22)
+(1, 17)
+(0, 22)
+(7, 20)
+(8, 24)
+(12, 22)
+(11, 20)
+(8, 18)
+(7, 10)
+(0, 13)
+(21, 22)
+(16, 18)
+(11, 24)
+(0, 20)
+(10, 19)
+(2, 13)
+(10, 15)
+(12, 19)
+(4, 22)
+(21, 23)
+(9, 20)
+(1, 13)
+(3, 16)
+(6, 10)
+(17, 20)
+(16, 23)
+(1, 24)
+(11, 15)
+(3, 19)
+(22, 25)
+(5, 17)
+(21, 25)
+(1, 11)
+(7, 22)
+(8, 24)
+(2, 24)
+(6, 22)
+(9, 21)
+(7, 8)
+(2, 18)
+(0, 22)
+(15, 21)
+(7, 25)
+(2, 20)
+(0, 19)
+(22, 23)
+(11, 15)
+(18, 19)
+(2, 10)
+(3, 20)
+(16, 23)
+(17, 22)
+(3, 25)
+(6, 16)
+(2, 7)
+(9, 10)
+(4, 25)
+(6, 23)
+(7, 8)
+(9, 15)
+(1, 16)
+(5, 8)
+(9, 17)
+(3, 7)
+(14, 23)
+(13, 25)
+(6, 21)
+(9, 14)
+(0, 6)
+(5, 12)
+(8, 10)
+(4, 13)
+(14, 24)
+(8, 16)
+(4, 25)
+(10, 17)
+(13, 20)
+(3, 4)
+(20, 22)
+(17, 21)
+(8, 16)
+(9, 24)
+(3, 7)
+(12, 24)
+(4, 21)
+(9, 18)
+(14, 21)
+(10, 12)
+(4, 23)
+(12, 19)
+(7, 21)
+(2, 23)
+(4, 17)
+(1, 14)
+(7, 20)
+(9, 17)
+(16, 19)
+(2, 14)
+(1, 24)
+(14, 25)
+(15, 24)
+(4, 19)
+(1, 23)
+(16, 20)
+(17, 23)
+(19, 20)
+(8, 24)
+(12, 15)
+(1, 3)
+(2, 15)
+(0, 1)
+(6, 8)
+(3, 11)
+(19, 24)
+(7, 23)
+(12, 13)
+(6, 18)
+(8, 20)
+(22, 24)
+(4, 13)
+(1, 13)
+(21, 24)
+(2, 20)
+(8, 15)
+(3, 18)
+(12, 22)
+(2, 10)
+(1, 8)
+(6, 22)
+(0, 3)
+(16, 20)
+(7, 15)
+(1, 7)
+(18, 22)
+(5, 10)
+(6, 12)
+(3, 13)
+(9, 20)
+(10, 15)
+(8, 22)
+(2, 12)
+(6, 16)
+(13, 21)
+(9, 22)
+(0, 12)
+(4, 13)
+(8, 18)
+(2, 5)
+(6, 22)
+(0, 7)
+(6, 25)
+(2, 22)
+(4, 7)
+(0, 11)
+(2, 16)
+(12, 22)
+(11, 14)
+(0, 4)
+(5, 12)
+(2, 17)
+(20, 22)
+(8, 12)
+(5, 18)
+(2, 15)
+(8, 24)
+(16, 18)
+(12, 23)
+(10, 12)
+(9, 23)
+(8, 25)
+(6, 18)
+(20, 23)
+(10, 14)
+(4, 8)
+(9, 18)
+(2, 8)
+(3, 23)
+(16, 20)
+(1, 9)
+(0, 10)
+(5, 14)
+(18, 25)
+(6, 8)
+(18, 24)
+(22, 25)
+(1, 13)
+(6, 22)
+(2, 8)
+(21, 24)
+(1, 14)
+(9, 21)
+(6, 19)
+(1, 23)
+(8, 25)
+(17, 22)
+(2, 3)
+(5, 24)
+(8, 20)
+(3, 24)
+(6, 18)
+(2, 4)
+(12, 21)
+(6, 17)
+(2, 18)
+(9, 21)
+(4, 13)
+(21, 23)
+(5, 17)
+(2, 16)
+(18, 25)
+(7, 9)
+(6, 11)
+(11, 23)
+(0, 2)
+(8, 21)
+(1, 17)
+(15, 25)
+(11, 20)
+(6, 17)
+(20, 22)
+(6, 14)
+(13, 17)
+(20, 21)
+(12, 17)
+(2, 20)
+(10, 17)
+(12, 22)
+(2, 16)
+(0, 22)
+(11, 17)
+(1, 22)
+(17, 23)
+(0, 5)
+(11, 13)
+(13, 24)
+(21, 23)
+(5, 22)
+(1, 8)
+(11, 19)
+(11, 25)
+(3, 19)
+(2, 23)
+(14, 24)
+(3, 17)
+(6, 11)
+(12, 24)
+(18, 25)
+(18, 23)
+(8, 25)
+(6, 12)
+(3, 15)
+(17, 21)
+(10, 12)
+(13, 25)
+(6, 8)
+(12, 25)
+(8, 22)
+(6, 14)
+(13, 20)
+(7, 10)
+(5, 12)
+(8, 25)
+(0, 7)
+(2, 14)
+(10, 22)
+(9, 13)
+(2, 15)
+(4, 13)
+(12, 16)
+(9, 17)
+(3, 5)
+(1, 12)
+(0, 4)
+(15, 23)
+(11, 16)
+(9, 25)
+(13, 21)
+(16, 18)
+(19, 21)
+(2, 9)
+(14, 25)
+(1, 12)
+(1, 13)
+(12, 19)
+(11, 21)
+(7, 12)
+(1, 4)
+(8, 13)
+(16, 21)
+(11, 14)
+(8, 20)
+(1, 19)
+(16, 18)
+(13, 24)
+(4, 8)
+(15, 20)
+(1, 21)
+(12, 13)
+(9, 24)
+(9, 15)
+(2, 13)
+(16, 24)
+(4, 7)
+(6, 8)
+(6, 12)
+(2, 18)
+(7, 14)
+(2, 6)
+(13, 18)
+(12, 17)
+(7, 20)
+(14, 19)
+(10, 14)
+(6, 20)
+(13, 21)
+(2, 8)
+(9, 12)
+(17, 22)
+(4, 18)
+(19, 24)
+(7, 14)
+(5, 6)
+(18, 23)
+(19, 20)
+(1, 8)
+(12, 17)
+(22, 23)
+(0, 5)
+(1, 16)
+(9, 17)
+(8, 21)
+(2, 18)
+(7, 19)
+(8, 25)
+(2, 10)
+(16, 24)
+(7, 14)
+(13, 22)
+(2, 15)
+(10, 18)
+(16, 20)
+(23, 24)
+(10, 25)
+(5, 15)
+(1, 16)
+(20, 23)
+(1, 8)
+(24, 25)
+(5, 6)
+(20, 21)
+(22, 24)
+(4, 21)
+(2, 6)
+(1, 25)
+(8, 10)
+(16, 22)
+(2, 18)
+(1, 15)
+(10, 20)
+(21, 24)
+(6, 14)
+(1, 23)
+(15, 21)
+(7, 16)
+(17, 20)
+(0, 10)
+(10, 24)
+(11, 20)
+(23, 25)
+(13, 17)
+(0, 9)
+(9, 25)
+(8, 24)
+(19, 23)
+(13, 18)
+(0, 14)
+(1, 11)
+(1, 17)
+(13, 23)
+(9, 11)
+(14, 16)
+(6, 18)
+(10, 24)
+(8, 24)
+(11, 15)
+(6, 19)
+(5, 23)
+(1, 22)
+(9, 16)
+(4, 17)
+(22, 24)
+(8, 25)
+(4, 14)
+(17, 21)
+(0, 9)
+(8, 19)
+(13, 25)
+(2, 4)
+(0, 3)
+(17, 23)
+(13, 16)
+(4, 23)
+(15, 16)
+(9, 13)
+(3, 4)
+(4, 23)
+(12, 15)
+(13, 18)
+(8, 13)
+(7, 15)
+(3, 4)
+(17, 18)
+(5, 23)
+(12, 24)
+(12, 15)
+(3, 14)
+(20, 24)
+(10, 14)
+(9, 15)
+(13, 24)
+(3, 7)
+(12, 25)
+(5, 20)
+(0, 3)
+(12, 23)
+(5, 21)
+(4, 20)
+(11, 24)
+(8, 15)
+(7, 18)
+(6, 21)
+(16, 18)
+(5, 25)
+(7, 24)
+(4, 17)
+(2, 6)
+(21, 24)
+(7, 11)
+(19, 25)
+(12, 21)
+(2, 25)
+(19, 23)
+(3, 25)
+(8, 21)
+(13, 19)
+(15, 23)
+(8, 16)
+(2, 19)
+(9, 13)
+(4, 23)
+(2, 4)
+(6, 13)
+(17, 19)
+(2, 25)
+(3, 13)
+(4, 23)
+(17, 20)
+(6, 24)
+(19, 25)
+(15, 20)
+(18, 23)
+(3, 5)
+(9, 13)
+(2, 10)
+(12, 23)
+(13, 21)
+(0, 9)
+(5, 24)
+(18, 22)
+(10, 20)
+(4, 24)
+(12, 15)
+(19, 21)
+(0, 14)
+(7, 9)
+(10, 16)
+(0, 16)
+(15, 25)
+(8, 12)
+(1, 14)
+(20, 21)
+(4, 22)
+(7, 23)
+(8, 11)
+(14, 15)
+(18, 25)
+(19, 21)
+(15, 19)
+(8, 14)
+(9, 11)
+(5, 15)
+(14, 18)
+(2, 9)
+(17, 19)
+(11, 23)
+(0, 15)
+(11, 21)
+(5, 18)
+(9, 16)
+(1, 2)
+(7, 14)
+(1, 23)
+(18, 19)
+(3, 21)
+(4, 15)
+(2, 14)
+(7, 12)
+(11, 13)
+(1, 11)
+(13, 20)
+(2, 4)
+(3, 7)
+(21, 22)
+(6, 22)
+(3, 10)
+(0, 21)
+(16, 20)
+(4, 25)
+(6, 11)
+(2, 21)
+(24, 25)
+(9, 10)
+(12, 22)
+(0, 14)
+(16, 21)
+(0, 17)
+(22, 23)
+(12, 13)
+(8, 10)
+(10, 14)
+(9, 21)
+(3, 23)
+(15, 17)
+(12, 20)
+(0, 8)
+(8, 10)
+(1, 3)
+(4, 15)
+(19, 20)
+(11, 21)
+(4, 14)
+(3, 19)
+(6, 20)
+(2, 19)
+(4, 24)
+(3, 12)
+(14, 25)
+(20, 23)
+(7, 14)
+(8, 12)
+(20, 23)
+(10, 23)
+(10, 22)
+(16, 23)
+(15, 22)
+(17, 23)
+(4, 10)
+(5, 17)
+(10, 24)
+(1, 23)
+(6, 15)
+(4, 20)
+(11, 22)
+(8, 17)
+(3, 24)
+(18, 22)
+(10, 19)
+(5, 21)
+(18, 19)
+(8, 13)
+(5, 12)
+(3, 21)
+(7, 22)
+(6, 12)
+(5, 23)
+(1, 3)
+(2, 13)
+(5, 23)
+(1, 11)
+(13, 20)
+(3, 7)
+(4, 6)
+(5, 21)
+(6, 13)
+(4, 17)
+(1, 20)
+(11, 25)
+(5, 24)
+(16, 17)
+(13, 15)
+(9, 16)
+(10, 13)
+(5, 12)
+(16, 20)
+(6, 9)
+(10, 18)
+(12, 22)
+(2, 5)
+(0, 9)
+(8, 12)
+(22, 25)
+(2, 7)
+(16, 23)
+(5, 21)
+(13, 23)
+(12, 17)
+(16, 24)
+(11, 22)
+(7, 8)
+(19, 25)
+(11, 18)
+(17, 21)
+(14, 19)
+(16, 18)
+(9, 17)
+(21, 25)
+(19, 21)
+(9, 13)
+(12, 25)
+(0, 17)
+(12, 15)
+(0, 3)
+(14, 21)
+(10, 13)
+(1, 25)
+(8, 9)
+(3, 8)
+(0, 23)
+(9, 11)
+(2, 14)
+(6, 12)
+(13, 17)
+(5, 21)
+(4, 23)
+(11, 22)
+(6, 25)
+(6, 9)
+(19, 22)
+(21, 25)
+(1, 4)
+(18, 19)
+(12, 22)
+(1, 2)
+(4, 7)
+(1, 14)
+(7, 13)
+(22, 24)
+(11, 13)
+(1, 2)
+(12, 14)
+(7, 25)
+(14, 19)
+(2, 10)
+(1, 9)
+(7, 20)
+(13, 25)
+(11, 16)
+(8, 16)
+(13, 21)
+(2, 23)
+(17, 19)
+(18, 20)
+(4, 8)
+(3, 23)
+(17, 24)
+(1, 20)
+(18, 19)
+(12, 13)
+(10, 23)
+(18, 19)
+(3, 15)
+(21, 24)
+(7, 13)
+(12, 14)
+(5, 17)
+(17, 22)
+(9, 21)
+(6, 14)
+(6, 8)
+(21, 22)
+(5, 21)
+(6, 15)
+(8, 25)
+(8, 12)
+(14, 25)
+(1, 6)
+(23, 25)
+(12, 21)
+(1, 7)
+(8, 15)
+(8, 13)
+(0, 7)
+(9, 25)
+(6, 15)
+(1, 11)
+(6, 8)
+(9, 18)
+(11, 23)
+(24, 25)
+(10, 13)
+(7, 21)
+(4, 9)
+(6, 17)
+(7, 12)
+(14, 18)
+(23, 25)
+(13, 22)
+(8, 19)
+(0, 10)
+(20, 22)
+(14, 23)
+(10, 19)
+(2, 4)
+(7, 25)
+(8, 18)
+(17, 23)
+(14, 24)
+(2, 19)
+(15, 25)
+(4, 14)
+(2, 19)
+(16, 17)
+(23, 24)
+(3, 24)
+(10, 14)
+(17, 20)
+(4, 21)
+(9, 16)
+(10, 23)
+(19, 20)
+(3, 6)
+(1, 16)
+(4, 11)
+(17, 21)
+(1, 7)
+(0, 17)
+(9, 23)
+(2, 10)
+(10, 16)
+(2, 14)
+(9, 25)
+(12, 23)
+(10, 20)
+(3, 12)
+(2, 24)
+(8, 16)
+(14, 21)
+(13, 23)
+(1, 24)
+(0, 21)
+(8, 12)
+(11, 13)
+(2, 5)
+(13, 15)
+(1, 22)
+(9, 11)
+(12, 20)
+(5, 25)
+(2, 18)
+(9, 13)
+(14, 20)
+(11, 24)
+(15, 17)
+(1, 3)
+(23, 25)
+(8, 23)
+(1, 10)
+(0, 20)
+(17, 21)
+(11, 19)
+(14, 18)
+(4, 25)
+(2, 14)
+(8, 16)
+(11, 12)
+(4, 10)
+(1, 9)
+(17, 25)
+(4, 6)
+(2, 19)
+(14, 24)
+(7, 8)
+(3, 19)
+(6, 22)
+(2, 8)
+(2, 12)
+(3, 4)
+(5, 6)
+(8, 9)
+(4, 13)
+(3, 9)
+(7, 8)
+(5, 14)
+(8, 15)
+(0, 5)
+(7, 11)
+(3, 17)
+(1, 14)
+(13, 22)
+(10, 13)
+(14, 24)
+(7, 12)
+(1, 21)
+(19, 22)
+(1, 6)
+(2, 13)
+(3, 24)
+(12, 15)
+(18, 21)
+(6, 14)
+(1, 18)
+(2, 3)
+(0, 21)
+(2, 4)
+(1, 6)
+(0, 9)
+(19, 21)
+(6, 25)
+(1, 17)
+(5, 21)
+(0, 2)
+(19, 22)
+(22, 23)
+(14, 19)
+(5, 12)
+(7, 14)
+(6, 22)
+(4, 23)
+(13, 19)
+(9, 19)
+(14, 17)
+(2, 23)
+(6, 10)
+(13, 18)
+(3, 7)
+(18, 20)
+(0, 23)
+(8, 13)
+(3, 19)
+(10, 16)
+(7, 17)
+(12, 17)
+(20, 25)
+(14, 16)
+(3, 11)
+(0, 10)
+(4, 18)
+(7, 15)
+(5, 25)
+(12, 17)
+(4, 24)
+(3, 15)
+(9, 17)
+(3, 11)
+(8, 24)
+(12, 18)
+(13, 24)
+(4, 9)
+(12, 20)
+(8, 21)
+(3, 22)
+(3, 14)
+(18, 21)
+(15, 20)
+(2, 24)
+(2, 17)
+(8, 14)
+(18, 19)
+(1, 20)
+(6, 15)
+(1, 22)
+(15, 25)
+(2, 5)
+(16, 17)
+(19, 23)
+(15, 21)
+(5, 8)
+(2, 8)
+(5, 25)
+(11, 15)
+(11, 21)
+(18, 25)
+(2, 12)
+(3, 5)
+(3, 9)
+(19, 25)
+(2, 4)
+(1, 11)
+(15, 25)
+(2, 20)
+(5, 9)
+(1, 24)
+(4, 22)
+(3, 7)
+(7, 11)
+(9, 13)
+(17, 24)
+(2, 3)
+(4, 14)
+(8, 24)
+(17, 19)
+(13, 21)
+(4, 7)
+(9, 23)
+(18, 24)
+(19, 23)
+(7, 15)
+(8, 19)
+(4, 7)
+(3, 24)
+(3, 21)
+(4, 18)
+(7, 15)
+(24, 25)
+(3, 4)
+(6, 7)
+(3, 18)
+(7, 12)
+(0, 6)
+(0, 2)
+(7, 20)
+(6, 18)
+(3, 9)
+(2, 18)
+(0, 11)
+(15, 20)
+(1, 20)
+(8, 15)
+(4, 11)
+(0, 16)
+(3, 18)
+(2, 7)
+(8, 19)
+(12, 18)
+(7, 10)
+(1, 11)
+(20, 23)
+(0, 22)
+(0, 6)
+(10, 16)
+(8, 15)
+(23, 24)
+(11, 21)
+(9, 11)
+(21, 25)
+(17, 24)
+(6, 22)
+(4, 15)
+(3, 11)
+(20, 25)
+(14, 25)
+(3, 12)
+(11, 23)
+(16, 20)
+(7, 16)
+(14, 19)
+(4, 23)
+(21, 23)
+(8, 16)
+(1, 19)
+(2, 8)
+(7, 19)
+(3, 16)
+(8, 11)
+(17, 19)
+(2, 10)
+(7, 13)
+(18, 19)
+(1, 13)
+(8, 10)
+(11, 12)
+(19, 20)
+(5, 18)
+(7, 8)
+(2, 18)
+(20, 23)
+(5, 15)
+(4, 19)
+(15, 16)
+(5, 7)
+(2, 6)
+(9, 18)
+(9, 24)
+(3, 18)
+(10, 15)
+(2, 23)
+(2, 22)
+(1, 9)
+(16, 18)
+(10, 20)
+(17, 23)
+(12, 15)
+(8, 20)
+(0, 16)
+(1, 2)
+(13, 15)
+(12, 24)
+(21, 23)
+(16, 25)
+(0, 18)
+(3, 24)
+(11, 13)
+(15, 21)
+(19, 24)
+(4, 13)
+(10, 11)
+(3, 15)
+(2, 21)
+(6, 16)
+(18, 25)
+(11, 15)
+(22, 24)
+(12, 13)
+(16, 19)
+(18, 20)
+(5, 6)
+(4, 21)
+(18, 25)
+(14, 24)
+(4, 10)
+(6, 13)
+(5, 15)
+(4, 18)
+(2, 14)
+(10, 25)
+(8, 14)
+(10, 21)
+(2, 8)
+(9, 10)
+(2, 23)
+(10, 11)
+(5, 8)
+(5, 16)
+(10, 12)
+(21, 23)
+(8, 11)
+(5, 13)
+(18, 23)
+(9, 21)
+(11, 19)
+(0, 11)
+(6, 19)
+(14, 23)
+(1, 21)
+(9, 20)
+(4, 11)
+(0, 12)
+(10, 21)
+(3, 14)
+(13, 19)
+(1, 7)
+(16, 19)
+(1, 13)
+(7, 8)
+(14, 25)
+(19, 22)
+(6, 25)
+(14, 18)
+(8, 9)
+(16, 24)
+(17, 25)
+(9, 21)
+(16, 20)
+(0, 24)
+(3, 22)
+(12, 16)
+(10, 20)
+(4, 22)
+(8, 9)
+(6, 10)
+(22, 25)
+(8, 12)
+(7, 20)
+(3, 16)
+(2, 20)
+(3, 19)
+(7, 22)
+(8, 15)
+(4, 16)
+(0, 6)
+(4, 24)
+(7, 18)
+(2, 10)
+(6, 17)
+(11, 16)
+(5, 7)
+(10, 19)
+(17, 18)
+(6, 16)
+(4, 21)
+(22, 24)
+(9, 19)
+(8, 10)
+(5, 14)
+(3, 24)
+(2, 19)
+(6, 24)
+(9, 11)
+(8, 22)
+(2, 13)
+(1, 19)
+(6, 25)
+(2, 20)
+(1, 16)
+(19, 21)
+(2, 10)
+(13, 19)
+(1, 4)
+(9, 20)
+(7, 21)
+(12, 21)
+(13, 15)
+(0, 19)
+(1, 9)
+(7, 11)
+(2, 24)
+(23, 24)
+(17, 21)
+(4, 13)
+(7, 19)
+(13, 16)
+(14, 17)
+(21, 22)
+(1, 24)
+(17, 18)
+(0, 24)
+(21, 25)
+(20, 22)
+(10, 18)
+(11, 17)
+(3, 25)
+(15, 21)
+(1, 22)
+(1, 7)
+(12, 25)
+(13, 21)
+(5, 15)
+(12, 16)
+(0, 13)
+(3, 5)
+(11, 16)
+(3, 4)
+(10, 12)
+(6, 16)
+(11, 21)
+(9, 10)
+(4, 5)
+(12, 23)
+(6, 20)
+(8, 16)
+(7, 21)
+(12, 19)
+(16, 25)
+(12, 14)
+(2, 19)
+(15, 25)
+(0, 19)
+(12, 24)
+(16, 18)
+(17, 24)
+(5, 15)
+(0, 1)
+(2, 16)
+(12, 21)
+(3, 25)
+(1, 24)
+(3, 11)
+(7, 25)
+(0, 6)
+(4, 5)
+(8, 15)
+(1, 5)
+(19, 24)
+(15, 20)
+(7, 12)
+(4, 14)
+(10, 14)
+(20, 22)
+(7, 12)
+(8, 19)
+(15, 20)
+(13, 22)
+(4, 20)
+(12, 15)
+(2, 22)
+(4, 12)
+(20, 23)
+(2, 21)
+(6, 22)
+(16, 20)
+(2, 12)
+(0, 23)
+(9, 21)
+(18, 23)
+(1, 16)
+(20, 25)
+(11, 18)
+(3, 23)
+(5, 25)
+(20, 22)
+(0, 18)
+(1, 3)
+(5, 19)
+(17, 23)
+(8, 20)
+(3, 25)
+(0, 10)
+(5, 18)
+(1, 21)
+(19, 21)
+(0, 15)
+(4, 10)
+(10, 14)
+(7, 19)
+(4, 12)
+(0, 21)
+(12, 17)
+(8, 14)
+(0, 20)
+(12, 24)
+(5, 14)
+(17, 23)
+(7, 20)
+(13, 14)
+(17, 22)
+(9, 23)
+(17, 18)
+(23, 24)
+(16, 22)
+(11, 13)
+(0, 22)
+(2, 18)
+(17, 19)
+(24, 25)
+(5, 23)
+(13, 14)
+(21, 23)
+(14, 24)
+(6, 17)
+(1, 19)
+(11, 22)
+(0, 7)
+(12, 25)
+(18, 23)
+(6, 9)
+(4, 25)
+(20, 21)
+(10, 12)
+(17, 20)
+(2, 4)
+(12, 22)
+(9, 13)
+(6, 8)
+(5, 23)
+(2, 15)
+(4, 10)
+(5, 20)
+(1, 6)
+(17, 21)
+(6, 13)
+(0, 4)
+(1, 12)
+(15, 20)
+(9, 13)
+(11, 20)
+(6, 22)
+(12, 25)
+(10, 15)
+(1, 16)
+(11, 14)
+(1, 8)
+(10, 16)
+(13, 19)
+(12, 23)
+(5, 20)
+(9, 21)
+(12, 25)
+(4, 9)
+(19, 22)
+(11, 13)
+(19, 20)
+(12, 21)
+(7, 22)
+(24, 25)
+(11, 21)
+(17, 19)
+(0, 22)
+(7, 18)
+(23, 25)
+(9, 12)
+(14, 18)
+(6, 12)
+(19, 25)
+(2, 9)
+(7, 14)
+(3, 6)
+(18, 20)
+(2, 23)
+(7, 16)
+(17, 20)
+(14, 25)
+(3, 13)
+(7, 16)
+(2, 20)
+(5, 17)
+(14, 18)
+(20, 23)
+(2, 6)
+(14, 25)
+(7, 16)
+(5, 18)
+(17, 21)
+(6, 16)
+(15, 23)
+(2, 8)
+(9, 21)
+(5, 24)
+(7, 20)
+(17, 23)
+(8, 14)
+(10, 20)
+(0, 7)
+(14, 25)
+(1, 17)
+(18, 23)
+(0, 4)
+(10, 19)
+(13, 18)
+(7, 19)
+(12, 23)
+(0, 2)
+(11, 19)
+(13, 14)
+(2, 15)
+(6, 7)
+(1, 7)
+(4, 11)
+(6, 16)
+(19, 22)
+(2, 9)
+(1, 14)
+(10, 16)
+(3, 19)
+(9, 15)
+(6, 20)
+(11, 22)
+(2, 19)
+(15, 21)
+(5, 22)
+(3, 17)
+(0, 20)
+(5, 17)
+(19, 25)
+(12, 21)
+(0, 24)
+(9, 12)
+(18, 21)
+(0, 4)
+(0, 17)
+(8, 21)
+(10, 12)
+(4, 7)
+(6, 9)
+(2, 17)
+(9, 25)
+(4, 22)
+(10, 20)
+(3, 6)
+(2, 5)
+(9, 13)
+(0, 6)
+(4, 20)
+(3, 15)
+(15, 24)
+(3, 11)
+(13, 17)
+(0, 8)
+(5, 18)
+(16, 18)
+(6, 15)
+(11, 12)
+(3, 7)
+(8, 14)
+(3, 13)
+(11, 21)
+(10, 12)
+(1, 8)
+(9, 18)
+(6, 17)
+(13, 16)
+(5, 21)
+(9, 19)
+(6, 14)
+(7, 10)
+(17, 23)
+(5, 20)
+(16, 24)
+(1, 7)
+(15, 21)
+(10, 12)
+(4, 23)
+(2, 20)
+(16, 25)
+(9, 12)
+(5, 17)
+(7, 17)
+(0, 20)
+(5, 11)
+(1, 16)
+(4, 16)
+(11, 21)
+(17, 24)
+(0, 2)
+(10, 20)
+(0, 16)
+(4, 7)
+(6, 17)
+(2, 20)
+(10, 14)
+(21, 23)
+(7, 9)
+(16, 22)
+(14, 15)
+(1, 6)
+(4, 5)
+(10, 17)
+(15, 20)
+(1, 2)
+(6, 10)
+(0, 4)
+(14, 17)
+(10, 16)
+(4, 8)
+(1, 13)
+(15, 18)
+(0, 24)
+(2, 15)
+(8, 18)
+(3, 4)
+(0, 1)
+(1, 16)
+(0, 19)
+(15, 21)
+(2, 15)
+(19, 25)
+(11, 21)
+(15, 23)
+(2, 10)
+(4, 19)
+(8, 25)
+(19, 20)
+(12, 25)
+(2, 18)
+(11, 12)
+(8, 25)
+(16, 19)
+(2, 7)
+(0, 16)
+(13, 25)
+(8, 14)
+(10, 19)
+(8, 9)
+(7, 16)
+(10, 24)
+(3, 25)
+(9, 25)
+(10, 15)
+(3, 8)
+(10, 16)
+(3, 13)
+(6, 9)
+(2, 8)
+(1, 8)
+(13, 23)
+(0, 6)
+(10, 15)
+(10, 16)
+(18, 23)
+(1, 10)
+(12, 23)
+(3, 18)
+(13, 16)
+(3, 5)
+(20, 23)
+(12, 25)
+(0, 13)
+(3, 22)
+(20, 25)
+(15, 23)
+(5, 19)
+(1, 19)
+(8, 23)
+(3, 16)
+(14, 22)
+(5, 10)
+(1, 9)
+(10, 14)
+(15, 22)
+(2, 16)
+(0, 3)
+(14, 23)
+(16, 21)
+(0, 19)
+(2, 25)
+(3, 11)
+(1, 17)
+(3, 18)
+(4, 25)
+(6, 17)
+(20, 21)
+(2, 17)
+(10, 18)
+(3, 24)
+(1, 4)
+(6, 22)
+(1, 9)
+(14, 17)
+(3, 7)
+(4, 19)
+(22, 24)
+(10, 15)
+(1, 16)
+(2, 22)
+(14, 24)
+(7, 17)
+(12, 15)
+(10, 20)
+(7, 23)
+(11, 20)
+(0, 10)
+(3, 22)
+(9, 14)
+(1, 11)
+(7, 16)
+(20, 25)
+(9, 17)
+(10, 15)
+(0, 8)
+(14, 25)
+(9, 13)
+(17, 19)
+(1, 12)
+(9, 24)
+(13, 19)
+(14, 21)
+(1, 3)
+(11, 25)
+(17, 23)
+(0, 14)
+(9, 10)
+(3, 12)
+(14, 22)
+(10, 24)
+(8, 9)
+(0, 12)
+(10, 20)
+(2, 9)
+(18, 24)
+(11, 12)
+(18, 22)
+(3, 11)
+(9, 24)
+(5, 10)
+(6, 12)
+(12, 25)
+(9, 20)
+(6, 8)
+(2, 24)
+(11, 19)
+(16, 18)
+(3, 17)
+(12, 19)
+(7, 18)
+(11, 17)
+(1, 2)
+(3, 23)
+(24, 25)
+(0, 9)
+(17, 22)
+(19, 25)
+(2, 24)
+(11, 20)
+(5, 9)
+(1, 16)
+(0, 6)
+(15, 20)
+(5, 10)
+(3, 9)
+(14, 17)
+(6, 22)
+(5, 8)
+(1, 15)
+(2, 6)
+(18, 20)
+(9, 25)
+(10, 21)
+(3, 8)
+(4, 5)
+(6, 24)
+(17, 18)
+(11, 21)
+(1, 19)
+(10, 12)
+(0, 11)
+(12, 22)
+(1, 6)
+(0, 3)
+(13, 22)
+(5, 11)
+(0, 1)
+(5, 23)
+(3, 14)
+(10, 22)
+(19, 23)
+(10, 13)
+(18, 22)
+(3, 5)
+(6, 23)
+(5, 9)
+(3, 16)
+(19, 24)
+(22, 25)
+(5, 14)
+(4, 19)
+(7, 24)
+(11, 16)
+(7, 8)
+(15, 16)
+(6, 24)
+(1, 14)
+(3, 4)
+(19, 22)
+(5, 19)
+(2, 24)
+(7, 12)
+(8, 23)
+(3, 25)
+(4, 10)
+(4, 13)
+(6, 8)
+(23, 25)
+(0, 10)
+(12, 14)
+(2, 9)
+(10, 15)
+(11, 13)
+(18, 25)
+(2, 20)
+(6, 9)
+(4, 16)
+(0, 7)
+(7, 25)
+(1, 13)
+(0, 8)
+(9, 16)
+(14, 18)
+(2, 21)
+(11, 17)
+(1, 15)
+(2, 20)
+(18, 22)
+(12, 17)
+(21, 25)
+(0, 17)
+(1, 13)
+(8, 12)
+(14, 20)
+(1, 10)
+(13, 24)
+(3, 20)
+(14, 18)
+(0, 22)
+(22, 24)
+(3, 17)
+(20, 23)
+(1, 4)
+(10, 11)
+(4, 6)
+(10, 21)
+(7, 22)
+(22, 24)
+(6, 9)
+(9, 17)
+(24, 25)
+(7, 22)
+(4, 7)
+(1, 22)
+(12, 17)
+(10, 22)
+(5, 12)
+(7, 8)
+(1, 25)
+(7, 19)
+(24, 25)
+(8, 23)
+(3, 19)
+(5, 25)
+(15, 23)
+(6, 24)
+(16, 19)
+(3, 4)
+(3, 21)
+(7, 19)
+(4, 22)
+(13, 16)
+(13, 17)
+(2, 19)
+(7, 18)
+(1, 21)
+(0, 4)
+(4, 15)
+(1, 24)
+(7, 11)
+(13, 21)
+(2, 3)
+(9, 18)
+(18, 25)
+(0, 11)
+(16, 24)
+(3, 12)
+(2, 8)
+(0, 14)
+(2, 13)
+(6, 8)
+(15, 24)
+(10, 18)
+(8, 12)
+(10, 11)
+(19, 24)
+(2, 23)
+(13, 18)
+(13, 25)
+(1, 8)
+(10, 11)
+(2, 6)
+(8, 14)
+(11, 22)
+(6, 21)
+(1, 12)
+(12, 20)
+(15, 22)
+(1, 23)
+(5, 6)
+(19, 21)
+(7, 8)
+(1, 4)
+(12, 16)
+(8, 24)
+(17, 23)
+(6, 14)
+(4, 20)
+(2, 24)
+(5, 6)
+(15, 16)
+(21, 23)
+(7, 20)
+(11, 16)
+(6, 14)
+(3, 4)
+(6, 10)
+(16, 22)
+(9, 14)
+(5, 16)
+(1, 10)
+(6, 17)
+(3, 9)
+(14, 24)
+(17, 25)
+(10, 12)
+(5, 21)
+(6, 13)
+(9, 24)
+(16, 24)
+(10, 15)
+(4, 13)
+(0, 12)
+(2, 6)
+(0, 11)
+(16, 24)
+(4, 6)
+(3, 15)
+(10, 23)
+(12, 19)
+(3, 22)
+(2, 19)
+(15, 18)
+(1, 11)
+(16, 24)
+(0, 11)
+(2, 25)
+(12, 24)
+(10, 16)
+(8, 22)
+(1, 17)
+(14, 15)
+(18, 20)
+(17, 24)
+(0, 22)
+(2, 15)
+(1, 23)
+(18, 19)
+(14, 21)
+(3, 16)
+(5, 10)
+(0, 8)
+(7, 19)
+(3, 6)
+(20, 23)
+(1, 18)
+(3, 14)
+(6, 13)
+(20, 21)
+(8, 24)
+(0, 7)
+(1, 9)
+(4, 13)
+(21, 25)
+(6, 19)
+(9, 11)
+(7, 15)
+(1, 17)
+(8, 23)
+(8, 12)
+(19, 22)
+(9, 25)
+(4, 13)
+(1, 15)
+(11, 18)
+(7, 22)
+(8, 17)
+(4, 13)
+(5, 25)
+(4, 11)
+(22, 23)
+(15, 25)
+(3, 17)
+(2, 8)
+(5, 8)
+(2, 12)
+(6, 11)
+(7, 17)
+(4, 16)
+(10, 23)
+(19, 23)
+(0, 2)
+(1, 6)
+(9, 12)
+(16, 21)
+(9, 22)
+(12, 19)
+(0, 5)
+(1, 11)
+(2, 8)
+(1, 24)
+(4, 11)
+(17, 19)
+(1, 3)
+(10, 24)
+(11, 20)
+(15, 24)
+(20, 25)
+(21, 25)
+(15, 19)
+(14, 20)
+(17, 24)
+(6, 25)
+(14, 23)
+(13, 21)
+(4, 20)
+(3, 13)
+(12, 14)
+(4, 22)
+(4, 16)
+(3, 5)
+(7, 22)
+(14, 25)
+(16, 18)
+(4, 6)
+(5, 19)
+(17, 18)
+(4, 21)
+(6, 11)
+(11, 18)
+(20, 21)
+(16, 20)
+(4, 16)
+(4, 13)
+(0, 16)
+(4, 17)
+(13, 14)
+(7, 13)
+(17, 23)
+(5, 14)
+(4, 25)
+(2, 7)
+(10, 17)
+(11, 13)
+(4, 24)
+(14, 23)
+(13, 15)
+(2, 25)
+(14, 17)
+(21, 23)
+(1, 4)
+(12, 25)
+(1, 15)
+(16, 17)
+(14, 23)
+(8, 13)
+(2, 22)
+(16, 18)
+(11, 14)
+(2, 5)
+(6, 12)
+(4, 13)
+(14, 22)
+(13, 24)
+(5, 15)
+(6, 19)
+(2, 25)
+(9, 11)
+(6, 21)
+(10, 13)
+(19, 25)
+(6, 18)
+(19, 22)
+(13, 17)
+(10, 16)
+(2, 19)
+(4, 13)
+(10, 15)
+(8, 18)
+(6, 21)
+(4, 17)
+(18, 23)
+(19, 24)
+(3, 6)
+(1, 13)
+(19, 24)
+(1, 21)
+(6, 13)
+(4, 18)
+(3, 7)
+(19, 22)
+(1, 14)
+(2, 3)
+(4, 18)
+(6, 25)
+(0, 13)
+(0, 2)
+(4, 24)
+(5, 14)
+(18, 25)
+(13, 15)
+(15, 16)
+(13, 19)
+(5, 22)
+(0, 3)
+(4, 9)
+(9, 10)
+(19, 21)
+(1, 22)
+(16, 17)
+(0, 5)
+(4, 11)
+(17, 23)
+(4, 8)
+(6, 9)
+(10, 13)
+(0, 7)
+(2, 6)
+(9, 11)
+(20, 23)
+(8, 16)
+(10, 21)
+(10, 22)
+(1, 9)
+(3, 11)
+(5, 20)
+(3, 21)
+(1, 13)
+(9, 22)
+(10, 16)
+(3, 19)
+(15, 21)
+(3, 19)
\ No newline at end of file
--- /dev/null
+(2, 5)
+(1, 4)
+(0, 3)
+(0, 3)
+(0, 5)
+(3, 5)
+(0, 2)
+(3, 4)
+(2, 4)
+(1, 2)
+(0, 4)
+(1, 2)
+(2, 4)
+(0, 4)
+(1, 4)
\ No newline at end of file
--- /dev/null
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "import collections\n",
+ "import random\n",
+ "import string\n",
+ "import itertools"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "Link = collections.namedtuple('Link', 'height left right')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def link_ends(link):\n",
+ " return set((link.left, link.right))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def can_add(link, links):\n",
+ " ends = link_ends(link)\n",
+ " same_height_links = [l for l in links if l.height == link.height]\n",
+ " return all(ends.isdisjoint(link_ends(l)) for l in same_height_links)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def make_net(num_links, lines=10, height=50):\n",
+ " links = set()\n",
+ " while len(links) < num_links:\n",
+ " a = random.randrange(lines)\n",
+ " b = random.randrange(lines)\n",
+ " if a != b:\n",
+ " l = min(a, b)\n",
+ " r = max(a, b)\n",
+ " h = random.randrange(height)\n",
+ " link = Link(h, l, r)\n",
+ " if can_add(link, links):\n",
+ " links.add(link)\n",
+ " return links"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{Link(height=4, left=0, right=3),\n",
+ " Link(height=8, left=1, right=5),\n",
+ " Link(height=16, left=0, right=4),\n",
+ " Link(height=17, left=1, right=5),\n",
+ " Link(height=18, left=3, right=5),\n",
+ " Link(height=20, left=0, right=1),\n",
+ " Link(height=25, left=0, right=3),\n",
+ " Link(height=30, left=1, right=4),\n",
+ " Link(height=33, left=0, right=4),\n",
+ " Link(height=34, left=4, right=5),\n",
+ " Link(height=35, left=0, right=3),\n",
+ " Link(height=36, left=1, right=4),\n",
+ " Link(height=37, left=2, right=5),\n",
+ " Link(height=45, left=4, right=5),\n",
+ " Link(height=46, left=2, right=5)}"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "net = make_net(15, lines=6)\n",
+ "net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow(initial_line, links):\n",
+ " line = initial_line\n",
+ " heights = sorted(set(l.height for l in links))\n",
+ " for h in heights:\n",
+ " for l in [l for l in links if l.height == h]:\n",
+ " if line in link_ends(l):\n",
+ " line = [e for e in link_ends(l) if e != line][0]\n",
+ "# print(l, line)\n",
+ " return line"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "3"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "follow(4, net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def pack(net):\n",
+ " packed_links = []\n",
+ " line_heights = collections.defaultdict(lambda: -1)\n",
+ " for link in sorted(net):\n",
+ " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
+ " line_heights[link.left] = link_height\n",
+ " line_heights[link.right] = link_height\n",
+ " packed_links += [Link(link_height, link.left, link.right)]\n",
+ " return sorted(packed_links)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow_many_slow(in_sequence, links):\n",
+ " out_sequence = [(follow(i, links), term) \n",
+ " for i, term in enumerate(in_sequence)]\n",
+ " return [term for i, term in sorted(out_sequence)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow_many(in_sequence, net):\n",
+ " height_groups = [list(g) for _, g in itertools.groupby(pack(net), lambda l: l.height)]\n",
+ " seq = list(in_sequence)\n",
+ " for links in height_groups:\n",
+ " for link in links:\n",
+ "# l = seq[link.left]\n",
+ "# r = seq[link.right]\n",
+ "# seq[link.right] = l\n",
+ "# seq[link.left] = r\n",
+ " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
+ " return seq"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10000 loops, best of 3: 39.2 µs per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many('abcdef', net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# %%timeit\n",
+ "# follow_many_slow('abcdefghij', net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def show_net(links, randomise=False, pair_sep=', '):\n",
+ " if randomise:\n",
+ " output = []\n",
+ " heights = sorted(set(l.height for l in links))\n",
+ " for h in heights:\n",
+ " ls = [l for l in links if l.height == h]\n",
+ " random.shuffle(ls)\n",
+ " output += ['({}, {})'.format(l.left, l.right) for l in ls]\n",
+ " return pair_sep.join(output)\n",
+ " return pair_sep.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'"
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_net(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_net(net, randomise=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'(0, 3) : (1, 5) : (0, 4) : (1, 5) : (3, 5) : (0, 1) : (0, 3) : (1, 4) : (0, 4) : (4, 5) : (0, 3) : (1, 4) : (2, 5) : (4, 5) : (2, 5)'"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_net(net, pair_sep=' : ')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'(0, 3)\\n(1, 5)\\n(0, 4)\\n(1, 5)\\n(3, 5)\\n(0, 1)\\n(0, 3)\\n(1, 4)\\n(0, 4)\\n(4, 5)\\n(0, 3)\\n(1, 4)\\n(2, 5)\\n(4, 5)\\n(2, 5)'"
+ ]
+ },
+ "execution_count": 53,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_net(net, pair_sep='\\n')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(0, 3)\n",
+ "(1, 5)\n",
+ "(0, 4)\n",
+ "(1, 5)\n",
+ "(3, 5)\n",
+ "(0, 1)\n",
+ "(0, 3)\n",
+ "(1, 4)\n",
+ "(0, 4)\n",
+ "(4, 5)\n",
+ "(0, 3)\n",
+ "(1, 4)\n",
+ "(2, 5)\n",
+ "(4, 5)\n",
+ "(2, 5)\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(show_net(net, pair_sep='\\n'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# open('04-small.txt', 'w').write(show_net(net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'(0, 3), (1, 5), (0, 4), (1, 5), (3, 5), (0, 1), (0, 3), (1, 4), (0, 4), (4, 5), (0, 3), (1, 4), (2, 5), (4, 5), (2, 5)'"
+ ]
+ },
+ "execution_count": 56,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_net(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "ls = [l for l in net if l.height == 1]\n",
+ "ls"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "random.shuffle(ls)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def read_net(net_string):\n",
+ " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def extract_pairs(net_string):\n",
+ " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "net = read_net('(1, 5), (2, 4), (0, 2), (0, 4), (0, 1), (0, 2), (1, 5), (0, 3), (1, 2), (4, 5), (0, 5), (3, 5), (1, 4), (0, 1), (2, 3)')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=1, right=5),\n",
+ " Link(height=1, left=2, right=4),\n",
+ " Link(height=2, left=0, right=2),\n",
+ " Link(height=3, left=0, right=4),\n",
+ " Link(height=4, left=0, right=1),\n",
+ " Link(height=5, left=0, right=2),\n",
+ " Link(height=6, left=1, right=5),\n",
+ " Link(height=7, left=0, right=3),\n",
+ " Link(height=8, left=1, right=2),\n",
+ " Link(height=9, left=4, right=5),\n",
+ " Link(height=10, left=0, right=5),\n",
+ " Link(height=11, left=3, right=5),\n",
+ " Link(height=12, left=1, right=4),\n",
+ " Link(height=13, left=0, right=1),\n",
+ " Link(height=14, left=2, right=3)]"
+ ]
+ },
+ "execution_count": 62,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "read_net(show_net(net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=1, right=5),\n",
+ " Link(height=0, left=2, right=4),\n",
+ " Link(height=1, left=0, right=2),\n",
+ " Link(height=2, left=0, right=4),\n",
+ " Link(height=3, left=0, right=1),\n",
+ " Link(height=4, left=0, right=2),\n",
+ " Link(height=4, left=1, right=5),\n",
+ " Link(height=5, left=0, right=3),\n",
+ " Link(height=5, left=1, right=2),\n",
+ " Link(height=5, left=4, right=5),\n",
+ " Link(height=6, left=0, right=5),\n",
+ " Link(height=6, left=1, right=4),\n",
+ " Link(height=7, left=0, right=1),\n",
+ " Link(height=7, left=3, right=5),\n",
+ " Link(height=8, left=2, right=3)]"
+ ]
+ },
+ "execution_count": 63,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pack(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=1, right=5),\n",
+ " Link(height=0, left=2, right=4),\n",
+ " Link(height=1, left=0, right=2),\n",
+ " Link(height=2, left=0, right=4),\n",
+ " Link(height=3, left=0, right=1),\n",
+ " Link(height=4, left=0, right=2),\n",
+ " Link(height=4, left=1, right=5),\n",
+ " Link(height=5, left=0, right=3),\n",
+ " Link(height=5, left=1, right=2),\n",
+ " Link(height=5, left=4, right=5),\n",
+ " Link(height=6, left=0, right=5),\n",
+ " Link(height=6, left=1, right=4),\n",
+ " Link(height=7, left=0, right=1),\n",
+ " Link(height=7, left=3, right=5),\n",
+ " Link(height=8, left=2, right=3)]"
+ ]
+ },
+ "execution_count": 64,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pack(read_net(show_net(net)))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(True, True)"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pnet = pack(net)\n",
+ "rrnet = read_net(show_net(net, randomise=True))\n",
+ "rnet = read_net(show_net(net))\n",
+ "rnet == rrnet, pack(rrnet) == pnet"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "lnet = make_net(10207, 26, 100000)\n",
+ "plnet = pack(lnet)\n",
+ "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, plnet)\n",
+ "# for i in range(204):\n",
+ "# assert follow(i, lnet) == follow(i, plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "rlnet = read_net(show_net(lnet))\n",
+ "prlnet = pack(rlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2239"
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "99989"
+ ]
+ },
+ "execution_count": 69,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10206"
+ ]
+ },
+ "execution_count": 70,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in rlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2239"
+ ]
+ },
+ "execution_count": 71,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in prlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, prlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 25.9 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many(string.ascii_lowercase, lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# %%timeit\n",
+ "# follow_many_slow(string.ascii_lowercase, lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pairs_slow(net):\n",
+ " eps = []\n",
+ " for l in net:\n",
+ " o = Link(l.height + 1, l.left, l.right)\n",
+ " if o in net:\n",
+ " eps += [(l, o)]\n",
+ " return eps "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pairs(net):\n",
+ " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ " eps = []\n",
+ " for h in range(1, max(height_groups.keys())):\n",
+ " for l in height_groups[h]:\n",
+ " o = Link(l.height - 1, l.left, l.right)\n",
+ " if o in height_groups[h-1]:\n",
+ " eps += [(l, o)]\n",
+ " return eps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 24.1 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "eliminable_pairs(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pair(net):\n",
+ " for l in net:\n",
+ " o = Link(l.height + 1, l.left, l.right)\n",
+ " if o in net:\n",
+ " return l, o\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pair_hg(height_groups):\n",
+ " for h in range(1, max(height_groups.keys())):\n",
+ " for l in height_groups[h]:\n",
+ " o = Link(l.height - 1, l.left, l.right)\n",
+ " if o in height_groups[h-1]:\n",
+ " return l, o\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_pairs_slow(net):\n",
+ " eliminable_links = eliminable_pair(net)\n",
+ " while eliminable_links:\n",
+ " net = pack(l for l in net if l not in eliminable_links)\n",
+ " eliminable_links = eliminable_pair(net)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_pairs(net):\n",
+ " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ " eliminable_links = eliminable_pair_hg(height_groups)\n",
+ " while eliminable_links:\n",
+ " net = pack(l for l in net if l not in eliminable_links)\n",
+ " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ " eliminable_links = eliminable_pair_hg(height_groups)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10207\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "(10207, 9813)"
+ ]
+ },
+ "execution_count": 82,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "print(len(plnet))\n",
+ "elnet = eliminate_pairs(plnet)\n",
+ "len(plnet), len(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 83,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eliminable_pairs(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, elnet)\n",
+ "assert follow_many(string.ascii_lowercase, plnet) == follow_many(string.ascii_lowercase, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1 loop, best of 3: 6.08 s per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "elnet = eliminate_pairs(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# for i in range(26):\n",
+ "# assert follow(i, plnet) == follow(i, elnet)\n",
+ "# assert follow(i, lnet) == follow(i, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# follow(0, plnet), follow(0, elnet), follow(0, lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def triple_slow(net):\n",
+ " x = None\n",
+ " y = None\n",
+ " ts = []\n",
+ " for a in net:\n",
+ " bs = [l for l in net if l.height == a.height + 1 \n",
+ " if l.left == a.right or l.right == a.left]\n",
+ " for b in bs:\n",
+ " c = Link(a.height + 2, a.left, a.right)\n",
+ " if c in net:\n",
+ " ts += [(a, b, c)]\n",
+ " return ts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def triple_pair_slow(net):\n",
+ " ts = []\n",
+ " for a in net:\n",
+ " a_ends = link_ends(a)\n",
+ " bs = [l for l in net if l.height == a.height + 1 \n",
+ " if link_ends(l) & a_ends]\n",
+ " if len(bs) == 1:\n",
+ " b = bs[0]\n",
+ " lines = set((a.left, a.right, b.left, b.right))\n",
+ " cs = [l for l in net \n",
+ " if l.height == a.height + 2\n",
+ " if link_ends(l) & lines]\n",
+ " if len(cs) == 1:\n",
+ " c = Link(a.height + 2, a.left, a.right)\n",
+ " if c in cs:\n",
+ " ds = [l for l in net \n",
+ " if l.height == a.height + 3\n",
+ " if link_ends(l) & lines]\n",
+ " d = Link(a.height + 3, b.left, b.right)\n",
+ " if d in ds:\n",
+ " ts += [(a, b, c, d)]\n",
+ " return ts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def find_height_groups(net):\n",
+ " return {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def triple_pair_hg(height_groups, debug=False):\n",
+ " ts = []\n",
+ " for h in range(3, max(height_groups.keys())):\n",
+ " for d in height_groups[h]:\n",
+ " if debug: print('d:', d)\n",
+ " ch = h - 1\n",
+ " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
+ " if debug: print('cs:', cs)\n",
+ " while ch > 2 and not cs:\n",
+ " ch -= 1\n",
+ " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
+ " if debug: print('cs:', cs)\n",
+ " if len(cs) == 1:\n",
+ " c = cs[0]\n",
+ " lines = set((d.left, d.right, c.left, c.right))\n",
+ " if debug: print('c:', '; lines:', lines)\n",
+ " bs = [l for l in height_groups[ch-1] if link_ends(l) & lines]\n",
+ " b = Link(ch - 1, d.left, d.right)\n",
+ " if debug: print('b:', b, '; bs:', bs)\n",
+ " if len(bs) == 1 and b in bs:\n",
+ " ah = b.height - 1\n",
+ " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
+ " if debug: print('ah:', ah, '; als:', als)\n",
+ " while ah > 0 and not als:\n",
+ " ah -= 1\n",
+ " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
+ " if debug: print('ah:', ah, '; als:', als)\n",
+ " a = Link(ah, c.left, c.right)\n",
+ " if debug: print('a:', a)\n",
+ " if a in als:\n",
+ " if debug: print('adding:', a, b, c, d)\n",
+ " ts += [(a, b, c, d)]\n",
+ " return ts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_a_triple_pair_slow(net, debug=False):\n",
+ " tps = triple_pair_slow(net)\n",
+ " if debug: print('eatp', tps)\n",
+ "\n",
+ " if tps:\n",
+ " a, b, c, d = tps[0]\n",
+ "# x = Link(a.height, b.left, b.right)\n",
+ "# y = Link(b.height, a.left, a.right)\n",
+ " x = Link(b.height - 0.5, b.left, b.right)\n",
+ " y = Link(b.height, a.left, a.right)\n",
+ " if debug: print('removing', a, b, c, d, '; adding', x, y)\n",
+ " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_a_triple_pair(net, debug=False):\n",
+ " height_groups = find_height_groups(net)\n",
+ "\n",
+ " tps = triple_pair_hg(height_groups)\n",
+ " if debug: print('eatp', tps)\n",
+ " if tps:\n",
+ " a, b, c, d = tps[0]\n",
+ " x = Link(b.height - 0.5, b.left, b.right)\n",
+ " y = Link(b.height, a.left, a.right)\n",
+ " if debug: print('removing', a, b, c, d, '; adding', x, y)\n",
+ " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=1126, left=8, right=17),\n",
+ " Link(height=1127, left=1, right=8),\n",
+ " Link(height=1128, left=8, right=17),\n",
+ " Link(height=1129, left=1, right=8)),\n",
+ " (Link(height=1952, left=12, right=25),\n",
+ " Link(height=1953, left=10, right=12),\n",
+ " Link(height=1954, left=12, right=25),\n",
+ " Link(height=1955, left=10, right=12))]"
+ ]
+ },
+ "execution_count": 94,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "height_groups = find_height_groups(elnet)\n",
+ "triple_pair_hg(height_groups)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 98.7 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "height_groups = find_height_groups(elnet)\n",
+ "triple_pair_hg(height_groups)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_triple_pairs_slow(net):\n",
+ " print(len(net))\n",
+ " new_net = eliminate_a_triple_pair_slow(net)\n",
+ " while new_net:\n",
+ " print(len(net))\n",
+ " net = new_net\n",
+ " new_net = eliminate_a_triple_pair_slow(net)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 97,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_triple_pairs(net):\n",
+ " print(len(net))\n",
+ " new_net = eliminate_a_triple_pair(net)\n",
+ " while new_net:\n",
+ " print(len(net))\n",
+ " net = new_net\n",
+ " new_net = eliminate_a_triple_pair(net)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 98,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "etlnet = eliminate_a_triple_pair(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 99,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 100,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "9813\n",
+ "9813\n",
+ "9811\n"
+ ]
+ }
+ ],
+ "source": [
+ "setlnet = eliminate_triple_pairs(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9809"
+ ]
+ },
+ "execution_count": 101,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(setlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 102,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 103,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'ypetfugkzdsacbvwjohqlnirmx'"
+ ]
+ },
+ "execution_count": 103,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, etlnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 104,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'ypetfugkzdsacbvwjohqlnirmx'"
+ ]
+ },
+ "execution_count": 104,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, setlnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 105,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'ypetfugkzdsacbvwjohqlnirmx'"
+ ]
+ },
+ "execution_count": 105,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, elnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 106,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'ypetfugkzdsacbvwjohqlnirmx'"
+ ]
+ },
+ "execution_count": 106,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 107,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 107,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eliminable_pairs(etlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 108,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(10207, 9811)"
+ ]
+ },
+ "execution_count": 108,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(lnet), len(etlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 109,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def simplify(net0):\n",
+ " netp = eliminate_pairs(net0)\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " while new_net:\n",
+ "# print('sipl', len(net0), len(netp), len(new_net))\n",
+ " netp = eliminate_pairs(new_net)\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " return netp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 110,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "simple_lnet = simplify(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 111,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 111,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, simple_lnet)) == ''.join(follow_many(string.ascii_lowercase, lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'ypetfugkzdsacbvwjohqlnirmx'"
+ ]
+ },
+ "execution_count": 112,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, simple_lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 113,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'ypetfugkzdsacbvwjohqlnirmx'"
+ ]
+ },
+ "execution_count": 113,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 114,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9809"
+ ]
+ },
+ "execution_count": 114,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(simple_lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 115,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def add_triple_pair(net, max_lines=None, trace=False):\n",
+ " if not max_lines:\n",
+ " max_lines = max(l.right for l in net)\n",
+ " a, b, c = 0, 0, 0\n",
+ " while len(set((a, b, c))) != 3:\n",
+ " a = random.randrange(max_lines)\n",
+ " b = random.randrange(max_lines)\n",
+ " c = random.randrange(max_lines)\n",
+ " tp = [(min(a, b), max(a, b)), (min(b, c), max(b, c))] * 2\n",
+ " \n",
+ " pairs = [(l.left, l.right) for l in sorted(net)]\n",
+ " i = random.randrange(len(pairs))\n",
+ " if trace: print(i, tp)\n",
+ " new_pairs = pairs[:i] + tp + pairs[i:]\n",
+ " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 116,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def add_pair(net, max_lines=None, trace=False):\n",
+ " if not max_lines:\n",
+ " max_lines = max(l.right for l in net)\n",
+ "\n",
+ " a, b = 0, 0\n",
+ " while a == b:\n",
+ " a = random.randrange(max_lines)\n",
+ " b = random.randrange(max_lines)\n",
+ " p = [(min(a, b), max(a, b))] * 2\n",
+ " \n",
+ " pairs = [(l.left, l.right) for l in sorted(net)]\n",
+ " i = random.randrange(len(pairs))\n",
+ " \n",
+ " if trace: print(i, p)\n",
+ " new_pairs = pairs[:i] + p + pairs[i:]\n",
+ " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 117,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 117,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 118,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 118,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lnettp = simple_lnet\n",
+ "for _ in range(10):\n",
+ " lnettp = add_pair(lnettp)\n",
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 119,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=301, left=7, right=23),\n",
+ " Link(height=302, left=16, right=23),\n",
+ " Link(height=303, left=7, right=23),\n",
+ " Link(height=304, left=16, right=23)),\n",
+ " (Link(height=362, left=11, right=23),\n",
+ " Link(height=363, left=3, right=23),\n",
+ " Link(height=364, left=11, right=23),\n",
+ " Link(height=365, left=3, right=23)),\n",
+ " (Link(height=363, left=3, right=23),\n",
+ " Link(height=364, left=11, right=23),\n",
+ " Link(height=365, left=3, right=23),\n",
+ " Link(height=366, left=11, right=23)),\n",
+ " (Link(height=595, left=12, right=15),\n",
+ " Link(height=596, left=10, right=15),\n",
+ " Link(height=597, left=12, right=15),\n",
+ " Link(height=598, left=10, right=15)),\n",
+ " (Link(height=796, left=12, right=21),\n",
+ " Link(height=797, left=4, right=12),\n",
+ " Link(height=798, left=12, right=21),\n",
+ " Link(height=799, left=4, right=12)),\n",
+ " (Link(height=879, left=0, right=18),\n",
+ " Link(height=880, left=0, right=8),\n",
+ " Link(height=881, left=0, right=18),\n",
+ " Link(height=882, left=0, right=8)),\n",
+ " (Link(height=930, left=3, right=17),\n",
+ " Link(height=931, left=3, right=21),\n",
+ " Link(height=932, left=3, right=17),\n",
+ " Link(height=933, left=3, right=21)),\n",
+ " (Link(height=1120, left=5, right=19),\n",
+ " Link(height=1121, left=18, right=19),\n",
+ " Link(height=1122, left=5, right=19),\n",
+ " Link(height=1123, left=18, right=19)),\n",
+ " (Link(height=2040, left=9, right=21),\n",
+ " Link(height=2041, left=9, right=15),\n",
+ " Link(height=2042, left=9, right=21),\n",
+ " Link(height=2043, left=9, right=15)),\n",
+ " (Link(height=2110, left=13, right=21),\n",
+ " Link(height=2111, left=13, right=24),\n",
+ " Link(height=2112, left=13, right=21),\n",
+ " Link(height=2113, left=13, right=24))]"
+ ]
+ },
+ "execution_count": 119,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lnettp = simple_lnet\n",
+ "for _ in range(10):\n",
+ " lnettp = add_triple_pair(lnettp)\n",
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 120,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=49, left=10, right=20),\n",
+ " Link(height=50, left=2, right=20),\n",
+ " Link(height=51, left=10, right=20),\n",
+ " Link(height=52, left=2, right=20)),\n",
+ " (Link(height=54, left=2, right=24),\n",
+ " Link(height=55, left=3, right=24),\n",
+ " Link(height=56, left=2, right=24),\n",
+ " Link(height=57, left=3, right=24)),\n",
+ " (Link(height=62, left=2, right=15),\n",
+ " Link(height=63, left=0, right=15),\n",
+ " Link(height=64, left=2, right=15),\n",
+ " Link(height=65, left=0, right=15)),\n",
+ " (Link(height=114, left=14, right=18),\n",
+ " Link(height=115, left=3, right=18),\n",
+ " Link(height=116, left=14, right=18),\n",
+ " Link(height=117, left=3, right=18)),\n",
+ " (Link(height=138, left=13, right=19),\n",
+ " Link(height=139, left=8, right=19),\n",
+ " Link(height=140, left=13, right=19),\n",
+ " Link(height=141, left=8, right=19)),\n",
+ " (Link(height=160, left=12, right=13),\n",
+ " Link(height=161, left=4, right=12),\n",
+ " Link(height=162, left=12, right=13),\n",
+ " Link(height=163, left=4, right=12)),\n",
+ " (Link(height=315, left=23, right=24),\n",
+ " Link(height=320, left=20, right=23),\n",
+ " Link(height=321, left=23, right=24),\n",
+ " Link(height=322, left=20, right=23)),\n",
+ " (Link(height=324, left=3, right=18),\n",
+ " Link(height=325, left=16, right=18),\n",
+ " Link(height=326, left=3, right=18),\n",
+ " Link(height=327, left=16, right=18)),\n",
+ " (Link(height=342, left=21, right=22),\n",
+ " Link(height=345, left=1, right=22),\n",
+ " Link(height=346, left=21, right=22),\n",
+ " Link(height=347, left=1, right=22)),\n",
+ " (Link(height=405, left=8, right=19),\n",
+ " Link(height=406, left=4, right=8),\n",
+ " Link(height=407, left=8, right=19),\n",
+ " Link(height=408, left=4, right=8)),\n",
+ " (Link(height=468, left=11, right=22),\n",
+ " Link(height=469, left=15, right=22),\n",
+ " Link(height=470, left=11, right=22),\n",
+ " Link(height=471, left=15, right=22)),\n",
+ " (Link(height=549, left=1, right=2),\n",
+ " Link(height=550, left=1, right=6),\n",
+ " Link(height=551, left=1, right=2),\n",
+ " Link(height=552, left=1, right=6)),\n",
+ " (Link(height=568, left=16, right=21),\n",
+ " Link(height=569, left=11, right=21),\n",
+ " Link(height=570, left=16, right=21),\n",
+ " Link(height=571, left=11, right=21)),\n",
+ " (Link(height=608, left=17, right=20),\n",
+ " Link(height=609, left=2, right=17),\n",
+ " Link(height=610, left=17, right=20),\n",
+ " Link(height=611, left=2, right=17)),\n",
+ " (Link(height=613, left=18, right=21),\n",
+ " Link(height=618, left=18, right=19),\n",
+ " Link(height=619, left=18, right=21),\n",
+ " Link(height=620, left=18, right=19)),\n",
+ " (Link(height=635, left=2, right=4),\n",
+ " Link(height=636, left=4, right=20),\n",
+ " Link(height=637, left=2, right=4),\n",
+ " Link(height=638, left=4, right=20)),\n",
+ " (Link(height=681, left=7, right=20),\n",
+ " Link(height=682, left=20, right=22),\n",
+ " Link(height=683, left=7, right=20),\n",
+ " Link(height=684, left=20, right=22)),\n",
+ " (Link(height=750, left=23, right=24),\n",
+ " Link(height=751, left=18, right=24),\n",
+ " Link(height=752, left=23, right=24),\n",
+ " Link(height=753, left=18, right=24)),\n",
+ " (Link(height=760, left=12, right=18),\n",
+ " Link(height=761, left=17, right=18),\n",
+ " Link(height=762, left=12, right=18),\n",
+ " Link(height=763, left=17, right=18)),\n",
+ " (Link(height=765, left=0, right=9),\n",
+ " Link(height=766, left=0, right=14),\n",
+ " Link(height=767, left=0, right=9),\n",
+ " Link(height=768, left=0, right=14)),\n",
+ " (Link(height=805, left=16, right=22),\n",
+ " Link(height=806, left=0, right=16),\n",
+ " Link(height=807, left=16, right=22),\n",
+ " Link(height=808, left=0, right=16)),\n",
+ " (Link(height=834, left=1, right=6),\n",
+ " Link(height=835, left=3, right=6),\n",
+ " Link(height=836, left=1, right=6),\n",
+ " Link(height=837, left=3, right=6)),\n",
+ " (Link(height=881, left=2, right=12),\n",
+ " Link(height=882, left=2, right=23),\n",
+ " Link(height=883, left=2, right=12),\n",
+ " Link(height=884, left=2, right=23)),\n",
+ " (Link(height=904, left=12, right=23),\n",
+ " Link(height=905, left=12, right=14),\n",
+ " Link(height=906, left=12, right=23),\n",
+ " Link(height=907, left=12, right=14)),\n",
+ " (Link(height=936, left=7, right=17),\n",
+ " Link(height=937, left=15, right=17),\n",
+ " Link(height=938, left=7, right=17),\n",
+ " Link(height=939, left=15, right=17)),\n",
+ " (Link(height=1010, left=4, right=6),\n",
+ " Link(height=1011, left=6, right=17),\n",
+ " Link(height=1012, left=4, right=6),\n",
+ " Link(height=1013, left=6, right=17)),\n",
+ " (Link(height=1030, left=1, right=12),\n",
+ " Link(height=1031, left=1, right=20),\n",
+ " Link(height=1032, left=1, right=12),\n",
+ " Link(height=1033, left=1, right=20)),\n",
+ " (Link(height=1197, left=2, right=9),\n",
+ " Link(height=1198, left=9, right=22),\n",
+ " Link(height=1199, left=2, right=9),\n",
+ " Link(height=1200, left=9, right=22)),\n",
+ " (Link(height=1222, left=2, right=3),\n",
+ " Link(height=1223, left=2, right=5),\n",
+ " Link(height=1224, left=2, right=3),\n",
+ " Link(height=1225, left=2, right=5)),\n",
+ " (Link(height=1318, left=12, right=23),\n",
+ " Link(height=1319, left=4, right=12),\n",
+ " Link(height=1320, left=12, right=23),\n",
+ " Link(height=1321, left=4, right=12)),\n",
+ " (Link(height=1341, left=17, right=22),\n",
+ " Link(height=1342, left=11, right=17),\n",
+ " Link(height=1343, left=17, right=22),\n",
+ " Link(height=1344, left=11, right=17)),\n",
+ " (Link(height=1396, left=4, right=9),\n",
+ " Link(height=1397, left=3, right=9),\n",
+ " Link(height=1398, left=4, right=9),\n",
+ " Link(height=1399, left=3, right=9)),\n",
+ " (Link(height=1426, left=18, right=24),\n",
+ " Link(height=1427, left=17, right=18),\n",
+ " Link(height=1428, left=18, right=24),\n",
+ " Link(height=1429, left=17, right=18)),\n",
+ " (Link(height=1456, left=2, right=15),\n",
+ " Link(height=1457, left=3, right=15),\n",
+ " Link(height=1458, left=2, right=15),\n",
+ " Link(height=1459, left=3, right=15)),\n",
+ " (Link(height=1505, left=13, right=18),\n",
+ " Link(height=1506, left=13, right=21),\n",
+ " Link(height=1507, left=13, right=18),\n",
+ " Link(height=1508, left=13, right=21)),\n",
+ " (Link(height=1551, left=10, right=12),\n",
+ " Link(height=1552, left=4, right=12),\n",
+ " Link(height=1553, left=10, right=12),\n",
+ " Link(height=1554, left=4, right=12)),\n",
+ " (Link(height=1622, left=4, right=11),\n",
+ " Link(height=1623, left=11, right=16),\n",
+ " Link(height=1624, left=4, right=11),\n",
+ " Link(height=1625, left=11, right=16)),\n",
+ " (Link(height=1653, left=8, right=24),\n",
+ " Link(height=1654, left=4, right=8),\n",
+ " Link(height=1655, left=8, right=24),\n",
+ " Link(height=1656, left=4, right=8)),\n",
+ " (Link(height=1688, left=0, right=5),\n",
+ " Link(height=1689, left=0, right=23),\n",
+ " Link(height=1690, left=0, right=5),\n",
+ " Link(height=1691, left=0, right=23)),\n",
+ " (Link(height=1724, left=10, right=23),\n",
+ " Link(height=1725, left=10, right=11),\n",
+ " Link(height=1726, left=10, right=23),\n",
+ " Link(height=1727, left=10, right=11)),\n",
+ " (Link(height=1863, left=1, right=12),\n",
+ " Link(height=1864, left=1, right=13),\n",
+ " Link(height=1865, left=1, right=12),\n",
+ " Link(height=1866, left=1, right=13)),\n",
+ " (Link(height=1873, left=10, right=22),\n",
+ " Link(height=1874, left=10, right=15),\n",
+ " Link(height=1875, left=10, right=22),\n",
+ " Link(height=1876, left=10, right=15)),\n",
+ " (Link(height=1879, left=18, right=20),\n",
+ " Link(height=1880, left=17, right=20),\n",
+ " Link(height=1881, left=18, right=20),\n",
+ " Link(height=1882, left=17, right=20)),\n",
+ " (Link(height=1916, left=18, right=19),\n",
+ " Link(height=1917, left=7, right=18),\n",
+ " Link(height=1918, left=18, right=19),\n",
+ " Link(height=1919, left=7, right=18)),\n",
+ " (Link(height=1961, left=11, right=20),\n",
+ " Link(height=1962, left=7, right=20),\n",
+ " Link(height=1963, left=11, right=20),\n",
+ " Link(height=1964, left=7, right=20)),\n",
+ " (Link(height=1962, left=9, right=18),\n",
+ " Link(height=1963, left=18, right=19),\n",
+ " Link(height=1964, left=9, right=18),\n",
+ " Link(height=1965, left=18, right=19)),\n",
+ " (Link(height=2031, left=3, right=6),\n",
+ " Link(height=2032, left=3, right=4),\n",
+ " Link(height=2033, left=3, right=6),\n",
+ " Link(height=2034, left=3, right=4)),\n",
+ " (Link(height=2077, left=2, right=9),\n",
+ " Link(height=2078, left=2, right=23),\n",
+ " Link(height=2079, left=2, right=9),\n",
+ " Link(height=2080, left=2, right=23)),\n",
+ " (Link(height=2165, left=1, right=8),\n",
+ " Link(height=2166, left=4, right=8),\n",
+ " Link(height=2167, left=1, right=8),\n",
+ " Link(height=2168, left=4, right=8)),\n",
+ " (Link(height=2185, left=6, right=21),\n",
+ " Link(height=2186, left=11, right=21),\n",
+ " Link(height=2187, left=6, right=21),\n",
+ " Link(height=2188, left=11, right=21))]"
+ ]
+ },
+ "execution_count": 120,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lnettp = simple_lnet\n",
+ "for _ in range(50):\n",
+ " lnettp = add_pair(lnettp)\n",
+ "for _ in range(50):\n",
+ " lnettp = add_triple_pair(lnettp)\n",
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 121,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lnettp == pack(lnettp)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 122,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9909"
+ ]
+ },
+ "execution_count": 122,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lnettps = simplify(lnettp)\n",
+ "len(lnettps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(9809, 10109, 9909)"
+ ]
+ },
+ "execution_count": 123,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(simple_lnet), len(lnettp), len(lnettps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 124,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 124,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, lnet)) == ''.join(follow_many(string.ascii_lowercase, simple_lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 125,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 125,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, lnettps)) == ''.join(follow_many(string.ascii_lowercase, lnettp))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2285"
+ ]
+ },
+ "execution_count": 126,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in lnettp)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 127,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def simplify_with_checks(net0):\n",
+ " netp = eliminate_pairs(net0)\n",
+ " if follow_many(string.ascii_lowercase, net0) != follow_many(string.ascii_lowercase, netp):\n",
+ " print('pairs', eliminable_pairs(net0))\n",
+ " return net0\n",
+ " else:\n",
+ " print('pairs ok')\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
+ " hg = find_height_groups(netp)\n",
+ " print('triple', triple_pair_hg(hg))\n",
+ " return netp\n",
+ " else:\n",
+ " print('triple ok')\n",
+ " while new_net:\n",
+ "# print('sipl', len(net0), len(netp), len(new_net))\n",
+ " netp = eliminate_pairs(new_net)\n",
+ " if follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
+ " print('pairs', eliminable_pairs(new_net))\n",
+ " return new_net\n",
+ " else:\n",
+ " print('pairs ok')\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
+ " hg = find_height_groups(netp)\n",
+ " print('triple', triple_pair_hg(hg))\n",
+ " return netp\n",
+ " else:\n",
+ " print('triple ok')\n",
+ " print('** done')\n",
+ " return netp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 128,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "** done\n"
+ ]
+ }
+ ],
+ "source": [
+ "lnettps = simplify_with_checks(lnettp)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 129,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 129,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, lnettps)) == ''.join(follow_many(string.ascii_lowercase, lnettp))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 130,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10109"
+ ]
+ },
+ "execution_count": 130,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(lnettp)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 131,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# open('04-lines.txt', 'w').write(show_net(lnettp, randomise=True, pair_sep='\\n'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 114,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "139"
+ ]
+ },
+ "execution_count": 114,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# open('04-small.txt', 'w').write(show_net(make_net(20), randomise=True, pair_sep='\\n'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 143,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "8 [(2, 4), (0, 4), (2, 4), (0, 4)]\n",
+ "10 [(1, 2), (1, 2)]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=1, right=4),\n",
+ " Link(height=2, left=0, right=3),\n",
+ " Link(height=3, left=0, right=3),\n",
+ " Link(height=4, left=0, right=5),\n",
+ " Link(height=5, left=3, right=5),\n",
+ " Link(height=6, left=0, right=2),\n",
+ " Link(height=7, left=3, right=4),\n",
+ " Link(height=8, left=2, right=4),\n",
+ " Link(height=9, left=1, right=2),\n",
+ " Link(height=10, left=0, right=4),\n",
+ " Link(height=11, left=1, right=2),\n",
+ " Link(height=12, left=2, right=4),\n",
+ " Link(height=13, left=1, right=2),\n",
+ " Link(height=14, left=0, right=4),\n",
+ " Link(height=15, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 143,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "net = make_net(10, lines=6)\n",
+ "net = add_triple_pair(net, trace=True)\n",
+ "net = add_pair(net, trace=True)\n",
+ "net = read_net(show_net(net, randomise=True))\n",
+ "net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 147,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'(2, 5), (1, 4), (0, 3), (0, 3), (0, 5), (3, 5), (0, 2), (3, 4), (2, 4), (1, 2), (0, 4), (1, 2), (2, 4), (1, 2), (0, 4), (1, 4)'"
+ ]
+ },
+ "execution_count": 147,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "show_net(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 149,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=1, right=4),\n",
+ " Link(height=2, left=0, right=3),\n",
+ " Link(height=3, left=0, right=3),\n",
+ " Link(height=4, left=0, right=5),\n",
+ " Link(height=5, left=3, right=5),\n",
+ " Link(height=6, left=0, right=2),\n",
+ " Link(height=7, left=3, right=4),\n",
+ " Link(height=8, left=2, right=4),\n",
+ " Link(height=9, left=1, right=2),\n",
+ " Link(height=10, left=0, right=4),\n",
+ " Link(height=11, left=1, right=2),\n",
+ " Link(height=12, left=2, right=4),\n",
+ " Link(height=13, left=0, right=4),\n",
+ " Link(height=14, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 149,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "net = read_net('(2, 5), (1, 4), (0, 3), (0, 3), (0, 5), (3, 5), (0, 2), (3, 4), (2, 4), (1, 2), (0, 4), (1, 2), (2, 4), (0, 4), (1, 4)')\n",
+ "net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 150,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=0, right=3),\n",
+ " Link(height=0, left=1, right=4),\n",
+ " Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=0, right=3),\n",
+ " Link(height=2, left=0, right=5),\n",
+ " Link(height=3, left=0, right=2),\n",
+ " Link(height=3, left=3, right=5),\n",
+ " Link(height=4, left=3, right=4),\n",
+ " Link(height=5, left=2, right=4),\n",
+ " Link(height=6, left=0, right=4),\n",
+ " Link(height=6, left=1, right=2),\n",
+ " Link(height=7, left=1, right=2),\n",
+ " Link(height=8, left=2, right=4),\n",
+ " Link(height=9, left=0, right=4),\n",
+ " Link(height=10, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 150,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pack(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 151,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=1, right=4),\n",
+ " Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=0, right=5),\n",
+ " Link(height=2, left=0, right=2),\n",
+ " Link(height=2, left=3, right=5),\n",
+ " Link(height=3, left=3, right=4),\n",
+ " Link(height=4, left=2, right=4),\n",
+ " Link(height=5, left=0, right=4),\n",
+ " Link(height=6, left=2, right=4),\n",
+ " Link(height=7, left=0, right=4),\n",
+ " Link(height=8, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 151,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "epnet = eliminate_pairs(net)\n",
+ "pack(epnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 152,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "11\n",
+ "11\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=1, right=4),\n",
+ " Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=0, right=5),\n",
+ " Link(height=2, left=0, right=2),\n",
+ " Link(height=2, left=3, right=5),\n",
+ " Link(height=3, left=3, right=4),\n",
+ " Link(height=4, left=0, right=4),\n",
+ " Link(height=5, left=2, right=4),\n",
+ " Link(height=6, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 152,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eptnet = eliminate_triple_pairs(epnet)\n",
+ "pack(eptnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 153,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 153,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, net)) == ''.join(follow_many(string.ascii_lowercase, eptnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 155,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "104"
+ ]
+ },
+ "execution_count": 155,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "open('04-small.txt', 'w').write(show_net(net, pair_sep='\\n'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.5.2+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
--- /dev/null
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "import collections\n",
+ "import string\n",
+ "import itertools"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "Link = collections.namedtuple('Link', 'height left right')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def link_ends(link):\n",
+ " return set((link.left, link.right))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def read_net(net_string):\n",
+ " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow(initial_line, links):\n",
+ " line = initial_line\n",
+ " heights = sorted(set(l.height for l in links))\n",
+ " for h in heights:\n",
+ " for l in [l for l in links if l.height == h]:\n",
+ " if line in link_ends(l):\n",
+ " line = [e for e in link_ends(l) if e != line][0]\n",
+ "# print(l, line)\n",
+ " return line"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def pack(net):\n",
+ " packed_links = []\n",
+ " line_heights = collections.defaultdict(lambda: -1)\n",
+ " for link in sorted(net):\n",
+ " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
+ " line_heights[link.left] = link_height\n",
+ " line_heights[link.right] = link_height\n",
+ " packed_links += [Link(link_height, link.left, link.right)]\n",
+ " return sorted(packed_links)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow_many_slow(in_sequence, links):\n",
+ " out_sequence = [(follow(i, links), term) \n",
+ " for i, term in enumerate(in_sequence)]\n",
+ " return [term for i, term in sorted(out_sequence)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow_many(in_sequence, net):\n",
+ " height_groups = [list(g) for _, g in itertools.groupby(pack(net), lambda l: l.height)]\n",
+ " seq = list(in_sequence)\n",
+ " for links in height_groups:\n",
+ " for link in links:\n",
+ " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
+ " return seq"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10000 loops, best of 3: 47.5 µs per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many('abcdefghij', net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# %%timeit\n",
+ "# follow_many_slow('abcdefghij', net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def show_net(links, randomise=False):\n",
+ " if randomise:\n",
+ " output = []\n",
+ " heights = sorted(set(l.height for l in links))\n",
+ " for h in heights:\n",
+ " ls = [l for l in links if l.height == h]\n",
+ " random.shuffle(ls)\n",
+ " output += ['({}, {})'.format(l.left, l.right) for l in ls]\n",
+ " return ', '.join(output)\n",
+ " return ', '.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def extract_pairs(net_string):\n",
+ " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(True, True)"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rrnet = read_net(show_net(net, randomise=True))\n",
+ "rnet = read_net(show_net(net))\n",
+ "rnet == rrnet, pack(rrnet) == pnet"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "lnet = make_net(10207, 26, 100000)\n",
+ "plnet = pack(lnet)\n",
+ "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, plnet)\n",
+ "# for i in range(204):\n",
+ "# assert follow(i, lnet) == follow(i, plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "rlnet = read_net(show_net(lnet))\n",
+ "prlnet = pack(rlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2251"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "99998"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10206"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in rlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2251"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(link.height for link in prlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, prlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 24.5 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many(string.ascii_lowercase, lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# %%timeit\n",
+ "# follow_many_slow(string.ascii_lowercase, lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pairs_slow(net):\n",
+ " eps = []\n",
+ " for l in net:\n",
+ " o = Link(l.height + 1, l.left, l.right)\n",
+ " if o in net:\n",
+ " eps += [(l, o)]\n",
+ " return eps "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pairs(net):\n",
+ " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ " eps = []\n",
+ " for h in range(1, max(height_groups.keys())):\n",
+ " for l in height_groups[h]:\n",
+ " o = Link(l.height - 1, l.left, l.right)\n",
+ " if o in height_groups[h-1]:\n",
+ " eps += [(l, o)]\n",
+ " return eps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 23.5 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "eliminable_pairs(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1 loop, best of 3: 2.33 s per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "eliminable_pairs_slow(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert sorted(sorted(p) for p in eliminable_pairs(plnet)) == sorted(sorted(p) for p in eliminable_pairs_slow(plnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pair(net):\n",
+ " for l in net:\n",
+ " o = Link(l.height + 1, l.left, l.right)\n",
+ " if o in net:\n",
+ " return l, o\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pair_hg(height_groups):\n",
+ " for h in range(1, max(height_groups.keys())):\n",
+ " for l in height_groups[h]:\n",
+ " o = Link(l.height - 1, l.left, l.right)\n",
+ " if o in height_groups[h-1]:\n",
+ " return l, o\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_pairs_slow(net):\n",
+ " eliminable_links = eliminable_pair(net)\n",
+ " while eliminable_links:\n",
+ " net = pack(l for l in net if l not in eliminable_links)\n",
+ " eliminable_links = eliminable_pair(net)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_pairs(net):\n",
+ " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ " eliminable_links = eliminable_pair_hg(height_groups)\n",
+ " while eliminable_links:\n",
+ " net = pack(l for l in net if l not in eliminable_links)\n",
+ " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ " eliminable_links = eliminable_pair_hg(height_groups)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10207\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "(10207, 9811)"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "print(len(plnet))\n",
+ "elnet = eliminate_pairs_slow(plnet)\n",
+ "len(plnet), len(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10207\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "(10207, 9811)"
+ ]
+ },
+ "execution_count": 45,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "print(len(plnet))\n",
+ "elnet = eliminate_pairs(plnet)\n",
+ "len(plnet), len(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eliminable_pairs(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert eliminate_pairs_slow(plnet) == eliminate_pairs(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, lnet) == follow_many(string.ascii_lowercase, elnet)\n",
+ "assert follow_many(string.ascii_lowercase, plnet) == follow_many(string.ascii_lowercase, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1 loop, best of 3: 3min 30s per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "elnet = eliminate_pairs_slow(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1 loop, best of 3: 6.27 s per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "elnet = eliminate_pairs(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# for i in range(26):\n",
+ "# assert follow(i, plnet) == follow(i, elnet)\n",
+ "# assert follow(i, lnet) == follow(i, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# follow(0, plnet), follow(0, elnet), follow(0, lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def triple(net):\n",
+ " x = None\n",
+ " y = None\n",
+ " ts = []\n",
+ " for a in net:\n",
+ " bs = [l for l in net if l.height == a.height + 1 \n",
+ " if l.left == a.right or l.right == a.left]\n",
+ " for b in bs:\n",
+ " c = Link(a.height + 2, a.left, a.right)\n",
+ " if c in net:\n",
+ " ts += [(a, b, c)]\n",
+ " return ts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def triple_pair(net):\n",
+ " ts = []\n",
+ " for a in net:\n",
+ " a_ends = link_ends(a)\n",
+ " bs = [l for l in net if l.height == a.height + 1 \n",
+ " if link_ends(l) & a_ends]\n",
+ " if len(bs) == 1:\n",
+ " b = bs[0]\n",
+ " lines = set((a.left, a.right, b.left, b.right))\n",
+ " cs = [l for l in net \n",
+ " if l.height == a.height + 2\n",
+ " if link_ends(l) & lines]\n",
+ " if len(cs) == 1:\n",
+ " c = Link(a.height + 2, a.left, a.right)\n",
+ " if c in cs:\n",
+ " ds = [l for l in net \n",
+ " if l.height == a.height + 3\n",
+ " if link_ends(l) & lines]\n",
+ " d = Link(a.height + 3, b.left, b.right)\n",
+ " if d in ds:\n",
+ " ts += [(a, b, c, d)]\n",
+ " return ts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 129,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def triple_pair_hg(height_groups, debug=False):\n",
+ " ts = []\n",
+ " for h in range(3, max(height_groups.keys())):\n",
+ " for d in height_groups[h]:\n",
+ " if debug: print('d:', d)\n",
+ " ch = h - 1\n",
+ " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
+ " if debug: print('cs:', cs)\n",
+ " while ch > 2 and not cs:\n",
+ " ch -= 1\n",
+ " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
+ " if debug: print('cs:', cs)\n",
+ " if len(cs) == 1:\n",
+ " c = cs[0]\n",
+ " lines = set((d.left, d.right, c.left, c.right))\n",
+ " if debug: print('c:', '; lines:', lines)\n",
+ " bs = [l for l in height_groups[ch-1] if link_ends(l) & lines]\n",
+ " b = Link(ch - 1, d.left, d.right)\n",
+ " if debug: print('b:', b, '; bs:', bs)\n",
+ " if len(bs) == 1 and b in bs:\n",
+ " ah = b.height - 1\n",
+ " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
+ " if debug: print('ah:', ah, '; als:', als)\n",
+ " while ah > 0 and not als:\n",
+ " ah -= 1\n",
+ " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
+ " if debug: print('ah:', ah, '; als:', als)\n",
+ " a = Link(ah, c.left, c.right)\n",
+ " if debug: print('a:', a)\n",
+ " if a in als:\n",
+ " if debug: print('adding:', a, b, c, d)\n",
+ " ts += [(a, b, c, d)]\n",
+ " return ts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 132,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_a_triple_pair_slow(net):\n",
+ " tps = triple_pair(net)\n",
+ " print('eatp', tps)\n",
+ "\n",
+ " if tps:\n",
+ " a, b, c, d = tps[0]\n",
+ "# x = Link(a.height, b.left, b.right)\n",
+ "# y = Link(b.height, a.left, a.right)\n",
+ " x = Link(a.height, b.left, b.right)\n",
+ " y = Link(b.height, a.left, a.right)\n",
+ " print('removing', a, b, c, d, '; adding', x, y)\n",
+ " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 133,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_a_triple_pair(net):\n",
+ " height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ "\n",
+ " tps = triple_pair_hg(height_groups)\n",
+ " print('eatp', tps)\n",
+ " if tps:\n",
+ " a, b, c, d = tps[0]\n",
+ " x = Link(a.height, b.left, b.right)\n",
+ " y = Link(b.height, a.left, a.right)\n",
+ " print('removing', a, b, c, d, '; adding', x, y)\n",
+ " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=12, left=0, right=5),\n",
+ " Link(height=13, left=5, right=11),\n",
+ " Link(height=14, left=0, right=5)),\n",
+ " (Link(height=29, left=2, right=18),\n",
+ " Link(height=30, left=1, right=2),\n",
+ " Link(height=31, left=2, right=18)),\n",
+ " (Link(height=40, left=2, right=3),\n",
+ " Link(height=41, left=3, right=18),\n",
+ " Link(height=42, left=2, right=3)),\n",
+ " (Link(height=43, left=1, right=10),\n",
+ " Link(height=44, left=10, right=20),\n",
+ " Link(height=45, left=1, right=10)),\n",
+ " (Link(height=91, left=5, right=8),\n",
+ " Link(height=92, left=3, right=5),\n",
+ " Link(height=93, left=5, right=8)),\n",
+ " (Link(height=91, left=5, right=8),\n",
+ " Link(height=92, left=8, right=18),\n",
+ " Link(height=93, left=5, right=8)),\n",
+ " (Link(height=99, left=13, right=17),\n",
+ " Link(height=100, left=4, right=13),\n",
+ " Link(height=101, left=13, right=17)),\n",
+ " (Link(height=120, left=18, right=20),\n",
+ " Link(height=121, left=9, right=18),\n",
+ " Link(height=122, left=18, right=20)),\n",
+ " (Link(height=147, left=19, right=21),\n",
+ " Link(height=148, left=7, right=19),\n",
+ " Link(height=149, left=19, right=21)),\n",
+ " (Link(height=147, left=19, right=21),\n",
+ " Link(height=148, left=21, right=23),\n",
+ " Link(height=149, left=19, right=21)),\n",
+ " (Link(height=179, left=13, right=25),\n",
+ " Link(height=180, left=12, right=13),\n",
+ " Link(height=181, left=13, right=25)),\n",
+ " (Link(height=265, left=3, right=20),\n",
+ " Link(height=266, left=20, right=23),\n",
+ " Link(height=267, left=3, right=20)),\n",
+ " (Link(height=291, left=5, right=23),\n",
+ " Link(height=292, left=2, right=5),\n",
+ " Link(height=293, left=5, right=23)),\n",
+ " (Link(height=292, left=18, right=25),\n",
+ " Link(height=293, left=0, right=18),\n",
+ " Link(height=294, left=18, right=25)),\n",
+ " (Link(height=302, left=11, right=19),\n",
+ " Link(height=303, left=6, right=11),\n",
+ " Link(height=304, left=11, right=19)),\n",
+ " (Link(height=309, left=15, right=20),\n",
+ " Link(height=310, left=20, right=25),\n",
+ " Link(height=311, left=15, right=20)),\n",
+ " (Link(height=325, left=13, right=18),\n",
+ " Link(height=326, left=11, right=13),\n",
+ " Link(height=327, left=13, right=18)),\n",
+ " (Link(height=362, left=11, right=22),\n",
+ " Link(height=363, left=22, right=24),\n",
+ " Link(height=364, left=11, right=22)),\n",
+ " (Link(height=372, left=22, right=23),\n",
+ " Link(height=373, left=1, right=22),\n",
+ " Link(height=374, left=22, right=23)),\n",
+ " (Link(height=386, left=4, right=17),\n",
+ " Link(height=387, left=17, right=21),\n",
+ " Link(height=388, left=4, right=17)),\n",
+ " (Link(height=393, left=4, right=16),\n",
+ " Link(height=394, left=0, right=4),\n",
+ " Link(height=395, left=4, right=16)),\n",
+ " (Link(height=531, left=0, right=4),\n",
+ " Link(height=532, left=4, right=15),\n",
+ " Link(height=533, left=0, right=4)),\n",
+ " (Link(height=575, left=5, right=21),\n",
+ " Link(height=576, left=1, right=5),\n",
+ " Link(height=577, left=5, right=21)),\n",
+ " (Link(height=639, left=7, right=11),\n",
+ " Link(height=640, left=11, right=17),\n",
+ " Link(height=641, left=7, right=11)),\n",
+ " (Link(height=687, left=2, right=4),\n",
+ " Link(height=688, left=4, right=15),\n",
+ " Link(height=689, left=2, right=4)),\n",
+ " (Link(height=706, left=8, right=11),\n",
+ " Link(height=707, left=11, right=22),\n",
+ " Link(height=708, left=8, right=11)),\n",
+ " (Link(height=722, left=22, right=23),\n",
+ " Link(height=723, left=21, right=22),\n",
+ " Link(height=724, left=22, right=23)),\n",
+ " (Link(height=768, left=9, right=11),\n",
+ " Link(height=769, left=11, right=17),\n",
+ " Link(height=770, left=9, right=11)),\n",
+ " (Link(height=792, left=5, right=12),\n",
+ " Link(height=793, left=12, right=17),\n",
+ " Link(height=794, left=5, right=12)),\n",
+ " (Link(height=805, left=20, right=22),\n",
+ " Link(height=806, left=19, right=20),\n",
+ " Link(height=807, left=20, right=22)),\n",
+ " (Link(height=806, left=19, right=20),\n",
+ " Link(height=807, left=18, right=19),\n",
+ " Link(height=808, left=19, right=20)),\n",
+ " (Link(height=806, left=19, right=20),\n",
+ " Link(height=807, left=20, right=22),\n",
+ " Link(height=808, left=19, right=20)),\n",
+ " (Link(height=882, left=7, right=14),\n",
+ " Link(height=883, left=14, right=22),\n",
+ " Link(height=884, left=7, right=14)),\n",
+ " (Link(height=884, left=6, right=11),\n",
+ " Link(height=885, left=11, right=19),\n",
+ " Link(height=886, left=6, right=11)),\n",
+ " (Link(height=892, left=12, right=17),\n",
+ " Link(height=893, left=10, right=12),\n",
+ " Link(height=894, left=12, right=17)),\n",
+ " (Link(height=916, left=18, right=24),\n",
+ " Link(height=917, left=16, right=18),\n",
+ " Link(height=918, left=18, right=24)),\n",
+ " (Link(height=919, left=14, right=17),\n",
+ " Link(height=920, left=6, right=14),\n",
+ " Link(height=921, left=14, right=17)),\n",
+ " (Link(height=994, left=0, right=3),\n",
+ " Link(height=995, left=3, right=24),\n",
+ " Link(height=996, left=0, right=3)),\n",
+ " (Link(height=1012, left=9, right=12),\n",
+ " Link(height=1013, left=12, right=24),\n",
+ " Link(height=1014, left=9, right=12)),\n",
+ " (Link(height=1034, left=1, right=6),\n",
+ " Link(height=1035, left=6, right=12),\n",
+ " Link(height=1036, left=1, right=6)),\n",
+ " (Link(height=1035, left=7, right=21),\n",
+ " Link(height=1036, left=4, right=7),\n",
+ " Link(height=1037, left=7, right=21)),\n",
+ " (Link(height=1047, left=3, right=10),\n",
+ " Link(height=1048, left=10, right=11),\n",
+ " Link(height=1049, left=3, right=10)),\n",
+ " (Link(height=1088, left=7, right=8),\n",
+ " Link(height=1089, left=8, right=14),\n",
+ " Link(height=1090, left=7, right=8)),\n",
+ " (Link(height=1104, left=3, right=10),\n",
+ " Link(height=1105, left=10, right=11),\n",
+ " Link(height=1106, left=3, right=10)),\n",
+ " (Link(height=1135, left=5, right=8),\n",
+ " Link(height=1136, left=8, right=19),\n",
+ " Link(height=1137, left=5, right=8)),\n",
+ " (Link(height=1138, left=1, right=3),\n",
+ " Link(height=1139, left=3, right=23),\n",
+ " Link(height=1140, left=1, right=3)),\n",
+ " (Link(height=1146, left=5, right=7),\n",
+ " Link(height=1147, left=7, right=24),\n",
+ " Link(height=1148, left=5, right=7)),\n",
+ " (Link(height=1197, left=5, right=14),\n",
+ " Link(height=1198, left=14, right=15),\n",
+ " Link(height=1199, left=5, right=14)),\n",
+ " (Link(height=1205, left=7, right=23),\n",
+ " Link(height=1206, left=3, right=7),\n",
+ " Link(height=1207, left=7, right=23)),\n",
+ " (Link(height=1276, left=18, right=25),\n",
+ " Link(height=1277, left=17, right=18),\n",
+ " Link(height=1278, left=18, right=25)),\n",
+ " (Link(height=1319, left=14, right=20),\n",
+ " Link(height=1320, left=20, right=24),\n",
+ " Link(height=1321, left=14, right=20)),\n",
+ " (Link(height=1328, left=8, right=21),\n",
+ " Link(height=1329, left=1, right=8),\n",
+ " Link(height=1330, left=8, right=21)),\n",
+ " (Link(height=1329, left=2, right=14),\n",
+ " Link(height=1330, left=14, right=25),\n",
+ " Link(height=1331, left=2, right=14)),\n",
+ " (Link(height=1385, left=10, right=14),\n",
+ " Link(height=1386, left=14, right=15),\n",
+ " Link(height=1387, left=10, right=14)),\n",
+ " (Link(height=1419, left=2, right=8),\n",
+ " Link(height=1420, left=8, right=15),\n",
+ " Link(height=1421, left=2, right=8)),\n",
+ " (Link(height=1465, left=13, right=21),\n",
+ " Link(height=1466, left=21, right=24),\n",
+ " Link(height=1467, left=13, right=21)),\n",
+ " (Link(height=1514, left=11, right=15),\n",
+ " Link(height=1515, left=15, right=21),\n",
+ " Link(height=1516, left=11, right=15)),\n",
+ " (Link(height=1545, left=3, right=11),\n",
+ " Link(height=1546, left=11, right=25),\n",
+ " Link(height=1547, left=3, right=11)),\n",
+ " (Link(height=1561, left=7, right=18),\n",
+ " Link(height=1562, left=0, right=7),\n",
+ " Link(height=1563, left=7, right=18)),\n",
+ " (Link(height=1671, left=9, right=15),\n",
+ " Link(height=1672, left=15, right=23),\n",
+ " Link(height=1673, left=9, right=15)),\n",
+ " (Link(height=1701, left=13, right=21),\n",
+ " Link(height=1702, left=4, right=13),\n",
+ " Link(height=1703, left=13, right=21)),\n",
+ " (Link(height=1706, left=5, right=13),\n",
+ " Link(height=1707, left=13, right=23),\n",
+ " Link(height=1708, left=5, right=13)),\n",
+ " (Link(height=1730, left=7, right=16),\n",
+ " Link(height=1731, left=1, right=7),\n",
+ " Link(height=1732, left=7, right=16)),\n",
+ " (Link(height=1781, left=0, right=8),\n",
+ " Link(height=1782, left=8, right=17),\n",
+ " Link(height=1783, left=0, right=8)),\n",
+ " (Link(height=1784, left=8, right=18),\n",
+ " Link(height=1785, left=1, right=8),\n",
+ " Link(height=1786, left=8, right=18)),\n",
+ " (Link(height=1804, left=19, right=24),\n",
+ " Link(height=1805, left=7, right=19),\n",
+ " Link(height=1806, left=19, right=24)),\n",
+ " (Link(height=1827, left=3, right=23),\n",
+ " Link(height=1828, left=23, right=25),\n",
+ " Link(height=1829, left=3, right=23)),\n",
+ " (Link(height=1837, left=1, right=16),\n",
+ " Link(height=1838, left=16, right=17),\n",
+ " Link(height=1839, left=1, right=16)),\n",
+ " (Link(height=1849, left=18, right=25),\n",
+ " Link(height=1850, left=4, right=18),\n",
+ " Link(height=1851, left=18, right=25)),\n",
+ " (Link(height=1856, left=6, right=13),\n",
+ " Link(height=1857, left=13, right=17),\n",
+ " Link(height=1858, left=6, right=13)),\n",
+ " (Link(height=1875, left=2, right=11),\n",
+ " Link(height=1876, left=11, right=15),\n",
+ " Link(height=1877, left=2, right=11)),\n",
+ " (Link(height=1970, left=6, right=24),\n",
+ " Link(height=1971, left=1, right=6),\n",
+ " Link(height=1972, left=6, right=24)),\n",
+ " (Link(height=2075, left=20, right=25),\n",
+ " Link(height=2076, left=5, right=20),\n",
+ " Link(height=2077, left=20, right=25)),\n",
+ " (Link(height=2081, left=4, right=19),\n",
+ " Link(height=2082, left=1, right=4),\n",
+ " Link(height=2083, left=4, right=19)),\n",
+ " (Link(height=2111, left=3, right=25),\n",
+ " Link(height=2112, left=1, right=3),\n",
+ " Link(height=2113, left=3, right=25)),\n",
+ " (Link(height=2225, left=3, right=12),\n",
+ " Link(height=2226, left=12, right=24),\n",
+ " Link(height=2227, left=3, right=12)),\n",
+ " (Link(height=2242, left=3, right=18),\n",
+ " Link(height=2243, left=18, right=23),\n",
+ " Link(height=2244, left=3, right=18))]"
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "triple(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=316, left=8, right=17),\n",
+ " Link(height=317, left=8, right=21),\n",
+ " Link(height=318, left=8, right=17),\n",
+ " Link(height=319, left=8, right=21)),\n",
+ " (Link(height=867, left=4, right=11),\n",
+ " Link(height=868, left=5, right=11),\n",
+ " Link(height=869, left=4, right=11),\n",
+ " Link(height=870, left=5, right=11))]"
+ ]
+ },
+ "execution_count": 59,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "triple_pair(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=316, left=8, right=17),\n",
+ " Link(height=317, left=8, right=21),\n",
+ " Link(height=318, left=8, right=17),\n",
+ " Link(height=319, left=8, right=21)),\n",
+ " (Link(height=867, left=4, right=11),\n",
+ " Link(height=868, left=5, right=11),\n",
+ " Link(height=869, left=4, right=11),\n",
+ " Link(height=870, left=5, right=11))]"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(elnet), lambda l: l.height)}\n",
+ "triple_pair_hg(height_groups)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=1368, left=13, right=19),\n",
+ " Link(height=1368, left=14, right=16),\n",
+ " Link(height=1369, left=3, right=6)]"
+ ]
+ },
+ "execution_count": 61,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "[l for l in elnet if l.height >= 1367 if l.height <= 1370 if link_ends(l) & set((6, 16, 19))]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1 loop, best of 3: 21.3 s per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "triple_pair(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 105 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(elnet), lambda l: l.height)}\n",
+ "triple_pair_hg(height_groups)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(elnet), lambda l: l.height)}\n",
+ "assert triple_pair_hg(height_groups) == triple_pair(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=242, left=8, right=9),\n",
+ " Link(height=242, left=15, right=21),\n",
+ " Link(height=243, left=1, right=9),\n",
+ " Link(height=243, left=8, right=14),\n",
+ " Link(height=243, left=11, right=15),\n",
+ " Link(height=244, left=1, right=18),\n",
+ " Link(height=244, left=6, right=8),\n",
+ " Link(height=244, left=9, right=20),\n",
+ " Link(height=244, left=15, right=25),\n",
+ " Link(height=245, left=0, right=15),\n",
+ " Link(height=245, left=1, right=16),\n",
+ " Link(height=245, left=9, right=12),\n",
+ " Link(height=245, left=18, right=21)]"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "[l for l in elnet if l.height >= 242 if l.height <= 245 ] #if l.left in [13, 17, 20] or l.right in [13, 17, 20]]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_triple_pairs_slow(net):\n",
+ " print(len(net))\n",
+ " new_net = eliminate_a_triple_pair_slow(net)\n",
+ " while new_net:\n",
+ " print(len(net))\n",
+ " net = new_net\n",
+ " new_net = eliminate_a_triple_pair_slow(net)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 118,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_triple_pairs(net):\n",
+ " print(len(net))\n",
+ " new_net = eliminate_a_triple_pair(net)\n",
+ " while new_net:\n",
+ " print(len(net))\n",
+ " net = new_net\n",
+ " new_net = eliminate_a_triple_pair(net)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 134,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "9811\n",
+ "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
+ "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=316, left=8, right=21) Link(height=317, left=8, right=17)\n",
+ "9811\n",
+ "eatp [(Link(height=866, left=4, right=11), Link(height=867, left=5, right=11), Link(height=868, left=4, right=11), Link(height=869, left=5, right=11))]\n",
+ "removing Link(height=866, left=4, right=11) Link(height=867, left=5, right=11) Link(height=868, left=4, right=11) Link(height=869, left=5, right=11) ; adding Link(height=866, left=5, right=11) Link(height=867, left=4, right=11)\n",
+ "9809\n",
+ "eatp []\n"
+ ]
+ }
+ ],
+ "source": [
+ "etlnet = eliminate_triple_pairs(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
+ "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=317, left=8, right=17) Link(height=318, left=8, right=21)\n"
+ ]
+ }
+ ],
+ "source": [
+ "etlnet = eliminate_a_triple_pair(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 135,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 136,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=315, left=17, right=20),\n",
+ " Link(height=316, left=8, right=17),\n",
+ " Link(height=317, left=8, right=21),\n",
+ " Link(height=318, left=8, right=17),\n",
+ " Link(height=319, left=8, right=21),\n",
+ " Link(height=319, left=14, right=17),\n",
+ " Link(height=320, left=2, right=8),\n",
+ " Link(height=320, left=17, right=21)]"
+ ]
+ },
+ "execution_count": 136,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "[l for l in elnet if l.height >= 315 if l.height <= 320 if link_ends(l) & set((8, 17, 21))] "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 137,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=17, right=20),\n",
+ " Link(height=1, left=8, right=17),\n",
+ " Link(height=2, left=8, right=21),\n",
+ " Link(height=3, left=8, right=17),\n",
+ " Link(height=4, left=8, right=21),\n",
+ " Link(height=4, left=14, right=17),\n",
+ " Link(height=5, left=2, right=8),\n",
+ " Link(height=5, left=17, right=21)]"
+ ]
+ },
+ "execution_count": 137,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "nf = [l for l in elnet if l.height >= 315 if l.height <= 320 if link_ends(l) & set((8, 17, 21))]\n",
+ "pnf = pack(nf)\n",
+ "pnf"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 138,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "d: Link(height=3, left=8, right=17)\n",
+ "cs: [Link(height=2, left=8, right=21)]\n",
+ "c: ; lines: {8, 17, 21}\n",
+ "b: Link(height=1, left=8, right=17) ; bs: [Link(height=1, left=8, right=17)]\n",
+ "ah: 0 ; als: []\n",
+ "a: Link(height=0, left=8, right=21)\n",
+ "d: Link(height=4, left=8, right=21)\n",
+ "cs: [Link(height=3, left=8, right=17)]\n",
+ "c: ; lines: {8, 17, 21}\n",
+ "b: Link(height=2, left=8, right=21) ; bs: [Link(height=2, left=8, right=21)]\n",
+ "ah: 1 ; als: [Link(height=1, left=8, right=17)]\n",
+ "a: Link(height=1, left=8, right=17)\n",
+ "adding: Link(height=1, left=8, right=17) Link(height=2, left=8, right=21) Link(height=3, left=8, right=17) Link(height=4, left=8, right=21)\n",
+ "d: Link(height=4, left=14, right=17)\n",
+ "cs: [Link(height=3, left=8, right=17)]\n",
+ "c: ; lines: {8, 17, 14}\n",
+ "b: Link(height=2, left=14, right=17) ; bs: [Link(height=2, left=8, right=21)]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=1, left=8, right=17),\n",
+ " Link(height=2, left=8, right=21),\n",
+ " Link(height=3, left=8, right=17),\n",
+ " Link(height=4, left=8, right=21))]"
+ ]
+ },
+ "execution_count": 138,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(pnf), lambda l: l.height)}\n",
+ "triple_pair_hg(height_groups, debug=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 139,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "9811\n",
+ "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
+ "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=316, left=8, right=21) Link(height=317, left=8, right=17)\n",
+ "9811\n",
+ "eatp [(Link(height=866, left=4, right=11), Link(height=867, left=5, right=11), Link(height=868, left=4, right=11), Link(height=869, left=5, right=11))]\n",
+ "removing Link(height=866, left=4, right=11) Link(height=867, left=5, right=11) Link(height=868, left=4, right=11) Link(height=869, left=5, right=11) ; adding Link(height=866, left=5, right=11) Link(height=867, left=4, right=11)\n",
+ "9809\n",
+ "eatp []\n"
+ ]
+ }
+ ],
+ "source": [
+ "setlnet = eliminate_triple_pairs_slow(elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 140,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9807"
+ ]
+ },
+ "execution_count": 140,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(setlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 141,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, etlnet) == follow_many(string.ascii_lowercase, elnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 142,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zdunvslcfiqywjmkobhxtraegp'"
+ ]
+ },
+ "execution_count": 142,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, etlnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 143,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zdunvslcfiqywjmkobhxtraegp'"
+ ]
+ },
+ "execution_count": 143,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, setlnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 144,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zdunvslcfiqywjmkobhxtraegp'"
+ ]
+ },
+ "execution_count": 144,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, elnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 145,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zdunvslcfiqywjmkobhxtraegp'"
+ ]
+ },
+ "execution_count": 145,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 146,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 146,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eliminable_pairs(etlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 147,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(10207, 9807)"
+ ]
+ },
+ "execution_count": 147,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(lnet), len(etlnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 148,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def simplify(net0):\n",
+ " netp = eliminate_pairs(net0)\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " while new_net:\n",
+ "# print('sipl', len(net0), len(netp), len(new_net))\n",
+ " netp = eliminate_pairs(new_net)\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " return netp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 149,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "eatp [(Link(height=316, left=8, right=17), Link(height=317, left=8, right=21), Link(height=318, left=8, right=17), Link(height=319, left=8, right=21)), (Link(height=867, left=4, right=11), Link(height=868, left=5, right=11), Link(height=869, left=4, right=11), Link(height=870, left=5, right=11))]\n",
+ "removing Link(height=316, left=8, right=17) Link(height=317, left=8, right=21) Link(height=318, left=8, right=17) Link(height=319, left=8, right=21) ; adding Link(height=316, left=8, right=21) Link(height=317, left=8, right=17)\n",
+ "eatp [(Link(height=866, left=4, right=11), Link(height=867, left=5, right=11), Link(height=868, left=4, right=11), Link(height=869, left=5, right=11))]\n",
+ "removing Link(height=866, left=4, right=11) Link(height=867, left=5, right=11) Link(height=868, left=4, right=11) Link(height=869, left=5, right=11) ; adding Link(height=866, left=5, right=11) Link(height=867, left=4, right=11)\n",
+ "eatp []\n"
+ ]
+ }
+ ],
+ "source": [
+ "simple_lnet = simplify(plnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 150,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 150,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, simple_lnet)) == ''.join(follow_many(string.ascii_lowercase, lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 151,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zdunvslcfiqywjmkobhxtraegp'"
+ ]
+ },
+ "execution_count": 151,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, simple_lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 152,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zdunvslcfiqywjmkobhxtraegp'"
+ ]
+ },
+ "execution_count": 152,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, lnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 153,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9807"
+ ]
+ },
+ "execution_count": 153,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(simple_lnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def add_triple_pair(net, max_lines=None):\n",
+ " if not max_lines:\n",
+ " max_lines = max(l.right for l in net)\n",
+ " a, b, c = 0, 0, 0\n",
+ " while len(set((a, b, c))) != 3:\n",
+ " a = random.randrange(max_lines)\n",
+ " b = random.randrange(max_lines)\n",
+ " c = random.randrange(max_lines)\n",
+ " tp = [(min(a, b), max(a, b)), (min(b, c), max(b, c))] * 2\n",
+ " \n",
+ " pairs = [(l.left, l.right) for l in sorted(net)]\n",
+ " i = random.randrange(len(pairs))\n",
+ " print(i, tp)\n",
+ " new_pairs = pairs[:i] + tp + pairs[i:]\n",
+ " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def add_pair(net, max_lines=None):\n",
+ " if not max_lines:\n",
+ " max_lines = max(l.right for l in net)\n",
+ "\n",
+ " a, b = 0, 0\n",
+ " while a == b:\n",
+ " a = random.randrange(max_lines)\n",
+ " b = random.randrange(max_lines)\n",
+ " p = [(min(a, b), max(a, b))] * 2\n",
+ " \n",
+ " pairs = [(l.left, l.right) for l in sorted(net)]\n",
+ " i = random.randrange(len(pairs))\n",
+ " \n",
+ " print(i, p)\n",
+ " new_pairs = pairs[:i] + p + pairs[i:]\n",
+ " return pack([Link(h, l, r) for h, (l, r) in enumerate(new_pairs)]) "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true,
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "lnettp = simple_lnet\n",
+ "for _ in range(10):\n",
+ " lnettp = add_pair(lnettp)\n",
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true,
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "lnettp = simple_lnet\n",
+ "for _ in range(10):\n",
+ " lnettp = add_triple_pair(lnettp)\n",
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true,
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "lnettp = simple_lnet\n",
+ "for _ in range(10):\n",
+ " lnettp = add_pair(lnettp)\n",
+ "for _ in range(10):\n",
+ " lnettp = add_triple_pair(lnettp)\n",
+ "height_groups = {h: list(g) for h, g in itertools.groupby(pack(lnettp), lambda l: l.height)}\n",
+ "tps = triple_pair_hg(height_groups)\n",
+ "tps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "lnettp == pack(lnettp)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "lnettps = simplify(lnettp)\n",
+ "len(lnettps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "len(simple_lnet), len(lnettp), len(lnettps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.5.2+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
--- /dev/null
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "import collections\n",
+ "import string\n",
+ "import itertools\n",
+ "import re"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "Link = collections.namedtuple('Link', 'height left right')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def extract_pairs(net_string):\n",
+ " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def read_net_string(net_string):\n",
+ " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def read_net(filename, rev=False):\n",
+ " with open(filename) as f:\n",
+ " pairs = [re.split('\\D+', p.strip()) for p in f.readlines()]\n",
+ " if rev:\n",
+ " lrs = [(int(lr[1]), int(lr[2])) for lr in reversed(pairs)]\n",
+ " else:\n",
+ " lrs = [(int(lr[1]), int(lr[2])) for lr in pairs]\n",
+ " return [Link(h, l, r) \n",
+ " for h, (l, r) in enumerate(lrs)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=1, right=4),\n",
+ " Link(height=2, left=0, right=3),\n",
+ " Link(height=3, left=0, right=3),\n",
+ " Link(height=4, left=0, right=5),\n",
+ " Link(height=5, left=3, right=5),\n",
+ " Link(height=6, left=0, right=2),\n",
+ " Link(height=7, left=3, right=4),\n",
+ " Link(height=8, left=2, right=4),\n",
+ " Link(height=9, left=1, right=2),\n",
+ " Link(height=10, left=0, right=4),\n",
+ " Link(height=11, left=1, right=2),\n",
+ " Link(height=12, left=2, right=4),\n",
+ " Link(height=13, left=0, right=4),\n",
+ " Link(height=14, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "small_net = read_net('04-small.txt')\n",
+ "small_net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10135"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "net = read_net('04-lines.txt')\n",
+ "len(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "23"
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "permnet = read_net('permutations.txt')\n",
+ "len(permnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "23"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rpermnet = read_net('permutations.txt', rev=True)\n",
+ "len(rpermnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def show_net(links, pair_sep=', '):\n",
+ " return pair_sep.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def link_ends(link):\n",
+ " return set((link.left, link.right))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow(initial_line, links):\n",
+ " line = initial_line\n",
+ " heights = sorted(set(l.height for l in links))\n",
+ " for h in heights:\n",
+ " for l in [l for l in links if l.height == h]:\n",
+ " if line in link_ends(l):\n",
+ " line = [e for e in link_ends(l) if e != line][0]\n",
+ "# print(l, line)\n",
+ " return line"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def pack(net):\n",
+ " packed_links = []\n",
+ " line_heights = collections.defaultdict(lambda: -1)\n",
+ " for link in sorted(net):\n",
+ " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
+ " line_heights[link.left] = link_height\n",
+ " line_heights[link.right] = link_height\n",
+ " packed_links += [Link(link_height, link.left, link.right)]\n",
+ " return sorted(packed_links)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "14"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in small_net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in pack(small_net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10134"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "pnet = pack(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2286"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def height_groups(net):\n",
+ " return {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow_many(in_sequence, net):\n",
+ " hgs = height_groups(net)\n",
+ " seq = list(in_sequence)\n",
+ " for h in hgs:\n",
+ " for link in hgs[h]:\n",
+ " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
+ " return seq"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'acfbed'"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many('abcdef', small_net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " 0 ['0', '1', '2', '3', '4', '5']\n",
+ " 1 (2, 5) ['0', '1', '5', '3', '4', '2']\n",
+ " 2 (1, 4) ['0', '4', '5', '3', '1', '2']\n",
+ " 3 (0, 3) ['3', '4', '5', '0', '1', '2']\n",
+ " 4 (0, 3) ['0', '4', '5', '3', '1', '2']\n",
+ " 5 (0, 5) ['2', '4', '5', '3', '1', '0']\n",
+ " 6 (3, 5) ['2', '4', '5', '0', '1', '3']\n",
+ " 7 (0, 2) ['5', '4', '2', '0', '1', '3']\n",
+ " 8 (3, 4) ['5', '4', '2', '1', '0', '3']\n",
+ " 9 (2, 4) ['5', '4', '0', '1', '2', '3']\n",
+ "10 (1, 2) ['5', '0', '4', '1', '2', '3']\n",
+ "11 (0, 4) ['2', '0', '4', '1', '5', '3']\n",
+ "12 (1, 2) ['2', '4', '0', '1', '5', '3']\n",
+ "13 (2, 4) ['2', '4', '5', '1', '0', '3']\n",
+ "14 (0, 4) ['0', '4', '5', '1', '2', '3']\n",
+ "15 (1, 4) ['0', '2', '5', '1', '4', '3']\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(len(small_net)+1):\n",
+ " pre_net = small_net[:i]\n",
+ " if i == 0:\n",
+ " print('{:2}'.format(i), \n",
+ " \" \".format(small_net[i-1].left, small_net[i-1].right),\n",
+ " follow_many(\"012345\", pre_net))\n",
+ " else:\n",
+ " print('{:2}'.format(i), \n",
+ " \"({}, {})\".format(small_net[i-1].left, small_net[i-1].right),\n",
+ " follow_many(\"012345\", pre_net))\n",
+ "\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=1, right=4),\n",
+ " Link(height=2, left=0, right=3),\n",
+ " Link(height=3, left=0, right=3),\n",
+ " Link(height=4, left=0, right=5),\n",
+ " Link(height=5, left=3, right=5),\n",
+ " Link(height=6, left=0, right=2),\n",
+ " Link(height=7, left=3, right=4),\n",
+ " Link(height=8, left=2, right=4),\n",
+ " Link(height=9, left=1, right=2),\n",
+ " Link(height=10, left=0, right=4),\n",
+ " Link(height=11, left=1, right=2),\n",
+ " Link(height=12, left=2, right=4),\n",
+ " Link(height=13, left=0, right=4),\n",
+ " Link(height=14, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "small_net[:15]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10000 loops, best of 3: 42 µs per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many('abcdefghij', small_net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zfrasxwigvjoembqcyhplnktud'"
+ ]
+ },
+ "execution_count": 39,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, permnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, rpermnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "follow_many(string.ascii_lowercase, net) == follow_many(string.ascii_lowercase, rpermnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 19.3 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many(string.ascii_lowercase, net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "100 loops, best of 3: 18.7 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many(string.ascii_lowercase, pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.5.2+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
--- /dev/null
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "import collections\n",
+ "import string\n",
+ "import itertools\n",
+ "import re"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "Link = collections.namedtuple('Link', 'height left right')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def extract_pairs(net_string):\n",
+ " return [[int(pi) for pi in p.split(', ')] for p in net_string[1:-1].split('), (')]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def read_net_string(net_string):\n",
+ " return [Link(h, l, r) for h, (l, r) in enumerate(extract_pairs(net_string))]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# def read_net(filename):\n",
+ "# with open(filename) as f:\n",
+ "# pairs = [re.split('\\D+', p.strip()) for p in f.readlines()]\n",
+ "# lrs = [(int(lr[1]), int(lr[2])) for lr in pairs]\n",
+ "# return [Link(h, l, r) \n",
+ "# for h, (l, r) in enumerate(lrs)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def read_net(filename, rev=False):\n",
+ " with open(filename) as f:\n",
+ " pairs = [re.split('\\D+', p.strip()) for p in f.readlines()]\n",
+ " if rev:\n",
+ " lrs = [(int(lr[1]), int(lr[2])) for lr in reversed(pairs)]\n",
+ " else:\n",
+ " lrs = [(int(lr[1]), int(lr[2])) for lr in pairs]\n",
+ " return [Link(h, l, r) \n",
+ " for h, (l, r) in enumerate(lrs)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[Link(height=0, left=2, right=5),\n",
+ " Link(height=1, left=1, right=4),\n",
+ " Link(height=2, left=0, right=3),\n",
+ " Link(height=3, left=0, right=3),\n",
+ " Link(height=4, left=0, right=5),\n",
+ " Link(height=5, left=3, right=5),\n",
+ " Link(height=6, left=0, right=2),\n",
+ " Link(height=7, left=3, right=4),\n",
+ " Link(height=8, left=2, right=4),\n",
+ " Link(height=9, left=1, right=2),\n",
+ " Link(height=10, left=0, right=4),\n",
+ " Link(height=11, left=1, right=2),\n",
+ " Link(height=12, left=2, right=4),\n",
+ " Link(height=13, left=0, right=4),\n",
+ " Link(height=14, left=1, right=4)]"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "small_net = read_net('04-small.txt')\n",
+ "small_net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10135"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "net = read_net('04-lines.txt')\n",
+ "len(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "23"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "permnet = read_net('permutations.txt')\n",
+ "len(permnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "23"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rpermnet = read_net('permutations.txt', rev=True)\n",
+ "len(rpermnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def show_net(links, pair_sep=', '):\n",
+ " return pair_sep.join('({}, {})'.format(l.left, l.right) for l in sorted(links))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def link_ends(link):\n",
+ " return set((link.left, link.right))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow(initial_line, links):\n",
+ " line = initial_line\n",
+ " heights = sorted(set(l.height for l in links))\n",
+ " for h in heights:\n",
+ " for l in [l for l in links if l.height == h]:\n",
+ " if line in link_ends(l):\n",
+ " line = [e for e in link_ends(l) if e != line][0]\n",
+ "# print(l, line)\n",
+ " return line"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def pack(net):\n",
+ " packed_links = []\n",
+ " line_heights = collections.defaultdict(lambda: -1)\n",
+ " for link in sorted(net):\n",
+ " link_height = max(line_heights[link.left], line_heights[link.right]) + 1\n",
+ " line_heights[link.left] = link_height\n",
+ " line_heights[link.right] = link_height\n",
+ " packed_links += [Link(link_height, link.left, link.right)]\n",
+ " return sorted(packed_links)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "14"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in small_net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in pack(small_net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "10134"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2286"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "max(l.height for l in pack(net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def height_groups(net):\n",
+ " return {h: list(g) for h, g in itertools.groupby(pack(net), lambda l: l.height)}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def follow_many(in_sequence, net):\n",
+ " hgs = height_groups(net)\n",
+ " seq = list(in_sequence)\n",
+ " for h in hgs:\n",
+ " for link in hgs[h]:\n",
+ " seq[link.right], seq[link.left] = seq[link.left], seq[link.right]\n",
+ " return seq"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'acfbedghij'"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many('abcdefghij', small_net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10000 loops, best of 3: 40.1 µs per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many('abcdefghij', small_net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'zfrasxwigvjoembqcyhplnktud'"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, permnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, rpermnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "100 loops, best of 3: 19 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "follow_many(string.ascii_lowercase, net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "pnet = pack(net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pairs(net):\n",
+ " hgs = height_groups(net)\n",
+ " eps = []\n",
+ " for h in range(1, max(hgs.keys())):\n",
+ " for l in hgs[h]:\n",
+ " o = Link(l.height - 1, l.left, l.right)\n",
+ " if o in hgs[h-1]:\n",
+ " eps += [(l, o)]\n",
+ " return eps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=115, left=2, right=23), Link(height=114, left=2, right=23)),\n",
+ " (Link(height=149, left=15, right=23), Link(height=148, left=15, right=23)),\n",
+ " (Link(height=201, left=0, right=7), Link(height=200, left=0, right=7)),\n",
+ " (Link(height=207, left=22, right=23), Link(height=206, left=22, right=23)),\n",
+ " (Link(height=210, left=17, right=23), Link(height=209, left=17, right=23)),\n",
+ " (Link(height=247, left=16, right=20), Link(height=246, left=16, right=20)),\n",
+ " (Link(height=418, left=19, right=24), Link(height=417, left=19, right=24)),\n",
+ " (Link(height=424, left=9, right=21), Link(height=423, left=9, right=21)),\n",
+ " (Link(height=453, left=3, right=16), Link(height=452, left=3, right=16)),\n",
+ " (Link(height=456, left=2, right=22), Link(height=455, left=2, right=22)),\n",
+ " (Link(height=465, left=18, right=20), Link(height=464, left=18, right=20)),\n",
+ " (Link(height=491, left=14, right=18), Link(height=490, left=14, right=18)),\n",
+ " (Link(height=552, left=16, right=17), Link(height=551, left=16, right=17)),\n",
+ " (Link(height=772, left=0, right=7), Link(height=771, left=0, right=7)),\n",
+ " (Link(height=848, left=1, right=2), Link(height=847, left=1, right=2)),\n",
+ " (Link(height=895, left=6, right=21), Link(height=894, left=6, right=21)),\n",
+ " (Link(height=930, left=11, right=13), Link(height=929, left=11, right=13)),\n",
+ " (Link(height=987, left=8, right=17), Link(height=986, left=8, right=17)),\n",
+ " (Link(height=988, left=8, right=17), Link(height=987, left=8, right=17)),\n",
+ " (Link(height=1030, left=9, right=24), Link(height=1029, left=9, right=24)),\n",
+ " (Link(height=1134, left=4, right=23), Link(height=1133, left=4, right=23)),\n",
+ " (Link(height=1163, left=14, right=15), Link(height=1162, left=14, right=15)),\n",
+ " (Link(height=1164, left=14, right=15), Link(height=1163, left=14, right=15)),\n",
+ " (Link(height=1170, left=2, right=21), Link(height=1169, left=2, right=21)),\n",
+ " (Link(height=1232, left=6, right=22), Link(height=1231, left=6, right=22)),\n",
+ " (Link(height=1254, left=13, right=15), Link(height=1253, left=13, right=15)),\n",
+ " (Link(height=1255, left=1, right=24), Link(height=1254, left=1, right=24)),\n",
+ " (Link(height=1324, left=3, right=22), Link(height=1323, left=3, right=22)),\n",
+ " (Link(height=1370, left=15, right=19), Link(height=1369, left=15, right=19)),\n",
+ " (Link(height=1441, left=0, right=14), Link(height=1440, left=0, right=14)),\n",
+ " (Link(height=1441, left=11, right=24), Link(height=1440, left=11, right=24)),\n",
+ " (Link(height=1547, left=11, right=13), Link(height=1546, left=11, right=13)),\n",
+ " (Link(height=1578, left=14, right=23), Link(height=1577, left=14, right=23)),\n",
+ " (Link(height=1616, left=7, right=14), Link(height=1615, left=7, right=14)),\n",
+ " (Link(height=1671, left=8, right=20), Link(height=1670, left=8, right=20)),\n",
+ " (Link(height=1684, left=14, right=18), Link(height=1683, left=14, right=18)),\n",
+ " (Link(height=1717, left=0, right=17), Link(height=1716, left=0, right=17)),\n",
+ " (Link(height=1727, left=7, right=8), Link(height=1726, left=7, right=8)),\n",
+ " (Link(height=1866, left=8, right=16), Link(height=1865, left=8, right=16)),\n",
+ " (Link(height=1911, left=1, right=12), Link(height=1910, left=1, right=12)),\n",
+ " (Link(height=1966, left=20, right=23), Link(height=1965, left=20, right=23)),\n",
+ " (Link(height=1974, left=5, right=23), Link(height=1973, left=5, right=23)),\n",
+ " (Link(height=1994, left=18, right=19), Link(height=1993, left=18, right=19)),\n",
+ " (Link(height=2005, left=2, right=19), Link(height=2004, left=2, right=19)),\n",
+ " (Link(height=2031, left=12, right=17), Link(height=2030, left=12, right=17)),\n",
+ " (Link(height=2108, left=7, right=12), Link(height=2107, left=7, right=12)),\n",
+ " (Link(height=2137, left=7, right=16), Link(height=2136, left=7, right=16)),\n",
+ " (Link(height=2138, left=7, right=16), Link(height=2137, left=7, right=16)),\n",
+ " (Link(height=2229, left=10, right=11), Link(height=2228, left=10, right=11)),\n",
+ " (Link(height=2239, left=16, right=24), Link(height=2238, left=16, right=24)),\n",
+ " (Link(height=2240, left=16, right=24), Link(height=2239, left=16, right=24)),\n",
+ " (Link(height=2246, left=4, right=13), Link(height=2245, left=4, right=13)),\n",
+ " (Link(height=2247, left=4, right=13), Link(height=2246, left=4, right=13)),\n",
+ " (Link(height=2276, left=19, right=24), Link(height=2275, left=19, right=24)),\n",
+ " (Link(height=2277, left=4, right=18), Link(height=2276, left=4, right=18))]"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eliminable_pairs(pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10 loops, best of 3: 23.5 ms per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "eliminable_pairs(pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminable_pair(hgs):\n",
+ " for h in range(1, max(hgs.keys())):\n",
+ " for l in hgs[h]:\n",
+ " o = Link(l.height - 1, l.left, l.right)\n",
+ " if o in hgs[h-1]:\n",
+ " return l, o\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_pairs(net):\n",
+ " hgs = height_groups(pack(net))\n",
+ " eliminable_links = eliminable_pair(hgs)\n",
+ " while eliminable_links:\n",
+ " net = pack(l for l in net if l not in eliminable_links)\n",
+ " hgs = height_groups(pack(net))\n",
+ " eliminable_links = eliminable_pair(hgs)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "enet = eliminate_pairs(pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, net) == follow_many(string.ascii_lowercase, enet)\n",
+ "assert follow_many(string.ascii_lowercase, pnet) == follow_many(string.ascii_lowercase, enet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1 loop, best of 3: 2.35 s per loop\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%timeit\n",
+ "eliminate_pairs(pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def triple_pair(height_groups, debug=False):\n",
+ " ts = []\n",
+ " for h in range(3, max(height_groups.keys())):\n",
+ " for d in height_groups[h]:\n",
+ " if debug: print('d:', d)\n",
+ " ch = h - 1\n",
+ " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
+ " if debug: print('cs:', cs)\n",
+ " while ch > 2 and not cs:\n",
+ " ch -= 1\n",
+ " cs = [l for l in height_groups[ch] if link_ends(l) & link_ends(d)]\n",
+ " if debug: print('cs:', cs)\n",
+ " if len(cs) == 1:\n",
+ " c = cs[0]\n",
+ " lines = set((d.left, d.right, c.left, c.right))\n",
+ " if debug: print('c:', '; lines:', lines)\n",
+ " bs = [l for l in height_groups[ch-1] if link_ends(l) & lines]\n",
+ " b = Link(ch - 1, d.left, d.right)\n",
+ " if debug: print('b:', b, '; bs:', bs)\n",
+ " if len(bs) == 1 and b in bs:\n",
+ " ah = b.height - 1\n",
+ " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
+ " if debug: print('ah:', ah, '; als:', als)\n",
+ " while ah > 0 and not als:\n",
+ " ah -= 1\n",
+ " als = [l for l in height_groups[ah] if link_ends(l) & link_ends(c)]\n",
+ " if debug: print('ah:', ah, '; als:', als)\n",
+ " a = Link(ah, c.left, c.right)\n",
+ " if debug: print('a:', a)\n",
+ " if a in als:\n",
+ " if debug: print('adding:', a, b, c, d)\n",
+ " ts += [(a, b, c, d)]\n",
+ " return ts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_a_triple_pair(net, debug=False):\n",
+ " hgs = height_groups(net)\n",
+ "\n",
+ " tps = triple_pair(hgs)\n",
+ " if debug: print('eatp', tps)\n",
+ " if tps:\n",
+ " a, b, c, d = tps[0]\n",
+ " x = Link(b.height - 0.5, b.left, b.right)\n",
+ " y = Link(b.height, a.left, a.right)\n",
+ " if debug: print('removing', a, b, c, d, '; adding', x, y)\n",
+ " return pack([l for l in net if l not in [a, b, c, d]] + [x, y])\n",
+ " return None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(Link(height=8, left=1, right=5),\n",
+ " Link(height=9, left=1, right=21),\n",
+ " Link(height=10, left=1, right=5),\n",
+ " Link(height=11, left=1, right=21)),\n",
+ " (Link(height=40, left=16, right=23),\n",
+ " Link(height=41, left=16, right=19),\n",
+ " Link(height=42, left=16, right=23),\n",
+ " Link(height=43, left=16, right=19)),\n",
+ " (Link(height=62, left=0, right=10),\n",
+ " Link(height=63, left=10, right=13),\n",
+ " Link(height=64, left=0, right=10),\n",
+ " Link(height=65, left=10, right=13)),\n",
+ " (Link(height=137, left=23, right=24),\n",
+ " Link(height=139, left=0, right=24),\n",
+ " Link(height=140, left=23, right=24),\n",
+ " Link(height=141, left=0, right=24)),\n",
+ " (Link(height=138, left=10, right=21),\n",
+ " Link(height=139, left=2, right=10),\n",
+ " Link(height=140, left=10, right=21),\n",
+ " Link(height=141, left=2, right=10)),\n",
+ " (Link(height=139, left=2, right=10),\n",
+ " Link(height=140, left=10, right=21),\n",
+ " Link(height=141, left=2, right=10),\n",
+ " Link(height=142, left=10, right=21)),\n",
+ " (Link(height=156, left=6, right=11),\n",
+ " Link(height=157, left=3, right=6),\n",
+ " Link(height=158, left=6, right=11),\n",
+ " Link(height=159, left=3, right=6)),\n",
+ " (Link(height=184, left=2, right=21),\n",
+ " Link(height=185, left=5, right=21),\n",
+ " Link(height=186, left=2, right=21),\n",
+ " Link(height=187, left=5, right=21)),\n",
+ " (Link(height=272, left=7, right=13),\n",
+ " Link(height=273, left=7, right=11),\n",
+ " Link(height=274, left=7, right=13),\n",
+ " Link(height=275, left=7, right=11)),\n",
+ " (Link(height=290, left=14, right=15),\n",
+ " Link(height=291, left=5, right=15),\n",
+ " Link(height=292, left=14, right=15),\n",
+ " Link(height=293, left=5, right=15)),\n",
+ " (Link(height=387, left=1, right=8),\n",
+ " Link(height=389, left=8, right=15),\n",
+ " Link(height=390, left=1, right=8),\n",
+ " Link(height=391, left=8, right=15)),\n",
+ " (Link(height=420, left=14, right=22),\n",
+ " Link(height=422, left=14, right=18),\n",
+ " Link(height=423, left=14, right=22),\n",
+ " Link(height=424, left=14, right=18)),\n",
+ " (Link(height=432, left=5, right=19),\n",
+ " Link(height=433, left=1, right=19),\n",
+ " Link(height=434, left=5, right=19),\n",
+ " Link(height=435, left=1, right=19)),\n",
+ " (Link(height=454, left=0, right=15),\n",
+ " Link(height=455, left=14, right=15),\n",
+ " Link(height=456, left=0, right=15),\n",
+ " Link(height=457, left=14, right=15)),\n",
+ " (Link(height=546, left=13, right=21),\n",
+ " Link(height=547, left=6, right=21),\n",
+ " Link(height=548, left=13, right=21),\n",
+ " Link(height=549, left=6, right=21)),\n",
+ " (Link(height=620, left=17, right=23),\n",
+ " Link(height=621, left=1, right=23),\n",
+ " Link(height=622, left=17, right=23),\n",
+ " Link(height=623, left=1, right=23)),\n",
+ " (Link(height=699, left=8, right=15),\n",
+ " Link(height=700, left=3, right=15),\n",
+ " Link(height=701, left=8, right=15),\n",
+ " Link(height=702, left=3, right=15)),\n",
+ " (Link(height=789, left=7, right=24),\n",
+ " Link(height=790, left=8, right=24),\n",
+ " Link(height=791, left=7, right=24),\n",
+ " Link(height=792, left=8, right=24)),\n",
+ " (Link(height=795, left=8, right=13),\n",
+ " Link(height=796, left=4, right=8),\n",
+ " Link(height=797, left=8, right=13),\n",
+ " Link(height=798, left=4, right=8)),\n",
+ " (Link(height=809, left=16, right=17),\n",
+ " Link(height=810, left=3, right=16),\n",
+ " Link(height=811, left=16, right=17),\n",
+ " Link(height=812, left=3, right=16)),\n",
+ " (Link(height=900, left=2, right=15),\n",
+ " Link(height=901, left=13, right=15),\n",
+ " Link(height=902, left=2, right=15),\n",
+ " Link(height=903, left=13, right=15)),\n",
+ " (Link(height=921, left=2, right=15),\n",
+ " Link(height=922, left=15, right=16),\n",
+ " Link(height=923, left=2, right=15),\n",
+ " Link(height=924, left=15, right=16)),\n",
+ " (Link(height=961, left=2, right=15),\n",
+ " Link(height=962, left=2, right=14),\n",
+ " Link(height=963, left=2, right=15),\n",
+ " Link(height=964, left=2, right=14)),\n",
+ " (Link(height=976, left=13, right=18),\n",
+ " Link(height=979, left=18, right=19),\n",
+ " Link(height=980, left=13, right=18),\n",
+ " Link(height=981, left=18, right=19)),\n",
+ " (Link(height=985, left=5, right=16),\n",
+ " Link(height=986, left=2, right=5),\n",
+ " Link(height=987, left=5, right=16),\n",
+ " Link(height=988, left=2, right=5)),\n",
+ " (Link(height=1050, left=9, right=24),\n",
+ " Link(height=1054, left=9, right=18),\n",
+ " Link(height=1055, left=9, right=24),\n",
+ " Link(height=1056, left=9, right=18)),\n",
+ " (Link(height=1159, left=11, right=21),\n",
+ " Link(height=1160, left=11, right=14),\n",
+ " Link(height=1161, left=11, right=21),\n",
+ " Link(height=1162, left=11, right=14)),\n",
+ " (Link(height=1284, left=0, right=11),\n",
+ " Link(height=1285, left=0, right=14),\n",
+ " Link(height=1286, left=0, right=11),\n",
+ " Link(height=1287, left=0, right=14)),\n",
+ " (Link(height=1331, left=4, right=9),\n",
+ " Link(height=1333, left=4, right=10),\n",
+ " Link(height=1334, left=4, right=9),\n",
+ " Link(height=1335, left=4, right=10)),\n",
+ " (Link(height=1332, left=12, right=18),\n",
+ " Link(height=1333, left=12, right=24),\n",
+ " Link(height=1334, left=12, right=18),\n",
+ " Link(height=1335, left=12, right=24)),\n",
+ " (Link(height=1343, left=0, right=17),\n",
+ " Link(height=1344, left=0, right=23),\n",
+ " Link(height=1345, left=0, right=17),\n",
+ " Link(height=1346, left=0, right=23)),\n",
+ " (Link(height=1357, left=4, right=16),\n",
+ " Link(height=1358, left=16, right=17),\n",
+ " Link(height=1359, left=4, right=16),\n",
+ " Link(height=1360, left=16, right=17)),\n",
+ " (Link(height=1441, left=6, right=20),\n",
+ " Link(height=1443, left=16, right=20),\n",
+ " Link(height=1444, left=6, right=20),\n",
+ " Link(height=1445, left=16, right=20)),\n",
+ " (Link(height=1464, left=17, right=23),\n",
+ " Link(height=1465, left=3, right=17),\n",
+ " Link(height=1466, left=17, right=23),\n",
+ " Link(height=1467, left=3, right=17)),\n",
+ " (Link(height=1540, left=8, right=23),\n",
+ " Link(height=1541, left=7, right=23),\n",
+ " Link(height=1542, left=8, right=23),\n",
+ " Link(height=1543, left=7, right=23)),\n",
+ " (Link(height=1570, left=0, right=1),\n",
+ " Link(height=1571, left=1, right=21),\n",
+ " Link(height=1572, left=0, right=1),\n",
+ " Link(height=1573, left=1, right=21)),\n",
+ " (Link(height=1600, left=15, right=22),\n",
+ " Link(height=1603, left=7, right=15),\n",
+ " Link(height=1604, left=15, right=22),\n",
+ " Link(height=1605, left=7, right=15)),\n",
+ " (Link(height=1632, left=12, right=18),\n",
+ " Link(height=1634, left=12, right=20),\n",
+ " Link(height=1635, left=12, right=18),\n",
+ " Link(height=1636, left=12, right=20)),\n",
+ " (Link(height=1702, left=13, right=24),\n",
+ " Link(height=1705, left=14, right=24),\n",
+ " Link(height=1706, left=13, right=24),\n",
+ " Link(height=1707, left=14, right=24)),\n",
+ " (Link(height=1721, left=3, right=24),\n",
+ " Link(height=1722, left=3, right=21),\n",
+ " Link(height=1723, left=3, right=24),\n",
+ " Link(height=1724, left=3, right=21)),\n",
+ " (Link(height=1722, left=3, right=21),\n",
+ " Link(height=1723, left=3, right=24),\n",
+ " Link(height=1724, left=3, right=21),\n",
+ " Link(height=1725, left=3, right=24)),\n",
+ " (Link(height=1762, left=0, right=21),\n",
+ " Link(height=1763, left=13, right=21),\n",
+ " Link(height=1764, left=0, right=21),\n",
+ " Link(height=1765, left=13, right=21)),\n",
+ " (Link(height=1769, left=7, right=9),\n",
+ " Link(height=1770, left=7, right=12),\n",
+ " Link(height=1771, left=7, right=9),\n",
+ " Link(height=1772, left=7, right=12)),\n",
+ " (Link(height=1914, left=10, right=24),\n",
+ " Link(height=1915, left=8, right=24),\n",
+ " Link(height=1916, left=10, right=24),\n",
+ " Link(height=1917, left=8, right=24)),\n",
+ " (Link(height=1920, left=4, right=23),\n",
+ " Link(height=1921, left=3, right=4),\n",
+ " Link(height=1922, left=4, right=23),\n",
+ " Link(height=1923, left=3, right=4)),\n",
+ " (Link(height=2023, left=4, right=7),\n",
+ " Link(height=2024, left=7, right=15),\n",
+ " Link(height=2025, left=4, right=7),\n",
+ " Link(height=2026, left=7, right=15)),\n",
+ " (Link(height=2025, left=8, right=19),\n",
+ " Link(height=2031, left=8, right=15),\n",
+ " Link(height=2032, left=8, right=19),\n",
+ " Link(height=2033, left=8, right=15)),\n",
+ " (Link(height=2152, left=10, right=15),\n",
+ " Link(height=2153, left=10, right=16),\n",
+ " Link(height=2154, left=10, right=15),\n",
+ " Link(height=2155, left=10, right=16)),\n",
+ " (Link(height=2194, left=22, right=24),\n",
+ " Link(height=2195, left=7, right=22),\n",
+ " Link(height=2196, left=22, right=24),\n",
+ " Link(height=2197, left=7, right=22)),\n",
+ " (Link(height=2211, left=5, right=6),\n",
+ " Link(height=2212, left=6, right=14),\n",
+ " Link(height=2213, left=5, right=6),\n",
+ " Link(height=2214, left=6, right=14))]"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "hgs = height_groups(enet)\n",
+ "triple_pair(hgs)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "etnet = eliminate_a_triple_pair(enet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, etnet) == follow_many(string.ascii_lowercase, enet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def eliminate_triple_pairs(net):\n",
+ " print(len(net))\n",
+ " new_net = eliminate_a_triple_pair(net)\n",
+ " while new_net:\n",
+ " print(len(net))\n",
+ " net = new_net\n",
+ " new_net = eliminate_a_triple_pair(net)\n",
+ " return net"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "10033\n",
+ "10033\n",
+ "10031\n",
+ "10029\n",
+ "10027\n",
+ "10025\n",
+ "10023\n",
+ "10021\n",
+ "10019\n",
+ "10017\n",
+ "10015\n",
+ "10013\n",
+ "10011\n",
+ "10009\n",
+ "10007\n",
+ "10005\n",
+ "10003\n",
+ "10001\n",
+ "9999\n",
+ "9997\n",
+ "9995\n",
+ "9993\n",
+ "9991\n",
+ "9989\n",
+ "9987\n",
+ "9985\n",
+ "9983\n",
+ "9981\n",
+ "9979\n",
+ "9977\n",
+ "9975\n",
+ "9973\n",
+ "9971\n",
+ "9969\n",
+ "9967\n",
+ "9965\n",
+ "9963\n",
+ "9961\n",
+ "9959\n",
+ "9957\n",
+ "9955\n",
+ "9953\n",
+ "9951\n",
+ "9949\n",
+ "9947\n",
+ "9945\n",
+ "9943\n",
+ "9941\n",
+ "9939\n"
+ ]
+ }
+ ],
+ "source": [
+ "setnet = eliminate_triple_pairs(enet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9937"
+ ]
+ },
+ "execution_count": 38,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(setnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "assert follow_many(string.ascii_lowercase, etnet) == follow_many(string.ascii_lowercase, enet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, etnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, setnet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, enet))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "eliminable_pairs(etnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(10135, 10031)"
+ ]
+ },
+ "execution_count": 45,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(net), len(etnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def simplify(net0):\n",
+ " netp = eliminate_pairs(net0)\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " while new_net:\n",
+ "# print('sipl', len(net0), len(netp), len(new_net))\n",
+ " netp = eliminate_pairs(new_net)\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " return netp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "simple_net = simplify(pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, simple_net)) == ''.join(follow_many(string.ascii_lowercase, net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, simple_net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'doqzmbishkwunvltpcexyjgfra'"
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9931"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(simple_net)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def simplify_with_checks(net0):\n",
+ " netp = eliminate_pairs(net0)\n",
+ " if follow_many(string.ascii_lowercase, net0) != follow_many(string.ascii_lowercase, netp):\n",
+ " print('pairs', eliminable_pairs(net0))\n",
+ " return net0\n",
+ " else:\n",
+ " print('pairs ok')\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
+ " hg = find_height_groups(netp)\n",
+ " print('triple', triple_pair_hg(hg))\n",
+ " return netp\n",
+ " else:\n",
+ " print('triple ok')\n",
+ " while new_net:\n",
+ "# print('sipl', len(net0), len(netp), len(new_net))\n",
+ " netp = eliminate_pairs(new_net)\n",
+ " if follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
+ " print('pairs', eliminable_pairs(new_net))\n",
+ " return new_net\n",
+ " else:\n",
+ " print('pairs ok')\n",
+ " new_net = eliminate_a_triple_pair(netp)\n",
+ " if new_net and follow_many(string.ascii_lowercase, new_net) != follow_many(string.ascii_lowercase, netp):\n",
+ " hg = find_height_groups(netp)\n",
+ " print('triple', triple_pair_hg(hg))\n",
+ " return netp\n",
+ " else:\n",
+ " print('triple ok')\n",
+ " print('** done')\n",
+ " return netp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "pairs ok\n",
+ "triple ok\n",
+ "** done\n"
+ ]
+ }
+ ],
+ "source": [
+ "spnet = simplify_with_checks(pnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "''.join(follow_many(string.ascii_lowercase, spnet)) == ''.join(follow_many(string.ascii_lowercase, net))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "9931"
+ ]
+ },
+ "execution_count": 55,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(spnet)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.5.2+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
--- /dev/null
+(ns day4
+ (:require [clojure.string :as str]))
+
+(defstruct link :height :left :right)
+
+; (def network (str/split-lines (slurp "../04-small.txt")))
+(def network (str/split-lines (slurp "../04-lines.txt")))
+
+(defn parse-link [l, h]
+ (let [endss (rest (str/split l #"\D+"))
+ ends (map #(Integer/parseInt %) endss)]
+ (struct-map link
+ :height h
+ :left (first ends)
+ :right (second ends))))
+
+(defn parse-network [links]
+ (map-indexed
+ (fn [i l] (parse-link l i))
+ links))
+
+(def parsed-network
+ (parse-network network))
+
+
+(def initial
+ (str/split "abcdefghijklmnopqrstuvwxyz" #""))
+
+(defn apply-link [items link]
+ (let [li (get link :left)
+ ri (get link :right)
+ le (nth items li)
+ re (nth items ri)
+ pre (subvec items 0 li)
+ mid (subvec items (inc li) ri)
+ suf (subvec items (inc ri))]
+ (into [] (concat pre (vector re) mid (vector le) suf))))
+
+(defn follow [items links]
+ (reduce apply-link items links))
+
+
+(defn lane-count [links]
+ (inc (apply max (map (fn [l] (get l :right)) links))))
+
+(defn initial-heights [links]
+ (vec (replicate (lane-count links) -1)))
+
+(defn pack-one [lane-heights link]
+ (let
+ [li (get link :left)
+ ri (get link :right)
+ new-height (inc (max (nth lane-heights li)
+ (nth lane-heights ri)))]
+ (assoc lane-heights li new-height ri new-height)))
+
+(defn pack [lane-heights links]
+ (reduce pack-one lane-heights links))
+
+
+(spit "day4.out" (prn-str
+ (str/join (follow initial parsed-network))))
+
+(spit "day4.out" (prn-str
+ (apply max
+ (pack
+ (initial-heights parsed-network)
+ parsed-network)))
+ :append true)
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="packing-variants.svg"
+ inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/packing-variants.svg.png"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1137"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="1.6260819"
+ inkscape:cx="334.5511"
+ inkscape:cy="765.44801"
+ inkscape:window-x="1200"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697"
+ transform="matrix(0,0.29584363,-1,0,9360.3158,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id3"><path
+ d="m 3000,4000 14000,0"
+ id="path3700"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,0.29584363,-1,0,9360.3158,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707"
+ transform="matrix(0,0.29584363,-1,0,9360.3158,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id5"><path
+ d="m 3000,6000 14000,0"
+ id="path3710"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712"
+ transform="matrix(0,0.29584363,-1,0,9360.3158,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id6"><path
+ d="m 3000,5000 14000,0"
+ id="path3715"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726"
+ transform="matrix(0,1,-1,0,7347.0234,-2449.9998)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8"><path
+ d="m 5000,4130 0,1740"
+ id="path3729"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,0.29584363,-1,0,9360.3158,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ transform="matrix(0,1,-1,0,9348.9528,-12450)"
+ id="g5026"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,12373.829,-11450)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1265.2094"
+ y="1834.2767"
+ id="text5088"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5090"
+ x="1265.2094"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="2247.4307"
+ y="1834.2767"
+ id="text5092"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5094"
+ x="2247.4307"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3247.8535"
+ y="1827.9266"
+ id="text5096"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5098"
+ x="3247.8535"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="4244.043"
+ y="1834.2767"
+ id="text5100"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5102"
+ x="4244.043"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="5245.3135"
+ y="1827.9266"
+ id="text5104"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5106"
+ x="5245.3135"
+ y="1827.9266">5</tspan></text>
+<g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697-1"
+ transform="matrix(0,0.29584363,-1,0,16379.176,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id3-1"><path
+ d="m 3000,4000 14000,0"
+ id="path3700-3"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702-5"
+ transform="matrix(0,0.29584363,-1,0,16379.176,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id4-9"><path
+ d="m 3000,7000 14000,0"
+ id="path3705-3"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707-4"
+ transform="matrix(0,0.29584363,-1,0,16379.176,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id5-1"><path
+ d="m 3000,6000 14000,0"
+ id="path3710-5"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712-0"
+ transform="matrix(0,0.29584363,-1,0,16379.176,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id6-8"><path
+ d="m 3000,5000 14000,0"
+ id="path3715-3"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726-5"
+ transform="matrix(0,1,-1,0,14365.884,-2449.9998)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8-6"><path
+ d="m 5000,4130 0,1740"
+ id="path3729-5"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731-9"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733-9"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762-0"
+ transform="matrix(0,0.29584363,-1,0,16379.176,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id12-7"><path
+ d="m 3000,8000 14000,0"
+ id="path3765-6"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ transform="matrix(0,1,-1,0,16367.813,-12450)"
+ id="g5026-3"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028-7"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030-6"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032-1"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034-5"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,19392.69,-12450)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-0"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5058-6"><path
+ d="m 16000,7140 0,740"
+ id="path5060-5"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="8284.0693"
+ y="1834.2767"
+ id="text5088-1"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5090-0"
+ x="8284.0693"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="9266.291"
+ y="1834.2767"
+ id="text5092-4"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5094-2"
+ x="9266.291"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="10266.714"
+ y="1827.9266"
+ id="text5096-7"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5098-4"
+ x="10266.714"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="11262.903"
+ y="1834.2767"
+ id="text5100-0"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5102-3"
+ x="11262.903"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12264.174"
+ y="1827.9266"
+ id="text5104-2"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5106-8"
+ x="12264.174"
+ y="1827.9266">5</tspan></text>
+<g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697-3"
+ transform="matrix(0,0.29584363,-1,0,23398.037,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id3-7"><path
+ d="m 3000,4000 14000,0"
+ id="path3700-0"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702-0"
+ transform="matrix(0,0.29584363,-1,0,23398.037,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id4-3"><path
+ d="m 3000,7000 14000,0"
+ id="path3705-4"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707-9"
+ transform="matrix(0,0.29584363,-1,0,23398.037,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id5-2"><path
+ d="m 3000,6000 14000,0"
+ id="path3710-7"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712-4"
+ transform="matrix(0,0.29584363,-1,0,23398.037,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id6-2"><path
+ d="m 3000,5000 14000,0"
+ id="path3715-5"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726-2"
+ transform="matrix(0,1,-1,0,21384.744,-2449.9998)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8-4"><path
+ d="m 5000,4130 0,1740"
+ id="path3729-4"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731-3"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762-6"
+ transform="matrix(0,0.29584363,-1,0,23398.037,1248.6849)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id12-0"><path
+ d="m 3000,8000 14000,0"
+ id="path3765-8"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ transform="matrix(0,1,-1,0,23386.673,-12450)"
+ id="g5026-9"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028-2"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030-2"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032-3"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034-1"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,26411.55,-13450)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-8"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5058-3"><path
+ d="m 16000,7140 0,740"
+ id="path5060-4"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-2"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-2"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="15302.931"
+ y="1834.2767"
+ id="text5088-7"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5090-1"
+ x="15302.931"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="16285.152"
+ y="1834.2767"
+ id="text5092-6"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5094-9"
+ x="16285.152"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="17285.574"
+ y="1827.9266"
+ id="text5096-8"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5098-1"
+ x="17285.574"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="18281.764"
+ y="1834.2767"
+ id="text5100-3"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5102-33"
+ x="18281.764"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="19283.035"
+ y="1827.9266"
+ id="text5104-7"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5106-9"
+ x="19283.035"
+ y="1827.9266">5</tspan></text>
+<g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726-6"
+ transform="matrix(0,1,-1,0,9350.0002,550.00032)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8-7"><path
+ d="m 5000,4130 0,1740"
+ id="path3729-0"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731-4"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733-84"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726-6-8"
+ transform="matrix(0,1,-1,0,16390.001,-449.99974)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8-7-1"><path
+ d="m 5000,4130 0,1740"
+ id="path3729-0-6"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731-4-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733-84-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726-6-2"
+ transform="matrix(0,1,-1,0,23400.001,-1449.9998)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8-7-19"><path
+ d="m 5000,4130 0,1740"
+ id="path3729-0-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731-4-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733-84-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
--- /dev/null
+(0, 3)
+(0, 25)
+(1, 14)
+(1, 11)
+(1, 20)
+(1, 24)
+(1, 17)
+(1, 2)
+(1, 16)
+(1, 15)
+(1, 19)
+(1, 23)
+(1, 5)
+(4, 12)
+(4, 13)
+(4, 21)
+(4, 9)
+(4, 10)
+(4, 22)
+(4, 6)
+(4, 8)
+(4, 7)
+(4, 18)
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="small-expanded-trace.svg"
+ inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/small-expanded-trace.svg.png"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1200"
+ inkscape:window-height="1861"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="1.0643833"
+ inkscape:cx="276.90122"
+ inkscape:cy="367.61981"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><linearGradient
+ id="linearGradient8870"
+ osb:paint="solid"><stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop8872" /></linearGradient><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8870"
+ id="linearGradient8874"
+ x1="7966.9326"
+ y1="9084.5154"
+ x2="11468.632"
+ y2="9084.5154"
+ gradientUnits="userSpaceOnUse" /></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id3"><path
+ d="m 3000,4000 14000,0"
+ id="path3700"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id5"><path
+ d="m 3000,6000 14000,0"
+ id="path3710"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id6"><path
+ d="m 3000,5000 14000,0"
+ id="path3715"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726"
+ transform="matrix(0,1,-1,0,15249.203,8350.0008)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8"><path
+ d="m 5000,4130 0,1740"
+ id="path3729"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id15"><path
+ d="m 3000,9000 14000,0"
+ id="path3780"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3791"
+ transform="matrix(0,1,-1,0,18234.183,1949.9993)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id17"><path
+ d="m 6000,9140 0,1740"
+ id="path3794"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3796"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3798"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3872"
+ transform="matrix(0,1,-1,0,19281.34,-10450.002)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id26"><path
+ d="m 13000,7140 0,2740"
+ id="path3875"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3877"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3879"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3881"
+ transform="matrix(0,1,-1,0,18223.967,-6950.0009)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id27"><path
+ d="m 14000,6130 0,1740"
+ id="path3884"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3886"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3888"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g4694"
+ transform="translate(-360.97102,-11006.389)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><path
+ d="m 12453.539,17156.388 -4740,0"
+ id="path5000"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
+ d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
+ id="path5002"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
+ id="path5004"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g><g
+ transform="matrix(0,1,-1,0,16235.126,-5349.9999)"
+ id="g5026"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,18267.97,-7150.0004)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g5006-1"
+ class="com.sun.star.drawing.LineShape"
+ transform="matrix(0,1,-1,0,18262.594,-5250.0002)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5008-4"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5010-9"
+ d="m 15000,7140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5012-1"
+ d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5014-0"
+ d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2"
+ transform="matrix(0,1,-1,0,15263.423,-5650.0016)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-9"
+ transform="matrix(0,1,-1,0,16233.264,-6550.0019)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-5"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-0"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-2"
+ transform="matrix(0,1,-1,0,16235.049,5150.0013)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-1"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-05"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15213.374,6250.001)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-8"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g4988-9"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-8"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,16275.21,-3549.9995)"
+ id="g5026-8"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028-8"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030-3"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032-8"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034-7"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,15228.446,3550.0003)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-9"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g4988-94"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-81"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="7129.8301"
+ y="1827.9266"
+ id="text5084"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5086"
+ x="7129.8301"
+ y="1827.9266">0</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="8151.4199"
+ y="1834.2767"
+ id="text5088"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5090"
+ x="8151.4199"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="9133.6406"
+ y="1834.2767"
+ id="text5092"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5094"
+ x="9133.6406"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="10134.063"
+ y="1827.9266"
+ id="text5096"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5098"
+ x="10134.063"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="11130.253"
+ y="1834.2767"
+ id="text5100"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5102"
+ x="11130.253"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12131.523"
+ y="1827.9266"
+ id="text5104"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5106"
+ x="12131.523"
+ y="1827.9266">5</tspan></text>
+<g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-0"
+ transform="matrix(0,1,-1,0,15252.775,-4750.0014)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-9"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-6"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-7"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-2"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><path
+ style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient8874);stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:225.77779049,225.77779049;stroke-dashoffset:0"
+ d="m 7981.0437,2124.3028 0,1113.6341 3473.4773,0 0,5356.0492 -1431.815,0 0,7450.7419"
+ id="path8868"
+ inkscape:connector-curvature="0"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001" /><path
+ style="fill:none;fill-rule:evenodd;stroke:#00a900;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:225.77779049,112.88889524,56.44444762,112.88889524;stroke-opacity:1;stroke-dashoffset:0"
+ d="m 12037.853,2150.8179 -58.359,217.7977 -3017.3919,0 -26.5151,5297.342 -1909.0868,26.5151 -53.0302,3632.5683 4507.566,0 0,1856.056 -2465.9037,0 0,2731.055"
+ id="path8876"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccc"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001" /><path
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:169.33334287,169.33334287;stroke-opacity:1;stroke-dashoffset:0"
+ d="m 7053.0154,2203.8481 0,1882.5716 3446.9626,0 0,1007.5738 -3526.508,0 0,848.4831 5541.655,0 0,901.5132 -2624.9946,0 0,1617.4207 1856.0566,0 0,1087.119 -2810.5999,0 0,768.9375 -928.0283,0 0,1829.542 1484.8454,0 0,874.998 2306.8128,0 0,1034.089 -4931.8073,0 0,1829.541"
+ id="path8878"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccccccc"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001" /></g></g></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="small-expanded.svg"
+ inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/small-expanded.svg.png"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1200"
+ inkscape:window-height="1861"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="1.1236312"
+ inkscape:cx="296.83884"
+ inkscape:cy="553.63354"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id3"><path
+ d="m 3000,4000 14000,0"
+ id="path3700"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id5"><path
+ d="m 3000,6000 14000,0"
+ id="path3710"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id6"><path
+ d="m 3000,5000 14000,0"
+ id="path3715"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726"
+ transform="matrix(0,1,-1,0,15249.203,8350.0008)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8"><path
+ d="m 5000,4130 0,1740"
+ id="path3729"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id15"><path
+ d="m 3000,9000 14000,0"
+ id="path3780"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3791"
+ transform="matrix(0,1,-1,0,18234.183,1949.9993)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id17"><path
+ d="m 6000,9140 0,1740"
+ id="path3794"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3796"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3798"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3872"
+ transform="matrix(0,1,-1,0,19281.34,-10450.002)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id26"><path
+ d="m 13000,7140 0,2740"
+ id="path3875"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3877"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3879"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3881"
+ transform="matrix(0,1,-1,0,18223.967,-6950.0009)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id27"><path
+ d="m 14000,6130 0,1740"
+ id="path3884"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3886"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3888"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g4694"
+ transform="translate(-360.97102,-11006.389)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><path
+ d="m 12453.539,17156.388 -4740,0"
+ id="path5000"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
+ d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
+ id="path5002"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
+ id="path5004"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g><g
+ transform="matrix(0,1,-1,0,16235.126,-5349.9999)"
+ id="g5026"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,18267.97,-7150.0004)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g5006-1"
+ class="com.sun.star.drawing.LineShape"
+ transform="matrix(0,1,-1,0,18262.594,-5250.0002)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5008-4"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5010-9"
+ d="m 15000,7140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5012-1"
+ d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5014-0"
+ d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2"
+ transform="matrix(0,1,-1,0,15263.423,-5650.0016)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-9"
+ transform="matrix(0,1,-1,0,16233.264,-6550.0019)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-5"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-0"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-2"
+ transform="matrix(0,1,-1,0,16235.049,5150.0013)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-1"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-05"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15213.374,6250.001)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-8"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g4988-9"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-8"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,16275.21,-3549.9995)"
+ id="g5026-8"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028-8"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030-3"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032-8"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034-7"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,15228.446,3550.0003)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-9"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g4988-94"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-81"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="7129.8301"
+ y="1827.9266"
+ id="text5084"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5086"
+ x="7129.8301"
+ y="1827.9266">0</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="8151.4199"
+ y="1834.2767"
+ id="text5088"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5090"
+ x="8151.4199"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="9133.6406"
+ y="1834.2767"
+ id="text5092"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5094"
+ x="9133.6406"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="10134.063"
+ y="1827.9266"
+ id="text5096"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5098"
+ x="10134.063"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="11130.253"
+ y="1834.2767"
+ id="text5100"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5102"
+ x="11130.253"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12131.523"
+ y="1827.9266"
+ id="text5104"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5106"
+ x="12131.523"
+ y="1827.9266">5</tspan></text>
+<g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-0"
+ transform="matrix(0,1,-1,0,15252.775,-4750.0014)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-9"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-6"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-7"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-2"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="small-packed.svg"
+ inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/small-packed.svg.png"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1200"
+ inkscape:window-height="1861"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="0.79452724"
+ inkscape:cx="274.82193"
+ inkscape:cy="553.63354"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697"
+ transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id3"><path
+ d="m 3000,4000 14000,0"
+ id="path3700"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707"
+ transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id5"><path
+ d="m 3000,6000 14000,0"
+ id="path3710"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712"
+ transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id6"><path
+ d="m 3000,5000 14000,0"
+ id="path3715"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726"
+ transform="matrix(0,1,-1,0,15249.203,5339.9514)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id8"><path
+ d="m 5000,4130 0,1740"
+ id="path3729"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777"
+ transform="matrix(0,0.77165216,-1,0,16246.489,-178.74067)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id15"><path
+ d="m 3000,9000 14000,0"
+ id="path3780"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ id="g4694"
+ transform="translate(-360.97102,-12113.126)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><path
+ d="m 12453.539,17156.388 -4740,0"
+ id="path5000"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
+ d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
+ id="path5002"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
+ id="path5004"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g><g
+ id="g5937"
+ transform="translate(0,223.62194)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ transform="matrix(0,1,-1,0,18223.967,-8349.5546)"
+ id="g3881"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id27"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3884"
+ d="m 14000,6130 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3886"
+ d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3888"
+ d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,18234.183,-349.55456)"
+ id="g3791"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id17"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3794"
+ d="m 6000,9140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3796"
+ d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3798"
+ d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ transform="matrix(0,1,-1,0,18267.97,-9295.131)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g5006-1"
+ class="com.sun.star.drawing.LineShape"
+ transform="matrix(0,1,-1,0,18262.594,-7464.3289)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5008-4"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5010-9"
+ d="m 15000,7140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5012-1"
+ d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5014-0"
+ d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ id="g5886"
+ transform="translate(0,451.53465)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ transform="matrix(0,1,-1,0,19281.34,-10450)"
+ id="g3872"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id26"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3875"
+ d="m 13000,7140 c -605.414,224.7611 -562.462,2618.4281 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3877"
+ d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3879"
+ d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,15263.423,-7436.6648)"
+ id="g3845-2"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id23-2"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3848-0"
+ d="m 10000,5130 c 601.166,371.825 643.252,2484.2375 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3850-5"
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3852-5"
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
+ id="g3845-2-9"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id23-2-5"><path
+ sodipodi:nodetypes="csc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3848-0-0"
+ d="m 10000,5130 c -277.667,213.9675 -421.2037,1098.6751 9.274,1390.4294 324.857,220.17 439.1,1136.4521 -9.274,1349.5706" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3850-5-6"
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3852-5-0"
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-2"
+ transform="matrix(0,1,-1,0,16235.049,2001.5555)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-1"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-05"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,16275.21,-6490.8506)"
+ id="g5026-8"
+ class="com.sun.star.drawing.LineShape"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g5028-8"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5030-3"
+ d="m 16000,7140 0,740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5032-8"
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5034-7"
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ id="g5915"
+ transform="translate(0,112.02661)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g5026"
+ transform="matrix(0,1,-1,0,16235.126,-7745.5541)"><g
+ id="g5028"><path
+ d="m 16000,7140 0,740"
+ id="path5030"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5032"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5034"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g4986-9"
+ class="com.sun.star.drawing.LineShape"
+ transform="matrix(0,1,-1,0,15228.446,261.1142)"><g
+ id="g4988-94"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path4990-9"
+ d="m 8000,4120 c 418.244,712.6982 649.9435,3520.9134 0,3740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path4992-81"
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path4994-6"
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="7129.8301"
+ y="1827.9266"
+ id="text5084"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5086"
+ x="7129.8301"
+ y="1827.9266">0</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="8151.4199"
+ y="1834.2767"
+ id="text5088"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5090"
+ x="8151.4199"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="9133.6406"
+ y="1834.2767"
+ id="text5092"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5094"
+ x="9133.6406"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="10134.063"
+ y="1827.9266"
+ id="text5096"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5098"
+ x="10134.063"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="11130.253"
+ y="1834.2767"
+ id="text5100"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5102"
+ x="11130.253"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12131.523"
+ y="1827.9266"
+ id="text5104"
+ sodipodi:linespacing="125%"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><tspan
+ sodipodi:role="line"
+ id="tspan5106"
+ x="12131.523"
+ y="1827.9266">5</tspan></text>
+<g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-0"
+ transform="matrix(0,1,-1,0,15252.775,-5787.5371)"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="id23-2-9"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-6"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-7"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-2"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15233.259,3170.7535)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-8"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><g
+ id="g4988-9"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-8"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="small-unpaired.svg"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1200"
+ inkscape:window-height="1861"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="1.5052653"
+ inkscape:cx="352.90096"
+ inkscape:cy="553.63354"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id3"><path
+ d="m 3000,4000 14000,0"
+ id="path3700"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id5"><path
+ d="m 3000,6000 14000,0"
+ id="path3710"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id6"><path
+ d="m 3000,5000 14000,0"
+ id="path3715"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726"
+ transform="matrix(0,1,-1,0,15249.203,2349.4313)"><g
+ id="id8"><path
+ d="m 5000,4130 0,1740"
+ id="path3729"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id15"><path
+ d="m 3000,9000 14000,0"
+ id="path3780"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ id="g6375"
+ transform="translate(0,-298.59846)"><g
+ transform="matrix(0,1,-1,0,18234.183,-1353.1102)"
+ id="g3791"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id17"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3794"
+ d="m 6000,9140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3796"
+ d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3798"
+ d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,18223.967,-9353.1102)"
+ id="g3881"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id27"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3884"
+ d="m 14000,6130 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3886"
+ d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3888"
+ d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ id="g4694"
+ transform="translate(-360.97102,-13558.382)"><path
+ d="m 12453.539,17156.388 -4740,0"
+ id="path5000"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
+ d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
+ id="path5002"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
+ id="path5004"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g><g
+ transform="matrix(0,1,-1,0,18267.97,-10901.424)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g5006-1"
+ class="com.sun.star.drawing.LineShape"
+ transform="matrix(0,1,-1,0,18262.594,-9151.1387)"><g
+ id="g5008-4"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path5010-9"
+ d="m 15000,7140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5012-1"
+ d="m 14973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path5014-0"
+ d="m 15027,8863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ id="g6363"
+ transform="translate(0,-0.00494257)"><g
+ transform="matrix(0,1,-1,0,19281.34,-10450)"
+ id="g3872"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id26"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3875"
+ d="m 13000,7140 c -349.649,193.8279 -401.112,1686.6051 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3877"
+ d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3879"
+ d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
+ id="g3845-2-9"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id23-2-5"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3848-0-0"
+ d="m 10000,5130 c 464.914,658.12 574.991,2352.8025 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3850-5-6"
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3852-5-0"
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-2"
+ transform="matrix(0,1,-1,0,16235.049,-1149.9987)"><g
+ id="id23-2-1"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-05"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15213.374,99.716312)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-8"><g
+ id="g4988-9"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-8"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15228.446,-1400.8537)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-9"><g
+ id="g4988-94"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-81"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="7129.8301"
+ y="1827.9266"
+ id="text5084"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5086"
+ x="7129.8301"
+ y="1827.9266">0</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="8151.4199"
+ y="1834.2767"
+ id="text5088"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5090"
+ x="8151.4199"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="9133.6406"
+ y="1834.2767"
+ id="text5092"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5094"
+ x="9133.6406"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="10134.063"
+ y="1827.9266"
+ id="text5096"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5098"
+ x="10134.063"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="11130.253"
+ y="1834.2767"
+ id="text5100"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5102"
+ x="11130.253"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12131.523"
+ y="1827.9266"
+ id="text5104"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5106"
+ x="12131.523"
+ y="1827.9266">5</tspan></text>
+</g></g></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="small-untriple-1.svg"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1200"
+ inkscape:window-height="1861"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="1.5052653"
+ inkscape:cx="352.90096"
+ inkscape:cy="553.63354"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id3"><path
+ d="m 3000,4000 14000,0"
+ id="path3700"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id5"><path
+ d="m 3000,6000 14000,0"
+ id="path3710"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id6"><path
+ d="m 3000,5000 14000,0"
+ id="path3715"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726"
+ transform="matrix(0,1,-1,0,15249.203,1599.1463)"><g
+ id="id8"><path
+ d="m 5000,4130 0,1740"
+ id="path3729"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id15"><path
+ d="m 3000,9000 14000,0"
+ id="path3780"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ id="g6375"
+ transform="translate(0,-298.59846)"><g
+ transform="matrix(0,1,-1,0,18234.183,-1353.1102)"
+ id="g3791"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id17"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3794"
+ d="m 6000,9140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3796"
+ d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3798"
+ d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,18223.967,-9353.1102)"
+ id="g3881"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id27"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3884"
+ d="m 14000,6130 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3886"
+ d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3888"
+ d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ id="g4694"
+ transform="translate(-360.97102,-13558.382)"><path
+ d="m 12453.539,17156.388 -4740,0"
+ id="path5000"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
+ d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
+ id="path5002"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
+ id="path5004"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g><g
+ transform="matrix(0,1,-1,0,18267.97,-10901.424)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g6363"
+ transform="translate(0,-0.00494257)"><g
+ transform="matrix(0,1,-1,0,19281.34,-10450)"
+ id="g3872"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id26"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3875"
+ d="m 13000,7140 c -349.649,193.8279 -401.112,1686.6051 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3877"
+ d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3879"
+ d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
+ id="g3845-2-9"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id23-2-5"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3848-0-0"
+ d="m 10000,5130 c 464.914,658.12 574.991,2352.8025 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3850-5-6"
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3852-5-0"
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-2"
+ transform="matrix(0,1,-1,0,16235.049,-1149.9987)"><g
+ id="id23-2-1"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-05"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15213.374,99.716312)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-8"><g
+ id="g4988-9"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-8"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-0"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15228.446,-2151.1387)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-9"><g
+ id="g4988-94"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-81"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="7129.8301"
+ y="1827.9266"
+ id="text5084"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5086"
+ x="7129.8301"
+ y="1827.9266">0</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="8151.4199"
+ y="1834.2767"
+ id="text5088"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5090"
+ x="8151.4199"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="9133.6406"
+ y="1834.2767"
+ id="text5092"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5094"
+ x="9133.6406"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="10134.063"
+ y="1827.9266"
+ id="text5096"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5098"
+ x="10134.063"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="11130.253"
+ y="1834.2767"
+ id="text5100"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5102"
+ x="11130.253"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12131.523"
+ y="1827.9266"
+ id="text5104"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5106"
+ x="12131.523"
+ y="1827.9266">5</tspan></text>
+<g
+ transform="matrix(0,1,-1,0,15270.757,-650.56868)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-9-7"><g
+ id="g4988-94-7"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-9-3"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-81-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-6-3"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="small-untriple-2.svg"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1200"
+ inkscape:window-height="1861"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="1.5052653"
+ inkscape:cx="352.90096"
+ inkscape:cy="553.63354"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3697"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id3"><path
+ d="m 3000,4000 14000,0"
+ id="path3700"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3707"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id5"><path
+ d="m 3000,6000 14000,0"
+ id="path3710"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3712"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id6"><path
+ d="m 3000,5000 14000,0"
+ id="path3715"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3726"
+ transform="matrix(0,1,-1,0,15249.203,1599.1463)"><g
+ id="id8"><path
+ d="m 5000,4130 0,1740"
+ id="path3729"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 4973,4147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3731"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 5027,5853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3733"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777"
+ transform="matrix(0,1,-1,0,16246.489,-863.7842)"><g
+ id="id15"><path
+ d="m 3000,9000 14000,0"
+ id="path3780"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ id="g6375"
+ transform="translate(0,-298.59846)"><g
+ transform="matrix(0,1,-1,0,18234.183,-1353.1102)"
+ id="g3791"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id17"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3794"
+ d="m 6000,9140 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3796"
+ d="m 5973,9157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3798"
+ d="m 6027,10863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,18223.967,-9353.1102)"
+ id="g3881"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id27"><path
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3884"
+ d="m 14000,6130 0,1740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3886"
+ d="m 13973,6147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3888"
+ d="m 14027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ id="g4694"
+ transform="translate(-360.97102,-13558.382)"><path
+ d="m 12453.539,17156.388 -4740,0"
+ id="path5000"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:112.57796478;stroke-linejoin:round" /><path
+ d="m 12436.501,17129.388 8,-28 14,-27 19,-24 24,-19 27,-14 28,-8 27,-3 27,3 29,8 27,14 23,19 19,24 14,27 9,28 2,28 -2,26 -9,29 -14,26 -19,24 -23,19 -27,14 -29,8 -27,3 -27,-3 -28,-8 -27,-14 -24,-19 -19,-24 -14,-26 -8,-29 -3,-26 3,-28 z"
+ id="path5002"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 7730.539,17183.388 -8,28 -14,27 -19,24 -24,19 -27,14 -28,8 -27,3 -27,-3 -29,-8 -27,-14 -23,-19 -19,-24 -14,-27 -9,-28 -2,-28 2,-26 9,-29 14,-26 19,-24 23,-19 27,-14 29,-8 27,-3 27,3 28,8 27,14 24,19 19,24 14,26 8,29 3,26 -3,28 z"
+ id="path5004"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g><g
+ transform="matrix(0,1,-1,0,18267.97,-10901.424)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ id="g6363"
+ transform="translate(0,-0.00494257)"><g
+ transform="matrix(0,1,-1,0,19281.34,-10450)"
+ id="g3872"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id26"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3875"
+ d="m 13000,7140 c -349.649,193.8279 -401.112,1686.6051 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3877"
+ d="m 12973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3879"
+ d="m 13027,9863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g><g
+ transform="matrix(0,1,-1,0,16233.264,-7443.3318)"
+ id="g3845-2-9"
+ class="com.sun.star.drawing.LineShape"><g
+ id="id23-2-5"><path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round"
+ inkscape:connector-curvature="0"
+ id="path3848-0-0"
+ d="m 10000,5130 c 464.914,658.12 574.991,2352.8025 0,2740" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3850-5-6"
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z" /><path
+ style="fill:#000000;stroke:none"
+ inkscape:connector-curvature="0"
+ id="path3852-5-0"
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z" /></g></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3845-2-2"
+ transform="matrix(0,1,-1,0,16235.049,-2724.222)"><g
+ id="id23-2-1"><path
+ d="m 10000,5130 0,2740"
+ id="path3848-0-05"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 9973,5147 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path3850-5-8"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 10027,7853 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path3852-5-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,15228.446,-2151.1387)"
+ class="com.sun.star.drawing.LineShape"
+ id="g4986-9"><g
+ id="g4988-94"><path
+ d="m 8000,4120 0,3740"
+ id="path4990-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 7973,4137 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path4992-81"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 8027,7843 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path4994-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="7129.8301"
+ y="1827.9266"
+ id="text5084"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5086"
+ x="7129.8301"
+ y="1827.9266">0</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="8151.4199"
+ y="1834.2767"
+ id="text5088"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5090"
+ x="8151.4199"
+ y="1834.2767">1</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="9133.6406"
+ y="1834.2767"
+ id="text5092"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5094"
+ x="9133.6406"
+ y="1834.2767">2</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="10134.063"
+ y="1827.9266"
+ id="text5096"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5098"
+ x="10134.063"
+ y="1827.9266">3</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="11130.253"
+ y="1834.2767"
+ id="text5100"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5102"
+ x="11130.253"
+ y="1834.2767">4</tspan></text>
+<text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:423.33337402px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu, Normal';text-align:start;letter-spacing:27.94000435px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="12131.523"
+ y="1827.9266"
+ id="text5104"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5106"
+ x="12131.523"
+ y="1827.9266">5</tspan></text>
+</g></g></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ooo="http://xml.openoffice.org/svg/export"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.2"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 21000 29700"
+ preserveAspectRatio="xMidYMid"
+ fill-rule="evenodd"
+ clip-path="url(#presentation_clip_path)"
+ stroke-width="28.222"
+ stroke-linejoin="round"
+ xml:space="preserve"
+ id="svg3643"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="untriple-general.svg"
+ inkscape:export-filename="/home/neil/Documents/programming/ou-programming-quiz/04-08-amidakuji/untriple-general.svg.png"
+ inkscape:export-xdpi="195.49001"
+ inkscape:export-ydpi="195.49001"><metadata
+ id="metadata3910"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1200"
+ inkscape:window-height="1861"
+ id="namedview3908"
+ showgrid="false"
+ inkscape:zoom="1.5890545"
+ inkscape:cx="318.60384"
+ inkscape:cy="553.63354"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3695" /><defs
+ class="ClipPathGroup"
+ id="defs3645"><marker
+ inkscape:stockid="DotL"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="DotL"
+ style="overflow:visible"
+ inkscape:isstock="true"><path
+ id="path7709"
+ d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8) translate(7.4, 1)" /></marker><clipPath
+ id="presentation_clip_path"
+ clipPathUnits="userSpaceOnUse"><rect
+ x="0"
+ y="0"
+ width="21000"
+ height="29700"
+ id="rect3648" /></clipPath></defs><defs
+ class="TextShapeIndex"
+ id="defs3650"><g
+ ooo:slide="id1"
+ ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29"
+ id="g3652" /></defs><defs
+ class="EmbeddedBulletChars"
+ id="defs3654"><g
+ id="bullet-char-template(57356)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"
+ id="path3657" /></g><g
+ id="bullet-char-template(57354)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"
+ id="path3660" /></g><g
+ id="bullet-char-template(10146)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"
+ id="path3663" /></g><g
+ id="bullet-char-template(10132)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"
+ id="path3666" /></g><g
+ id="bullet-char-template(10007)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"
+ id="path3669" /></g><g
+ id="bullet-char-template(10004)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"
+ id="path3672" /></g><g
+ id="bullet-char-template(9679)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"
+ id="path3675" /></g><g
+ id="bullet-char-template(8226)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"
+ id="path3678" /></g><g
+ id="bullet-char-template(8211)"
+ transform="scale(0.00048828125,-0.00048828125)"><path
+ d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"
+ id="path3681" /></g></defs><defs
+ class="TextEmbeddedBitmaps"
+ id="defs3683" /><g
+ id="g3685"><g
+ id="id2"
+ class="Master_Slide"><g
+ id="bg-id2"
+ class="Background" /><g
+ id="bo-id2"
+ class="BackgroundObjects" /></g></g><g
+ id="id1"
+ class="Slide"
+ clip-path="url(#presentation_clip_path)"><g
+ class="Page"
+ id="g3695"><path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,112.88889524;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 11201.748,2704.2129 0,2433.1719 310.443,0 0,-2433.1719 -310.443,0 z"
+ id="path9048"
+ inkscape:connector-curvature="0" /><path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,112.88889524;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 12201.748,2730.8534 0,2433.172 310.443,0 0,-2433.172 -310.443,0 z"
+ id="path9048-0"
+ inkscape:connector-curvature="0" /><path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,225.77779049;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 5688.1953,2576.7266 0,1806.9375 172.9824,0 0,-292.6836 137.4629,137.4629 0,-1651.7168 -310.4453,0 z"
+ id="path8833"
+ inkscape:connector-curvature="0" /><path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,225.77779049;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 7694.8688,3399.1784 0,1806.9376 172.9824,0 0,-292.6837 137.4629,137.463 0,-1651.7169 -310.4453,0 z"
+ id="path8833-1"
+ inkscape:connector-curvature="0" /><path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#cd0000;stroke-width:56.44444762;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:112.88889524,225.77779049;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 6664.7676,2704.2129 0,2379.8906 310.4433,0 0,-2379.8906 -310.4433,0 z"
+ id="path8864"
+ inkscape:connector-curvature="0" /><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702"
+ transform="matrix(0,0.2718241,-1,0,14843.418,1267.4623)"><g
+ id="id4"><path
+ d="m 3000,7000 14000,0"
+ id="path3705"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762"
+ transform="matrix(0,0.2718241,-1,0,14843.418,1267.4623)"><g
+ id="id12"><path
+ d="m 3000,8000 14000,0"
+ id="path3765"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777"
+ transform="matrix(0,0.2718241,-1,0,14843.418,1267.4623)"><g
+ id="id15"><path
+ d="m 3000,9000 14000,0"
+ id="path3780"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ transform="matrix(0,1,-1,0,13848.796,-13334.597)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056"><g
+ id="g5058"><path
+ d="m 16000,7140 0,740"
+ id="path5060"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,14862.8,-12522.444)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-0"><g
+ id="g5058-0"><path
+ d="m 16000,7140 0,740"
+ id="path5060-7"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-3"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-9"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,13850.458,-11710.288)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-4"><g
+ id="g5058-5"><path
+ d="m 16000,7140 0,740"
+ id="path5060-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-4"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,14862.8,-10898.135)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-04"><g
+ id="g5058-1"><path
+ d="m 16000,7140 0,740"
+ id="path5060-5"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-2"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-43"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3702-9"
+ transform="matrix(0,0.27182404,-1,0,19356.969,1318.001)"><g
+ id="id4-2"><path
+ d="m 3000,7000 14000,0"
+ id="path3705-8"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3762-8"
+ transform="matrix(0,0.27182404,-1,0,19356.969,1318.001)"><g
+ id="id12-5"><path
+ d="m 3000,8000 14000,0"
+ id="path3765-5"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ class="com.sun.star.drawing.LineShape"
+ id="g3777-4"
+ transform="matrix(0,0.27182404,-1,0,19356.969,1318.001)"><g
+ id="id15-8"><path
+ d="m 3000,9000 14000,0"
+ id="path3780-9"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /></g></g><g
+ transform="matrix(0,1,-1,0,19378.339,-13284.059)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-8"><g
+ id="g5058-9"><path
+ d="m 16000,7140 0,740"
+ id="path5060-76"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-4"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,18360.359,-12471.905)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-0-3"><g
+ id="g5058-0-5"><path
+ d="m 16000,7140 0,740"
+ id="path5060-7-7"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-3-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-9-9"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,19380.001,-11659.75)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-4-5"><g
+ id="g5058-5-1"><path
+ d="m 16000,7140 0,740"
+ id="path5060-9-1"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-6-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-4-5"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g><g
+ transform="matrix(0,1,-1,0,19376.351,-10847.597)"
+ class="com.sun.star.drawing.LineShape"
+ id="g5056-04-9"><g
+ id="g5058-1-0"><path
+ d="m 16000,7140 0,740"
+ id="path5060-5-6"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><path
+ d="m 15973,7157 -28,-8 -27,-14 -24,-19 -19,-24 -14,-27 -8,-28 -3,-27 3,-27 8,-29 14,-27 19,-23 24,-19 27,-14 28,-9 28,-2 26,2 29,9 26,14 24,19 19,23 14,27 8,29 3,27 -3,27 -8,28 -14,27 -19,24 -24,19 -26,14 -29,8 -26,3 -28,-3 z"
+ id="path5062-2-6"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /><path
+ d="m 16027,7863 28,8 27,14 24,19 19,24 14,27 8,28 3,27 -3,27 -8,29 -14,27 -19,23 -24,19 -27,14 -28,9 -28,2 -26,-2 -29,-9 -26,-14 -24,-19 -19,-23 -14,-27 -8,-29 -3,-27 3,-27 8,-28 14,-27 19,-24 24,-19 26,-14 29,-8 26,-3 28,3 z"
+ id="path5064-43-2"
+ inkscape:connector-curvature="0"
+ style="fill:#000000;stroke:none" /></g></g></g></g></svg>
\ No newline at end of file