diff --git a/.prettierignore b/.prettierignore index 3084333940e..290784db84e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -18,6 +18,8 @@ __pycache__/ /source/npm/qsharp/lib/ /source/npm/qsharp/src/*.generated.* /source/npm/qsharp/test/**/*.snapshot.* +/source/npm/qsharp/rz-array.json +/source/npm/qsharp/rz-details.json /source/pip/ /source/pip/src/**/*.html /source/qdk_package/ diff --git a/package-lock.json b/package-lock.json index a047cd7db12..a0f9d83e3af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@types/markdown-it": "^14.1.2", "@types/mocha": "^10.0.10", "@types/node": "^22.14", + "@types/three": "^0.184.1", "@types/vscode": "1.100.0", "@types/vscode-webview": "^1.57.5", "@vscode/codicons": "^0.0.45", @@ -46,6 +47,7 @@ "preact": "^10.29.1", "prettier": "^3.8.1", "punycode": "^2.3.1", + "three": "^0.184.0", "typescript": "5.6.3", "typescript-eslint": "^8.58.2", "url": "^0.11.4", @@ -380,6 +382,13 @@ "node": ">=20.19.0" } }, + "node_modules/@dimforge/rapier3d-compat": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz", + "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.28.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", @@ -1804,6 +1813,13 @@ "node": ">=18" } }, + "node_modules/@tweenjs/tween.js": { + "version": "23.1.3", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", + "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -1892,6 +1908,28 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/stats.js": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz", + "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/three": { + "version": "0.184.1", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.184.1.tgz", + "integrity": "sha512-6q4VdiqVsrTRqmk62/BnlcAvIrnDM0zf2ZDVKI5kZiniWrSaOHaQzmbp+BNzoggc/8tgW412pL//wZIxu2PPTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@dimforge/rapier3d-compat": "~0.12.0", + "@tweenjs/tween.js": "~23.1.3", + "@types/stats.js": "*", + "@types/webxr": ">=0.5.17", + "fflate": "~0.8.2", + "meshoptimizer": "~1.1.1" + } + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -1914,6 +1952,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/webxr": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz", + "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==", + "dev": true, + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.58.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz", @@ -3648,6 +3693,13 @@ } } }, + "node_modules/fflate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", + "dev": true, + "license": "MIT" + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -4758,6 +4810,13 @@ "node": ">= 0.8" } }, + "node_modules/meshoptimizer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-1.1.1.tgz", + "integrity": "sha512-oRFNWJRDA/WTrVj7NWvqa5HqE1t9MYDj2VaWirQCzCCrAd2GHrqR/sQezCxiWATPNlKTcRaPRHPJwIRoPBAp5g==", + "dev": true, + "license": "MIT" + }, "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", @@ -6187,6 +6246,13 @@ "b4a": "^1.6.4" } }, + "node_modules/three": { + "version": "0.184.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.184.0.tgz", + "integrity": "sha512-wtTRjG92pM5eUg/KuUnHsqSAlPM296brTOcLgMRqEeylYTh/CdtvKUvCyyCQTzFuStieWxvZb8mVTMvdPyUpxg==", + "dev": true, + "license": "MIT" + }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", diff --git a/package.json b/package.json index 4ce70f1d0c1..7a066e593aa 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@types/markdown-it": "^14.1.2", "@types/mocha": "^10.0.10", "@types/node": "^22.14", + "@types/three": "^0.184.1", "@types/vscode": "1.100.0", "@types/vscode-webview": "^1.57.5", "@vscode/codicons": "^0.0.45", @@ -51,6 +52,7 @@ "preact": "^10.29.1", "prettier": "^3.8.1", "punycode": "^2.3.1", + "three": "^0.184.0", "typescript": "5.6.3", "typescript-eslint": "^8.58.2", "url": "^0.11.4", diff --git a/source/npm/qsharp/package.json b/source/npm/qsharp/package.json index 50fcbbe4d4d..46ba3ee1dc7 100644 --- a/source/npm/qsharp/package.json +++ b/source/npm/qsharp/package.json @@ -24,7 +24,8 @@ "./katas-md": "./dist/katas-md.js", "./state-viz": "./ux/circuit-vis/state-viz/worker/index.ts", "./ux": "./ux/index.ts", - "./qdk-theme.css": "./ux/qdk-theme.css" + "./qdk-theme.css": "./ux/qdk-theme.css", + "./rz-array.json": "./rz-array.json" }, "scripts": { "build": "npm run docs && npm run generate && npm run build:tsc && npm run build:ux", @@ -34,7 +35,8 @@ "build:tsc": "node ../../../node_modules/typescript/bin/tsc -p ./src/tsconfig.json", "build:ux": "node ../../../node_modules/typescript/bin/tsc -p ./ux/tsconfig.json", "tsc:watch": "node ../../../node_modules/typescript/bin/tsc -p ./src/tsconfig.json --watch --preserveWatchOutput", - "test": "node --test" + "test": "node --test", + "rz": "node ../../../node_modules/typescript/bin/tsc -p ./tools/tsconfig.json && node ./dist/tools/rz-synthesis.js" }, "type": "module", "files": [ diff --git a/source/npm/qsharp/rz-array.json b/source/npm/qsharp/rz-array.json new file mode 100644 index 00000000000..b5a7eddfcc5 --- /dev/null +++ b/source/npm/qsharp/rz-array.json @@ -0,0 +1,1258 @@ +[ + "", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHX", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHXST", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTHS", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHST", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtHST", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtHs", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtHs", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtHt", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtHZ", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHXZT", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTH", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHXST", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHXt", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHXs", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtH", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtHt", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHXZ", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHXS", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtHZT", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHXs", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtHs", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtHZ", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHXs", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtH", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXZT", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHXT", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtHt", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTH", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHXT", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTHs", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHXZ", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHXs", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtHST", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtHt", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHXST", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTHST", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHXZ", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtHZT", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHXT", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTHs", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtHT", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtH", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHXZ", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHXZ", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtH", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHXS", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtHt", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTHZ", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHXs", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHXt", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtHZT", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHs", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtHS", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHXS", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtHT", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHXZ", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtHt", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHXST", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtHs", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtHT", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHXS", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtHt", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtHZT", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHXs", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtHZT", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtHZT", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHZT", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtHT", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtHZT", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHX", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHXST", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHXs", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtHZ", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTHs", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTHST", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHs", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHX", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHXS", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTHST", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHXT", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtHST", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTHs", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHXt", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHXT", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHXST", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHXs", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtHZT", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtHZ", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtH", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHZ", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtHZ", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTHZ", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHXST", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtHZ", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtHS", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHXS", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtH", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtHST", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHXs", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHS", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHXZT", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtH", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHXt", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtHt", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtHs", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXt", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHXS", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHXST", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtHZT", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHS", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHXt", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtHT", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHXZT", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtHT", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTHT", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtH", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHXt", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTHZ", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtHZ", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHXZT", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtHs", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHXs", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTHS", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHXS", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtHS", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHT", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtHST", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTHZ", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtHT", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTHS", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHX", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHXZ", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtHT", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHXST", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtHZT", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTHST", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHXST", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtHZ", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtHST", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHXZT", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtHS", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHXZT", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHXST", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHX", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHXs", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtHT", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtH", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtHZT", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtHS", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtHST", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtHST", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTHs", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtHs", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHXST", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHXt", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtH", + "T", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHXT", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHXZ", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTHST", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHZ", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtHZ", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtHt", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtHt", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtH", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtHZT", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHXs", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTHT", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHXZ", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHX", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHXt", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtHT", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtH", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHXZT", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHXST", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtHs", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHXt", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtHt", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtHZT", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHXt", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtHT", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXs", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHXS", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtH", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTHT", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHXS", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTHt", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHXZT", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHXt", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtHZ", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtH", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHXZ", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTHZ", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHXZT", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtHs", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHXS", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTHt", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtHS", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtHT", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHXZT", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHXZT", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtHT", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHXST", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtH", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTHZT", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHXt", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHX", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtHs", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHt", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtHST", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHXST", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtHS", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHXZT", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtH", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHXZ", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtHt", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtHS", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHXST", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtH", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtHs", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHXt", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtHs", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtHs", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHs", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtHS", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtHs", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHXT", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHXZ", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHXt", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtHZT", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTHt", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTHZ", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHt", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHXT", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHXST", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTHZ", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHXS", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtHZ", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTHt", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHX", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHXS", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHXZ", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHXt", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtHs", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtHZT", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtHT", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHZT", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtHZT", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTHZT", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHXZ", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtHZT", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtHST", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHXST", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtHT", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtHZ", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHXt", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHST", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHXs", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtHT", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHX", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtH", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtHt", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHX", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHXST", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHXZ", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtHs", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHST", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHX", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtHS", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHXs", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtHS", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTHS", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtHT", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHX", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTHZT", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtHZT", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHXs", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtHt", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHXt", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTHST", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHXST", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtHST", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHS", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtHZ", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTHZT", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtHS", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTHST", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHXT", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHXZT", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtHS", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHXZ", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtHs", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTHZ", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHXZ", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtHZT", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtHZ", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHXs", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtHST", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHXs", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHXZ", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHXT", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHXt", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtHS", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtHT", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtHs", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtHST", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtHZ", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtHZ", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTHt", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtHt", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHXZ", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHX", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtHT", + "S", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHXS", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHXZT", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTHZ", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHZT", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtHZT", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtH", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtH", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtHT", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtHs", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHXt", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTHS", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHXZT", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHXT", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHX", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtHS", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtHT", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHXs", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHXZ", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtHt", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHX", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtH", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtHs", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHX", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtHS", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXt", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHXST", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtHT", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTHS", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHXST", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTH", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHXs", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHX", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtHZT", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtHT", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHXZT", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTHZT", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHXs", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtHt", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHXST", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTH", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtHST", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtHS", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHXs", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHXs", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtHS", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHXZ", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtHT", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTHs", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHX", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHXT", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtHt", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtH", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtHZ", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHXZ", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtHST", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHXs", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtHT", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHXZT", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtH", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtHST", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHXZ", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtHT", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtHt", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHX", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtHt", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtHt", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHt", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtHST", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtHt", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHXS", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHXZT", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHX", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtHs", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTH", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTHZT", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtH", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHXS", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHXZ", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTHZT", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHXST", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtHZT", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTH", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHXT", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHXST", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHXZT", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHX", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtHt", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtHs", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtHS", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHs", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtHs", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTHs", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHXZT", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtHs", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtHZ", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHXZ", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtHS", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtHZT", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHX", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHZ", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHXt", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtHS", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHXT", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtHT", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtH", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXT", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHXZ", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHXZT", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtHt", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHZ", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHXT", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtHST", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHXt", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtHST", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTHST", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtHS", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHXT", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTHs", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtHs", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHXt", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtH", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHX", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTHZ", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHXZ", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtHZ", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHST", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtHZT", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTHs", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtHST", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTHZ", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHXS", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHXs", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtHST", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHXZT", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtHt", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTHZT", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHXZT", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtHs", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtHZT", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHXt", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtHZ", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHXt", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHXZT", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHXS", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHX", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtHST", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtHS", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtHt", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtHZ", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtHZT", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtHZT", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTH", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtH", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHXZT", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHXT", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtHS", + "ST", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHXST", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHXs", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTHZT", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHs", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtHs", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtHT", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtHT", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtHS", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtHt", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHX", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTHST", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHXs", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHXS", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHXT", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtHST", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtHS", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHXt", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHXZT", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtH", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHXT", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtHT", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtHt", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHXT", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtHST", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHX", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHXZ", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtHS", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTHST", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHXZ", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTHT", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHXt", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHXT", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtHs", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtHS", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHXs", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTHs", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHXt", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtH", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHXZ", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTHT", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtHZ", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtHST", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHXt", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHXt", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtHST", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHXZT", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtHS", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTHt", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHXT", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHXS", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtH", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHT", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtHZT", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHXZT", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtHZ", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHXt", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtHS", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHXs", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtHT", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtHZ", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHXZT", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtHS", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtH", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHXT", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtH", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtH", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtH", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtHZ", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtH", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHXST", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHXs", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHXT", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtHt", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTHT", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTHs", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHT", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHXST", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHXZT", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTHs", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHXZ", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtHs", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTHT", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHXS", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHXZ", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHXs", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHXT", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtH", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtHt", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtHST", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHt", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtHt", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTHt", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHXs", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtHt", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtHZT", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHXZT", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtHST", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtHs", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHXT", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHZT", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHX", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtHST", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHXS", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtHS", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtHT", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXS", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHXZT", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHXs", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtH", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHZT", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHXS", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtHZ", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHX", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtHZ", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTHZ", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtHST", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHXS", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTHt", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtHt", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHX", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtHT", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHXT", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTHZT", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHXZT", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtHZT", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHZ", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtHs", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTHt", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtHZ", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTHZT", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHXST", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHXt", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtHZ", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHXs", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtH", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTHs", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHXs", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtHt", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtHs", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHX", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtHZT", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHX", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHXs", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHXST", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHXT", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtHZ", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtHST", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtH", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtHZT", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtHs", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtHs", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTHT", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtHT", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHXs", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHXS", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtHST", + "Z", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHXZ", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHXt", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTHs", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHt", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtHt", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtHS", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtHS", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtHST", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtH", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHXT", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTHZ", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHXt", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHXST", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHXS", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtHZ", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtHST", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHX", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHXs", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtHT", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHXS", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtHS", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtH", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHXS", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtHZ", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXT", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHXZT", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtHST", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTHZ", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHXZT", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTHS", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHX", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHXS", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtHt", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtHST", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHXt", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTHt", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHX", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtHT", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHXZT", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTHS", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtHZT", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtHZ", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHX", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHX", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtHZ", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHXs", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtHST", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTH", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHXS", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHXST", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtHT", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHS", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtHs", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHXs", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtHZT", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHX", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtHST", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHXt", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtHS", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtHZT", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHXs", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtHST", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtHT", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHXS", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtHT", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtHT", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHT", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtHZT", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtHT", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHXZ", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHXt", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHXS", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtH", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTHS", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTHt", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHS", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHXZ", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHXs", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTHt", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHXZT", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtHt", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTHS", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHXST", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHXZT", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHXt", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHXS", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtHT", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtH", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtHZ", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtH", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtH", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTH", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHXt", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtH", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtHs", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHXs", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtHZ", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtHt", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHXS", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHs", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHXT", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtHZ", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHXST", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtHST", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtHS", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXST", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHXs", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHXt", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtHT", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHs", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHXST", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtHZT", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHXT", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtHZT", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTHZT", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtHZ", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHXST", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTH", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtH", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHXT", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtHS", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHXS", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTHs", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHXs", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtHs", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHZT", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtHt", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTH", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtHZT", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTHs", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHXZ", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHX", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtHZT", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHXt", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtHT", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTHt", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHXt", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtH", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtHt", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHXT", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtHs", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHXT", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHXt", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHXZ", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHXS", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtHZT", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtHZ", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtHT", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtHs", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtHt", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtHt", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTHS", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtHS", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHXt", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHXST", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtHZ", + "ZT", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHXZT", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHX", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTHt", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtH", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtH", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtHST", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtHST", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtHZ", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtHT", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHXS", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTHZT", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHX", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHXZ", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHXST", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtHZT", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtHZ", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHXT", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHXt", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtHS", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHXST", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtHST", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtHT", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHXST", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtHZT", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXS", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHXs", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtHZ", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTHZT", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHXs", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTHST", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHXT", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHXST", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtH", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtHZ", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHX", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTH", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHXT", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtHS", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHXs", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTHST", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtHs", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtHZT", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHXT", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHXT", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtHZT", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHXt", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtHZ", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTHT", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHXST", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHXZ", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtHS", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHST", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtHt", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHXt", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtHs", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHXT", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtHZ", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHX", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtHST", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtHs", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHXt", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtHZ", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtHS", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHXST", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtHS", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtHS", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHS", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtHs", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtHS", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHXZT", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHX", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHXST", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtHT", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTHST", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTH", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHST", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHXZT", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHXt", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTH", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHXs", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtH", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTHST", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHXZ", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHXs", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHX", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHXST", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtHS", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtHT", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtHZT", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHT", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtHT", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTHT", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHX", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtHT", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtHt", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHXt", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtHZT", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtH", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHXST", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHt", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHXS", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtHZT", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHXZ", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtHZ", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtHST", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXZ", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHXt", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHX", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtHS", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHt", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHXZ", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtHs", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHXS", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtHs", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTHs", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtHZT", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHXZ", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTHT", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtHT", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHXS", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtHST", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHXST", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTHt", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHXt", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtHt", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHs", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtH", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTHT", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtHs", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTHt", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHXZT", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHXT", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtHs", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHX", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtHS", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTH", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHX", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtHT", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtH", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHXS", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtHt", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHXS", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHX", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHXZT", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHXST", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtHs", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtHZT", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtHS", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtHt", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtH", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtH", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTHST", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtHST", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHX", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHXZ", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtHZT", + "s", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHXs", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHXT", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTH", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHT", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtHT", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtHZ", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtHZ", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtHZT", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtHS", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHXST", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTHs", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHXT", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHXZT", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHXZ", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtHs", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtHZT", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHXS", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHX", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtHST", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHXZ", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtHZ", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtHS", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHXZ", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtHs", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXST", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHXt", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtHZT", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTHs", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHXt", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTHZ", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHXS", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHXZ", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtHT", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtHZT", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHXT", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTHT", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHXS", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtHST", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHXt", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTHZ", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtHt", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtHs", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHXS", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHXS", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtHs", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHX", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtHZT", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTHS", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHXZ", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHXZT", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtHST", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHZ", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtH", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHX", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtHt", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHXS", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtHZT", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHXT", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtHZ", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtHt", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHX", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtHZT", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtHST", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHXZ", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtHST", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtHST", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHST", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtHt", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtHST", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHXs", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHXT", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHXZ", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtHS", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTHZ", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTHT", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHZ", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHXs", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHX", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTHT", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHXt", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtHT", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTHZ", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHXZT", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHXt", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHXT", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHXZ", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtHST", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtHS", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtHs", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHS", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtHS", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTHS", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHXT", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtHS", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtH", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHX", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtHs", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtHT", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHXZ", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtH", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHXST", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtHs", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHXZT", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtHZT", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtHZ", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXZT", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHX", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHXT", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtHST", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtH", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHXZT", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtHt", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHXST", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtHt", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTHt", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtHs", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHXZT", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTHS", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtHS", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHXST", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtHZ", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHXZ", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTH", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHX", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtH", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHt", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtHT", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTHS", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtHt", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTH", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHXs", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHXS", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtHt", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHXT", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtHST", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTHT", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHXT", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtHS", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtHT", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHXST", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtH", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHXST", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHXT", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHXs", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHXZ", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtHt", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtHs", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtHST", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtH", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtHT", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtHT", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTHZ", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtHZ", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHXT", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHXZT", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtHs", + "t", + "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHXt", + "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHXS", + "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTHT", + "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHS", + "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtHS", + "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtHZT", + "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtHZT", + "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtHs", + "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtHST", + "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHXZ", + "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTHt", + "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHXS", + "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHXs", + "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHXZT", + "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtHt", + "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtHs", + "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHXST", + "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHXT", + "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtHZ", + "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHXZT", + "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtHZT", + "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtHST", + "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHXZT", + "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtHt", + "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXZ", + "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHX", + "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtHs", + "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTHt", + "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHX", + "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTHZT", + "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHXST", + "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHXZT", + "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtHS", + "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtHs", + "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHXS", + "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTHS", + "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHXST", + "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtHZ", + "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHX", + "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTHZT", + "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtH", + "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtHt", + "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHXST", + "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHXST", + "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtHt", + "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHXT", + "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtHs", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTHST", + "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHXZT", + "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHXs", + "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtHZ", + "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHZT", + "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtHT", + "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHXT", + "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtH", + "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHXST", + "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtHs", + "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHXS", + "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtHZT", + "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtH", + "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHXT", + "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtHs", + "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtHZ", + "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHXZT", + "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtHZ", + "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtHZ", + "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHZ", + "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtH", + "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtHZ", + "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHXt", + "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHXS", + "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHXZT", + "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtHST", + "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTHZT", + "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTHS", + "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHZT", + "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHXt", + "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHXT", + "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTHS", + "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHX", + "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtHS", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTHZT", + "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHXs", + "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHX", + "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHXS", + "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHXZT", + "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtHZ", + "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtHST", + "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtHt", + "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHST", + "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtHST", + "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTHST", + "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHXS", + "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtHST", + "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtHT", + "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHXT", + "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtHt", + "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtHS", + "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHXZT", + "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHT", + "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHXZ", + "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtHt", + "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHXs", + "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtHs", + "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtHZT", + "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHXs", + "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHXT", + "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHXS", + "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtHZ", + "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHT", + "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHXs", + "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtH", + "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHXZ", + "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtH", + "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTH", + "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtHt", + "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHXs", + "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTHST", + "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtHST", + "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHXZ", + "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtHZT", + "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHXZT", + "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTHT", + "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHXT", + "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtHT", + "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtH", + "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtHS", + "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTHST", + "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtH", + "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTHT", + "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHXt", + "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHXST", + "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtH", + "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHXS", + "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtHZ", + "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTHS", + "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHXS", + "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtHST", + "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtHS", + "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHXZ", + "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtHT", + "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHXZ", + "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHXS", + "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHXt", + "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHXZT", + "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtH", + "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtHt", + "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtHZ", + "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtHT", + "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtHS", + "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtHS", + "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTHZT", + "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtHZT", + "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHXS", + "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHXs", + "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtHt" +] \ No newline at end of file diff --git a/source/npm/qsharp/rz-details.json b/source/npm/qsharp/rz-details.json new file mode 100644 index 00000000000..226f5ff968d --- /dev/null +++ b/source/npm/qsharp/rz-details.json @@ -0,0 +1,944 @@ +[ + { + "phase": 0, + "gates": "", + "matrix": "[[1,0],[0,1]]", + "offset": 0 + }, + { + "phase": 0.006797366324771015, + "gates": "HtHtHTHTHTHTHtHtHTHTHtHtHTHtHTHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHX", + "matrix": "[[0.7047-0.7095i,0+0.0001i],[0.0001+0i,0.7095-0.7047i]]", + "offset": 0.0000778670871819516 + }, + { + "phase": 3.9370117484448643, + "gates": "HtHTHTHTHTHtHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHTHtHtHtHTHtHtHtHtHtHtHX", + "matrix": "[[0.9258+0.378i,0.0001-0i],[-0+0.0001i,-0.378-0.9258i]]", + "offset": 0.00006879341188349906 + }, + { + "phase": 4.724912789000288, + "gates": "HTHTHtHtHtHTHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHtHtHtHTHtHtHTH", + "matrix": "[[-0.7115-0.7027i,-0.0001+0.0005i],[0.0001+0.0005i,-0.7115+0.7027i]]", + "offset": 0.0004970758555279916 + }, + { + "phase": 3.9494891283931364, + "gates": "HTHTHTHTHTHtHTHTHTHTHTHtHtHTHtHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtH", + "matrix": "[[-0.715-0.6991i,-0.0001+0i],[0.0001-0i,-0.0112+0.9999i]]", + "offset": 0.0000622479028673667 + }, + { + "phase": 3.9533793468878455, + "gates": "HtHtHTHtHtHTHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHtHtHTHtHtH", + "matrix": "[[-0.0132-0.9999i,-0.0001+0.0003i],[-0.0001+0.0003i,-0.7164+0.6977i]]", + "offset": 0.0003004867581136003 + }, + { + "phase": 1.6009221525507646, + "gates": "HtHTHTHTHTHtHTHTHTHTHtHTHtHTHtHTHTHTHTHTHTHTHtHtHtHtHTHtHtH", + "matrix": "[[-0.3687+0.9295i,0.0001-0.0001i],[-0.0001+0i,-0.918-0.3966i]]", + "offset": 0.00012968740202717738 + }, + { + "phase": 1.6062863314202884, + "gates": "HTHTHtHtHtHtHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHtH", + "matrix": "[[-0.399-0.9169i,0-0.0002i],[-0.0001+0.0002i,0.9305-0.3662i]]", + "offset": 0.00019367357111501623 + }, + { + "phase": 0.8246060624793068, + "gates": "HTHTHTHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHtHtHtHTHtHtHtHTHtHtHtH", + "matrix": "[[-0.7208-0.6931i,-0.0003+0i],[-0.0003+0.0002i,0.0196-0.9998i]]", + "offset": 0.0003510793138919119 + }, + { + "phase": 3.184228900499537, + "gates": "HTHTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHtHtHTHtHTHtHTHTHTHtHtHTHtH", + "matrix": "[[0.4023+0.9155i,-0-0.0002i],[-0.0001-0.0001i,-0.3629-0.9318i]]", + "offset": 0.00017977048264604067 + }, + { + "phase": 2.40580148083754, + "gates": "HtHTHTHTHTHtHtHtHtHTHTHTHTHtHtHtHtHTHtHTHtHtHTHtHTHtHtHTHtHtHX", + "matrix": "[[-0.9331-0.3597i,-0-0.0005i],[-0+0.0005i,0.9331-0.3597i]]", + "offset": 0.00046241614374407664 + }, + { + "phase": 0.053044119174433524, + "gates": "HTHTHTHTHtHtHtHTHTHTHtHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHTHTHTH", + "matrix": "[[-0.358+0.9337i,0.0001+0.0001i],[0.0001+0.0001i,-0.407+0.9134i]]", + "offset": 0.00016089850040265497 + }, + { + "phase": 3.9851048842843015, + "gates": "HtHtHTHTHtHtHTHTHTHTHTHtHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHTHTHX", + "matrix": "[[0.6863-0.7274i,-0.0002+0.0003i],[-0.0004-0.0001i,-0.9996-0.0291i]]", + "offset": 0.00036194391950827886 + }, + { + "phase": 0.8488647765485232, + "gates": "HtHtHTHTHTHtHtHtHtHTHTHTHTHTHTHtHtHTHtHTHtHtHtHTHtHTHtHTHTHtHtHX", + "matrix": "[[0.7292+0.6843i,0.0002-0.0002i],[0.0003-0i,-0.0317+0.9995i]]", + "offset": 0.0002884701977161536 + }, + { + "phase": 1.6415898723269784, + "gates": "HTHTHTHTHTHtHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHTHtHtHtHTHTHTHTHX", + "matrix": "[[-0.9098+0.4151i,-0-0.0001i],[0.0001-0.0001i,-0.3497-0.9368i]]", + "offset": 0.00010199457817341455 + }, + { + "phase": 0.07277941771757232, + "gates": "HtHtHTHTHTHTHtHtHTHTHTHtHTHtHtHTHtHTHTHTHtHtHTHTHTHTHtHtH", + "matrix": "[[0.9993-0.0364i,0.0001i],[0.0001i,0.9993+0.0364i]]", + "offset": 0.00006737107437143244 + }, + { + "phase": 0.8661388226553006, + "gates": "HtHTHtHTHtHtHTHtHTHTHTHTHTHtHTHTHtHtHtHTHTHTHtHTHtHtHTHtHtHtHtH", + "matrix": "[[0.678-0.7351i,-0-0.0002i],[-0.0001-0.0002i,0.9992+0.0404i]]", + "offset": 0.00019020979380808613 + }, + { + "phase": 3.224182852290718, + "gates": "HTHTHTHtHtHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHtHtHTHTHTHtHtHtHX", + "matrix": "[[0.0413+0.9991i,0.0003],[-0.0003,0.0413-0.9991i]]", + "offset": 0.00025788197788424575 + }, + { + "phase": 4.802771075685884, + "gates": "HtHTHtHtHTHTHTHTHTHTHTHTHtHTHTHTHtHtHtHTHtHTHTHTHTHTHTHtHtHTHX", + "matrix": "[[0.0452+0.999i,0.0001+0i],[-0-0.0001i,0.999+0.0452i]]", + "offset": 0.0001493210196068204 + }, + { + "phase": 2.453103528045708, + "gates": "HTHtHtHTHTHtHtHtHTHTHtHTHTHtHTHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHtH", + "matrix": "[[-0.9988+0.0484i,0.0001+0.0002i],[-0-0.0002i,0.7405-0.672i]]", + "offset": 0.0001936690541284997 + }, + { + "phase": 1.6705999047745534, + "gates": "HtHtHTHTHtHtHtHtHTHTHtHtHtHtHtHTHTHtHTHtHtHtHX", + "matrix": "[[0.671-0.7415i,0.0007-0.0005i],[-0.0007-0.0005i,0.671+0.7415i]]", + "offset": 0.000796668988636733 + }, + { + "phase": 1.6747414250880717, + "gates": "HtHtHTHTHTHTHTHtHTHTHTHtHtHtHTHTHtHTHtHTHTHtHtHTHTHtHtHtHtHtHtHtH", + "matrix": "[[0.9986-0.0519i,0-0.0001i],[0.0001-0i,-0.0519+0.9986i]]", + "offset": 0.00012143194023799926 + }, + { + "phase": 3.251226017246133, + "gates": "HTHtHtHTHTHtHTHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHtHtH", + "matrix": "[[0.4327+0.9015i,0+0.0002i],[0.0001+0.0001i,-0.3315-0.9435i]]", + "offset": 0.00017975817069720796 + }, + { + "phase": 1.6859613247588514, + "gates": "HtHTHTHTHtHtHtHTHTHtHTHtHtHtHTHtHTHTHtHtHtHtHTHtHTHtHtHtHX", + "matrix": "[[0.9983-0.0576i,0.0003+0.0001i],[-0.0001-0.0003i,-0.0576+0.9983i]]", + "offset": 0.00036364631627993634 + }, + { + "phase": 0.11888156868631689, + "gates": "HTHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHtHTHtHTHtHTHTHtHTHTHtHtHtH", + "matrix": "[[0.8995-0.4369i,0.0001+0.0001i],[0+0.0002i,0.945-0.3271i]]", + "offset": 0.00017974019190128608 + }, + { + "phase": 2.478772749056702, + "gates": "HtHTHTHtHtHtHtHtHTHTHtHTHtHtHTHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHX", + "matrix": "[[-0.7491-0.6625i,-0-0.0001i],[-0.0001+0i,0.9981+0.0613i]]", + "offset": 0.00008079919060435989 + }, + { + "phase": 5.62671955134298, + "gates": "HTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHX", + "matrix": "[[-0.9466-0.3224i,-0.0003],[0.0003,-0.9466+0.3224i]]", + "offset": 0.00025785207825477287 + }, + { + "phase": 0.920385392247465, + "gates": "HTHtHtHtHTHTHtHtHtHTHtHtHtHtHtHtHtHtHTHtHtHTHtHTHtHtHtHtHtHtHtHtH", + "matrix": "[[-0.9476-0.3195i,0.0002+0.0001i],[-0.0001-0.0002i,-0.3195-0.9476i]]", + "offset": 0.0001631981015671402 + }, + { + "phase": 0.13981893170147042, + "gates": "HTHTHTHTHtHtHTHTHtHTHTHTHTHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHTH", + "matrix": "[[0.0699+0.9976i,-0+0.0001i],[-0-0.0001i,-0.0699+0.9976i]]", + "offset": 0.00008251047507953408 + }, + { + "phase": 5.6439883758881635, + "gates": "HTHTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHtHX", + "matrix": "[[0.8935-0.4491i,0-0.0001i],[-0.0001+0i,0.4491-0.8935i]]", + "offset": 0.0001493157179971004 + }, + { + "phase": 1.71959072079745, + "gates": "HTHTHTHTHTHTHtHTHtHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHTHTHTHTH", + "matrix": "[[0.8929-0.4503i,0.0001-0.0002i],[0.0001-0.0002i,0.313+0.9498i]]", + "offset": 0.0002640271995224015 + }, + { + "phase": 3.297214397596548, + "gates": "HtHTHtHtHTHTHTHtHTHTHtHTHTHTHTHtHtHtHTHTHtHTHTHtHtHtHtHTHtHTHX", + "matrix": "[[0.65-0.7599i,0.0002-0.0002i],[0.0002-0.0002i,-0.7599+0.65i]]", + "offset": 0.0003258466849760435 + }, + { + "phase": 1.729240875964991, + "gates": "HTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHtHtHTHtHTHTHTHtHTHTHTHtHtHtHtHtHX", + "matrix": "[[0.9513+0.3084i,-0.0003-0.0001i],[-0.0001+0.0003i,-0.4546+0.8907i]]", + "offset": 0.00031921732251623865 + }, + { + "phase": 4.090794752815733, + "gates": "HtHtHTHtHtHtHtHtHTHTHtHTHtHTHTHtHTHtHTHTHtHtHtHtHtHTHtHtH", + "matrix": "[[0.8895-0.457i,0.0001],[0.0001,-0.8895-0.457i]]", + "offset": 0.0000673398957722982 + }, + { + "phase": 0.9537570322066369, + "gates": "HTHTHtHTHtHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHtHtHtHtH", + "matrix": "[[-0.8884+0.459i,-0.0001-0i],[0.0001-0i,-0.8884-0.459i]]", + "offset": 0.00007783586832078935 + }, + { + "phase": 4.103508737720375, + "gates": "HtHtHTHTHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHtHTHtHTHtHTHtHtHX", + "matrix": "[[-0.9961+0.0881i,0.0001-0i],[0.0001+0.0001i,0.642+0.7667i]]", + "offset": 0.0001019889629230744 + }, + { + "phase": 4.105344187621654, + "gates": "HTHTHtHTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHtHtHTHtHTHTH", + "matrix": "[[0.7673+0.6413i,0+0i],[0+0i,0.0891-0.996i]]", + "offset": 0.000051567699239651094 + }, + { + "phase": 3.327471373174413, + "gates": "HtHTHTHTHTHTHTHTHtHtHTHtHTHtHTHtHTHTHtHTHtHtHTHTHTHtHtHtHtHX", + "matrix": "[[-0.4668-0.8844i,0.0001-0.0001i],[-0.0002+0i,0.2953+0.9554i]]", + "offset": 0.00017977212934506352 + }, + { + "phase": 2.5445081376823837, + "gates": "HTHTHTHtHtHTHTHTHTHtHTHtHTHTHtHTHTHTHtHtHtHtHtHTHtHTHTHtHtHTHtH", + "matrix": "[[0.9956-0.094i,0+0.0001i],[-0-0.0001i,-0.7705+0.6375i]]", + "offset": 0.00006225245462643032 + }, + { + "phase": 5.692389043078397, + "gates": "HTHTHtHtHTHtHTHtHTHtHtHtHTHtHTHtHTHTHTHtHTHtHTHtHTHTHtHtHX", + "matrix": "[[-0.9567-0.2911i,-0.0003],[0.0003,-0.9567+0.2911i]]", + "offset": 0.0002579004484009042 + }, + { + "phase": 1.7720002297126953, + "gates": "HTHtHtHtHtHTHtHTHTHtHtHTHTHTHTHTHTHtHtHTHTHtHTHtHtHtHtHTH", + "matrix": "[[-0.7745-0.6325i,0.0003],[0.0003,0.7745-0.6325i]]", + "offset": 0.0002578548154108116 + }, + { + "phase": 5.703870368656178, + "gates": "HTHtHTHTHTHtHtHTHtHtHtHTHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHTHtHtHtH", + "matrix": "[[0.9947-0.1029i,-0.0003+0.0001i],[0.0003-0.0001i,0.7761-0.6306i]]", + "offset": 0.0003627025281841022 + }, + { + "phase": 0.21019480503801002, + "gates": "HtHtHTHTHTHtHtHTHTHTHTHTHTHTHTHTHTHTHTHTHtHtHTHTHTHtHtH", + "matrix": "[[0.4775+0.8786i,0.0003-0.0001i],[0.0003-0.0001i,0.2837+0.9589i]]", + "offset": 0.0003004870645264724 + }, + { + "phase": 3.354462815092597, + "gates": "HtHTHtHTHTHTHtHtHtHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHTHX", + "matrix": "[[-0.1062-0.9943i,0.0005-0.0001i],[-0.0005-0.0001i,-0.1062+0.9943i]]", + "offset": 0.0004970860914308363 + }, + { + "phase": 3.3599912896916955, + "gates": "HtHtHTHtHTHTHTHtHTHtHTHtHTHTHTHtHtHTHTHtHtHTHtHTHtHtHtHtHX", + "matrix": "[[0.78+0.6258i,0-0.0001i],[-0.0001+0i,-0.6258-0.78i]]", + "offset": 0.00011667364945193624 + }, + { + "phase": 0.2226729752237646, + "gates": "HTHTHtHtHTHtHtHtHTHtHtHTHTHtHTHTHtHtHTHtHTHtHTHtHTHTHTHTHtHtHtH", + "matrix": "[[-0.8756+0.483i,0.0003+0.0001i],[-0.0002+0.0003i,-0.9607+0.2777i]]", + "offset": 0.00034727025256318803 + }, + { + "phase": 4.943927317674555, + "gates": "HtHTHTHtHtHtHtHTHtHtHtHTHtHtHtHtHtHTHTHtHtHtHTHTHTHTHTHTHTHX", + "matrix": "[[0.4868+0.8735i,0.0003+0.0002i],[-0.0004-0.0001i,0.9619-0.2734i]]", + "offset": 0.0003918923454938493 + }, + { + "phase": 1.018412491234184, + "gates": "HtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtHTHtHtHTHtHTHtHTHTHTHtHTHtHtH", + "matrix": "[[-0.7845-0.6201i,-0.0001-0i],[-0+0.0001i,0.1162-0.9932i]]", + "offset": 0.00007214598561368627 + }, + { + "phase": 3.3793290321250997, + "gates": "HTHTHtHtHTHTHTHTHTHTHTHTHtHTHtHtHtHTHTHtHtHtHtHTHtHTHTHTHTHTHTH", + "matrix": "[[-0.2704+0.9627i,-0.0002-0.0002i],[0.0003+0i,0.4895-0.872i]]", + "offset": 0.0003162570238222237 + }, + { + "phase": 1.816017468912723, + "gates": "HtHTHTHTHtHtHtHTHTHTHtHtHtHTHtHTHtHTHTHtHTHTHtHtHTHtHtHtHtHX", + "matrix": "[[0.8701-0.4928i,-0.0001-0.0001i],[0.0002+0i,0.2668+0.9637i]]", + "offset": 0.0001797321752625048 + }, + { + "phase": 1.0338039381464226, + "gates": "HTHtHTHtHTHTHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHtHTHTHTHTHTHX", + "matrix": "[[-0.7893-0.6141i,-0.0002+0.0001i],[-0.0002+0.0001i,0.1239-0.9923i]]", + "offset": 0.0002124657562602609 + }, + { + "phase": 2.6109355255154845, + "gates": "HTHtHtHTHTHTHtHTHtHTHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHTHtHtHtH", + "matrix": "[[0.965+0.2622i,-0.0002-0i],[-0.0002+0i,-0.965+0.2622i]]", + "offset": 0.00023487804939671312 + }, + { + "phase": 1.831268095125588, + "gates": "HtHTHTHtHTHTHTHTHtHtHTHTHtHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtH", + "matrix": "[[0.7929+0.6093i,0+0.0003i],[0-0.0003i,-0.7929+0.6093i]]", + "offset": 0.0003011344147437865 + }, + { + "phase": 4.978857639444061, + "gates": "HTHTHTHtHtHtHtHtHTHTHTHTHtHtHTHtHtHtHTHTHtHTHtHtHTHtHTHtHtHTHtH", + "matrix": "[[0.8649-0.502i,-0+0.0001i],[0-0.0001i,-0.2566-0.9665i]]", + "offset": 0.00006224206134816504 + }, + { + "phase": 4.982532856232487, + "gates": "HTHTHTHtHTHTHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHTHTHtHTHTHTHX", + "matrix": "[[0.5036+0.8639i,0.0002+0i],[-0.0001-0.0001i,0.967-0.2548i]]", + "offset": 0.00018341653940881505 + }, + { + "phase": 5.774085396971339, + "gates": "HtHTHtHtHTHTHtHTHtHtHtHtHtHTHtHTHtHTHtHtHtHtHTHTHtHTHTHtHtHtHtH", + "matrix": "[[0.9905-0.1377i,-0.0003-0.0001i],[0.0001-0.0003i,0.7977-0.603i]]", + "offset": 0.0003192600625435521 + }, + { + "phase": 3.4238741756323448, + "gates": "HtHtHTHtHTHTHTHTHTHtHTHTHTHTHtHTHtHTHTHtHtHtHTHTHtHTHTHTHTHTHTHTHX", + "matrix": "[[-0.9901+0.1407i,-0.0003-0.0001i],[-0.0003+0.0001i,0.9901+0.1407i]]", + "offset": 0.00032410165723333745 + }, + { + "phase": 1.072227504013627, + "gates": "HTHTHTHtHTHTHtHtHTHtHtHTHtHtHtHtHtHtHTHTHTHtHTHTHtHTHtHtHtHtH", + "matrix": "[[0.8597-0.5108i,0.0002-0.0001i],[-0.0002-0.0001i,0.8597+0.5108i]]", + "offset": 0.00022078582428444808 + }, + { + "phase": 4.218047128630147, + "gates": "HtHtHTHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHTHtHtHTHtHtHtHtHtHtHtHTHtHX", + "matrix": "[[0.5971-0.8022i,-0+0.0001i],[-0.0001-0i,-0.9894-0.145i]]", + "offset": 0.00008082316983637322 + }, + { + "phase": 1.8642607124527955, + "gates": "HtHTHtHtHTHtHtHTHTHtHTHTHTHTHtHTHTHTHTHtHTHTHtHtHTHtHtHTHtH", + "matrix": "[[0.9699+0.2435i,-0.0003+0.0001i],[-0.0003+0.0001i,-0.5136+0.858i]]", + "offset": 0.00033693177310920686 + }, + { + "phase": 5.799742119738522, + "gates": "HtHTHTHTHtHTHtHtHTHtHtHtHTHTHTHtHTHtHtHTHtHtHTHTHTHTHtHtHtHtHtH", + "matrix": "[[0.5927-0.8054i,-0.0001+0.0001i],[-0-0.0001i,0.1504-0.9886i]]", + "offset": 0.00010777519688616777 + }, + { + "phase": 5.01939110344904, + "gates": "HtHtHtHtHtHTHtHTHTHtHtHtHTHTHtHtHTHTHTHtHtHTHtHTHTHTHTHTHX", + "matrix": "[[0.8069+0.5907i,-0.0003],[0.0003,0.8069-0.5907i]]", + "offset": 0.0002578914903068519 + }, + { + "phase": 1.0935157424897066, + "gates": "HTHTHTHtHtHtHtHTHtHtHtHTHtHtHTHtHtHtHTHTHTHtHTHTHTHtHTHtHtHTHtH", + "matrix": "[[-0.1535-0.9882i,-0+0.0001i],[0-0.0001i,0.8072-0.5902i]]", + "offset": 0.00006224795005712051 + }, + { + "phase": 2.672813320312269, + "gates": "HTHTHTHTHtHtHtHTHTHTHTHtHTHtHTHTHTHTHtHtHTHTHtHTHtHTHtHTHtHtH", + "matrix": "[[-0.852+0.5235i,-0.0002+0i],[-0+0.0002i,0.5235-0.852i]]", + "offset": 0.00019917302668380425 + }, + { + "phase": 1.8917560450760698, + "gates": "HTHtHtHtHTHtHtHtHtHtHTHtHtHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHtHX", + "matrix": "[[-0.9732-0.2301i,-0.0001+0.0001i],[-0.0001+0i,0.5254-0.8509i]]", + "offset": 0.0001297051543322817 + }, + { + "phase": 2.6798412261383193, + "gates": "HtHtHtHTHTHTHTHtHtHtHTHTHTHtHtHtHtHtHTHTHtHtHTHtHTHtHtHtHtH", + "matrix": "[[0.5839-0.8118i,-0.0001-0.0004i],[0.0004-0.0002i,-0.1611+0.9869i]]", + "offset": 0.00041891182434749294 + }, + { + "phase": 2.6848005148383782, + "gates": "HtHTHTHtHTHtHtHtHTHTHtHTHTHtHTHtHTHtHTHTHtHTHTHtHtHtHTHtHTHTHtH", + "matrix": "[[-0.5819+0.8132i,-0+0i],[-0+0i,0.1636-0.9865i]]", + "offset": 0.00002577235682046646 + }, + { + "phase": 2.690139996029986, + "gates": "HtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtHTHtHtHtHtHtHtHtHtHtHTHtHtHtH", + "matrix": "[[-0.5798+0.8148i,0.0001-0.0003i],[0.0001-0.0003i,0.1662-0.9861i]]", + "offset": 0.0002747215555262731 + }, + { + "phase": 5.839813597163463, + "gates": "HTHtHtHTHtHtHTHTHtHTHtHTHTHTHtHTHTHTHTHtHtHtHtHTHtHTHtHtHtHtHtHtH", + "matrix": "[[-0.9755-0.2199i,0.001-0.0005i],[-0.001-0.0005i,-0.9755+0.2199i]]", + "offset": 0.0010784505852097926 + }, + { + "phase": 2.7019133294363376, + "gates": "HTHTHtHTHtHtHTHtHtHTHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHTHtH", + "matrix": "[[-0.172-0.9851i,-0.0002-0.0002i],[-0-0.0003i,0.5749+0.8182i]]", + "offset": 0.00032129943555189407 + }, + { + "phase": 0.35184363519655015, + "gates": "HtHTHtHtHTHTHTHTHtHTHtHTHtHTHtHtHtHtHTHTHtHTHX", + "matrix": "[[-0.9846+0.175i,0.0005],[-0.0005,-0.9846-0.175i]]", + "offset": 0.0004599570550449239 + }, + { + "phase": 4.281565907428632, + "gates": "HTHtHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHtHtHX", + "matrix": "[[0.8207+0.5713i,0-0.0001i],[-0.0001-0.0001i,0.1764-0.9843i]]", + "offset": 0.0001078028603312531 + }, + { + "phase": 1.9287078815144763, + "gates": "HTHtHtHTHtHTHtHTHtHTHtHtHTHtHTHtHTHTHtHTHTHTHTHtHTHtHtHtHX", + "matrix": "[[0.5699-0.8217i,0.0003-0.0002i],[-0.0003-0.0002i,0.5699+0.8217i]]", + "offset": 0.0003758930843753156 + }, + { + "phase": 3.50843868362632, + "gates": "HtHtHTHTHTHtHTHTHtHtHTHtHTHtHtHTHtHTHtHtHTHTHtHTHTHTHtHtH", + "matrix": "[[0.9832-0.1824i,0.0001],[0.0001,-0.9832-0.1824i]]", + "offset": 0.00006734665618243356 + }, + { + "phase": 1.9434679722829395, + "gates": "HTHtHtHtHTHtHtHTHTHTHTHtHTHTHTHTHtHTHTHTHTHtHtHTHtHtHtHTH", + "matrix": "[[-0.5639+0.8259i,0.0003i],[0.0003i,-0.5639-0.8259i]]", + "offset": 0.00025787882506376683 + }, + { + "phase": 4.3028590988097575, + "gates": "HtHtHTHtHtHTHtHtHtHTHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHTHTH", + "matrix": "[[0.9824-0.1868i,0.0002+0i],[0.0001+0.0001i,-0.5625-0.8268i]]", + "offset": 0.00018342195908008807 + }, + { + "phase": 1.9523976282627624, + "gates": "HTHTHtHTHTHtHTHtHTHTHTHtHtHtHTHTHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtH", + "matrix": "[[0.8345-0.5509i,-0.0001+0.0001i],[0+0.0001i,0.2005+0.9797i]]", + "offset": 0.00013912458922238902 + }, + { + "phase": 0.3868949175035912, + "gates": "HtHtHtHtHTHTHtHtHtHTHtHTHTHTHtHtHtHtHTHtHTHTHtHtHTHTHtHTHTHtHtHX", + "matrix": "[[0.8331-0.5532i,-0.0002+0.0001i],[0.0002-0.0001i,0.9802-0.1979i]]", + "offset": 0.0002140173778844243 + }, + { + "phase": 5.100807237806366, + "gates": "HTHTHtHtHTHTHTHTHTHtHTHTHtHtHTHtHTHtHTHTHTHtHTHTHtHTHtHTHtHtHX", + "matrix": "[[-0.9812+0.193i,-0.0001+0.0003i],[0.0003-0.0001i,-0.193+0.9812i]]", + "offset": 0.00037035209778622574 + }, + { + "phase": 4.32397071011278, + "gates": "HTHtHtHTHTHtHTHtHTHTHTHtHtHTHTHTHTHTHTHtHTHTHTHtHtHtHtHtHtHTH", + "matrix": "[[0.5573+0.8303i,0.0001-0.0003i],[-0.0001-0.0003i,0.5573-0.8303i]]", + "offset": 0.0003703795652718583 + }, + { + "phase": 5.8962903911231646, + "gates": "HtHtHTHTHtHTHTHtHtHTHTHtHTHtHtHtHtHTHTHTHtHTHtHtHtHTHTHtHtHtHtHX", + "matrix": "[[0.9802-0.1979i,-0.0002+0.0001i],[0.0002-0.0001i,0.8331-0.5532i]]", + "offset": 0.0002140745866025612 + }, + { + "phase": 4.330787678916824, + "gates": "HTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtHtHtHTHTHtHTHTHtHtHtH", + "matrix": "[[0.8345+0.5509i,0.0001+0.0001i],[-0+0.0001i,0.2005-0.9797i]]", + "offset": 0.00013912458922238902 + }, + { + "phase": 1.980326236231007, + "gates": "HtHtHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHtHTHTHTHtHTHTHtHTHTH", + "matrix": "[[0.9824+0.1868i,0.0001-0.0001i],[0.0002-0i,-0.5625+0.8268i]]", + "offset": 0.00018341108404991042 + }, + { + "phase": 1.1981246813068536, + "gates": "HTHTHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHtHTHtHTHTHtHtHtHTHtHtHX", + "matrix": "[[0.8259-0.5639i,-0.0003],[0.0003,0.8259+0.5639i]]", + "offset": 0.00025787882506376683 + }, + { + "phase": 5.916339277143059, + "gates": "HtHTHTHtHTHTHTHtHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHtHTHtHtHTHX", + "matrix": "[[0.9832+0.1824i,-0.0001],[0.0001,0.9832-0.1824i]]", + "offset": 0.00006734665618243356 + }, + { + "phase": 4.3544774256651095, + "gates": "HtHTHTHtHTHtHTHtHTHtHTHTHtHTHtHTHtHtHTHtHtHtHtHTHtHTHTHTHX", + "matrix": "[[0.5699+0.8217i,0.0003+0.0002i],[-0.0003+0.0002i,0.5699-0.8217i]]", + "offset": 0.0003758930843753156 + }, + { + "phase": 2.0016193997509535, + "gates": "HtHTHTHtHtHTHtHTHTHTHTHtHTHTHtHTHtHtHtHtHTHtHtHTHtHTHTHTHTHTHTHX", + "matrix": "[[0.8207-0.5713i,0+0.0001i],[-0.0001+0.0001i,0.1764+0.9843i]]", + "offset": 0.0001078028603312531 + }, + { + "phase": 2.7897490183932425, + "gates": "HtHtHtHTHTHtHTHtHtHtHtHtHtHtHtHTHtHTHTHtHtHtH", + "matrix": "[[0.8199-0.5724i,0.0003-0.0003i],[0.0003-0.0003i,-0.5724+0.8199i]]", + "offset": 0.00045995705504505715 + }, + { + "phase": 3.5812719777432487, + "gates": "HTHtHtHtHtHTHTHTHtHtHtHTHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHtHtHtHtH", + "matrix": "[[0.9851+0.172i,-0.0002-0.0002i],[-0.0003-0i,-0.8182-0.5749i]]", + "offset": 0.00032129943555189407 + }, + { + "phase": 0.4475352650410329, + "gates": "HTHtHtHtHtHTHTHTHtHtHtHtHTHtHTHTHtHTHTHTHTHtHtHTHtHtHTHtHtHtHtHtH", + "matrix": "[[0.5326-0.8464i,-0.0008-0.0008i],[-0.0008-0.0008i,0.8464-0.5326i]]", + "offset": 0.0011778860763035923 + }, + { + "phase": 3.5930453111496004, + "gates": "HtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtHtHtHTHtHTHtHTHtHTHtHtHtHTHtH", + "matrix": "[[-0.5798-0.8148i,-0.0001-0.0003i],[-0.0001-0.0003i,0.1662+0.9861i]]", + "offset": 0.0002747215555262731 + }, + { + "phase": 3.598384792341208, + "gates": "HtHtHTHTHTHTHtHTHTHtHtHtHTHTHTHTHTHTHTHtHtHtHTHTHtHTHTHTHTHtHtH", + "matrix": "[[0.5819+0.8132i,-0-0i],[-0-0i,-0.1636-0.9865i]]", + "offset": 0.000025772356820493007 + }, + { + "phase": 3.603344081041267, + "gates": "HTHTHTHtHtHtHtHTHTHTHtHtHtHTHTHTHTHTHtHtHTHTHtHTHtHTHTHTHTH", + "matrix": "[[0.5839+0.8118i,-0.0001+0.0004i],[0.0004+0.0002i,-0.1611-0.9869i]]", + "offset": 0.00041891182434749294 + }, + { + "phase": 4.3914292466231295, + "gates": "HTHtHtHTHTHtHtHtHTHTHtHtHtHtHtHtHTHtHtHtHTHtHTHtHtHtHTHtHtHX", + "matrix": "[[0.2301+0.9732i,-0+0.0001i],[-0.0001+0.0001i,0.8509-0.5254i]]", + "offset": 0.00012969096484849582 + }, + { + "phase": 3.6103720516177233, + "gates": "HTHTHtHTHtHTHtHTHtHtHTHTHtHtHtHtHTHtHTHtHtHtHtHTHTHTHtHtHtHtH", + "matrix": "[[-0.852-0.5235i,-0-0.0002i],[-0.0002-0i,0.5235+0.852i]]", + "offset": 0.00019918088107595333 + }, + { + "phase": 5.189669564689879, + "gates": "HTHtHTHTHtHTHtHtHtHTHtHtHtHTHTHTHtHTHTHtHTHTHTHtHTHTHTHTHtHtHtH", + "matrix": "[[-0.1535+0.9882i,0+0.0001i],[-0-0.0001i,0.8072+0.5902i]]", + "offset": 0.00006224795005712051 + }, + { + "phase": 5.190200140239329, + "gates": "HtHTHtHTHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHTHTHtHTHtHTHTHtHtHtHtHtHtHX", + "matrix": "[[-0.9716+0.2366i,0.0002-0i],[-0+0.0002i,-0.2366+0.9716i]]", + "offset": 0.00015734503839920288 + }, + { + "phase": 0.483443196806152, + "gates": "HtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHtHTHTHtHTHTHTHtHtHtHtHTHtHtH", + "matrix": "[[0.8054-0.5927i,-0.0001-0i],[0.0001-0.0001i,0.9886-0.1504i]]", + "offset": 0.00010780263398794807 + }, + { + "phase": 4.418924594726791, + "gates": "HtHtHtHTHTHTHtHtHTHTHTHtHTHtHtHtHTHtHTHTHTHtHtHTHTHTHtHtHtH", + "matrix": "[[0.858+0.5136i,0.0001+0.0003i],[0.0001+0.0003i,0.2435-0.9699i]]", + "offset": 0.00033693264542966817 + }, + { + "phase": 2.065138178549439, + "gates": "HtHTHTHtHTHTHtHTHTHTHTHtHTHTHtHTHtHtHTHTHtHtHtHTHtHTHtHTHtHtHtHX", + "matrix": "[[0.5971+0.8022i,0+0.0001i],[0.0001-0i,-0.9894+0.145i]]", + "offset": 0.00008082316983637322 + }, + { + "phase": 5.210957838250015, + "gates": "HTHTHTHTHtHTHtHtHTHtHtHtHTHTHTHTHTHTHtHTHTHtHTHTHtHtHTHtHtHtH", + "matrix": "[[0.8597+0.5108i,-0.0002+0.0001i],[0.0002+0.0001i,0.8597-0.5108i]]", + "offset": 0.00022076143782847333 + }, + { + "phase": 2.8593111315472415, + "gates": "HTHTHtHTHtHtHtHtHtHTHtHtHtHtHTHtHTHtHtHTHTHTHtHtHTHtHtHtHtHtHtHtHX", + "matrix": "[[-0.9901-0.1407i,-0.0003+0.0001i],[-0.0003-0.0001i,0.9901-0.1407i]]", + "offset": 0.00032410165723333745 + }, + { + "phase": 0.5090999035362176, + "gates": "HtHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtHtHtHtHTHtHTHtHtHtHtHTHTHtHtHtH", + "matrix": "[[0.1377-0.9905i,-0.0003+0.0001i],[-0.0001-0.0003i,0.603-0.7977i]]", + "offset": 0.00031924275370701717 + }, + { + "phase": 1.3006523900898121, + "gates": "HTHTHTHtHTHTHtHtHtHtHtHTHtHtHtHTHTHTHTHTHtHTHTHtHTHTHTHX", + "matrix": "[[0.967-0.2548i,0.0002+0i],[-0.0001-0.0001i,0.5036+0.8639i]]", + "offset": 0.00018343591918503253 + }, + { + "phase": 1.304327667735525, + "gates": "HTHtHTHTHtHTHtHTHTHtHTHtHtHTHTHTHtHTHTHtHtHtHtHTHTHTHTHTHtHtHtH", + "matrix": "[[0.8649+0.502i,0+0.0001i],[-0-0.0001i,-0.2566+0.9665i]]", + "offset": 0.00006224206134816504 + }, + { + "phase": 2.0981297085330395, + "gates": "HtHTHtHtHTHtHTHTHtHtHtHtHTHTHTHTHtHTHtHTHTHTHtHtHTHtHTHtHtHtH", + "matrix": "[[0.9654-0.2606i,-0.0002+0i],[-0+0.0002i,-0.2606+0.9654i]]", + "offset": 0.00024432727625112107 + }, + { + "phase": 1.3175063701609497, + "gates": "HTHTHtHTHTHtHTHTHTHtHTHTHtHtHTHtHtHtHTHTHtHtHtHTHtHTHTHtHtHtHX", + "matrix": "[[0.7908-0.6121i,0.0001-0.0002i],[-0.0001-0.0002i,0.7908+0.6121i]]", + "offset": 0.00025710889136413385 + }, + { + "phase": 5.249381369033164, + "gates": "HtHTHtHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHtHtHTHTHtHTHtHtHtHtHtHX", + "matrix": "[[-0.7893+0.6141i,-0.0002-0.0001i],[-0.0002-0.0001i,0.1239+0.9923i]]", + "offset": 0.0002124657562602609 + }, + { + "phase": 4.467167838266863, + "gates": "HTHtHtHtHTHTHTHtHtHtHTHTHTHtHTHtHTHtHtHTHtHtHTHTHtHTHTHTHTHX", + "matrix": "[[0.8701+0.4928i,-0.0001+0.0001i],[0.0002-0i,0.2668-0.9637i]]", + "offset": 0.0001797321752625048 + }, + { + "phase": 2.9038562750544865, + "gates": "HtHtHTHTHtHtHtHtHtHtHtHtHTHtHTHTHTHtHtHTHTHTHTHtHTHtHtHtHtHtHtH", + "matrix": "[[-0.2704-0.9627i,-0.0002+0.0002i],[0.0003-0i,0.4895+0.872i]]", + "offset": 0.0003162570238222237 + }, + { + "phase": 5.2647728028789125, + "gates": "HtHTHTHTHTHtHTHTHTHTHTHTHtHtHtHTHTHtHtHTHtHTHtHtHtHtHtHTHTHtHtH", + "matrix": "[[0.6201+0.7845i,0.0001-0i],[-0-0.0001i,0.9932-0.1162i]]", + "offset": 0.00007208873298033892 + }, + { + "phase": 1.3392579895050316, + "gates": "HTHtHtHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHtHTHTHTHtHtHtHtHtHtHtHX", + "matrix": "[[0.4868-0.8735i,0.0003-0.0002i],[-0.0004+0.0001i,0.9619+0.2734i]]", + "offset": 0.0003918923454938493 + }, + { + "phase": 6.060512261113363, + "gates": "HTHTHTHtHtHtHtHTHtHTHtHTHtHTHTHtHtHTHtHtHTHTHtHTHTHTHtHTHTHtHtH", + "matrix": "[[-0.8756-0.483i,-0.0002-0.0003i],[0.0003-0.0001i,-0.9607-0.2777i]]", + "offset": 0.0003472757254054363 + }, + { + "phase": 2.9231940174878908, + "gates": "HTHTHtHTHtHtHtHTHtHTHtHTHtHtHtHTHTHtHtHTHTHtHTHtHTHTHTHTHX", + "matrix": "[[0.78-0.6258i,0+0.0001i],[-0.0001-0i,-0.6258+0.78i]]", + "offset": 0.00011667364945193624 + }, + { + "phase": 6.070315178877224, + "gates": "HtHTHtHtHTHtHTHtHtHtHTHTHtHtHtHTHTHTHtHtHTHtHtHTHtHtHtHtH", + "matrix": "[[0.1062-0.9943i,0.0005-0.0001i],[0.0005+0.0001i,-0.1062-0.9943i]]", + "offset": 0.0004970784771746163 + }, + { + "phase": 6.072990502141576, + "gates": "HTHTHtHtHtHTHTHtHtHtHtHtHtHtHtHtHtHtHtHtHTHTHtHtHtHTHTH", + "matrix": "[[0.4775-0.8786i,0.0003+0.0001i],[0.0003+0.0001i,0.2837-0.9589i]]", + "offset": 0.0003004870645264724 + }, + { + "phase": 0.5793149385234083, + "gates": "HTHTHTHtHTHTHtHtHtHTHtHtHtHTHtHtHTHTHTHtHTHTHTHtHTHTHtHtHtHTHtH", + "matrix": "[[0.9947+0.1029i,0.0003+0.0001i],[-0.0003-0.0001i,0.7761+0.6306i]]", + "offset": 0.0003627025281841022 + }, + { + "phase": 1.3695924238770978, + "gates": "HTHTHtHTHtHtHtHtHTHTHtHtHTHtHTHtHTHTHtHtHTHTHTHTHtHTHtHtHX", + "matrix": "[[-0.7745+0.6325i,-0.0003],[0.0003,-0.7745-0.6325i]]", + "offset": 0.0002578548154108116 + }, + { + "phase": 3.732388917690982, + "gates": "HTHtHtHTHTHTHTHTHTHTHtHTHTHTHTHTHTHtHTHTHTHTHTHTHTHtHtHTH", + "matrix": "[[-0.9567+0.2911i,0.0003],[0.0003,0.9567+0.2911i]]", + "offset": 0.0002579004484009042 + }, + { + "phase": 3.7386771694972025, + "gates": "HTHtHTHTHtHtHTHtHTHTHTHTHTHtHtHtHTHtHtHTHtHTHtHtHtHtHTHTHtHtHtH", + "matrix": "[[0.9956+0.094i,-0+0.0001i],[0-0.0001i,-0.7705-0.6375i]]", + "offset": 0.00006225245462643032 + }, + { + "phase": 2.955713934005173, + "gates": "HTHtHtHtHtHtHtHtHTHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHX", + "matrix": "[[-0.4668+0.8844i,0.0001+0.0001i],[-0.0002-0i,0.2953-0.9554i]]", + "offset": 0.00017977212934506352 + }, + { + "phase": 2.1778411195579324, + "gates": "HtHtHTHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHTHTHtHTHtHtH", + "matrix": "[[0.7673-0.6413i,0-0i],[0-0i,0.0891+0.996i]]", + "offset": 0.000051567699239651094 + }, + { + "phase": 2.1796765500287423, + "gates": "HtHtHTHtHTHtHTHtHtHTHTHtHtHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHtHX", + "matrix": "[[0.642+0.7667i,0.0001-0i],[0.0001+0.0001i,-0.9961+0.0881i]]", + "offset": 0.00010201997074209408 + }, + { + "phase": 5.329428274972949, + "gates": "HtHtHTHtHTHtHTHtHTHtHTHtHTHtHTHtHtHTHtHTHTHtHtHtHTHTHTHTHTHTHTHTH", + "matrix": "[[-0.8884-0.459i,-0.0001+0i],[0.0001+0i,-0.8884+0.459i]]", + "offset": 0.00007783586832078935 + }, + { + "phase": 5.333983207953646, + "gates": "HtHTHTHTHtHTHtHTHTHtHtHtHtHtHTHTHTHTHTHtHtHTHtHTHtHtHtHTHX", + "matrix": "[[-0.8895-0.457i,0.0001],[-0.0001,-0.8895+0.457i]]", + "offset": 0.0000673398957722982 + }, + { + "phase": 5.337296063756592, + "gates": "HTHTHTHtHTHtHTHTHTHtHTHtHtHtHTHtHtHTHTHTHTHtHTHTHtHtHTHtHtHtHtH", + "matrix": "[[-0.6482-0.7615i,-0.0002+0.0003i],[-0+0.0003i,-0.9968+0.0802i]]", + "offset": 0.00035108727849328695 + }, + { + "phase": 6.127563574504543, + "gates": "HtHtHtHTHTHtHTHTHTHtHtHtHTHtHTHTHtHTHTHtHtHtHTHTHtHTHtHtHtHtH", + "matrix": "[[0.997+0.0777i,-0.0003-0i],[0.0003-0i,0.997-0.0777i]]", + "offset": 0.0003258457111841655 + }, + { + "phase": 4.563594586382136, + "gates": "HtHtHtHtHtHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHTHtHtHtHtHtHtH", + "matrix": "[[0.8929+0.4503i,0.0001+0.0002i],[0.0001+0.0002i,0.313-0.9498i]]", + "offset": 0.0002640271995224015 + }, + { + "phase": 3.7807895719801685, + "gates": "HTHtHTHTHTHTHTHtHtHtHtHtHTHTHtHtHTHtHtHTHTHTHTHTHtHTHTHtHtHTH", + "matrix": "[[0.3142+0.9494i,-0.0001-0.0001i],[0.0001-0.0001i,0.3142-0.9494i]]", + "offset": 0.00014932094101439324 + }, + { + "phase": 6.143366373306217, + "gates": "HtHTHTHTHTHTHtHTHtHtHtHtHTHTHtHtHtHtHtHtHtHTHtHtHTHTHtHtHtHtH", + "matrix": "[[0.0699-0.9976i,-0+0.0001i],[-0-0.0001i,-0.0699-0.9976i]]", + "offset": 0.0000825065236582256 + }, + { + "phase": 5.362799914932121, + "gates": "HtHTHTHTHtHtHTHTHTHtHTHTHTHTHTHTHTHTHtHTHTHtHTHtHTHTHTHTHTHTHTHTH", + "matrix": "[[-0.9476+0.3195i,0.0002-0.0001i],[-0.0001+0.0002i,-0.3195+0.9476i]]", + "offset": 0.0001631981015671402 + }, + { + "phase": 0.6564657558366065, + "gates": "HtHtHtHTHTHTHtHTHtHTHtHTHTHTHtHtHtHTHtHTHtHTHtHtHtHTHTHTHX", + "matrix": "[[-0.9466+0.3224i,-0.0003],[0.0003,-0.9466-0.3224i]]", + "offset": 0.00025785207825477287 + }, + { + "phase": 3.804412558122884, + "gates": "HtHtHTHTHtHTHtHTHTHtHtHtHtHTHTHtHtHTHtHtHTHTHtHTHTHTHTHtHtHTHtHX", + "matrix": "[[-0.7491+0.6625i,0-0.0001i],[0.0001+0i,0.9981-0.0613i]]", + "offset": 0.00008079919060435989 + }, + { + "phase": 6.1643037384932695, + "gates": "HTHTHtHtHTHTHTHTHTHTHTHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHTHtH", + "matrix": "[[0.945-0.3271i,0+0.0002i],[0.0001+0.0001i,0.8995-0.4369i]]", + "offset": 0.00017974186232668 + }, + { + "phase": 4.597223982420735, + "gates": "HTHtHtHtHTHTHTHtHtHTHtHTHTHTHtHTHtHtHTHTHTHTHtHTHtHTHTHTHX", + "matrix": "[[0.9983+0.0576i,0.0003-0.0001i],[-0.0001+0.0003i,-0.0576-0.9983i]]", + "offset": 0.00036364631627993634 + }, + { + "phase": 3.031959289933453, + "gates": "HTHTHtHtHTHTHTHTHTHtHtHTHtHtHTHTHtHTHtHTHtHtHtHTHtHtHtHTHtH", + "matrix": "[[0.3315+0.9435i,-0.0001-0.0001i],[-0-0.0002i,-0.4327-0.9015i]]", + "offset": 0.00017978728985155998 + }, + { + "phase": 4.608443882091515, + "gates": "HTHTHtHtHtHtHtHTHtHtHtHTHTHTHtHtHTHtHTHtHtHTHTHtHtHTHTHTHTHTHTHTH", + "matrix": "[[0.9986+0.0519i,0+0.0001i],[0.0001+0i,-0.0519-0.9986i]]", + "offset": 0.00012143194023799926 + }, + { + "phase": 4.612585402405033, + "gates": "HtHtHtHTHtHTHTHtHtHtHtHtHTHTHtHtHtHtHTHTHtHtHX", + "matrix": "[[0.671+0.7415i,0.0007-0.0005i],[-0.0007-0.0005i,0.671-0.7415i]]", + "offset": 0.0007966689886370347 + }, + { + "phase": 3.830081779133878, + "gates": "HTHTHtHtHTHTHtHTHTHtHtHtHTHTHTHTHtHTHtHTHTHtHtHtHtHtHtHtHtHTHtH", + "matrix": "[[0.9988+0.0484i,0.0001-0.0002i],[-0+0.0002i,-0.7405-0.672i]]", + "offset": 0.0001936690541284997 + }, + { + "phase": 4.622006836560892, + "gates": "HtHtHTHTHtHTHtHTHtHtHtHtHTHtHtHTHtHtHtHTHtHTHtHTHtHTHTHtHtHtH", + "matrix": "[[0.7383-0.6744i,-0.0001+0.0001i],[-0.0001-0.0001i,-0.7383-0.6744i]]", + "offset": 0.0001493254637478075 + }, + { + "phase": 3.0590024548888683, + "gates": "HtHtHtHTHTHTHtHtHtHtHTHTHtHtHTHTHtHtHTHTHTHTHtHtHtHTHTHTHX", + "matrix": "[[0.0413-0.9991i,0.0003],[-0.0003,0.0413+0.9991i]]", + "offset": 0.00025788197788424575 + }, + { + "phase": 5.417046441963183, + "gates": "HtHTHtHTHTHTHtHtHtHtHTHtHtHTHtHtHTHTHTHtHTHtHTHTHTHTHtHtHtHtHtH", + "matrix": "[[0.7351-0.678i,-0.0002-0.0001i],[-0.0002-0i,-0.0404-0.9992i]]", + "offset": 0.00019022037761155574 + }, + { + "phase": 3.0688132358722204, + "gates": "HtHTHTHtHTHtHtHTHTHtHTHTHTHTHtHtHtHtHTHtHtHTHTHtHTHtHtHTHX", + "matrix": "[[-0.0364+0.9993i,-0.0001],[0.0001,-0.0364-0.9993i]]", + "offset": 0.00006737107437143244 + }, + { + "phase": 4.641595395924654, + "gates": "HTHTHTHTHtHtHtHTHtHTHtHTHtHtHTHTHTHtHtHTHtHTHtHtHTHTHTHTHTHX", + "matrix": "[[-0.3497-0.9368i,-0-0.0001i],[0.0001-0.0001i,-0.9098+0.4151i]]", + "offset": 0.00010200231523946558 + }, + { + "phase": 0.7216912723172444, + "gates": "HtHtHTHtHTHTHTHtHTHTHTHtHTHtHtHtHtHtHTHTHTHTHTHtHtHtHTHtHtHtHtHtHX", + "matrix": "[[-0.3531-0.9356i,0.0001-0i],[0.0001+0i,0.3531-0.9356i]]", + "offset": 0.00007784561433668027 + }, + { + "phase": 2.2980804228952847, + "gates": "HTHTHtHtHTHTHtHtHtHtHtHTHTHtHTHTHTHtHTHTHtHtHtHtHTHtHtHtHtHtHtHX", + "matrix": "[[0.6863+0.7274i,-0.0002-0.0003i],[-0.0004+0.0001i,-0.9996+0.0291i]]", + "offset": 0.00036194391950827886 + }, + { + "phase": 6.2301411880051525, + "gates": "HtHtHtHtHTHTHTHtHtHtHTHtHtHtHtHtHtHtHTHtHtHtHTHTHTHtHtHtHtH", + "matrix": "[[-0.358-0.9337i,0.0001-0.0001i],[0.0001-0.0001i,-0.407-0.9134i]]", + "offset": 0.00016089850040265497 + }, + { + "phase": 0.7357912101026716, + "gates": "HTHtHtHtHTHTHTHTHTHtHtHtHtHtHTHtHTHTHtHTHtHtHTHtHTHTHtHTHtHtH", + "matrix": "[[0.9141+0.4055i,-0.0003+0.0004i],[-0.0004+0.0003i,0.4055+0.9141i]]", + "offset": 0.0004624081231701203 + }, + { + "phase": 3.098956406680048, + "gates": "HTHtHtHTHTHtHTHtHtHtHTHtHtHtHTHtHtHTHTHTHTHTHTHtHTHTHtHtHtH", + "matrix": "[[0.3629+0.9318i,0.0001+0.0001i],[0+0.0002i,-0.4023-0.9155i]]", + "offset": 0.00017977220895511628 + }, + { + "phase": 5.45857924084102, + "gates": "HTHTHTHtHTHTHTHtHTHTHTHtHTHtHTHTHtHTHtHTHtHTHtHTHtHTHTHtHtHtHtH", + "matrix": "[[-0.7208+0.6931i,-0.0003-0.0002i],[-0.0003-0i,0.0196+0.9998i]]", + "offset": 0.0003510990602884475 + }, + { + "phase": 4.676898975759298, + "gates": "HTHtHtHTHtHTHtHtHtHTHtHtHtHtHTHTHtHTHTHTHtHTHTHTHtHtHtHTHtHtHtH", + "matrix": "[[-0.399+0.9169i,-0-0.0002i],[0.0001+0.0002i,0.9305+0.3662i]]", + "offset": 0.00019367357111501623 + }, + { + "phase": 4.682263123367977, + "gates": "HtHTHTHTHtHTHtHtHTHtHTHtHTHtHtHtHtHtHtHtHTHtHTHTHTHtHTHtHtH", + "matrix": "[[0.3966-0.918i,0.0001+0.0001i],[-0-0.0001i,-0.9295-0.3687i]]", + "offset": 0.00012969782044684015 + }, + { + "phase": 2.3298059602917407, + "gates": "HTHTHtHTHTHtHTHTHTHTHTHtHTHTHTHtHTHTHTHTHTHtHTHTHtHTHTH", + "matrix": "[[-0.0132+0.9999i,-0.0001-0.0003i],[-0.0001-0.0003i,-0.7164-0.6977i]]", + "offset": 0.0003004867581136003 + }, + { + "phase": 2.33369617878645, + "gates": "HTHtHTHtHTHTHTHtHTHtHTHTHtHtHtHtHTHtHTHTHtHtHtHtHtHTHtHtHtHtHtH", + "matrix": "[[-0.715+0.6991i,0.0001+0i],[-0.0001-0i,-0.0112-0.9999i]]", + "offset": 0.0000622479028673667 + }, + { + "phase": 4.699865171769091, + "gates": "HTHtHtHTHtHtHtHTHtHTHTHTHtHTHtHtHtHTHtHtHtHTHtHTHTHTHtHtHX", + "matrix": "[[-0.7115+0.7027i,0.0001+0.0005i],[0.0001-0.0005i,0.7115+0.7027i]]", + "offset": 0.0004970758555279916 + }, + { + "phase": 1.5632051087086962, + "gates": "HTHTHtHTHTHtHtHTHTHtHtHtHTHtHTHtHtHTHTHtHTHtHTHtHtHTHTHtHtHtHtHX", + "matrix": "[[-0.9253+0.3792i,-0.0001+0.0001i],[0+0.0002i,-0.3862-0.9224i]]", + "offset": 0.00015883899015687483 + }, + { + "phase": 0.7815327751182338, + "gates": "HtHtHtHTHtHTHTHtHtHTHTHtHTHtHtHtHtHtHtHtHtHtHtHTHTHTHtHtHtHtHtHtH", + "matrix": "[[0.3845-0.9231i,0+0.0001i],[0.0001+0i,0.9231-0.3845i]]", + "offset": 0.00013886290022106196 + } +] \ No newline at end of file diff --git a/source/npm/qsharp/test/bloch.mjs b/source/npm/qsharp/test/bloch.mjs new file mode 100644 index 00000000000..7aa4ee31973 --- /dev/null +++ b/source/npm/qsharp/test/bloch.mjs @@ -0,0 +1,377 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import assert from "node:assert"; +import { describe, it } from "node:test"; + +import { + Ident, + PauliX, + PauliY, + PauliZ, + Hadamard, + SGate, + TGate, + Cplx, + vec2, + m2x2, + Ket0, + Ket1, + KetPlus, + KetMinus, + KetPlusI, + KetMinusI, + Rotations, + compare, +} from "../dist/ux/cplx.js"; +import { + MAX_GATE_SEQUENCE_LENGTH, + parseGateSequence, + formatGateSequence, + encodeGatesUrl, + decodeGatesUrl, +} from "../dist/ux/bloch/blochGates.js"; +import { Vector3 } from "three"; + +describe("Gate combos", () => { + it("HZH† = X", () => { + const HZHt = Hadamard.mul(PauliZ).mul(Hadamard.adjoint()); + assert(HZHt.compare(PauliX)); + }); + + it("SS† = I", () => { + const SSt = SGate.mul(SGate.adjoint()); + assert(SSt.compare(Ident)); + }); + + it("TT = S", () => { + const TT = TGate.mul(TGate); + assert(TT.compare(SGate)); + }); + + it("transposes", () => { + const yTranspose = m2x2("0,i,-i,0"); + assert(PauliY.transpose().compare(yTranspose)); + }); +}); + +describe("Gate application", () => { + it("Applies Hadamard to |0>", () => { + const result = Hadamard.mulVec2(Ket0); + assert(result.compare(KetPlus)); + }); + + it("Applies ZH to |0>", () => { + const result = PauliZ.mulVec2(Hadamard.mulVec2(Ket0)); + + assert(result.compare(KetMinus)); + }); + + it("Applies XH to |0>", () => { + const result = PauliX.mulVec2(Hadamard.mulVec2(Ket0)); + + assert(result.compare(KetPlus)); + }); + + it("Applies X to |0>", () => { + const result = PauliX.mulVec2(Ket0); + assert(result.compare(Ket1)); + }); + + it("Applies Y to |0>", () => { + const result = PauliY.mulVec2(Ket0); + const expected = vec2("0,i"); + assert(result.compare(expected)); + }); + + it("|0> lands in |+i> after Hadamard and SGate", () => { + const Xplus = Hadamard.mulVec2(Ket0); + const result = SGate.mulVec2(Xplus); + assert(result.compare(KetPlusI)); + }); + + it("|1> lands in |-i> after Hadamard and SGate", () => { + const Xneg = Hadamard.mulVec2(Ket1); + const result = SGate.mulVec2(Xneg); + assert(result.compare(KetMinusI)); + }); +}); + +describe("Math tests", () => { + it("Checks tolerance inside bounds", () => { + const a = new Cplx(1.0000002, 0); + assert(Ident.a.compare(a)); + }); + + it("Checks tolerance outside bounds", () => { + const a = new Cplx(1.000002, 0); + assert(!Ident.a.compare(a)); + }); + + it("Checks matrix equality", () => { + const mx = m2x2("1,0,0,1"); + assert(mx.compare(Ident)); + }); + + it("Checks matrix inequality", () => { + const mx = m2x2("1,0,0,i"); + assert(!mx.compare(Ident)); + }); + + it("Accurately converts to and from polar", () => { + const c1 = new Cplx(3.14, 2); + const pol = c1.toPolar(); + const c2 = Cplx.fromPolar(pol.magnitude, pol.phase); + assert(c1.compare(c2)); + }); + + it("Checks the string representation of a complex number", () => { + let a = new Cplx(1, 1); + assert(a.toString() === "1+i"); + + a = new Cplx(1, -1); + assert(a.toString() === "1-i"); + + a = new Cplx(1, 0); + assert(a.toString() === "1"); + + a = new Cplx(0, 1); + assert(a.toString() === "i"); + + a = new Cplx(0, -1); + assert(a.toString() === "-i"); + + a = new Cplx(0, 0); + assert(a.toString() === "0"); + + a = new Cplx(1, 1e-10); + assert(a.toString() === "1"); + + a = new Cplx(-1e-9, 1); + assert(a.toString() === "i"); + + a = new Cplx(1, 1).mul(Math.SQRT1_2); + assert(a.toString() === "0.7071+0.7071i"); + }); +}); + +describe("Rotation tests", () => { + it("Rotates by X", () => { + const qubit = new Rotations(50); + assert(qubit.gates.length === 0); + qubit.rotateX(); + assert(qubit.gates.length === 1); + assert(qubit.gates[0].path.length === 50); + const pos = qubit.currPosition; + assert(compare(pos.w, 0)); + assert(compare(pos.x, 0)); + assert(compare(pos.y, 0)); + assert(compare(pos.z, 1)); + }); + + it("Rotates by H", () => { + const qubit = new Rotations(); + qubit.rotateH(); + const pos = qubit.currPosition; + assert(compare(pos.w, 0)); + assert(compare(pos.x, 0)); + assert(compare(pos.y, Math.SQRT1_2)); + assert(compare(pos.z, Math.SQRT1_2)); + }); + + it("Rotates by H then T twice", () => { + const qubit = new Rotations(50); + qubit.rotateH(); + qubit.rotateZ(Math.PI / 4); + qubit.rotateZ(Math.PI / 4); + assert(qubit.gates[0].name === "H"); + assert(qubit.gates[1].name === "T"); + assert(qubit.gates[1].path.length === 12); + assert(qubit.gates[2].name === "T"); + + const zeroPos = new Vector3(0, 1, 0); + zeroPos.applyQuaternion(qubit.currPosition); + + assert(compare(zeroPos.x, 1)); + assert(compare(zeroPos.y, 0)); + assert(compare(zeroPos.z, 0)); + }); + + it("Gets the path length of Pi", () => { + const qubit = new Rotations(); + qubit.rotateH(); // Put the point on the equator + + // Calculate the path length of rotating half way around the Bloch Z axis + const pathLen = qubit.getPathLength(new Vector3(0, 1, 0), Math.PI); + assert(compare(pathLen, Math.PI)); + }); + + it("Gets the path length of 0", () => { + const qubit = new Rotations(); + + // Calculate the path length of rotating half way around the Bloch Z axis + const pathLen = qubit.getPathLength(new Vector3(0, 1, 0), Math.PI); + assert(compare(pathLen, 0)); + }); + + it("Gets the path length of a T gate", () => { + const qubit = new Rotations(); + qubit.rotateH(); // Put the point on the equator + qubit.rotateZ(Math.PI / 4); // Rotate by T + + // Calculate the path length of rotating by T again + const pathLen = qubit.getPathLength(new Vector3(0, 1, 0), Math.PI / 4); + assert(compare(pathLen, Math.PI / 4)); + }); + + it("Gets the path length of a Y rotation after a T gate", () => { + const qubit = new Rotations(); + qubit.rotateH(); // Put the point on the equator + qubit.rotateZ(Math.PI / 4); // Rotate by T + + // Calculate the path length of rotating around the Bloch X axis + const pathLen = qubit.getPathLength(new Vector3(0, 0, 2), Math.PI); + + // Radius is 1 / sqrt 2, and circumference is Pi + const expected = Math.PI * Math.SQRT1_2; + assert(compare(pathLen, expected)); + }); + + it("Rotates by -T", () => { + const qubit = new Rotations(64); + qubit.rotateH(); + const minusTDistance = qubit.getPathLength( + new Vector3(0, 1, 0), + -Math.PI / 4, + ); + assert(compare(minusTDistance, Math.PI / 4)); + + qubit.rotateZ(-Math.PI / 4); + assert(qubit.gates[1].path.length === 16); + + const bitPos = new Vector3(0, 1, 0); + bitPos.applyQuaternion(qubit.currPosition); + assert(compare(bitPos.x, -Math.SQRT1_2)); + assert(compare(bitPos.y, 0)); + assert(compare(bitPos.z, Math.SQRT1_2)); + }); +}); + +describe("It has correct path entries", () => { + it("returns the first point", () => { + const qubit = new Rotations(64); + qubit.rotateY(); + assert(qubit.gates.length === 1); + assert(qubit.gates[0].path.length === 64); + + const after1Percent = qubit.getRotationAtPercent(qubit.gates[0], 0.01); + assert(after1Percent.path.length === 1); + + const after50Percent = qubit.getRotationAtPercent(qubit.gates[0], 0.49); + assert(after50Percent.path.length === 32); + + const after99Percent = qubit.getRotationAtPercent(qubit.gates[0], 0.99); + assert(after99Percent.path.length === 64); + }); +}); + +describe("parseGateSequence", () => { + it("parses the whitespace-separated canonical form", () => { + const r = parseGateSequence("H Rx(1.5708) SX X S'"); + assert.strictEqual(r.modified, false); + assert.deepStrictEqual(r.gates, [ + { kind: "H" }, + { kind: "Rx", angle: 1.5708 }, + { kind: "SX" }, + { kind: "X" }, + { kind: "S'" }, + ]); + }); + + it("returns empty for falsy input", () => { + for (const v of ["", undefined, null]) { + const r = parseGateSequence(v); + assert.deepStrictEqual(r.gates, []); + assert.strictEqual(r.modified, false); + } + }); + + it("is case-insensitive and tolerates arbitrary whitespace", () => { + const r = parseGateSequence(" x \t y z\nrz(0.5) sx "); + assert.deepStrictEqual(r.gates, [ + { kind: "X" }, + { kind: "Y" }, + { kind: "Z" }, + { kind: "Rz", angle: 0.5 }, + { kind: "SX" }, + ]); + assert.strictEqual(r.modified, false); + }); + + it("drops incomplete or garbage tokens and reports modification", () => { + // `Rx(1.5` is an in-progress rotation (no closing paren) and `Q` is + // unknown; both are dropped, so the result is flagged modified. + const r = parseGateSequence("H Rx(1.5 Q X"); + assert.deepStrictEqual(r.gates, [{ kind: "H" }, { kind: "X" }]); + assert.strictEqual(r.modified, true); + }); + + it("only allows the adjoint apostrophe on S, T, and SX", () => { + const r = parseGateSequence("S' T' SX' X'"); + // X' is invalid (X is its own inverse); the whole token is dropped. + assert.deepStrictEqual(r.gates, [ + { kind: "S'" }, + { kind: "T'" }, + { kind: "SX'" }, + ]); + assert.strictEqual(r.modified, true); + }); + + it("caps the number of gates at MAX_GATE_SEQUENCE_LENGTH", () => { + const overflow = "X ".repeat(MAX_GATE_SEQUENCE_LENGTH + 5); + const r = parseGateSequence(overflow); + assert.strictEqual(r.gates.length, MAX_GATE_SEQUENCE_LENGTH); + assert.strictEqual(r.modified, true); + }); +}); + +describe("formatGateSequence", () => { + it("renders the canonical whitespace-separated form", () => { + const gates = [ + { kind: "H" }, + { kind: "Rx", angle: 1.5708 }, + { kind: "SX" }, + { kind: "S'" }, + { kind: "T'" }, + { kind: "SX'" }, + ]; + assert.strictEqual(formatGateSequence(gates), "H Rx(1.5708) SX S' T' SX'"); + }); + + it("round-trips through parse -> format", () => { + const text = "H Rx(1.5708) SX X S' T' SX' Ry(0.25) Rz(3.14159)"; + const gates = parseGateSequence(text).gates; + assert.strictEqual(formatGateSequence(gates), text); + }); +}); + +describe("URL gate codec", () => { + it("encodes gates into an ultra-compact self-delimiting form", () => { + const gates = parseGateSequence("H Rx(1.5708) SX X S'").gates; + assert.strictEqual(encodeGatesUrl(gates), "Hx1.5708VXs"); + }); + + it("round-trips through encode -> decode", () => { + const text = "H Rx(1.5708) SX X S' T' SX' Ry(0.25) Rz(3.14159)"; + const gates = parseGateSequence(text).gates; + const decoded = decodeGatesUrl(encodeGatesUrl(gates)); + assert.strictEqual(decoded.modified, false); + assert.deepStrictEqual(decoded.gates, gates); + }); + + it("decodes an empty string to no gates", () => { + const r = decodeGatesUrl(""); + assert.deepStrictEqual(r.gates, []); + assert.strictEqual(r.modified, false); + }); +}); diff --git a/source/npm/qsharp/tools/rz-synthesis.ts b/source/npm/qsharp/tools/rz-synthesis.ts new file mode 100644 index 00000000000..f3bf7fe2081 --- /dev/null +++ b/source/npm/qsharp/tools/rz-synthesis.ts @@ -0,0 +1,323 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/* +Generator source for checked-in Rz synthesis lookup artifacts. + +This script regenerates: + - source/npm/qsharp/rz-array.json + - source/npm/qsharp/rz-details.json + +It is intentionally not on the normal build path. Keep this file in-repo so +the lookup data remains reproducible when synthesis parameters are updated. + +Run with: npm run rz +*/ + +import { compare, Hadamard, Ident, M2x2, PauliX, TGate } from "../ux/cplx.js"; +import { writeFileSync } from "node:fs"; + +// The below two constants define how many points in a 2*PI circle we want to find, and the +// tolerance for error off the plane (i.e. how much it may affect the 0 or 1 magnitude). + +// An epsilon of 0.002 takes about 500M tries to find 1256 points, mostly containing around 50 - 60 gates +// An epsilon of 0.001 takes about 4.4B tries to find 1256 points, mostly containing around 64 gates +const points = Math.floor(Math.PI * 2 * 200); // 1256 points around the sphere +const epsilon = 0.001; + +// We only find 1/8 of the total points, as the other 7/8 can be derived from the 1/8 using a simple +// T, S, ST, Z, ZT, S*, or T* addition, which is cheaper than any further Hadamard + T sequences. +if (points % 8 !== 0) throw "Points must be a multiple of 8"; +const phaseCount = points / 8; +let phaseCountFound = 0; + +// We store the the calculated matrices in a buffer for all permutations up to 2^24 operations. +// That way once the buffer is full, we can check beyond 2^24 operations by multiplying the pre-calculated matrices. +// +// i.e. If A is a matrix after multiplying "HTHTHT...", and B is a matrix after multiplying "HtHtHt...", +// then B.mul(A) is just one matrix multiplication that is equivalent to "HTHTHT...HtHtHt..." +// +// To optimize space and avoid saving the list of operations, we can simply map the index to a list of operations. +// The power of 2 indicates how many operations are in that index, i.e. +// - Indices 0 & 1 have 1 op (2 permutations) +// - Indices 2, 3, 4, 5 have 2 ops (4 permutations) +// - Index 6, 7, 8, 9, 10, 11, 12, 13 have 3 ops (8 permutations) +// - etc. +// The Math.log(x) function returns 0 for 1, 1 for 2, 2 for 4, 3 for 8, etc. +const opCountForIndex = (x: number) => Math.floor(Math.log2(x + 2)); +const startIndexForOpCount = (ops: number) => 2 ** ops - 2; + +function indexToOpSequence(idx: number): string[] { + // We'll use op 'A' to indicate H then T, and 'B' to indicate H then T_adjoint. + const result: string[] = []; + const ops = opCountForIndex(idx); + // Once we know how many ops we have, we can just iterate through the bits of the index + for (let i = 0; i < ops; i++) { + if (idx & 0x01) { + result.push("A"); + } else { + result.push("B"); + } + idx >>= 1; + } + + return result; +} + +// Convert the op sequence (which may include 'A' and 'B') to the unitary gate sequence (which +// may include H, X, etc.). We'll also remove any HH sequences as they are no-ops. +function opSequenceToGateSequence(seq: string[]): string { + return seq + .map((op) => (op === "A" ? "HT" : op === "B" ? "Ht" : op)) + .join("") + .replace(/HH/g, ""); +} + +// Pre-calculate the matrix for the Hadamard and T / T_adjoint sequences +const Aseq = TGate.mul(Hadamard); +const Bseq = TGate.adjoint().mul(Hadamard); + +const MatrixLenBytes = 4 * 2 * 4; // 4 bytes in a float, 2 floats in a complex, 4 complex values in a 2x2 matrix +const EntryCount = startIndexForOpCount(25); // Test up to 2^24 permutations + +console.log(`Matrix entries to pre-calculate: ${EntryCount}`); +console.log(`Using an epsilon of ${epsilon}`); +console.log(`Phases to find: ${phaseCount}`); + +// Buffer (and view) for the pre-calculated matrices +const entryBuffer = new ArrayBuffer(EntryCount * MatrixLenBytes); +const bufferView = new DataView(entryBuffer); + +const phaseEntries: Array<{ + phase: number; + sequence: string; + matrix: M2x2; + offset: number; +}> = []; + +// This is called once we find what looks like a valid Rz to see if we should save it. +function onPhaseFound(phase: number, ops: string[], matrix: M2x2) { + const phaseIdx = Math.round((phase * points) / (2 * Math.PI)); + const segment = phaseIdx % phaseCount; + + if ( + phaseEntries[segment] === undefined || + matrix.b.mag() * 1.25 < phaseEntries[segment].offset // 25% error improvement is worth extra gates + ) { + // Track if we found a new phase point + if (phaseEntries[segment] === undefined) ++phaseCountFound; + phaseEntries[segment] = { + phase, + sequence: opSequenceToGateSequence(ops), + matrix, + offset: matrix.b.mag(), + }; + checkEntry(phaseEntries[segment]); + } +} + +// Validate if the phase entry is correct as we go (mainly for debugging/verification) +function checkEntry(entry: { phase: number; sequence: string; matrix: M2x2 }) { + let state = Ident.mul(1); + for (const gate of entry.sequence) { + if (gate === "H") { + state = Hadamard.mul(state); + } else if (gate === "X") { + state = PauliX.mul(state); + } else if (gate === "T") { + state = TGate.mul(state); + } else if (gate === "t") { + state = TGate.adjoint().mul(state); + } + } + if (!state.isDiagonal(epsilon)) { + console.error(`offset error: `, entry); + } + if (!compare(state.phase(), entry.phase, epsilon)) { + console.error(`Phase mismatch: ${state.phase()} != ${entry.phase}`, entry); + } +} + +function writeMatrixToBuffer(idx: number, matrix: M2x2) { + const offset = idx * MatrixLenBytes; + bufferView.setFloat32(offset + 0, matrix.a.re); + bufferView.setFloat32(offset + 4, matrix.a.im); + bufferView.setFloat32(offset + 8, matrix.b.re); + bufferView.setFloat32(offset + 12, matrix.b.im); + bufferView.setFloat32(offset + 16, matrix.c.re); + bufferView.setFloat32(offset + 20, matrix.c.im); + bufferView.setFloat32(offset + 24, matrix.d.re); + bufferView.setFloat32(offset + 28, matrix.d.im); +} + +// Rather than return a new matrix, which means allocating a new object, we'll just update +// an existing one passed as a parameter. This is a bit faster and saves on memory allocation +// if the caller passes in the same working matrix every time. +function setMatrixFromBuffer(idx: number, matrix: M2x2) { + const offset = idx * MatrixLenBytes; + matrix.a.re = bufferView.getFloat32(offset + 0); + matrix.a.im = bufferView.getFloat32(offset + 4); + matrix.b.re = bufferView.getFloat32(offset + 8); + matrix.b.im = bufferView.getFloat32(offset + 12); + matrix.c.re = bufferView.getFloat32(offset + 16); + matrix.c.im = bufferView.getFloat32(offset + 20); + matrix.d.re = bufferView.getFloat32(offset + 24); + matrix.d.im = bufferView.getFloat32(offset + 28); +} + +// This turns an array of gates into an array of gates, expanding any buffer indices in the array +// into the gate sequence. The ability to pass in a buffer index is an optimization to not have to +// allocate the list of gates as a string array on every iteration if it may not be needed. +function gatesList(gates: Array): string[] { + return gates + .map((entry) => { + if (typeof entry === "number") { + return indexToOpSequence(entry); + } else { + return entry; + } + }) + .flat(); +} + +function checkMatrix(matrix: M2x2, gates: Array) { + // Here is where we check if the resulting matrix is a phase gate. + // Basically, a phase gate is one where the off-diagonal elements are zero, and the diagonal + // elements are 1 in magnitude. This means the 0 & 1 probabilities are not affected by the gate. + // The 'relative phase' of the matrix is the difference in phase between the two diagonal elements. + // The global phase is irrelevant if just doing a single gate operation. + + // All matrices come in with a trailing T or t, but that's of no interest as without that gate it's + // already a phase operation, but with less gates. So we skip testing the matrix as-is, and only + // with additional trailing gates. + + // Test with an additional Hadamard on the end + const plusHEnd = Hadamard.mul(matrix); + if (plusHEnd.isDiagonal(epsilon)) { + onPhaseFound(plusHEnd.phase(), gatesList([...gates, "H"]), plusHEnd); + } + + // It may well be that applying an X turns it into a valid Rz. So we check that too. + // Note that due to the matrix math, Y will only find a hit if X did, so no point in checking Y. + // (And obviously Z is already just a phase shift, so no need to check that either) + const plusXEnd = PauliX.mul(matrix); + if (plusXEnd.isDiagonal(epsilon)) { + onPhaseFound(plusXEnd.phase(), gatesList([...gates, "X"]), plusXEnd); + } + + // Both together (H & X) is worth a check. In testing this found some shorter sequences. + const plusHXEnd = PauliX.mul(plusHEnd); + if (plusHXEnd.isDiagonal(epsilon)) { + onPhaseFound(plusHXEnd.phase(), gatesList([...gates, "H", "X"]), plusHXEnd); + } +} + +function fillBuffer(): boolean { + // Fill the buffer up with pre-calculated matrices, testing each one for phase points as we go. + for (let i = 0; i < EntryCount; i++) { + if (phaseCountFound === phaseCount) return true; + if (i % 1000000 === 0) + console.log( + `Processing entry ${i}. Intervals found: ${phaseCountFound}. Current gate length: ${opCountForIndex(i) * 2}`, + ); + const gates = indexToOpSequence(i); + const matrix = gates.reduce((acc, gate) => { + if (gate === "A") { + return Aseq.mul(acc); + } else { + return Bseq.mul(acc); + } + }, Ident.mul(1)); + writeMatrixToBuffer(i, matrix); + checkMatrix(matrix, gates); + } + return false; +} + +// Put a no-op in the buffer for Rz(0) +onPhaseFound(0, [], Ident.mul(1)); + +if (!fillBuffer()) { + // Just filling the buffer didn't find all the intervals, so we need to start running further + // permutations of the pre-calculated matrices to find the remaining intervals. + + // No point having the first matrix be less than 24 gates, so the inner-loop will just run + // over all permutations of the 24-gate matrices. + const startFullGatesIndex = startIndexForOpCount(24); + const endFullGatesIndex = startIndexForOpCount(25) - 1; + + // The working matrices will be reused for each multiplication, so we'll just create them once. + const fullMatrix = Ident.mul(1); + const tinyMatrix = Ident.mul(1); + + // Running counter starts where the pre-calculated list finished + let i = EntryCount; + + // The nested loop will run over all the 24-gate matrices (inner loop), and multiply them with the + // pre-calculated matrices starting from the shortest (outer loop) + outer: for (let tinyIdx = 0; tinyIdx < startFullGatesIndex; tinyIdx++) { + setMatrixFromBuffer(tinyIdx, tinyMatrix); + for ( + let fullIdx = startFullGatesIndex; + fullIdx <= endFullGatesIndex; + fullIdx++ + ) { + if (i % 1000000 === 0) { + console.log( + `Processing entry ${i}. Intervals found: ${phaseCountFound}. Current gate length: ${(24 + opCountForIndex(tinyIdx)) * 2}`, + ); + } + ++i; + setMatrixFromBuffer(fullIdx, fullMatrix); + const matrix = tinyMatrix.mul(fullMatrix); + checkMatrix(matrix, [fullIdx, tinyIdx]); + if (phaseCountFound === phaseCount) break outer; + } + } +} + +// Write a file with the details of each found rotation for manual inspection if needed +const result = phaseEntries.map((entry) => + entry + ? { + phase: entry.phase, + gates: entry.sequence, + matrix: entry.matrix.toShortString(), + offset: entry.matrix.b.mag(), + } + : null, +); +writeFileSync("./rz-details.json", JSON.stringify(result, null, 2), "utf8"); + +// Create the array with the index being the phase points, and the value being the gate sequence +const phaseGates: string[] = new Array(points).fill("****"); + +// Here we fill in the other 7/8 of the points by adding T, S, ST, Z, ZT, S*, and T* to the 1/8 we found. +phaseEntries.forEach((entry) => { + const phaseIdx = Math.round((entry.phase * points) / (2 * Math.PI)); + phaseGates[phaseIdx] = entry.sequence; + + const Tidx = (phaseIdx + phaseCount) % points; + phaseGates[Tidx] = entry.sequence + "T"; + + const Sidx = (phaseIdx + phaseCount * 2) % points; + phaseGates[Sidx] = entry.sequence + "S"; + + const STidx = (phaseIdx + phaseCount * 3) % points; + phaseGates[STidx] = entry.sequence + "ST"; + + const Zidx = (phaseIdx + phaseCount * 4) % points; + phaseGates[Zidx] = entry.sequence + "Z"; + + const ZTidx = (phaseIdx + phaseCount * 5) % points; + phaseGates[ZTidx] = entry.sequence + "ZT"; + + const sidx = (phaseIdx + phaseCount * 6) % points; + phaseGates[sidx] = entry.sequence + "s"; + + const tidx = (phaseIdx + phaseCount * 7) % points; + phaseGates[tidx] = entry.sequence + "t"; +}); +writeFileSync("./rz-array.json", JSON.stringify(phaseGates, null, 1), "utf8"); + +console.log("DONE"); diff --git a/source/npm/qsharp/tools/tsconfig.json b/source/npm/qsharp/tools/tsconfig.json new file mode 100644 index 00000000000..d2eac909b8a --- /dev/null +++ b/source/npm/qsharp/tools/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "node16", + "moduleResolution": "node16", + "target": "ES2022", + "lib": ["DOM", "ES2022"], + "outDir": "../dist/tools", + "rootDir": "..", + "declaration": false, + "strict": true, + "isolatedModules": true, + "esModuleInterop": true, + "skipLibCheck": true, + "types": ["node"] + }, + "include": ["./*.ts", "../ux/cplx.ts"] +} diff --git a/source/npm/qsharp/ux/bloch/bloch.css b/source/npm/qsharp/ux/bloch/bloch.css new file mode 100644 index 00000000000..bffb2da40d3 --- /dev/null +++ b/source/npm/qsharp/ux/bloch/bloch.css @@ -0,0 +1,955 @@ +/* Copyright (c) Microsoft Corporation. + Licensed under the MIT License. */ + +/* Styles for the Bloch sphere widget (see bloch.tsx). Bundled together + with qsharp-ux.css, so the shared --qdk-* theme tokens (defined in + qdk-theme.css) are available here without a separate @import. */ + +.qs-gate-buttons button { + width: 50px; + height: 25px; +} + +/* The gate-button toolbar is a row of segmented control groups: the gate + palette (X..T†), the undo/redo pair, and reset. Each group is a single + continuous "toolbelt" bar -- one rounded, bordered surface -- and the + individual gates are transparent segments inside it divided by thin + internal rules, so a group reads as one cohesive control rather than a + row of separate buttons. */ +.qs-gate-buttons { + display: flex; + /* The palette, undo/redo, and clear groups must stay together on a + single line -- they read as one toolbar. The control panel is sized + to fit this row, so it must never wrap. */ + flex-wrap: nowrap; + align-items: center; + gap: 8px; +} +.qs-bloch-gate-group { + display: inline-flex; + /* The bar surface: the border, rounding, and background live on the + group, not on its buttons. `overflow: hidden` clips the segments' + hover fill to the rounded outer corners. */ + border: 1px solid var(--qdk-widget-outline); + border-radius: 5px; + background: var(--qdk-menu-fill); + overflow: hidden; +} +/* Buttons become flat, borderless segments of the bar. We override the + shared themed-button rules (which give each button its own fill, + border, and rounding) so only the group surface shows through. A thin + left rule on every segment except the first draws the internal + dividers between gates. */ +.qs-gate-buttons .qs-bloch-gate-group button { + margin: 0; + height: 28px; + background: transparent; + border: none; + border-radius: 0; + /* Divider between segments. We mix the foreground into the fill rather + than using --qdk-widget-outline: in the dark theme the outline token + (#444) is identical to --qdk-menu-fill, so an outline-coloured rule + would be invisible against the bar. A translucent foreground line + reads clearly on both the light and dark button fills. */ + border-left: 1px solid + color-mix(in srgb, var(--qdk-host-foreground) 35%, transparent); +} +.qs-gate-buttons .qs-bloch-gate-group button:first-child { + border-left: none; +} +.qs-gate-buttons .qs-bloch-gate-group button:hover:not(:disabled) { + background: var(--qdk-menu-fill-hover); +} +/* Keep the focus ring inside the bar so it isn't clipped by the group's + `overflow: hidden`, and lift it above neighbouring dividers. */ +.qs-gate-buttons .qs-bloch-gate-group button:focus-visible { + outline: 2px solid var(--qdk-focus-border, var(--qdk-atom-fill)); + outline-offset: -2px; + position: relative; + z-index: 1; +} +/* The gate palette segments share a fixed footprint so the set reads as + an even keypad. */ +.qs-gate-buttons .qs-bloch-gate-group-palette button { + width: 38px; +} + +/* ---- Bloch widget: themed form controls ---- + Browser-default + ))} + + + +