﻿require_once("unisharp\MyList.php");

class Utils {

    static $nullObj = NULL; 
    
    static function asObjectOrNull($obj, $class) {
        if($obj === NULL) return NULL;
        if($obj instanceof $class) return $obj;
        return NULL;
    }
    static function asObjectString($obj) {
        if($obj === NULL) return NULL;
        if(is_string($obj)) return $obj;
        return NULL;
    }
    static function asObjectInt($obj) {
        if($obj === NULL) return NULL;
        if(is_int($obj)) return $obj;
        return NULL;
    }
    static function asObjectFloat($obj) {
        if($obj === NULL) return NULL;
        if(is_float($obj)) return $obj;
        return NULL;
    }
    static function asObjectBool($obj) {
        if($obj === NULL) return NULL;
        if(is_bool($obj)) return $obj;
        return NULL;
    }

    static function CompareUnsigned($n1, $n2) {
        $res = 0;
        if($n1 < $n2) $res = -1;
        else if($n1 > $n2) $res = 1;
        if($n1 < 0 && $n2 > 0) $res = -$res;
        if($n1 > 0 && $n2 < 0) $res = -$res;
        return $res;
    }
    static function TryParseInt($str, &$res) {
		if($str === NULL) return FALSE;
        while(strlen($str) > 1 && $str[0] == '0') $str = substr($str, 1);
        $res = (int)$str;
        if((string)$res == $str) return TRUE;
        return FALSE;
    }
    static function TryParseFloat($str, &$res) {
        $res = (float)$str;
        if($res != 0) return TRUE;
        if($str == strval($res)) return TRUE;
        return FALSE;
    }
    static function ParseLong($str) {
        if(strlen($str) < 9) return (int)$str;
        return (float)$str;
    }
    static function TryParseLong($str, &$res) {
		if($str === NULL) return FALSE;
        while(strlen($str) > 1 && $str[0] == '0') $str = substr($str, 1);
        $res = Utils::ParseLong($str);
        if((string)$res == $str) return TRUE;
        return FALSE;
    }

    static function CreateDateTime($y, $mon, $d, $h = 0, $m = 0, $s = 0, $ms = 0) {
        $dt = new DateTime();
        $dt->setDate($y, $mon, $d);
        $dt->setTime($h, $m, $s, $ms * 1000);
        return $dt;
    }
    static function GetDate($dt) {
        $res = new DateTime();
        $res->setDate((int)$dt->format('Y'), (int)$dt->format('n'), (int)$dt->format('j'));
        return $res;
    }
    static function NowDateTime() {
        return new DateTime('now');  // неправильно определяет текущую зону!!!
    }
    static function DaysInMonth($year, $mon) {
        $dt = new DateTime();
        $dt->setDate($year, $mon, 1);
        return (int)$dt->format('t');
    }

    static function MathTruncate($val) {
        if ($val < 0) 
            return ceil($val);
        else 
            return floor($val);
    }

    static function IndexOfString($str, $sub, $ind = 0) {
        $res = mb_strpos($str, $sub, $ind);
        if(is_bool($res)) return -1;
        return $res;
    }
    static function LastIndexOfString($str, $sub, $pos = -1) {
        $ret = Utils::IndexOfString($str, $sub);
        if($ret < 0) return -1;
        if($pos >= 0 && $ret > $pos) return -1;
        while(true) {
            $next = Utils::IndexOfString($str, $sub, $ret + 1);
            if($next < 0) break;
            if($pos >= 0 && $next > $pos) break;
            $ret = $next;
        }
        return $ret;
    }

    static function JoinStrings($sep, $li) {
        if(is_array($li)) return implode($sep, $li);
        return implode($sep, $li->items);
    }
    
    static function CompareStrings($str1, $str2, $case) {
        if($case) {
            $str1 = mb_convert_case($str1, MB_CASE_UPPER);
            $str2 = mb_convert_case($str2, MB_CASE_UPPER);
        }
        $len1 = mb_strlen($str1);
        $len2 = mb_strlen($str2);
        for($i = 0; $i < $len1 && $i < $len2; $i++) {
            $cod1 = Utils::CharToCode(mb_substr($str1, $i, 1));
            $cod2 = Utils::CharToCode(mb_substr($str2, $i, 1));
            if($cod1 < $cod2) return -1;
            if($cod1 > $cod2) return 1;
        }
        if($i < $len2) return -1;
        if($i < $len1) return 1;
        return 0;
    }

    static function StartsWithString($str, $sub, $case = FALSE) {
        if(mb_strlen($str) < mb_strlen($sub)) return FALSE;
        $start = mb_substr($str, 0, mb_strlen($sub));
		return Utils::CompareStrings($start, $sub, $case) == 0;
    }
    static function EndsWithString($str, $sub, $case = FALSE) {
        if(mb_strlen($str) < mb_strlen($sub)) return FALSE;
		if(mb_strlen($str) > mb_strlen($sub))
		    $end = mb_substr($str, mb_strlen($str) - mb_strlen($sub), strlen($sub));
		else 
			$end = $str;
		return Utils::CompareStrings($end, $sub, $case) == 0;
    }

    static function SplitString($s, $sep, $ignoreEmpty = FALSE) {
        if($s === null || $sep === null) return new MyList();
        $res = [];
        $i0 = 0; 
        $i = 0;
        for(; $i < mb_strlen($s); $i++) {
            $ch = mb_substr($s, $i, 1);
            if($sep instanceof MyList) {
                if($sep->Contains($ch)) continue;
            }
            else if(Utils::IndexOfString($sep, $ch) < 0) continue;
            if($i > $i0) {
                array_push($res, mb_substr($s, $i0, $i - $i0));
            }
            else
                if(!$ignoreEmpty && $i > 0) array_push($res, "");
            $i0 = $i + 1;
        }
        if($i > $i0) {
            array_push($res, mb_substr($s, $i0, $i - $i0));
        }
        return MyList::WrapArray($res);
    }

    static $chars;
    static function IsWhitespace($ch) {
        $info = ord(Utils::$chars[Utils::CharToCode($ch)]);
        return ($info & 7) == 1;
    }
    static function IsUpperCase($ch) {
        $info = ord(Utils::$chars[Utils::CharToCode($ch)]);
        return ($info & 7) == 7;
    }
    static function IsLowerCase($ch) {
        $info = ord(Utils::$chars[Utils::CharToCode($ch)]);
        return ($info & 7) == 3;
    }
    static function IsLetter($ch) {
        $info = ord(Utils::$chars[Utils::CharToCode($ch)]);
        return ($info & 3) == 3;
    }
    static function IsDigit($ch) {
        $info = ord(Utils::$chars[Utils::CharToCode($ch)]);
        return ($info & 7) == 2;
    }
    static function IsLetterorDigit($ch) {
        $info = ord(Utils::$chars[Utils::CharToCode($ch)]);
        return ($info & 3) == 3 || ($info & 3) == 2;
    }

   
    static function CharToCode($char)
    {
        $k = mb_convert_encoding($char, 'UCS-2LE', 'UTF-8');
        $k1 = ord(substr($k, 0, 1));
        $k2 = ord(substr($k, 1, 1));
        return $k2 * 256 + $k1;
    }
    static function CodeToChar($unicode) 
    {
        return mb_convert_encoding('&#' . intval($unicode) . ';', 'UTF-8', 'HTML-ENTITIES');
    }

    static function EncodeString($code, $str) {
        if($code === "UTF-8") {
            $res = array_values(unpack('C*', $str)); return MyList::WrapArray($res);
		}
        throw new Exception("Encoding ".$code." not supported");
    }
    static function DecodeString($code, $buf, $pos = 0, $len = -1) {
        if($len < 0) $len = $buf->count - $pos;
        if($len > 3 && $buf->items[0] == 0xEF && $buf->items[1] == 0xBB && $buf->items[2] == 0xBF) {
            $pos += 3; $len -= 3;
        }
        $arr = $buf->GetSubarray($pos, $len);
        if($code === "UTF-8")
            return pack('C*', ...$arr);
		else 
            throw new Exception("Encoding ".$code." not supported");
    }
    static function GetEncodingPreamble($code) {
        if($code === "UTF-8") 
            $res = MyList::WrapArrayConst([0xEF, 0xBB, 0xBF]);
        else 
            $res = new MyList();
        return $res;
    }

    static function EncodeBase64($arr) {
        $buf = pack('C*', ...$arr->items);
        return base64_encode($buf);
    }
    
    static function DecodeBase64($str) {
        $a = base64_decode($str);
        $b = array_fill(0, strlen($a), 0);
        $i = 0;
        foreach(str_split($a) as $c)
            $b[$i++] = ord($c);
        return MyList::WrapArray($b);
    }

    static function ObjectToBytes($obj, $typ) {
        $res = NULL;
        switch($typ) {
            case 'ushort': $res = array_values(unpack("C*", pack("v", $obj))); break;
            case 'short': $res = array_values(unpack("C*", pack("v", $obj))); break;
            case 'uint': $res =  array_values(unpack("C*", pack("V", $obj))); break;
            case 'int': $res =  array_values(unpack("C*", pack("V", $obj))); break;
            case 'ulong': $res =  array_values(unpack("C*", pack("P", $obj))); break;
            case 'long': $res =  array_values(unpack("C*", pack("P", $obj))); break;
            case 'float': $res =  array_values(unpack("C*", pack("g", $obj))); break;
            case 'double': $res =  array_values(unpack("C*", pack("e", $obj))); break;
            case 'char': $cod = Utils::CharToCode($obj); 
            $res =  array_values(unpack("C*", pack("v", $cod))); break;
            case 'byte': case 'sbyte':
                $res = []; array_push($res, $obj); break;
            case 'bool':
                $res = []; array_push($res, $obj ? 1 : 0); break;
        }
        if($res === NULL)
            throw new Exception("Type ".$typ." not supported");
        return MyList::WrapArray($res);
    }
    
    static function BytesToObject($list, $pos, $typ, $si) {
        $buf = &$list->items;
        if($typ === 'bool')
            return $buf[$pos] === 1;
        if($typ === 'byte' || $typ === 'sbyte') 
            return $buf[$pos];
        $arr = [];
        for($i = 0; $i < $si; $i++) array_push($arr, $buf[$pos + $i]);
        $str = pack("C*", ...$arr);
        switch($typ) {
            case 'short': return unpack("v", $str)[1];
            case 'ushort': return unpack("v", $str)[1];
            case 'int': return unpack("V", $str)[1];
            case 'uint': return unpack("V", $str)[1];
            case 'long': return unpack("P", $str)[1];
            case 'ulong': return unpack("P", $str)[1];
            case 'float': return unpack("g", $str)[1];
            case 'double': return unpack("e", $str)[1];
            case 'char': $cod = unpack("v", $str)[1];
                return Utils::CodeToChar($cod);
        }
        throw new Exception("Type ".$typ." not supported");
    }

    static function GetLengthStream(&$s) {
        $p = ftell($s);
        fseek($s, 0, SEEK_END);
        $len = ftell($s);
        fseek($s, $p, SEEK_SET);
        return $len;
    }
    static function ReadByteStream(&$s) {
        $buf = fread($s, 1);
        if(strlen($buf) != 1) return -1;
        return unpack("C*", $buf)[1];
    }
    static function ReadStream(&$s, $buf, $pos, $len) {
        $rd = fread($s, $len);
        $arr = unpack("C*", $rd);
        $alen = count($arr);
        for($i = 0; $i < $alen; $i++) $buf->items[$i] = $arr[$i + 1];
        //return strlen($rd);
        return $alen;
    }
    static function WriteByteStream(&$s, $b) {
        $buf = new MyList(); $buf->Add($b);
        Utils::WriteStream($s, $buf, 0, 1);
    }
    static function WriteStream(&$s, $list, $pos, $len) {
        $buf = $list->GetSubarray($pos, $len);
        //var_dump($buf);
        $str = pack("C*", ...$buf);
        //var_dump($str);
        fwrite($s, $str, strlen($str));
    }
    static function GetArrayStream(&$s) {
        $len = Utils::GetLengthStream($s);
        if($len <= 0) return [];
        $res = MyList::CreateArray($len);
        $p = ftell($s);
        fseek($s, 0, SEEK_SET);
        Utils::ReadStream($s, $res, 0, $len);
        fseek($s, $p, SEEK_SET);
        return $res;
    }

    static function &CreateMemoryStream($buf) {
        $res = fopen("php://memory", "w+b");
        Utils::WriteStream($res, $buf, 0, $buf->count);
        fseek($res, 0, SEEK_SET);
        return $res;
    }

    static function DeleteDirectory($dir) {
        if (!file_exists($dir)) return true;
        if (!is_dir($dir)) return unlink($dir);
        
        foreach (scandir($dir) as $item) {
            if ($item === '.' || $item === '..') continue;
            if (!DeleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) return false;
        }
        return rmdir($dir);
    }

    static function ReadAllBytes($fname) {
        $s = fopen($fname, "rb");
        $res = Utils::GetArrayStream($s);
        fclose($s);
        return $res;
    }
    static function WriteAllBytes($fname, $buf) {
        $s = fopen($fname, "w+b");
        Utils::WriteStream($s, $buf, 0, $buf->count);
        fclose($s);
    }

    static function GetFileSize($fname) {
        $s = fopen($fname, "rb");
        $len = Utils::GetLengthStream($s);
        fclose($s);
        return $len;
    }

    static function GzipWrapper($s, $mode) {
        if($mode != 'r') throw new Exception("Supports only r-mode (decompress)");
        $zip = Utils::GetArrayStream($s);
        $unzip = Utils::GzipDecode($zip);
        return Utils::CreateMemoryStream($unzip);
    }

    static function GzipDecode($list) {
        $zip = &$list->items;
        $data = pack("C*", ...$zip);
        $len = strlen($data);
        if ($len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) {
            //return null;  // Not GZIP format (See RFC 1952)
			return $list;
        }
        $method = ord(substr($data,2,1));  // Compression method
        $flags  = ord(substr($data,3,1));  // Flags
        if ($flags & 31 != $flags) {
            // Reserved bits are set -- NOT ALLOWED by RFC 1952
            return null;
        }
        // NOTE: $mtime may be negative (PHP integer limitations)
        $mtime = unpack("V", substr($data,4,4));
        $mtime = $mtime[1];
        $xfl   = substr($data,8,1);
        $os    = substr($data,8,1);
        $headerlen = 10;
        $extralen  = 0;
        $extra     = "";
        if ($flags & 4) {
            // 2-byte length prefixed EXTRA data in header
            if ($len - $headerlen - 2 < 8) {
                return false;    // Invalid format
            }
            $extralen = unpack("v",substr($data,8,2));
            $extralen = $extralen[1];
            if ($len - $headerlen - 2 - $extralen < 8) {
                return false;    // Invalid format
            }
            $extra = substr($data,10,$extralen);
            $headerlen += 2 + $extralen;
        }
        
        $filenamelen = 0;
        $filename = "";
        if ($flags & 8) {
            // C-style string file NAME data in header
            if ($len - $headerlen - 1 < 8) {
                return false;    // Invalid format
            }
            $filenamelen = strpos(substr($data,8+$extralen),chr(0));
            if ($filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) {
                return false;    // Invalid format
            }
            $filename = substr($data,$headerlen,$filenamelen);
            $headerlen += $filenamelen + 1;
        }
        
        $commentlen = 0;
        $comment = "";
        if ($flags & 16) {
            // C-style string COMMENT data in header
            if ($len - $headerlen - 1 < 8) {
                return false;    // Invalid format
            }
            $commentlen = strpos(substr($data,8+$extralen+$filenamelen),chr(0));
            if ($commentlen === false || $len - $headerlen - $commentlen - 1 < 8) {
                return false;    // Invalid header format
            }
            $comment = substr($data,$headerlen,$commentlen);
            $headerlen += $commentlen + 1;
        }
        
        $headercrc = "";
        if ($flags & 2) {
            // 2-bytes (lowest order) of CRC32 on header present
            if ($len - $headerlen - 2 < 8) {
                return false;    // Invalid format
            }
            $calccrc = crc32(substr($data,0,$headerlen)) & 0xffff;
            $headercrc = unpack("v", substr($data,$headerlen,2));
            $headercrc = $headercrc[1];
            if ($headercrc != $calccrc) {
                return false;    // Bad header CRC
            }
            $headerlen += 2;
        }
        
        // GZIP FOOTER - These be negative due to PHP's limitations
        $datacrc = unpack("V",substr($data,-8,4));
        $datacrc = $datacrc[1];
        $isize = unpack("V",substr($data,-4));
        $isize = $isize[1];
        
        // Perform the decompression:
        $bodylen = $len-$headerlen-8;
        if ($bodylen < 1) {
            // This should never happen - IMPLEMENTATION BUG!
            return null;
        }
        $body = substr($data,$headerlen,$bodylen);
        $data = "";
        if ($bodylen > 0) {
            switch ($method) {
                case 8:
                    // Currently the only supported compression method:
                    $data = gzinflate($body);
                    break;
                default:
                    // Unknown compression method
                    return null;
            }
        } else {
            // I'm not sure if zero-byte body content is allowed.
            // Allow it for now...  Do nothing...
        }
        
        // Verifiy decompressed size and CRC32:
        // NOTE: This may fail with large data sizes depending on how
        //       PHP's integer limitations affect strlen() since $isize
        //       may be negative for large sizes.
        if ($isize != strlen($data) || crc32($data) != $datacrc) {
            // Bad format!  Length or CRC doesn't match!
            return null;
        }
        $res = unpack("C*", $data); 
        return MyList::WrapArray($res);
    }

    static function GetNameFromNode($Node) {
        if($Node instanceof DOMText)
            return "#text";
        return $Node->tagName;
    }
    static function GetTextFromNode($Node) {
        if($Node instanceof DOMText)
            return $Node->data;
        return $Node->textContent;
    }
               
    static function GetContentFromNode($Node, $Text = "") {
        if($Node instanceof DOMText)
            return $Text.$Node->data;
        if ($Node->tagName === null)
            return $Text.$Node->textContent;
            
        $Node = $Node->firstChild;
        if ($Node === null) return $Text;  
        while($Node !== null) {
            $Text = Utils::GetContentFromNode($Node, $Text);
            $Node = $Node->nextSibling;
        }
        return $Text;
    }
    static function GetXmlAttrByName($attrs, $name) {
        if($attrs === NULL) return NULL;
        foreach($attrs as $attr) if($name === $attr->name) return $attr;
        return NULL;
    }
    static function LoadStreamDom($xml, $stream) {
        $buf = Utils::GetArrayStream($stream);
        $str = Utils::DecodeString("UTF-8", $buf);
        $xml->loadXml($str);
    }

}    

Utils::$chars = "0000000001111100000000000000000010000000000000002222222222000000077777777777777777777777777000000333333333333333333333333330000000000100000000000000000000000000100000000030000000000300003000007777777777777777777777707777777333333333333333333333333033333333".
    "7373737373737373737373737373737373737373737373737373737337373737373737373373737373737373737373737373737373737373737373737737373337737377377733777737737773337737737373773733737737773737733373333333733733733737373737373737337373737373737373733733737773737373".
    "7373737373737373737373737373737373737373737373737373333333773773373777737373737333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300003333333333330000000000000033333000000030300000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000737330730033330700000070777070773777777777777777770777777777333333333333333333333333333333333337337773337373737373737373737373733333730737733777".
    "7777777777777777777777777777777777777777777777773333333333333333333333333333333333333333333333337373737373737373737373737373737373000000007373737373737373737373737373737373737373737373737373737737373737373733737373737373737373737373737373737373737373737373".
    "7373737373737373737373737373737373737373737373730777777777777777777777777777777777777770030000000333333333333333333333333333333333333333000000000000000000000000000000000000000000000000000000000000000000000000333333333333333333333333333000003330000000000000".
    "0000000000000000000000000000000033333333333333333333333333333333333333333330000000000000000000002222222222000033033333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333303000000000000000330000000332222222222333003".
    "0000000000000000303333333333333333333333333333330000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333333333333333333333333333333000000000003000000000000002222222222333333333333333333333333333333333000000000330000300000".
    "3333333333333333333333000030000000003000300000000000000000000000333333333333333333333333300000000000000000000000000000000000000000000000000000000000000000000000333333333333333333333000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000333333333333333333333333333333333333333333333333333333000300000000000000000030000000333333333300002222222222033333333333333330000333333330033003333333333333333333333033333330300033330003000000000000000030000000000000330333000022222222223300000000000000".
    "0000033333300003300333333333333333333333303333333033033033000000000000000000000000000000033330300000002222222222003330000000000000000333333333033303333333333333333333333033333330330333330003000000000000000000300000000000000033000022222222220000000003000000".
    "0000033333333003300333333333333333333333303333333033033333000300000000000000000000000000000033033300002222222222030000000000000000030333333000333033330003303033000330003330003333333333330000000000000000000000300000000000000000000022222222220000000000000000".
    "0000033333333033303333333333333333333333303333333333333333000300000000000000000000000000333000003300002222222222000000000000000000000333333330333033333333333333333333333033333333330333330003000000000000000000000000000000003033000022222222220330000000000000".
    "0000033333333033303333333333333333333333333333333333333333300300000000000000003000000000000000033300002222222222000000000033333300000333333333333333333000333333333333333333333333033333333303003333333000000000000000000000000000000022222222220000000000000000".
    "0333333333333333333333333333333333333333333333333033000000000000333333300000000022222222220000000000000000000000000000000000000003303003303003000000333303333333033303030033033330330000000003003333303000000000222222222200333300000000000000000000000000000000".
    "3000000000000000000000000000000022222222220000000000000000000000333333330333333333333333333333333333333333333000000000000000000000000000333330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "3333333333333333333333333333333333333333333000000000000000000003222222222200000033333300003333000300033000000033300003333333333333000000000000302222222222000000777777777777777777777777777777777777770700000700333333333333333333333333333333333333333333303333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333033330033333330303333003333333333333333333333333333333333333333303333003333333333333333333333333333333330333300333333303033330033333333333333303333333333333333333333333333333333333333".
    "3333333333333333303333003333333333333333333333333333333333333333333333333333333333333333333000000000000000000000000000000000000033333333333333330000000000000000777777777777777777777777777777777777777777777777777777777777777777777777777777777777770033333300".
    "0333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333003333333333333333313333333333333333333333333300000333333333333333333333333333333333333333333333333333333333333333333333333333000000333333330000000".
    "3333333333333033330000000000000033333333333333333300000000000000333333333333333333000000000000003333333333333033300000000000000033333333333333333333333333333333333333333333333333330000000000000000000000000000000000030000300022222222220000000000000000000000".
    "0000000000000000222222222200000033333333333333333333333333333333333333333333333333333333333333333333333333333333333333330000000033333333333333333333333333333333333333333030000033333333333333333333333333333333333333333333333333333333333333333333330000000000".
    "3333333333333333333333333333333000000000000000000000000000000000000000222222222233333333333333333333333333333300333330000000000033333333333333333333333333333333333333333333000033333333333333333333333333000000222222222200000000000000000000000000000000000000".
    "3333333333333333333333300000000033333333333333333333333333333333333333333333333333333000000000000000000000000000000000000000000022222222220000002222222222000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000033333333333333333333333333333333333333333333333000000000000000003333333000022222222220000000000000000000000000000000000000000033333333333333333333333333333300000000000003322222222223333333333333333333333333333333333333333333300000000000000000000000000".
    "3333333333333333333333333333333333330000000000000000000000000000222222222200033322222222223333333333333333333333333333333333330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033330333300033000000000".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333330000000000000000000000000000000000000000000000000000000000000000".
    "7373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373733333333373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373".
    "3333333377777777333333007777770033333333777777773333333377777777333333007777770033333333070707073333333377777777333333333333330033333333333333333333333333333333333333333333333333333033777730300033303377773000333300337777000033333333777770000033303377773000".
    "1111111111100000000000000000000000000000110000010000000000000000000000000000000000000000000000010000000000000000030000000000000300000000000000003333333333333000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0070000700377733777307000777770000007070707777037777333333003377000007333300003000000000000000000000000000000000000000000000000000073000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "7777777777777777777777777777777777777777777777703333333333333333333333333333333333333333333333307377733737373777737337333333337773737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373733000000737300073000000000000".
    "3333333333333333333333333333333333333303000003003333333333333333333333333333333333333333333333333333333300000003000000000000000033333333333333333333333000000000333333303333333033333330333333303333333033333330333333303333333000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "1000033000000000000000000000000000000000000000000333330000033000033333333333333333333333333333333333333333333333333333333333333333333333333333333333333000000333033333333333333333333333333333333333333333333333333333333333333333333333333333333333333333303333".
    "0000033333333333333333333333333333333333333333000333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300000000000000000333333333333333333333333333000000000000000000000000000000000000000000000000000003333333333333333".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300000000000000000000000000000000000000000000000000000000000000000000000000".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333000000000000000000000000000000000000000000".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333330000000000000000000000000000000000000000000000000000000000000000000333333333333333333333333333333333333333333333300".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333000333333333333333322222222223300000000000000000000737373737373737373737373737373737373737373737330000000000000000373737373737373737373737373733300333333333333333333333333333333333333333333333333333333333333333333333300000000000000000000000000".
    "0000000000000000000000033333333300737373737373733373737373737373737373737373737373737373737373737373737373737373333333333737377373737373300737337373337373737373737373737377770077777373000000000000000000000000000000000000000000000000000000000000000333333333".
    "3303330333303333333333333333333333300000000000000000000000000000333333333333333333333333333333333333333333333333333300000000000000333333333333333333333333333333333333333333333333330000000000000000000000000000222222222200000000000000000000000033333300030300".
    "2222222222333333333333333333333333333300000000003333333333333333333333300000000000000000000000003333333333333333333333333333300000003333333333333333333333333333333333333333333333300000000000000000000000000003222222222200000033333033333333332222222222333330".
    "3333333333333333333333333333333333333333300000000000000000000000333033333333000022222222220000003333333333333333333333300030003333333333333333333333333333333333333333333333333303000330033333003030000000000000000000000003330033333333333000000033300000000000".
    "0333333003333330033333300000000033333330333333303333333333333333333333333333333333333333333033333333330000000000333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300000000000002222222222000000".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300000000000033333333333333333333333000033333333333333333333333333333333333333333333333330000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300000000000000000000000000000000000000".
    "3333333000000000000333330000030333333333303333333333333033333030330330333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333000000000000000000000000000000000333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333".
    "3333333333333333333333333333333333333333333333333333333333333300000000000000000033333333333333333333333333333333333333333333333333333333333333330033333333333333333333333333333333333333333333333333333300000000000000000000000000000000000000003333333333330000".
    "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000333330333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333000".
    "0000000000000000222222222200000007777777777777777777777777700000033333333333333333333333333000000000003333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300033333300333333003333330033300000000000000000000000000000000000";
