ʹPHPŹƽ_(sh)F(xin)24c(din)Α
o(j)A(lin) | 2018-01-26 23:30:43 | x:14335
ʹPHPŹƽ_(sh)F(xin)24c(din)Α(w)SAEԺܶZMYSQL̫һ24c(din)Ĕ(sh)(j)惦24datapythonӋ(j)Y(ji)Ȼ惦ڱصtxtļSAEMYSQLӛн4(g)(sh)̖24c(din)
//define your token
define("TOKEN", "ddwm");
define("INPUT_NAME", "1");
define("START_GAME", "2");
define("TIMING_START", "3");
define("TIMING_END", "4");
$wechatObj = new Why24Point();
if ($_GET["echostr"])
$wechatObj--->valid();
else
$wechatObj->responseMsg();
class Why24Point {
public function responseMsg() {
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)) {
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
if($postObj->Event == "subscribe"){
$time = time();
$textTpl = "
%s
";
$msgType = "text";
$contentStr = "H۵Сgӭ24c(din)~\nΑҎ(gu)tʹ+-*/Ąt\(yn)óY(ji)24ɡ\nκΕr(sh)ݔ ˆ\nݔ 鿴(dng)ǰ~\nrՈl(f)ZϢ\nՈݔ(ni)_ʼ҂24c(din)I(y)";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
";
if (!empty($keyword)) {
$msgType = "text";
$contentStr = $this->getData($fromUsername, $keyword);
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
} else {
echo "ݔc(din)|";
}
} else {
echo "";
exit;
}
}
private function getData($fromUsername, $keyword) {
if($keyword == ""){
$this->setStep($fromUsername, constant("START_GAME"));
return "gӭ24c(din)ěQ(zhn)F(xin)Ոݔ(ni)_ʼ҂24c(din)I(y)κΕr(sh)ݔ ˆΣݔ 鿴(dng)ǰ~";
}
if($keyword == ""){
return "Ŀǰǣ".$this->getRank($fromUsername);
}
if ($this->isFirst($fromUsername)) {
return "@һ΅ΑՈݔÑǷQ";
}
if ($this->getStep($fromUsername) == constant("INPUT_NAME")) {
$this->setName($fromUsername, $keyword);
$this->setStep($fromUsername, constant("START_GAME"));
return "" . $keyword . "ͬW(xu)Ոݔ(ni)_ʼ҂24c(din)I(y)κΕr(sh)ݔ ˆΣݔ 鿴(dng)ǰ~";
}
if ($this->getStep($fromUsername) == constant("START_GAME")) {
$numbers = $this->getNumbers();
$this->setStep($fromUsername, constant("TIMING_START"));
return "ΑҎ(gu)tʹ+-*/Ąt\(yn)óY(ji)24\nՈ }" . $this->getNumbers();
}
if ($this->getStep($fromUsername) == constant("TIMING_START")) {
if ($this->calcStr($keyword)) {
//$this->setStep($fromUsername, constant("TIMING_END"));
$this->setGrade($fromUsername, 5);
$this->setStep($fromUsername, constant("START_GAME"));
return "Y(ji)24F(xin)ڵķ?jn)?sh)ǣ".$this->getGrade($fromUsername);
}
return "Y(ji)e(cu)`_Ͳ24";
//$this->setStep($fromUsername, constant("TIMING_END"));
}
return "Ҳϵy(tng)}˂(g)Ǹ";
}
//Ӌ(j)
private function getRank($fromUsername){
$mysql = new SaeMysql();
$grade = $this->getGrade($fromUsername);
$sql = "SELECT COUNT( * ) FROM `24points` WHERE `grade` > ".$grade."";
$mysql->closeDb();
return intval($mysql->getVar($sql))+1;
}
//Ӌ(j)ɿ
private function setGrade($fromUsername, $add){
$mysql = new SaeMysql();
$sql = "SELECT grade FROM `24points` WHERE `userid` = '" . $fromUsername . "'";
$grade = intval($mysql->getVar($sql)) + $add;
$sql = "UPDATE `24points` SET `grade` = '" . $grade . "' WHERE `userid` ='" . $fromUsername . "';";
$mysql->runSql($sql);
$mysql->closeDb();
}
//@óɿ
private function getGrade($fromUsername){
$mysql = new SaeMysql();
$sql = "SELECT grade FROM `24points` WHERE `userid` = '" . $fromUsername . "'";
$mysql->closeDb();
return intval($mysql->getVar($sql));
}
//Ӌ(j)ʽ_e(cu)`
private function calcStr($keyword) {
$keyword = str_replace("","(",$keyword);
$keyword = str_replace("",")",$keyword);
$keyword = str_replace("","/",$keyword);
$keyword = str_replace("","/",$keyword);
$keyword = str_replace("","*",$keyword);
$atr_arr = str_split($keyword);
$new_atr = '';
for ($i = 0; $i < strlen($keyword); $i++) {
$new_atr = $new_atr . $atr_arr[$i];
}
$s = eval("return $new_atr;");
if ($s == 24) {
return true;
}
return false;
}
//Ƿǵһ
private function isFirst($fromUsername) {
$mysql = new SaeMysql();
$sql = "SELECT * FROM `24points` WHERE `userid` = '" . $fromUsername . "'";
$data = $mysql->getData($sql);
if (count($data) == 0) {
$sql = "INSERT INTO `24points` (`userid`, `step`) VALUES ('" . $fromUsername . "', '" . constant("INPUT_NAME") . "');";
$mysql->runSql($sql);
$mysql->closeDb();
return true;
}
return false;
}
//@ȡ(dng)ǰIJE
private function getStep($fromUsername) {
$mysql = new SaeMysql();
$sql = "SELECT step FROM `24points` WHERE `userid` = '" . $fromUsername . "'";
$mysql->closeDb();
return $mysql->getVar($sql);
}
//@ȡSC(j)Ă(g)(sh)ÿո_
private function getNumbers() {
$rand_id = rand(1, 1362);
$mysql = new SaeMysql();
$sql = "SELECT num1 FROM `24data` WHERE `id` = '" . $rand_id . "'";
$num1 = $mysql->getVar($sql);
$sql = "SELECT num2 FROM `24data` WHERE `id` = '" . $rand_id . "'";
$num2 = $mysql->getVar($sql);
$sql = "SELECT num3 FROM `24data` WHERE `id` = '" . $rand_id . "'";
$num3 = $mysql->getVar($sql);
$sql = "SELECT num4 FROM `24data` WHERE `id` = '" . $rand_id . "'";
$num4 = $mysql->getVar($sql);
$mysql->closeDb();
$numbers = $num1 . " " . $num2 . " " . $num3 . " " . $num4;
return $numbers;
}
//O(sh)î(dng)ǰIJ(sh)
private function setStep($fromUsername, $step) {
$mysql = new SaeMysql();
$sql = "UPDATE `24points` SET `step` = '" . $step . "' WHERE `userid` ='" . $fromUsername . "';";
$mysql->runSql($sql);
$mysql->closeDb();
}
//O(sh)ÑǷQ
private function setName($fromUsername, $username) {
$mysql = new SaeMysql();
$sql = "UPDATE `24points` SET `username` = '" . $username . "' WHERE `userid` ='" . $fromUsername . "';";
$mysql->runSql($sql);
$mysql->closeDb();
}
//(yn)C
public function valid() {
$echoStr = $_GET["echostr"];
//valid signature , option
if ($this->checkSignature()) {
echo $echoStr;
exit;
}
}
//z麞
private function checkSignature() {
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
return true;
} else {
return false;
}
}
}
1 1 1 8
1 1 1 11
1 1 1 12
1 1 1 13
1 1 2 6
1 1 2 7
1 1 2 8
1 1 2 9
1 1 2 10
1 1 2 11
1 1 2 12
1 1 2 13
1 1 3 4
1 1 3 5
1 1 3 6
1 1 3 7
1 1 3 8
1 1 3 9
1 1 3 10
1 1 3 11
1 1 3 12
1 1 3 13
1 1 4 4
1 1 4 5
1 1 4 6
1 1 4 7
1 1 4 8
1 1 4 9
1 1 4 10
1 1 4 12
1 1 5 5
1 1 5 6
1 1 5 7
1 1 5 8
1 1 6 6
1 1 6 8
1 1 6 9
1 1 6 12
1 1 7 10
1 1 8 8
1 1 9 13
1 1 10 12
1 1 10 13
1 1 11 11
1 1 11 12
1 1 11 13
1 1 12 12
1 1 12 13
1 1 13 13
1 2 2 4
1 2 2 5
1 2 2 6
1 2 2 7
1 2 2 8
1 2 2 9
1 2 2 10
1 2 2 11
1 2 2 12
1 2 2 13
1 2 3 3
1 2 3 4
1 2 3 5
1 2 3 6
1 2 3 7
1 2 3 8
1 2 3 9
1 2 3 10
1 2 3 11
1 2 3 12
1 2 3 13
1 2 4 4
1 2 4 5
1 2 4 6
1 2 4 7
1 2 4 8
1 2 4 9
1 2 4 10
1 2 4 11
1 2 4 12
1 2 4 13
1 2 5 5
1 2 5 6
1 2 5 7
1 2 5 8
1 2 5 9
1 2 5 10
1 2 5 12
1 2 5 13
1 2 6 6
1 2 6 7
1 2 6 8
1 2 6 9
1 2 6 10
1 2 6 11
1 2 6 12
1 2 6 13
1 2 7 7
1 2 7 8
1 2 7 9
1 2 7 10
1 2 7 11
1 2 7 12
1 2 8 8
1 2 8 9
1 2 8 10
1 2 8 13
1 2 9 11
1 2 9 12
1 2 9 13
1 2 10 11
1 2 10 12
1 2 10 13
1 2 11 11
1 2 11 12
1 2 11 13
1 2 12 12
1 2 12 13
1 2 13 13
1 3 3 3
1 3 3 4
1 3 3 5
1 3 3 6
1 3 3 7
1 3 3 8
1 3 3 9
1 3 3 10
1 3 3 11
1 3 3 12
1 3 4 4
1 3 4 5
1 3 4 6
1 3 4 7
1 3 4 8
1 3 4 9
1 3 4 10
1 3 4 11
1 3 4 12
1 3 4 13
1 3 5 6
1 3 5 7
1 3 5 8
1 3 5 9
1 3 5 10
1 3 5 11
1 3 5 12
1 3 5 13
1 3 6 6
1 3 6 7
1 3 6 8
1 3 6 9
1 3 6 10
1 3 6 11
1 3 6 12
1 3 6 13
1 3 7 7
1 3 7 8
1 3 7 9
1 3 7 10
1 3 7 12
1 3 7 13
1 3 8 8
1 3 8 9
1 3 8 10
1 3 8 11
1 3 8 12
1 3 8 13
1 3 9 9
1 3 9 10
1 3 9 11
1 3 9 12
1 3 9 13
1 3 10 10
1 3 10 11
1 3 10 12
1 3 11 11
1 3 11 12
1 3 12 12
1 3 12 13
1 3 13 13
1 4 4 4
1 4 4 5
1 4 4 6
1 4 4 7
1 4 4 8
1 4 4 9
1 4 4 10
1 4 4 11
1 4 4 12
1 4 5 5
1 4 5 6
1 4 5 7
1 4 5 8
1 4 5 9
1 4 5 10
1 4 5 11
1 4 5 12
1 4 5 13
1 4 6 6
1 4 6 7
1 4 6 8
1 4 6 9
1 4 6 10
1 4 6 11
1 4 6 12
1 4 6 13
1 4 7 7
1 4 7 8
1 4 7 9
1 4 7 11
1 4 7 12
1 4 7 13
1 4 8 8
1 4 8 9
1 4 8 11
1 4 8 12
1 4 8 13
1 4 9 10
1 4 9 11
1 4 9 12
1 4 9 13
1 4 10 10
1 4 10 11
1 4 10 12
1 4 12 12
1 5 5 5
1 5 5 6
1 5 5 9
1 5 5 10
1 5 5 11
1 5 5 12
1 5 5 13
1 5 6 6
1 5 6 7
1 5 6 8
1 5 6 9
1 5 6 10
1 5 6 11
1 5 6 12
1 5 6 13
1 5 7 8
1 5 7 9
1 5 7 10
1 5 7 11
1 5 7 12
1 5 7 13
1 5 8 8
1 5 8 9
1 5 8 10
1 5 8 11
1 5 8 12
1 5 8 13
1 5 9 9
1 5 9 10
1 5 9 11
1 5 9 12
1 5 9 13
1 5 10 10
1 5 10 11
1 5 10 12
1 5 10 13
1 5 11 11
1 5 11 12
1 5 12 12
1 6 6 6
1 6 6 8
1 6 6 9
1 6 6 10
1 6 6 11
1 6 6 12
1 6 6 13
1 6 7 9
1 6 7 10
1 6 7 11
1 6 7 12
1 6 8 8
1 6 8 9
1 6 8 10
1 6 8 11
1 6 8 12
1 6 8 13
1 6 9 9
1 6 9 10
1 6 9 12
1 6 9 13
1 6 10 12
1 6 10 13
1 6 11 12
1 6 11 13
1 6 12 12
1 6 12 13
1 7 7 9
1 7 7 10
1 7 7 11
1 7 7 12
1 7 8 8
1 7 8 9
1 7 8 10
1 7 8 11
1 7 8 12
1 7 9 9
1 7 9 10
1 7 9 11
1 7 9 12
1 7 9 13
1 7 10 12
1 7 10 13
1 7 12 12
1 7 12 13
1 7 13 13
1 8 8 8
1 8 8 9
1 8 8 10
1 8 8 11
1 8 8 12
1 8 9 11
1 8 9 12
1 8 9 13
1 8 10 11
1 8 10 12
1 8 10 13
1 8 11 12
1 8 11 13
1 8 12 12
1 9 9 12
1 9 10 12
1 9 10 13
1 9 11 11
1 9 11 12
1 9 11 13
1 9 12 12
1 10 10 12
1 10 11 12
1 10 12 12
1 10 12 13
1 11 11 12
1 11 11 13
1 11 12 12
1 11 12 13
1 11 13 13
1 12 12 12
1 12 12 13
1 12 13 13
2 2 2 3
2 2 2 4
2 2 2 5
2 2 2 7
2 2 2 8
2 2 2 9
2 2 2 10
2 2 2 11
2 2 2 12
2 2 2 13
2 2 3 3
2 2 3 4
2 2 3 5
2 2 3 6
2 2 3 7
2 2 3 8
2 2 3 9
2 2 3 10
2 2 3 11
2 2 3 12
2 2 3 13
2 2 4 4
2 2 4 5
2 2 4 6
2 2 4 7
2 2 4 8
2 2 4 9
2 2 4 10
2 2 4 11
2 2 4 12
2 2 4 13
2 2 5 5
2 2 5 6
2 2 5 7
2 2 5 8
2 2 5 9
2 2 5 10
2 2 5 11
2 2 5 12
2 2 6 6
2 2 6 7
2 2 6 8
2 2 6 9
2 2 6 10
2 2 6 11
2 2 6 12
2 2 6 13
2 2 7 7
2 2 7 8
2 2 7 10
2 2 7 12
2 2 7 13
2 2 8 8
2 2 8 9
2 2 8 10
2 2 8 12
2 2 9 10
2 2 9 11
2 2 9 12
2 2 10 10
2 2 10 11
2 2 10 13
2 2 11 11
2 2 11 12
2 2 11 13
2 2 12 12
2 2 12 13
2 2 13 13
2 3 3 3
2 3 3 5
2 3 3 6
2 3 3 7
2 3 3 8
2 3 3 9
2 3 3 10
2 3 3 11
2 3 3 12
2 3 3 13
2 3 4 4
2 3 4 5
2 3 4 6
2 3 4 7
2 3 4 8
2 3 4 9
2 3 4 10
2 3 4 11
2 3 4 12
2 3 4 13
2 3 5 5
2 3 5 6
2 3 5 7
2 3 5 8
2 3 5 9
2 3 5 10
2 3 5 11
2 3 5 12
2 3 5 13
2 3 6 6
2 3 6 7
2 3 6 8
2 3 6 9
2 3 6 10
2 3 6 11
2 3 6 12
2 3 6 13
2 3 7 7
2 3 7 8
2 3 7 9
2 3 7 10
2 3 7 11
2 3 7 12
2 3 7 13
2 3 8 8
2 3 8 9
2 3 8 10
2 3 8 11
2 3 8 12
2 3 8 13
2 3 9 9
2 3 9 10
2 3 9 12
2 3 9 13
2 3 10 10
2 3 10 12
2 3 10 13
2 3 11 11
2 3 11 12
2 3 11 13
2 3 12 12
2 3 12 13
2 3 13 13
2 4 4 4
2 4 4 5
2 4 4 6
2 4 4 7
2 4 4 8
2 4 4 9
2 4 4 10
2 4 4 11
2 4 4 12
2 4 4 13
2 4 5 5
2 4 5 6
2 4 5 7
2 4 5 8
2 4 5 9
2 4 5 10
2 4 5 11
2 4 5 12
2 4 5 13
2 4 6 6
2 4 6 7
2 4 6 8
2 4 6 9
2 4 6 10
2 4 6 11
2 4 6 12
2 4 6 13
2 4 7 7
2 4 7 8
2 4 7 9
2 4 7 10
2 4 7 11
2 4 7 12
2 4 8 8
2 4 8 9
2 4 8 10
2 4 8 11
2 4 8 12
2 4 8 13
2 4 9 9
2 4 9 10
2 4 9 12
2 4 9 13
2 4 10 10
2 4 10 11
2 4 10 12
2 4 10 13
2 4 11 11
2 4 11 12
2 4 12 12
2 4 13 13
2 5 5 7
2 5 5 8
2 5 5 9
2 5 5 10
2 5 5 11
2 5 5 12
2 5 5 13
2 5 6 6
2 5 6 7
2 5 6 8
2 5 6 9
2 5 6 10
2 5 6 11
2 5 6 12
2 5 6 13
2 5 7 7
2 5 7 8
2 5 7 9
2 5 7 10
2 5 7 11
2 5 7 13
2 5 8 8
2 5 8 9
2 5 8 10
2 5 8 11
2 5 8 12
2 5 8 13
2 5 9 10
2 5 9 11
2 5 9 12
2 5 10 10
2 5 10 11
2 5 10 12
2 5 10 13
2 5 11 12
2 5 12 12
2 5 12 13
2 6 6 6
2 6 6 7
2 6 6 8
2 6 6 9
2 6 6 10
2 6 6 11
2 6 6 12
2 6 6 13
2 6 7 8
2 6 7 9
2 6 7 10
2 6 7 11
2 6 7 12
2 6 7 13
2 6 8 8
2 6 8 9
2 6 8 10
2 6 8 11
2 6 8 12
2 6 8 13
2 6 9 9
2 6 9 10
2 6 9 11
2 6 9 12
2 6 10 10
2 6 10 11
2 6 10 12
2 6 10 13
2 6 11 12
2 6 11 13
2 6 12 12
2 6 12 13
2 7 7 8
2 7 7 10
2 7 7 11
2 7 7 12
2 7 7 13
2 7 8 8
2 7 8 9
2 7 8 11
2 7 8 12
2 7 8 13
2 7 9 10
2 7 9 11
2 7 9 13
2 7 10 10
2 7 10 11
2 7 10 12
2 7 11 12
2 7 12 12
2 7 12 13
2 8 8 8
2 8 8 9
2 8 8 10
2 8 8 11
2 8 8 12
2 8 8 13
2 8 9 9
2 8 9 10
2 8 9 11
2 8 9 12
2 8 9 13
2 8 10 10
2 8 10 11
2 8 10 12
2 8 10 13
2 8 11 11
2 8 11 12
2 8 12 12
2 8 12 13
2 8 13 13
2 9 9 11
2 9 9 12
2 9 9 13
2 9 10 10
2 9 10 11
2 9 10 12
2 9 10 13
2 9 11 11
2 9 11 13
2 9 12 13
2 9 13 13
2 10 10 11
2 10 10 12
2 10 10 13
2 10 11 11
2 10 11 12
2 10 11 13
2 10 12 13
2 11 11 11
2 11 11 12
2 11 11 13
2 11 12 12
2 11 12 13
2 11 13 13
2 12 12 12
2 12 12 13
2 12 13 13
2 13 13 13
3 3 3 3
3 3 3 4
3 3 3 5
3 3 3 6
3 3 3 7
3 3 3 8
3 3 3 9
3 3 3 10
3 3 3 11
3 3 3 12
3 3 4 4
3 3 4 5
3 3 4 6
3 3 4 7
3 3 4 8
3 3 4 9
3 3 4 11
3 3 4 12
3 3 4 13
3 3 5 5
3 3 5 6
3 3 5 7
3 3 5 9
3 3 5 10
3 3 5 12
3 3 5 13
3 3 6 6
3 3 6 7
3 3 6 8
3 3 6 9
3 3 6 10
3 3 6 11
3 3 6 12
3 3 6 13
3 3 7 7
3 3 7 8
3 3 7 9
3 3 7 11
3 3 7 12
3 3 7 13
3 3 8 8
3 3 8 9
3 3 8 10
3 3 8 12
3 3 8 13
3 3 9 9
3 3 9 10
3 3 9 11
3 3 9 12
3 3 9 13
3 3 10 13
3 3 11 12
3 3 11 13
3 3 12 12
3 3 12 13
3 4 4 4
3 4 4 5
3 4 4 6
3 4 4 7
3 4 4 8
3 4 4 9
3 4 4 10
3 4 4 11
3 4 4 12
3 4 4 13
3 4 5 5
3 4 5 6
3 4 5 7
3 4 5 8
3 4 5 9
3 4 5 10
3 4 5 11
3 4 5 12
3 4 5 13
3 4 6 6
3 4 6 8
3 4 6 9
3 4 6 10
3 4 6 11
3 4 6 12
3 4 6 13
3 4 7 7
3 4 7 8
3 4 7 9
3 4 7 10
3 4 7 11
3 4 7 12
3 4 8 9
3 4 8 10
3 4 8 11
3 4 8 12
3 4 8 13
3 4 9 9
3 4 9 11
3 4 9 12
3 4 9 13
3 4 10 10
3 4 10 12
3 4 10 13
3 4 11 12
3 4 11 13
3 4 12 12
3 4 12 13
3 5 5 6
3 5 5 7
3 5 5 8
3 5 5 9
3 5 5 11
3 5 5 12
3 5 6 6
3 5 6 7
3 5 6 8
3 5 6 9
3 5 6 10
3 5 6 11
3 5 6 12
3 5 6 13
3 5 7 8
3 5 7 9
3 5 7 10
3 5 7 11
3 5 7 12
3 5 7 13
3 5 8 8
3 5 8 9
3 5 8 11
3 5 8 12
3 5 8 13
3 5 9 9
3 5 9 10
3 5 9 12
3 5 9 13
3 5 10 10
3 5 10 11
3 5 10 12
3 5 10 13
3 5 11 11
3 5 11 12
3 5 12 12
3 5 12 13
3 5 13 13
3 6 6 6
3 6 6 7
3 6 6 8
3 6 6 9
3 6 6 10
3 6 6 11
3 6 6 12
3 6 6 13
3 6 7 7
3 6 7 8
3 6 7 9
3 6 7 10
3 6 7 12
3 6 7 13
3 6 8 8
3 6 8 9
3 6 8 10
3 6 8 12
3 6 8 13
3 6 9 9
3 6 9 10
3 6 9 11
3 6 9 12
3 6 9 13
3 6 10 10
3 6 10 11
3 6 10 12
3 6 11 11
3 6 11 12
3 6 11 13
3 6 12 12
3 6 12 13
3 6 13 13
3 7 7 7
3 7 7 8
3 7 7 9
3 7 7 10
3 7 7 12
3 7 7 13
3 7 8 8
3 7 8 9
3 7 8 11
3 7 8 12
3 7 8 13
3 7 9 9
3 7 9 10
3 7 9 11
3 7 9 12
3 7 9 13
3 7 10 10
3 7 10 11
3 7 10 13
3 7 11 11
3 7 11 12
3 7 12 12
3 7 12 13
3 7 13 13
3 8 8 8
3 8 8 9
3 8 8 10
3 8 8 11
3 8 8 12
3 8 9 9
3 8 9 10
3 8 9 11
3 8 9 12
3 8 9 13
3 8 10 10
3 8 10 11
3 8 10 12
3 8 11 11
3 8 11 12
3 8 12 12
3 8 12 13
3 8 13 13
3 9 9 9
3 9 9 10
3 9 9 11
3 9 9 12
3 9 9 13
3 9 10 10
3 9 10 11
3 9 10 12
3 9 10 13
3 9 11 11
3 9 11 12
3 9 11 13
3 9 12 12
3 9 12 13
3 9 13 13
3 10 10 12
3 10 11 12
3 10 11 13
3 11 11 12
3 11 12 12
3 12 12 12
3 12 12 13
3 12 13 13
4 4 4 4
4 4 4 5
4 4 4 6
4 4 4 7
4 4 4 8
4 4 4 9
4 4 4 10
4 4 4 11
4 4 4 12
4 4 5 5
4 4 5 6
4 4 5 7
4 4 5 8
4 4 5 10
4 4 5 11
4 4 5 12
4 4 5 13
4 4 6 8
4 4 6 9
4 4 6 10
4 4 6 11
4 4 6 12
4 4 6 13
4 4 7 7
4 4 7 8
4 4 7 9
4 4 7 10
4 4 7 12
4 4 7 13
4 4 8 8
4 4 8 9
4 4 8 10
4 4 8 11
4 4 8 12
4 4 8 13
4 4 9 11
4 4 9 12
4 4 10 10
4 4 10 12
4 4 10 13
4 4 11 12
4 4 11 13
4 4 12 12
4 4 12 13
4 5 5 5
4 5 5 6
4 5 5 7
4 5 5 8
4 5 5 9
4 5 5 10
4 5 6 6
4 5 6 7
4 5 6 8
4 5 6 9
4 5 6 10
4 5 6 11
4 5 6 12
4 5 6 13
4 5 7 7
4 5 7 8
4 5 7 9
4 5 7 10
4 5 7 11
4 5 7 12
4 5 7 13
4 5 8 8
4 5 8 9
4 5 8 10
4 5 8 11
4 5 8 12
4 5 8 13
4 5 9 9
4 5 9 10
4 5 9 12
4 5 9 13
4 5 10 10
4 5 10 11
4 5 10 12
4 5 10 13
4 5 11 11
4 5 11 12
4 5 11 13
4 5 12 12
4 5 12 13
4 5 13 13
4 6 6 6
4 6 6 7
4 6 6 8
4 6 6 9
4 6 6 10
4 6 6 12
4 6 7 7
4 6 7 8
4 6 7 9
4 6 7 10
4 6 7 12
4 6 8 8
4 6 8 9
4 6 8 10
4 6 8 12
4 6 8 13
4 6 9 9
4 6 9 10
4 6 9 12
4 6 9 13
4 6 10 10
4 6 10 11
4 6 10 12
4 6 11 11
4 6 11 12
4 6 12 12
4 6 12 13
4 6 13 13
4 7 7 7
4 7 7 8
4 7 7 11
4 7 8 8
4 7 8 9
4 7 8 10
4 7 8 11
4 7 8 12
4 7 8 13
4 7 9 9
4 7 9 10
4 7 9 11
4 7 9 12
4 7 9 13
4 7 10 10
4 7 10 11
4 7 10 12
4 7 11 11
4 7 11 12
4 7 11 13
4 7 12 12
4 7 12 13
4 7 13 13
4 8 8 8
4 8 8 9
4 8 8 10
4 8 8 11
4 8 8 12
4 8 8 13
4 8 9 9
4 8 9 10
4 8 9 11
4 8 9 12
4 8 9 13
4 8 10 10
4 8 10 11
4 8 10 12
4 8 11 11
4 8 11 12
4 8 11 13
4 8 12 12
4 8 12 13
4 8 13 13
4 9 9 10
4 9 9 12
4 9 10 11
4 9 10 12
4 9 10 13
4 9 11 11
4 9 11 12
4 9 12 12
4 10 10 11
4 10 10 12
4 10 11 12
4 10 11 13
4 10 12 12
4 10 12 13
4 11 12 13
4 12 12 12
5 5 5 5
5 5 5 6
5 5 5 9
5 5 5 12
5 5 6 6
5 5 6 7
5 5 6 8
5 5 6 11
5 5 7 7
5 5 7 8
5 5 7 10
5 5 7 11
5 5 8 8
5 5 8 9
5 5 8 10
5 5 8 11
5 5 8 12
5 5 8 13
5 5 9 9
5 5 9 10
5 5 9 11
5 5 10 10
5 5 10 11
5 5 10 13
5 5 11 11
5 5 11 12
5 5 11 13
5 5 12 12
5 5 12 13
5 5 13 13
5 6 6 6
5 6 6 7
5 6 6 8
5 6 6 9
5 6 6 10
5 6 6 12
5 6 7 7
5 6 7 8
5 6 7 9
5 6 7 12
5 6 7 13
5 6 8 8
5 6 8 9
5 6 8 10
5 6 8 12
5 6 8 13
5 6 9 9
5 6 9 10
5 6 9 11
5 6 9 12
5 6 9 13
5 6 10 10
5 6 10 11
5 6 10 12
5 6 10 13
5 6 11 11
5 6 11 12
5 6 11 13
5 6 12 12
5 6 12 13
5 6 13 13
5 7 7 9
5 7 7 10
5 7 7 11
5 7 8 8
5 7 8 9
5 7 8 10
5 7 9 10
5 7 9 11
5 7 9 12
5 7 9 13
5 7 10 10
5 7 10 11
5 7 10 12
5 7 10 13
5 7 11 11
5 7 11 13
5 7 12 12
5 7 13 13
5 8 8 8
5 8 8 9
5 8 8 10
5 8 8 13
5 8 9 11
5 8 9 12
5 8 9 13
5 8 10 11
5 8 10 12
5 8 11 12
5 8 11 13
5 8 12 12
5 9 9 11
5 9 9 12
5 9 10 10
5 9 10 11
5 9 10 13
5 9 11 13
5 9 12 12
5 9 12 13
5 10 10 11
5 10 10 12
5 10 10 13
5 10 11 11
5 10 12 13
5 10 13 13
5 11 12 12
6 6 6 6
6 6 6 8
6 6 6 9
6 6 6 10
6 6 6 11
6 6 6 12
6 6 7 9
6 6 7 10
6 6 7 11
6 6 7 12
6 6 8 8
6 6 8 9
6 6 8 10
6 6 8 11
6 6 8 12
6 6 8 13
6 6 9 10
6 6 9 11
6 6 9 12
6 6 9 13
6 6 10 12
6 6 10 13
6 6 11 12
6 6 11 13
6 6 12 12
6 6 12 13
6 7 7 10
6 7 7 11
6 7 8 9
6 7 8 10
6 7 8 11
6 7 8 12
6 7 9 9
6 7 9 12
6 7 10 10
6 7 10 12
6 7 10 13
6 7 11 11
6 7 11 12
6 7 11 13
6 7 12 12
6 7 12 13
6 8 8 8
6 8 8 9
6 8 8 10
6 8 8 11
6 8 8 12
6 8 9 9
6 8 9 10
6 8 9 11
6 8 9 12
6 8 9 13
6 8 10 11
6 8 10 12
6 8 10 13
6 8 11 11
6 8 11 12
6 8 11 13
6 8 12 12
6 8 13 13
6 9 9 10
6 9 9 11
6 9 9 12
6 9 10 11
6 9 10 12
6 9 11 12
6 9 11 13
6 9 12 12
6 9 12 13
6 10 10 10
6 10 10 13
6 10 11 12
6 10 12 12
6 10 12 13
6 11 11 12
6 11 12 12
6 11 12 13
6 12 12 12
6 12 12 13
6 12 13 13
7 7 7 12
7 7 8 11
7 7 9 10
7 7 10 13
7 7 11 12
7 7 11 13
7 7 12 12
7 7 12 13
7 8 8 9
7 8 8 10
7 8 8 11
7 8 8 12
7 8 8 13
7 8 9 10
7 8 9 12
7 8 9 13
7 8 10 10
7 8 10 11
7 8 10 13
7 8 11 12
7 8 11 13
7 8 12 12
7 8 12 13
7 9 9 13
7 9 10 11
7 9 10 12
7 9 11 11
7 9 11 12
7 9 12 12
7 9 13 13
7 10 10 11
7 10 10 12
7 10 11 13
7 10 12 12
7 10 12 13
7 12 12 13
8 8 8 10
8 8 8 11
8 8 8 12
8 8 8 13
8 8 9 11
8 8 9 12
8 8 9 13
8 8 10 12
8 8 10 13
8 8 11 12
8 8 11 13
8 8 12 12
8 8 12 13
8 9 9 12
8 9 10 12
8 9 10 13
8 9 11 11
8 9 11 12
8 9 11 13
8 9 12 12
8 9 12 13
8 10 10 12
8 10 11 11
8 10 12 12
8 10 12 13
8 10 13 13
8 11 12 12
9 9 9 12
9 9 10 13
9 9 11 12
9 9 11 13
9 9 12 12
9 9 12 13
9 10 10 13
9 10 11 12
9 10 11 13
9 10 12 12
9 10 12 13
9 11 11 11
9 11 12 12
9 11 12 13
9 11 13 13
9 12 12 12
10 10 10 12
10 10 10 13
10 10 11 12
10 10 11 13
10 10 12 12
10 10 12 13
10 11 11 12
10 11 11 13
10 11 12 12
10 11 12 13
10 12 12 12
10 12 12 13
10 12 13 13
10 13 13 13
11 11 11 12
11 11 11 13
11 11 12 12
11 11 12 13
11 12 12 12
11 12 12 13
11 12 13 13
11 13 13 13
12 12 12 12
12 12 12 13
12 12 13 13
12 13 13 13