├── noir ├── .gitignore ├── Prover.toml ├── Nargo.toml ├── Verifier.toml └── src │ └── main.nr ├── zokrates ├── out ├── out.r1cs ├── out.wtns ├── proving.key ├── run.sh ├── proof.json ├── root.zok ├── abi.json ├── verification.key └── witness ├── arkworks ├── .gitignore ├── Cargo.toml └── src │ ├── alloc.rs │ ├── main.rs │ └── cmp.rs └── circom ├── README.md ├── sudoku.input.json ├── Makefile └── sudoku.circom /noir/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | proofs/ 3 | -------------------------------------------------------------------------------- /noir/Prover.toml: -------------------------------------------------------------------------------- 1 | solution = [1, 2, 1, 2] 2 | puzzle = [1, 0, 0, 2] -------------------------------------------------------------------------------- /noir/Nargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = [""] 3 | compiler_version = "0.1" 4 | 5 | [dependencies] -------------------------------------------------------------------------------- /zokrates/out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdi-berkeley/zkp-course-lecture3-code/HEAD/zokrates/out -------------------------------------------------------------------------------- /zokrates/out.r1cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdi-berkeley/zkp-course-lecture3-code/HEAD/zokrates/out.r1cs -------------------------------------------------------------------------------- /zokrates/out.wtns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdi-berkeley/zkp-course-lecture3-code/HEAD/zokrates/out.wtns -------------------------------------------------------------------------------- /zokrates/proving.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdi-berkeley/zkp-course-lecture3-code/HEAD/zokrates/proving.key -------------------------------------------------------------------------------- /zokrates/run.sh: -------------------------------------------------------------------------------- 1 | zokrates compile --input root.zok 2 | zokrates setup 3 | zokrates compute-witness -a 1 0 0 2 1 2 1 2 4 | zokrates generate-proof 5 | zokrates verify -------------------------------------------------------------------------------- /noir/Verifier.toml: -------------------------------------------------------------------------------- 1 | puzzle = ["0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002"] 2 | -------------------------------------------------------------------------------- /arkworks/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | debug/ 4 | target/ 5 | 6 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 7 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 8 | Cargo.lock 9 | 10 | # These are backup files generated by rustfmt 11 | **/*.rs.bk 12 | 13 | # MSVC Windows builds of rustc generate these, which store debugging information 14 | *.pdb 15 | -------------------------------------------------------------------------------- /circom/README.md: -------------------------------------------------------------------------------- 1 | # Circom Example 2 | 3 | ## Dependencies 4 | 5 | * [`circom`](https://github.com/iden3/circom) 6 | * [`node`](https://nodejs.org/en/) 7 | * [`snarkjs`](https://github.com/iden3/snarkjs) 8 | 9 | ## Instructions 10 | 11 | The end-to-end target is `make verify`. See the Makefile for steps. 12 | 13 | ## Files to edit 14 | 15 | * `sudoku.circom`: the template 16 | * `sudoku.input.json`: the prover's input 17 | * the verifier's input, `sudoku.inst.json`, is computed from it 18 | -------------------------------------------------------------------------------- /arkworks/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sudoku-snark" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | ark-ff = { version = "0.4" } 10 | ark-ec = { version = "0.4" } 11 | ark-bls12-381 = { version = "0.4" } 12 | ark-r1cs-std = { version = "0.4" } 13 | ark-snark = { version = "0.4" } 14 | ark-relations = { version = "0.4" } 15 | 16 | [dev-dependencies] 17 | itertools = "0.10.1" 18 | -------------------------------------------------------------------------------- /circom/sudoku.input.json: -------------------------------------------------------------------------------- 1 | { 2 | "solution": 3 | [ 4 | ["1","9","4","8","6","5","2","3","7"], 5 | ["7","3","5","4","1","2","9","6","8"], 6 | ["8","6","2","3","9","7","1","4","5"], 7 | ["9","2","1","7","4","8","3","5","6"], 8 | ["6","7","8","5","3","1","4","2","9"], 9 | ["4","5","3","9","2","6","8","7","1"], 10 | ["3","8","9","6","5","4","7","1","2"], 11 | ["2","4","6","1","7","9","5","8","3"], 12 | ["5","1","7","2","8","3","6","9","4"] 13 | ], 14 | "puzzle": 15 | [ 16 | ["0","0","0","8","6","0","2","3","0"], 17 | ["7","0","5","0","0","0","9","0","8"], 18 | ["0","6","0","3","0","7","0","4","0"], 19 | ["0","2","0","7","0","8","0","5","0"], 20 | ["0","7","8","5","0","0","0","0","0"], 21 | ["4","0","0","9","0","6","0","7","0"], 22 | ["3","0","9","0","5","0","7","0","2"], 23 | ["0","4","0","1","0","9","0","8","0"], 24 | ["5","0","7","0","8","0","0","9","4"] 25 | ] 26 | } -------------------------------------------------------------------------------- /zokrates/proof.json: -------------------------------------------------------------------------------- 1 | { 2 | "scheme": "g16", 3 | "curve": "bn128", 4 | "proof": { 5 | "a": [ 6 | "0x2afe7290614054ce5b1209145dc26b76b702f272abc88d0e538b1122a5833bf2", 7 | "0x16ed4671de1d904a9982a73598f10eb2a385824ea9df5a7a7cabf0f2aa33c5ec" 8 | ], 9 | "b": [ 10 | [ 11 | "0x0bbbe70e2ac5e07cee981bcb4bc27d21fde258af3736304ea0b13c6ac0dc355b", 12 | "0x27bc8b976f6fe192c7a00a6a9bcc2439a5103d4588219a88e83760d06d1f6ab3" 13 | ], 14 | [ 15 | "0x29f7af18bcf13d56aa5eab34a9d3676aac7e88549acaa656235b32019bdabaf1", 16 | "0x12d2b53ee2e77533d768fb4f6a643f16620b7bf6bc485a300dd97f0c08c66251" 17 | ] 18 | ], 19 | "c": [ 20 | "0x1c20b421f1e5c40cdb805f839b1b754f27ed7577f74e16a83ae30ffe9089f154", 21 | "0x08e244d918764c6102a494c06a64d507896b24df89b7fcd950857b2620794526" 22 | ] 23 | }, 24 | "inputs": [ 25 | "0x0000000000000000000000000000000000000000000000000000000000000001", 26 | "0x0000000000000000000000000000000000000000000000000000000000000000", 27 | "0x0000000000000000000000000000000000000000000000000000000000000000", 28 | "0x0000000000000000000000000000000000000000000000000000000000000002" 29 | ] 30 | } -------------------------------------------------------------------------------- /zokrates/root.zok: -------------------------------------------------------------------------------- 1 | struct Puzzle { 2 | u8[N][N] elems; 3 | } 4 | struct Solution { 5 | u8[N][N] elems; 6 | } 7 | 8 | def check_rows(Solution sol) -> bool { 9 | // for each row 10 | for u32 i in 0..N { 11 | // for each column 12 | for u32 j in 0..N { 13 | // Check that the (i, j)-th element is not equal to any of the 14 | // the elements preceding it in the same row. 15 | for u32 k in 0..j { 16 | assert(sol.elems[i][j] != sol.elems[i][k]); 17 | } 18 | } 19 | } 20 | return true; 21 | } 22 | 23 | def check_puzzle_matches_solution(Solution sol, Puzzle puzzle) -> bool { 24 | for u32 i in 0..N { 25 | for u32 j in 0..N { 26 | assert((sol.elems[i][j] > 0) && (sol.elems[i][j] < 10)); 27 | assert(\ 28 | (puzzle.elems[i][j] == 0) ||\ 29 | (puzzle.elems[i][j] == sol.elems[i][j])\ 30 | ); 31 | } 32 | } 33 | return true; 34 | } 35 | 36 | def main(public Puzzle<2> puzzle, private Solution<2> sol) { 37 | assert(check_puzzle_matches_solution(sol, puzzle)); 38 | assert(check_rows(sol)); 39 | } -------------------------------------------------------------------------------- /circom/Makefile: -------------------------------------------------------------------------------- 1 | SHELL = zsh 2 | 3 | circom = sudoku.circom 4 | r1cs = sudoku.r1cs 5 | wasm = sudoku_js/sudoku.wasm 6 | wit_gen = sudoku_js/generate_witness.js 7 | compile_outputs = sudoku_js/witness_calculator.js $(r1cs) $(wasm) $(wit_gen) 8 | pk = sudoku.pk 9 | vk = sudoku.vk 10 | ptau = sudoku.ptau 11 | keys = $(pk) $(vk) 12 | p_input = sudoku.input.json 13 | wit = sudoku.wtns 14 | pf = sudoku.pf.json 15 | inst = sudoku.inst.json 16 | prove_outputs = $(pf) $(inst) 17 | 18 | all: verify 19 | 20 | $(compile_outputs): $(circom) 21 | circom $< --r1cs --wasm 22 | 23 | $(ptau): 24 | snarkjs powersoftau new bn128 12 tmp.ptau 25 | snarkjs powersoftau prepare phase2 tmp.ptau $(ptau) 26 | rm tmp.ptau 27 | 28 | $(keys): $(ptau) $(r1cs) 29 | snarkjs groth16 setup $(r1cs) $(ptau) $(pk) 30 | snarkjs zkey export verificationkey $(pk) $(vk) 31 | 32 | $(wit): $(p_input) $(wasm) $(wit_gen) 33 | node $(wit_gen) $(wasm) $(p_input) $@ 34 | 35 | $(prove_outputs): $(wit) $(pk) 36 | snarkjs groth16 prove $(pk) $(wit) $(pf) $(inst) 37 | 38 | .PHONY = verify clean 39 | 40 | verify: $(pf) $(inst) $(vk) 41 | snarkjs groth16 verify $(vk) $(inst) $(pf) 42 | 43 | clean: 44 | rm -f $(compile_outputs) $(ptau) $(keys) $(wit) $(prove_outputs) 45 | rmdir sudoku_js 46 | 47 | -------------------------------------------------------------------------------- /zokrates/abi.json: -------------------------------------------------------------------------------- 1 | { 2 | "inputs": [ 3 | { 4 | "name": "puzzle", 5 | "public": true, 6 | "type": "struct", 7 | "components": { 8 | "name": "Puzzle", 9 | "generics": [ 10 | 2 11 | ], 12 | "members": [ 13 | { 14 | "name": "elems", 15 | "type": "array", 16 | "components": { 17 | "size": 2, 18 | "type": "array", 19 | "components": { 20 | "size": 2, 21 | "type": "u8" 22 | } 23 | } 24 | } 25 | ] 26 | } 27 | }, 28 | { 29 | "name": "sol", 30 | "public": false, 31 | "type": "struct", 32 | "components": { 33 | "name": "Solution", 34 | "generics": [ 35 | 2 36 | ], 37 | "members": [ 38 | { 39 | "name": "elems", 40 | "type": "array", 41 | "components": { 42 | "size": 2, 43 | "type": "array", 44 | "components": { 45 | "size": 2, 46 | "type": "u8" 47 | } 48 | } 49 | } 50 | ] 51 | } 52 | } 53 | ], 54 | "output": { 55 | "type": "tuple", 56 | "components": { 57 | "elements": [] 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /noir/src/main.nr: -------------------------------------------------------------------------------- 1 | global SIZE = 2; 2 | global NUM_SLOTS = 4; 3 | 4 | struct Solution { 5 | elems: [u4; NUM_SLOTS] 6 | } 7 | struct Puzzle { 8 | elems: [u4; NUM_SLOTS] 9 | } 10 | 11 | // Check that the rows of the solution 12 | fn check_rows_are_valid(solution: Solution) { 13 | for i in 0..SIZE { 14 | let mut row = [0; SIZE]; 15 | for j in 0..SIZE { 16 | row[j] = solution.elems[i * SIZE + j]; 17 | }; 18 | check_distinctness(row); 19 | }; 20 | } 21 | 22 | // Check that each element in the array is distinct 23 | // and is in the range [1, 9]. 24 | fn check_distinctness(a: [u4; SIZE]) { 25 | for i in 0..SIZE { 26 | // Check that all previous elements are different from a[i] 27 | for j in 0..SIZE { 28 | if (j as u4) < (i as u4) { 29 | constrain a[j] != a[i]; 30 | } 31 | } 32 | }; 33 | } 34 | 35 | 36 | // check the solution corresponds to the puzzle: 37 | fn check_solution_matches_puzzle(solution: Solution, puzzle: Puzzle) { 38 | for row in 0..SIZE { 39 | for col in 0..SIZE { 40 | let elem = solution.elems[row * SIZE + col]; 41 | // Check that each solution value is in the correct range. 42 | constrain (elem > 0 & (elem < 10)); 43 | constrain ( 44 | (puzzle.elems[row * SIZE + col] == 0) | 45 | (puzzle.elems[row * SIZE + col] == elem) 46 | ); 47 | }; 48 | }; 49 | } 50 | 51 | 52 | fn main(solution: [u4; NUM_SLOTS], puzzle: pub [u4; NUM_SLOTS]) { 53 | let solution = Solution { elems: solution }; 54 | let puzzle = Puzzle { elems: puzzle }; 55 | check_solution_matches_puzzle(solution, puzzle); 56 | check_rows_are_valid(solution); 57 | } 58 | -------------------------------------------------------------------------------- /arkworks/src/alloc.rs: -------------------------------------------------------------------------------- 1 | use std::borrow::Borrow; 2 | 3 | use ark_ff::PrimeField; 4 | use ark_r1cs_std::{prelude::{AllocVar, AllocationMode}, uint8::UInt8}; 5 | use ark_relations::r1cs::{Namespace, SynthesisError}; 6 | 7 | use crate::{Puzzle, Solution}; 8 | 9 | impl AllocVar<[[u8; N]; N], F> for Puzzle { 10 | fn new_variable>( 11 | cs: impl Into>, 12 | f: impl FnOnce() -> Result, 13 | mode: AllocationMode, 14 | ) -> Result { 15 | let cs = cs.into(); 16 | let row = [(); N].map(|_| UInt8::constant(0)); 17 | let mut puzzle = Puzzle([(); N].map(|_| row.clone())); 18 | let value = f().map_or([[0; N]; N], |f| *f.borrow()); 19 | for (i, row) in value.into_iter().enumerate() { 20 | for (j, cell) in row.into_iter().enumerate() { 21 | puzzle.0[i][j] = UInt8::new_variable(cs.clone(), || Ok(cell), mode)?; 22 | } 23 | } 24 | Ok(puzzle) 25 | } 26 | } 27 | 28 | impl AllocVar<[[u8; N]; N], F> for Solution { 29 | fn new_variable>( 30 | cs: impl Into>, 31 | f: impl FnOnce() -> Result, 32 | mode: AllocationMode, 33 | ) -> Result { 34 | let cs = cs.into(); 35 | let row = [(); N].map(|_| UInt8::constant(0)); 36 | let mut solution = Solution([(); N].map(|_| row.clone())); 37 | let value = f().map_or([[0; N]; N], |f| *f.borrow()); 38 | for (i, row) in value.into_iter().enumerate() { 39 | for (j, cell) in row.into_iter().enumerate() { 40 | solution.0[i][j] = UInt8::new_variable(cs.clone(), || Ok(cell), mode)?; 41 | } 42 | } 43 | Ok(solution) 44 | } 45 | } -------------------------------------------------------------------------------- /circom/sudoku.circom: -------------------------------------------------------------------------------- 1 | pragma circom 2.0.0; 2 | 3 | template NonEqual(){ 4 | signal input in0; 5 | signal input in1; 6 | signal inv; 7 | inv <-- 1/ (in0 - in1); 8 | inv*(in0 - in1) === 1; 9 | } 10 | 11 | template Distinct(n) { 12 | signal input in[n]; 13 | component nonEqual[n][n]; 14 | for(var i = 0; i < n; i++){ 15 | for(var j = 0; j < i; j++){ 16 | nonEqual[i][j] = NonEqual(); 17 | nonEqual[i][j].in0 <== in[i]; 18 | nonEqual[i][j].in1 <== in[j]; 19 | } 20 | } 21 | } 22 | 23 | // Enforce that 0 <= in < 16 24 | template Bits4(){ 25 | signal input in; 26 | signal bits[4]; 27 | var bitsum = 0; 28 | for (var i = 0; i < 4; i++) { 29 | bits[i] <-- (in >> i) & 1; 30 | bits[i] * (bits[i] - 1) === 0; 31 | bitsum = bitsum + 2 ** i * bits[i]; 32 | } 33 | bitsum === in; 34 | } 35 | 36 | // Enforce that 1 <= in <= 9 37 | template OneToNine() { 38 | signal input in; 39 | component lowerBound = Bits4(); 40 | component upperBound = Bits4(); 41 | lowerBound.in <== in - 1; 42 | upperBound.in <== in + 6; 43 | } 44 | 45 | template Sudoku(n) { 46 | // solution is a 2D array: indices are (row_i, col_i) 47 | signal input solution[n][n]; 48 | // puzzle is the same, but a zero indicates a blank 49 | signal input puzzle[n][n]; 50 | 51 | component distinct[n]; 52 | component inRange[n][n]; 53 | 54 | for (var row_i = 0; row_i < n; row_i++) { 55 | for (var col_i = 0; col_i < n; col_i++) { 56 | // we could make this a component 57 | puzzle[row_i][col_i] * (puzzle[row_i][col_i] - solution[row_i][col_i]) === 0; 58 | } 59 | } 60 | 61 | for (var row_i = 0; row_i < n; row_i++) { 62 | for (var col_i = 0; col_i < n; col_i++) { 63 | if (row_i == 0) { 64 | distinct[col_i] = Distinct(n); 65 | } 66 | inRange[row_i][col_i] = OneToNine(); 67 | inRange[row_i][col_i].in <== solution[row_i][col_i]; 68 | distinct[col_i].in[row_i] <== solution[row_i][col_i]; 69 | } 70 | } 71 | } 72 | 73 | component main {public[puzzle]} = Sudoku(9); 74 | 75 | -------------------------------------------------------------------------------- /zokrates/verification.key: -------------------------------------------------------------------------------- 1 | { 2 | "scheme": "g16", 3 | "curve": "bn128", 4 | "alpha": [ 5 | "0x235098f893dbd08ba48f672d8420be8a715738bbfd8769a02c28d8e71eff7cc2", 6 | "0x0e9d1a0852063da79abef521616b01e5ecf6036585f3a12b4555685d3c04dc5e" 7 | ], 8 | "beta": [ 9 | [ 10 | "0x0d3b215086b41c166433111cfcbb496fec13d074e4e333b3fb3dcd1ff24082f7", 11 | "0x11df05cbdc06429f87e1e5e3692bf34b0632415d5762a91726d25df399958cad" 12 | ], 13 | [ 14 | "0x20ed281aadbe1874caa4807a619dc6afe988de01c57b30e4fb9e81dc20e05a93", 15 | "0x185b99fbefa20082a889c8a5c843b80cf9e2418e840c61c0e5e099b8d55dcdfc" 16 | ] 17 | ], 18 | "gamma": [ 19 | [ 20 | "0x1861a3ce5cebde634dfe6981978e483ba79852b6ec29e6146390df101bd5265f", 21 | "0x27a5991ac49cae099d68fc014b2457f495d35eb0c9cfce51c1953b17d65a5d9c" 22 | ], 23 | [ 24 | "0x102379e1210adc8cc6c95f0b2be28ec7c36e11d8a7a3de39ab6645f45b73c58d", 25 | "0x29c46ff2ce49a41affd58a5f4594454150fb1ec202de231e0dcb4550e52e35c0" 26 | ] 27 | ], 28 | "delta": [ 29 | [ 30 | "0x2aad9587e8cc966a3e5daf0e22a1d06fa5612661a7b1fe05b219aa5848e53760", 31 | "0x1e5514a70cb128c4707251a6b3a849d00af9905111feeb45cdbe29989dd2b23c" 32 | ], 33 | [ 34 | "0x04fbeafd3e956fc17c2e689915fd205fd5ac272e8da069a0fbb24b68f1b64706", 35 | "0x15709f19d07af6cb4a3f517d06176c6c580523394bde290fad1b8b1456c03b7e" 36 | ] 37 | ], 38 | "gamma_abc": [ 39 | [ 40 | "0x2a64cfc01ec7ce6b6dead6606977cc658a35921913be27e5b4e24a148abd5c44", 41 | "0x276fb01c0ccf4dab85856e0ead30d3a7dfd0af1c47f609087534291e0245d2b7" 42 | ], 43 | [ 44 | "0x14576208134edbed815e3c3dd12b748e4409a73fff74e82b0aead358d7dd59d5", 45 | "0x173d7f71189ca832ea6f4bc07e237a5f42503f26df4ed25039bc323da1d6f2f5" 46 | ], 47 | [ 48 | "0x09a723da0f3896879fe725e70880967324de0de283f402af482e1f45767d6c5c", 49 | "0x0b580be8721fad0ce7ec19c6a7410f3ff2381977952c9e6b810f2d8edf0e463e" 50 | ], 51 | [ 52 | "0x1de122367179b676cda62898e30cb053cc81ddd6ae335d98d04d3a62538bb1b1", 53 | "0x1b2989a92013bcffb5b56a46b2de14d84200a89dca8c1b55a728e9cc3f03a34e" 54 | ], 55 | [ 56 | "0x0b8585ff820cb8d8f641fc91b57cac4eff282c78865d9c047a146146d4a71781", 57 | "0x1293bb28cebe1cfb252fdd2c3bfba61310017ff1e38f7dde424ea30a57e62d48" 58 | ] 59 | ] 60 | } -------------------------------------------------------------------------------- /arkworks/src/main.rs: -------------------------------------------------------------------------------- 1 | use ark_ff::PrimeField; 2 | use ark_r1cs_std::{ 3 | prelude::{Boolean, EqGadget, AllocVar}, 4 | uint8::UInt8 5 | }; 6 | use ark_relations::r1cs::{SynthesisError, ConstraintSystem}; 7 | use cmp::CmpGadget; 8 | 9 | mod cmp; 10 | mod alloc; 11 | 12 | pub struct Puzzle([[UInt8; N]; N]); 13 | pub struct Solution([[UInt8; N]; N]); 14 | 15 | fn check_rows( 16 | solution: &Solution, 17 | ) -> Result<(), SynthesisError> { 18 | for row in &solution.0 { 19 | for (j, cell) in row.iter().enumerate() { 20 | for prior_cell in &row[0..j] { 21 | cell.is_neq(&prior_cell)? 22 | .enforce_equal(&Boolean::TRUE)?; 23 | } 24 | } 25 | } 26 | Ok(()) 27 | } 28 | 29 | fn check_puzzle_matches_solution( 30 | puzzle: &Puzzle, 31 | solution: &Solution, 32 | ) -> Result<(), SynthesisError> { 33 | for (p_row, s_row) in puzzle.0.iter().zip(&solution.0) { 34 | for (p, s) in p_row.iter().zip(s_row) { 35 | // Ensure that the solution `s` is in the range [1, N] 36 | s.is_leq(&UInt8::constant(N as u8))? 37 | .and(&s.is_geq(&UInt8::constant(1))?)? 38 | .enforce_equal(&Boolean::TRUE)?; 39 | 40 | // Ensure that either the puzzle slot is 0, or that 41 | // the slot matches equivalent slot in the solution 42 | (p.is_eq(s)?.or(&p.is_eq(&UInt8::constant(0))?)?) 43 | .enforce_equal(&Boolean::TRUE)?; 44 | } 45 | } 46 | Ok(()) 47 | } 48 | 49 | fn check_helper( 50 | puzzle: &[[u8; N]; N], 51 | solution: &[[u8; N]; N], 52 | ) { 53 | let cs = ConstraintSystem::::new_ref(); 54 | let puzzle_var = Puzzle::new_input(cs.clone(), || Ok(puzzle)).unwrap(); 55 | let solution_var = Solution::new_witness(cs.clone(), || Ok(solution)).unwrap(); 56 | check_puzzle_matches_solution(&puzzle_var, &solution_var).unwrap(); 57 | check_rows(&solution_var).unwrap(); 58 | assert!(cs.is_satisfied().unwrap()); 59 | } 60 | 61 | fn main() { 62 | use ark_bls12_381::Fq as F; 63 | // Check that it accepts a valid solution. 64 | let puzzle = [ 65 | [1, 0], 66 | [0, 2], 67 | ]; 68 | let solution = [ 69 | [1, 2], 70 | [1, 2], 71 | ]; 72 | check_helper::<2, F>(&puzzle, &solution); 73 | 74 | // Check that it rejects a solution with a repeated number in a row. 75 | let puzzle = [ 76 | [1, 0], 77 | [0, 2], 78 | ]; 79 | let solution = [ 80 | [1, 0], 81 | [1, 2], 82 | ]; 83 | check_helper::<2, F>(&puzzle, &solution); 84 | } 85 | -------------------------------------------------------------------------------- /arkworks/src/cmp.rs: -------------------------------------------------------------------------------- 1 | use ark_ff::PrimeField; 2 | use ark_r1cs_std::{prelude::{Boolean, EqGadget}, R1CSVar, uint8::UInt8, ToBitsGadget}; 3 | use ark_relations::r1cs::SynthesisError; 4 | 5 | pub trait CmpGadget: R1CSVar + EqGadget { 6 | #[inline] 7 | fn is_geq(&self, other: &Self) -> Result, SynthesisError> { 8 | // self >= other => self == other || self > other 9 | // => !(self < other) 10 | self.is_lt(other).map(|b| b.not()) 11 | } 12 | 13 | #[inline] 14 | fn is_leq(&self, other: &Self) -> Result, SynthesisError> { 15 | // self <= other => self == other || self < other 16 | // => self == other || other > self 17 | // => self >= other 18 | other.is_geq(self) 19 | } 20 | 21 | #[inline] 22 | fn is_gt(&self, other: &Self) -> Result, SynthesisError> { 23 | // self > other => !(self == other || self < other) 24 | // => !(self <= other) 25 | self.is_leq(other).map(|b| b.not()) 26 | } 27 | 28 | fn is_lt(&self, other: &Self) -> Result, SynthesisError>; 29 | } 30 | 31 | impl CmpGadget for UInt8 { 32 | fn is_lt(&self, other: &Self) -> Result, SynthesisError> { 33 | // Determine the variable mode. 34 | if self.is_constant() && other.is_constant() { 35 | let self_value = self.value().unwrap(); 36 | let other_value = other.value().unwrap(); 37 | let result = Boolean::constant(self_value < other_value); 38 | Ok(result) 39 | } else { 40 | let diff_bits = self.xor(other)?.to_bits_be()?.into_iter(); 41 | let mut result = Boolean::FALSE; 42 | let mut a_and_b_equal_so_far = Boolean::TRUE; 43 | let a_bits = self.to_bits_be()?; 44 | let b_bits = other.to_bits_be()?; 45 | for ((a_and_b_are_unequal, a), b) in diff_bits.zip(a_bits).zip(b_bits) { 46 | let a_is_lt_b = a.not().and(&b)?; 47 | let a_and_b_are_equal = a_and_b_are_unequal.not(); 48 | result = result.or(&a_is_lt_b.and(&a_and_b_equal_so_far)?)?; 49 | a_and_b_equal_so_far = a_and_b_equal_so_far.and(&a_and_b_are_equal)?; 50 | } 51 | Ok(result) 52 | } 53 | } 54 | } 55 | 56 | #[cfg(test)] 57 | mod test { 58 | use ark_r1cs_std::{prelude::{AllocationMode, AllocVar, Boolean, EqGadget}, uint8::UInt8}; 59 | use ark_relations::r1cs::{ConstraintSystem, SynthesisMode}; 60 | use ark_bls12_381::Fr as Fp; 61 | use itertools::Itertools; 62 | 63 | use crate::cmp::CmpGadget; 64 | 65 | #[test] 66 | fn test_comparison_for_u8() { 67 | let modes = [AllocationMode::Constant, AllocationMode::Input, AllocationMode::Witness]; 68 | for (a, a_mode) in (0..=u8::MAX).cartesian_product(modes) { 69 | for (b, b_mode) in (0..=u8::MAX).cartesian_product(modes) { 70 | let cs = ConstraintSystem::::new_ref(); 71 | cs.set_mode(SynthesisMode::Prove { construct_matrices: true }); 72 | let a_var = UInt8::new_variable(cs.clone(), || Ok(a), a_mode).unwrap(); 73 | let b_var = UInt8::new_variable(cs.clone(), || Ok(b), b_mode).unwrap(); 74 | if a < b { 75 | a_var.is_lt(&b_var).unwrap() 76 | .enforce_equal(&Boolean::TRUE).unwrap(); 77 | a_var.is_leq(&b_var).unwrap().enforce_equal(&Boolean::TRUE).unwrap(); 78 | a_var.is_gt(&b_var).unwrap().enforce_equal(&Boolean::FALSE).unwrap(); 79 | a_var.is_geq(&b_var).unwrap().enforce_equal(&Boolean::FALSE).unwrap(); 80 | } else if a == b { 81 | a_var.is_lt(&b_var).unwrap().enforce_equal(&Boolean::FALSE).unwrap(); 82 | a_var.is_leq(&b_var).unwrap().enforce_equal(&Boolean::TRUE).unwrap(); 83 | a_var.is_gt(&b_var).unwrap().enforce_equal(&Boolean::FALSE).unwrap(); 84 | a_var.is_geq(&b_var).unwrap().enforce_equal(&Boolean::TRUE).unwrap(); 85 | } else { 86 | a_var.is_lt(&b_var).unwrap().enforce_equal(&Boolean::FALSE).unwrap(); 87 | a_var.is_leq(&b_var).unwrap().enforce_equal(&Boolean::FALSE).unwrap(); 88 | a_var.is_gt(&b_var).unwrap().enforce_equal(&Boolean::TRUE).unwrap(); 89 | a_var.is_geq(&b_var).unwrap().enforce_equal(&Boolean::TRUE).unwrap(); 90 | } 91 | assert!(cs.is_satisfied().unwrap(), "a: {a}, b: {b}"); 92 | } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /zokrates/witness: -------------------------------------------------------------------------------- 1 | ~one 1 2 | _0 1 3 | _1 0 4 | _2 0 5 | _3 0 6 | _4 0 7 | _5 0 8 | _6 0 9 | _7 0 10 | _8 1 11 | _9 0 12 | _10 0 13 | _11 0 14 | _12 0 15 | _13 0 16 | _14 0 17 | _15 0 18 | _16 0 19 | _17 0 20 | _18 0 21 | _19 0 22 | _20 0 23 | _21 0 24 | _22 0 25 | _23 0 26 | _24 0 27 | _25 0 28 | _26 0 29 | _27 2 30 | _28 0 31 | _29 0 32 | _30 0 33 | _31 0 34 | _32 0 35 | _33 0 36 | _34 1 37 | _35 0 38 | _36 1 39 | _37 0 40 | _38 0 41 | _39 0 42 | _40 0 43 | _41 0 44 | _42 0 45 | _43 0 46 | _44 1 47 | _45 2 48 | _46 0 49 | _47 0 50 | _48 0 51 | _49 0 52 | _50 0 53 | _51 0 54 | _52 1 55 | _53 0 56 | _54 1 57 | _55 0 58 | _56 0 59 | _57 0 60 | _58 0 61 | _59 0 62 | _60 0 63 | _61 0 64 | _62 1 65 | _63 2 66 | _64 0 67 | _65 0 68 | _66 0 69 | _67 0 70 | _68 0 71 | _69 0 72 | _70 1 73 | _71 0 74 | _1492 1 75 | _1493 1 76 | _1496 0 77 | _1497 1 78 | _1498 1 79 | _1499 1 80 | _1500 0 81 | _1501 0 82 | _1502 0 83 | _1503 0 84 | _1504 0 85 | _1505 1 86 | _1506 1 87 | _1507 0 88 | _1508 0 89 | _1509 1 90 | _1510 0 91 | _1511 0 92 | _1512 0 93 | _1513 1 94 | _1514 0 95 | _1515 0 96 | _1516 1 97 | _1517 1 98 | _1518 1 99 | _1519 0 100 | _1520 0 101 | _1521 1 102 | _1522 1 103 | _1523 1 104 | _1524 0 105 | _1525 0 106 | _1526 1 107 | _1527 0 108 | _1528 1 109 | _1529 1 110 | _1530 1 111 | _1531 0 112 | _1532 0 113 | _1533 0 114 | _1534 0 115 | _1535 1 116 | _1536 0 117 | _1537 0 118 | _1538 1 119 | _1539 1 120 | _1540 0 121 | _1541 0 122 | _1542 0 123 | _1543 1 124 | _1544 1 125 | _1545 0 126 | _1546 1 127 | _1547 0 128 | _1548 0 129 | _1549 0 130 | _1550 0 131 | _1551 0 132 | _1552 0 133 | _1553 0 134 | _1554 1 135 | _1555 0 136 | _1556 1 137 | _1557 0 138 | _1558 0 139 | _1559 1 140 | _1560 1 141 | _1561 0 142 | _1562 1 143 | _1563 1 144 | _1564 1 145 | _1565 0 146 | _1566 0 147 | _1567 0 148 | _1568 0 149 | _1569 1 150 | _1570 0 151 | _1571 1 152 | _1572 0 153 | _1573 0 154 | _1574 0 155 | _1575 0 156 | _1576 0 157 | _1577 1 158 | _1578 0 159 | _1579 0 160 | _1580 0 161 | _1581 1 162 | _1582 0 163 | _1583 1 164 | _1584 1 165 | _1585 0 166 | _1586 1 167 | _1587 1 168 | _1588 0 169 | _1589 1 170 | _1590 1 171 | _1591 0 172 | _1592 1 173 | _1593 0 174 | _1594 0 175 | _1595 0 176 | _1596 0 177 | _1597 0 178 | _1598 0 179 | _1599 1 180 | _1600 1 181 | _1601 0 182 | _1602 0 183 | _1603 0 184 | _1604 0 185 | _1605 0 186 | _1606 0 187 | _1607 1 188 | _1608 0 189 | _1609 1 190 | _1610 0 191 | _1611 1 192 | _1612 1 193 | _1613 0 194 | _1614 0 195 | _1615 0 196 | _1616 0 197 | _1617 1 198 | _1618 0 199 | _1619 1 200 | _1620 1 201 | _1621 1 202 | _1622 0 203 | _1623 1 204 | _1624 0 205 | _1625 0 206 | _1626 1 207 | _1627 0 208 | _1628 1 209 | _1629 0 210 | _1630 0 211 | _1631 0 212 | _1632 0 213 | _1633 0 214 | _1634 1 215 | _1635 1 216 | _1636 0 217 | _1637 0 218 | _1638 1 219 | _1639 1 220 | _1640 1 221 | _1641 1 222 | _1642 1 223 | _1643 0 224 | _1644 1 225 | _1645 0 226 | _1646 0 227 | _1647 0 228 | _1648 0 229 | _1649 1 230 | _1650 0 231 | _1651 0 232 | _1652 1 233 | _1653 0 234 | _1654 0 235 | _1655 0 236 | _1656 0 237 | _1657 1 238 | _1658 1 239 | _1659 1 240 | _1660 1 241 | _1661 0 242 | _1662 0 243 | _1663 1 244 | _1664 1 245 | _1665 0 246 | _1666 1 247 | _1667 1 248 | _1668 1 249 | _1669 0 250 | _1670 0 251 | _1671 1 252 | _1672 0 253 | _1673 1 254 | _1674 1 255 | _1675 1 256 | _1676 0 257 | _1677 0 258 | _1678 0 259 | _1679 0 260 | _1680 1 261 | _1681 0 262 | _1682 0 263 | _1683 1 264 | _1684 0 265 | _1685 0 266 | _1686 0 267 | _1687 1 268 | _1688 0 269 | _1689 1 270 | _1690 0 271 | _1691 0 272 | _1692 0 273 | _1693 0 274 | _1694 1 275 | _1695 1 276 | _1696 1 277 | _1697 1 278 | _1698 1 279 | _1699 0 280 | _1700 0 281 | _1701 0 282 | _1702 0 283 | _1703 1 284 | _1704 1 285 | _1705 1 286 | _1706 1 287 | _1707 1 288 | _1708 0 289 | _1709 1 290 | _1710 0 291 | _1711 1 292 | _1712 1 293 | _1713 0 294 | _1714 0 295 | _1715 1 296 | _1716 0 297 | _1717 0 298 | _1718 1 299 | _1719 1 300 | _1720 1 301 | _1721 1 302 | _1722 1 303 | _1723 0 304 | _1724 1 305 | _1725 1 306 | _1726 1 307 | _1727 1 308 | _1728 1 309 | _1729 1 310 | _1730 1 311 | _1731 1 312 | _1732 1 313 | _1733 1 314 | _1734 1 315 | _1735 1 316 | _1736 1 317 | _1737 1 318 | _1738 1 319 | _1739 1 320 | _1740 1 321 | _1741 1 322 | _1742 1 323 | _1743 1 324 | _1744 1 325 | _1745 1 326 | _1746 1 327 | _1747 1 328 | _1748 1 329 | _1749 1 330 | _1750 1 331 | _1751 1 332 | _1757 1 333 | _1769 1 334 | _1771 1 335 | _1777 1 336 | _1785 1 337 | _1791 1 338 | _1793 1 339 | _1795 1 340 | _1801 1 341 | _1803 1 342 | _1805 1 343 | _1811 1 344 | _1815 1 345 | _1817 1 346 | _1819 1 347 | _1829 1 348 | _1835 1 349 | _1837 1 350 | _1845 1 351 | _1847 1 352 | _1851 1 353 | _1867 1 354 | _1871 1 355 | _1877 1 356 | _1879 1 357 | _1883 1 358 | _1885 1 359 | _1887 1 360 | _1897 1 361 | _1901 1 362 | _1913 1 363 | _1921 1 364 | _1925 1 365 | _1927 1 366 | _1931 1 367 | _1933 1 368 | _1937 1 369 | _1939 1 370 | _1943 1 371 | _1957 1 372 | _1959 1 373 | _1973 1 374 | _1977 1 375 | _1981 1 376 | _1983 1 377 | _1993 1 378 | _1997 1 379 | _1999 1 380 | _2001 1 381 | _2005 1 382 | _2011 1 383 | _2015 1 384 | _2027 1 385 | _2029 1 386 | _2035 1 387 | _2037 1 388 | _2039 1 389 | _2041 1 390 | _2043 1 391 | _2047 1 392 | _2057 1 393 | _2063 1 394 | _2073 1 395 | _2075 1 396 | _2077 1 397 | _2079 1 398 | _2085 1 399 | _2087 1 400 | _2091 1 401 | _2093 1 402 | _2095 1 403 | _2101 1 404 | _2105 1 405 | _2107 1 406 | _2109 1 407 | _2119 1 408 | _2125 1 409 | _2133 1 410 | _2137 1 411 | _2147 1 412 | _2149 1 413 | _2151 1 414 | _2153 1 415 | _2155 1 416 | _2165 1 417 | _2167 1 418 | _2169 1 419 | _2171 1 420 | _2173 1 421 | _2177 1 422 | _2181 1 423 | _2183 1 424 | _2189 1 425 | _2195 1 426 | _2197 1 427 | _2199 1 428 | _2201 1 429 | _2203 1 430 | _2205 0 431 | _2260 0 432 | _2261 0 433 | _2262 0 434 | _2263 0 435 | _2264 0 436 | _2265 0 437 | _2266 0 438 | _2267 0 439 | _2268 0 440 | _2269 0 441 | _2270 0 442 | _2271 0 443 | _2272 0 444 | _2273 0 445 | _2274 0 446 | _2275 0 447 | _2276 0 448 | _2277 0 449 | _2278 0 450 | _2279 0 451 | _2280 0 452 | _2281 0 453 | _2282 0 454 | _2283 0 455 | _2284 0 456 | _2285 0 457 | _2286 0 458 | _2287 0 459 | _2288 0 460 | _2289 0 461 | _2290 0 462 | _2291 0 463 | _2292 0 464 | _2293 0 465 | _2294 0 466 | _2295 0 467 | _2296 0 468 | _2297 0 469 | _2298 0 470 | _2299 0 471 | _2300 0 472 | _2301 0 473 | _2302 0 474 | _2303 0 475 | _2304 0 476 | _2305 0 477 | _2306 0 478 | _2307 0 479 | _2308 0 480 | _2309 0 481 | _2310 0 482 | _2311 0 483 | _2312 0 484 | _2313 0 485 | _2314 0 486 | _2315 0 487 | _2316 0 488 | _2317 0 489 | _2318 0 490 | _2319 0 491 | _2320 0 492 | _2321 0 493 | _2322 0 494 | _2323 0 495 | _2324 0 496 | _2325 0 497 | _2326 0 498 | _2327 0 499 | _2328 0 500 | _2329 0 501 | _2330 0 502 | _2331 0 503 | _2332 0 504 | _2333 0 505 | _2334 0 506 | _2335 0 507 | _2336 0 508 | _2337 0 509 | _2338 0 510 | _2339 0 511 | _2340 0 512 | _2341 0 513 | _2342 0 514 | _2343 0 515 | _2344 0 516 | _2345 0 517 | _2346 0 518 | _2347 0 519 | _2348 0 520 | _2349 0 521 | _2350 0 522 | _2351 0 523 | _2352 0 524 | _2353 0 525 | _2354 0 526 | _2355 0 527 | _2356 0 528 | _2357 0 529 | _2358 0 530 | _2359 0 531 | _2360 0 532 | _2361 0 533 | _2362 0 534 | _2363 0 535 | _2364 0 536 | _2365 0 537 | _2366 0 538 | _2367 0 539 | _2368 0 540 | _2369 0 541 | _2370 0 542 | _2371 0 543 | _2372 0 544 | _2373 0 545 | _2374 0 546 | _2375 0 547 | _2376 0 548 | _2377 0 549 | _2378 0 550 | _2379 0 551 | _2380 0 552 | _2381 0 553 | _2382 0 554 | _2383 0 555 | _2384 0 556 | _2385 0 557 | _2386 0 558 | _2387 0 559 | _2388 0 560 | _2389 0 561 | _2390 0 562 | _2391 0 563 | _2392 0 564 | _2393 0 565 | _2394 0 566 | _2395 0 567 | _2396 0 568 | _2397 0 569 | _2398 0 570 | _2399 0 571 | _2400 0 572 | _2401 0 573 | _2402 0 574 | _2403 0 575 | _2404 0 576 | _2405 0 577 | _2406 0 578 | _2407 0 579 | _2408 0 580 | _2409 0 581 | _2410 0 582 | _2411 0 583 | _2412 0 584 | _2413 0 585 | _2419 1 586 | _2431 1 587 | _2433 1 588 | _2439 1 589 | _2447 1 590 | _2453 1 591 | _2455 1 592 | _2457 1 593 | _2463 1 594 | _2465 1 595 | _2467 1 596 | _2473 1 597 | _2477 1 598 | _2479 1 599 | _2481 1 600 | _2491 1 601 | _2497 1 602 | _2499 1 603 | _2507 1 604 | _2509 1 605 | _2513 1 606 | _2529 1 607 | _2533 1 608 | _2539 1 609 | _2541 1 610 | _2545 1 611 | _2547 1 612 | _2549 1 613 | _2559 1 614 | _2563 1 615 | _2575 1 616 | _2583 1 617 | _2587 1 618 | _2589 1 619 | _2593 1 620 | _2595 1 621 | _2599 1 622 | _2601 1 623 | _2605 1 624 | _2619 1 625 | _2621 1 626 | _2635 1 627 | _2639 1 628 | _2643 1 629 | _2645 1 630 | _2655 1 631 | _2659 1 632 | _2661 1 633 | _2663 1 634 | _2667 1 635 | _2673 1 636 | _2677 1 637 | _2689 1 638 | _2691 1 639 | _2697 1 640 | _2699 1 641 | _2701 1 642 | _2703 1 643 | _2705 1 644 | _2709 1 645 | _2719 1 646 | _2725 1 647 | _2735 1 648 | _2737 1 649 | _2739 1 650 | _2741 1 651 | _2747 1 652 | _2749 1 653 | _2753 1 654 | _2755 1 655 | _2757 1 656 | _2763 1 657 | _2767 1 658 | _2769 1 659 | _2771 1 660 | _2781 1 661 | _2787 1 662 | _2795 1 663 | _2799 1 664 | _2809 1 665 | _2811 1 666 | _2813 1 667 | _2815 1 668 | _2817 1 669 | _2827 1 670 | _2829 1 671 | _2831 1 672 | _2833 1 673 | _2835 1 674 | _2839 1 675 | _2843 1 676 | _2845 1 677 | _2851 1 678 | _2857 1 679 | _2859 1 680 | _2861 1 681 | _2863 1 682 | _2865 1 683 | _2869 1 684 | _2871 1 685 | _2873 1 686 | _2875 1 687 | _2877 1 688 | _2879 1 689 | _2881 1 690 | _2883 1 691 | _2885 1 692 | _2887 1 693 | _2889 1 694 | _2891 1 695 | _2893 1 696 | _2895 1 697 | _2897 1 698 | _2899 1 699 | _2901 1 700 | _2903 1 701 | _2905 1 702 | _2907 1 703 | _2909 1 704 | _2911 1 705 | _2913 1 706 | _2915 1 707 | _2917 1 708 | _2919 1 709 | _2921 1 710 | _2922 0 711 | _2923 0 712 | _2924 0 713 | _2925 0 714 | _2926 0 715 | _2927 0 716 | _2928 0 717 | _2929 0 718 | _2930 0 719 | _2931 0 720 | _2932 0 721 | _2933 0 722 | _2934 0 723 | _2935 0 724 | _2936 0 725 | _2937 0 726 | _2938 0 727 | _2939 0 728 | _2940 0 729 | _2941 0 730 | _2942 0 731 | _2943 0 732 | _2944 0 733 | _2945 0 734 | _2946 0 735 | _2947 0 736 | _2948 0 737 | _2949 0 738 | _2950 0 739 | _2951 0 740 | _2952 0 741 | _2953 0 742 | _2954 0 743 | _2955 0 744 | _2956 0 745 | _2957 0 746 | _2958 0 747 | _2959 0 748 | _2960 0 749 | _2961 0 750 | _2962 0 751 | _2963 0 752 | _2964 0 753 | _2965 0 754 | _2966 0 755 | _2967 0 756 | _2968 0 757 | _2969 0 758 | _2970 0 759 | _2971 0 760 | _2972 0 761 | _2973 0 762 | _2974 0 763 | _2975 0 764 | _2976 0 765 | _2977 0 766 | _2978 0 767 | _2979 0 768 | _2980 0 769 | _2981 0 770 | _2982 0 771 | _2983 0 772 | _2984 0 773 | _2985 0 774 | _2986 0 775 | _2987 0 776 | _2988 0 777 | _2989 0 778 | _2990 0 779 | _2991 0 780 | _2992 0 781 | _2993 0 782 | _2994 0 783 | _2995 0 784 | _2996 0 785 | _2997 0 786 | _2998 0 787 | _2999 0 788 | _3000 0 789 | _3001 0 790 | _3002 0 791 | _3003 0 792 | _3004 0 793 | _3005 0 794 | _3006 0 795 | _3007 0 796 | _3008 0 797 | _3009 0 798 | _3010 0 799 | _3011 0 800 | _3012 0 801 | _3013 0 802 | _3014 0 803 | _3015 0 804 | _3016 0 805 | _3017 0 806 | _3018 0 807 | _3019 0 808 | _3020 0 809 | _3021 0 810 | _3022 0 811 | _3023 0 812 | _3024 0 813 | _3025 0 814 | _3026 0 815 | _3027 0 816 | _3028 0 817 | _3029 0 818 | _3030 0 819 | _3031 0 820 | _3032 0 821 | _3033 0 822 | _3034 0 823 | _3035 0 824 | _3036 0 825 | _3037 0 826 | _3038 0 827 | _3039 0 828 | _3040 0 829 | _3041 0 830 | _3042 0 831 | _3043 0 832 | _3044 0 833 | _3045 0 834 | _3046 0 835 | _3047 0 836 | _3048 0 837 | _3051 0 838 | _3052 1 839 | _3054 1 840 | _3055 1 841 | _3056 0 842 | _3057 1 843 | _3058 1 844 | _4479 1 845 | _4480 0 846 | _4483 0 847 | _4484 1 848 | _4485 1 849 | _4486 1 850 | _4487 0 851 | _4488 0 852 | _4489 0 853 | _4490 0 854 | _4491 0 855 | _4492 1 856 | _4493 1 857 | _4494 0 858 | _4495 0 859 | _4496 1 860 | _4497 0 861 | _4498 0 862 | _4499 0 863 | _4500 1 864 | _4501 0 865 | _4502 0 866 | _4503 1 867 | _4504 1 868 | _4505 1 869 | _4506 0 870 | _4507 0 871 | _4508 1 872 | _4509 1 873 | _4510 1 874 | _4511 0 875 | _4512 0 876 | _4513 1 877 | _4514 0 878 | _4515 1 879 | _4516 1 880 | _4517 1 881 | _4518 0 882 | _4519 0 883 | _4520 0 884 | _4521 0 885 | _4522 1 886 | _4523 0 887 | _4524 0 888 | _4525 1 889 | _4526 1 890 | _4527 0 891 | _4528 0 892 | _4529 0 893 | _4530 1 894 | _4531 1 895 | _4532 0 896 | _4533 1 897 | _4534 0 898 | _4535 0 899 | _4536 0 900 | _4537 0 901 | _4538 0 902 | _4539 0 903 | _4540 0 904 | _4541 1 905 | _4542 0 906 | _4543 1 907 | _4544 0 908 | _4545 0 909 | _4546 1 910 | _4547 1 911 | _4548 0 912 | _4549 1 913 | _4550 1 914 | _4551 1 915 | _4552 0 916 | _4553 0 917 | _4554 0 918 | _4555 0 919 | _4556 1 920 | _4557 0 921 | _4558 1 922 | _4559 0 923 | _4560 0 924 | _4561 0 925 | _4562 0 926 | _4563 0 927 | _4564 1 928 | _4565 0 929 | _4566 0 930 | _4567 0 931 | _4568 1 932 | _4569 0 933 | _4570 1 934 | _4571 1 935 | _4572 0 936 | _4573 1 937 | _4574 1 938 | _4575 0 939 | _4576 1 940 | _4577 1 941 | _4578 0 942 | _4579 1 943 | _4580 0 944 | _4581 0 945 | _4582 0 946 | _4583 0 947 | _4584 0 948 | _4585 0 949 | _4586 1 950 | _4587 1 951 | _4588 0 952 | _4589 0 953 | _4590 0 954 | _4591 0 955 | _4592 0 956 | _4593 0 957 | _4594 1 958 | _4595 0 959 | _4596 1 960 | _4597 0 961 | _4598 1 962 | _4599 1 963 | _4600 0 964 | _4601 0 965 | _4602 0 966 | _4603 0 967 | _4604 1 968 | _4605 0 969 | _4606 1 970 | _4607 1 971 | _4608 1 972 | _4609 0 973 | _4610 1 974 | _4611 0 975 | _4612 0 976 | _4613 1 977 | _4614 0 978 | _4615 1 979 | _4616 0 980 | _4617 0 981 | _4618 0 982 | _4619 0 983 | _4620 0 984 | _4621 1 985 | _4622 1 986 | _4623 0 987 | _4624 0 988 | _4625 1 989 | _4626 1 990 | _4627 1 991 | _4628 1 992 | _4629 1 993 | _4630 0 994 | _4631 1 995 | _4632 0 996 | _4633 0 997 | _4634 0 998 | _4635 0 999 | _4636 1 1000 | _4637 0 1001 | _4638 0 1002 | _4639 1 1003 | _4640 0 1004 | _4641 0 1005 | _4642 0 1006 | _4643 0 1007 | _4644 1 1008 | _4645 1 1009 | _4646 1 1010 | _4647 1 1011 | _4648 0 1012 | _4649 0 1013 | _4650 1 1014 | _4651 1 1015 | _4652 0 1016 | _4653 1 1017 | _4654 1 1018 | _4655 1 1019 | _4656 0 1020 | _4657 0 1021 | _4658 1 1022 | _4659 0 1023 | _4660 1 1024 | _4661 1 1025 | _4662 1 1026 | _4663 0 1027 | _4664 0 1028 | _4665 0 1029 | _4666 0 1030 | _4667 1 1031 | _4668 0 1032 | _4669 0 1033 | _4670 1 1034 | _4671 0 1035 | _4672 0 1036 | _4673 0 1037 | _4674 1 1038 | _4675 0 1039 | _4676 1 1040 | _4677 0 1041 | _4678 0 1042 | _4679 0 1043 | _4680 0 1044 | _4681 1 1045 | _4682 1 1046 | _4683 1 1047 | _4684 1 1048 | _4685 1 1049 | _4686 0 1050 | _4687 0 1051 | _4688 0 1052 | _4689 0 1053 | _4690 1 1054 | _4691 1 1055 | _4692 1 1056 | _4693 1 1057 | _4694 1 1058 | _4695 0 1059 | _4696 1 1060 | _4697 0 1061 | _4698 1 1062 | _4699 1 1063 | _4700 0 1064 | _4701 0 1065 | _4702 1 1066 | _4703 0 1067 | _4704 0 1068 | _4705 1 1069 | _4706 1 1070 | _4707 1 1071 | _4708 1 1072 | _4709 1 1073 | _4710 0 1074 | _4711 1 1075 | _4712 1 1076 | _4713 1 1077 | _4714 1 1078 | _4715 1 1079 | _4716 1 1080 | _4717 1 1081 | _4718 1 1082 | _4719 1 1083 | _4720 1 1084 | _4721 1 1085 | _4722 1 1086 | _4723 1 1087 | _4724 1 1088 | _4725 1 1089 | _4726 1 1090 | _4727 1 1091 | _4728 1 1092 | _4729 1 1093 | _4730 1 1094 | _4731 1 1095 | _4732 1 1096 | _4733 1 1097 | _4734 1 1098 | _4735 1 1099 | _4736 1 1100 | _4737 1 1101 | _4738 0 1102 | _4744 1 1103 | _4756 1 1104 | _4758 1 1105 | _4764 1 1106 | _4772 1 1107 | _4778 1 1108 | _4780 1 1109 | _4782 1 1110 | _4788 1 1111 | _4790 1 1112 | _4792 1 1113 | _4798 1 1114 | _4802 1 1115 | _4804 1 1116 | _4806 1 1117 | _4816 1 1118 | _4822 1 1119 | _4824 1 1120 | _4832 1 1121 | _4834 1 1122 | _4838 1 1123 | _4854 1 1124 | _4858 1 1125 | _4864 1 1126 | _4866 1 1127 | _4870 1 1128 | _4872 1 1129 | _4874 1 1130 | _4884 1 1131 | _4888 1 1132 | _4900 1 1133 | _4908 1 1134 | _4912 1 1135 | _4914 1 1136 | _4918 1 1137 | _4920 1 1138 | _4924 1 1139 | _4926 1 1140 | _4930 1 1141 | _4944 1 1142 | _4946 1 1143 | _4960 1 1144 | _4964 1 1145 | _4968 1 1146 | _4970 1 1147 | _4980 1 1148 | _4984 1 1149 | _4986 1 1150 | _4988 1 1151 | _4992 1 1152 | _4998 1 1153 | _5002 1 1154 | _5014 1 1155 | _5016 1 1156 | _5022 1 1157 | _5024 1 1158 | _5026 1 1159 | _5028 1 1160 | _5030 1 1161 | _5034 1 1162 | _5044 1 1163 | _5050 1 1164 | _5060 1 1165 | _5062 1 1166 | _5064 1 1167 | _5066 1 1168 | _5072 1 1169 | _5074 1 1170 | _5078 1 1171 | _5080 1 1172 | _5082 1 1173 | _5088 1 1174 | _5092 1 1175 | _5094 1 1176 | _5096 1 1177 | _5106 1 1178 | _5112 1 1179 | _5120 1 1180 | _5124 1 1181 | _5134 1 1182 | _5136 1 1183 | _5138 1 1184 | _5140 1 1185 | _5142 1 1186 | _5152 1 1187 | _5154 1 1188 | _5156 1 1189 | _5158 1 1190 | _5160 1 1191 | _5164 1 1192 | _5168 1 1193 | _5170 1 1194 | _5176 1 1195 | _5182 1 1196 | _5184 1 1197 | _5186 1 1198 | _5188 1 1199 | _5190 1 1200 | _5192 0 1201 | _5247 0 1202 | _5248 0 1203 | _5249 0 1204 | _5250 0 1205 | _5251 0 1206 | _5252 0 1207 | _5253 0 1208 | _5254 0 1209 | _5255 0 1210 | _5256 0 1211 | _5257 0 1212 | _5258 0 1213 | _5259 0 1214 | _5260 0 1215 | _5261 0 1216 | _5262 0 1217 | _5263 0 1218 | _5264 0 1219 | _5265 0 1220 | _5266 0 1221 | _5267 0 1222 | _5268 0 1223 | _5269 0 1224 | _5270 0 1225 | _5271 0 1226 | _5272 0 1227 | _5273 0 1228 | _5274 0 1229 | _5275 0 1230 | _5276 0 1231 | _5277 0 1232 | _5278 0 1233 | _5279 0 1234 | _5280 0 1235 | _5281 0 1236 | _5282 0 1237 | _5283 0 1238 | _5284 0 1239 | _5285 0 1240 | _5286 0 1241 | _5287 0 1242 | _5288 0 1243 | _5289 0 1244 | _5290 0 1245 | _5291 0 1246 | _5292 0 1247 | _5293 0 1248 | _5294 0 1249 | _5295 0 1250 | _5296 0 1251 | _5297 0 1252 | _5298 0 1253 | _5299 0 1254 | _5300 0 1255 | _5301 0 1256 | _5302 0 1257 | _5303 0 1258 | _5304 0 1259 | _5305 0 1260 | _5306 0 1261 | _5307 0 1262 | _5308 0 1263 | _5309 0 1264 | _5310 0 1265 | _5311 0 1266 | _5312 0 1267 | _5313 0 1268 | _5314 0 1269 | _5315 0 1270 | _5316 0 1271 | _5317 0 1272 | _5318 0 1273 | _5319 0 1274 | _5320 0 1275 | _5321 0 1276 | _5322 0 1277 | _5323 0 1278 | _5324 0 1279 | _5325 0 1280 | _5326 0 1281 | _5327 0 1282 | _5328 0 1283 | _5329 0 1284 | _5330 0 1285 | _5331 0 1286 | _5332 0 1287 | _5333 0 1288 | _5334 0 1289 | _5335 0 1290 | _5336 0 1291 | _5337 0 1292 | _5338 0 1293 | _5339 0 1294 | _5340 0 1295 | _5341 0 1296 | _5342 0 1297 | _5343 0 1298 | _5344 0 1299 | _5345 0 1300 | _5346 0 1301 | _5347 0 1302 | _5348 0 1303 | _5349 0 1304 | _5350 0 1305 | _5351 0 1306 | _5352 0 1307 | _5353 0 1308 | _5354 0 1309 | _5355 0 1310 | _5356 0 1311 | _5357 0 1312 | _5358 0 1313 | _5359 0 1314 | _5360 0 1315 | _5361 0 1316 | _5362 0 1317 | _5363 0 1318 | _5364 0 1319 | _5365 0 1320 | _5366 0 1321 | _5367 0 1322 | _5368 0 1323 | _5369 0 1324 | _5370 0 1325 | _5371 0 1326 | _5372 0 1327 | _5373 0 1328 | _5374 0 1329 | _5375 0 1330 | _5376 0 1331 | _5377 0 1332 | _5378 0 1333 | _5379 0 1334 | _5380 0 1335 | _5381 0 1336 | _5382 0 1337 | _5383 0 1338 | _5384 0 1339 | _5385 0 1340 | _5386 0 1341 | _5387 0 1342 | _5388 0 1343 | _5389 0 1344 | _5390 0 1345 | _5391 0 1346 | _5392 0 1347 | _5393 0 1348 | _5394 0 1349 | _5395 0 1350 | _5396 0 1351 | _5397 0 1352 | _5398 0 1353 | _5399 0 1354 | _5400 1 1355 | _5406 1 1356 | _5418 1 1357 | _5420 1 1358 | _5426 1 1359 | _5434 1 1360 | _5440 1 1361 | _5442 1 1362 | _5444 1 1363 | _5450 1 1364 | _5452 1 1365 | _5454 1 1366 | _5460 1 1367 | _5464 1 1368 | _5466 1 1369 | _5468 1 1370 | _5478 1 1371 | _5484 1 1372 | _5486 1 1373 | _5494 1 1374 | _5496 1 1375 | _5500 1 1376 | _5516 1 1377 | _5520 1 1378 | _5526 1 1379 | _5528 1 1380 | _5532 1 1381 | _5534 1 1382 | _5536 1 1383 | _5546 1 1384 | _5550 1 1385 | _5562 1 1386 | _5570 1 1387 | _5574 1 1388 | _5576 1 1389 | _5580 1 1390 | _5582 1 1391 | _5586 1 1392 | _5588 1 1393 | _5592 1 1394 | _5606 1 1395 | _5608 1 1396 | _5622 1 1397 | _5626 1 1398 | _5630 1 1399 | _5632 1 1400 | _5642 1 1401 | _5646 1 1402 | _5648 1 1403 | _5650 1 1404 | _5654 1 1405 | _5660 1 1406 | _5664 1 1407 | _5676 1 1408 | _5678 1 1409 | _5684 1 1410 | _5686 1 1411 | _5688 1 1412 | _5690 1 1413 | _5692 1 1414 | _5696 1 1415 | _5706 1 1416 | _5712 1 1417 | _5722 1 1418 | _5724 1 1419 | _5726 1 1420 | _5728 1 1421 | _5734 1 1422 | _5736 1 1423 | _5740 1 1424 | _5742 1 1425 | _5744 1 1426 | _5750 1 1427 | _5754 1 1428 | _5756 1 1429 | _5758 1 1430 | _5768 1 1431 | _5774 1 1432 | _5782 1 1433 | _5786 1 1434 | _5796 1 1435 | _5798 1 1436 | _5800 1 1437 | _5802 1 1438 | _5804 1 1439 | _5814 1 1440 | _5816 1 1441 | _5818 1 1442 | _5820 1 1443 | _5822 1 1444 | _5826 1 1445 | _5830 1 1446 | _5832 1 1447 | _5838 1 1448 | _5844 1 1449 | _5846 1 1450 | _5848 1 1451 | _5850 1 1452 | _5852 1 1453 | _5856 1 1454 | _5858 1 1455 | _5860 1 1456 | _5862 1 1457 | _5864 1 1458 | _5866 1 1459 | _5868 1 1460 | _5870 1 1461 | _5872 1 1462 | _5874 1 1463 | _5876 1 1464 | _5878 1 1465 | _5880 1 1466 | _5882 1 1467 | _5884 1 1468 | _5886 1 1469 | _5888 1 1470 | _5890 1 1471 | _5892 1 1472 | _5894 1 1473 | _5896 1 1474 | _5898 1 1475 | _5900 1 1476 | _5902 1 1477 | _5904 1 1478 | _5906 1 1479 | _5908 1 1480 | _5909 0 1481 | _5910 0 1482 | _5911 0 1483 | _5912 0 1484 | _5913 0 1485 | _5914 0 1486 | _5915 0 1487 | _5916 0 1488 | _5917 0 1489 | _5918 0 1490 | _5919 0 1491 | _5920 0 1492 | _5921 0 1493 | _5922 0 1494 | _5923 0 1495 | _5924 0 1496 | _5925 0 1497 | _5926 0 1498 | _5927 0 1499 | _5928 0 1500 | _5929 0 1501 | _5930 0 1502 | _5931 0 1503 | _5932 0 1504 | _5933 0 1505 | _5934 0 1506 | _5935 0 1507 | _5936 0 1508 | _5937 0 1509 | _5938 0 1510 | _5939 0 1511 | _5940 0 1512 | _5941 0 1513 | _5942 0 1514 | _5943 0 1515 | _5944 0 1516 | _5945 0 1517 | _5946 0 1518 | _5947 0 1519 | _5948 0 1520 | _5949 0 1521 | _5950 0 1522 | _5951 0 1523 | _5952 0 1524 | _5953 0 1525 | _5954 0 1526 | _5955 0 1527 | _5956 0 1528 | _5957 0 1529 | _5958 0 1530 | _5959 0 1531 | _5960 0 1532 | _5961 0 1533 | _5962 0 1534 | _5963 0 1535 | _5964 0 1536 | _5965 0 1537 | _5966 0 1538 | _5967 0 1539 | _5968 0 1540 | _5969 0 1541 | _5970 0 1542 | _5971 0 1543 | _5972 0 1544 | _5973 0 1545 | _5974 0 1546 | _5975 0 1547 | _5976 0 1548 | _5977 0 1549 | _5978 0 1550 | _5979 0 1551 | _5980 0 1552 | _5981 0 1553 | _5982 0 1554 | _5983 0 1555 | _5984 0 1556 | _5985 0 1557 | _5986 0 1558 | _5987 0 1559 | _5988 0 1560 | _5989 0 1561 | _5990 0 1562 | _5991 0 1563 | _5992 0 1564 | _5993 0 1565 | _5994 0 1566 | _5995 0 1567 | _5996 0 1568 | _5997 0 1569 | _5998 0 1570 | _5999 0 1571 | _6000 0 1572 | _6001 0 1573 | _6002 0 1574 | _6003 0 1575 | _6004 0 1576 | _6005 0 1577 | _6006 0 1578 | _6007 0 1579 | _6008 0 1580 | _6009 0 1581 | _6010 0 1582 | _6011 0 1583 | _6012 0 1584 | _6013 0 1585 | _6014 0 1586 | _6015 0 1587 | _6016 0 1588 | _6017 0 1589 | _6018 0 1590 | _6019 0 1591 | _6020 0 1592 | _6021 0 1593 | _6022 0 1594 | _6023 0 1595 | _6024 0 1596 | _6025 0 1597 | _6026 0 1598 | _6027 0 1599 | _6028 0 1600 | _6029 0 1601 | _6030 0 1602 | _6031 0 1603 | _6032 0 1604 | _6033 0 1605 | _6034 0 1606 | _6035 0 1607 | _6038 0 1608 | _6039 1 1609 | _6041 0 1610 | _6042 1 1611 | _6043 1 1612 | _6044 10944121435919637611123202872628637544274182200208017171849102093287904247808 1613 | _6045 1 1614 | _7466 1 1615 | _7467 1 1616 | _7470 0 1617 | _7471 1 1618 | _7472 1 1619 | _7473 1 1620 | _7474 0 1621 | _7475 0 1622 | _7476 0 1623 | _7477 0 1624 | _7478 0 1625 | _7479 1 1626 | _7480 1 1627 | _7481 0 1628 | _7482 0 1629 | _7483 1 1630 | _7484 0 1631 | _7485 0 1632 | _7486 0 1633 | _7487 1 1634 | _7488 0 1635 | _7489 0 1636 | _7490 1 1637 | _7491 1 1638 | _7492 1 1639 | _7493 0 1640 | _7494 0 1641 | _7495 1 1642 | _7496 1 1643 | _7497 1 1644 | _7498 0 1645 | _7499 0 1646 | _7500 1 1647 | _7501 0 1648 | _7502 1 1649 | _7503 1 1650 | _7504 1 1651 | _7505 0 1652 | _7506 0 1653 | _7507 0 1654 | _7508 0 1655 | _7509 1 1656 | _7510 0 1657 | _7511 0 1658 | _7512 1 1659 | _7513 1 1660 | _7514 0 1661 | _7515 0 1662 | _7516 0 1663 | _7517 1 1664 | _7518 1 1665 | _7519 0 1666 | _7520 1 1667 | _7521 0 1668 | _7522 0 1669 | _7523 0 1670 | _7524 0 1671 | _7525 0 1672 | _7526 0 1673 | _7527 0 1674 | _7528 1 1675 | _7529 0 1676 | _7530 1 1677 | _7531 0 1678 | _7532 0 1679 | _7533 1 1680 | _7534 1 1681 | _7535 0 1682 | _7536 1 1683 | _7537 1 1684 | _7538 1 1685 | _7539 0 1686 | _7540 0 1687 | _7541 0 1688 | _7542 0 1689 | _7543 1 1690 | _7544 0 1691 | _7545 1 1692 | _7546 0 1693 | _7547 0 1694 | _7548 0 1695 | _7549 0 1696 | _7550 0 1697 | _7551 1 1698 | _7552 0 1699 | _7553 0 1700 | _7554 0 1701 | _7555 1 1702 | _7556 0 1703 | _7557 1 1704 | _7558 1 1705 | _7559 0 1706 | _7560 1 1707 | _7561 1 1708 | _7562 0 1709 | _7563 1 1710 | _7564 1 1711 | _7565 0 1712 | _7566 1 1713 | _7567 0 1714 | _7568 0 1715 | _7569 0 1716 | _7570 0 1717 | _7571 0 1718 | _7572 0 1719 | _7573 1 1720 | _7574 1 1721 | _7575 0 1722 | _7576 0 1723 | _7577 0 1724 | _7578 0 1725 | _7579 0 1726 | _7580 0 1727 | _7581 1 1728 | _7582 0 1729 | _7583 1 1730 | _7584 0 1731 | _7585 1 1732 | _7586 1 1733 | _7587 0 1734 | _7588 0 1735 | _7589 0 1736 | _7590 0 1737 | _7591 1 1738 | _7592 0 1739 | _7593 1 1740 | _7594 1 1741 | _7595 1 1742 | _7596 0 1743 | _7597 1 1744 | _7598 0 1745 | _7599 0 1746 | _7600 1 1747 | _7601 0 1748 | _7602 1 1749 | _7603 0 1750 | _7604 0 1751 | _7605 0 1752 | _7606 0 1753 | _7607 0 1754 | _7608 1 1755 | _7609 1 1756 | _7610 0 1757 | _7611 0 1758 | _7612 1 1759 | _7613 1 1760 | _7614 1 1761 | _7615 1 1762 | _7616 1 1763 | _7617 0 1764 | _7618 1 1765 | _7619 0 1766 | _7620 0 1767 | _7621 0 1768 | _7622 0 1769 | _7623 1 1770 | _7624 0 1771 | _7625 0 1772 | _7626 1 1773 | _7627 0 1774 | _7628 0 1775 | _7629 0 1776 | _7630 0 1777 | _7631 1 1778 | _7632 1 1779 | _7633 1 1780 | _7634 1 1781 | _7635 0 1782 | _7636 0 1783 | _7637 1 1784 | _7638 1 1785 | _7639 0 1786 | _7640 1 1787 | _7641 1 1788 | _7642 1 1789 | _7643 0 1790 | _7644 0 1791 | _7645 1 1792 | _7646 0 1793 | _7647 1 1794 | _7648 1 1795 | _7649 1 1796 | _7650 0 1797 | _7651 0 1798 | _7652 0 1799 | _7653 0 1800 | _7654 1 1801 | _7655 0 1802 | _7656 0 1803 | _7657 1 1804 | _7658 0 1805 | _7659 0 1806 | _7660 0 1807 | _7661 1 1808 | _7662 0 1809 | _7663 1 1810 | _7664 0 1811 | _7665 0 1812 | _7666 0 1813 | _7667 0 1814 | _7668 1 1815 | _7669 1 1816 | _7670 1 1817 | _7671 1 1818 | _7672 1 1819 | _7673 0 1820 | _7674 0 1821 | _7675 0 1822 | _7676 0 1823 | _7677 1 1824 | _7678 1 1825 | _7679 1 1826 | _7680 1 1827 | _7681 1 1828 | _7682 0 1829 | _7683 1 1830 | _7684 0 1831 | _7685 1 1832 | _7686 1 1833 | _7687 0 1834 | _7688 0 1835 | _7689 1 1836 | _7690 0 1837 | _7691 0 1838 | _7692 1 1839 | _7693 1 1840 | _7694 1 1841 | _7695 1 1842 | _7696 1 1843 | _7697 0 1844 | _7698 1 1845 | _7699 1 1846 | _7700 1 1847 | _7701 1 1848 | _7702 1 1849 | _7703 1 1850 | _7704 1 1851 | _7705 1 1852 | _7706 1 1853 | _7707 1 1854 | _7708 1 1855 | _7709 1 1856 | _7710 1 1857 | _7711 1 1858 | _7712 1 1859 | _7713 1 1860 | _7714 1 1861 | _7715 1 1862 | _7716 1 1863 | _7717 1 1864 | _7718 1 1865 | _7719 1 1866 | _7720 1 1867 | _7721 1 1868 | _7722 1 1869 | _7723 1 1870 | _7724 1 1871 | _7725 1 1872 | _7731 1 1873 | _7743 1 1874 | _7745 1 1875 | _7751 1 1876 | _7759 1 1877 | _7765 1 1878 | _7767 1 1879 | _7769 1 1880 | _7775 1 1881 | _7777 1 1882 | _7779 1 1883 | _7785 1 1884 | _7789 1 1885 | _7791 1 1886 | _7793 1 1887 | _7803 1 1888 | _7809 1 1889 | _7811 1 1890 | _7819 1 1891 | _7821 1 1892 | _7825 1 1893 | _7841 1 1894 | _7845 1 1895 | _7851 1 1896 | _7853 1 1897 | _7857 1 1898 | _7859 1 1899 | _7861 1 1900 | _7871 1 1901 | _7875 1 1902 | _7887 1 1903 | _7895 1 1904 | _7899 1 1905 | _7901 1 1906 | _7905 1 1907 | _7907 1 1908 | _7911 1 1909 | _7913 1 1910 | _7917 1 1911 | _7931 1 1912 | _7933 1 1913 | _7947 1 1914 | _7951 1 1915 | _7955 1 1916 | _7957 1 1917 | _7967 1 1918 | _7971 1 1919 | _7973 1 1920 | _7975 1 1921 | _7979 1 1922 | _7985 1 1923 | _7989 1 1924 | _8001 1 1925 | _8003 1 1926 | _8009 1 1927 | _8011 1 1928 | _8013 1 1929 | _8015 1 1930 | _8017 1 1931 | _8021 1 1932 | _8031 1 1933 | _8037 1 1934 | _8047 1 1935 | _8049 1 1936 | _8051 1 1937 | _8053 1 1938 | _8059 1 1939 | _8061 1 1940 | _8065 1 1941 | _8067 1 1942 | _8069 1 1943 | _8075 1 1944 | _8079 1 1945 | _8081 1 1946 | _8083 1 1947 | _8093 1 1948 | _8099 1 1949 | _8107 1 1950 | _8111 1 1951 | _8121 1 1952 | _8123 1 1953 | _8125 1 1954 | _8127 1 1955 | _8129 1 1956 | _8139 1 1957 | _8141 1 1958 | _8143 1 1959 | _8145 1 1960 | _8147 1 1961 | _8151 1 1962 | _8155 1 1963 | _8157 1 1964 | _8163 1 1965 | _8169 1 1966 | _8171 1 1967 | _8173 1 1968 | _8175 1 1969 | _8177 1 1970 | _8179 0 1971 | _8234 0 1972 | _8235 0 1973 | _8236 0 1974 | _8237 0 1975 | _8238 0 1976 | _8239 0 1977 | _8240 0 1978 | _8241 0 1979 | _8242 0 1980 | _8243 0 1981 | _8244 0 1982 | _8245 0 1983 | _8246 0 1984 | _8247 0 1985 | _8248 0 1986 | _8249 0 1987 | _8250 0 1988 | _8251 0 1989 | _8252 0 1990 | _8253 0 1991 | _8254 0 1992 | _8255 0 1993 | _8256 0 1994 | _8257 0 1995 | _8258 0 1996 | _8259 0 1997 | _8260 0 1998 | _8261 0 1999 | _8262 0 2000 | _8263 0 2001 | _8264 0 2002 | _8265 0 2003 | _8266 0 2004 | _8267 0 2005 | _8268 0 2006 | _8269 0 2007 | _8270 0 2008 | _8271 0 2009 | _8272 0 2010 | _8273 0 2011 | _8274 0 2012 | _8275 0 2013 | _8276 0 2014 | _8277 0 2015 | _8278 0 2016 | _8279 0 2017 | _8280 0 2018 | _8281 0 2019 | _8282 0 2020 | _8283 0 2021 | _8284 0 2022 | _8285 0 2023 | _8286 0 2024 | _8287 0 2025 | _8288 0 2026 | _8289 0 2027 | _8290 0 2028 | _8291 0 2029 | _8292 0 2030 | _8293 0 2031 | _8294 0 2032 | _8295 0 2033 | _8296 0 2034 | _8297 0 2035 | _8298 0 2036 | _8299 0 2037 | _8300 0 2038 | _8301 0 2039 | _8302 0 2040 | _8303 0 2041 | _8304 0 2042 | _8305 0 2043 | _8306 0 2044 | _8307 0 2045 | _8308 0 2046 | _8309 0 2047 | _8310 0 2048 | _8311 0 2049 | _8312 0 2050 | _8313 0 2051 | _8314 0 2052 | _8315 0 2053 | _8316 0 2054 | _8317 0 2055 | _8318 0 2056 | _8319 0 2057 | _8320 0 2058 | _8321 0 2059 | _8322 0 2060 | _8323 0 2061 | _8324 0 2062 | _8325 0 2063 | _8326 0 2064 | _8327 0 2065 | _8328 0 2066 | _8329 0 2067 | _8330 0 2068 | _8331 0 2069 | _8332 0 2070 | _8333 0 2071 | _8334 0 2072 | _8335 0 2073 | _8336 0 2074 | _8337 0 2075 | _8338 0 2076 | _8339 0 2077 | _8340 0 2078 | _8341 0 2079 | _8342 0 2080 | _8343 0 2081 | _8344 0 2082 | _8345 0 2083 | _8346 0 2084 | _8347 0 2085 | _8348 0 2086 | _8349 0 2087 | _8350 0 2088 | _8351 0 2089 | _8352 0 2090 | _8353 0 2091 | _8354 0 2092 | _8355 0 2093 | _8356 0 2094 | _8357 0 2095 | _8358 0 2096 | _8359 0 2097 | _8360 0 2098 | _8361 0 2099 | _8362 0 2100 | _8363 0 2101 | _8364 0 2102 | _8365 0 2103 | _8366 0 2104 | _8367 0 2105 | _8368 0 2106 | _8369 0 2107 | _8370 0 2108 | _8371 0 2109 | _8372 0 2110 | _8373 0 2111 | _8374 0 2112 | _8375 0 2113 | _8376 0 2114 | _8377 0 2115 | _8378 0 2116 | _8379 0 2117 | _8380 0 2118 | _8381 0 2119 | _8382 0 2120 | _8383 0 2121 | _8384 0 2122 | _8385 0 2123 | _8386 0 2124 | _8387 0 2125 | _8393 1 2126 | _8405 1 2127 | _8407 1 2128 | _8413 1 2129 | _8421 1 2130 | _8427 1 2131 | _8429 1 2132 | _8431 1 2133 | _8437 1 2134 | _8439 1 2135 | _8441 1 2136 | _8447 1 2137 | _8451 1 2138 | _8453 1 2139 | _8455 1 2140 | _8465 1 2141 | _8471 1 2142 | _8473 1 2143 | _8481 1 2144 | _8483 1 2145 | _8487 1 2146 | _8503 1 2147 | _8507 1 2148 | _8513 1 2149 | _8515 1 2150 | _8519 1 2151 | _8521 1 2152 | _8523 1 2153 | _8533 1 2154 | _8537 1 2155 | _8549 1 2156 | _8557 1 2157 | _8561 1 2158 | _8563 1 2159 | _8567 1 2160 | _8569 1 2161 | _8573 1 2162 | _8575 1 2163 | _8579 1 2164 | _8593 1 2165 | _8595 1 2166 | _8609 1 2167 | _8613 1 2168 | _8617 1 2169 | _8619 1 2170 | _8629 1 2171 | _8633 1 2172 | _8635 1 2173 | _8637 1 2174 | _8641 1 2175 | _8647 1 2176 | _8651 1 2177 | _8663 1 2178 | _8665 1 2179 | _8671 1 2180 | _8673 1 2181 | _8675 1 2182 | _8677 1 2183 | _8679 1 2184 | _8683 1 2185 | _8693 1 2186 | _8699 1 2187 | _8709 1 2188 | _8711 1 2189 | _8713 1 2190 | _8715 1 2191 | _8721 1 2192 | _8723 1 2193 | _8727 1 2194 | _8729 1 2195 | _8731 1 2196 | _8737 1 2197 | _8741 1 2198 | _8743 1 2199 | _8745 1 2200 | _8755 1 2201 | _8761 1 2202 | _8769 1 2203 | _8773 1 2204 | _8783 1 2205 | _8785 1 2206 | _8787 1 2207 | _8789 1 2208 | _8791 1 2209 | _8801 1 2210 | _8803 1 2211 | _8805 1 2212 | _8807 1 2213 | _8809 1 2214 | _8813 1 2215 | _8817 1 2216 | _8819 1 2217 | _8825 1 2218 | _8831 1 2219 | _8833 1 2220 | _8835 1 2221 | _8837 1 2222 | _8839 1 2223 | _8843 1 2224 | _8845 1 2225 | _8847 1 2226 | _8849 1 2227 | _8851 1 2228 | _8853 1 2229 | _8855 1 2230 | _8857 1 2231 | _8859 1 2232 | _8861 1 2233 | _8863 1 2234 | _8865 1 2235 | _8867 1 2236 | _8869 1 2237 | _8871 1 2238 | _8873 1 2239 | _8875 1 2240 | _8877 1 2241 | _8879 1 2242 | _8881 1 2243 | _8883 1 2244 | _8885 1 2245 | _8887 1 2246 | _8889 1 2247 | _8891 1 2248 | _8893 1 2249 | _8895 1 2250 | _8896 0 2251 | _8897 0 2252 | _8898 0 2253 | _8899 0 2254 | _8900 0 2255 | _8901 0 2256 | _8902 0 2257 | _8903 0 2258 | _8904 0 2259 | _8905 0 2260 | _8906 0 2261 | _8907 0 2262 | _8908 0 2263 | _8909 0 2264 | _8910 0 2265 | _8911 0 2266 | _8912 0 2267 | _8913 0 2268 | _8914 0 2269 | _8915 0 2270 | _8916 0 2271 | _8917 0 2272 | _8918 0 2273 | _8919 0 2274 | _8920 0 2275 | _8921 0 2276 | _8922 0 2277 | _8923 0 2278 | _8924 0 2279 | _8925 0 2280 | _8926 0 2281 | _8927 0 2282 | _8928 0 2283 | _8929 0 2284 | _8930 0 2285 | _8931 0 2286 | _8932 0 2287 | _8933 0 2288 | _8934 0 2289 | _8935 0 2290 | _8936 0 2291 | _8937 0 2292 | _8938 0 2293 | _8939 0 2294 | _8940 0 2295 | _8941 0 2296 | _8942 0 2297 | _8943 0 2298 | _8944 0 2299 | _8945 0 2300 | _8946 0 2301 | _8947 0 2302 | _8948 0 2303 | _8949 0 2304 | _8950 0 2305 | _8951 0 2306 | _8952 0 2307 | _8953 0 2308 | _8954 0 2309 | _8955 0 2310 | _8956 0 2311 | _8957 0 2312 | _8958 0 2313 | _8959 0 2314 | _8960 0 2315 | _8961 0 2316 | _8962 0 2317 | _8963 0 2318 | _8964 0 2319 | _8965 0 2320 | _8966 0 2321 | _8967 0 2322 | _8968 0 2323 | _8969 0 2324 | _8970 0 2325 | _8971 0 2326 | _8972 0 2327 | _8973 0 2328 | _8974 0 2329 | _8975 0 2330 | _8976 0 2331 | _8977 0 2332 | _8978 0 2333 | _8979 0 2334 | _8980 0 2335 | _8981 0 2336 | _8982 0 2337 | _8983 0 2338 | _8984 0 2339 | _8985 0 2340 | _8986 0 2341 | _8987 0 2342 | _8988 0 2343 | _8989 0 2344 | _8990 0 2345 | _8991 0 2346 | _8992 0 2347 | _8993 0 2348 | _8994 0 2349 | _8995 0 2350 | _8996 0 2351 | _8997 0 2352 | _8998 0 2353 | _8999 0 2354 | _9000 0 2355 | _9001 0 2356 | _9002 0 2357 | _9003 0 2358 | _9004 0 2359 | _9005 0 2360 | _9006 0 2361 | _9007 0 2362 | _9008 0 2363 | _9009 0 2364 | _9010 0 2365 | _9011 0 2366 | _9012 0 2367 | _9013 0 2368 | _9014 0 2369 | _9015 0 2370 | _9016 0 2371 | _9017 0 2372 | _9018 0 2373 | _9019 0 2374 | _9020 0 2375 | _9021 0 2376 | _9022 0 2377 | _9025 0 2378 | _9026 1 2379 | _9028 0 2380 | _9029 1 2381 | _9030 1 2382 | _9031 21888242871839275222246405745257275088548364400416034343698204186575808495616 2383 | _9032 1 2384 | _10453 1 2385 | _10454 0 2386 | _10457 0 2387 | _10458 1 2388 | _10459 1 2389 | _10460 1 2390 | _10461 0 2391 | _10462 0 2392 | _10463 0 2393 | _10464 0 2394 | _10465 0 2395 | _10466 1 2396 | _10467 1 2397 | _10468 0 2398 | _10469 0 2399 | _10470 1 2400 | _10471 0 2401 | _10472 0 2402 | _10473 0 2403 | _10474 1 2404 | _10475 0 2405 | _10476 0 2406 | _10477 1 2407 | _10478 1 2408 | _10479 1 2409 | _10480 0 2410 | _10481 0 2411 | _10482 1 2412 | _10483 1 2413 | _10484 1 2414 | _10485 0 2415 | _10486 0 2416 | _10487 1 2417 | _10488 0 2418 | _10489 1 2419 | _10490 1 2420 | _10491 1 2421 | _10492 0 2422 | _10493 0 2423 | _10494 0 2424 | _10495 0 2425 | _10496 1 2426 | _10497 0 2427 | _10498 0 2428 | _10499 1 2429 | _10500 1 2430 | _10501 0 2431 | _10502 0 2432 | _10503 0 2433 | _10504 1 2434 | _10505 1 2435 | _10506 0 2436 | _10507 1 2437 | _10508 0 2438 | _10509 0 2439 | _10510 0 2440 | _10511 0 2441 | _10512 0 2442 | _10513 0 2443 | _10514 0 2444 | _10515 1 2445 | _10516 0 2446 | _10517 1 2447 | _10518 0 2448 | _10519 0 2449 | _10520 1 2450 | _10521 1 2451 | _10522 0 2452 | _10523 1 2453 | _10524 1 2454 | _10525 1 2455 | _10526 0 2456 | _10527 0 2457 | _10528 0 2458 | _10529 0 2459 | _10530 1 2460 | _10531 0 2461 | _10532 1 2462 | _10533 0 2463 | _10534 0 2464 | _10535 0 2465 | _10536 0 2466 | _10537 0 2467 | _10538 1 2468 | _10539 0 2469 | _10540 0 2470 | _10541 0 2471 | _10542 1 2472 | _10543 0 2473 | _10544 1 2474 | _10545 1 2475 | _10546 0 2476 | _10547 1 2477 | _10548 1 2478 | _10549 0 2479 | _10550 1 2480 | _10551 1 2481 | _10552 0 2482 | _10553 1 2483 | _10554 0 2484 | _10555 0 2485 | _10556 0 2486 | _10557 0 2487 | _10558 0 2488 | _10559 0 2489 | _10560 1 2490 | _10561 1 2491 | _10562 0 2492 | _10563 0 2493 | _10564 0 2494 | _10565 0 2495 | _10566 0 2496 | _10567 0 2497 | _10568 1 2498 | _10569 0 2499 | _10570 1 2500 | _10571 0 2501 | _10572 1 2502 | _10573 1 2503 | _10574 0 2504 | _10575 0 2505 | _10576 0 2506 | _10577 0 2507 | _10578 1 2508 | _10579 0 2509 | _10580 1 2510 | _10581 1 2511 | _10582 1 2512 | _10583 0 2513 | _10584 1 2514 | _10585 0 2515 | _10586 0 2516 | _10587 1 2517 | _10588 0 2518 | _10589 1 2519 | _10590 0 2520 | _10591 0 2521 | _10592 0 2522 | _10593 0 2523 | _10594 0 2524 | _10595 1 2525 | _10596 1 2526 | _10597 0 2527 | _10598 0 2528 | _10599 1 2529 | _10600 1 2530 | _10601 1 2531 | _10602 1 2532 | _10603 1 2533 | _10604 0 2534 | _10605 1 2535 | _10606 0 2536 | _10607 0 2537 | _10608 0 2538 | _10609 0 2539 | _10610 1 2540 | _10611 0 2541 | _10612 0 2542 | _10613 1 2543 | _10614 0 2544 | _10615 0 2545 | _10616 0 2546 | _10617 0 2547 | _10618 1 2548 | _10619 1 2549 | _10620 1 2550 | _10621 1 2551 | _10622 0 2552 | _10623 0 2553 | _10624 1 2554 | _10625 1 2555 | _10626 0 2556 | _10627 1 2557 | _10628 1 2558 | _10629 1 2559 | _10630 0 2560 | _10631 0 2561 | _10632 1 2562 | _10633 0 2563 | _10634 1 2564 | _10635 1 2565 | _10636 1 2566 | _10637 0 2567 | _10638 0 2568 | _10639 0 2569 | _10640 0 2570 | _10641 1 2571 | _10642 0 2572 | _10643 0 2573 | _10644 1 2574 | _10645 0 2575 | _10646 0 2576 | _10647 0 2577 | _10648 1 2578 | _10649 0 2579 | _10650 1 2580 | _10651 0 2581 | _10652 0 2582 | _10653 0 2583 | _10654 0 2584 | _10655 1 2585 | _10656 1 2586 | _10657 1 2587 | _10658 1 2588 | _10659 1 2589 | _10660 0 2590 | _10661 0 2591 | _10662 0 2592 | _10663 0 2593 | _10664 1 2594 | _10665 1 2595 | _10666 1 2596 | _10667 1 2597 | _10668 1 2598 | _10669 0 2599 | _10670 1 2600 | _10671 0 2601 | _10672 1 2602 | _10673 1 2603 | _10674 0 2604 | _10675 0 2605 | _10676 1 2606 | _10677 0 2607 | _10678 0 2608 | _10679 1 2609 | _10680 1 2610 | _10681 1 2611 | _10682 1 2612 | _10683 1 2613 | _10684 0 2614 | _10685 1 2615 | _10686 1 2616 | _10687 1 2617 | _10688 1 2618 | _10689 1 2619 | _10690 1 2620 | _10691 1 2621 | _10692 1 2622 | _10693 1 2623 | _10694 1 2624 | _10695 1 2625 | _10696 1 2626 | _10697 1 2627 | _10698 1 2628 | _10699 1 2629 | _10700 1 2630 | _10701 1 2631 | _10702 1 2632 | _10703 1 2633 | _10704 1 2634 | _10705 1 2635 | _10706 1 2636 | _10707 1 2637 | _10708 1 2638 | _10709 1 2639 | _10710 1 2640 | _10711 1 2641 | _10712 0 2642 | _10718 1 2643 | _10730 1 2644 | _10732 1 2645 | _10738 1 2646 | _10746 1 2647 | _10752 1 2648 | _10754 1 2649 | _10756 1 2650 | _10762 1 2651 | _10764 1 2652 | _10766 1 2653 | _10772 1 2654 | _10776 1 2655 | _10778 1 2656 | _10780 1 2657 | _10790 1 2658 | _10796 1 2659 | _10798 1 2660 | _10806 1 2661 | _10808 1 2662 | _10812 1 2663 | _10828 1 2664 | _10832 1 2665 | _10838 1 2666 | _10840 1 2667 | _10844 1 2668 | _10846 1 2669 | _10848 1 2670 | _10858 1 2671 | _10862 1 2672 | _10874 1 2673 | _10882 1 2674 | _10886 1 2675 | _10888 1 2676 | _10892 1 2677 | _10894 1 2678 | _10898 1 2679 | _10900 1 2680 | _10904 1 2681 | _10918 1 2682 | _10920 1 2683 | _10934 1 2684 | _10938 1 2685 | _10942 1 2686 | _10944 1 2687 | _10954 1 2688 | _10958 1 2689 | _10960 1 2690 | _10962 1 2691 | _10966 1 2692 | _10972 1 2693 | _10976 1 2694 | _10988 1 2695 | _10990 1 2696 | _10996 1 2697 | _10998 1 2698 | _11000 1 2699 | _11002 1 2700 | _11004 1 2701 | _11008 1 2702 | _11018 1 2703 | _11024 1 2704 | _11034 1 2705 | _11036 1 2706 | _11038 1 2707 | _11040 1 2708 | _11046 1 2709 | _11048 1 2710 | _11052 1 2711 | _11054 1 2712 | _11056 1 2713 | _11062 1 2714 | _11066 1 2715 | _11068 1 2716 | _11070 1 2717 | _11080 1 2718 | _11086 1 2719 | _11094 1 2720 | _11098 1 2721 | _11108 1 2722 | _11110 1 2723 | _11112 1 2724 | _11114 1 2725 | _11116 1 2726 | _11126 1 2727 | _11128 1 2728 | _11130 1 2729 | _11132 1 2730 | _11134 1 2731 | _11138 1 2732 | _11142 1 2733 | _11144 1 2734 | _11150 1 2735 | _11156 1 2736 | _11158 1 2737 | _11160 1 2738 | _11162 1 2739 | _11164 1 2740 | _11166 0 2741 | _11221 0 2742 | _11222 0 2743 | _11223 0 2744 | _11224 0 2745 | _11225 0 2746 | _11226 0 2747 | _11227 0 2748 | _11228 0 2749 | _11229 0 2750 | _11230 0 2751 | _11231 0 2752 | _11232 0 2753 | _11233 0 2754 | _11234 0 2755 | _11235 0 2756 | _11236 0 2757 | _11237 0 2758 | _11238 0 2759 | _11239 0 2760 | _11240 0 2761 | _11241 0 2762 | _11242 0 2763 | _11243 0 2764 | _11244 0 2765 | _11245 0 2766 | _11246 0 2767 | _11247 0 2768 | _11248 0 2769 | _11249 0 2770 | _11250 0 2771 | _11251 0 2772 | _11252 0 2773 | _11253 0 2774 | _11254 0 2775 | _11255 0 2776 | _11256 0 2777 | _11257 0 2778 | _11258 0 2779 | _11259 0 2780 | _11260 0 2781 | _11261 0 2782 | _11262 0 2783 | _11263 0 2784 | _11264 0 2785 | _11265 0 2786 | _11266 0 2787 | _11267 0 2788 | _11268 0 2789 | _11269 0 2790 | _11270 0 2791 | _11271 0 2792 | _11272 0 2793 | _11273 0 2794 | _11274 0 2795 | _11275 0 2796 | _11276 0 2797 | _11277 0 2798 | _11278 0 2799 | _11279 0 2800 | _11280 0 2801 | _11281 0 2802 | _11282 0 2803 | _11283 0 2804 | _11284 0 2805 | _11285 0 2806 | _11286 0 2807 | _11287 0 2808 | _11288 0 2809 | _11289 0 2810 | _11290 0 2811 | _11291 0 2812 | _11292 0 2813 | _11293 0 2814 | _11294 0 2815 | _11295 0 2816 | _11296 0 2817 | _11297 0 2818 | _11298 0 2819 | _11299 0 2820 | _11300 0 2821 | _11301 0 2822 | _11302 0 2823 | _11303 0 2824 | _11304 0 2825 | _11305 0 2826 | _11306 0 2827 | _11307 0 2828 | _11308 0 2829 | _11309 0 2830 | _11310 0 2831 | _11311 0 2832 | _11312 0 2833 | _11313 0 2834 | _11314 0 2835 | _11315 0 2836 | _11316 0 2837 | _11317 0 2838 | _11318 0 2839 | _11319 0 2840 | _11320 0 2841 | _11321 0 2842 | _11322 0 2843 | _11323 0 2844 | _11324 0 2845 | _11325 0 2846 | _11326 0 2847 | _11327 0 2848 | _11328 0 2849 | _11329 0 2850 | _11330 0 2851 | _11331 0 2852 | _11332 0 2853 | _11333 0 2854 | _11334 0 2855 | _11335 0 2856 | _11336 0 2857 | _11337 0 2858 | _11338 0 2859 | _11339 0 2860 | _11340 0 2861 | _11341 0 2862 | _11342 0 2863 | _11343 0 2864 | _11344 0 2865 | _11345 0 2866 | _11346 0 2867 | _11347 0 2868 | _11348 0 2869 | _11349 0 2870 | _11350 0 2871 | _11351 0 2872 | _11352 0 2873 | _11353 0 2874 | _11354 0 2875 | _11355 0 2876 | _11356 0 2877 | _11357 0 2878 | _11358 0 2879 | _11359 0 2880 | _11360 0 2881 | _11361 0 2882 | _11362 0 2883 | _11363 0 2884 | _11364 0 2885 | _11365 0 2886 | _11366 0 2887 | _11367 0 2888 | _11368 0 2889 | _11369 0 2890 | _11370 0 2891 | _11371 0 2892 | _11372 0 2893 | _11373 0 2894 | _11374 1 2895 | _11380 1 2896 | _11392 1 2897 | _11394 1 2898 | _11400 1 2899 | _11408 1 2900 | _11414 1 2901 | _11416 1 2902 | _11418 1 2903 | _11424 1 2904 | _11426 1 2905 | _11428 1 2906 | _11434 1 2907 | _11438 1 2908 | _11440 1 2909 | _11442 1 2910 | _11452 1 2911 | _11458 1 2912 | _11460 1 2913 | _11468 1 2914 | _11470 1 2915 | _11474 1 2916 | _11490 1 2917 | _11494 1 2918 | _11500 1 2919 | _11502 1 2920 | _11506 1 2921 | _11508 1 2922 | _11510 1 2923 | _11520 1 2924 | _11524 1 2925 | _11536 1 2926 | _11544 1 2927 | _11548 1 2928 | _11550 1 2929 | _11554 1 2930 | _11556 1 2931 | _11560 1 2932 | _11562 1 2933 | _11566 1 2934 | _11580 1 2935 | _11582 1 2936 | _11596 1 2937 | _11600 1 2938 | _11604 1 2939 | _11606 1 2940 | _11616 1 2941 | _11620 1 2942 | _11622 1 2943 | _11624 1 2944 | _11628 1 2945 | _11634 1 2946 | _11638 1 2947 | _11650 1 2948 | _11652 1 2949 | _11658 1 2950 | _11660 1 2951 | _11662 1 2952 | _11664 1 2953 | _11666 1 2954 | _11670 1 2955 | _11680 1 2956 | _11686 1 2957 | _11696 1 2958 | _11698 1 2959 | _11700 1 2960 | _11702 1 2961 | _11708 1 2962 | _11710 1 2963 | _11714 1 2964 | _11716 1 2965 | _11718 1 2966 | _11724 1 2967 | _11728 1 2968 | _11730 1 2969 | _11732 1 2970 | _11742 1 2971 | _11748 1 2972 | _11756 1 2973 | _11760 1 2974 | _11770 1 2975 | _11772 1 2976 | _11774 1 2977 | _11776 1 2978 | _11778 1 2979 | _11788 1 2980 | _11790 1 2981 | _11792 1 2982 | _11794 1 2983 | _11796 1 2984 | _11800 1 2985 | _11804 1 2986 | _11806 1 2987 | _11812 1 2988 | _11818 1 2989 | _11820 1 2990 | _11822 1 2991 | _11824 1 2992 | _11826 1 2993 | _11830 1 2994 | _11832 1 2995 | _11834 1 2996 | _11836 1 2997 | _11838 1 2998 | _11840 1 2999 | _11842 1 3000 | _11844 1 3001 | _11846 1 3002 | _11848 1 3003 | _11850 1 3004 | _11852 1 3005 | _11854 1 3006 | _11856 1 3007 | _11858 1 3008 | _11860 1 3009 | _11862 1 3010 | _11864 1 3011 | _11866 1 3012 | _11868 1 3013 | _11870 1 3014 | _11872 1 3015 | _11874 1 3016 | _11876 1 3017 | _11878 1 3018 | _11880 1 3019 | _11882 1 3020 | _11883 0 3021 | _11884 0 3022 | _11885 0 3023 | _11886 0 3024 | _11887 0 3025 | _11888 0 3026 | _11889 0 3027 | _11890 0 3028 | _11891 0 3029 | _11892 0 3030 | _11893 0 3031 | _11894 0 3032 | _11895 0 3033 | _11896 0 3034 | _11897 0 3035 | _11898 0 3036 | _11899 0 3037 | _11900 0 3038 | _11901 0 3039 | _11902 0 3040 | _11903 0 3041 | _11904 0 3042 | _11905 0 3043 | _11906 0 3044 | _11907 0 3045 | _11908 0 3046 | _11909 0 3047 | _11910 0 3048 | _11911 0 3049 | _11912 0 3050 | _11913 0 3051 | _11914 0 3052 | _11915 0 3053 | _11916 0 3054 | _11917 0 3055 | _11918 0 3056 | _11919 0 3057 | _11920 0 3058 | _11921 0 3059 | _11922 0 3060 | _11923 0 3061 | _11924 0 3062 | _11925 0 3063 | _11926 0 3064 | _11927 0 3065 | _11928 0 3066 | _11929 0 3067 | _11930 0 3068 | _11931 0 3069 | _11932 0 3070 | _11933 0 3071 | _11934 0 3072 | _11935 0 3073 | _11936 0 3074 | _11937 0 3075 | _11938 0 3076 | _11939 0 3077 | _11940 0 3078 | _11941 0 3079 | _11942 0 3080 | _11943 0 3081 | _11944 0 3082 | _11945 0 3083 | _11946 0 3084 | _11947 0 3085 | _11948 0 3086 | _11949 0 3087 | _11950 0 3088 | _11951 0 3089 | _11952 0 3090 | _11953 0 3091 | _11954 0 3092 | _11955 0 3093 | _11956 0 3094 | _11957 0 3095 | _11958 0 3096 | _11959 0 3097 | _11960 0 3098 | _11961 0 3099 | _11962 0 3100 | _11963 0 3101 | _11964 0 3102 | _11965 0 3103 | _11966 0 3104 | _11967 0 3105 | _11968 0 3106 | _11969 0 3107 | _11970 0 3108 | _11971 0 3109 | _11972 0 3110 | _11973 0 3111 | _11974 0 3112 | _11975 0 3113 | _11976 0 3114 | _11977 0 3115 | _11978 0 3116 | _11979 0 3117 | _11980 0 3118 | _11981 0 3119 | _11982 0 3120 | _11983 0 3121 | _11984 0 3122 | _11985 0 3123 | _11986 0 3124 | _11987 0 3125 | _11988 0 3126 | _11989 0 3127 | _11990 0 3128 | _11991 0 3129 | _11992 0 3130 | _11993 0 3131 | _11994 0 3132 | _11995 0 3133 | _11996 0 3134 | _11997 0 3135 | _11998 0 3136 | _11999 0 3137 | _12000 0 3138 | _12001 0 3139 | _12002 0 3140 | _12003 0 3141 | _12004 0 3142 | _12005 0 3143 | _12006 0 3144 | _12007 0 3145 | _12008 0 3146 | _12009 0 3147 | _12012 0 3148 | _12013 1 3149 | _12015 1 3150 | _12016 10944121435919637611123202872628637544274182200208017171849102093287904247809 3151 | _12017 0 3152 | _12018 1 3153 | _12019 1 3154 | _12020 1 3155 | _12021 1 3156 | _12022 1 3157 | _12023 1 3158 | --------------------------------------------------------------------------------