{ "cells": [ { "cell_type": "markdown", "id": "03fdb34a-6df1-4b9f-a3de-8a8267cb8367", "metadata": { "tags": [] }, "source": "# cqlib tutorial" }, { "cell_type": "markdown", "id": "e550a33f-ad76-491e-8883-bc7d80165faa", "metadata": { "tags": [] }, "source": "## 1. 量子计算机操作基础" }, { "metadata": {}, "cell_type": "markdown", "source": [ "目前支持两种平台进行量子计算机操作:\n", "\n", "- GuoDunPlatform \n", " 国盾量子计算云平台,官网地址:https://quantumctek-cloud.com/ \n", " \n", "- TianYanPlatform \n", " 中电信天衍量子计算云平台,官网地址:https://qc.zdxlz.com" ], "id": "f69259240d34b1e6" }, { "cell_type": "markdown", "id": "5fdb9d8d", "metadata": {}, "source": [ "在使用前,请先在对应的平台注册账号,并获取对应的密钥。\n", "\n", "在开始此教程前,请确保已经成功安装cqlib package。如果未安装,请运行一下命令: " ] }, { "cell_type": "code", "id": "8c9a74f3", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T00:58:59.128740Z", "start_time": "2024-08-09T00:58:59.124132Z" } }, "source": "!pip install cqlib -i https://pypi.tuna.tsinghua.edu.cn/simple", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "", "id": "2b21d88ddb9186dd" }, { "cell_type": "markdown", "id": "84e08740", "metadata": {}, "source": [ "设置登录信息,选择量子计算机或仿真器。\n", "\n", "量子计算机包括已经上线的天衍-176和即将上线的天衍-504。天衍-176性能卓越,具有66个量子比特,110个纠缠比特,平均相干时间T1为34.2微秒,T2为3.09微秒。其读出错误率为5.98%,单比特门错误率为0.18%,双比特门错误率为1.92%。" ] }, { "metadata": {}, "cell_type": "markdown", "source": [ "在量子电路模拟中,选择合适的模拟后端至关重要。不同量子电路模拟器适用于以下场景:\n", "\n", "- **全振幅量子仿真机**:能够同时模拟并存储量子态的所有振幅,适合精确模拟小规模量子系统。\n", "\n", "- **单振幅量子仿真机**:能高效模拟大规模量子比特电路,计算性能不随比特数增加呈指数增长,但随电路深度增加性能急剧下降,且难以处理多控制门。适用于**高比特、低深度**电路的快速仿真,常用于获取单个量子态的振幅。\n", "\n", "- **张量网络量子仿真机**:与单振幅类似,能够高效处理多控制门,且在**深度较高**的电路模拟中性能更优,适合模拟复杂电路。\n", "\n", "- **稳定子仿真机**:利用稳定子方法高效模拟量子纠错和少量纠缠的系统,适合大规模稳定子态的仿真。\n", "\n", "- **带噪声量子仿真机**:模拟真实量子计算机中因物理特性导致的计算误差,适用于研究量子噪声环境下的量子计算行为。\n" ], "id": "e3c7fd860dcb05ac" }, { "cell_type": "code", "id": "25573265-a8bb-467a-a503-96e5dbd2ccd5", "metadata": { "ExecuteTime": { "end_time": "2024-10-10T02:58:57.787835Z", "start_time": "2024-10-10T02:58:57.536684Z" } }, "source": [ "from cqlib import TianYanPlatform # 导出量子计算机SDK的支持包\n", "\n", "login_key = \"your_login_key\"\n", "\n", "# 使用 TianYanPlatform 类来创建一个平台实例,并设置你的 SDK 密钥和选择的量子计算机。\n", "# 用户使用时,请务必用自己的密钥更新上述内容,否则上述密钥会被定时更新而示例程序不可以。\n", "platform = TianYanPlatform(login_key=login_key)\n", "\n", "# 查询和选择量子计算机, 可用于后期解析量子计算机工作状态。而调用量子计算机的名称,可在网页中查看。\n", "computer_list_data = platform.query_quantum_computer_list()\n", "for computer_data in computer_list_data:\n", " print(computer_data)\n", "\n", "# 此为示例,实际使用时请选择正确的量子计算机,或者仿真器。\n", "platform.set_machine(\"tianyan176\")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['3', 'free', 'running', 'tianyan_sw']\n", "['4', 'free', 'running', 'tianyan_s']\n", "['7', 'free', 'running', 'tianyan_tn']\n", "['8', 'free', 'running', 'tianyan_tnn']\n", "['9', 'free', 'running', 'tianyan_sa']\n", "['1764555284795101186', 'free', 'running', 'tianyan176']\n" ] } ], "execution_count": 2 }, { "metadata": {}, "cell_type": "markdown", "source": "其中 tianyan_sw 为 全振幅量子仿真机,tianyan_sa 为单振幅量子仿真机,tianyan_s 为稳定子仿真机,tianyan_tn 为张量网络量子仿真机,tianyan_tnn 为带噪声量子仿真机。\n", "id": "1b13cc10e9dfc449" }, { "cell_type": "markdown", "metadata": {}, "source": [ "也可以在创建实例时直接指定量子计算机,下面的指令与上述等价" ], "id": "37682d73ebad8c49" }, { "cell_type": "code", "id": "5cab395d", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:53.831277Z", "start_time": "2024-08-09T06:54:53.716758Z" } }, "source": "platform = TianYanPlatform(login_key=login_key, machine_name=\"tianyan176\")", "outputs": [], "execution_count": 4 }, { "cell_type": "markdown", "id": "b7de27c7", "metadata": {}, "source": "## 2.编写量子线路" }, { "metadata": {}, "cell_type": "markdown", "source": "### 2.1 量子门", "id": "30f271a1c6089649" }, { "metadata": {}, "cell_type": "markdown", "source": [ "Cqlib 支持的量子门种类丰富,包括许多单量子比特门和多量子比特门\n", "\n", "- 单量子比特门:\n", "\n", " - Hadamard 门: H\n", " - Pauli 门: X, Y, Z\n", " - 旋转门: RX, RY, RZ\n", " - 根 Pauli 门: X2P, X2M, Y2P, Y2M\n", " - 相位门: S, SD, T, TD\n", "\n", "- 多量子比特门:\n", " - 受控门: CX, CCX, CRX, CRY, CRZ, CZ\n", " - 交换门: SWAP\n", " - XY 门: XY, XY2P, XY2M\n", "\n", "这些门是构建量子电路的基础,可以组合使用来执行复杂的量子计算任务。" ], "id": "a0ab4137f6f55fb2" }, { "cell_type": "markdown", "id": "b2cd4b47", "metadata": {}, "source": "### 2.2 量子程序的编写" }, { "metadata": {}, "cell_type": "markdown", "source": [ "下面介绍第一个量子程序:Bell 态制备。 \n", "贝尔态是量子力学中的一种重要纠缠态,涉及两个量子比特。贝尔态在量子信息和量子计算中具有重要的应用。 \n", "贝尔态的制备过程是:用了量子门操作(Hadamard门和CZ门)来生成一个 Bell 态,并对量子比特进行测量(M)。" ], "id": "3fd43755f7d0ec7a" }, { "cell_type": "code", "id": "deae6990-20ee-4aca-8e9b-2d836d5fa402", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:53.855141Z", "start_time": "2024-08-09T06:54:53.835419Z" } }, "source": [ "from cqlib.circuits import Circuit, Parameter\n", "\n", "circuit = Circuit(qubits=[0, 1])\n", "\n", "circuit.h(0)\n", "circuit.x(1)\n", "# cx门被分解过h和cz门\n", "circuit.h(1)\n", "circuit.cz(0, 1)\n", "circuit.h(1)\n", "circuit.measure_all()\n", "\n", "print(circuit.qcis)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "H Q0\n", "X Q6\n", "H Q6\n", "CZ Q0 Q6\n", "H Q6\n", "M Q0\n", "M Q6\n" ] } ], "execution_count": 5 }, { "cell_type": "markdown", "id": "b1882b73", "metadata": {}, "source": [ "参数化量子线路是一种在量子计算中常用的技术,允许在量子电路中引入参数以增加灵活性和可调节性。这在量子机器学习、优化算法和量子化学等领域中非常有用。" ] }, { "cell_type": "code", "id": "0aa92f30", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:54.011339Z", "start_time": "2024-08-09T06:54:53.995067Z" } }, "source": [ "theta = Parameter('theta')\n", "circuit_para = Circuit(qubits=[0], parameters=[theta])\n", "circuit_para.rx(0, theta)\n", "print(f\"带参数的线路: {circuit_para.qcis}\")\n", "\n", "circuit_para.set_parameter_value({'theta': 0.12})\n", "print(f\"赋值后的线路: {circuit_para.qcis}\")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "带参数的线路: RX Q0 theta\n", "赋值后的线路: RX Q0 0.12\n" ] } ], "execution_count": 6 }, { "metadata": {}, "cell_type": "markdown", "source": "量子计算的参数支持,基础的加减乘除运算。", "id": "f57b3f7fb69bea2b" }, { "cell_type": "code", "id": "a133b689", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:54.157296Z", "start_time": "2024-08-09T06:54:54.078516Z" } }, "source": [ "from cqlib.circuits import Circuit, Parameter\n", "\n", "theta = Parameter('theta')\n", "phi = Parameter('phi')\n", "\n", "print(f'theta: {theta}')\n", "print(f'phi: {phi}')\n", "print(f\"theta + phi: {theta + phi}\")\n", "print(f\"theta - phi: {theta - phi}\")\n", "print(f\"theta * phi: {theta * phi}\")\n", "print(f\"theta / phi: {theta / phi}\")\n", "\n", "# 组合运算\n", "print(f\"theta * phi - phi: {theta * phi - phi}\")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta: theta\n", "phi: phi\n", "theta + phi: phi + theta\n", "theta - phi: -phi + theta\n", "theta * phi: phi*theta\n", "theta / phi: theta/phi\n", "theta * phi - phi: phi*theta - phi\n" ] } ], "execution_count": 7 }, { "cell_type": "markdown", "id": "6b8f7ac4", "metadata": {}, "source": "`circuit.qcis` 可以导出 QCIS 线路。`Circuit.load` 可以导入QCIS线路来创建一个量子线路。" }, { "cell_type": "code", "id": "bb882636", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:54.315994Z", "start_time": "2024-08-09T06:54:54.307843Z" } }, "source": [ "qcis = \"\"\"\n", "H Q0\n", "X Q1\n", "H Q1\n", "CZ Q0 Q1\n", "H Q1\n", "M Q0\n", "M Q1\n", "\"\"\"\n", "\n", "c1 = Circuit.load(qcis)\n", "print(c1)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "execution_count": 8 }, { "cell_type": "markdown", "id": "902a6bfa-f15e-4102-94c6-2be761c710d1", "metadata": {}, "source": [ "## 3. 量子计算提交" ] }, { "cell_type": "markdown", "id": "6577be07", "metadata": {}, "source": "### 3.1 量子实验集创建" }, { "metadata": {}, "cell_type": "markdown", "source": [ "量子实验集合可以帮助将相似的实验组织在一起,方便管理和分类。 \n", "如不创建实验集合也可以(后期不传递 lab_id 参数即可),快速提交运行的程序将放在默认实验集合内。" ], "id": "3d402915c9c375e6" }, { "metadata": {}, "cell_type": "markdown", "source": "", "id": "292d7b92f933914b" }, { "cell_type": "code", "id": "d196775f", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:54.570517Z", "start_time": "2024-08-09T06:54:54.456018Z" } }, "source": [ "from datetime import datetime\n", "# create_lab 方法创建了一个实验集,并返回了该实验集的唯一标识 lab_id\n", "lab_id = platform.create_lab(name=f'lab.{datetime.now().strftime(\"%Y%m%d%H%M%S\")}', remark='test_collection')\n", "\n", "print(lab_id)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1821802319750164482\n" ] } ], "execution_count": 9 }, { "cell_type": "markdown", "id": "9a6c848f", "metadata": {}, "source": [ "### 3.2 量子实验运行提交\n", "\n", "有两种方式提交量子电路实验\n", "+ 先保存实验,再提交运行。\n", "+ 直接提交并运行实验。\n", "\n", "下面分别进行介绍" ] }, { "cell_type": "markdown", "id": "c563b38e", "metadata": {}, "source": "#### 3.2.1 保存实验,再提交" }, { "cell_type": "markdown", "id": "92d086c6", "metadata": {}, "source": [ "在量子计算中,通常先定义一个量子电路(如之前定义的 circuit.qcis),然后将它保存为一个实验,并提交运行。这里使用了 save_experiment 方法保存实验,然后使用 run_experiment 方法提交运行,并指定运行的次数(5000次)。 \n", "该方式的优势是存储一个线路,可以多次运行,而不用从新创建实验。" ] }, { "cell_type": "code", "id": "a3282551", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:54.788885Z", "start_time": "2024-08-09T06:54:54.573236Z" } }, "source": [ "exp_id = platform.save_experiment(lab_id=lab_id, circuit=circuit.qcis, name=f'exp.{datetime.now().strftime(\"%Y%m%d%H%M%S\")}')\n", "query_id_single = platform.run_experiment(exp_id=exp_id, num_shots=5000)\n", "print(f'query_id: {query_id_single}')" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "query_id: 1821802320664522754\n" ] } ], "execution_count": 10 }, { "cell_type": "markdown", "id": "f9572ff7", "metadata": {}, "source": [ "exp_id 是保存的实验的唯一标识,query_id_single 是提交运行后返回的查询标识,可以用于后续的状态查询。" ] }, { "cell_type": "markdown", "id": "e566ab2b", "metadata": {}, "source": "#### 3.2.2 直接提交并运行实验" }, { "metadata": {}, "cell_type": "markdown", "source": "如果不需要先保存实验,也可以直接提交并运行实验。使用 submit_experiment 方法可以一步到位,将量子电路直接提交到指定的实验集中并运行。", "id": "b3dd93cee83b8ef2" }, { "cell_type": "code", "id": "63036982", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:54.951481Z", "start_time": "2024-08-09T06:54:54.788885Z" } }, "source": [ "query_id_single = platform.submit_job(\n", " circuit=circuit.qcis,\n", " exp_name=f'exp.{datetime.now().strftime(\"%Y%m%d%H%M%S\")}',\n", " lab_id=lab_id,\n", " num_shots=5000,\n", " )\n", "print(f'query_id: {query_id_single}')" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "query_id: ['1821802321335611393']\n" ] } ], "execution_count": 11 }, { "cell_type": "markdown", "id": "917e7d3f", "metadata": {}, "source": "#### 3.2.3 批量提交并运行实验" }, { "metadata": {}, "cell_type": "markdown", "source": "如果有多个量子电路需要运行,可以将它们作为列表传递给 submit_experiment 方法,以批量方式提交并运行。 该批量提交实验,主要针对用户线路基本相同,尤其是测量比特相同,只有具备带入参数不同的情况下可以进行。", "id": "1d73434ed58252c4" }, { "cell_type": "code", "id": "903d1864", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:54:55.868168Z", "start_time": "2024-08-09T06:54:54.951481Z" } }, "source": [ "circuit_list = [circuit.qcis] * 10 \n", "#用户个根据实际需求,重组该列表,但要注意测量比特及测量顺序必须相同。\n", "#关于批量运行实验的其他限制,详见函数说明。\n", "from cqlib import QuantumLanguage\n", "query_id_list = platform.submit_experiment(\n", " circuit=circuit_list,\n", " language=QuantumLanguage.QCIS,\n", " lab_id=lab_id,\n", " num_shots=5000,\n", ")\n", "print(f'提交多个电路query_id: {query_id_list}')" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "提交多个电路query_id: ['1821802322027671554', '1821802322405158914', '1821802322715537410', '1821802323055276034', '1821802323428569089', '1821802323747336193', '1821802324091269121', '1821802324565225474', '1821802324871409665', '1821802325152428034']\n" ] } ], "execution_count": 12 }, { "cell_type": "markdown", "id": "24be9409-2dcf-4a76-b5f3-81fdef90d0bd", "metadata": { "tags": [] }, "source": [ "## 4. 查询实验结果及处理\n", "\n", "### 4.1 查询原始数据" ] }, { "metadata": {}, "cell_type": "markdown", "source": "一旦实验提交完成并且量子计算平台处理完毕,你可以使用返回的 query_id_list 查询每个实验的结果。下面是一个示例代码,用于查询单个实验的结果:", "id": "516854b81b3c3b7c" }, { "cell_type": "code", "id": "d6f32702-0246-4da4-bf89-8e28d6fb9bd0", "metadata": { "tags": [], "ExecuteTime": { "end_time": "2024-08-09T06:56:52.834196Z", "start_time": "2024-08-09T06:54:55.868168Z" } }, "source": [ "exp_result = platform.query_experiment(query_id=query_id_single, max_wait_time=120, sleep_time=5)\n", "#返回值为list,包含若干字典形式,\n", " #key:\"resultStatus\"为线路执行的原始数据,共计1+num_shots个数据,第一个数据为测量的比特编号和顺序,如本例中[0, 6],其余为每shot对应的结果,每shot结果按照比特顺序排列。\n", " #key:\"probability\"为线路测量结果的概率统计,经过实时的读取修正后的统计结果。\n", " #key:\"experimentTaskId\"为本次实验的查询id,主要用于批量实验时的结果对应确认。\n", " #当测量比特大于15个时,结果统计对服务器要求较高,传递数据率也较大,故\"probability\"返回为空,请用户根据原始数据,配合当时量子计算机的读出保真度自行做修正。相关修正函数在高阶教程中有示例。用户也可以自己完善修正函数。\n", "\n", "for res_name, res_data in exp_result[0].items():\n", " print(f\"{res_name} : {res_data}\")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "resultStatus : [[0, 6], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 0], [0, 0], [0, 0], [1, 1], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [0, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [0, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 0], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 0], [1, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 0], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 1], [0, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [0, 1], [0, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [0, 0], [0, 1], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [1, 1], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [0, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 0], [1, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 0], [1, 1], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 1], [0, 1], [1, 1], [1, 0], [0, 0], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [0, 0], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 1], [1, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 0], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 0], [1, 0], [1, 1], [1, 1], [1, 1], [0, 1], [1, 0], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [0, 0], [0, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [0, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 1], [0, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 0], [0, 1], [1, 1], [0, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [0, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 1], [1, 1], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 0], [1, 1], [0, 0], [1, 0], [0, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 1], [1, 1], [1, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 0], [0, 1], [0, 0], [1, 0], [0, 0], [1, 0], [0, 0], [1, 1], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 0], [1, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [1, 1], [0, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [0, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [0, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 0], [0, 1], [0, 0], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 1], [0, 1], [1, 1], [0, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [0, 0], [1, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1]]\n", "probability : None\n", "experimentTaskId : 1821802321335611393\n" ] } ], "execution_count": 13 }, { "cell_type": "markdown", "id": "96c8dcfb", "metadata": {}, "source": [ "\n", "对于多个提交的量子电路,或者单个量子电路测量比特大于等于15个量子比特时,云平台只会返回原始测量结果。\n", "\n", "同样也可以批量查询量子电路结果。" ] }, { "cell_type": "code", "id": "b2b50012", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:57:08.666798Z", "start_time": "2024-08-09T06:56:52.838278Z" } }, "source": [ "exp_result = platform.query_experiment(query_id=query_id_list, max_wait_time=120, sleep_time=5)\n", "print(f'输入的查询Id个数为: {len(query_id_list)},查询到的实验结果个数为: {len(exp_result)}')\n", "print('第一个量子电路实验结果为:')\n", "for res_name, res_data in exp_result[0].items():\n", " print(f\"{res_name} : {res_data}\")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "输入的查询Id个数为: 10,查询到的实验结果个数为: 10\n", "第一个量子电路实验结果为:\n", "resultStatus : [[0, 6], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 0], [0, 0], [1, 1], [1, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 0], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 0], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [0, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [0, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [1, 1], [0, 0], [0, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 0], [0, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [0, 0], [1, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 0], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [1, 1], [0, 0], [0, 1], [1, 0], [0, 1], [0, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 1], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 0], [0, 0], [1, 1], [1, 0], [0, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 0], [1, 0], [0, 1], [1, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0], [0, 0], [1, 1], [0, 0], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 0], [1, 0], [0, 1], [0, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [0, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [0, 0], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [0, 0], [0, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [0, 0], [0, 0], [0, 0], [1, 1], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [0, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [0, 1], [0, 0], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 1], [1, 1], [0, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 0], [1, 1], [1, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [0, 0], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [0, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 1], [0, 0], [0, 0], [0, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [1, 0], [0, 0], [1, 0], [0, 0], [1, 0], [1, 0], [0, 0], [1, 1], [0, 0], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 1], [0, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [0, 0], [1, 0], [1, 0], [1, 1], [0, 0], [1, 0], [0, 1], [0, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [1, 1], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [0, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 1], [0, 0], [1, 1], [1, 1], [1, 1], [0, 0], [1, 1], [1, 1], [0, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [1, 0], [1, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 0], [1, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 1], [0, 1], [1, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [0, 1], [0, 1], [1, 1], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [0, 0], [1, 1], [1, 1], [1, 0], [1, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 1], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 0], [1, 0], [1, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0], [1, 1], [1, 1], [1, 0], [0, 1], [1, 1], [0, 1], [0, 1], [0, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [0, 0], [1, 0], [0, 1], [1, 1], [1, 1], [1, 0], [0, 1], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [1, 0], [0, 1], [0, 1], [1, 0], [1, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [1, 0], [0, 1], [1, 0], [0, 0], [1, 1], [1, 0], [0, 1], [1, 0], [1, 0], [0, 1], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1], [1, 0], [0, 0], [0, 1], [0, 0], [0, 0], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [1, 0], [1, 0], [1, 0], [1, 0], [1, 1], [0, 1], [1, 0], [1, 0], [0, 0], [1, 0], [1, 0]]\n", "probability : None\n", "experimentTaskId : 1821802322027671554\n" ] } ], "execution_count": 14 }, { "cell_type": "markdown", "id": "d524974c", "metadata": {}, "source": "### 4.2 实验结果统计" }, { "metadata": {}, "cell_type": "markdown", "source": [ "对于云平台未返回统计结果的实验,需要手动对实验结果进行统计。需要使用util模块下的 LaboratoryUtils 类\n", "其中:\n", "readout_data_to_state_probabilities_whole 方法会统计全部可能的空间,输出概率为0的空间组合。\n", "readout_data_to_state_probabilities_part 仅输出概率超过0的结果,有利于节省内存。" ], "id": "b7e3ef44014b9669" }, { "cell_type": "code", "id": "fc99a80b", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:57:08.779262Z", "start_time": "2024-08-09T06:57:08.666798Z" } }, "source": [ "from cqlib.utils import LaboratoryUtils\n", "\n", "lu = LaboratoryUtils()\n", "#将结果的全部空间进行统计\n", "probability_whole=lu.readout_data_to_state_probabilities_whole(result=exp_result[0])\n", "print(f'结果的全部空间统计: {probability_whole}')\n", "\n", "#只对已有结果进行统计,概率为0的结果将不出现。\n", "probability_part=lu.readout_data_to_state_probabilities_part(result=exp_result[0])\n", "print(f'结果的部分空间统计: {probability_part}')" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "结果的全部空间统计: {'00': 0.0594, '01': 0.4536, '10': 0.3342, '11': 0.1528}\n", "结果的部分空间统计: {'01': 0.4536, '10': 0.3342, '11': 0.1528, '00': 0.0594}\n" ] } ], "execution_count": 15 }, { "cell_type": "markdown", "id": "4218f8cf", "metadata": {}, "source": "### 4.3 读取修正和归一化处理(仿真器不需要)" }, { "metadata": {}, "cell_type": "markdown", "source": "可以根据读取到的实验结果进行概率校准和概率修正。", "id": "6a1cc2de17077c93" }, { "cell_type": "code", "id": "9720f893", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:57:08.924394Z", "start_time": "2024-08-09T06:57:08.780412Z" } }, "source": [ "single_circuit_result = exp_result[0]\n", "calibration_result = lu.probability_calibration(result=exp_result[0], laboratory=platform)\n", "\n", "\n", "corrected_result = lu.probability_correction(probabilities=calibration_result)\n", "print(f'修正后的概率结果为: {corrected_result}')" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "修正后的概率结果为: {'00': 0.0, '01': 0.48719023271554024, '10': 0.3371942173836346, '11': 0.17561554990082512}\n" ] } ], "execution_count": 16 }, { "cell_type": "markdown", "id": "28f302bf-02e6-41fe-921a-a3769efde6cc", "metadata": {}, "source": "### 4.4 量子计算机信息保存(仿真器不需要)" }, { "metadata": {}, "cell_type": "markdown", "source": "如果需要保存此时量子计算的参数作为后期参考,可以运行以下指令:", "id": "d4bcf010bdbac167" }, { "cell_type": "code", "id": "742b335f-a4ee-477e-addd-19c76c8094f4", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:57:09.021668Z", "start_time": "2024-08-09T06:57:08.924394Z" } }, "source": [ "config_save = platform.download_config()\n", "for key, value in config_save.items():\n", " print(key, value)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "calibrationTime 2024-08-08 21:31:50\n", "computerId QubitPrime\n", "disabledCouplers G10,G103,G29,G38,G19,G5,G42,G28,G64,G32,G75,G76,G53,G25,G54,G21,G86,G31,G40,G30,G65,G104,G20,G87\n", "disabledQubits Q47,Q35,Q5\n", "overview {'name': '', 'type': '', 'qubits': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q35', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'couplers': ['G0', 'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9', 'G10', 'G11', 'G12', 'G13', 'G14', 'G15', 'G16', 'G17', 'G18', 'G19', 'G20', 'G21', 'G22', 'G23', 'G24', 'G25', 'G26', 'G27', 'G28', 'G29', 'G30', 'G31', 'G32', 'G33', 'G34', 'G35', 'G36', 'G37', 'G38', 'G39', 'G40', 'G41', 'G42', 'G43', 'G44', 'G45', 'G46', 'G47', 'G48', 'G49', 'G50', 'G51', 'G52', 'G53', 'G54', 'G55', 'G56', 'G57', 'G58', 'G59', 'G60', 'G61', 'G62', 'G63', 'G64', 'G65', 'G66', 'G67', 'G68', 'G69', 'G70', 'G71', 'G72', 'G73', 'G74', 'G75', 'G76', 'G77', 'G78', 'G79', 'G80', 'G81', 'G82', 'G83', 'G84', 'G85', 'G86', 'G87', 'G88', 'G89', 'G90', 'G91', 'G92', 'G93', 'G94', 'G95', 'G96', 'G97', 'G98', 'G99', 'G100', 'G101', 'G102', 'G103', 'G104', 'G105', 'G106', 'G107', 'G108', 'G109'], 'readouts': ['R01', 'R02', 'R03', 'R04', 'R05', 'R06', 'R07', 'R08', 'R09', 'R10', 'R11'], 'coupler_map': {'G0': ['Q6', 'Q0'], 'G1': ['Q7', 'Q0'], 'G2': ['Q7', 'Q1'], 'G3': ['Q8', 'Q1'], 'G4': ['Q8', 'Q2'], 'G5': ['Q9', 'Q2'], 'G6': ['Q9', 'Q3'], 'G7': ['Q10', 'Q3'], 'G8': ['Q10', 'Q4'], 'G9': ['Q11', 'Q4'], 'G10': ['Q11', 'Q5'], 'G11': ['Q12', 'Q6'], 'G12': ['Q12', 'Q7'], 'G13': ['Q13', 'Q7'], 'G14': ['Q13', 'Q8'], 'G15': ['Q14', 'Q8'], 'G16': ['Q14', 'Q9'], 'G17': ['Q15', 'Q9'], 'G18': ['Q15', 'Q10'], 'G19': ['Q16', 'Q10'], 'G20': ['Q16', 'Q11'], 'G21': ['Q17', 'Q11'], 'G22': ['Q18', 'Q12'], 'G23': ['Q19', 'Q12'], 'G24': ['Q19', 'Q13'], 'G25': ['Q20', 'Q13'], 'G26': ['Q20', 'Q14'], 'G27': ['Q21', 'Q14'], 'G28': ['Q21', 'Q15'], 'G29': ['Q22', 'Q15'], 'G30': ['Q22', 'Q16'], 'G31': ['Q23', 'Q16'], 'G32': ['Q23', 'Q17'], 'G33': ['Q24', 'Q18'], 'G34': ['Q24', 'Q19'], 'G35': ['Q25', 'Q19'], 'G36': ['Q25', 'Q20'], 'G37': ['Q26', 'Q20'], 'G38': ['Q26', 'Q21'], 'G39': ['Q27', 'Q21'], 'G40': ['Q27', 'Q22'], 'G41': ['Q28', 'Q22'], 'G42': ['Q28', 'Q23'], 'G43': ['Q29', 'Q23'], 'G44': ['Q30', 'Q24'], 'G45': ['Q31', 'Q24'], 'G46': ['Q31', 'Q25'], 'G47': ['Q32', 'Q25'], 'G48': ['Q32', 'Q26'], 'G49': ['Q33', 'Q26'], 'G50': ['Q33', 'Q27'], 'G51': ['Q34', 'Q27'], 'G52': ['Q34', 'Q28'], 'G53': ['Q35', 'Q28'], 'G54': ['Q35', 'Q29'], 'G55': ['Q36', 'Q30'], 'G56': ['Q36', 'Q31'], 'G57': ['Q37', 'Q31'], 'G58': ['Q37', 'Q32'], 'G59': ['Q38', 'Q32'], 'G60': ['Q38', 'Q33'], 'G61': ['Q39', 'Q33'], 'G62': ['Q39', 'Q34'], 'G63': ['Q40', 'Q34'], 'G64': ['Q40', 'Q35'], 'G65': ['Q41', 'Q35'], 'G66': ['Q42', 'Q36'], 'G67': ['Q43', 'Q36'], 'G68': ['Q43', 'Q37'], 'G69': ['Q44', 'Q37'], 'G70': ['Q44', 'Q38'], 'G71': ['Q45', 'Q38'], 'G72': ['Q45', 'Q39'], 'G73': ['Q46', 'Q39'], 'G74': ['Q46', 'Q40'], 'G75': ['Q47', 'Q40'], 'G76': ['Q47', 'Q41'], 'G77': ['Q48', 'Q42'], 'G78': ['Q48', 'Q43'], 'G79': ['Q49', 'Q43'], 'G80': ['Q49', 'Q44'], 'G81': ['Q50', 'Q44'], 'G82': ['Q50', 'Q45'], 'G83': ['Q51', 'Q45'], 'G84': ['Q51', 'Q46'], 'G85': ['Q52', 'Q46'], 'G86': ['Q52', 'Q47'], 'G87': ['Q53', 'Q47'], 'G88': ['Q54', 'Q48'], 'G89': ['Q55', 'Q48'], 'G90': ['Q55', 'Q49'], 'G91': ['Q56', 'Q49'], 'G92': ['Q56', 'Q50'], 'G93': ['Q57', 'Q50'], 'G94': ['Q57', 'Q51'], 'G95': ['Q58', 'Q51'], 'G96': ['Q58', 'Q52'], 'G97': ['Q59', 'Q52'], 'G98': ['Q59', 'Q53'], 'G99': ['Q60', 'Q54'], 'G100': ['Q60', 'Q55'], 'G101': ['Q61', 'Q55'], 'G102': ['Q61', 'Q56'], 'G103': ['Q62', 'Q56'], 'G104': ['Q62', 'Q57'], 'G105': ['Q63', 'Q57'], 'G106': ['Q63', 'Q58'], 'G107': ['Q64', 'Q58'], 'G108': ['Q64', 'Q59'], 'G109': ['Q65', 'Q59']}, 'qubits_length': 66, 'couplers_length': 110, 'readouts_length': 11, 'T1': 33.88, 'T2': 3.07, 'cz_error': 1.95, '1q_gate_error': 0.63, 'readout_error': 5.8}\n", "qubit {'frequency': {'f01': {'param_list': [4.8324, 4.8938, 4.8009, 4.5534, 4.8471, 4.9181, 4.7476, 4.6197, 4.8984, 4.6354, 4.5766, 5.014, 4.7793, 4.7354, 4.8115, 4.7592, 4.6921, 4.7196, 4.8209, 4.8553, 4.929, 4.7923, 4.5555, 4.8881, 4.7144, 4.5223, 4.8424, 4.6854, 4.6491, 4.7262, 4.5657, 4.597, 4.6419, 4.7488, 4.8926, 4.9018, 4.7643, 4.6821, 4.5529, 4.6739, 4.7315, 4.7362, 4.6938, 4.9484, 4.6206, 4.6911, 4.8593, 4.7811, 4.7778, 4.7587, 4.8326, 4.6516, 4.8062, 4.6369, 4.8504, 4.5777, 4.7046, 4.7017, 4.6992, 4.6929, 4.6595, 4.5748, 4.7975], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': 'GHz', 'update_time': '2024-08-07 06:35:59'}}, 'relatime': {'T1': {'param_list': [32.0834, 15.3496, 41.7426, 18.8109, 39.4095, 34.1569, 27.2226, 41.4021, 45.1429, 27.3363, 34.0723, 20.9809, 27.1586, 23.2489, 29.316, 28.044, 32.6449, 42.8331, 34.51, 33.292, 11.1108, 19.7031, 36.9693, 28.1199, 25.7801, 33.3957, 42.7922, 44.52, 46.2545, 47.3339, 39.2116, 34.2867, 45.8843, 11.2483, 36.9933, 20.2838, 26.7274, 53.2455, 42.761, 46.6116, 9.2206, 32.0589, 32.6543, 15.9043, 48.8296, 34.7081, 22.8442, 28.4607, 39.6676, 46.495, 42.8035, 38.1672, 31.5051, 39.0114, 29.9296, 41.2292, 39.4186, 35.1132, 32.0341, 37.5697, 41.0691, 41.8796, 51.9372], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': 'us', 'update_time': '2024-08-07 06:42:30'}, 'T2': {'param_list': [3.2126, 2.6164, 2.8801, 2.0339, 2.8415, 2.1791, 2.9795, 2.1216, 4.5112, 3.7053, 2.533, 3.7859, 2.087, 3.3545, 3.8793, 0.8117, 1.6724, 2.3948, 2.6482, 3.0503, 3.1277, 5.2144, 1.4348, 3.8899, 2.3304, 2.3066, 2.6675, 3.569, 3.4687, 4.1659, 2.6226, 3.1679, 2.3717, 3.3037, 4.4307, 3.4005, 2.525, 3.0077, 2.791, 4.9467, 2.6968, 3.6065, 2.0135, 4.4647, 2.1206, 1.9042, 3.9622, 2.2406, 3.7145, 2.6143, 2.7025, 2.7191, 4.4254, 3.6573, 4.3126, 2.1808, 4.7646, 3.0689, 3.0618, 2.4693, 3.017, 1.9217, 5.6671], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': 'us', 'update_time': '2024-08-02 15:28:42'}}, 'singleQubit': {'gate error': {'param_list': [0.18, 0.23, 0.11, 0.19, 0.14, 0.21, 0.16, 0.17, 0.1, 0.11, 0.13, 0.22, 0.14, 0.12, 0.25, 0.17, 0.43, 0.22, 0.22, 0.11, 0.15, 0.16, 0.17, 0.36, 0.12, 2.07, 0.11, 0.12, 0.15, 0.15, 0.15, 0.12, 0.12, 0.55, 0.55, 0.43, 0.14, 0.29, 0.15, 0.15, 0.22, 0.36, 0.15, 0.18, 0.1, 0.15, 0.13, 0.13, 0.1, 0.15, 0.11, 0.35, 0.1, 0.16, 0.11, 0.25, 0.1, 0.45, 0.22, 25.8, 0.14, 0.26, 0.1], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': '%', 'update_time': '2024-08-07 06:52:39'}, 'X/2 amplitude': {'param_list': [0.2843, 0.1516, 0.1162, 0.3667, 0.1932, 0.3206, 0.2995, 0.2799, 0.1236, 0.2737, 0.1642, 0.2303, 0.2602, 0.2674, 0.2599, 0.1679, 0.259, 0.3028, 0.2076, 0.3307, 0.2425, 0.3832, 0.2509, 0.2333, 0.2652, 0.3073, 0.2495, 0.3561, 0.2052, 0.2842, 0.4796, 0.2051, 0.2385, 0.2281, 0.3228, 0.1389, 0.2066, 0.1653, 0.3508, 0.1948, 0.3053, 0.1078, 0.305, 0.208, 0.2535, 0.316, 0.2561, 0.1966, 0.3037, 0.2433, 0.1549, 0.307, 0.1953, 0.1359, 0.1125, 0.2494, 0.2251, 0.1185, 0.2481, 0.2985, 0.2485, 0.172, 0.1773], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': '', 'update_time': '2024-08-07 06:41:16'}, 'X/2 length': {'param_list': [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': '', 'update_time': '2024-08-02 15:28:38'}}}\n", "readout {'readoutArray': {'Readout Error': {'param_list': [5.86, 5.58, 7.91, 7.25, 6.31, 4.5, 7.03, 8.04, 4.02, 8.33, 10.52, 5.59, 7.5, 6.3, 4.0, 8.05, 5.34, 4.76, 4.05, 2.02, 5.74, 4.06, 9.38, 4.63, 4.89, 8.3, 3.44, 1.92, 4.48, 3.48, 5.49, 4.96, 4.01, 4.97, 3.57, 3.74, 3.42, 9.45, 5.31, 4.97, 3.12, 7.73, 4.93, 2.38, 6.05, 9.9, 2.7, 3.37, 4.32, 3.73, 3.59, 4.09, 3.63, 4.23, 2.87, 10.34, 16.86, 5.47, 4.39, 21.05, 3.36, 6.97, 6.96], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': '%', 'update_time': '2024-08-07 10:20:12'}, '|0> readout fidelity': {'param_list': [0.9937, 0.9913, 0.9651, 0.9731, 0.9859, 0.9916, 0.9783, 0.9735, 0.986, 0.957, 0.9421, 0.9862, 0.9481, 0.9781, 0.9879, 0.988, 0.9714, 0.9939, 0.9902, 0.985, 0.9911, 0.9898, 0.9798, 0.9913, 0.9841, 0.9881, 0.9893, 0.9927, 0.978, 0.9887, 0.987, 0.9787, 0.9842, 0.9813, 0.9934, 0.9928, 0.9883, 0.9756, 0.9637, 0.9892, 0.9925, 0.9704, 0.9713, 0.9883, 0.9548, 0.8856, 0.9922, 0.9885, 0.9881, 0.9829, 0.9823, 0.9669, 0.9765, 0.9793, 0.9919, 0.9031, 0.8332, 0.9697, 0.9674, 0.942, 0.9838, 0.9382, 0.9172], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': '', 'update_time': '2024-08-07 10:20:12'}, '|1> readout fidelity': {'param_list': [0.8891, 0.897, 0.8768, 0.8819, 0.888, 0.9184, 0.8812, 0.8656, 0.9336, 0.8764, 0.8474, 0.902, 0.9018, 0.896, 0.932, 0.8511, 0.9218, 0.9108, 0.9288, 0.9745, 0.8941, 0.929, 0.8325, 0.916, 0.9181, 0.846, 0.9419, 0.9689, 0.9325, 0.9417, 0.9033, 0.9221, 0.9357, 0.9193, 0.9351, 0.9323, 0.9433, 0.8354, 0.9301, 0.9114, 0.9452, 0.875, 0.9301, 0.9642, 0.9241, 0.9164, 0.9539, 0.944, 0.9255, 0.9425, 0.946, 0.9514, 0.951, 0.936, 0.9508, 0.8902, 0.8296, 0.9209, 0.9447, 0.637, 0.9489, 0.9224, 0.9436], 'qubit_used': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'unit': '', 'update_time': '2024-08-07 10:20:12'}}}\n", "status 0\n", "twoQubitGate {'czGate': {'gate error': {'param_list': [1.24, 1.91, 1.16, 0.91, 1.03, 1.05, 1.35, 1.22, 0.99, 1.54, 1.06, 1.76, 1.6, 1.54, 0.87, 2.34, 1.1, 1.68, 2.26, 2.47, 3.54, 1.54, 1.35, 2.32, 4.78, 0.98, 1.72, 1.89, 2.45, 1.15, 1.2, 1.05, 1.34, 0.94, 1.75, 0.5, 2.06, 1.81, 1.73, 2.35, 1.77, 1.83, 0.85, 1.56, 1.72, 1.57, 1.56, 1.22, 1.9, 3.92, 3.64, 0.61, 2.75, 1.41, 1.44, 3.86, 1.67, 1.71, 4.12, 6.25, 1.11, 4.92, 1.76, 1.25, 1.73, 1.46, 1.38, 1.48, 2.03, 2.41, 1.09, 4.4, 2.2, 2.7, 2.69, 1.03, 2.87, 1.01, 3.93, 1.4, 2.94, 1.37, 2.0, 3.1, 1.35, 3.46], 'qubit_used': ['G0', 'G1', 'G2', 'G3', 'G4', 'G6', 'G7', 'G8', 'G9', 'G11', 'G12', 'G13', 'G14', 'G15', 'G16', 'G17', 'G18', 'G22', 'G23', 'G24', 'G26', 'G27', 'G33', 'G34', 'G35', 'G36', 'G37', 'G39', 'G41', 'G43', 'G44', 'G45', 'G46', 'G47', 'G48', 'G49', 'G50', 'G51', 'G52', 'G55', 'G56', 'G57', 'G58', 'G59', 'G60', 'G61', 'G62', 'G63', 'G66', 'G67', 'G68', 'G69', 'G70', 'G71', 'G72', 'G73', 'G74', 'G77', 'G78', 'G79', 'G80', 'G81', 'G82', 'G83', 'G84', 'G85', 'G88', 'G89', 'G90', 'G91', 'G92', 'G93', 'G94', 'G95', 'G96', 'G97', 'G98', 'G99', 'G100', 'G101', 'G102', 'G105', 'G106', 'G107', 'G108', 'G109'], 'unit': '%', 'update_time': '2024-08-07 09:19:49'}, 'coupling strength': {'param_list': [[-14863822326.1, 3949970777.3], [-17075102279.4, 4042139099.9], [-17072472238.5, 4093045002.9], [-22007890122.7, 4523144360.0], [-33348334307.4, 5120631209.8], [-21082758620.7, 4917241379.3], [-12974050263.0, 3729398012.9], [-16024956166.0, 4388836937.5], [-15924897720.6, 4344067796.6], [-17346580946.8, 4025832846.3], [-21167270602.0, 4667212156.6], [-13944827586.2, 5075862069.0], [-23646522501.5, 4429339567.5], [-35874108708.4, 4967270602.0], [-17090531852.7, 5557744009.4], [-45104324956.2, 5019812974.9], [-35756867329.0, 4753477498.5], [-28306078316.8, 5024956166.0], [-17881998831.1, 4283518410.3], [-18283635301.0, 4074985388.7], [-20348334307.4, 4299941554.6], [-31985330216.2, 4980187025.1], [-18084511981.3, 4267212156.6], [-15493161893.6, 3962010520.2], [-28950087668.0, 4594739918.2], [-18880245470.5, 4264582115.7], [-42919871420.2, 5445645821.2], [-40569783752.2, 4768147282.3], [-25770660432.5, 5746580946.8], [-27394739918.2, 5715604909.4], [-22584570426.7, 4360257159.6], [-34543191116.3, 5118877849.2], [-39081122150.8, 4843015780.2], [-21184570426.7, 4187843366.5], [-27838866160.1, 4492168322.6], [-25098305084.7, 4460315604.9], [-12505961426.1, 3921624780.8], [-12505961426.1, 3859555815.3], [-13653419053.2, 3822443015.8], [-27175920514.3, 4630976037.4], [-29656925774.4, 5067212156.6], [-53419053185.3, 5532670952.7], [-22150087668.0, 4277498538.9], [-26064699006.4, 4487025131.5], [-18634482758.6, 5620689655.2], [-31390473407.4, 5954354178.8], [-18500818235.0, 5333664523.7], [-27881881940.4, 5745704266.5], [-23134541204.0, 4396493278.8], [-16543191116.3, 4187843366.5], [-20283752191.7, 4330040911.7], [-20800993571.0, 4281765049.7], [-21617299824.7, 4396493278.8], [-23196610169.5, 4637872589.1], [-18538807714.8, 4578433664.5], [-15650789012.3, 4031969608.4], [-15341320865.0, 4051782583.3], [-14332787843.4, 5074108708.4], [-20213793103.4, 4234482758.6], [-30351841028.6, 4689538281.7], [-19492285213.3, 4376680303.9], [-27981063705.4, 4549970777.3], [-28499181765.0, 4459438924.6], [-50315488018.7, 5105201636.5], [-20534424313.3, 5962127410.9], [-59055172413.8, 5165517241.4], [-23196610169.5, 4396493278.8], [-21767387492.7, 4232612507.3], [-21181063705.4, 4543074225.6], [-34907831677.4, 5168030391.6], [-20133664523.7, 4204266510.8], [-14656925774.4, 3853419053.2], [-10639625949.7, 3677615429.6], [-15377556984.2, 3967270602.0], [-14767270602.0, 3770660432.5], [-11701694915.3, 3677615429.6], [-13427586206.9, 3903448275.9], [-19010403272.9, 4168907071.9], [-18360374050.3, 4315488018.7], [-17588836937.5, 4218059614.3], [-22762127410.9, 4617182934.0], [-59081881940.4, 5359497370.0], [-17537054354.2, 5428462887.2], [-44520631209.8, 5024196376.4], [-33274108708.4, 4815546464.1], [-20659438924.6, 5526767971.9]], 'qubit_used': ['G0', 'G1', 'G2', 'G3', 'G4', 'G6', 'G7', 'G8', 'G9', 'G11', 'G12', 'G13', 'G14', 'G15', 'G16', 'G17', 'G18', 'G22', 'G23', 'G24', 'G26', 'G27', 'G33', 'G34', 'G35', 'G36', 'G37', 'G39', 'G41', 'G43', 'G44', 'G45', 'G46', 'G47', 'G48', 'G49', 'G50', 'G51', 'G52', 'G55', 'G56', 'G57', 'G58', 'G59', 'G60', 'G61', 'G62', 'G63', 'G66', 'G67', 'G68', 'G69', 'G70', 'G71', 'G72', 'G73', 'G74', 'G77', 'G78', 'G79', 'G80', 'G81', 'G82', 'G83', 'G84', 'G85', 'G88', 'G89', 'G90', 'G91', 'G92', 'G93', 'G94', 'G95', 'G96', 'G97', 'G98', 'G99', 'G100', 'G101', 'G102', 'G105', 'G106', 'G107', 'G108', 'G109'], 'unit': 'Hz', 'update_time': '2024-08-02 15:28:38'}}}\n" ] } ], "execution_count": 17 }, { "cell_type": "markdown", "id": "022034cb", "metadata": {}, "source": "## 5. 其他功能" }, { "metadata": {}, "cell_type": "markdown", "source": "### 5.1 QCIS和QASM指令相互转换", "id": "9b7021a4bd02674f" }, { "metadata": {}, "cell_type": "markdown", "source": [ "下面介绍关于`cqlib.util`模块中关于指令集相互转换的功能。\n", "\n", "QCIS 指令和 QASM 指令都是用来进行量子电路编程的指令集。详细信息请点击下面的链接查看。\n", "\n", "[QCIS](https://docs.quantumcomputer.ac.cn/Appendix/C/)\n", "\n", "[QASM](https://openqasm.com/intro.html)\n", "\n", "Cqlib 中定义了函数可以实现指令集命令的相互转换。" ], "id": "bd5ac6a2c058bbed" }, { "cell_type": "code", "id": "7bed60b8", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:57:09.368585Z", "start_time": "2024-08-09T06:57:09.021668Z" } }, "source": [ "# 从QCIS电路转换为QASM\n", "from cqlib.utils import QcisToQasm\n", "\n", "qasm_str = QcisToQasm.convert_qcis_to_qasm(circuit.qcis)\n", "print(f'转换后的QASM指令为: {qasm_str}')\n", "\n", "# 将QASM转换为QCIS\n", "from cqlib.utils import QasmToQcis\n", "qcis_str = QasmToQcis().convert_to_qcis(qasm_str)\n", "print(f'转换后的QCIS指令为: {qcis_str}') " ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "转换后的QASM指令为: OPENQASM 2.0;\n", "include \"qelib1.inc\";\n", "qreg q[7];\n", "creg c[7];\n", "h q[0];\n", "x q[6];\n", "h q[6];\n", "cz q[0],q[6];\n", "h q[6];\n", "measure q[0] -> c[0];\n", "measure q[6] -> c[1];\n", "\n", "转换后的QCIS指令为: Y2M Q0\n", "RZ Q0 3.141593\n", "X2P Q6\n", "X2P Q6\n", "RZ Q6 3.141593\n", "Y2P Q6\n", "CZ Q0 Q6\n", "Y2M Q6\n", "RZ Q6 3.141593\n", "M Q0\n", "M Q6\n" ] } ], "execution_count": 18 }, { "cell_type": "markdown", "id": "41d96ff7", "metadata": {}, "source": "### 5.2 QCIS指令化简" }, { "metadata": {}, "cell_type": "markdown", "source": [ "Cqlib 同时支持对QCIS指令进行简化,简化后的指令会以 QCIS 指令的形式返回。\n", "下面的例子中会将3个 QCIS 指令简化为2个 QCIS 指令。" ], "id": "3e74e7c64d24a06e" }, { "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:57:09.399908Z", "start_time": "2024-08-09T06:57:09.368585Z" } }, "cell_type": "code", "source": [ "from cqlib.utils import QCIS_Simplify\n", "\n", "qcis = \"\"\"\n", "Y2M Q1\n", "X2P Q1\n", "X2P Q1\n", "\"\"\"\n", "new_qcis = QCIS_Simplify().simplify(qcis)\n", "\n", "origin_line = qcis.count('\\n') - 1 \n", "new_line = new_qcis.count('\\n') - 1\n", "print(f\"化简前电路行数为: {origin_line}\")\n", "print(f\"化简后电路行数为: {new_line}\")\n", "print(f\"\\n化简后电路为: {new_qcis}\")" ], "id": "8c5f3bfce349ca48", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "化简前电路行数为: 3\n", "化简后电路行数为: 2\n", "\n", "化简后电路为: \n", "Y2P Q1\n", "RZ Q1 3.141592653589793\n", "\n" ] } ], "execution_count": 19 }, { "cell_type": "markdown", "id": "7426d0a1", "metadata": {}, "source": "### 5.3 虚拟线路映射" }, { "metadata": {}, "cell_type": "markdown", "source": "SDK 提供了基于Monte Carlo Tree Search (MCTS) 的虚拟线路映射算法,可以基于选择的量子计算机的拓扑图和输入的虚拟量子线路,输出映射到真实物理机拓扑结构的线路。", "id": "5c2ecebd32f28b56" }, { "cell_type": "code", "id": "708ecbf5", "metadata": { "ExecuteTime": { "end_time": "2024-08-09T06:59:35.031446Z", "start_time": "2024-08-09T06:59:34.659398Z" } }, "source": [ "from cqlib.mapping import transpile_qcis\n", "from cqlib.circuits import Circuit, Parameter\n", "\n", "c2 = Circuit(qubits=[0, 1])\n", "c2.rz(0, 0.0)\n", "c2.x2p(1)\n", "c2.y2p(0)\n", "c2.rz(1, 0.9272952180016122)\n", "c2.rz(0, 3.1415910000000005)\n", "c2.x2m(1)\n", "c2.rz(1, 0.0)\n", "\n", "c2.y2m(1)\n", "c2.cz(0, 1)\n", "c2.y2p(1)\n", "c2.rz(1, 0.0)\n", "c2.x2p(1)\n", "c2.rz(1, -0.9272952180016122)\n", "c2.x2m(1)\n", "\n", "c2.rz(1, 0.0)\n", "c2.y2m(1)\n", "c2.cz(0, 1)\n", "c2.y2p(1)\n", "c2.y2m(0)\n", "c2.rz(1, 0.0)\n", "c2.rz(0, -3.1415910000000005)\n", "c2.x2p(1)\n", "\n", "c2.rz(1, 0.9272952180016122)\n", "c2.x2m(1)\n", "c2.rz(1, 0.0)\n", "c2.measure(0)\n", "c2.measure(1)\n", "\n", "qcis_virtual_circuit = c2.qcis\n", "\n", "# 检查 qcis电路映射后是否有效\n", "before_mapping_check_res = platform.qcis_check_regular(qcis_virtual_circuit)\n", "print(f'映射前,有效检查的结果: {before_mapping_check_res}')\n", "# 建立虚拟电路与真实电路的映射\n", "circuit, initial_layout, swap_mapping, mapping_virtual_to_final = transpile_qcis(qcis_virtual_circuit, platform)\n", "qcis_after_mapping = circuit.qcis.upper()\n", "print(f'qcis 映射后的结果:{qcis_after_mapping}')\n", "# 检查 qcis电路映射后是否有效\n", "after_mapping_check_res = platform.qcis_check_regular(qcis_after_mapping)\n", "print(f'映射后,有效检查的结果: {after_mapping_check_res}')" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "映射前,有效检查的结果: False\n", "qcis 映射后的结果:X2P Q6\n", "RZ Q0 0.0\n", "RZ Q6 0.9272952180016122\n", "Y2P Q0\n", "X2M Q6\n", "RZ Q0 3.1415910000000005\n", "RZ Q6 0.0\n", "Y2M Q6\n", "CZ Q0 Q6\n", "Y2P Q6\n", "RZ Q6 0.0\n", "X2P Q6\n", "RZ Q6 -0.9272952180016122\n", "X2M Q6\n", "RZ Q6 0.0\n", "Y2M Q6\n", "CZ Q0 Q6\n", "Y2P Q6\n", "Y2M Q0\n", "RZ Q6 0.0\n", "RZ Q0 -3.1415910000000005\n", "X2P Q6\n", "RZ Q6 0.9272952180016122\n", "X2M Q6\n", "RZ Q6 0.0\n", "M Q0\n", "M Q6\n", "映射后,有效检查的结果: True\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " compilation 26:3: FutureWarning: \n", "\n", "shortest_path will return an iterator that yields\n", "(node, path) pairs instead of a dictionary when source\n", "and target are unspecified beginning in version 3.5\n", "\n", "To keep the current behavior, use:\n", "\n", "\tdict(nx.shortest_path(G))\n" ] } ], "execution_count": 21 } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }