package main import ( "fmt" "math/big" //"os" "strconv" "time" crypto "github.com/coinbase/kryptology/pkg/core" "github.com/coinbase/kryptology/pkg/paillier" ) func main() { var msg_num int = 10000 // message number var sub_num int = 1 // subscriber number(== subscription number == subscriber private key number) var time_duration int =19 // delay time 배열 길이 msg :=[]int{3, 1, 2, 4, 2, 5, 5, 1, 2, 1, 3, 2, 5, 3, 3, 1, 3, 3, 5, 1, 3, 1, 1, 2, 2, 4, 5, 1, 5, 3, 2, 3, 1, 5, 1, 3, 2, 3, 1, 1, 4, 4, 3, 3, 4, 4, 4, 3, 2, 2, 4, 1, 1, 1, 5, 3, 2, 5, 4, 5, 1, 4, 4, 4, 2, 1, 5, 4, 3, 1, 1, 4, 4, 3, 4, 4, 2, 2, 3, 5, 2, 3, 5, 4, 3, 2, 5, 2, 3, 5, 1, 2, 3, 3, 4, 2, 3, 5, 2, 4, 2, 4, 3, 1, 2, 2, 5, 1, 5, 3, 2, 4, 4, 5, 4, 1, 4, 3, 3, 5, 1, 1, 5, 4, 3, 3, 1, 4, 5, 2, 1, 5, 2, 1, 3, 4, 3, 4, 1, 4, 1, 5, 5, 2, 1, 5, 2, 5, 1, 2, 3, 2, 5, 3, 2, 2, 5, 1, 1, 1, 5, 4, 1, 5, 2, 4, 4, 2, 4, 1, 5, 3, 4, 3, 4, 1, 1, 5, 3, 5, 4, 5, 5, 2, 3, 1, 5, 3, 1, 5, 1, 5, 2, 1, 5, 1, 4, 4, 4, 3, 5, 2, 3, 3, 3, 5, 3, 1, 3, 3, 4, 5, 4, 5, 3, 1, 1, 2, 3, 1, 4, 3, 1, 3, 5, 2, 2, 3, 5, 2, 4, 3, 4, 4, 2, 1, 1, 3, 3, 3, 2, 2, 1, 1, 4, 2, 1, 5, 1, 1, 3, 2, 3, 4, 1, 3, 4, 4, 4, 4, 5, 4, 2, 4, 5, 1, 5, 4, 4, 5, 4, 5, 2, 4, 2, 2, 3, 5, 1, 5, 3, 1, 3, 4, 4, 5, 1, 5, 3, 4, 3, 3, 2, 5, 1, 1, 1, 5, 5, 4, 10, 7, 6, 5, 10, 6, 5, 5, 9, 10, 8, 6, 7, 5, 10, 7, 6, 9, 5, 6, 5, 10, 7, 5, 9, 8, 10, 8, 6, 7, 5, 10, 10, 6, 8, 9, 10, 5, 5, 9, 7, 9, 8, 7, 7, 10, 8, 6, 10, 9, 6, 10, 7, 5, 8, 5, 6, 9, 7, 8, 10, 7, 8, 9, 9, 10, 8, 10, 5, 5, 9, 8, 5, 7, 5, 7, 8, 9, 10, 8, 10, 6, 10, 5, 5, 7, 8, 6, 9, 8, 6, 8, 7, 10, 10, 9, 10, 10, 6, 7, 8, 5, 6, 5, 7, 6, 8, 10, 6, 10, 10, 8, 5, 10, 7, 9, 10, 8, 6, 5, 8, 5, 6, 5, 8, 9, 7, 9, 7, 10, 8, 5, 9, 10, 6, 8, 7, 10, 6, 6, 10, 9, 8, 5, 10, 8, 9, 5, 8, 6, 9, 7, 10, 8, 5, 6, 10, 6, 6, 8, 10, 6, 8, 10, 6, 8, 9, 10, 8, 8, 9, 5, 5, 10, 7, 6, 6, 9, 6, 8, 9, 10, 7, 8, 5, 9, 6, 8, 8, 9, 10, 7, 7, 8, 9, 8, 5, 7, 8, 5, 8, 9, 6, 10, 7, 9, 6, 10, 7, 9, 9, 8, 9, 5, 7, 7, 10, 10, 8, 6, 7, 5, 5, 9, 8, 8, 7, 9, 5, 5, 9, 5, 10, 8, 6, 8, 9, 9, 7, 9, 9, 5, 9, 10, 8, 7, 8, 7, 7, 5, 8, 5, 10, 9, 8, 7, 5, 9, 8, 5, 6, 6, 9, 7, 8, 9, 9, 10, 7, 8, 10, 7, 10, 7, 7, 7, 9, 8, 9, 10, 9, 10, 8, 10, 10, 10, 7, 5, 5, 9, 10, 6, 10, 6, 9, 5, 8, 9, 9, 5, 10, 9, 5, 9, 10, 10, 5, 10, 10, 7, 6, 6, 10, 9, 10, 10, 8, 10, 7, 5, 5, 9, 5, 9, 8, 9, 10, 7, 9, 7, 9, 9, 9, 7, 10, 5, 7, 7, 5, 10, 10, 10, 10, 8, 8, 6, 8, 10, 6, 6, 8, 6, 10, 8, 8, 8, 9, 6, 9, 9, 7, 5, 5, 6, 9, 5, 7, 7, 6, 7, 10, 8, 10, 8, 8, 5, 9, 8, 7, 7, 5, 9, 6, 5, 7, 6, 5, 9, 6, 10, 7, 10, 6, 9, 5, 8, 8, 7, 7, 5, 15, 14, 15, 14, 13, 10, 10, 13, 14, 10, 15, 15, 15, 13, 13, 13, 13, 10, 12, 12, 14, 14, 13, 11, 12, 13, 14, 11, 12, 13, 12, 12, 13, 13, 14, 11, 10, 12, 10, 12, 10, 14, 12, 12, 13, 13, 15, 14, 14, 13, 15, 13, 15, 10, 12, 12, 14, 15, 11, 11, 12, 11, 10, 11, 12, 10, 14, 11, 11, 14, 12, 12, 13, 10, 14, 13, 11, 12, 13, 10, 15, 11, 14, 14, 12, 10, 15, 14, 10, 10, 15, 10, 12, 13, 14, 11, 12, 11, 12, 12, 15, 12, 13, 12, 14, 12, 14, 14, 15, 15, 12, 13, 15, 10, 10, 12, 12, 10, 10, 12, 11, 13, 13, 13, 10, 11, 11, 13, 11, 14, 12, 12, 11, 13, 11, 11, 13, 10, 10, 15, 13, 14, 15, 13, 13, 11, 10, 14, 12, 13, 12, 12, 10, 13, 14, 14, 12, 15, 14, 14, 14, 11, 13, 15, 11, 10, 12, 14, 12, 15, 14, 12, 10, 11, 11, 14, 15, 11, 14, 13, 11, 10, 12, 15, 14, 12, 15, 13, 10, 10, 10, 11, 13, 14, 11, 12, 13, 13, 14, 13, 14, 15, 15, 12, 15, 12, 10, 12, 10, 13, 15, 13, 15, 12, 14, 13, 14, 10, 13, 15, 11, 14, 11, 10, 12, 15, 11, 10, 15, 13, 12, 15, 10, 11, 13, 15, 10, 13, 15, 15, 10, 13, 12, 10, 11, 14, 11, 13, 15, 15, 14, 10, 13, 14, 12, 12, 15, 14, 15, 13, 14, 15, 14, 13, 11, 12, 14, 13, 12, 14, 13, 13, 10, 12, 13, 15, 13, 13, 13, 15, 13, 10, 12, 11, 10, 15, 11, 13, 15, 13, 10, 15, 13, 15, 15, 13, 14, 15, 15, 15, 14, 10, 15, 10, 12, 11, 10, 12, 10, 11, 15, 13, 15, 14, 15, 10, 13, 12, 11, 10, 11, 12, 13, 12, 13, 15, 13, 15, 12, 10, 13, 10, 10, 13, 12, 14, 14, 14, 15, 15, 10, 14, 12, 12, 12, 11, 14, 10, 14, 10, 15, 11, 14, 13, 13, 11, 14, 11, 14, 13, 13, 12, 14, 15, 11, 10, 12, 11, 15, 10, 11, 13, 10, 15, 13, 12, 11, 15, 11, 14, 15, 15, 10, 14, 13, 13, 12, 14, 14, 12, 11, 11, 12, 11, 11, 10, 10, 11, 10, 12, 15, 18, 16, 20, 20, 16, 18, 16, 18, 20, 20, 19, 19, 18, 15, 15, 15, 15, 15, 19, 16, 19, 18, 18, 18, 17, 16, 15, 15, 15, 17, 17, 19, 17, 16, 17, 20, 15, 16, 15, 16, 19, 18, 17, 19, 18, 19, 16, 16, 16, 15, 18, 16, 19, 19, 18, 20, 16, 18, 19, 18, 19, 15, 18, 20, 19, 20, 17, 15, 16, 19, 20, 18, 18, 18, 17, 19, 20, 20, 15, 20, 20, 15, 17, 15, 18, 15, 16, 16, 15, 20, 20, 17, 16, 16, 15, 16, 17, 20, 16, 17, 18, 16, 18, 18, 18, 18, 17, 15, 16, 16, 16, 17, 17, 15, 20, 19, 18, 19, 16, 17, 19, 17, 17, 18, 16, 17, 19, 18, 20, 17, 17, 17, 19, 20, 16, 18, 16, 16, 17, 15, 19, 19, 17, 20, 17, 16, 20, 19, 20, 20, 17, 18, 15, 16, 18, 18, 16, 20, 17, 17, 18, 19, 19, 17, 16, 19, 19, 18, 17, 16, 16, 19, 18, 18, 20, 18, 19, 16, 19, 18, 17, 19, 19, 15, 15, 19, 15, 20, 15, 20, 17, 17, 17, 16, 19, 16, 18, 19, 15, 15, 17, 17, 18, 15, 19, 16, 19, 20, 20, 17, 17, 15, 17, 17, 17, 18, 18, 17, 15, 20, 17, 20, 19, 16, 16, 16, 15, 18, 20, 18, 18, 20, 20, 19, 20, 15, 16, 15, 15, 20, 16, 17, 15, 18, 20, 20, 15, 16, 18, 19, 15, 20, 17, 16, 15, 17, 15, 18, 19, 18, 18, 18, 16, 16, 20, 18, 20, 18, 16, 17, 20, 20, 16, 18, 15, 19, 20, 17, 20, 18, 15, 17, 20, 20, 19, 18, 16, 19, 16, 20, 18, 16, 20, 16, 18, 20, 20, 16, 19, 20, 15, 15, 16, 16, 17, 18, 17, 15, 16, 17, 18, 19, 18, 18, 17, 19, 18, 20, 20, 18, 17, 15, 15, 15, 19, 19, 20, 20, 18, 15, 18, 18, 16, 19, 16, 17, 20, 19, 19, 17, 17, 15, 16, 16, 18, 16, 18, 16, 16, 16, 16, 16, 16, 17, 18, 17, 19, 17, 16, 16, 19, 20, 19, 16, 20, 17, 18, 15, 15, 16, 18, 18, 18, 19, 15, 17, 18, 18, 17, 17, 18, 18, 18, 16, 18, 20, 16, 15, 16, 19, 16, 17, 19, 17, 20, 15, 18, 18, 17, 15, 15, 15, 17, 16, 16, 17, 18, 18, 20, 16, 19, 17, 18, 16, 19, 19, 20, 17, 17, 20, 18, 18, 19, 17, 17, 18, 15, 18, 19, 19, 18, 18, 19, 17, 16, 20, 18, 16, 17, 18, 16, 17, 18, 18, 16, 16, 15, 17, 20, 16, 20, 18, 19, 16, 17, 18, 19, 17, 16, 19, 15, 19, 15, 15, 17, 18, 18, 17, 15, 16, 15, 18, 18, 15, 15, 18, 18, 15, 20, 15, 18, 18, 17, 15, 17, 19, 15, 17, 15, 15, 15, 19, 20, 18, 18, 19, 17, 19, 17, 21, 24, 23, 23, 23, 25, 25, 22, 20, 23, 24, 22, 23, 22, 23, 23, 22, 24, 24, 25, 25, 24, 24, 25, 21, 21, 23, 20, 25, 20, 22, 25, 25, 21, 23, 20, 25, 22, 22, 25, 20, 24, 20, 21, 21, 20, 25, 24, 21, 22, 25, 24, 24, 25, 24, 21, 21, 23, 22, 23, 22, 22, 20, 25, 24, 21, 25, 22, 21, 24, 20, 24, 23, 21, 25, 25, 20, 21, 25, 22, 25, 21, 22, 20, 25, 22, 23, 20, 20, 20, 23, 21, 20, 23, 22, 21, 23, 21, 21, 23, 21, 24, 20, 20, 21, 24, 24, 23, 20, 20, 21, 22, 22, 23, 22, 21, 22, 20, 23, 22, 24, 22, 23, 25, 24, 21, 24, 20, 24, 25, 24, 21, 24, 24, 25, 25, 22, 22, 22, 24, 23, 20, 24, 24, 21, 22, 22, 25, 23, 20, 22, 25, 25, 20, 24, 22, 25, 25, 20, 24, 24, 21, 20, 24, 24, 25, 22, 22, 25, 20, 21, 22, 20, 22, 22, 21, 20, 22, 22, 24, 24, 21, 21, 24, 21, 25, 24, 21, 22, 23, 23, 25, 23, 22, 25, 20, 21, 20, 24, 21, 21, 25, 22, 25, 23, 24, 24, 24, 22, 24, 23, 22, 23, 22, 21, 24, 21, 21, 22, 22, 21, 23, 21, 24, 22, 20, 24, 25, 23, 25, 20, 22, 24, 24, 21, 25, 24, 22, 22, 23, 23, 20, 24, 24, 23, 24, 25, 24, 23, 21, 25, 21, 22, 23, 20, 22, 25, 24, 24, 23, 21, 21, 25, 23, 25, 25, 25, 22, 21, 21, 24, 21, 20, 25, 23, 20, 24, 20, 20, 22, 20, 21, 25, 24, 21, 25, 21, 21, 21, 24, 23, 23, 24, 23, 25, 24, 23, 22, 20, 25, 24, 23, 23, 22, 21, 24, 25, 23, 23, 22, 23, 21, 23, 20, 21, 21, 21, 24, 20, 20, 24, 20, 25, 23, 21, 23, 25, 22, 22, 24, 20, 20, 24, 20, 25, 23, 21, 21, 20, 25, 22, 22, 24, 25, 22, 20, 24, 22, 24, 21, 23, 20, 23, 25, 21, 25, 24, 20, 22, 25, 22, 24, 21, 24, 20, 20, 24, 25, 20, 23, 25, 21, 21, 22, 21, 25, 21, 21, 23, 20, 21, 24, 25, 25, 22, 24, 24, 24, 23, 20, 21, 25, 22, 23, 23, 21, 25, 23, 20, 22, 24, 21, 25, 20, 20, 24, 24, 24, 21, 25, 21, 21, 23, 22, 21, 24, 23, 23, 21, 24, 20, 23, 21, 25, 20, 22, 21, 20, 20, 25, 24, 25, 20, 22, 25, 21, 20, 24, 21, 24, 22, 25, 23, 25, 24, 21, 23, 20, 22, 22, 21, 23, 21, 22, 24, 22, 24, 22, 25, 24, 20, 22, 23, 22, 22, 23, 25, 21, 25, 22, 23, 22, 23, 21, 25, 22, 21, 21, 20, 21, 25, 23, 21, 22, 25, 23, 20, 23, 20, 23, 22, 25, 25, 21, 23, 22, 23, 20, 24, 21, 23, 22, 23, 21, 21, 22, 20, 20, 23, 25, 22, 25, 24, 22, 20, 23, 20, 23, 24, 22, 23, 23, 24, 21, 23, 24, 25, 20, 20, 24, 25, 21, 22, 24, 22, 20, 20, 24, 24, 22, 20, 23, 24, 22, 23, 20, 22, 25, 25, 24, 20, 24, 20, 21, 21, 23, 24, 25, 22, 23, 21, 24, 22, 25, 22, 21, 25, 20, 23, 25, 22, 23, 24, 25, 21, 20, 23, 21, 24, 24, 22, 25, 25, 24, 25, 22, 24, 21, 20, 24, 20, 21, 22, 25, 24, 22, 23, 23, 20, 24, 28, 26, 30, 30, 30, 28, 30, 26, 28, 29, 30, 29, 30, 26, 28, 25, 25, 30, 29, 29, 30, 26, 30, 29, 26, 26, 25, 25, 29, 27, 29, 28, 28, 27, 30, 26, 27, 27, 27, 30, 28, 30, 30, 26, 25, 30, 29, 29, 27, 25, 25, 25, 27, 26, 26, 28, 29, 29, 25, 25, 26, 30, 30, 28, 25, 30, 29, 26, 28, 30, 25, 27, 27, 25, 28, 28, 28, 25, 29, 28, 29, 29, 30, 28, 30, 26, 29, 25, 30, 29, 27, 26, 30, 27, 26, 29, 27, 26, 29, 30, 25, 26, 25, 25, 30, 25, 27, 30, 30, 25, 26, 25, 25, 29, 28, 25, 28, 25, 26, 28, 26, 28, 29, 29, 26, 27, 28, 29, 28, 30, 27, 30, 30, 27, 28, 30, 29, 25, 30, 26, 27, 25, 26, 28, 26, 29, 25, 28, 25, 30, 28, 26, 27, 25, 27, 30, 30, 29, 25, 25, 28, 30, 25, 27, 28, 30, 25, 25, 28, 25, 27, 25, 25, 30, 27, 27, 26, 25, 30, 29, 26, 28, 25, 26, 27, 25, 25, 25, 27, 28, 28, 29, 29, 28, 29, 26, 29, 27, 25, 27, 30, 26, 30, 27, 27, 27, 26, 26, 27, 29, 28, 26, 26, 30, 28, 28, 30, 29, 26, 28, 25, 28, 30, 25, 28, 30, 26, 30, 30, 30, 29, 27, 27, 26, 25, 26, 28, 25, 29, 26, 28, 26, 26, 28, 29, 27, 27, 28, 28, 26, 29, 29, 27, 26, 26, 27, 26, 27, 26, 29, 30, 25, 28, 25, 28, 26, 28, 27, 28, 25, 30, 28, 27, 25, 26, 30, 27, 29, 30, 25, 29, 30, 25, 25, 30, 27, 25, 29, 26, 26, 25, 29, 25, 26, 26, 26, 29, 27, 28, 26, 27, 28, 29, 30, 28, 29, 28, 29, 27, 30, 27, 26, 26, 28, 30, 27, 28, 25, 30, 25, 29, 27, 25, 25, 28, 25, 28, 25, 26, 30, 26, 25, 28, 29, 27, 28, 30, 29, 29, 28, 27, 27, 30, 28, 29, 27, 30, 26, 25, 26, 28, 25, 27, 27, 26, 28, 25, 25, 30, 28, 26, 29, 25, 26, 27, 28, 26, 29, 26, 28, 29, 27, 29, 29, 29, 29, 29, 27, 30, 26, 30, 26, 26, 25, 27, 29, 30, 27, 30, 25, 29, 29, 28, 27, 27, 25, 25, 29, 25, 26, 30, 25, 27, 28, 25, 29, 29, 27, 25, 27, 27, 27, 29, 27, 28, 30, 25, 27, 29, 29, 28, 28, 30, 28, 25, 26, 26, 28, 27, 25, 26, 27, 30, 28, 25, 28, 28, 25, 26, 25, 28, 27, 28, 29, 27, 30, 25, 30, 26, 30, 30, 27, 26, 27, 26, 26, 29, 28, 26, 25, 25, 26, 26, 27, 26, 29, 30, 28, 28, 29, 27, 28, 30, 25, 29, 27, 26, 29, 26, 30, 28, 26, 26, 30, 30, 29, 27, 30, 30, 26, 29, 26, 26, 28, 30, 29, 29, 30, 26, 26, 27, 26, 27, 30, 26, 29, 29, 26, 26, 28, 25, 25, 26, 28, 25, 27, 30, 27, 29, 27, 29, 30, 30, 27, 26, 27, 29, 27, 27, 25, 26, 29, 28, 27, 27, 30, 25, 30, 30, 25, 29, 27, 28, 28, 29, 25, 30, 29, 25, 25, 30, 25, 25, 27, 27, 30, 28, 28, 26, 30, 27, 30, 26, 25, 29, 29, 28, 27, 28, 29, 26, 27, 27, 27, 30, 26, 25, 28, 30, 29, 29, 28, 26, 29, 30, 25, 30, 30, 27, 30, 28, 28, 29, 28, 26, 30, 28, 26, 29, 25, 26, 27, 30, 26, 29, 30, 30, 28, 29, 27, 28, 25, 30, 28, 30, 26, 28, 26, 30, 25, 30, 28, 25, 29, 27, 28, 30, 29, 30, 26, 29, 26, 29, 27, 27, 26, 27, 25, 27, 27, 28, 25, 25, 25, 27, 28, 27, 30, 29, 25, 30, 26, 25, 29, 27, 29, 28, 30, 25, 30, 30, 27, 28, 30, 29, 29, 26, 29, 30, 29, 30, 29, 25, 30, 26, 28, 28, 26, 26, 25, 25, 25, 28, 25, 28, 29, 25, 28, 29, 28, 29, 25, 30, 28, 25, 29, 25, 27, 25, 25, 35, 31, 35, 30, 31, 34, 30, 35, 35, 32, 30, 34, 30, 34, 32, 32, 32, 33, 32, 30, 35, 32, 31, 34, 34, 33, 31, 34, 32, 33, 35, 35, 32, 33, 35, 33, 35, 33, 33, 31, 30, 34, 34, 31, 35, 34, 34, 31, 31, 31, 35, 34, 33, 32, 34, 30, 31, 31, 31, 30, 30, 30, 34, 35, 34, 32, 30, 31, 34, 33, 33, 31, 31, 32, 31, 32, 34, 33, 34, 30, 31, 30, 31, 34, 35, 30, 30, 35, 33, 32, 34, 33, 35, 33, 32, 34, 33, 32, 33, 34, 31, 30, 35, 31, 34, 32, 34, 35, 32, 34, 31, 30, 32, 35, 35, 31, 31, 30, 30, 34, 35, 30, 33, 32, 32, 31, 33, 33, 30, 33, 30, 30, 30, 35, 31, 35, 32, 35, 34, 34, 31, 32, 34, 31, 31, 35, 34, 31, 32, 35, 32, 35, 35, 33, 32, 31, 30, 35, 33, 35, 30, 35, 31, 30, 35, 34, 31, 35, 31, 34, 31, 33, 31, 31, 31, 31, 33, 34, 32, 32, 30, 34, 33, 31, 33, 35, 32, 30, 30, 33, 33, 33, 31, 34, 30, 34, 34, 32, 34, 32, 31, 34, 32, 30, 31, 31, 33, 34, 31, 35, 30, 31, 35, 30, 33, 32, 30, 34, 32, 35, 30, 34, 33, 35, 32, 33, 35, 31, 34, 33, 31, 34, 35, 34, 32, 34, 31, 32, 32, 35, 34, 31, 35, 31, 30, 32, 34, 33, 34, 33, 34, 31, 33, 30, 34, 35, 33, 30, 34, 33, 31, 33, 32, 31, 35, 34, 35, 35, 33, 34, 31, 30, 32, 31, 31, 35, 34, 35, 30, 32, 35, 30, 34, 31, 32, 33, 34, 35, 32, 30, 32, 34, 30, 30, 32, 35, 30, 33, 31, 30, 34, 31, 30, 31, 32, 31, 35, 32, 32, 34, 35, 31, 31, 35, 35, 34, 30, 30, 34, 33, 34, 31, 33, 33, 34, 34, 30, 32, 33, 35, 35, 33, 31, 30, 31, 31, 31, 30, 32, 32, 33, 34, 33, 34, 30, 32, 30, 32, 32, 31, 32, 31, 33, 34, 31, 31, 35, 30, 34, 35, 30, 32, 33, 31, 30, 34, 30, 33, 35, 34, 31, 31, 33, 34, 32, 32, 31, 33, 34, 34, 30, 35, 33, 32, 35, 34, 30, 35, 30, 31, 33, 34, 32, 35, 34, 35, 30, 35, 33, 31, 31, 34, 35, 32, 33, 32, 33, 34, 30, 31, 35, 31, 32, 33, 32, 34, 35, 31, 34, 32, 30, 30, 35, 34, 30, 32, 31, 35, 33, 33, 33, 35, 34, 32, 35, 31, 30, 32, 33, 34, 33, 35, 33, 32, 34, 33, 32, 30, 31, 32, 35, 33, 34, 30, 33, 30, 30, 32, 32, 32, 31, 34, 33, 33, 31, 34, 32, 30, 32, 30, 30, 30, 33, 35, 32, 35, 33, 31, 30, 35, 33, 31, 30, 35, 32, 31, 34, 30, 35, 32, 34, 32, 33, 34, 35, 32, 30, 33, 35, 35, 30, 32, 35, 33, 30, 33, 30, 34, 32, 30, 35, 32, 31, 34, 33, 32, 35, 33, 35, 34, 34, 33, 34, 32, 34, 31, 32, 33, 33, 35, 31, 34, 33, 30, 35, 31, 34, 30, 33, 30, 32, 32, 32, 34, 33, 33, 33, 32, 32, 33, 34, 35, 32, 31, 33, 33, 33, 35, 35, 30, 34, 34, 34, 31, 35, 30, 34, 34, 32, 35, 31, 33, 31, 35, 35, 35, 31, 35, 30, 34, 35, 30, 30, 31, 35, 30, 33, 30, 32, 32, 30, 34, 35, 34, 33, 32, 34, 35, 35, 32, 40, 39, 40, 36, 40, 39, 36, 40, 37, 36, 40, 36, 35, 40, 36, 35, 40, 36, 39, 40, 35, 39, 40, 35, 39, 40, 36, 39, 39, 39, 37, 37, 39, 36, 35, 39, 40, 35, 39, 39, 39, 40, 38, 38, 40, 37, 40, 38, 36, 40, 39, 35, 37, 36, 39, 38, 38, 40, 38, 38, 36, 39, 40, 35, 38, 35, 35, 35, 38, 36, 35, 40, 36, 36, 36, 38, 35, 35, 38, 40, 39, 40, 40, 38, 37, 40, 38, 37, 39, 38, 38, 37, 38, 35, 40, 40, 35, 39, 38, 39, 40, 37, 39, 37, 39, 37, 39, 37, 38, 38, 35, 37, 37, 39, 40, 37, 38, 36, 37, 35, 36, 37, 37, 35, 39, 36, 37, 37, 39, 39, 40, 37, 38, 36, 35, 38, 36, 39, 35, 39, 35, 38, 40, 40, 39, 35, 35, 40, 38, 40, 37, 40, 37, 38, 35, 37, 39, 39, 36, 39, 40, 35, 35, 38, 39, 38, 40, 39, 36, 38, 35, 38, 37, 36, 37, 39, 39, 37, 40, 35, 39, 37, 38, 40, 39, 39, 40, 39, 39, 38, 38, 38, 35, 37, 35, 38, 35, 36, 39, 38, 37, 40, 35, 40, 39, 35, 38, 39, 36, 37, 35, 37, 35, 38, 37, 35, 35, 40, 37, 35, 36, 35, 38, 39, 39, 36, 35, 40, 35, 35, 36, 35, 40, 35, 35, 37, 39, 40, 40, 36, 35, 35, 38, 40, 35, 39, 37, 36, 37, 39, 35, 36, 36, 40, 35, 36, 36, 38, 39, 38, 36, 37, 38, 40, 39, 36, 37, 39, 35, 37, 38, 38, 38, 36, 40, 40, 40, 38, 39, 35, 40, 36, 35, 35, 39, 37, 35, 39, 39, 38, 40, 37, 36, 36, 36, 35, 35, 39, 39, 39, 39, 40, 35, 36, 39, 37, 39, 35, 40, 39, 36, 38, 38, 40, 35, 39, 39, 39, 39, 40, 35, 36, 36, 38, 38, 35, 36, 35, 36, 39, 36, 40, 35, 40, 38, 40, 39, 38, 40, 38, 36, 39, 36, 40, 40, 39, 36, 35, 38, 36, 35, 40, 40, 39, 39, 39, 38, 40, 37, 35, 35, 38, 37, 37, 36, 37, 35, 39, 35, 37, 35, 39, 36, 38, 36, 38, 39, 40, 37, 37, 39, 38, 35, 38, 40, 37, 35, 39, 36, 35, 39, 40, 36, 36, 38, 40, 38, 39, 38, 39, 36, 38, 39, 39, 35, 37, 36, 38, 38, 39, 38, 38, 40, 40, 35, 36, 37, 37, 37, 38, 36, 39, 38, 35, 38, 36, 36, 37, 36, 38, 40, 35, 36, 37, 37, 39, 38, 36, 38, 37, 40, 40, 37, 39, 40, 39, 36, 37, 36, 36, 37, 40, 37, 35, 35, 37, 35, 36, 38, 38, 37, 35, 39, 38, 38, 40, 35, 38, 35, 39, 40, 38, 37, 39, 38, 36, 38, 38, 37, 36, 36, 40, 35, 38, 36, 37, 40, 36, 36, 38, 35, 38, 40, 38, 36, 37, 39, 37, 37, 40, 36, 35, 36, 37, 35, 37, 40, 35, 38, 38, 35, 37, 38, 35, 40, 40, 36, 39, 35, 37, 39, 36, 35, 37, 37, 37, 35, 40, 35, 36, 36, 38, 37, 40, 37, 39, 38, 38, 35, 36, 37, 35, 39, 36, 40, 37, 35, 36, 38, 36, 38, 38, 36, 35, 40, 37, 39, 37, 36, 38, 35, 35, 36, 39, 40, 37, 36, 37, 35, 39, 38, 38, 37, 39, 35, 40, 35, 39, 38, 38, 36, 39, 36, 37, 39, 40, 35, 39, 40, 37, 37, 36, 36, 38, 36, 40, 40, 40, 40, 36, 40, 36, 40, 40, 35, 40, 38, 38, 39, 36, 35, 35, 40, 40, 35, 37, 39, 35, 35, 37, 35, 38, 35, 39, 40, 37, 36, 39, 39, 39, 37, 37, 37, 40, 36, 38, 40, 38, 37, 37, 36, 38, 35, 38, 35, 37, 35, 35, 38, 35, 40, 35, 40, 39, 35, 39, 39, 36, 39, 38, 40, 36, 35, 37, 38, 39, 36, 40, 39, 37, 38, 40, 40, 36, 36, 36, 35, 37, 39, 37, 38, 39, 37, 36, 40, 40, 40, 37, 36, 37, 37, 38, 37, 38, 36, 40, 40, 38, 36, 35, 40, 42, 41, 42, 41, 44, 45, 45, 45, 41, 41, 40, 45, 42, 45, 41, 45, 40, 44, 44, 42, 44, 44, 45, 45, 45, 45, 45, 41, 41, 42, 44, 44, 45, 40, 42, 45, 40, 40, 43, 44, 42, 44, 43, 43, 40, 40, 44, 43, 40, 42, 40, 40, 40, 44, 43, 43, 43, 40, 40, 41, 45, 41, 40, 41, 41, 40, 42, 45, 44, 43, 43, 45, 45, 45, 42, 44, 41, 44, 40, 40, 43, 43, 41, 43, 42, 43, 42, 41, 42, 40, 41, 41, 41, 41, 40, 40, 41, 44, 43, 43, 43, 41, 43, 40, 43, 43, 45, 43, 44, 41, 42, 43, 40, 42, 44, 41, 45, 44, 41, 40, 45, 41, 42, 42, 44, 41, 43, 45, 44, 41, 40, 40, 40, 41, 42, 45, 42, 40, 41, 45, 42, 45, 42, 42, 43, 45, 45, 43, 41, 45, 43, 42, 43, 45, 44, 41, 43, 44, 45, 40, 42, 45, 43, 45, 40, 43, 45, 41, 40, 40, 41, 40, 42, 43, 41, 43, 44, 44, 43, 45, 45, 42, 43, 45, 44, 44, 42, 45, 40, 44, 44, 43, 44, 41, 44, 43, 41, 42, 44, 42, 44, 44, 44, 40, 44, 41, 41, 42, 42, 42, 41, 43, 40, 42, 41, 45, 40, 42, 45, 45, 44, 40, 45, 42, 45, 40, 44, 45, 43, 41, 41, 40, 45, 43, 40, 40, 41, 41, 45, 42, 45, 42, 41, 43, 43, 42, 44, 43, 42, 41, 45, 40, 40, 43, 44, 44, 43, 44, 44, 44, 42, 43, 45, 42, 41, 42, 44, 45, 43, 42, 42, 43, 43, 43, 40, 45, 40, 44, 40, 40, 45, 43, 41, 42, 43, 41, 43, 41, 43, 41, 40, 42, 44, 43, 42, 41, 40, 44, 44, 42, 45, 44, 45, 44, 45, 43, 43, 41, 44, 40, 44, 43, 43, 43, 45, 44, 44, 44, 43, 42, 41, 43, 45, 43, 45, 45, 40, 43, 40, 43, 45, 41, 41, 43, 45, 42, 43, 45, 45, 43, 41, 40, 42, 43, 43, 41, 44, 44, 44, 43, 45, 45, 41, 44, 44, 45, 40, 43, 43, 42, 41, 41, 42, 44, 40, 41, 40, 45, 42, 45, 44, 40, 42, 40, 42, 40, 40, 43, 42, 45, 44, 45, 41, 44, 42, 43, 45, 45, 43, 45, 41, 45, 45, 45, 41, 43, 43, 42, 40, 42, 45, 44, 42, 41, 42, 43, 40, 42, 42, 44, 44, 43, 42, 40, 40, 44, 45, 40, 45, 45, 41, 41, 41, 44, 43, 41, 45, 40, 44, 40, 42, 41, 42, 43, 45, 45, 42, 42, 40, 41, 42, 41, 45, 44, 43, 43, 42, 44, 43, 45, 40, 43, 41, 41, 43, 45, 44, 42, 42, 41, 42, 45, 42, 45, 44, 44, 42, 43, 40, 41, 44, 43, 41, 45, 41, 43, 40, 43, 40, 44, 45, 44, 41, 40, 40, 44, 40, 44, 42, 44, 40, 44, 42, 42, 41, 44, 42, 44, 42, 42, 43, 41, 44, 45, 42, 45, 43, 43, 42, 44, 45, 44, 43, 40, 40, 45, 43, 40, 44, 41, 40, 41, 40, 45, 41, 45, 45, 42, 45, 40, 45, 40, 45, 43, 44, 44, 40, 42, 42, 44, 43, 41, 44, 41, 42, 44, 41, 42, 45, 41, 40, 43, 41, 43, 43, 43, 41, 43, 45, 44, 42, 45, 40, 43, 40, 41, 45, 44, 43, 40, 40, 43, 41, 41, 41, 41, 42, 40, 40, 43, 45, 44, 44, 40, 41, 40, 41, 43, 44, 41, 45, 41, 41, 41, 42, 45, 45, 43, 43, 40, 44, 42, 42, 44, 40, 44, 43, 40, 40, 44, 42, 40, 40, 43, 44, 41, 43, 40, 42, 42, 40, 43, 45, 45, 42, 43, 44, 42, 45, 42, 40, 45, 44, 40, 42, 44, 42, 45, 45, 40, 44, 45, 43, 45, 42, 45, 41, 44, 44, 44, 40, 42, 45, 44, 44, 42, 43, 42, 40, 44, 42, 43, 44, 43, 44, 44, 40, 41, 43, 44, 45, 45, 40, 43, 42, 43, 41, 40, 41, 42, 40, 44, 44, 44, 44, 42, 44, 45, 41, 45, 43, 43, 44, 45, 45, 42, 44, 40, 45, 44, 41, 41, 41, 43, 43, 44, 41, 44, 42, 42, 42, 45, 43, 43, 40, 41, 40, 44, 42, 44, 45, 44, 40, 44, 44, 41, 45, 42, 44, 43, 44, 42, 43, 42, 44, 40, 41, 40, 45, 42, 41, 44, 41, 44, 40, 42, 44, 44, 43, 41, 42, 45, 42, 41, 41, 44, 40, 40, 40, 40, 44, 40, 41, 41, 41, 41, 44, 45, 44, 45, 44, 43, 45, 45, 45, 40, 45, 44, 44, 42, 40, 43, 43, 40, 40, 44, 42, 43, 41, 44, 40, 45, 45, 44, 45, 41, 41, 40, 42, 48, 50, 48, 47, 48, 50, 47, 46, 46, 50, 46, 46, 49, 50, 49, 50, 48, 48, 46, 49, 45, 48, 46, 46, 50, 45, 46, 45, 47, 49, 50, 50, 49, 45, 48, 46, 47, 46, 49, 45, 47, 49, 46, 48, 45, 45, 47, 49, 50, 49, 48, 46, 45, 50, 48, 50, 50, 49, 45, 46, 49, 49, 47, 47, 49, 45, 49, 48, 46, 49, 49, 48, 49, 46, 46, 50, 48, 46, 50, 48, 47, 49, 50, 48, 46, 45, 50, 45, 47, 45, 49, 50, 47, 48, 50, 48, 46, 50, 49, 48, 49, 49, 48, 46, 45, 49, 50, 45, 46, 48, 49, 46, 48, 46, 46, 48, 48, 48, 45, 48, 50, 48, 49, 46, 45, 45, 49, 47, 46, 45, 50, 49, 46, 45, 48, 48, 50, 46, 49, 46, 48, 50, 45, 45, 50, 49, 45, 46, 45, 46, 45, 48, 49, 49, 48, 49, 50, 46, 48, 46, 46, 46, 45, 49, 45, 50, 50, 50, 45, 46, 49, 47, 46, 49, 45, 50, 47, 48, 47, 45, 47, 46, 45, 45, 47, 50, 50, 47, 47, 49, 50, 46, 47, 46, 45, 49, 47, 46, 48, 45, 46, 49, 45, 45, 48, 47, 45, 45, 46, 45, 49, 50, 47, 49, 49, 47, 45, 47, 49, 48, 47, 48, 49, 48, 49, 50, 50, 49, 46, 49, 47, 49, 49, 48, 50, 46, 50, 49, 46, 47, 47, 47, 50, 46, 45, 50, 49, 49, 48, 49, 47, 49, 45, 49, 48, 50, 47, 45, 48, 47, 45, 46, 46, 49, 45, 46, 47, 47, 47, 49, 45, 45, 47, 45, 47, 49, 49, 48, 45, 47, 47, 49, 49, 48, 49, 45, 47, 45, 47, 47, 48, 45, 49, 48, 47, 46, 45, 47, 47, 46, 47, 45, 49, 50, 47, 46, 48, 45, 49, 49, 47, 50, 48, 47, 48, 49, 48, 45, 47, 50, 48, 47, 49, 50, 47, 47, 48, 50, 45, 50, 46, 49, 47, 49, 50, 46, 48, 49, 48, 46, 50, 49, 49, 48, 45, 45, 48, 47, 50, 49, 49, 50, 48, 50, 50, 45, 45, 47, 45, 50, 47, 50, 45, 47, 48, 46, 47, 50, 47, 48, 46, 50, 47, 48, 45, 45, 48, 47, 48, 49, 45, 45, 45, 48, 50, 47, 45, 49, 47, 50, 48, 50, 45, 46, 49, 46, 48, 50, 48, 49, 46, 48, 49, 48, 45, 45, 47, 49, 45, 47, 49, 48, 45, 45, 50, 47, 48, 46, 49, 50, 45, 45, 48, 49, 49, 45, 46, 47, 50, 48, 49, 46, 49, 48, 50, 46, 46, 49, 45, 46, 47, 49, 47, 45, 46, 46, 45, 49, 45, 49, 50, 48, 48, 50, 50, 46, 46, 46, 49, 48, 49, 48, 46, 46, 46, 45, 45, 45, 49, 50, 45, 47, 47, 45, 50, 48, 50, 48, 48, 45, 46, 50, 48, 47, 49, 50, 50, 50, 48, 50, 48, 47, 45, 47, 47, 46, 46, 48, 47, 49, 47, 47, 50, 50, 48, 49, 46, 50, 46, 46, 49, 50, 49, 46, 48, 47, 46, 47, 49, 48, 45, 47, 46, 46, 45, 47, 48, 45, 45, 49, 49, 49, 50, 45, 45, 46, 49, 49, 49, 50, 48, 47, 48, 46, 48, 45, 48, 50, 47, 48, 46, 50, 46, 46, 48, 50, 47, 48, 45, 46, 48, 45, 48, 50, 48, 46, 48, 50, 49, 46, 50, 50, 48, 46, 46, 50, 50, 49, 48, 45, 50, 47, 49, 45, 48, 47, 48, 47, 47, 45, 50, 50, 47, 48, 47, 48, 50, 47, 46, 46, 48, 47, 50, 46, 49, 50, 49, 50, 47, 47, 49, 49, 47, 50, 46, 49, 47, 49, 49, 49, 47, 50, 49, 50, 48, 45, 49, 46, 45, 46, 45, 49, 46, 45, 47, 45, 45, 50, 45, 46, 45, 50, 48, 49, 49, 47, 48, 46, 45, 50, 50, 47, 45, 49, 46, 49, 47, 49, 46, 45, 48, 48, 49, 46, 48, 49, 47, 45, 45, 47, 46, 48, 45, 48, 46, 46, 47, 48, 47, 47, 48, 48, 45, 47, 46, 46, 49, 48, 48, 45, 47, 47, 45, 49, 48, 45, 50, 46, 49, 46, 45, 45, 45, 48, 47, 46, 46, 46, 48, 45, 48, 49, 50, 50, 48, 45, 46, 50, 46, 45, 45, 50, 45, 49, 50, 47, 50, 50, 49, 45, 50, 49, 50, 48, 45, 49, 49, 47, 50, 48, 47, 47, 46, 49, 48, 47, 45, 45, 47, 49, 45, 48, 48, 50, 45, 48, 47, 46, 49, 50, 46, 49, 46, 46, 48, 49, 50, 47, 49, 48, 48, 50, 48, 49, 48, 45, 47, 49, 50, 48, 50, 45, 47, 48, 47, 49, 48, 46, 50, 46, 50, 46, 50, 50, 50, 47, 47, 49, 45, 50, 52, 53, 51, 51, 52, 51, 52, 50, 52, 50, 54, 50, 53, 53, 55, 53, 53, 51, 53, 51, 52, 50, 50, 52, 51, 52, 54, 55, 53, 53, 54, 52, 51, 53, 53, 54, 51, 50, 53, 51, 55, 50, 54, 51, 50, 55, 53, 54, 53, 54, 53, 55, 54, 53, 55, 53, 55, 51, 50, 54, 51, 50, 54, 51, 54, 51, 53, 53, 53, 50, 53, 52, 54, 52, 53, 52, 52, 50, 50, 55, 52, 55, 52, 52, 52, 55, 50, 52, 53, 50, 54, 55, 53, 54, 55, 50, 51, 52, 54, 50, 53, 52, 51, 51, 51, 54, 50, 51, 54, 54, 50, 55, 55, 51, 52, 52, 50, 52, 51, 55, 50, 53, 53, 50, 52, 50, 50, 54, 51, 54, 53, 55, 53, 55, 54, 55, 55, 53, 55, 54, 54, 50, 54, 52, 53, 51, 50, 54, 54, 52, 53, 51, 54, 52, 53, 53, 50, 55, 53, 54, 55, 50, 54, 53, 54, 54, 54, 51, 52, 52, 51, 52, 50, 50, 55, 51, 55, 54, 52, 50, 51, 50, 53, 53, 54, 54, 55, 53, 54, 55, 55, 53, 52, 51, 55, 53, 53, 54, 50, 53, 51, 51, 51, 51, 50, 52, 55, 53, 53, 55, 52, 52, 52, 50, 55, 51, 51, 52, 53, 55, 55, 54, 53, 51, 52, 54, 53, 54, 50, 55, 55, 50, 54, 51, 53, 54, 54, 52, 54, 50, 51, 51, 53, 52, 53, 50, 51, 51, 55, 51, 51, 53, 50, 50, 55, 54, 52, 54, 52, 50, 51, 54, 55, 53, 51, 55, 55, 50, 54, 55, 50, 55, 50, 54, 53, 55, 51, 50, 51, 50, 52, 52, 52, 50, 53, 54, 50, 55, 51, 55, 55, 51, 53, 51, 54, 53, 50, 55, 52, 51, 50, 51, 51, 55, 51, 55, 52, 50, 53, 52, 54, 54, 54, 52, 55, 55, 54, 52, 50, 50, 53, 53, 50, 50, 50, 50, 51, 50, 51, 52, 51, 53, 50, 52, 50, 50, 55, 51, 51, 51, 52, 50, 51, 55, 50, 52, 52, 52, 54, 53, 55, 55, 53, 52, 52, 52, 53, 53, 51, 55, 50, 52, 55, 52, 52, 51, 52, 50, 53, 51, 50, 55, 55, 54, 50, 51, 50, 55, 50, 50, 52, 53, 52, 55, 50, 52, 53, 54, 50, 53, 50, 53, 52, 52, 54, 53, 53, 54, 52, 52, 51, 52, 52, 50, 55, 52, 54, 50, 53, 54, 50, 54, 51, 55, 50, 54, 50, 52, 50, 54, 51, 51, 55, 51, 51, 50, 50, 53, 51, 54, 51, 51, 54, 51, 53, 52, 50, 53, 50, 50, 52, 55, 52, 53, 51, 53, 55, 50, 53, 55, 50, 50, 53, 54, 53, 52, 53, 51, 51, 55, 55, 54, 53, 54, 55, 54, 51, 51, 54, 55, 53, 55, 50, 53, 53, 51, 55, 50, 54, 50, 55, 53, 55, 50, 53, 54, 50, 52, 52, 51, 50, 52, 50, 52, 54, 50, 55, 50, 51, 53, 50, 51, 52, 55, 53, 55, 50, 53, 54, 50, 53, 54, 50, 54, 51, 51, 52, 55, 52, 54, 54, 54, 51, 50, 51, 54, 53, 54, 53, 52, 50, 54, 52, 55, 55, 53, 52, 55, 54, 55, 55, 55, 51, 52, 50, 53, 54, 53, 54, 55, 52, 50, 54, 51, 53, 50, 55, 54, 51, 51, 54, 51, 51, 53, 50, 52, 51, 50, 50, 52, 50, 54, 50, 53, 53, 52, 51, 51, 52, 51, 52, 50, 50, 55, 51, 55, 52, 54, 51, 55, 52, 54, 54, 53, 50, 50, 52, 52, 54, 52, 53, 55, 54, 51, 52, 53, 53, 55, 55, 55, 51, 55, 52, 52, 52, 51, 52, 55, 54, 52, 53, 53, 53, 50, 52, 50, 55, 54, 52, 51, 52, 52, 55, 52, 53, 53, 53, 50, 55, 53, 53, 54, 50, 53, 55, 50, 53, 54, 55, 54, 50, 54, 50, 52, 54, 55, 55, 53, 50, 50, 51, 52, 55, 50, 51, 55, 50, 54, 54, 55, 55, 50, 53, 53, 51, 51, 51, 52, 51, 54, 55, 50, 53, 55, 53, 54, 52, 54, 54, 51, 51, 52, 55, 53, 51, 54, 50, 55, 53, 52, 54, 55, 51, 55, 51, 54, 52, 53, 52, 54, 54, 54, 50, 51, 54, 52, 51, 53, 50, 54, 50, 50, 55, 54, 53, 52, 51, 54, 55, 52, 50, 52, 55, 54, 52, 55, 54, 52, 50, 50, 51, 52, 52, 55, 55, 55, 53, 55, 55, 54, 54, 55, 50, 53, 51, 51, 53, 53, 53, 53, 55, 52, 54, 53, 51, 53, 50, 54, 51, 55, 50, 55, 55, 55, 51, 55, 54, 53, 54, 53, 54, 55, 53, 51, 50, 53, 50, 52, 54, 53, 52, 51, 51, 53, 52, 51, 55, 53, 55, 55, 59, 59, 60, 60, 58, 60, 56, 60, 55, 59, 58, 60, 55, 55, 56, 60, 59, 60, 55, 56, 58, 58, 56, 57, 55, 57, 58, 58, 57, 60, 55, 60, 59, 59, 55, 56, 57, 57, 59, 59, 57, 56, 57, 58, 60, 58, 59, 60, 55, 58, 55, 57, 56, 56, 55, 60, 57, 58, 56, 58, 57, 55, 57, 55, 57, 55, 59, 56, 55, 58, 59, 57, 57, 59, 58, 56, 55, 57, 60, 56, 59, 59, 60, 60, 60, 55, 60, 59, 57, 56, 60, 60, 57, 60, 55, 56, 55, 58, 60, 56, 57, 58, 60, 55, 60, 57, 55, 60, 56, 56, 55, 60, 58, 57, 59, 57, 57, 57, 60, 60, 57, 59, 56, 56, 57, 56, 56, 60, 58, 59, 60, 59, 60, 56, 56, 60, 55, 60, 56, 58, 58, 56, 60, 58, 59, 57, 59, 58, 59, 58, 58, 57, 57, 60, 59, 55, 60, 59, 59, 58, 57, 60, 60, 60, 60, 56, 55, 59, 57, 57, 57, 56, 59, 59, 57, 58, 56, 56, 55, 60, 60, 55, 60, 56, 56, 56, 59, 57, 56, 59, 58, 57, 58, 56, 55, 58, 58, 60, 58, 57, 58, 58, 57, 58, 58, 60, 56, 56, 60, 56, 55, 56, 57, 57, 57, 59, 59, 56, 59, 57, 60, 60, 57, 55, 58, 59, 58, 58, 60, 55, 59, 55, 60, 57, 58, 56, 57, 60, 56, 57, 57, 56, 55, 60, 56, 57, 58, 59, 56, 58, 56, 55, 56, 56, 60, 60, 59, 57, 59, 56, 55, 59, 59, 58, 58, 55, 56, 56, 59, 59, 58, 57, 57, 58, 56, 58, 60, 60, 59, 60, 60, 58, 55, 55, 60, 59, 58, 55, 55, 58, 59, 55, 59, 55, 56, 57, 56, 55, 59, 55, 59, 59, 58, 57, 58, 56, 55, 58, 55, 57, 55, 56, 55, 56, 57, 60, 56, 58, 58, 58, 57, 60, 58, 56, 56, 59, 58, 57, 59, 58, 56, 56, 59, 57, 58, 57, 56, 59, 56, 58, 55, 55, 60, 56, 56, 56, 57, 58, 59, 57, 60, 60, 58, 57, 57, 60, 60, 58, 56, 55, 60, 56, 56, 60, 55, 57, 57, 56, 59, 59, 58, 57, 58, 55, 58, 59, 60, 59, 60, 58, 59, 58, 59, 56, 55, 60, 55, 58, 59, 57, 58, 58, 60, 60, 57, 57, 60, 55, 56, 55, 57, 56, 59, 57, 60, 56, 58, 57, 56, 56, 55, 60, 58, 60, 59, 57, 58, 55, 60, 55, 59, 55, 59, 58, 58, 56, 59, 60, 57, 56, 56, 56, 57, 55, 60, 59, 58, 56, 56, 60, 57, 58, 58, 58, 58, 55, 60, 58, 59, 59, 58, 57, 56, 57, 56, 56, 57, 58, 56, 56, 56, 55, 60, 58, 59, 60, 59, 59, 59, 56, 58, 55, 60, 56, 58, 58, 59, 58, 60, 56, 58, 59, 56, 58, 55, 57, 60, 56, 58, 55, 59, 56, 56, 60, 56, 60, 59, 57, 56, 55, 59, 56, 59, 59, 55, 59, 55, 58, 56, 55, 55, 57, 58, 57, 57, 60, 55, 57, 56, 56, 55, 60, 57, 57, 59, 58, 59, 59, 55, 55, 59, 59, 57, 55, 56, 58, 58, 60, 59, 59, 60, 57, 59, 56, 56, 59, 58, 58, 55, 58, 56, 57, 56, 55, 55, 56, 59, 55, 56, 59, 56, 60, 58, 59, 59, 55, 58, 57, 60, 59, 58, 59, 55, 60, 57, 59, 57, 55, 55, 59, 60, 56, 57, 57, 57, 59, 59, 56, 58, 55, 59, 58, 59, 58, 57, 60, 56, 59, 58, 59, 55, 58, 59, 59, 60, 56, 60, 60, 58, 56, 58, 57, 57, 59, 59, 60, 56, 57, 59, 60, 55, 57, 56, 55, 56, 58, 60, 57, 56, 59, 59, 55, 56, 60, 60, 57, 55, 60, 59, 56, 58, 55, 56, 59, 59, 57, 59, 60, 55, 59, 58, 55, 60, 55, 59, 55, 57, 60, 57, 60, 56, 57, 56, 57, 55, 56, 57, 56, 55, 58, 60, 57, 59, 60, 59, 57, 55, 55, 55, 57, 57, 60, 56, 58, 56, 55, 57, 59, 55, 58, 60, 57, 55, 58, 59, 56, 60, 55, 59, 59, 58, 56, 57, 56, 60, 55, 57, 56, 58, 55, 59, 56, 60, 58, 56, 59, 57, 59, 57, 58, 55, 57, 60, 55, 57, 56, 57, 59, 57, 55, 56, 56, 56, 59, 56, 56, 60, 60, 59, 60, 60, 58, 55, 60, 57, 56, 58, 57, 59, 57, 57, 58, 60, 58, 57, 58, 60, 58, 60, 59, 59, 55, 59, 60, 55, 58, 55, 56, 60, 60, 55, 60, 60, 56, 60, 56, 56, 59, 57, 58, 58, 56, 56, 58, 59, 58, 56, 59, 55, 58, 57, 55, 57, 56, 59, 59, 57, 55, 59, 55, 62, 61, 62, 64, 65, 62, 60, 60, 61, 61, 63, 61, 60, 62, 63, 61, 62, 61, 64, 65, 62, 60, 60, 65, 62, 62, 60, 63, 65, 65, 64, 62, 63, 64, 62, 63, 62, 64, 61, 61, 60, 60, 65, 65, 64, 61, 64, 61, 63, 60, 61, 63, 63, 63, 65, 64, 64, 65, 64, 64, 61, 63, 63, 61, 64, 64, 63, 65, 64, 64, 60, 61, 62, 61, 61, 63, 62, 64, 63, 60, 61, 61, 64, 61, 64, 62, 60, 60, 64, 63, 64, 60, 64, 62, 60, 65, 65, 60, 65, 60, 63, 64, 62, 62, 62, 65, 62, 65, 60, 65, 64, 63, 62, 62, 60, 61, 62, 61, 64, 61, 62, 63, 62, 64, 63, 65, 64, 61, 65, 61, 65, 60, 65, 60, 60, 64, 65, 62, 62, 63, 62, 64, 60, 64, 64, 60, 63, 64, 62, 65, 63, 64, 63, 60, 64, 64, 63, 65, 61, 65, 60, 65, 60, 63, 62, 63, 65, 65, 63, 61, 64, 65, 65, 61, 64, 62, 63, 61, 65, 62, 61, 60, 64, 63, 60, 64, 63, 65, 65, 63, 63, 63, 60, 62, 63, 60, 65, 65, 64, 60, 63, 65, 62, 60, 60, 65, 62, 62, 63, 62, 61, 60, 62, 65, 61, 65, 65, 60, 60, 60, 63, 61, 61, 65, 62, 63, 64, 65, 65, 63, 60, 63, 65, 65, 62, 61, 63, 60, 62, 64, 62, 63, 62, 61, 64, 64, 65, 62, 64, 65, 65, 63, 61, 60, 62, 60, 64, 65, 60, 60, 64, 65, 63, 61, 61, 60, 62, 65, 64, 65, 64, 60, 63, 65, 63, 60, 65, 61, 60, 64, 65, 65, 61, 64, 62, 64, 64, 64, 60, 63, 63, 62, 60, 61, 61, 63, 65, 61, 63, 62, 65, 60, 64, 64, 65, 65, 60, 61, 63, 63, 62, 63, 61, 60, 63, 62, 65, 62, 65, 61, 61, 60, 60, 60, 62, 63, 62, 61, 62, 62, 61, 64, 64, 64, 62, 63, 62, 65, 65, 62, 62, 62, 61, 63, 63, 63, 61, 64, 62, 60, 60, 60, 62, 62, 63, 61, 63, 64, 60, 63, 62, 61, 65, 64, 62, 64, 60, 65, 65, 65, 60, 65, 63, 61, 62, 64, 61, 61, 63, 61, 63, 64, 60, 60, 61, 65, 60, 60, 65, 62, 62, 63, 62, 61, 63, 62, 63, 61, 63, 60, 61, 61, 62, 65, 65, 65, 60, 65, 64, 64, 65, 64, 64, 63, 60, 63, 60, 61, 64, 62, 60, 65, 60, 63, 61, 62, 64, 60, 62, 60, 65, 62, 64, 63, 63, 60, 65, 65, 63, 62, 64, 64, 65, 62, 60, 63, 61, 65, 65, 62, 65, 60, 65, 61, 60, 62, 65, 61, 62, 64, 63, 61, 63, 64, 65, 60, 62, 60, 62, 61, 60, 62, 61, 62, 63, 61, 62, 60, 63, 60, 60, 64, 60, 62, 65, 60, 60, 65, 61, 63, 61, 63, 63, 60, 64, 60, 61, 63, 64, 62, 64, 65, 65, 63, 61, 61, 65, 60, 61, 65, 62, 64, 61, 60, 62, 63, 63, 63, 61, 61, 62, 60, 63, 64, 64, 61, 61, 64, 60, 64, 62, 63, 60, 60, 63, 65, 63, 65, 61, 63, 63, 65, 62, 65, 64, 61, 64, 61, 65, 65, 63, 61, 64, 61, 62, 60, 61, 63, 64, 62, 61, 63, 62, 65, 64, 61, 65, 63, 61, 62, 64, 65, 60, 62, 62, 63, 63, 63, 64, 65, 60, 63, 65, 64, 61, 64, 65, 65, 61, 61, 60, 65, 65, 64, 61, 60, 65, 61, 62, 64, 65, 60, 64, 65, 65, 62, 64, 63, 63, 60, 64, 64, 63, 60, 63, 64, 63, 62, 63, 60, 64, 63, 61, 65, 62, 63, 63, 62, 63, 65, 64, 65, 61, 62, 65, 64, 61, 60, 65, 65, 64, 61, 65, 62, 64, 65, 63, 60, 64, 61, 65, 63, 63, 60, 63, 63, 63, 60, 64, 63, 60, 60, 65, 60, 63, 63, 62, 60, 64, 62, 61, 62, 65, 62, 61, 60, 61, 61, 60, 60, 60, 60, 63, 65, 63, 63, 62, 61, 62, 60, 63, 60, 65, 64, 61, 64, 63, 61, 62, 63, 61, 62, 62, 65, 63, 64, 60, 62, 65, 60, 64, 63, 64, 61, 64, 62, 63, 61, 63, 60, 65, 62, 62, 63, 65, 60, 62, 63, 63, 65, 65, 61, 61, 65, 64, 63, 62, 62, 65, 62, 61, 62, 61, 64, 61, 61, 60, 65, 65, 64, 63, 62, 64, 65, 61, 61, 65, 64, 63, 65, 63, 61, 61, 62, 60, 61, 63, 60, 64, 60, 61, 61, 60, 62, 65, 60, 63, 60, 65, 60, 61, 64, 62, 61, 63, 62, 65, 62, 60, 62, 61, 64, 64, 62, 63, 61, 64, 60, 61, 63, 65, 69, 65, 67, 66, 70, 69, 65, 69, 68, 65, 66, 70, 65, 66, 65, 67, 70, 70, 69, 65, 65, 67, 66, 66, 69, 65, 68, 68, 65, 67, 66, 69, 67, 69, 66, 67, 70, 65, 70, 66, 66, 67, 70, 69, 65, 67, 68, 70, 69, 70, 66, 69, 66, 66, 67, 69, 65, 66, 69, 67, 65, 67, 65, 69, 70, 65, 68, 70, 66, 70, 65, 65, 70, 66, 70, 65, 66, 69, 67, 65, 66, 68, 70, 66, 69, 67, 70, 69, 70, 68, 70, 66, 68, 66, 65, 68, 67, 67, 68, 69, 66, 69, 70, 69, 69, 65, 68, 69, 70, 68, 65, 68, 70, 67, 68, 70, 70, 67, 67, 67, 67, 68, 70, 66, 66, 65, 70, 65, 65, 68, 65, 70, 67, 68, 65, 65, 70, 65, 65, 68, 68, 69, 68, 66, 66, 68, 67, 65, 67, 67, 68, 67, 69, 65, 67, 66, 65, 69, 67, 68, 68, 66, 70, 68, 65, 67, 65, 70, 68, 69, 68, 68, 67, 69, 69, 70, 66, 69, 68, 65, 65, 68, 67, 70, 68, 67, 70, 68, 69, 67, 69, 68, 69, 69, 67, 67, 68, 65, 68, 68, 67, 65, 70, 68, 66, 66, 69, 69, 66, 66, 68, 65, 65, 66, 68, 70, 66, 68, 65, 65, 70, 67, 65, 65, 68, 70, 70, 65, 65, 65, 68, 66, 65, 68, 68, 70, 68, 65, 69, 68, 69, 65, 66, 65, 69, 69, 66, 65, 67, 70, 66, 66, 69, 68, 65, 69, 66, 65, 66, 70, 66, 66, 66, 65, 69, 65, 66, 70, 65, 67, 68, 70, 67, 70, 67, 65, 67, 68, 66, 67, 65, 66, 70, 70, 68, 66, 66, 67, 65, 65, 69, 68, 68, 65, 67, 70, 70, 68, 65, 70, 70, 70, 67, 69, 67, 70, 67, 69, 66, 67, 68, 68, 69, 68, 65, 66, 68, 65, 70, 65, 67, 68, 65, 69, 67, 70, 69, 70, 70, 67, 70, 68, 66, 70, 69, 68, 68, 66, 69, 66, 65, 68, 65, 70, 66, 66, 70, 66, 65, 66, 70, 69, 67, 70, 70, 67, 66, 67, 68, 65, 69, 66, 69, 68, 69, 70, 66, 65, 69, 66, 69, 65, 68, 70, 66, 65, 70, 67, 69, 68, 68, 67, 66, 67, 65, 69, 65, 66, 65, 68, 69, 70, 65, 66, 65, 67, 68, 66, 67, 66, 69, 66, 70, 70, 65, 67, 65, 68, 68, 68, 65, 69, 65, 68, 69, 67, 70, 70, 69, 69, 69, 70, 65, 68, 66, 66, 70, 70, 66, 68, 65, 68, 67, 69, 67, 69, 69, 68, 69, 67, 69, 68, 70, 66, 66, 69, 67, 66, 68, 66, 65, 69, 69, 69, 70, 66, 68, 65, 67, 69, 69, 67, 70, 67, 68, 66, 67, 67, 68, 68, 65, 69, 70, 68, 70, 69, 69, 68, 66, 65, 66, 67, 70, 68, 70, 65, 65, 66, 68, 68, 70, 69, 65, 65, 65, 65, 70, 69, 65, 68, 70, 66, 69, 69, 65, 65, 69, 68, 70, 69, 69, 70, 69, 68, 68, 69, 65, 68, 65, 66, 67, 66, 66, 67, 67, 66, 69, 65, 66, 70, 66, 67, 68, 65, 69, 70, 67, 66, 69, 66, 67, 69, 69, 65, 66, 67, 65, 67, 70, 70, 66, 65, 69, 65, 69, 70, 67, 69, 65, 69, 67, 70, 69, 66, 65, 70, 67, 67, 67, 66, 70, 68, 69, 68, 69, 68, 70, 65, 70, 69, 70, 67, 68, 68, 70, 68, 70, 67, 68, 70, 66, 65, 67, 65, 68, 70, 67, 69, 66, 72, 73, 74, 72, 71, 72, 74, 75, 74, 71, 73, 75, 75, 70, 70, 75, 72, 73, 75, 70, 73, 74, 74, 70, 75, 74, 70, 74, 73, 73, 75, 75, 72, 71, 72, 72, 71, 71, 70, 72, 75, 74, 73, 74, 75, 75, 71, 75, 73, 75, 72, 71, 70, 70, 72, 70, 74, 73, 73, 72, 74, 73, 73, 74, 73, 72, 75, 71, 71, 70, 72, 70, 72, 72, 70, 73, 74, 74, 75, 73, 71, 72, 74, 74, 73, 70, 70, 73, 70, 70, 75, 70, 75, 73, 73, 75, 75, 73, 71, 74, 71, 70, 75, 73, 75, 73, 72, 70, 73, 70, 72, 74, 74, 72, 75, 74, 72, 73, 70, 71, 74, 74, 74, 75, 70, 72, 73, 74, 75, 75, 74, 74, 74, 75, 71, 75, 71, 75, 74, 75, 70, 70, 71, 75, 70, 71, 74, 74, 75, 74, 70, 71, 70, 73, 70, 75, 73, 70, 73, 73, 73, 73, 70, 71, 72, 73, 71, 71, 73, 72, 70, 73, 71, 72, 71, 71, 73, 73, 71, 70, 75, 75, 75, 75, 74, 71, 70, 70, 72, 74, 72, 72, 70, 70, 74, 74, 73, 71, 70, 73, 71, 73, 70, 72, 71, 75, 73, 75, 70, 71, 72, 73, 75, 71, 75, 73, 71, 72, 70, 73, 71, 73, 75, 73, 71, 73, 75, 71, 71, 75, 74, 72, 74, 74, 75, 75, 73, 75, 73, 75, 73, 70, 70, 71, 72, 72, 70, 73, 72, 71, 75, 71, 75, 75, 71, 73, 75, 73, 71, 70, 73, 73, 73, 73, 73, 73, 72, 70, 72, 71, 74, 73, 74, 70, 71, 75, 74, 70, 70, 72, 74, 72, 74, 74, 74, 74, 73, 71, 74, 70, 72, 72, 75, 73, 75, 75, 72, 73, 72, 73, 75, 71, 72, 74, 75, 72, 74, 72, 74, 72, 75, 73, 75, 73, 74, 70, 72, 71, 71, 73, 74, 70, 72, 70, 74, 74, 75, 70, 74, 73, 73, 74, 71, 74, 72, 74, 75, 74, 74, 75, 70, 71, 72, 75, 75, 75, 70, 74, 71, 72, 70, 75, 75, 75, 72, 75, 72, 71, 74, 75, 74, 71, 70, 73, 72, 71, 75, 73, 71, 73, 72, 73, 70, 73, 74, 70, 74, 71, 70, 73, 72, 75, 72, 72, 72, 73, 71, 71, 70, 75, 70, 70, 72, 71, 72, 73, 73, 70, 72, 70, 78, 78, 76, 76, 75, 79, 78, 76, 77, 75, 80, 78, 76, 78, 75, 78, 77, 80, 78, 79, 75, 80, 77, 75, 75, 75, 79, 77, 75, 77, 77, 78, 79, 76, 79, 75, 77, 76, 78, 76, 80, 76, 78, 78, 78, 78, 77, 78, 77, 78, 75, 80, 80, 79, 80, 79, 75, 76, 79, 78, 78, 79, 78, 80, 78, 76, 75, 79, 77, 79, 77, 75, 79, 76, 80, 80, 79, 75, 75, 77, 75, 76, 78, 77, 76, 79, 76, 80, 76, 80, 77, 76, 79, 77, 79, 75, 77, 75, 76, 76, 75, 78, 79, 77, 75, 77, 79, 80, 80, 76, 76, 78, 75, 77, 76, 77, 79, 76, 80, 78, 80, 77, 78, 79, 76, 78, 80, 75, 76, 77, 75, 76, 76, 78, 76, 78, 77, 76, 79, 78, 76, 75, 80, 79, 77, 76, 75, 77, 78, 80, 79, 75, 79, 76, 79, 77, 80, 80, 80, 78, 76, 80, 78, 80, 76, 80, 79, 76, 80, 80, 77, 76, 77, 80, 77, 80, 75, 77, 80, 78, 78, 80, 77, 79, 75, 77, 76, 78, 75, 80, 80, 76, 80, 75, 75, 76, 79, 79, 75, 79, 80, 78, 77, 75, 78, 80, 76, 78, 77, 80, 75, 78, 79, 79, 75, 79, 80, 76, 75, 79, 80, 78, 80, 78, 79, 75, 76, 78, 79, 76, 75, 79, 75, 80, 78, 76, 75, 75, 79, 78, 79, 78, 78, 79, 77, 78, 76, 80, 80, 80, 75, 76, 76, 76, 78, 75, 80, 78, 77, 77, 78, 76, 80, 77, 78, 80, 78, 75, 79, 79, 80, 80, 80, 76, 77, 75, 80, 78, 79, 76, 76, 78, 76, 75, 80, 79, 78, 79, 78, 79, 75, 77, 77, 75, 78, 76, 77, 78, 76, 78, 84, 81, 84, 83, 85, 84, 83, 81, 84, 83, 82, 85, 84, 81, 81, 80, 85, 84, 85, 84, 81, 82, 81, 82, 80, 83, 80, 81, 83, 82, 85, 85, 84, 83, 82, 84, 84, 82, 84, 83, 83, 84, 81, 83, 80, 83, 85, 83, 83, 83, 83, 85, 81, 84, 83, 83, 81, 80, 81, 83, 82, 84, 80, 81, 84, 84, 80, 85, 84, 83, 80, 83, 83, 84, 84, 84, 81, 85, 85, 85, 84, 80, 82, 81, 83, 85, 81, 82, 83, 82, 83, 82, 85, 82, 83, 83, 83, 83, 85, 83, 83, 85, 82, 83, 81, 85, 83, 85, 82, 81, 85, 85, 85, 82, 82, 84, 80, 83, 85, 82, 82, 85, 82, 81, 80, 85, 85, 82, 84, 82, 85, 84, 81, 85, 81, 82, 83, 85, 81, 85, 83, 83, 82, 80, 81, 80, 85, 81, 84, 82, 83, 82, 82, 83, 82, 80, 80, 83, 81, 81, 81, 81, 85, 82, 83, 84, 80, 84, 83, 80, 82, 82, 84, 80, 84, 83, 81, 84, 83, 82, 83, 84, 85, 81, 83, 85, 85, 84, 85, 83, 85, 83, 84, 80, 82, 83, 85, 85, 85, 81, 88, 89, 85, 86, 86, 85, 90, 87, 85, 88, 88, 87, 90, 90, 90, 86, 90, 90, 90, 88, 85, 88, 87, 90, 87, 90, 88, 88, 90, 90, 85, 86, 86, 85, 89, 89, 85, 87, 85, 85, 88, 88, 85, 88, 85, 88, 90, 90, 88, 89, 87, 89, 89, 90, 86, 89, 86, 89, 87, 89, 90, 85, 89, 86, 86, 90, 86, 86, 87, 90, 88, 90, 89, 88, 87, 88, 88, 89, 86, 88, 87, 89, 86, 87, 86, 85, 87, 89, 85, 90, 90, 90, 89, 89, 89, 86, 87, 86, 89, 89, 90, 87, 86, 87, 86, 90, 90, 89, 89, 88, 88, 85, 85, 89, 88, 87, 85, 87, 89, 86, 87, 88, 87, 89, 86, 85, 86, 89, 86, 90, 90, 90, 87, 87, 85, 87, 86, 87, 86, 86, 86, 90, 87, 85, 85, 89, 87, 88, 86, 87, 88, 86, 86, 88, 90, 89, 86, 87, 85, 89, 85, 90, 89, 87, 88, 90, 86, 87, 87, 90, 90, 89, 89, 85, 88, 90, 87, 85, 90, 86, 90, 87, 87, 89, 90, 87, 88, 87, 89, 86, 90, 86, 88, 88, 86, 85, 89, 90, 85, 88, 93, 90, 95, 94, 91, 94, 94, 94, 90, 95, 91, 95, 95, 91, 93, 91, 95, 95, 91, 94, 90, 93, 93, 95, 93, 94, 92, 92, 90, 94, 92, 95, 94, 90, 91, 93, 93, 91, 93, 92, 93, 94, 90, 94, 90, 91, 93, 90, 91, 95, 93, 95, 90, 90, 95, 95, 95, 91, 90, 90, 93, 93, 94, 94, 92, 90, 90, 90, 90, 95, 93, 93, 95, 94, 95, 90, 93, 95, 94, 92, 93, 91, 94, 93, 95, 94, 95, 92, 93, 92, 93, 91, 92, 92, 91, 91, 90, 95, 95, 93} var subscription []int = make([]int, sub_num) // subscriber 배열(subscriber수 만큼 할당) delay_time := []time.Duration{10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800,900,1000} var matching_time []time.Duration=make([]time.Duration,time_duration) var time_sum time.Duration=0 var sec paillier.SecretKey var pub paillier.PublicKey var v1 string var v2 string //-------------초기설정--------------- //Key값 설정 // pub, sec, _ := paillier.NewKeys() pub.N, _ = new(big.Int).SetString("22203902867524505059996239340306362808852805402888214954381553003002718752808306965243974655390219346481612755387890570991182385566928749760445875916800573782909761881261515602762049819293013811136510263722491329215251675663091154175860620927146517652389408089110716148633480085801107700968384078929774277970426932561081560231010426294975678729992804063220974701278229766883426991469078323539488917623430196595127834729964807458110080684240115196595760172158113810254192728271785178985307185853395355962836026777351498860874006114137632167254987479651229489157192247478252351962954320801263428208801271515398015887801", 10) pub.N2 = new(big.Int).Mul(pub.N, pub.N) sec.N = pub.N sec.N2 = pub.N2 sec.Lambda, _ = new(big.Int).SetString("11101951433762252529998119670153181404426402701444107477190776501501359376404153482621987327695109673240806377693945285495591192783464374880222937958400286891454880940630757801381024909646506905568255131861245664607625837831545577087930310463573258826194704044555358074316740042900553850484192039464887138985064438949068643503538028104882092520753872226183177268421975002892541203962036580811698912148170624870917841537346985483337432253649017635885024033744586145456966646545432316660152135614842196027111652507352356170725302821683928442675667004336523805058723372589095589316741830468728743532156406225121890756346", 10) sec.Totient, _ = new(big.Int).SetString("22203902867524505059996239340306362808852805402888214954381553003002718752808306965243974655390219346481612755387890570991182385566928749760445875916800573782909761881261515602762049819293013811136510263722491329215251675663091154175860620927146517652389408089110716148633480085801107700968384078929774277970128877898137287007076056209764185041507744452366354536843950005785082407924073161623397824296341249741835683074693970966674864507298035271770048067489172290913933293090864633320304271229684392054223305014704712341450605643367856885351334008673047610117446745178191178633483660937457487064312812450243781512692", 10) sec.U, _ = new(big.Int).SetString("11108720355657041776647490476262423100273444107890028034525926371450220865341816894255404548947647952186614924131107824022774134150177636593890919577479093776330856863330832621779073688637362125712752218152358601679371477743308049274665882845748928958872854339383876978533793119837835146167726752137945969833510158025058440018805812646143848801020667307117190186323497007267362203459968413761903710129427082211518450427328378521338965975284389455704146581178957343955351641425309976491396722227064973929033480821132777267246266490713852090985090755453080857556125803448778856380844874040092451545474091429770838805", 10) //fmt.Printf("Pub N: %v\n", pub.N) // Subscription내용 설정 for i :=0; i 0 { // m = m - n //fmt.Printf("%s - %s = %s\n", val1, val2, new(big.Int).Sub(decrypted2, pub.N)) } else { //fmt.Printf("%s - %s = %s\n", val1, val2, decrypted2) } if decrypted1.Cmp(new(big.Int).Div(pub.N, big.NewInt(2)))>0 { } } fmt.Println(j) //fmt.Printf("\nTime taken for subtract and decrypt: %d uS\nRate: %d operations per second\n", elapsed/1e6, 1e12/elapsed) } fmt.Println(i) matching_time[i]=time_sum time_sum=0 } fmt.Println("Scheme3 : Pailler") fmt.Printf("Total Subscriber Number = %d\n",sub_num) fmt.Println(matching_time) }