CN1933336B - 使用grs码构建ldpc码的方法和装置 - Google Patents

使用grs码构建ldpc码的方法和装置 Download PDF

Info

Publication number
CN1933336B
CN1933336B CN2006100025983A CN200610002598A CN1933336B CN 1933336 B CN1933336 B CN 1933336B CN 2006100025983 A CN2006100025983 A CN 2006100025983A CN 200610002598 A CN200610002598 A CN 200610002598A CN 1933336 B CN1933336 B CN 1933336B
Authority
CN
China
Prior art keywords
coded word
word vector
sign indicating
indicating number
ldpc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2006100025983A
Other languages
English (en)
Other versions
CN1933336A (zh
Inventor
凯利·布赖恩·卡梅伦
豪·西恩·特
巴中·申
斯科特·理查德·鲍威尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies Fiber IP Singapore Pte Ltd
Original Assignee
Zyray Wireless Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/190,333 external-priority patent/US7536629B2/en
Application filed by Zyray Wireless Inc filed Critical Zyray Wireless Inc
Publication of CN1933336A publication Critical patent/CN1933336A/zh
Application granted granted Critical
Publication of CN1933336B publication Critical patent/CN1933336B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明公开一种使用GRS码构建LDPC码的方法。根据本发明提供的新方法可以使用GRS码生成各种类型的LDPC码。所述基于GRS的LDPC码可以应用于通信***中各种类型的接收机内。所述方法可以生成为各种应用领域特别设计的基于GRS的LDPC码。例如,所述基于GRS的LDPC码可特别设计为应用于遵循任何标准和/或IEEE P802.3an(10GBASE-T)课题组的推荐标准的通信***中。

Description

使用GRS码构建LDPC码的方法和装置
技术领域
本发明涉及通信***,更具体地,本发明涉及可用于通信***中生成编码信号的编码的生成。
背景技术
数据通信***已经持续发展了多年,近年来,采用重复纠错码的通信***是研究者们关注的焦点。其中最受关注的是采用低密度奇偶校验(Low DensityParity Check,简称LDPC)码的通信***。在同一信噪比情况下,重复编码的通信***的误码率通常低于选择性编码。
该领域的一个持续和主要的发展方向是降低通信***中必需的信噪比以达到特定的误码率。理想的目标是尝试研究通信信道中的山农限度(Shannon’slimit),山农限度可以看作是用在具有特定信噪比的信道中的数据传输率,通过该信道可实现无误码传输。换句话说,山农限度是给定调制和编码率的信道容量的理论限度。
LDPC码已被证实在某些情况下可以提供接近山农限度的非常好的解码性能。理论上,LDPC码被证实可以达到离山农限度0.004分贝的性能。长度为一百万的不规则LDPC码曾达到该性能,它证实了在通信***中应用LDPC码是非常有希望的。
LDPC编码信号的使用可应用于许多新的领域。例如,IEEEP802.3an(10GBASE-T)课题组涉及到重要的LDPC编码信号的应用。此IEEEP802.3an(10GBASE-T)课题组由IEEE建立,用于开发和标准化根据IEEE802.3CSMA/CD以太网协议通过双绞线传输数据的铜线10千兆位以太网标准。载波侦听多路访问/冲突检测(CSMA/CD)是以太网中载波传输访问的协议。IEEE802.3an(10GBASE-T)是通过4线双绞线传输数据的10Gbps以太网的一个新标准。更多的关于IEEEP802.3an(10GBASE-T)课题组的公共信息可以在下面的网站中找到:
“http://www.ieee802.org/3/an”
该应用中提供的高数据率相当接近在最差的100米电缆上的可能的理论最大传输率。实现10Gbps传输需要接近的容量以达到纠错编码。用传统链接码产生的潜在约束,排除了其在该应用中的使用。
显然,需要有一些可选的编码类型和调制技术以提供接近的容量,达到纠错的需求,LDPC码便可以提供这样的性能。
现在没有可以遵循的最好的方法建立性能良好的LDPC码,在下面的参考资料[a]中,基于里德-所罗门(Reed-Solomon,简称RS)码的两个编码字建立了规则的LDPC码。
[a]I.Djurdjevic,J.Xu,K.Abdel-Ghaffar and S.Lin,“A Class ofLow-Density Parity-Check Codes Constructed Based on Reed-Solomon CodesWith Two Information Symbols,”IEEE Communications Letter,vol.7,no.7,pp.317-319,July 2003.
然而,使用这种现有技术提出的LDPC码类型很窄,并且使用这种方法设计其他类型的LDPC码的灵活性很小。缺乏灵活性对于设计这种LDPC码和/或使用这种LDPC码实现的通信设备来说都是一个显著的挑战。很明显,在不同的信噪比情况下,用于各种通信***以提供更好的纠错均值和误码率的更好类型的编码技术需求是持续的。
发明内容
本发明发提供一种设备和方法,并在以下结合附图和具体实施例对其进行详细说明。通过以下结合附图对本发明的详细描述,本发明的其它特征和优点显而易见。
根据本发明的一方面,提供一种使用通用里德-所罗门(GeneralizedReed-Solomon,简称GRS)码构建LDPC码的方法,所述方法包括:
选择一组地址,包括:
多个元素,其中每个元素可以由升到对应指数次幂的伽罗瓦域(Galois field)中的一个素元生成,其中所述伽罗瓦域包括预定的有限个元素;
第一度为1的多项式函数,用于将所述地址组的每个元素映射到对应的非零值;
第二度为1的多项式函数,为所述第一度为1的多项式函数的非线性纯量倍数;
从所述伽罗瓦域中选择多个非零元素;
从多个可能的编码字向量值中识别GRS码的第一编码字向量,其中所述第一编码字向量可使用所述多个非零元素并依据所述第一度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
从所述多个可能的编码字向量值中识别所述GRS码的第二编码字向量,其中所述第二编码字向量可使用所述多个非零元素并依据所述第二度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘,从而生成多个调整后第一编码字向量;
将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘,从而生成多个调整后第二编码字向量;
将所述每个调整后第一编码字向量与所述每个调整后第二编码字向量相加以生成多个陪集(coset);
生成多个置换矩阵,其中每个所述置换矩阵包括多个行,每行包括有所述多个陪集中一个陪集的地址映射;
将所述多个置换矩阵中的每个置换矩阵排列为子矩阵,从而生成对应所述LDPC码的LDPC奇偶校验矩阵。
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述多个陪集包括2s个陪集;
所述多个置换矩阵中每个置换矩阵是2s×2s的置换矩阵。
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;且
ρ小于或等于2s
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述LDPC奇偶校验矩阵的位节点的度为γ,且校验节点的度为ρ;
所述LDPC奇偶校验矩阵的每列的权重为γ;
所述LDPC奇偶校验矩阵的每行的权重为ρ;
且ρ小于或等于2s
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵为384×2048的矩阵;
所述LDPC码为(2048,1723)规则LDPC码,其编码率接近0.8413;
且所述LDPC码的最小码间据大于或等于8。
优选地:
所述伽罗瓦域中的预定的有限个元素包括2s个元素,其中s为整数;
所述第一多个比例因子包括2s个比例因子;
所述第二多个比例因子包括2s个比例因子。
优选地:
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述地址组中的多个元素包括ρ个元素;
所述多个非零元素包括ρ个元素。
优选地:
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
当γ为整数时,所述LDPC码的最小码间距大于或等于γ+2;
当γ为整数时,所述LDPC码的最小码间距大于或等于γ+1。
优选地:
所述第一多个比例因子是所述第二多个比例因子。
优选地:
所述LDPC码用于生成遵循IEEEP802.3an(10GBASE-T)课题组推荐标准的LDPC编码信号。
优选地:
对应所述LDPC码的LDPC奇偶校验矩阵为384×2048的LDPC奇偶校验矩阵Hb,如附录B所示。
根据本发明的一方面,提供一种利用GRS码构建LDPC码的方法,所述方法包括:
从多个可能的编码字向量值中识别GRS码的第一编码字向量;
从多个可能的编码字向量值中识别所述GRS码的第二编码字向量;
将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘,从而生成多个调整后第一编码字向量;
将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘,从而生成多个调整后第二编码字向量;
将所述每个调整后第一编码字向量与所述每个调整后第二编码字向量相加以生成多个陪集;
生成多个置换矩阵,其中每个所述置换矩阵包括多个行,每行包括有所述多个陪集中一个陪集的地址映射;
将所述多个置换矩阵中的每个置换矩阵排列为子矩阵,从而生成对应所述LDPC码的LDPC奇偶校验矩阵。
优选地,所述方法进一步包括:
选择一组地址,包括:
多个元素,其中每个元素可以由升到对应指数次幂的伽罗瓦域中的一个素元生成,其中所述伽罗瓦域包括预定的有限个元素;
第一度为1的多项式函数,用于将所述地址组的每个元素映射到对应的非零值;
第二度为1的多项式函数,为所述第一度为1的多项式函数的非线性纯量倍数;
从所述伽罗瓦域中选择多个非零元素;其中所述第一编码字向量可使用所述多个非零元素并依据所述第一度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
所述第二编码字向量可使用所述多个非零元素并依据所述第二度为1的多项式函数对所述地址组中的每个元素进行映射来生成。
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述多个陪集包括2s个陪集;
所述多个置换矩阵中每个置换矩阵是2s×2s的置换矩阵;
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述LDPC奇偶校验矩阵的位节点的度为γ,且校验节点的度为ρ;
所述LDPC奇偶校验矩阵的每列的权重为γ;
所述LDPC奇偶校验矩阵的每行的权重为ρ;
且ρ小于或等于2s
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵为384×2048的矩阵;
所述LDPC码为(2048,1723)规则LDPC码,其编码率接近0.8413;
且所述LDPC码的最小码间据大于或等于8。
优选地:
所述伽罗瓦域中的预定的有限个元素包括2s个元素,其中s为整数;
所述第一多个比例因子包括2s个比例因子;
所述第二多个比例因子包括2s个比例因子。
优选地:
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述地址组中的多个元素包括ρ个元素;
所述多个非零元素包括ρ个元素。
优选地:
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
当γ为整数时,所述LDPC码的最小码间距大于或等于γ+2;
当γ为整数时,所述LDPC码的最小码间距大于或等于γ+1。
优选地:
所述LDPC码用于生成遵循IEEEP802.3an(10GBASE-T)课题组推荐标准的LDPC编码信号。
优选地:
对应所述LDPC码的LDPC奇偶校验矩阵为384×2048的LDPC奇偶校验矩阵Hb,如附录B所示。
根据本发明的一方面,提供一种利用GRS码构建LDPC码的装置,所述装置包括:
编码字向量识别模块,用于:
从多个可能的编码字向量值中识别GRS码的第一编码字向量;
从多个可能的编码字向量值中识别所述GRS码的第二编码字向量;
陪集生成模块,用于:
将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘,以生成多个调整后第一编码字向量;
将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘,以生成多个调整后第二编码字向量;
将所述每个调整后第一编码字向量与所述每个调整后第二编码字向量相加以生成多个陪集;
生成多个置换矩阵,其中每个所述置换矩阵包括多个行,每行包括有所述多个陪集中一个陪集的地址映射;
将所述多个置换矩阵中的每个置换矩阵排列为子矩阵,从而生成对应所述LDPC码的LDPC奇偶校验矩阵。
优选地,所述装置进一步包括:
地址组选择模块,包括:
多个元素,其中每个元素可以由升到对应指数次幂的伽罗瓦域中的一个素元生成,其中所述伽罗瓦域包括预定的有限个元素;
第一度为1的多项式函数,用于将所述地址组的每个元素映射到对应的非零值;
第二度为1的多项式函数,为所述第一度为1的多项式函数的非线性纯量倍数;
非零元素选择模块,用于从所述伽罗瓦域中选择多个非零元素;
所述第一编码字向量可使用所述多个非零元素并依据所述第一度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
所述第二编码字向量可使用所述多个非零元素并依据所述第二度为1的多项式函数对所述地址组中的每个元素进行映射来生成。
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述多个陪集包括2s个陪集;
所述多个置换矩阵中每个置换矩阵是2s×2s的置换矩阵;
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述LDPC奇偶校验矩阵的位节点的度为γ,且校验节点的度为ρ;
所述LDPC奇偶校验矩阵的每列的权重为γ;
所述LDPC奇偶校验矩阵的每行的权重为ρ;
且ρ小于或等于2s
优选地:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵为384×2048的矩阵;
所述LDPC码为(2048,1723)规则LDPC码,其编码率接近0.8413;
且所述LDPC码的最小码间据大于或等于8。
优选地:
所述伽罗瓦域中的预定的有限个元素包括2s个元素,其中s为整数;
所述第一多个比例因子包括2s个比例因子;
所述第二多个比例因子包括2s个比例因子。
优选地:
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述地址组中的多个元素包括ρ个元素;
所述多个非零元素包括ρ个元素。
优选地:
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
当γ为整数时,所述LDPC码的最小码间距大于或等于γ+2;
当γ为整数时,所述LDPC码的最小码间距大于或等于γ+1。
优选地:
所述装置与LDPC编码器通信连接;
所述LDPC编码器使用由所述装置构建的LDPC码对至少一个信息位进行编码,从而生成遵循IEEEP802.3an(10GBASE-T)课题组推荐标准的LDPC编码信号。
优选地:
对应所述LDPC码的LDPC奇偶校验矩阵为384×2048的LDPC奇偶校验矩阵Hb,如附录B所示。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是根据本发明的建立的通信***的一个实施例的示意图;
图2是根据本发明的建立的通信***的一个实施例的示意图;
图3是LDPC码双向图的一个实施例的示意图;
图4是根据本发明使用选择的特别是用于10GBASE-T的LDPC码生成的LDPC编码信号的发射处理方法的一个实施例的示意图;
图5是根据本发明使用选择的特别是用于10GBASE-T的LDPC码生成的LDPC编码信号的接收处理方法的一个实施例的示意图;
图6是根据本发明使用GRS码构建LDPC码的方法的一个实施例的示意图;
图7是根据本发明使用GRS码构建LDPC码的装置的一个实施例的示意图;
图8是根据本发明使用GRS码构建LDPC码的装置的另一个实施例的示意图。
具体实施方式
数字通信***的目标是将数字数据从一个地点或子***无错误或以可接受的低错误率传输至另一个地点或子***。如图1所示,数据可以在多种通信***中以各种信道进行传输:磁媒介、无线网络、光纤、铜线和其它媒介。
图1和图2所示分别为根据本发明建立的通信***100和200的示意图。参看图1,通信***100包括信道199,将位于通信信道199一端的通信设备110(包括具有编码器114的发射器112和具有解码器118的接收器116)与位于通信信道199另一端的通信设备120(包括具有编码器128的发射器126和具有解码器124的接收器122)连接。在某些实施例中,通信设备110和120均可能只包括一个发射器或一个接收器。实现通信信道199的媒介有几个不同的种类(例如,使用卫星天线132和134的卫星通信信道130、使用通信塔142和144和/或本地天线152和154的无线通信信道140、有线通信信道150和/或使用电光(E/O)接口162和光电(O/E)接口164的光纤通信信道160)。另外,可使用多于一种的媒介相结合形成通信信道199。
为了减少通信***内出现的不想要的传输错误,经常会采用错误校正和信道编码方案。一般来说,这些错误校正和信道编码方案在发射机端使用编码器,在接收机端使用解码器。
参看图2所示的通信***200,在通信信道299的发射端,信息位201被提供给发射机297,发射机297使用编码器和码元映射器220(该码元映射器可视为各自不同的功能块222和224)对信息位201进行编码,从而生成离散值调制符号序列203并提供给发射驱动器230,该发射驱动器230使用数模转换器232生成连续发射信号204,并使用发射滤波器234生成滤波后连续发射信号205,该滤波后连续发射信号205与通信信道299充分一致。在通信信道299的接收端,连续接收信号206被提供给模拟前端260,该模拟前端206包括接收滤波器262(生成滤波后连续接收信号207)和模数转换器264(生成离散接收信号208)。量度生成器270生成符号度量209,解码器208使用该符号量度209对所述离散值调制符号和编码于其中的信息位作出最佳估算(210)。
上述实施例中的解码器的可根据本发明来实现。另外,接下来的几个附图对用于支持根据本发明实现的设备、***、功能与/或方法的其他和特定实施例进行描述(某些实施例将给出更详细的介绍)。根据本发明处理的一种特定类型的信号是LDPC编码信号。在对本发明进行更具体的介绍之前,先对LDPC码进行一般的介绍。
图3是LDPC码双向图300的一个实施例的示意图。在现有技术中,LDPC双向图有时也称为坦纳图(Tanner Graph)。LDPC码可以视为具有二进制奇偶校验矩阵的代码,这样的话,该矩阵中几乎所有的元素值为0(例如:该二进制奇偶校验矩阵是稀疏矩阵)。例如,H=(hi,j)N×M可以被看作是块长度为N的LDPC码的奇偶校验矩阵。
在该奇偶校验矩阵中,第i列中1的数量可以表示为dv(i),第j行的1的数量可以表示为dc(j)。如果对于所有i,dv(i)=dv,以及对于所有的j,dc(j)=dc,那么该LDPC码被称为(dv,dc)规则LDPC码,否则该LDPC码称作不规则LDPC码。
LDPC码在下面的R.Gallager所著的参考资料[1]以及M.Luby等所著的参考资料[2]中已经给出介绍。
[1]R.Gallager,Low-Density Parity-Check Codes,Cambridge,MA:MIT Press,1963.(R.Gallager,低密度奇偶校验码,剑桥,MA:MIT出版社,1963年)
[2]M.Luby,M.Mitzenmacher,M.A.Shokrollahi,D.A.Spielman,and V.
Stemann,“Practical Loss-Resilient Codes”,Proc.29th Symp.on Theory ofComputing,1997,pp.150-159.(M.Luby,M.Mitzenmacher,M.A.Shokrollahi,D.A.Spielman,和V.Stemann,“实用弹性衰减代码”,1997年第29届计算理论研讨会会议论文集,第150-159页)
规则LDPC码可以表示为双向图300,其奇偶校验矩阵的左侧节点代表编码位(或“变量节点”(或“位节点”)310以位解码的方法对LDPC编码信号进行解码)变量,右侧节点代表校验等式(或校验节点320)。由H定义的LDPC码的双向图300可以由N个变量节点(例如N个位节点)和M个校验节点定义。N个变量节点310中的每个变量节点具有dv(i)个边线(edge,标号330所示为其中的一个示例),将位节点vi312与一个或多个校验节点(M个校验节点内的)相连。图中所示的边线330将位节点vi312与校验节点cj322连接。边线dv的数量(如图中dv314所示)又称为变量节点i的度(degree)。近似地,M个校验节点320的每个校验节点有刚好dc(j)个边线(图中表示为dc324)将该节点与一个或多个变量节点(或位节点)310连接。该边线的数量dc又称为校验节点j的度。
在变量节点vi(或位节点bi)312和校验节点cj322之间的边线330可定义为e=(i,j)。但是,另一方面,对于给定的边线e=(i,j),该边线的节点也可以被表示为e=(V(e),c(e))(或者e=(b(e),c(e))。给定变量节点vi(或位节点bi),可以定义一组从节点vi(或位节点bi)发出的边线为Ev(i)={e|v(e)=i}(或者为Eb(i)={e|b(e)=i})。给定校验节点cj,可以定义一组从节点cj发出的边线为Ec(j)={e|c(e)=j}。因此,推导结果是|Ev(i)=dv|(或|Eb(i)|=db)和|Ec(j)|=dc
通常来说,任何能由双向图表示的节点可以特征化为图形节点。还需要注意的是,不规则LDPC码也可以用双向图描述。然而,在不规则LDPC码中每一组节点的度可以根据某些分布进行选择。因此,对于一个不规则LDPC码的两个不同的节点vi1和vi2,|Ev(i1)|可能不等于|Ev(i2)|。此关系对于两个校验节点也成立。不规则LDPC码的概念最初由M.Luby等人在参考资料[2]中给出介绍。
总之,通过LDPC码的双向图,LDPC码的参数可由分布的度来定义,这一点在上述M.Luby等人的参考资料[2]以及以下参考资料[3]中已经给出描述:
[3]T.J.Richardson and R.L.Urbanke,“The capacity of low-density paritycheck code under message-passing decoding,”’IEEE Trans.Inform.Theory.Vol.47,pp.599-618,Feb.2001.
此分布可以被描述为:
设λi为从度为i的变量节点发出的边线的分数,设ρi为从度为i的校验节点发出的边线的分数,那么,度分布组(λ,ρ)可定义为如下:
λ ( x ) = Σ i = 2 M y λ i x i - 1 ρ ( x ) = Σ i = 1 M c ρ i x i - 1 , 其中Mv和Mc分别表示变量节点和校验节点的最大度。
尽管此处所示的多个实施例采用规则LDPC码,值得注意的是,本发明还同时适用规则LDPC码和不规则LDPC码。
如上述Djurdjevic等人的参考资料[a]所介绍的,基于RS码的两个编码字可构建类型比较窄的LDPC码。
相比之下,本申请提出的方法使用各种类型的RS码(包括具有大范围和数量的信息符号的RS码)构建大范围的LDPC码。在一个实施例中,根据本申请提出的方法可使用GRS码生成LDPC码。
本申请提出的使用GRS码生成LDPC码的新方法,为LDPC编码信号以及用于处理该LDPC编码信号的通信设备(包括发射端设备和接收端设备和/或收发机设备)的设计者提供了更多的灵活性。本发明提出的构建方法为生成的LDPC码的类型提供了更多的选择。
首先介绍构建该LDPC码的一个实施例。
理解本发明构建该LDPC码的方法先考虑伽罗瓦域GF(2s)以及任意数ρ,其中ρ≤2s
第一步,随机选择一组地址L,其中 L = { α i 0 , . . . , α i ρ - 1 } 具有ρ个元素和2个随机选择的度为1的多项式f0和f1,其中对于所有λ∈L,f(λ)≠0,且对于所有β∈GF(2s),f1(x)≠β·f0(x)。
第二步,从该伽罗瓦域GF(2s)中随机选择ρ个非零元素v0,v1,...vρ-1
第三步,取2个编码字,如下所示:
c 0 = ( v 0 f 0 ( α i 0 ) , v 1 f 0 ( α i 1 ) , . . . , v ρ - 1 f 0 ( α i ρ - 1 ) )
c 1 = ( v 0 f 1 ( α i 0 ) , v 1 f 1 ( α i 1 ) , . . . , v ρ - 1 f 1 ( α i ρ - 1 ) )
作为32位有限精确实现的一个例子,这两个编码字向量可表示如下:
c 0 = ( v 0 f 0 ( α i 0 ) , v 1 f 0 ( α i 1 ) , . . . , v 31 f 0 ( α i 31 ) )
c 1 = ( v 0 f 1 ( α i 0 ) , v 1 f 1 ( α i 1 ) , . . . , v 31 f 1 ( α i 31 ) )
如下述参考资料[4]所述,由这两个编码字c0和c1生成的二维码具有最小码间距dmin
[4]F.J.Mac Williams and N.J.A.Sloane,The Theory of Error-CorrectingCodes,North-Holland Mathematical Library,North-Holland,New York,1998。
第四步,由此存在2s个可能的陪集(c0)+β·c1,其中β属于伽罗瓦域,即β∈GF(2s)。
然后使用根据本发明提出的上述设计方法,利用Djurdjevic等人发表的参考文件中公布的设计,可以构建各种LDPC码。
根据本发明生成基于RS的LDPC码(例如,基于GRS的LDPC码)的方法的一个实施例如下:
陪集 C ( i ) = { c 1 , c 2 , . . . , c 2 s - 1 } , 其中每个ck={ck,0,ck,1,...,ck,ρ}
地址映射:使用该伽罗瓦域, gf ( 2 s ) → { 0,1 } 2 s
z(0)=(100...0),z(1)=(010...0),z(α)=(001...0),...
z(αi)=(000...010...0),其中1位于第i+2位。
一个2s×2s的置换矩阵如下:
P i , k = z ( c k , 0 ) z ( c k , 1 ) · · · z ( c k , 2 s - 1 )
该LDPC码可以使用如下的LDPC矩阵生成:
H ( γ ) = P 1,1 P 1,2 · · · P 1 , ρ P 2,1 P 2,2 · · · P 2 , ρ · · · · · · · · · · · · P γ , 1 P γ , 2 · · · P γ , ρ
此矩阵的某些属性如下:
1.每列的权重为γ
2.每行的权重为ρ
3.任意2行不具有多于一个的相同元素
同样,使用该方法构建的LDPC码的位节点的度为γ,使用该方法构建的LDPC码的校验节点的度为ρ。
该LDPC码的最小码间距dmin如下:
Figure S06102598320060127D000153
例:根LDPC码(Root LDPC Code,见附录A)
以下提供一个利用该方法生成的LDPC码的例子。
使用利用GRS码生成LDPC码的该方法,至少可以构建64×32×64=131,072种不同的LDPC码。因此,它具有足够的随机性。
选择的伽罗瓦域可表示如下:GF(26)
第一步,随机选择的一个度为1的多项式f0可以表示为0103(八进制),或者可选择使用多项式f0(x)=x6+x+1。此外,素元α可以表示为2(八进制),或简化为α=x。
第二步,从伽罗瓦域GF(2s)中随机选择ρ个非零元素v0,v1,...vρ-1。在该根LDPC码的例子中,非零元素的数量ρ选择为32。
第三步,取2个编码字,在32位有限精确实现中表示如下:
c 0 = ( v 0 f 0 ( α i 0 ) , v 1 f 0 ( α i 1 ) , . . . , v 31 f 0 ( α i 31 ) )
c 1 = ( v 0 f 1 ( α i 0 ) , v 1 f 1 ( α i 1 ) , . . . , v 31 f 1 ( α i 31 ) )
从对应的2维RS码生成矩阵G中产生的这两个RS编码字可以表示为:
A:24,7,62,30,32,39,1,2,50,2,26,34,44,39,14,19,38,20,18,38,62,18,50,32,42,35,27,45,0,31,21,1
B:24,34,53,34,1,46,31,48,55,38,61,12,47,21,62,56,31,22,17,14,32,41,27,52,4,51,38,40,28,41,0,-1
其中数x,x>-1表示编码字中的αx,-1表示编码字中的0。显然,α1=α且α0=1。
例如,编码字A和B可以表示为如下:
A = α 24 , α 7 , α 62 , α 30 , α 32 , α 39 , α , α 2 , α 50 , α 2 , α 26 , α 34 , α 44 , α 39 , α 14 α 19 , α 39 , α 20 , α 18 , α 38 , α 62 , α 18 , α 50 , α 32 , α 42 , α 35 , α 27 , α 45 , 1 , α 31 , α 21 , α
B = α 24 , α 34 , α 53 , α 34 α , α 46 , α 31 , α 48 , α 55 , α 38 , α 61 , α 12 , α 47 , α 21 , α 62 , α 56 , α 31 , α 22 , α 17 , α 14 , α 32 , α 41 , α 27 , α 52 , α 4 , α 51 , α 38 , α 40 , α 28 , α 41 , 1,0
因此,至少有64个可能的选择。
生成的2个GRS编码字可表示如下:
c 0 = α 24 , α 7 , α 62 , α 30 , α 32 , α 39 , α , α 2 , α 50 , α 2 , α 26 , α 34 , α 44 , α 39 , α 14 α 19 , α 39 , α 20 , α 18 , α 38 , α 62 , α 18 , α 50 , α 32 , α 42 , α 35 , α 27 , α 45 , 1 , α 31 , α 21 , α ;
c 1 = α 24 , α 34 , α 53 , α 34 α , α 46 , α 31 , α 48 , α 55 , α 38 , α 61 , α 12 , α 47 , α 21 , α 62 , α 56 , α 31 , α 22 , α 17 , α 14 , α 32 , α 41 , α 27 , α 52 , α 4 , α 51 , α 38 , α 40 , α 28 , α 41 , 1,0 .
这2个GRS编码字还可以用编码字A和B表示如下:
c0=(A0,A1,...A16,α19×A17,A18,...,A31);
c1=(B0,B1,...,B16,α19×B17,B18,...,B31).
这2个GRS编码字的最终值可以前述的形式表示,其中每个GRS编码字的修改过的第17项用下划线强调如下:
c0:24,7,62,30,32,39,1,2,50,2,26,34,44,39,14,19,38,39,18,38,62,18,50,32,42,35,27,45,0,31,21,1
c1:24,34,53,34,1,46,31,48,55,38,61,12,47,21,62,56,31,41,17,14,32,41,27,52,4,51,38,40,28,41,0,-1
第四步,由此可得到26个可能的陪集(c0)+β·c1,其中β属于伽罗瓦域,即β∈GF(26)。
一维码可以表示为C0=<c0>,其它5个陪集可以表示为如下:
Ci=C0(i-1)×c1,i=1,2,3,4,5.
合适的置换矩阵(26×26或64×64的形式)及随后真正的LDPC奇偶校验矩阵H,可以根据上述的方法建立。
继续上述的“根LDPC码”的例子,与该构建的编码GRS-H相关的LDPC奇偶校验矩阵如附录A所示。因该奇偶校验矩阵比较大,所以在附录A提供。
例:“根LDPC码”的行和/或列的置换(如附录B所示)
同样值得注意的是,上述的LDPC奇偶校验矩阵以及附录A中提供的LDPC奇偶校验矩阵可经过行和/或列的置换,从而生成各种不同的LDPC奇偶校验矩阵,均包括在本发明的范围和精神实质内。
对“根LDPC码”执行各种不同的行和/或列的置换可以生成不同的LDPC奇偶校验矩阵H,总共有(2048!)×(384!)个(其中“!”表示“阶乘”)。
本发明提供一种选择并特别用于通信***(例如,包括其内实现的通信设备)的LDPC码,所述通信***的设计和实现遵循IEEEP802.3an(10GBASE-T)课题组推荐的标准。
“根LDPC码”的一个可能生成的置换如附录B所示。该LDPC奇偶校验矩阵Hb,对应根据IEEE802.3an(10GBASE-T)标准的LDPC码;该矩阵也发表于“IEEEDraft P802.3an/D2.1”中。
特别依照10GBASE-T选择使用的LDPC码的某些属性如下:
GF(2s)=GF(26),其中γ=6且ρ=32。
该奇偶校验矩阵如下:
H(6),为384×2048的矩阵。
在(2048,1723)规则LDPC码中的结果的编码率为0.8413,其最小码间距dmin至少为8(即,γ=6,且dmin≥γ+2→dmin≥8)。
图4是根据本发明使用选择的特别是用于10GBASE-T的LDPC码生成的LDPC编码信号的发射处理方法400的一个实施例的示意图。图4所示为在通信信道的发射机端执行的方法。所述方法涉及使用选择的特别是上述实施例中用于10GBASE-T的LDPC码生成LDPC编码信号的方法。这类LDPC编码信号包括上述实施例中所述的基于GRS的LDPC编码信号(例如,使用GRS码生成的LDPC编码信号)。此LDPC编码信号也可以看作是遵循IEEEP802.3an(10GBASE-T)课题组的推荐标准的LDPC编码信号。所述方法涉及LDPC编码信号的生成,还涉及将该LDPC编码信号与将要发射对应的连续时间发射信号的通信信道相一致所需的其他操作。
首先,如步骤405所示,所述方法接收信息位。这些信息位对应期望从信道的一端传送到另一端的真实信息。在信道的另一端,将对这些原始信息位进行最佳估算。接下来,在步骤410中,对该信息位进行LDPC编码,从而生成由n位符号组成的LDPC编码字。该编码操作可以使用选择的特别是用于10GBASE-T的LDPC码来执行;或者,可以采用利用GRS码构建的任意LDPC码而不脱离本发明的范围和精神实质。在某些情况下,所述方法在使用LDPC码对LDPC编码字的各位进行编码之后,对其进行交错,如步骤415所示。
然后,如步骤420所示,符号映射所述n位符号为至少一个调制(包括至少一个星座图和至少一个对应的映射)。在某些实施例中,该n位符号被映射为多个不同的调制类型,从而生成具有可变调制和/或编码率的信号,这些信号的调制与/或编码率可基于帧频繁变化,或基于符号频繁变化。将该n位符号映射为至少一个调制从而生成一个离散值调制符号序列,包括多对I、Q值(或更高维数的星座图)。值得注意的是,n为整数。此处,该离散值调制符号序列可视为LDPC编码调制信号(在此完全是数字信号形式)。
然后所述方法在步骤430中,将一调制率下表示为多对IQ值(或更高阶的群集值)的离散值调制符号序列中的每个符号写入一个装置内,从而生成连续时间信号。例如,可以用数模转换器来执行。
之后,该连续时间信号(一般位于基带频率)从数模转换器或其他等效装置中输出后,步骤440中,对该连续时间信号(例如,连续时间基带信号)执行任何必要的上变频转换、滤波和/或增益调整,从而生成滤波后连续时间发射信号。可能有些例子中不执行上变频转换、滤波和/或增益调整,由数模转换器或其它等效装置输出的连续时间信号的形式已经与其将发射的通信信道(或媒介)相一致。执行完任何将该信号与通信信道(或媒介)相一致的适当处理后,如步骤450所示,在该通信信道内将该信号发射。
下图所示同样是在通信信道的接收机端执行的方法。所述方法涉及各种实施例,以对接收的连续时间信号(其信息位已使用上述实施例中介绍的选择的特别用于10GBASE-T的LDPC码进行了编码)进行处理,以对编码于其中的信息位尽力做出最好的估算。在某些实施例中,该接收的连续时间信号可以看作是已在发射机端发射入通信信道的根据信道调整后的连续时间发射信号。一般来说,信道调整对发射并通过其传送(或存储于其内)的连续时间发射信号进行调整(通常为非期望地)。如下的2幅图中每一幅图介绍了一种可选的方法,对接收的连续时间信号执行接收处理(例如,在通信信道的接收机端),最终对编码于其中的信息位作出最好的估算。
图5是根据本发明使用选择的特别是用于10GBASE-T的LDPC码生成的LDPC编码信号的接收处理方法500的一个实施例的示意图。首先,在步骤510中,所述方法接收连续时间信号。在某些实施例中,该接收的连续时间信号中的信息位可能已使用上述实施例中选择的特别是用于10GBASE-T的LDPC码进行了编码。或者,该接收的连续时间信号中的信息位可能已使用根据本发明利用GRS码构建的任意LDPC码进行了编码。此外,此类LDPC编码信号包括前述实施例中介绍的基于GRS的LDPC编码信号。该连续时间信号的接收和处理还包括对第一连续时间信号进行必要的下变频转换,以生成第二连续时间信号,如步骤512所示。任何需要执行的频率转换可以将载波频率转换至基带频率。此频率转换也可以通过中频来执行。无论在哪个实施例中,当执行此方法时,接收的连续时间信号的频率一般都降低至基带连续时间信号。
所述方法如步骤520中,对所述第一(或第二)连续时间信号进行采样,以生成离散时间信号,并从中提取I、Q成分(同相成分、正交成分)。该采样过程可以使用模数转换器或等效装置来执行,以从执行了适当的下变频转换(并进行了滤波)后的接收的连续时间信号中生成离散时间信号。该离散时间信号的每个采样中I、Q成分也该步骤中进行提取。然后所述方法在步骤530中,对该I、Q成分进行解调并执行符号映射,从而生成离散值调制符号序列。
接下来如步骤540所示,对边消息执行预定次数的迭代更新。此步骤可视为依据上述各实施例执行LDPC解码。此LDPC解码通常包括位节点处理以更新与位节点相关的边消息(如步骤542所示),还包括校验引擎处理以更新与校验节点相关的边消息(如步骤544所示)。
执行完预定次数解码迭代的最后一次解码时,所述方法如步骤550所示,基于对应最近更新的与位节点相关的边消息的软信息作出硬决策。所述方法最后在步骤560中,输出从所述接收的连续时间信号提取出的编码字(包括信息位)的最佳估计值。
图6所示为根据本发明使用GRS码构建LDPC码的方法600的一个实施例的示意图。
首先,方法600如步骤610所示,选择一组地址。该地址组包括多个元素,其中每个元素可使用其内每个素元升为对应指数次幂的伽罗瓦域(GF(2s))内的素元(例如,α)来生成。例如,该地址组可以表示为 L = { &alpha; i 0 , . . . , &alpha; i &rho; - 1 } . 伽罗瓦域可以看作是具有预定的有限个元素的域。在数字通信领域中,伽罗瓦域的应用是非常广泛的,其为有限空间,在该有限空间内生成各种编码、编码信号和/或其各个成分。该地址组还包括两个单独的度为1的多项式函数(例如,第一度为1的多项式函数和第二度为1的多项式函数)。所述第一度为1的多项式函数用于将所述地址组的多个元素中的每个元素映射至对应的非零至,而所述第二度为1的多项式函数是所述第一度为1的多项式函数的非线性纯量倍数。也就是说,对于该地址组中的所有纯量值(例如,β),所述第二度为1的多项式函数均不可能被调整为其它值。
然后,如步骤620所示,从该伽罗瓦域中选择多个非零元素。这些非零元素可以用于生成依据GRS编码识别的每个编码字。如步骤630所示,从多个可能的编码字向量值中识别GRS码的第一编码字向量。该第一编码字向量可使用所述多个非零元素并通过依据所述第一度为1的多项式函数(例如,f0)对该地址组(例如, L = { &alpha; i 0 , . . . , &alpha; i &rho; - 1 } )中的每个元素进行映射来生成。然后,如步骤640所示,所述方法600继续,从多个可能的编码字向量值中识别GRS码的第二编码字向量。该第二编码字向量同样可使用所述多个非零元素并通过依据所述第二度为1的多项式函数对该地址组中的每个元素进行映射来生成。
如步骤650所示,所述方法600然后将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘,以生成多个调整后第一编码字向量。同样,如步骤660所示,所述方法600将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘,以生成多个调整后第二编码字向量。
如步骤650和660所示的这些处理过程,可以看作是使每个第一编码字向量和第二编码字向量(例如,c0和c1)跨越(sapnning)该伽罗瓦域。例如,对于2s个不同的β值,第一编码字向量c0需要经过对伽罗瓦域的一维跨越(例如,(c0)=[β·c0,β为GF(2s)中任何元素])。此外,对于伽罗瓦域中的β,总共有2s个可能的值。值得注意的是,调整后编码字向量组(c0),可以看作是由所述第一编码字向量c0归纳得到的一维编码。
同样地,对于β的2s个不同的值,第二编码向量c1需要经过对伽罗瓦域的一维跨越(例如,(c1)=[β·c1,β为GF(2s)中任何元素])。此外,第二组(c1)也可以看作是由第二编码向量c1归纳得到的一维编码。
如步骤670所示,所述方法600继续,将所述多个调整后第一编码字向量中的每一个与所述多个调整后第二编码字向量中的每一个相加,以生成多个陪集。换句话说,一旦所述一组调整后第一编码字向量(c0)确定后,使用比例因子β的各种值来生成所述每个陪集。由此可以有2s个可能的陪集(c0)+β·c1,这些陪集可以表示为如下:
陪集 C ( i ) = { c 1 , c 2 , . . . , c 2 s - 1 } ,这样每个ck={ck,0,ck,1,...,ck,ρ}
如步骤680所示,所述方法600生成多个置换矩阵,每个置换矩阵包括多个的行,其中每行包括所述多个陪集中一个陪集的地址映射。
可以采用的一个可能的地址映射如下所示:
地址映射:使用伽罗瓦域, CF ( 2 s ) &RightArrow; { 0,1 } 2 s
z(0)=(100...0),z(1)=(010...0),z(α)=(001...0),...
z(αi)=(000...010...0),其中1在第i+2位
2s×2s个置换矩阵中的每个置换矩阵的形式如下:
Pi , k = z ( c k , 0 ) z ( c k , 1 ) &CenterDot; &CenterDot; &CenterDot; z ( c k , 2 s - 1 )
这些置换矩阵中的每一个形成后,如步骤690所示,所述方法排列所述每个置换矩阵为子矩阵,从而生成对应LDPC码的LDPC奇偶校验矩阵。该LDPC码可以通过按如下形式构建的LDPC奇偶校验矩阵生成:
H ( &gamma; ) = P 1,1 P 1,2 &CenterDot; &CenterDot; &CenterDot; P 1 , &rho; P 2,1 P 2,2 &CenterDot; &CenterDot; &CenterDot; P 2 , &rho; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; &CenterDot; P &gamma; , 1 P &gamma; , 2 &CenterDot; &CenterDot; &CenterDot; P &gamma; , &rho;
该奇偶校验矩阵的某些属性提供如下:
1、每列的权重为γ
2、每行的权重为ρ
3、任意2行不具有多于一个的相同元素
同样,利用该方法构建的LDPC码的位节点的度为γ,且利用该方法构建的LDPC码的校验节点的度为ρ。
该LDPC码的最小码间距dmin如下:
Figure S06102598320060127D000223
利用GRS编码(而不是仅仅RS编码),可以较之现有技术中的技术生成更多不同的LDPC码。
值得注意的是,该LDPC奇偶校验矩阵H(γ),可用于构建生成矩阵G,此生成矩阵可由LDPC编码器用于对至少一个信息位进行编码,以生成至少一个编码位。
图7所示为根据本发明使用GRS码构建LDPC码的装置的一个实施例700的示意图。该实施例示出了如何建立装置710以使用GRS码(如方框712所示)建立LDPC码(如方框714所示)。
装置710生成LDPC码714后,将其提供给编码器722,由编码器722对信息位701进行编码从而生成编码信息位702。在某些实施例中,编码器722还输出未进行LDPC编码的未编码位703。
同样值得注意的是,还可以通信连接一个解码器以接受由装置710生成的LDPC码714而不脱离本发明的范围和精神实质。通信信道两端的设备可以采用同样的使用GRS码712构建的LDPC码714。
图8所示为根据本发明使用GRS码构建LDPC码的装置的另一个实施例800的示意图。该实施例示出了一些可以用于装置810中的功能块(和/或模块)。
装置810使用GRS码构建LDPC码。装置810包括用于选择地址组的地址组选择模块820以及用于从伽罗瓦域中选择多个非零元素的非零元素选择模块830。
装置810还包括编码字向量识别模块840,用于从多个可能的编码字向量值中识别GRS码的第一编码字向量。编码字向量识别模块840还用于从多个可能的编码字向量值中识别GRS码的第二编码字向量。
装置810还包括陪集生成模块850,用于将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘以生成多个调整后第一编码字向量,以及将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘以生成多个调整后第二编码字向量。陪集生成模块850还可通过将多个调整后第一编码字向量中的每一个与多个调整后第二编码字向量中的每一个相加,从而生成多个陪集。
装置810还包括LDPC奇偶校验矩阵生成模块860,用于生成多个置换矩阵,其中每个置换矩阵包括多个行,其中每行包括所述多个陪集中一个陪集的地址映射。LDPC奇偶校验矩阵生成模块860还可以用于将多个置换矩阵中的每个置换矩阵排列为子矩阵,从而生成对应LDPC码的LDPC奇偶校验矩阵。
该装置810还可与编码器722通信连接,该编码器722用于对信息位701进行编码以生成编码信息位702。此外,编码器722输出未经过LDPC编码的未编码位703。如上述实施例所述,还可以通信连接一个解码器以接收装置810生成的LDPC码714而不脱离本发明的范围和精神实质。通信信道两端的设备可以采用相同的使用GRS码构建的LDPC码。
同样值得注意的是,前述结合附图介绍的方法可应用于任何适用的***和/或设备设计中(通信***、通信发射机、通信接收机、通信收发机和/或其内描述的功能)而不脱离本发明的范围和精神实质。
此外,值得注意的是,此处描述的各种功能、***和/或设备以及相关方法实施例全部都可以在对数域中实现,从而使乘法能够利用加法执行,以及除法能够利用减法执行。
根据以上结合附图对本发明进行了的详细描述,其它的各种修改和变更是显而易见的,而且这些修改和变更不脱离本发明的精神实质和范围。相关申请的交叉引用:
本专利申请要求以下美国临时专利申请的优先权,并全文引用该申请作为本专利申请的一部分:
1.美国临时专利申请号为60/642,689,名称为“使用GRS码构建LDPC码(Construction of LDPC codes using generalized R-S code)”(代理案号为BP4008.2),申请日为2005年1月10日。
附录说明:
所提出的每个LDPC奇偶校验矩阵具有如下的格式:在该奇偶校验矩阵的每行中,非零项位于提供非零值的列中。每个LDPC奇偶校验矩阵的384行,每行包括32个非零值元素(因此权重为32);每个所述非零值元素的值为1。每个所述LDPC奇偶校验矩阵为384×2048的矩阵。
附录A;“根LDPC码”的奇偶校验矩阵
        384×2048的LDPC矩阵,GRS-H
GRS-H=
0,64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024,1088,1152,1216,1280,1344,1408,1472,1536,1600,1664,1728,1792,1856,1920,1984,
25,72,191,223,289,360,386,451,563,579,667,739,813,872,911,980,1063,1128,1171,1255,1343,1363,1459,1505,1579,1636,1692,1774,1793,1888,1942,1986,
26,73,129,224,290,361,387,452,564,580,668,740,814,873,912,981,1064,1129,1172,1256,1281,1364,1460,1506,1580,1637,1693,1775,1794,1889,1943,1987,
27,74,130,225,291,362,388,453,565,581,669,741,815,874,913,982,1065,1130,1173,1257,1282,1365,1461,1507,1581,1638,1694,1776,1795,1890,1944,1988,
28,75,131,226,292,363,389,454,566,582,670,742,816,875,914,983,1066,1131,1174,1258,1283,1366,1462,1508,1582,1639,1695,1777,1796,1891,1945,1989,
29,76,132,227,293,364,390,455,567,583,671,743,817,876,915,984,1067,1132,1175,1259,1284,1367,1463,1509,1583,1640,1696,1778,1797,1892,1946,1990,
30,77,133,228,294,365,391,456,568,584,672,744,818,877,916,985,1068,1133,1176,1260,1285,1368,1464,1510,1584,1641,1697,1779,1798,1893,1947,1991,
31,78,134,229,295,366,392,457,569,585,673,745,819,878,917,986,1069,1134,1177,1261,1286,1369,1465,1511,1585,1642,1698,1780,1799,1894,1948,1992,
32,79,135,230,296,367,393,458,570,586,674,746,820,879,918,987,1070,1135,1178,1262,1287,1370,1466,1512,1586,1643,1699,1781,1800,1895,1949,1993,
33,80,136,231,297,368,394,459,571,587,675,747,821,880,919,988,1071,1136,1179,1263,1288,1371,1467,1513,1587,1644,1700,1782,1801,1896,1950,1994,
34,81,137,232,298,369,395,460,572,588,676,748,822,881,920,989,1072,1137,1180,1264,1289,1372,1468,1514,1588,1645,1701,1783,1802,1897,1951,1995,
35,82,138,233,299,370,396,461,573,589,677,749,823,882,921,990,1073,1138,1181,1265,1290,1373,1469,1515,1589,1646,1702,1784,1803,1898,1952,1996,
36,83,139,234,300,371,397,462,574,590,678,750,824,883,922,991,1074,1139,1182,1266,1291,1374,1470,1516,1590,1647,1703,1785,1804,1899,1953,1997,
37,84,140,235,301,372,398,463,575,591,679,751,825,884,923,992,1075,1140,1183,1267,1292,1375,1471,1517,1591,1648,1704,1786,1805,1900,1954,1998,
38,85,141,236,302,373,399,464,513,592,680,752,826,885,924,993,1076,1141,1184,1268,1293,1376,1409,1518,1592,1649,1705,1787,1806,1901,1955,1999,
39,86,142,237,303,374,400,465,514,593,681,753,827,886,925,994,1077,1142,1185,1269,1294,1377,1410,1519,1593,1650,1706,1788,1807,1902,1956,2000,
40,87,143,238,304,375,401,466,515,594,682,754,828,887,926,995,1078,1143,1186,1270,1295,1378,1411,1520,1594,1651,1707,1789,1808,1903,1957,2001,
41,88,144,239,305,376,402,467,516,595,683,755,829,888,927,996,1079,1144,1187,1271,1296,1379,1412,1521,1595,1652,1708,1790,1809,1904,1958,2002,
42,89,145,240,306,377,403,468,517,596,684,756,830,889,928,997,1080,1145,1188,1272,1297,1380,1413,1522,1596,1653,1709,1791,1810,1905,1959,2003,
43,90,146,241,307,378,404,469,518,597,685,757,831,890,929,998,1081,1146,1189,1273,1298,1381,1414,1523,1597,1654,1710,1729,1811,1906,1960,2004,
44,91,147,242,308,379,405,470,519,598,686,758,769,891,930,999,1082,1147,1190,1274,1299,1382,1415,1524,1598,1655,1711,1730,1812,1907,1961,2005,
45,92,148,243,309,380,406,471,520,599,687,759,770,892,931,1000,1083,1148,1191,1275,1300,1383,1416,1525,1599,1656,1712,1731,1813,1908,1962,2006,
46,93,149,244,310,381,407,472,521,600,688,760,771,893,932,1001,1084,1149,1192,1276,1301,1384,1417,1526,1537,1657,1713,1732,1814,1909,1963,2007,
47,94,150,245,311,382,408,473,522,601,689,761,772,894,933,1002,1085,1150,1193,1277,1302,1385,1418,1527,1538,1658,1714,1733,1815,1910,1964,2008,
48,95,151,246,312,383,409,474,523,602,690,762,773,895,934,1003,1086,1151,1194,1278,1303,1386,1419,1528,1539,1659,1715,1734,1816,1911,1965,2009,
49,96,152,247,313,321,410,475,524,603,691,763,774,833,935,1004,1087,1089,1195,1279,1304,1387,1420,1529,1540,1660,1716,1735,1817,1912,1966,2010,
50,97,153,248,314,322,411,476,525,604,692,764,775,834,936,1005,1025,1090,1196,1217,1305,1388,1421,1530,1541,1661,1717,1736,1818,1913,1967,2011,
51,98,154,249,315,323,412,477,526,605,693,765,776,835,937,1006,1026,1091,1197,1218,1306,1389,1422,1531,1542,1662,1718,1737,1819,1914,1968,2012,
52,99,155,250,316,324,413,478,527,606,694,766,777,836,938,1007,1027,1092,1198,1219,1307,1390,1423,1532,1543,1663,1719,1738,1820,1915,1969,2013,
53,100,156,251,317,325,414,479,528,607,695,767,778,837,939,1008,1028,1093,1199,1220,1308,1391,1424,1533,1544,1601,1720,1739,1821,1916,1970,2014,
54,101,157,252,318,326,415,480,529,608,696,705,779,838,940,1009,1029,1094,1200,1221,1309,1392,1425,1534,1545,1602,1721,1740,1822,1917,1971,2015,
55,102,158,253,319,327,416,481,530,609,697,706,780,839,941,1010,1030,1095,1201,1222,1310,1393,1426,1535,1546,1603,1722,1741,1823,1918,1972,2016,
56,103,159,254,257,328,417,482,531,610,698,707,781,840,942,1011,1031,1096,1202,1223,1311,1394,1427,1473,1547,1604,1723,1742,1824,1919,1973,2017,
57,104,160,255,258,329,418,483,532,611,699,708,782,841,943,1012,1032,1097,1203,1224,1312,1395,1428,1474,1548,1605,1724,1743,1825,1857,1974,2018,
58,105,161,193,259,330,419,484,533,612,700,709,783,842,944,1013,1033,1098,1204,1225,1313,1396,1429,1475,1549,1606,1725,1744,1826,1858,1975,2019,
59,106,162,194,260,331,420,485,534,613,701,710,784,843,945,1014,1034,1099,1205,1226,1314,1397,1430,1476,1550,1607,1726,1745,1827,1859,1976,2020,
60,107,163,195,261,332,421,486,535,614,702,711,785,844,946,1015,1035,1100,1206,1227,1315,1398,1431,1477,1551,1608,1727,1746,1828,1860,1977,2021,
61,108,164,196,262,333,422,487,536,615,703,712,786,845,947,1016,1036,1101,1207,1228,1316,1399,1432,1478,1552,1609,1665,1747,1829,1861,1978,2022,
62,109,165,197,263,334,423,488,537,616,641,713,787,846,948,1017,1037,1102,1208,1229,1317,1400,1433,1479,1553,1610,1666,1748,1830,1862,1979,2023,
63,110,166,198,264,335,424,489,538,617,642,714,788,847,949,1018,1038,1103,1209,1230,1318,1401,1434,1480,1554,1611,1667,1749,1831,1863,1980,2024,
1,111,167,199,265,336,425,490,539,618,643,715,789,848,950,1019,1039,1104,1210,1231,1319,1402,1435,1481,1555,1612,1668,1750,1832,1864,1981,2025,
2,112,168,200,266,337,426,491,540,619,644,716,790,849,951,1020,1040,1105,1211,1232,1320,1403,1436,1482,1556,1613,1669,1751,1833,1865,1982,2026,
3,113,169,201,267,338,427,492,541,620,645,717,791,850,952,1021,1041,1106,1212,1233,1321,1404,1437,1483,1557,1614,1670,1752,1834,1866,1983,2027,
4,114,170,202,268,339,428,493,542,621,646,718,792,851,953,1022,1042,1107,1213,1234,1322,1405,1438,1484,1558,1615,1671,1753,1835,1867,1921,2028,
5,115,171,203,269,340,429,494,543,622,647,719,793,852,954,1023,1043,1108,1214,1235,1323,1406,1439,1485,1559,1616,1672,1754,1836,1868,1922,2029,
6,116,172,204,270,341,430,495,544,623,648,720,794,853,955,961,1044,1109,1215,1236,1324,1407,1440,1486,1560,1617,1673,1755,1837,1869,1923,2030,
7,117,173,205,271,342,431,496,545,624,649,721,795,854,956,962,1045,1110,1153,1237,1325,1345,1441,1487,1561,1618,1674,1756,1838,1870,1924,2031,
8,118,174,206,272,343,432,497,546,625,650,722,796,855,957,963,1046,1111,1154,1238,1326,1346,1442,1488,1562,1619,1675,1757,1839,1871,1925,2032,
9,119,175,207,273,344,433,498,547,626,651,723,797,856,958,964,1047,1112,1155,1239,1327,1347,1443,1489,1563,1620,1676,1758,1840,1872,1926,2033,
10,120,176,208,274,345,434,499,548,627,652,724,798,857,959,965,1048,1113,1156,1240,1328,1348,1444,1490,1564,1621,1677,1759,1841,1873,1927,2034,
11,121,177,209,275,346,435,500,549,628,653,725,799,858,897,966,1049,1114,1157,1241,1329,1349,1445,1491,1565,1622,1678,1760,1842,1874,1928,2035,
12,122,178,210,276,347,436,501,550,629,654,726,800,859,898,967,1050,1115,1158,1242,1330,1350,1446,1492,1566,1623,1679,1761,1843,1875,1929,2036,
13,123,179,211,277,348,437,502,551,630,655,727,801,860,899,968,1051,1116,1159,1243,1331,1351,1447,1493,1567,1624,1680,1762,1844,1876,1930,2037,
14,124,180,212,278,349,438,503,552,631,656,728,802,861,900,969,1052,1117,1160,1244,1332,1352,1448,1494,1568,1625,1681,1763,1845,1877,1931,2038,
15,125,181,213,279,350,439,504,553,632,657,729,803,862,901,970,1053,1118,1161,1245,1333,1353,1449,1495,1569,1626,1682,1764,1846,1878,1932,2039,
16,126,182,214,280,351,440,505,554,633,658,730,804,863,902,971,1054,1119,1162,1246,1334,1354,1450,1496,1570,1627,1683,1765,1847,1879,1933,2040,
17,127,183,215,281,352,441,506,555,634,659,731,805,864,903,972,1055,1120,1163,1247,1335,1355,1451,1497,1571,1628,1684,1766,1848,1880,1934,2041,
18,65,184,216,282,353,442,507,556,635,660,732,806,865,904,973,1056,1121,1164,1248,1336,1356,1452,1498,1572,1629,1685,1767,1849,1881,1935,2042,
19,66,185,217,283,354,443,508,557,636,661,733,807,866,905,974,1057,1122,1165,1249,1337,1357,1453,1499,1573,1630,1686,1768,1850,1882,1936,2043,
20,67,186,218,284,355,444,509,558,637,662,734,808,867,906,975,1058,1123,1166,1250,1338,1358,1454,1500,1574,1631,1687,1769,1851,1883,1937,2044,
21,68,187,219,285,356,445,510,559,638,663,735,809,868,907,976,1059,1124,1167,1251,1339,1359,1455,1501,1575,1632,1688,1770,1852,1884,1938,2045,
22,69,188,220,286,357,446,511,560,639,664,736,810,869,908,977,1060,1125,1168,1252,1340,1360,1456,1502,1576,1633,1689,1771,1853,1885,1939,2046,
23,70,189,221,287,358,447,449,561,577,665,737,811,870,909,978,1061,1126,1169,1253,1341,1361,1457,1503,1577,1634,1690,1772,1854,1886,1940,2047,
24,71,190,222,288,359,385,450,562,578,666,738,812,871,910,979,1062,1127,1170,1254,1342,1362,1458,1504,1578,1635,1691,1773,1855,1887,1941,1985,
25,99,182,227,258,367,416,497,568,615,702,717,816,854,959,1017,1056,1130,1170,1231,1313,1386,1436,1525,1541,1652,1703,1769,1821,1898,1921,1984,
0,90,164,247,292,323,432,481,562,633,680,767,782,881,919,961,1082,1140,1176,1235,1296,1378,1451,1501,1590,1606,1717,1768,1834,1886,1963,1986,
31,80,180,193,261,362,447,461,525,593,699,732,826,847,929,972,1041,1135,1182,1242,1284,1351,1440,1499,1584,1660,1691,1770,1812,1871,1971,1987,
37,85,144,237,274,361,429,490,534,612,685,721,821,850,943,995,1038,1088,1202,1238,1316,1407,1447,1534,1596,1627,1676,1732,1802,1875,1936,1988,
57,79,184,232,289,324,407,493,515,598,673,728,768,833,923,1014,1054,1136,1194,1249,1329,1362,1443,1492,1569,1611,1680,1754,1807,1917,1925,1989,
49,91,154,192,271,333,397,476,573,586,642,724,822,841,952,1000,1081,1142,1169,1272,1281,1360,1454,1479,1562,1642,1722,1751,1801,1893,1932,1990,
24,127,171,233,312,377,402,484,512,618,655,735,828,869,955,988,1058,1099,1171,1228,1326,1395,1414,1533,1580,1603,1698,1767,1813,1892,1928,1991,
26,120,142,239,302,372,396,449,574,631,670,758,785,858,938,1020,1028,1091,1196,1277,1304,1353,1433,1500,1578,1640,1697,1731,1849,1918,1939,1992,
51,75,152,196,307,320,408,501,517,583,652,714,777,865,946,970,1045,1129,1155,1265,1294,1403,1419,1484,1550,1625,1723,1771,1842,1864,1962,1993,
10,73,166,251,301,373,444,508,537,628,693,763,815,861,911,985,1079,1131,1215,1234,1299,1394,1470,1515,1571,1629,1669,1741,1797,1908,1981,1994,
7,108,146,226,313,379,437,504,529,606,683,751,817,872,900,967,1026,1093,1168,1247,1293,1361,1439,1476,1558,1608,1713,1758,1795,1903,1967,1995,
23,66,175,228,286,336,392,452,567,596,688,720,779,895,907,1008,1040,1115,1195,1262,1305,1345,1452,1513,1549,1647,1708,1729,1830,1856,1955,1996,
50,116,178,253,279,328,390,475,569,601,682,733,801,851,903,998,1083,1112,1172,1244,1341,1376,1467,1498,1579,1646,1664,1739,1851,1904,1924,1997,
27,107,161,212,297,366,425,494,531,595,694,748,798,837,914,1003,1049,1128,1205,1222,1334,1400,1449,1502,1563,1609,1709,1753,1838,1910,1937,1998,
60,74,169,209,295,368,446,480,553,607,667,730,814,888,937,997,1052,1092,1159,1275,1289,1374,1427,1481,1594,1618,1715,1733,1829,1867,1952,1999,
14,121,134,225,267,330,433,468,550,580,660,708,778,857,956,1009,1035,1132,1193,1217,1287,1359,1417,1520,1555,1662,1672,1762,1796,1859,1934,2000,
48,89,186,252,288,352,424,500,566,636,678,761,818,870,942,982,1043,1102,1203,1274,1322,1363,1422,1519,1592,1657,1727,1765,1843,1897,1975,2001,
58,113,130,229,275,349,391,450,530,591,676,766,788,885,930,975,1071,1119,1154,1223,1343,1405,1416,1482,1577,1600,1702,1748,1811,1899,1965,2002,
9,87,189,199,266,365,438,465,570,589,648,760,805,867,899,993,1060,1090,1197,1259,1330,1381,1428,1491,1581,1658,1704,1756,1835,1861,1970,2003,
52,72,137,216,296,329,406,510,540,624,669,709,776,845,912,991,1067,1100,1163,1252,1321,1380,1464,1535,1560,1601,1666,1784,1809,1883,1964,2004,
18,76,160,250,280,369,430,488,557,582,656,745,786,835,927,963,1063,1114,1166,1270,1288,1406,1457,1530,1599,1621,1688,1773,1794,1880,1976,2005,
21,118,179,197,311,339,404,478,528,632,647,738,800,840,909,984,1074,1094,1212,1268,1335,1352,1412,1472,1598,1613,1685,1780,1798,1896,1949,2006,
4,94,165,211,272,356,389,483,538,623,677,756,780,834,950,971,1034,1123,1157,1240,1303,1396,1410,1531,1561,1651,1701,1776,1840,1860,1942,2007,
12,93,153,254,309,327,393,477,552,590,661,754,809,846,940,962,1053,1126,1185,1261,1327,1391,1445,1474,1570,1653,1665,1787,1816,1900,1960,2008,
40,119,185,220,294,337,435,489,532,637,692,726,812,882,945,992,1039,1109,1174,1248,1301,1344,1466,1494,1551,1615,1705,1747,1815,1870,1958,2009,
29,65,135,223,298,351,411,462,561,605,653,747,795,875,939,976,1027,1117,1181,1239,1286,1392,1453,1486,1546,1637,1675,1766,1841,1887,1930,2010,
36,109,150,206,277,331,410,455,564,629,690,734,803,893,951,1007,1059,1145,1177,1269,1290,1398,1444,1524,1536,1634,1692,1752,1850,1858,1951,2011,
32,104,132,214,316,360,436,473,547,603,675,725,831,891,924,968,1072,1134,1188,1253,1332,1355,1411,1526,1547,1650,1726,1740,1831,1868,1938,2012,
43,64,173,242,315,363,445,471,555,588,679,755,820,863,917,1005,1087,1141,1211,1221,1308,1347,1458,1488,1553,1614,1673,1772,1826,1882,1929,2013,
3,105,163,231,278,346,426,506,520,592,658,739,827,884,935,990,1069,1137,1167,1245,1307,1385,1426,1510,1573,1654,1687,1785,1792,1862,1959,2014,
22,111,168,238,287,354,421,464,572,634,697,707,823,871,933,994,1047,1148,1153,1219,1333,1387,1450,1507,1565,1624,1667,1737,1827,1891,1943,2015,
8,68,162,234,268,382,384,451,516,610,696,731,771,862,905,973,1037,1108,1204,1267,1342,1349,1424,1523,1540,1641,1696,1782,1833,1894,1974,2016,
59,123,174,245,263,371,422,505,575,609,659,705,794,892,926,1012,1042,1127,1173,1271,1323,1371,1409,1487,1542,1612,1699,1760,1853,1877,1935,2017,
28,98,147,205,256,378,428,472,523,635,668,753,813,876,913,1011,1036,1113,1186,1250,1318,1368,1413,1527,1567,1622,1682,1750,1845,1885,1972,2018,
41,100,140,224,264,374,385,456,546,581,649,757,799,844,904,974,1048,1101,1201,1226,1280,1384,1455,1497,1589,1636,1690,1755,1820,1913,1957,2019,
56,125,158,210,270,322,440,487,565,625,644,736,787,868,934,983,1084,1133,1183,1225,1319,1348,1431,1514,1586,1616,1718,1749,1822,1902,1961,2020,
38,84,156,198,290,345,415,511,551,620,640,712,819,842,918,964,1077,1146,1161,1251,1325,1388,1430,1485,1539,1645,1707,1761,1847,1909,1940,2021,
16,81,191,230,282,364,417,485,539,576,645,711,769,890,949,1022,1032,1098,1214,1260,1282,1358,1456,1495,1566,1648,1714,1734,1806,1905,1979,2022,
6,97,149,243,257,350,442,470,571,621,651,737,784,894,910,960,1030,1143,1156,1241,1337,1375,1465,1509,1543,1631,1710,1790,1803,1916,1978,2023,
11,124,136,195,259,338,401,474,521,627,671,746,829,873,947,1023,1065,1121,1213,1236,1312,1346,1446,1489,1576,1639,1721,1745,1819,1876,1941,2024,
5,101,190,240,284,370,398,453,536,584,663,727,807,849,932,966,1086,1111,1162,1216,1314,1356,1441,1518,1593,1604,1681,1743,1846,1895,1950,2025,
17,71,157,218,306,383,414,492,518,639,701,722,797,848,936,986,1073,1116,1198,1237,1339,1370,1408,1521,1564,1656,1700,1778,1823,1881,1931,2026,
53,88,141,208,303,335,441,491,559,614,703,704,802,874,915,978,1064,1110,1191,1243,1298,1350,1442,1504,1574,1663,1686,1736,1793,1869,1926,2027,
46,122,172,213,319,380,418,454,549,616,665,723,796,883,954,1016,1031,1122,1209,1263,1295,1379,1448,1512,1588,1659,1674,1786,1810,1901,1920,2028,
1,69,133,207,283,358,388,463,554,578,687,729,808,864,953,1018,1078,1095,1207,1255,1311,1382,1468,1477,1568,1607,1706,1777,1844,1914,1927,2029,
62,83,170,219,260,348,405,507,548,600,684,749,781,859,916,980,1046,1151,1179,1230,1338,1365,1460,1529,1597,1630,1719,1744,1854,1866,1933,2030,
34,126,155,255,293,353,439,502,560,597,700,741,774,832,925,1002,1070,1106,1200,1232,1315,1373,1435,1473,1537,1649,1671,1791,1805,1911,1953,2031,
55,92,159,248,310,347,386,448,533,613,664,716,792,860,906,999,1044,1104,1187,1257,1285,1401,1437,1532,1583,1635,1716,1759,1848,1889,1945,2032,
42,95,138,203,281,359,400,503,526,577,641,718,790,866,901,1015,1029,1139,1178,1279,1302,1390,1462,1480,1591,1623,1694,1783,1814,1879,1983,2033,
33,78,177,201,291,332,443,509,544,617,674,743,825,886,896,979,1033,1097,1208,1276,1336,1397,1421,1503,1556,1655,1684,1757,1817,1884,1922,2034,
63,86,176,236,305,325,409,466,542,587,691,765,783,878,902,1019,1075,1147,1192,1229,1283,1393,1418,1522,1545,1605,1689,1742,1800,1878,1947,2035,
47,114,139,194,285,343,412,458,514,604,662,762,770,853,908,989,1051,1138,1160,1256,1297,1404,1434,1508,1552,1620,1683,1746,1808,1890,1969,2036,
15,103,148,244,314,341,395,496,535,638,672,715,824,855,928,1006,1050,1105,1184,1233,1340,1364,1461,1496,1548,1602,1695,1788,1836,1863,1966,2037,
39,110,129,235,317,376,403,498,522,585,686,742,791,880,920,977,1076,1089,1158,1266,1306,1383,1438,1528,1559,1643,1668,1764,1825,1919,1982,2038,
13,106,187,202,300,334,431,460,513,599,666,719,775,839,958,987,1085,1120,1206,1220,1309,1369,1471,1478,1582,1633,1724,1763,1832,1874,1946,2039,
61,117,128,249,308,321,420,482,543,579,695,752,806,836,897,1001,1066,1144,1210,1254,1292,1357,1425,1493,1538,1638,1679,1789,1828,1872,1923,2040,
2,77,188,217,273,375,427,479,527,608,698,706,830,852,922,981,1061,1118,1189,1264,1300,1389,1459,1475,1587,1632,1677,1735,1839,1907,1956,2041,
44,96,131,241,262,342,423,495,558,611,681,740,804,879,944,1010,1024,1103,1165,1278,1328,1402,1469,1516,1575,1644,1712,1779,1799,1865,1973,2042,
20,82,151,215,269,326,434,459,519,594,689,750,789,856,941,1013,1062,1107,1164,1258,1317,1354,1420,1506,1544,1617,1670,1774,1818,1915,1944,2043,
19,70,143,200,265,357,394,499,556,602,654,764,793,889,957,996,1068,1149,1190,1224,1324,1399,1463,1511,1557,1610,1720,1728,1804,1906,1954,2044,
45,102,181,204,276,381,413,469,541,630,643,744,772,843,921,1004,1025,1125,1199,1227,1320,1377,1429,1505,1572,1628,1711,1775,1855,1873,1968,2045,
54,115,183,246,299,355,399,486,545,619,650,710,811,877,898,969,1080,1124,1180,1273,1331,1367,1432,1517,1554,1626,1678,1781,1824,1857,1948,2046,
35,67,145,222,318,340,387,457,524,626,646,713,810,887,931,1021,1055,1150,1175,1218,1291,1372,1415,1490,1595,1661,1725,1738,1837,1888,1977,2047,
30,112,167,221,304,344,419,467,563,622,657,759,773,838,948,965,1057,1096,1152,1246,1310,1366,1423,1483,1585,1619,1693,1730,1852,1912,1980,1985,
26,100,183,228,259,368,417,498,569,616,703,718,817,855,897,1018,1057,1131,1171,1232,1314,1387,1437,1526,1542,1653,1704,1770,1822,1899,1922,1984,
31,113,168,222,305,345,420,468,564,623,658,760,774,839,949,966,1058,1097,1152,1247,1311,1367,1424,1484,1586,1620,1694,1731,1853,1913,1981,1986,
0,91,165,248,293,324,433,482,563,634,681,705,783,882,920,962,1083,1141,1177,1236,1297,1379,1452,1502,1591,1607,1718,1769,1835,1887,1964,1987,
32,81,181,194,262,363,385,462,526,594,700,733,827,848,930,973,1042,1136,1183,1243,1285,1352,1441,1500,1585,1661,1692,1771,1813,1872,1972,1988,
38,86,145,238,275,362,430,491,535,613,686,722,822,851,944,996,1039,1088,1203,1239,1317,1345,1448,1535,1597,1628,1677,1733,1803,1876,1937,1989,
58,80,185,233,290,325,408,494,516,599,674,729,768,834,924,1015,1055,1137,1195,1250,1330,1363,1444,1493,1570,1612,1681,1755,1808,1918,1926,1990,
50,92,155,192,272,334,398,477,574,587,643,725,823,842,953,1001,1082,1143,1170,1273,1282,1361,1455,1480,1563,1643,1723,1752,1802,1894,1933,1991,
25,65,172,234,313,378,403,485,512,619,656,736,829,870,956,989,1059,1100,1172,1229,1327,1396,1415,1534,1581,1604,1699,1768,1814,1893,1929,1992,
27,121,143,240,303,373,397,450,575,632,671,759,786,859,939,1021,1029,1092,1197,1278,1305,1354,1434,1501,1579,1641,1698,1732,1850,1919,1940,1993,
52,76,153,197,308,320,409,502,518,584,653,715,778,866,947,971,1046,1130,1156,1266,1295,1404,1420,1485,1551,1626,1724,1772,1843,1865,1963,1994,
11,74,167,252,302,374,445,509,538,629,694,764,816,862,912,986,1080,1132,1153,1235,1300,1395,1471,1516,1572,1630,1670,1742,1798,1909,1982,1995,
8,109,147,227,314,380,438,505,530,607,684,752,818,873,901,968,1027,1094,1169,1248,1294,1362,1440,1477,1559,1609,1714,1759,1796,1904,1968,1996,
24,67,176,229,287,337,393,453,568,597,689,721,780,833,908,1009,1041,1116,1196,1263,1306,1346,1453,1514,1550,1648,1709,1730,1831,1856,1956,1997,
51,117,179,254,280,329,391,476,570,602,683,734,802,852,904,999,1084,1113,1173,1245,1342,1377,1468,1499,1580,1647,1664,1740,1852,1905,1925,1998,
28,108,162,213,298,367,426,495,532,596,695,749,799,838,915,1004,1050,1129,1206,1223,1335,1401,1450,1503,1564,1610,1710,1754,1839,1911,1938,1999,
61,75,170,210,296,369,447,481,554,608,668,731,815,889,938,998,1053,1093,1160,1276,1290,1375,1428,1482,1595,1619,1716,1734,1830,1868,1953,2000,
15,122,135,226,268,331,434,469,551,581,661,709,779,858,957,1010,1036,1133,1194,1218,1288,1360,1418,1521,1556,1663,1673,1763,1797,1860,1935,2001,
49,90,187,253,289,353,425,501,567,637,679,762,819,871,943,983,1044,1103,1204,1275,1323,1364,1423,1520,1593,1658,1665,1766,1844,1898,1976,2002,
59,114,131,230,276,350,392,451,531,592,677,767,789,886,931,976,1072,1120,1155,1224,1281,1406,1417,1483,1578,1600,1703,1749,1812,1900,1966,2003,
10,88,190,200,267,366,439,466,571,590,649,761,806,868,900,994,1061,1091,1198,1260,1331,1382,1429,1492,1582,1659,1705,1757,1836,1862,1971,2004,
53,73,138,217,297,330,407,511,541,625,670,710,777,846,913,992,1068,1101,1164,1253,1322,1381,1465,1473,1561,1602,1667,1785,1810,1884,1965,2005,
19,77,161,251,281,370,431,489,558,583,657,746,787,836,928,964,1064,1115,1167,1271,1289,1407,1458,1531,1537,1622,1689,1774,1795,1881,1977,2006,
22,119,180,198,312,340,405,479,529,633,648,739,801,841,910,985,1075,1095,1213,1269,1336,1353,1413,1472,1599,1614,1686,1781,1799,1897,1950,2007,
5,95,166,212,273,357,390,484,539,624,678,757,781,835,951,972,1035,1124,1158,1241,1304,1397,1411,1532,1562,1652,1702,1777,1841,1861,1943,2008,
13,94,154,255,310,328,394,478,553,591,662,755,810,847,941,963,1054,1127,1186,1262,1328,1392,1446,1475,1571,1654,1666,1788,1817,1901,1961,2009,
41,120,186,221,295,338,436,490,533,638,693,727,813,883,946,993,1040,1110,1175,1249,1302,1344,1467,1495,1552,1616,1706,1748,1816,1871,1959,2010,
30,66,136,224,299,352,412,463,562,606,654,748,796,876,940,977,1028,1118,1182,1240,1287,1393,1454,1487,1547,1638,1676,1767,1842,1888,1931,2011,
37,110,151,207,278,332,411,456,565,630,691,735,804,894,952,1008,1060,1146,1178,1270,1291,1399,1445,1525,1536,1635,1693,1753,1851,1859,1952,2012,
33,105,133,215,317,361,437,474,548,604,676,726,769,892,925,969,1073,1135,1189,1254,1333,1356,1412,1527,1548,1651,1727,1741,1832,1869,1939,2013,
44,64,174,243,316,364,446,472,556,589,680,756,821,864,918,1006,1025,1142,1212,1222,1309,1348,1459,1489,1554,1615,1674,1773,1827,1883,1930,2014,
4,106,164,232,279,347,427,507,521,593,659,740,828,885,936,991,1070,1138,1168,1246,1308,1386,1427,1511,1574,1655,1688,1786,1792,1863,1960,2015,
23,112,169,239,288,355,422,465,573,635,698,708,824,872,934,995,1048,1149,1154,1220,1334,1388,1451,1508,1566,1625,1668,1738,1828,1892,1944,2016,
9,69,163,235,269,383,384,452,517,611,697,732,772,863,906,974,1038,1109,1205,1268,1343,1350,1425,1524,1541,1642,1697,1783,1834,1895,1975,2017,
60,124,175,246,264,372,423,506,513,610,660,706,795,893,927,1013,1043,1128,1174,1272,1324,1372,1410,1488,1543,1613,1700,1761,1854,1878,1936,2018,
29,99,148,206,256,379,429,473,524,636,669,754,814,877,914,1012,1037,1114,1187,1251,1319,1369,1414,1528,1568,1623,1683,1751,1846,1886,1973,2019,
42,101,141,225,265,375,386,457,547,582,650,758,800,845,905,975,1049,1102,1202,1227,1280,1385,1456,1498,1590,1637,1691,1756,1821,1914,1958,2020,
57,126,159,211,271,323,441,488,566,626,645,737,788,869,935,984,1085,1134,1184,1226,1320,1349,1432,1515,1587,1617,1719,1750,1823,1903,1962,2021,
39,85,157,199,291,346,416,449,552,621,640,713,820,843,919,965,1078,1147,1162,1252,1326,1389,1431,1486,1540,1646,1708,1762,1848,1910,1941,2022,
17,82,129,231,283,365,418,486,540,576,646,712,770,891,950,1023,1033,1099,1215,1261,1283,1359,1457,1496,1567,1649,1715,1735,1807,1906,1980,2023,
7,98,150,244,258,351,443,471,572,622,652,738,785,895,911,960,1031,1144,1157,1242,1338,1376,1466,1510,1544,1632,1711,1791,1804,1917,1979,2024,
12,125,137,196,260,339,402,475,522,628,672,747,830,874,948,961,1066,1122,1214,1237,1313,1347,1447,1490,1577,1640,1722,1746,1820,1877,1942,2025,
6,102,191,241,285,371,399,454,537,585,664,728,808,850,933,967,1087,1112,1163,1216,1315,1357,1442,1519,1594,1605,1682,1744,1847,1896,1951,2026,
18,72,158,219,307,321,415,493,519,577,702,723,798,849,937,987,1074,1117,1199,1238,1340,1371,1408,1522,1565,1657,1701,1779,1824,1882,1932,2027,
54,89,142,209,304,336,442,492,560,615,641,704,803,875,916,979,1065,1111,1192,1244,1299,1351,1443,1505,1575,1601,1687,1737,1794,1870,1927,2028,
47,123,173,214,257,381,419,455,550,617,666,724,797,884,955,1017,1032,1123,1210,1264,1296,1380,1449,1513,1589,1660,1675,1787,1811,1902,1920,2029,
2,70,134,208,284,359,389,464,555,579,688,730,809,865,954,1019,1079,1096,1208,1256,1312,1383,1469,1478,1569,1608,1707,1778,1845,1915,1928,2030,
63,84,171,220,261,349,406,508,549,601,685,750,782,860,917,981,1047,1089,1180,1231,1339,1366,1461,1530,1598,1631,1720,1745,1855,1867,1934,2031,
35,127,156,193,294,354,440,503,561,598,701,742,775,832,926,1003,1071,1107,1201,1233,1316,1374,1436,1474,1538,1650,1672,1729,1806,1912,1954,2032,
56,93,160,249,311,348,387,448,534,614,665,717,793,861,907,1000,1045,1105,1188,1258,1286,1402,1438,1533,1584,1636,1717,1760,1849,1890,1946,2033,
43,96,139,204,282,360,401,504,527,578,642,719,791,867,902,1016,1030,1140,1179,1217,1303,1391,1463,1481,1592,1624,1695,1784,1815,1880,1921,2034,
34,79,178,202,292,333,444,510,545,618,675,744,826,887,896,980,1034,1098,1209,1277,1337,1398,1422,1504,1557,1656,1685,1758,1818,1885,1923,2035,
1,87,177,237,306,326,410,467,543,588,692,766,784,879,903,1020,1076,1148,1193,1230,1284,1394,1419,1523,1546,1606,1690,1743,1801,1879,1948,2036,
48,115,140,195,286,344,413,459,515,605,663,763,771,854,909,990,1052,1139,1161,1257,1298,1405,1435,1509,1553,1621,1684,1747,1809,1891,1970,2037,
16,104,149,245,315,342,396,497,536,639,673,716,825,856,929,1007,1051,1106,1185,1234,1341,1365,1462,1497,1549,1603,1696,1789,1837,1864,1967,2038,
40,111,130,236,318,377,404,499,523,586,687,743,792,881,921,978,1077,1090,1159,1267,1307,1384,1439,1529,1560,1644,1669,1765,1826,1857,1983,2039,
14,107,188,203,301,335,432,461,514,600,667,720,776,840,959,988,1086,1121,1207,1221,1310,1370,1409,1479,1583,1634,1725,1764,1833,1875,1947,2040,
62,118,128,250,309,322,421,483,544,580,696,753,807,837,898,1002,1067,1145,1211,1255,1293,1358,1426,1494,1539,1639,1680,1790,1829,1873,1924,2041,
3,78,189,218,274,376,428,480,528,609,699,707,831,853,923,982,1062,1119,1190,1265,1301,1390,1460,1476,1588,1633,1678,1736,1840,1908,1957,2042,
45,97,132,242,263,343,424,496,559,612,682,741,805,880,945,1011,1024,1104,1166,1279,1329,1403,1470,1517,1576,1645,1713,1780,1800,1866,1974,2043,
21,83,152,216,270,327,435,460,520,595,690,751,790,857,942,1014,1063,1108,1165,1259,1318,1355,1421,1507,1545,1618,1671,1775,1819,1916,1945,2044,
20,71,144,201,266,358,395,500,557,603,655,765,794,890,958,997,1069,1150,1191,1225,1325,1400,1464,1512,1558,1611,1721,1728,1805,1907,1955,2045,
46,103,182,205,277,382,414,470,542,631,644,745,773,844,922,1005,1026,1126,1200,1228,1321,1378,1430,1506,1573,1629,1712,1776,1793,1874,1969,2046,
55,116,184,247,300,356,400,487,546,620,651,711,812,878,899,970,1081,1125,1181,1274,1332,1368,1433,1518,1555,1627,1679,1782,1825,1858,1949,2047,
36,68,146,223,319,341,388,458,525,627,647,714,811,888,932,1022,1056,1151,1176,1219,1292,1373,1416,1491,1596,1662,1726,1739,1838,1889,1978,1985,
27,101,184,229,260,369,418,499,570,617,641,719,818,856,898,1019,1058,1132,1172,1233,1315,1388,1438,1527,1543,1654,1705,1771,1823,1900,1923,1984,
37,69,147,224,257,342,389,459,526,628,648,715,812,889,933,1023,1057,1089,1177,1220,1293,1374,1417,1492,1597,1663,1727,1740,1839,1890,1979,1986,
32,114,169,223,306,346,421,469,565,624,659,761,775,840,950,967,1059,1098,1152,1248,1312,1368,1425,1485,1587,1621,1695,1732,1854,1914,1982,1987,
0,92,166,249,294,325,434,483,564,635,682,706,784,883,921,963,1084,1142,1178,1237,1298,1380,1453,1503,1592,1608,1719,1770,1836,1888,1965,1988,
33,82,182,195,263,364,386,463,527,595,701,734,828,849,931,974,1043,1137,1184,1244,1286,1353,1442,1501,1586,1662,1693,1772,1814,1873,1973,1989,
39,87,146,239,276,363,431,492,536,614,687,723,823,852,945,997,1040,1088,1204,1240,1318,1346,1449,1473,1598,1629,1678,1734,1804,1877,1938,1990,
59,81,186,234,291,326,409,495,517,600,675,730,768,835,925,1016,1056,1138,1196,1251,1331,1364,1445,1494,1571,1613,1682,1756,1809,1919,1927,1991,
51,93,156,192,273,335,399,478,575,588,644,726,824,843,954,1002,1083,1144,1171,1274,1283,1362,1456,1481,1564,1644,1724,1753,1803,1895,1934,1992,
26,66,173,235,314,379,404,486,512,620,657,737,830,871,957,990,1060,1101,1173,1230,1328,1397,1416,1535,1582,1605,1700,1769,1815,1894,1930,1993,
28,122,144,241,304,374,398,451,513,633,672,760,787,860,940,1022,1030,1093,1198,1279,1306,1355,1435,1502,1580,1642,1699,1733,1851,1857,1941,1994,
53,77,154,198,309,320,410,503,519,585,654,716,779,867,948,972,1047,1131,1157,1267,1296,1405,1421,1486,1552,1627,1725,1773,1844,1866,1964,1995,
12,75,168,253,303,375,446,510,539,630,695,765,817,863,913,987,1081,1133,1154,1236,1301,1396,1409,1517,1573,1631,1671,1743,1799,1910,1983,1996,
9,110,148,228,315,381,439,506,531,608,685,753,819,874,902,969,1028,1095,1170,1249,1295,1363,1441,1478,1560,1610,1715,1760,1797,1905,1969,1997,
25,68,177,230,288,338,394,454,569,598,690,722,781,834,909,1010,1042,1117,1197,1264,1307,1347,1454,1515,1551,1649,1710,1731,1832,1856,1957,1998,
52,118,180,255,281,330,392,477,571,603,684,735,803,853,905,1000,1085,1114,1174,1246,1343,1378,1469,1500,1581,1648,1664,1741,1853,1906,1926,1999,
29,109,163,214,299,368,427,496,533,597,696,750,800,839,916,1005,1051,1130,1207,1224,1336,1402,1451,1504,1565,1611,1711,1755,1840,1912,1939,2000,
62,76,171,211,297,370,385,482,555,609,669,732,816,890,939,999,1054,1094,1161,1277,1291,1376,1429,1483,1596,1620,1717,1735,1831,1869,1954,2001,
16,123,136,227,269,332,435,470,552,582,662,710,780,859,958,1011,1037,1134,1195,1219,1289,1361,1419,1522,1557,1601,1674,1764,1798,1861,1936,2002,
50,91,188,254,290,354,426,502,568,638,680,763,820,872,944,984,1045,1104,1205,1276,1324,1365,1424,1521,1594,1659,1666,1767,1845,1899,1977,2003,
60,115,132,231,277,351,393,452,532,593,678,705,790,887,932,977,1073,1121,1156,1225,1282,1407,1418,1484,1579,1600,1704,1750,1813,1901,1967,2004,
11,89,191,201,268,367,440,467,572,591,650,762,807,869,901,995,1062,1092,1199,1261,1332,1383,1430,1493,1583,1660,1706,1758,1837,1863,1972,2005,
54,74,139,218,298,331,408,449,542,626,671,711,778,847,914,993,1069,1102,1165,1254,1323,1382,1466,1474,1562,1603,1668,1786,1811,1885,1966,2006,
20,78,162,252,282,371,432,490,559,584,658,747,788,837,929,965,1065,1116,1168,1272,1290,1345,1459,1532,1538,1623,1690,1775,1796,1882,1978,2007,
23,120,181,199,313,341,406,480,530,634,649,740,802,842,911,986,1076,1096,1214,1270,1337,1354,1414,1472,1537,1615,1687,1782,1800,1898,1951,2008,
6,96,167,213,274,358,391,485,540,625,679,758,782,836,952,973,1036,1125,1159,1242,1305,1398,1412,1533,1563,1653,1703,1778,1842,1862,1944,2009,
14,95,155,193,311,329,395,479,554,592,663,756,811,848,942,964,1055,1128,1187,1263,1329,1393,1447,1476,1572,1655,1667,1789,1818,1902,1962,2010,
42,121,187,222,296,339,437,491,534,639,694,728,814,884,947,994,1041,1111,1176,1250,1303,1344,1468,1496,1553,1617,1707,1749,1817,1872,1960,2011,
31,67,137,225,300,353,413,464,563,607,655,749,797,877,941,978,1029,1119,1183,1241,1288,1394,1455,1488,1548,1639,1677,1768,1843,1889,1932,2012,
38,111,152,208,279,333,412,457,566,631,692,736,805,895,953,1009,1061,1147,1179,1271,1292,1400,1446,1526,1536,1636,1694,1754,1852,1860,1953,2013,
34,106,134,216,318,362,438,475,549,605,677,727,770,893,926,970,1074,1136,1190,1255,1334,1357,1413,1528,1549,1652,1665,1742,1833,1870,1940,2014,
45,64,175,244,317,365,447,473,557,590,681,757,822,865,919,1007,1026,1143,1213,1223,1310,1349,1460,1490,1555,1616,1675,1774,1828,1884,1931,2015,
5,107,165,233,280,348,428,508,522,594,660,741,829,886,937,992,1071,1139,1169,1247,1309,1387,1428,1512,1575,1656,1689,1787,1792,1864,1961,2016,
24,113,170,240,289,356,423,466,574,636,699,709,825,873,935,996,1049,1150,1155,1221,1335,1389,1452,1509,1567,1626,1669,1739,1829,1893,1945,2017,
10,70,164,236,270,321,384,453,518,612,698,733,773,864,907,975,1039,1110,1206,1269,1281,1351,1426,1525,1542,1643,1698,1784,1835,1896,1976,2018,
61,125,176,247,265,373,424,507,514,611,661,707,796,894,928,1014,1044,1129,1175,1273,1325,1373,1411,1489,1544,1614,1701,1762,1855,1879,1937,2019,
30,100,149,207,256,380,430,474,525,637,670,755,815,878,915,1013,1038,1115,1188,1252,1320,1370,1415,1529,1569,1624,1684,1752,1847,1887,1974,2020,
43,102,142,226,266,376,387,458,548,583,651,759,801,846,906,976,1050,1103,1203,1228,1280,1386,1457,1499,1591,1638,1692,1757,1822,1915,1959,2021,
58,127,160,212,272,324,442,489,567,627,646,738,789,870,936,985,1086,1135,1185,1227,1321,1350,1433,1516,1588,1618,1720,1751,1824,1904,1963,2022,
40,86,158,200,292,347,417,450,553,622,640,714,821,844,920,966,1079,1148,1163,1253,1327,1390,1432,1487,1541,1647,1709,1763,1849,1911,1942,2023,
18,83,130,232,284,366,419,487,541,576,647,713,771,892,951,961,1034,1100,1153,1262,1284,1360,1458,1497,1568,1650,1716,1736,1808,1907,1981,2024,
8,99,151,245,259,352,444,472,573,623,653,739,786,833,912,960,1032,1145,1158,1243,1339,1377,1467,1511,1545,1633,1712,1729,1805,1918,1980,2025,
13,126,138,197,261,340,403,476,523,629,673,748,831,875,949,962,1067,1123,1215,1238,1314,1348,1448,1491,1578,1641,1723,1747,1821,1878,1943,2026,
7,103,129,242,286,372,400,455,538,586,665,729,809,851,934,968,1025,1113,1164,1216,1316,1358,1443,1520,1595,1606,1683,1745,1848,1897,1952,2027,
19,73,159,220,308,322,416,494,520,578,703,724,799,850,938,988,1075,1118,1200,1239,1341,1372,1408,1523,1566,1658,1702,1780,1825,1883,1933,2028,
55,90,143,210,305,337,443,493,561,616,642,704,804,876,917,980,1066,1112,1193,1245,1300,1352,1444,1506,1576,1602,1688,1738,1795,1871,1928,2029,
48,124,174,215,258,382,420,456,551,618,667,725,798,885,956,1018,1033,1124,1211,1265,1297,1381,1450,1514,1590,1661,1676,1788,1812,1903,1920,2030,
3,71,135,209,285,360,390,465,556,580,689,731,810,866,955,1020,1080,1097,1209,1257,1313,1384,1470,1479,1570,1609,1708,1779,1846,1916,1929,2031,
1,85,172,221,262,350,407,509,550,602,686,751,783,861,918,982,1048,1090,1181,1232,1340,1367,1462,1531,1599,1632,1721,1746,1793,1868,1935,2032,
36,65,157,194,295,355,441,504,562,599,702,743,776,832,927,1004,1072,1108,1202,1234,1317,1375,1437,1475,1539,1651,1673,1730,1807,1913,1955,2033,
57,94,161,250,312,349,388,448,535,615,666,718,794,862,908,1001,1046,1106,1189,1259,1287,1403,1439,1534,1585,1637,1718,1761,1850,1891,1947,2034,
44,97,140,205,283,361,402,505,528,579,643,720,792,868,903,1017,1031,1141,1180,1218,1304,1392,1464,1482,1593,1625,1696,1785,1816,1881,1922,2035,
35,80,179,203,293,334,445,511,546,619,676,745,827,888,896,981,1035,1099,1210,1278,1338,1399,1423,1505,1558,1657,1686,1759,1819,1886,1924,2036,
2,88,178,238,307,327,411,468,544,589,693,767,785,880,904,1021,1077,1149,1194,1231,1285,1395,1420,1524,1547,1607,1691,1744,1802,1880,1949,2037,
49,116,141,196,287,345,414,460,516,606,664,764,772,855,910,991,1053,1140,1162,1258,1299,1406,1436,1510,1554,1622,1685,1748,1810,1892,1971,2038,
17,105,150,246,316,343,397,498,537,577,674,717,826,857,930,1008,1052,1107,1186,1235,1342,1366,1463,1498,1550,1604,1697,1790,1838,1865,1968,2039,
41,112,131,237,319,378,405,500,524,587,688,744,793,882,922,979,1078,1091,1160,1268,1308,1385,1440,1530,1561,1645,1670,1766,1827,1858,1921,2040,
15,108,189,204,302,336,433,462,515,601,668,721,777,841,897,989,1087,1122,1208,1222,1311,1371,1410,1480,1584,1635,1726,1765,1834,1876,1948,2041,
63,119,128,251,310,323,422,484,545,581,697,754,808,838,899,1003,1068,1146,1212,1256,1294,1359,1427,1495,1540,1640,1681,1791,1830,1874,1925,2042,
4,79,190,219,275,377,429,481,529,610,700,708,769,854,924,983,1063,1120,1191,1266,1302,1391,1461,1477,1589,1634,1679,1737,1841,1909,1958,2043,
46,98,133,243,264,344,425,497,560,613,683,742,806,881,946,1012,1024,1105,1167,1217,1330,1404,1471,1518,1577,1646,1714,1781,1801,1867,1975,2044,
22,84,153,217,271,328,436,461,521,596,691,752,791,858,943,1015,1064,1109,1166,1260,1319,1356,1422,1508,1546,1619,1672,1776,1820,1917,1946,2045,
21,72,145,202,267,359,396,501,558,604,656,766,795,891,959,998,1070,1151,1192,1226,1326,1401,1465,1513,1559,1612,1722,1728,1806,1908,1956,2046,
47,104,183,206,278,383,415,471,543,632,645,746,774,845,923,1006,1027,1127,1201,1229,1322,1379,1431,1507,1574,1630,1713,1777,1794,1875,1970,2047,
56,117,185,248,301,357,401,488,547,621,652,712,813,879,900,971,1082,1126,1182,1275,1333,1369,1434,1519,1556,1628,1680,1783,1826,1859,1950,1985,
28,102,185,230,261,370,419,500,571,618,642,720,819,857,899,1020,1059,1133,1173,1234,1316,1389,1439,1528,1544,1655,1706,1772,1824,1901,1924,1984,
57,118,186,249,302,358,402,489,548,622,653,713,814,880,901,972,1083,1127,1183,1276,1334,1370,1435,1520,1557,1629,1681,1784,1827,1860,1951,1986,
38,70,148,225,258,343,390,460,527,629,649,716,813,890,934,961,1058,1090,1178,1221,1294,1375,1418,1493,1598,1601,1665,1741,1840,1891,1980,1987,
33,115,170,224,307,347,422,470,566,625,660,762,776,841,951,968,1060,1099,1152,1249,1313,1369,1426,1486,1588,1622,1696,1733,1855,1915,1983,1988,
0,93,167,250,295,326,435,484,565,636,683,707,785,884,922,964,1085,1143,1179,1238,1299,1381,1454,1504,1593,1609,1720,1771,1837,1889,1966,1989,
34,83,183,196,264,365,387,464,528,596,702,735,829,850,932,975,1044,1138,1185,1245,1287,1354,1443,1502,1587,1663,1694,1773,1815,1874,1974,1990,
40,88,147,240,277,364,432,493,537,615,688,724,824,853,946,998,1041,1088,1205,1241,1319,1347,1450,1474,1599,1630,1679,1735,1805,1878,1939,1991,
60,82,187,235,292,327,410,496,518,601,676,731,768,836,926,1017,1057,1139,1197,1252,1332,1365,1446,1495,1572,1614,1683,1757,1810,1857,1928,1992,
52,94,157,192,274,336,400,479,513,589,645,727,825,844,955,1003,1084,1145,1172,1275,1284,1363,1457,1482,1565,1645,1725,1754,1804,1896,1935,1993,
27,67,174,236,315,380,405,487,512,621,658,738,831,872,958,991,1061,1102,1174,1231,1329,1398,1417,1473,1583,1606,1701,1770,1816,1895,1931,1994,
29,123,145,242,305,375,399,452,514,634,673,761,788,861,941,1023,1031,1094,1199,1217,1307,1356,1436,1503,1581,1643,1700,1734,1852,1858,1942,1995,
54,78,155,199,310,320,411,504,520,586,655,717,780,868,949,973,1048,1132,1158,1268,1297,1406,1422,1487,1553,1628,1726,1774,1845,1867,1965,1996,
13,76,169,254,304,376,447,511,540,631,696,766,818,864,914,988,1082,1134,1155,1237,1302,1397,1410,1518,1574,1632,1672,1744,1800,1911,1921,1997,
10,111,149,229,316,382,440,507,532,609,686,754,820,875,903,970,1029,1096,1171,1250,1296,1364,1442,1479,1561,1611,1716,1761,1798,1906,1970,1998,
26,69,178,231,289,339,395,455,570,599,691,723,782,835,910,1011,1043,1118,1198,1265,1308,1348,1455,1516,1552,1650,1711,1732,1833,1856,1958,1999,
53,119,181,193,282,331,393,478,572,604,685,736,804,854,906,1001,1086,1115,1175,1247,1281,1379,1470,1501,1582,1649,1664,1742,1854,1907,1927,2000,
30,110,164,215,300,369,428,497,534,598,697,751,801,840,917,1006,1052,1131,1208,1225,1337,1403,1452,1505,1566,1612,1712,1756,1841,1913,1940,2001,
63,77,172,212,298,371,386,483,556,610,670,733,817,891,940,1000,1055,1095,1162,1278,1292,1377,1430,1484,1597,1621,1718,1736,1832,1870,1955,2002,
17,124,137,228,270,333,436,471,553,583,663,711,781,860,959,1012,1038,1135,1196,1220,1290,1362,1420,1523,1558,1602,1675,1765,1799,1862,1937,2003,
51,92,189,255,291,355,427,503,569,639,681,764,821,873,945,985,1046,1105,1206,1277,1325,1366,1425,1522,1595,1660,1667,1768,1846,1900,1978,2004,
61,116,133,232,278,352,394,453,533,594,679,706,791,888,933,978,1074,1122,1157,1226,1283,1345,1419,1485,1580,1600,1705,1751,1814,1902,1968,2005,
12,90,129,202,269,368,441,468,573,592,651,763,808,870,902,996,1063,1093,1200,1262,1333,1384,1431,1494,1584,1661,1707,1759,1838,1864,1973,2006,
55,75,140,219,299,332,409,450,543,627,672,712,779,848,915,994,1070,1103,1166,1255,1324,1383,1467,1475,1563,1604,1669,1787,1812,1886,1967,2007,
21,79,163,253,283,372,433,491,560,585,659,748,789,838,930,966,1066,1117,1169,1273,1291,1346,1460,1533,1539,1624,1691,1776,1797,1883,1979,2008,
24,121,182,200,314,342,407,481,531,635,650,741,803,843,912,987,1077,1097,1215,1271,1338,1355,1415,1472,1538,1616,1688,1783,1801,1899,1952,2009,
7,97,168,214,275,359,392,486,541,626,680,759,783,837,953,974,1037,1126,1160,1243,1306,1399,1413,1534,1564,1654,1704,1779,1843,1863,1945,2010,
15,96,156,194,312,330,396,480,555,593,664,757,812,849,943,965,1056,1129,1188,1264,1330,1394,1448,1477,1573,1656,1668,1790,1819,1903,1963,2011,
43,122,188,223,297,340,438,492,535,577,695,729,815,885,948,995,1042,1112,1177,1251,1304,1344,1469,1497,1554,1618,1708,1750,1818,1873,1961,2012,
32,68,138,226,301,354,414,465,564,608,656,750,798,878,942,979,1030,1120,1184,1242,1289,1395,1456,1489,1549,1640,1678,1769,1844,1890,1933,2013,
39,112,153,209,280,334,413,458,567,632,693,737,806,833,954,1010,1062,1148,1180,1272,1293,1401,1447,1527,1536,1637,1695,1755,1853,1861,1954,2014,
35,107,135,217,319,363,439,476,550,606,678,728,771,894,927,971,1075,1137,1191,1256,1335,1358,1414,1529,1550,1653,1666,1743,1834,1871,1941,2015,
46,64,176,245,318,366,385,474,558,591,682,758,823,866,920,1008,1027,1144,1214,1224,1311,1350,1461,1491,1556,1617,1676,1775,1829,1885,1932,2016,
6,108,166,234,281,349,429,509,523,595,661,742,830,887,938,993,1072,1140,1170,1248,1310,1388,1429,1513,1576,1657,1690,1788,1792,1865,1962,2017,
25,114,171,241,290,357,424,467,575,637,700,710,826,874,936,997,1050,1151,1156,1222,1336,1390,1453,1510,1568,1627,1670,1740,1830,1894,1946,2018,
11,71,165,237,271,322,384,454,519,613,699,734,774,865,908,976,1040,1111,1207,1270,1282,1352,1427,1526,1543,1644,1699,1785,1836,1897,1977,2019,
62,126,177,248,266,374,425,508,515,612,662,708,797,895,929,1015,1045,1130,1176,1274,1326,1374,1412,1490,1545,1615,1702,1763,1793,1880,1938,2020,
31,101,150,208,256,381,431,475,526,638,671,756,816,879,916,1014,1039,1116,1189,1253,1321,1371,1416,1530,1570,1625,1685,1753,1848,1888,1975,2021,
44,103,143,227,267,377,388,459,549,584,652,760,802,847,907,977,1051,1104,1204,1229,1280,1387,1458,1500,1592,1639,1693,1758,1823,1916,1960,2022,
59,65,161,213,273,325,443,490,568,628,647,739,790,871,937,986,1087,1136,1186,1228,1322,1351,1434,1517,1589,1619,1721,1752,1825,1905,1964,2023,
41,87,159,201,293,348,418,451,554,623,640,715,822,845,921,967,1080,1149,1164,1254,1328,1391,1433,1488,1542,1648,1710,1764,1850,1912,1943,2024,
19,84,131,233,285,367,420,488,542,576,648,714,772,893,952,962,1035,1101,1154,1263,1285,1361,1459,1498,1569,1651,1717,1737,1809,1908,1982,2025,
9,100,152,246,260,353,445,473,574,624,654,740,787,834,913,960,1033,1146,1159,1244,1340,1378,1468,1512,1546,1634,1713,1730,1806,1919,1981,2026,
14,127,139,198,262,341,404,477,524,630,674,749,769,876,950,963,1068,1124,1153,1239,1315,1349,1449,1492,1579,1642,1724,1748,1822,1879,1944,2027,
8,104,130,243,287,373,401,456,539,587,666,730,810,852,935,969,1026,1114,1165,1216,1317,1359,1444,1521,1596,1607,1684,1746,1849,1898,1953,2028,
20,74,160,221,309,323,417,495,521,579,641,725,800,851,939,989,1076,1119,1201,1240,1342,1373,1408,1524,1567,1659,1703,1781,1826,1884,1934,2029,
56,91,144,211,306,338,444,494,562,617,643,704,805,877,918,981,1067,1113,1194,1246,1301,1353,1445,1507,1577,1603,1689,1739,1796,1872,1929,2030,
49,125,175,216,259,383,421,457,552,619,668,726,799,886,957,1019,1034,1125,1212,1266,1298,1382,1451,1515,1591,1662,1677,1789,1813,1904,1920,2031,
4,72,136,210,286,361,391,466,557,581,690,732,811,867,956,1021,1081,1098,1210,1258,1314,1385,1471,1480,1571,1610,1709,1780,1847,1917,1930,2032,
2,86,173,222,263,351,408,510,551,603,687,752,784,862,919,983,1049,1091,1182,1233,1341,1368,1463,1532,1537,1633,1722,1747,1794,1869,1936,2033,
37,66,158,195,296,356,442,505,563,600,703,744,777,832,928,1005,1073,1109,1203,1235,1318,1376,1438,1476,1540,1652,1674,1731,1808,1914,1956,2034,
58,95,162,251,313,350,389,448,536,616,667,719,795,863,909,1002,1047,1107,1190,1260,1288,1404,1440,1535,1586,1638,1719,1762,1851,1892,1948,2035,
45,98,141,206,284,362,403,506,529,580,644,721,793,869,904,1018,1032,1142,1181,1219,1305,1393,1465,1483,1594,1626,1697,1786,1817,1882,1923,2036,
36,81,180,204,294,335,446,449,547,620,677,746,828,889,896,982,1036,1100,1211,1279,1339,1400,1424,1506,1559,1658,1687,1760,1820,1887,1925,2037,
3,89,179,239,308,328,412,469,545,590,694,705,786,881,905,1022,1078,“50,1195,1232,1286,1396,1421,1525,1548,1608,1692,1745,1803,1881,1950,2038,
50,117,142,197,288,346,415,461,517,607,665,765,773,856,911,992,1054,1141,1163,1259,1300,1407,1437,1511,1555,1623,1686,1749,1811,1893,1972,2039,
18,106,151,247,317,344,398,499,538,578,675,718,827,858,931,1009,1053,1108,1187,1236,1343,1367,1464,1499,1551,1605,1698,1791,1839,1866,1969,2040,
42,113,132,238,257,379,406,501,525,588,689,745,794,883,923,980,1079,1092,1161,1269,1309,1386,1441,1531,1562,1646,1671,1767,1828,1859,1922,2041,
16,109,190,205,303,337,434,463,516,602,669,722,778,842,898,990,1025,1123,1209,1223,1312,1372,1411,1481,1585,1636,1727,1766,1835,1877,1949,2042,
1,120,128,252,311,324,423,485,546,582,698,755,809,839,900,1004,1069,1147,1213,1257,1295,1360,1428,1496,1541,1641,1682,1729,1831,1875,1926,2043,
5,80,191,220,276,378,430,482,530,611,701,709,770,855,925,984,1064,1121,1192,1267,1303,1392,1462,1478,1590,1635,1680,1738,1842,1910,1959,2044,
47,99,134,244,265,345,426,498,561,614,684,743,807,882,947,1013,1024,1106,1168,1218,1331,1405,1409,1519,1578,1647,1715,1782,1802,1868,1976,2045,
23,85,154,218,272,329,437,462,522,597,692,753,792,859,944,1016,1065,1110,1167,1261,1320,1357,1423,1509,1547,1620,1673,1777,1821,1918,1947,2046,
22,73,146,203,268,360,397,502,559,605,657,767,796,892,897,999,1071,1089,1193,1227,1327,1402,1466,1514,1560,1613,1723,1728,1807,1909,1957,2047,
48,105,184,207,279,321,416,472,544,633,646,747,775,846,924,1007,1028,1128,1202,1230,1323,1380,1432,1508,1575,1631,1714,1778,1795,1876,1971,1985,
29,103,186,231,262,371,420,501,572,619,643,721,820,858,900,1021,1060,1134,1174,1235,1317,1390,1440,1529,1545,1656,1707,1773,1825,1902,1925,1984,
49,106,185,208,280,322,417,473,545,634,647,748,776,847,925,1008,1029,1129,1203,1231,1324,1381,1433,1509,1576,1632,1715,1779,1796,1877,1972,1986,
58,119,187,250,303,359,403,490,549,623,654,714,815,881,902,973,1084,1128,1184,1277,1335,1371,1436,1521,1558,1630,1682,1785,1828,1861,1952,1987,
39,71,149,226,259,344,391,461,528,630,650,717,814,891,935,962,1059,1091,1179,1222,1295,1376,1419,1494,1599,1602,1666,1742,1841,1892,1981,1988,
34,116,171,225,308,348,423,471,567,626,661,763,777,842,952,969,1061,1100,1152,1250,1314,1370,1427,1487,1589,1623,1697,1734,1793,1916,1921,1989,
0,94,168,251,296,327,436,485,566,637,684,708,786,885,923,965,1086,1144,1180,1239,1300,1382,1455,1505,1594,1610,1721,1772,1838,1890,1967,1990,
35,84,184,197,265,366,388,465,529,597,703,736,830,851,933,976,1045,1139,1186,1246,1288,1355,1444,1503,1588,1601,1695,1774,1816,1875,1975,1991,
41,89,148,241,278,365,433,494,538,616,689,725,825,854,947,999,1042,1088,1206,1242,1320,1348,1451,1475,1537,1631,1680,1736,1806,1879,1940,1992,
61,83,188,236,293,328,411,497,519,602,677,732,768,837,927,1018,1058,1140,1198,1253,1333,1366,1447,1496,1573,1615,1684,1758,1811,1858,1929,1993,
53,95,158,192,275,337,401,480,514,590,646,728,826,845,956,1004,1085,1146,1173,1276,1285,1364,1458,1483,1566,1646,1726,1755,1805,1897,1936,1994,
28,68,175,237,316,381,406,488,512,622,659,739,769,873,959,992,1062,1103,1175,1232,1330,1399,1418,1474,1584,1607,1702,1771,1817,1896,1932,1995,
30,124,146,243,306,376,400,453,515,635,674,762,789,862,942,961,1032,1095,1200,1218,1308,1357,1437,1504,1582,1644,1701,1735,1853,1859,1943,1996,
55,79,156,200,311,320,412,505,521,587,656,718,781,869,950,974,1049,1133,1159,1269,1298,1407,1423,1488,1554,1629,1727,1775,1846,1868,1966,1997,
14,77,170,255,305,377,385,449,541,632,697,767,819,865,915,989,1083,1135,1156,1238,1303,1398,1411,1519,1575,1633,1673,1745,1801,1912,1922,1998,
11,112,150,230,317,383,441,508,533,610,687,755,821,876,904,971,1030,1097,1172,1251,1297,1365,1443,1480,1562,1612,1717,1762,1799,1907,1971,1999,
27,70,179,232,290,340,396,456,571,600,692,724,783,836,911,1012,1044,1119,1199,1266,1309,1349,1456,1517,1553,1651,1712,1733,1834,1856,1959,2000,
54,120,182,194,283,332,394,479,573,605,686,737,805,855,907,1002,1087,1116,1176,1248,1282,1380,1471,1502,1583,1650,1664,1743,1855,1908,1928,2001,
31,111,165,216,301,370,429,498,535,599,698,752,802,841,918,1007,1053,1132,1209,1226,1338,1404,1453,1506,1567,1613,1713,1757,1842,1914,1941,2002,
1,78,173,213,299,372,387,484,557,611,671,734,818,892,941,1001,1056,1096,1163,1279,1293,1378,1431,1485,1598,1622,1719,1737,1833,1871,1956,2003,
18,125,138,229,271,334,437,472,554,584,64,712,782,861,897,1013,1039,1136,1197,1221,1291,1363,1421,1524,1559,1603,1676,1766,1800,1863,1938,2004,
52,93,190,193,292,356,428,504,570,577,682,765,822,874,946,986,1047,1106,1207,1278,1326,1367,1426,1523,1596,1661,1668,1769,1847,1901,1979,2005,
62,117,134,233,279,353,395,454,534,595,680,707,792,889,934,979,1075,1123,1158,1227,1284,1346,1420,1486,1581,1600,1706,1752,1815,1903,1969,2006,
13,91,130,203,270,369,442,469,574,593,652,764,809,871,903,997,1064,1094,1201,1263,1334,1385,1432,1495,1585,1662,1708,1760,1839,1865,1974,2007,
56,76,141,220,300,333,410,451,544,628,673,713,780,849,916,995,1071,1104,1167,1256,1325,1384,1468,1476,1564,1605,1670,1788,1813,1887,1968,2008,
22,80,164,254,284,373,434,492,561,586,660,749,790,839,931,967,1067,1118,1170,1274,1292,1347,1461,1534,1540,1625,1692,1777,1798,1884,1980,2009,
25,122,183,201,315,343,408,482,532,636,651,742,804,844,913,988,1078,1098,1153,1272,1339,1356,1416,1472,1539,1617,1689,1784,1802,1900,1953,2010,
8,98,169,215,276,360,393,487,542,627,681,760,784,838,954,975,1038,1127,1161,1244,1307,1400,1414,1535,1565,1655,1705,1780,1844,1864,1946,2011,
16,97,157,195,313,331,397,481,556,594,665,758,813,850,944,966,1057,1130,1189,1265,1331,1395,1449,1478,1574,1657,1669,1791,1820,1904,1964,2012,
44,123,189,224,298,341,439,493,536,578,696,730,816,886,949,996,1043,1113,1178,1252,1305,1344,1470,1498,1555,1619,1709,1751,1819,1874,1962,2013,
33,69,139,227,302,355,415,466,565,609,657,751,799,879,943,980,1031,1121,1185,1243,1290,1396,1457,1490,1550,1641,1679,1770,1845,1891,1934,2014,
40,113,154,210,281,335,414,459,568,633,694,738,807,834,955,1011,1063,1149,1181,1273,1294,1402,1448,1528,1536,1638,1696,1756,1854,1862,1955,2015,
36,108,136,218,257,364,440,477,551,607,679,729,772,895,928,972,1076,1138,1192,1257,1336,1359,1415,1530,1551,1654,1667,1744,1835,1872,1942,2016,
47,64,177,246,319,367,386,475,559,592,683,759,824,867,921,1009,1028,1145,1215,1225,1312,1351,1462,1492,1557,1618,1677,1776,1830,1886,1933,2017,
7,109,167,235,282,350,430,510,524,596,662,743,831,888,939,994,1073,1141,1171,1249,1311,1389,1430,1514,1577,1658,1691,1789,1792,1866,1963,2018,
26,115,172,242,291,358,425,468,513,638,701,711,827,875,937,998,1051,1089,1157,1223,1337,1391,1454,1511,1569,1628,1671,1741,1831,1895,1947,2019,
12,72,166,238,272,323,384,455,520,614,700,735,775,866,909,977,1041,1112,1208,1271,1283,1353,1428,1527,1544,1645,1700,1786,1837,1898,1978,2020,
63,127,178,249,267,375,426,509,516,613,663,709,798,833,930,1016,1046,1131,1177,1275,1327,1375,1413,1491,1546,1616,1703,1764,1794,1881,1939,2021,
32,102,151,209,256,382,432,476,527,639,672,757,817,880,917,1015,1040,1117,1190,1254,1322,1372,1417,1531,1571,1626,1686,1754,1849,1889,1976,2022,
45,104,144,228,268,378,389,460,550,585,653,761,803,848,908,978,1052,1105,1205,1230,1280,1388,1459,1501,1593,1640,1694,1759,1824,1917,1961,2023,
60,66,162,214,274,326,444,491,569,629,648,740,791,872,938,987,1025,1137,1187,1229,1323,1352,1435,1518,1590,1620,1722,1753,1826,1906,1965,2024,
42,88,160,202,294,349,419,452,555,624,640,716,823,846,922,968,1081,1150,1165,1255,1329,1392,1434,1489,1543,1649,1711,1765,1851,1913,1944,2025,
20,85,132,234,286,368,421,489,543,576,649,715,773,894,953,963,1036,1102,1155,1264,1286,1362,1460,1499,1570,1652,1718,1738,1810,1909,1983,2026,
10,101,153,247,261,354,446,474,575,625,655,741,788,835,914,960,1034,1147,1160,1245,1341,1379,1469,1513,1547,1635,1714,1731,1807,1857,1982,2027,
15,65,140,199,263,342,405,478,525,631,675,750,770,877,951,964,1069,1125,1154,1240,1316,1350,1450,1493,1580,1643,1725,1749,1823,1880,1945,2028,
9,105,131,244,288,374,402,457,540,588,667,731,811,853,936,970,1027,1115,1166,1216,1318,1360,1445,1522,1597,1608,1685,1747,1850,1899,1954,2029,
21,75,161,222,310,324,418,496,522,580,642,726,801,852,940,990,1077,1120,1202,1241,1343,1374,1408,1525,1568,1660,1704,1782,1827,1885,1935,2030,
57,92,145,212,307,339,445,495,563,618,644,704,806,878,919,982,1068,1114,1195,1247,1302,1354,1446,1508,1578,1604,1690,1740,1797,1873,1930,2031,
50,126,176,217,260,321,422,458,553,620,669,727,800,887,958,1020,1035,1126,1213,1267,1299,1383,1452,1516,1592,1663,1678,1790,1814,1905,1920,2032,
5,73,137,211,287,362,392,467,558,582,691,733,812,868,957,1022,1082,1099,1211,1259,1315,1386,1409,1481,1572,1611,1710,1781,1848,1918,1931,2033,
3,87,174,223,264,352,409,511,552,604,688,753,785,863,920,984,1050,1092,1183,1234,1342,1369,1464,1533,1538,1634,1723,1748,1795,1870,1937,2034,
38,67,159,196,297,357,443,506,564,601,641,745,778,832,929,1006,1074,1110,1204,1236,1319,1377,1439,1477,1541,1653,1675,1732,1809,1915,1957,2035,
59,96,163,252,314,351,390,448,537,617,668,720,796,864,910,1003,1048,1108,1191,1261,1289,1405,1441,1473,1587,1639,1720,1763,1852,1893,1949,2036,
46,99,142,207,285,363,404,507,530,581,645,722,794,870,905,1019,1033,1143,1182,1220,1306,1394,1466,1484,1595,1627,1698,1787,1818,1883,1924,2037,
37,82,181,205,295,336,447,450,548,621,678,747,829,890,896,983,1037,1101,1212,1217,1340,1401,1425,1507,1560,1659,1688,1761,1821,1888,1926,2038,
4,90,180,240,309,329,413,470,546,591,695,706,787,882,906,1023,1079,1151,1196,1233,1287,1397,1422,1526,1549,1609,1693,1746,1804,1882,1951,2039,
51,118,143,198,289,347,416,462,518,608,666,766,774,857,912,993,1055,1142,1164,1260,1301,1345,1438,1512,1556,1624,1687,1750,1812,1894,1973,2040,
19,107,152,248,318,345,399,500,539,579,676,719,828,859,932,1010,1054,1109,1188,1237,1281,1368,1465,1500,1552,1606,1699,1729,1840,1867,1970,2041,
43,114,133,239,258,380,407,502,526,589,690,746,795,884,924,981,1080,1093,1162,1270,1310,1387,1442,1532,1563,1647,1672,1768,1829,1860,1923,2042,
17,110,191,206,304,338,435,464,517,603,670,723,779,843,899,991,1026,1124,1210,1224,1313,1373,1412,1482,1586,1637,1665,1767,1836,1878,1950,2043,
2,121,128,253,312,325,424,486,547,583,699,756,810,840,901,1005,1070,1148,1214,1258,1296,1361,1429,1497,1542,1642,1683,1730,1832,1876,1927,2044,
6,81,129,221,277,379,431,483,531,612,702,710,771,856,926,985,1065,1122,1193,1268,1304,1393,1463,1479,1591,1636,1681,1739,1843,1911,1960,2045,
48,100,135,245,266,346,427,499,562,615,685,744,808,883,948,1014,1024,1107,1169,1219,1332,1406,1410,1520,1579,1648,1716,1783,1803,1869,1977,2046,
24,86,155,219,273,330,438,463,523,598,693,754,793,860,945,1017,1066,1111,1168,1262,1321,1358,1424,1510,1548,1621,1674,1778,1822,1919,1948,2047,
23,74,147,204,269,361,398,503,560,606,658,705,797,893,898,1000,1072,1090,1194,1228,1328,1403,1467,1515,1561,1614,1724,1728,1808,1910,1958,1985,
附录B:“根LDPC码”的行和/或列置换
       384×2048的LDPC矩阵,Hb
该LDPC奇偶校验矩阵为对“根LDPC码”执行行和/或列的置换而生成的结果,所述“根LDPC码”对应的LDPC奇偶校验矩阵在附录A中给出。换句话说,该奇偶校验矩阵是从附录A中的LDPC奇偶校验矩阵中生成的。该LDPC奇偶校验矩阵H,对应根据IEEE802.3an(10GBASE-T)标准实现的LDPC码;该矩阵也公布于“IEEE Draft P802.3an/D2.1”中。
Hb=
53,110,170,224,279,332,447,505,616,668,1496,1497,1498,1499,1500,1501,1502,1503,1505,1509,1514,1519,1525,1532,1536,1552,1575,1607,1648,1687,1718,1724,
51,139,223,241,307,356,408,476,515,600,617,689,762,797,854,927,990,1023,1059,1077,1138,1200,1292,1442,1488,1522,1535,1550,1585,1681,1994,1996,
50,92,138,222,240,306,355,407,475,599,688,761,853,989,1003,1022,1076,1137,1199,1291,1441,1521,1534,1549,1584,1707,1808,1837,1904,1948,2003,2007,
91,137,221,239,305,474,514,598,687,760,796,852,926,988,1021,1075,1136,1290,1440,1520,1533,1548,1647,1680,1801,1824,1833,1845,1850,1919,1940,1942,
49,90,220,238,304,354,406,473,513,597,667,686,759,795,851,887,925,987,1074,1135,1198,1289,1583,1646,1679,1747,1892,1901,1907,1944,1977,1978,
48,89,136,219,237,303,353,405,472,512,596,666,685,758,794,830,850,924,986,1020,1073,1134,1197,1275,1288,1383,1439,1547,1582,1645,1678,1725,
47,88,135,218,236,302,352,404,471,511,595,665,684,757,777,793,849,923,985,1019,1072,1133,1196,1274,1287,1382,1438,1546,1581,1644,1706,1726,
46,87,134,217,235,301,351,403,470,510,594,664,683,722,756,792,848,922,984,1018,1071,1132,1195,1273,1286,1381,1437,1545,1580,1677,1705,1727,
45,133,216,402,469,593,682,755,847,983,1017,1070,1131,1194,1272,1380,1436,1544,1643,1676,1788,1792,1859,1886,1891,1902,1924,1965,1997,2019,2037,2038,
44,86,132,215,234,300,350,391,401,468,509,592,663,681,754,791,846,921,982,1
016,1069,1130,1193,1271,1285,1379,1435,1543,1579,1642,1675,1728,
43,85,131,233,349,467,508,662,753,790,845,920,981,1015,1270,1378,1455,1542,1578,1641,1674,1704,1830,1895,1918,1971,1981,1982,1993,2009,2013,2014,
42,84,130,214,232,348,400,591,661,680,752,789,844,919,1014,1068,1129,1269,1434,1454,1541,1577,1640,1673,1764,1829,1843,1860,1867,1914,1946,1951,
41,83,129,213,231,299,347,399,466,507,590,660,679,751,788,843,918,980,1067,1128,1192,1268,1284,1377,1433,1453,1487,1540,1639,1672,1703,1729,
82,128,212,230,298,346,398,465,506,589,659,678,750,787,842,917,979,1013,1066,1127,1191,1267,1283,1376,1432,1452,1576,1638,1671,1702,1750,1810,
40,81,127,211,229,297,345,397,464,560,588,658,677,749,786,841,916,978,1012,1065,1126,1190,1266,1375,1431,1451,1486,1531,1539,1637,1778,1811,
39,80,126,210,228,296,344,396,559,657,785,840,915,977,1011,1064,1125,1189,1265,1374,1450,1483,1530,1701,1753,1809,1842,1910,1925,1937,1953,1961,
38,125,209,227,295,343,395,463,587,656,676,748,839,976,1010,1063,1124,1188,1264,1373,1430,1482,1529,1538,1636,1670,1700,1900,2006,2023,2034,2036,
37,79,124,208,226,294,342,394,462,558,586,655,675,747,784,838,914,975,1009,1062,1123,1187,1263,1372,1429,1449,1481,1528,1699,1786,1807,1812,
36,78,123,207,225,293,341,393,461,557,585,654,674,746,783,837,913,974,1008,1061,1122,1186,1262,1371,1428,1448,1480,1527,1537,1635,1698,1730,
35,77,122,278,340,460,556,584,745,782,836,912,973,1261,1370,1447,1479,1526,1634,1669,1697,1772,1849,1884,1885,1957,1964,1986,1989,2028,2041,2042,
34,76,277,292,339,459,555,583,673,781,911,972,1007,1121,1185,1260,1328,1427,1446,1478,1508,1633,1696,1770,1773,1787,1844,1852,1854,1857,1858,1876,
33,75,121,206,276,291,338,392,458,554,653,672,744,780,835,910,971,1006,1111,1120,1184,1259,1327,1369,1425,1426,1445,1477,1632,1668,1932,1934,
32,74,120,205,275,290,337,446,457,582,671,743,834,970,1119,1183,1258,1326,1368,1390,1424,1507,1631,1765,1793,1795,1882,1903,1941,1987,2032,2035,
31,73,119,204,274,289,336,445,456,553,581,652,742,779,833,909,969,1005,1109,1118,1182,1257,1325,1367,1389,1423,1444,1476,1630,1754,1802,1813,
30,72,118,203,273,288,335,444,455,552,580,651,670,741,778,832,908,968,1004,1117,1181,1324,1366,1388,1422,1443,1506,1667,1695,1760,1784,1814,
29,71,117,202,287,443,454,551,579,650,669,740,831,907,967,1107,1116,1180,1256,1323,1365,1387,1466,1504,1629,1759,1766,1800,1841,1862,1875,1877,
28,70,116,201,272,286,334,442,453,550,578,649,721,739,829,886,906,966,1058,1106,1115,1179,1255,1322,1364,1386,1421,1465,1558,1666,1694,1731,
27,69,115,200,285,441,452,549,648,720,738,828,885,905,965,1057,1105,1178,1321,1385,1420,1464,1557,1665,1769,1780,1828,1839,1848,1869,1933,1935,
26,68,114,199,271,333,440,451,548,577,647,719,737,827,884,904,964,1056,1104,1114,1177,1254,1320,1363,1384,1419,1463,1556,1628,1664,1693,1732,
25,67,113,270,450,547,576,646,883,903,1055,1103,1253,1319,1362,1418,1462,1555,1627,1758,1781,1803,1894,1898,1913,1922,1955,1960,1980,1985,1988,1990,
24,66,112,198,269,284,390,439,449,546,575,645,718,736,882,902,963,1054,1102,1176,1252,1318,1334,1361,1417,1461,1513,1663,1692,1771,1806,1815,
23,65,197,283,389,438,448,545,574,644,717,735,826,881,901,962,1053,1101,1175,1251,1317,1333,1360,1416,1460,1554,1626,1782,1790,1921,1952,1962,
22,64,111,268,388,504,544,573,643,734,825,880,900,961,1052,1250,1316,1359,1459,1662,1691,1742,1826,1831,1943,1958,1959,1973,1999,2008,2027,2029,
21,63,169,196,267,282,387,437,503,543,572,642,716,733,824,879,899,960,1051,1100,1174,1249,1315,1332,1358,1415,1458,1512,1574,1625,1690,1733,
20,62,168,195,266,281,386,436,502,542,571,641,715,732,823,878,898,959,1050,1099,1173,1248,1314,1331,1414,1511,1573,1606,1624,1661,1822,1878,
19,61,167,194,265,280,385,435,501,541,570,640,714,731,822,877,897,958,1049,1098,1172,1247,1313,1330,1357,1413,1510,1605,1623,1660,1689,1734,
18,60,166,264,384,434,500,540,639,821,896,957,1048,1171,1246,1329,1356,1412,1604,1622,1659,1743,1873,1888,1947,1950,1969,1976,1995,2002,2022,2030,
17,59,165,193,263,331,383,433,499,539,569,638,713,730,820,876,895,956,1047,1097,1163,1170,1245,1282,1312,1355,1572,1603,1621,1658,1688,1735,
16,58,164,192,262,330,382,432,498,538,568,637,712,729,875,894,955,1046,1096,1162,1244,1281,1311,1411,1518,1571,1620,1767,1881,1897,1909,1915,
15,57,163,191,261,329,381,431,497,537,567,636,711,728,819,874,893,954,1045,1095,1161,1243,1280,1310,1354,1410,1517,1570,1602,1619,1657,1736,
14,56,162,260,380,430,496,536,566,635,727,818,873,892,953,1044,1160,1242,1279,1353,1409,1569,1601,1618,1656,1717,1856,1912,1974,1984,1991,1992,
13,55,161,190,259,328,379,429,495,535,565,634,710,726,817,872,891,952,1043,1094,1159,1278,1309,1352,1408,1568,1600,1617,1716,1748,1755,1816,
12,54,160,189,258,327,378,428,494,534,564,633,709,725,816,871,890,951,1042,1093,1158,1241,1308,1351,1407,1516,1553,1567,1616,1655,1715,1737,
109,159,188,257,326,377,427,493,533,563,632,708,815,870,889,950,1041,1092,1157,1277,1307,1350,1406,1515,1566,1599,1615,1654,1749,1762,1889,1906,
11,108,158,187,256,325,376,426,492,532,562,631,707,724,814,869,888,949,1040,1091,1156,1217,1240,1276,1306,1349,1405,1565,1598,1614,1714,1738,
10,107,157,186,255,324,375,425,491,531,561,630,706,723,813,868,943,948,1039,1090,1155,1216,1224,1305,1348,1404,1564,1597,1653,1713,1756,1817,
9,106,156,185,254,323,374,424,490,530,615,705,776,812,867,947,1038,1154,1215,1223,1239,1304,1347,1403,1563,1596,1613,1791,1825,1832,1861,1879,
8,155,253,373,489,529,614,629,811,942,946,1037,1222,1238,1346,1402,1612,1652,1741,1746,1893,1896,1899,1923,1956,1968,2001,2020,2021,2033,2044,2045,
7,154,322,372,423,488,528,613,704,775,810,941,945,1036,1089,1153,1221,1237,1345,1401,1562,1595,1763,1796,1823,1887,1911,1938,1954,1979,2004,2005,
6,105,153,184,252,321,371,422,487,527,612,628,703,774,809,866,940,944,1035,1088,1152,1214,1220,1236,1303,1344,1400,1561,1594,1611,1651,1739,
5,104,152,183,251,320,370,421,486,526,611,627,702,773,808,865,939,1002,1034,1151,1213,1219,1235,1302,1343,1399,1560,1593,1610,1712,1777,1818,
4,103,182,250,319,369,420,485,525,610,626,701,807,938,1001,1087,1150,1218,1342,1398,1457,1592,1609,1834,1835,1864,1866,1868,1926,1939,1998,2000,
102,151,181,318,368,419,524,609,625,700,772,806,864,937,1000,1033,1086,1149,1169,1212,1234,1301,1341,1397,1559,1711,1872,1908,1916,1945,2024,2026,
3,150,180,249,317,367,418,484,608,699,771,863,936,1032,1085,1148,1168,1211,1233,1340,1396,1456,1650,1776,1836,1905,1917,1930,2025,2031,2046,2047,
2,101,149,179,316,366,417,523,698,770,805,862,935,999,1031,1084,1147,1210,1232,1300,1339,1475,1608,1649,1752,1785,1797,1840,1847,1890,1931,1936,
1,100,148,178,248,315,365,416,483,522,607,624,697,769,804,861,934,998,1030,1083,1146,1167,1209,1231,1299,1338,1395,1474,1494,1591,1710,1740,
0,99,147,177,247,314,364,415,482,521,606,623,696,803,860,933,997,1029,1082,1145,1166,1208,1230,1298,1394,1473,1493,1495,1709,1745,1789,1819,
98,146,176,246,313,363,414,481,520,605,622,695,768,802,859,932,996,1081,1144,1165,1207,1229,1297,1337,1472,1485,1590,1686,1723,1798,1804,1820,
97,145,175,312,362,413,480,519,604,621,694,767,801,858,931,995,1028,1080,1143,1164,1206,1228,1336,1393,1471,1589,1685,1838,1851,1870,1928,1929,
144,174,245,311,361,412,479,603,693,766,857,994,1027,1113,1142,1205,1227,1296,1470,1484,1722,1751,1757,1774,1794,1874,1920,1927,1983,2012,2015,2017,
96,143,173,244,310,360,411,478,518,692,765,800,993,1026,1112,1141,1204,1226,1295,1469,1492,1588,1684,1721,1744,1768,1846,1853,1871,1883,1966,1972,
95,142,172,243,309,359,410,477,517,602,620,691,764,856,930,992,1025,1079,1110,1140,1203,1225,1294,1335,1392,1468,1491,1683,1719,1799,1805,1821,
94,141,171,242,308,358,409,619,690,799,855,929,1078,1108,1139,1202,1293,1391,1467,1490,1524,1587,1682,1720,1775,1779,1827,1863,1880,2010,2016,2018,
52,93,140,357,516,601,618,763,798,928,991,1024,1060,1201,1489,1523,1551,1586,1708,1761,1783,1855,1865,1949,1963,1967,1970,1975,2011,2039,2040,2043,
53,109,130,245,299,342,442,458,535,580,641,763,796,859,894,944,1038,1074,1158,1171,1245,1287,1346,1416,1574,1582,1664,1740,1902,1960,1992,1994,
51,74,141,189,286,386,399,478,521,587,655,707,757,787,943,982,1015,1100,1190,1231,1360,1402,1466,1557,1621,1669,1718,1787,1851,1855,1978,1980,
50,66,155,244,404,480,531,609,666,701,751,871,933,973,1045,1065,1144,1174,1265,1322,1391,1606,1675,1705,1854,1860,1875,1930,1940,1995,2011,2019,
97,275,322,365,393,449,524,561,638,734,874,960,1003,1042,1069,1154,1248,1313,1353,1405,1483,1500,1561,1702,1811,1812,1833,1849,1900,1926,2014,2020,
49,112,210,256,318,381,417,485,528,601,627,694,741,791,861,897,979,1148,1195,1260,1350,1424,1442,1485,1504,1509,1529,1556,1578,1676,1690,1741,
48,101,135,215,259,283,351,498,602,674,785,836,910,951,1051,1152,1272,1282,1364,1517,1540,1563,1607,1759,1773,1779,1839,1948,1951,1982,2015,2021,
47,104,136,206,246,301,389,407,450,556,572,629,713,762,822,857,921,948,1025,1063,1141,1212,1242,1388,1448,1495,1532,1577,1614,1708,1786,1822,
46,95,176,276,302,353,479,538,650,739,828,883,891,964,1034,1121,1198,1233,1284,1431,1452,1481,1541,1651,1707,1813,1847,1937,1952,2018,2030,2039,
45,75,162,183,243,367,435,493,552,565,657,680,775,867,935,957,1104,1161,1214,1275,1342,1423,1527,1603,1629,1679,1724,1820,1848,1986,2003,2008,
44,56,121,219,328,363,415,507,573,708,723,795,838,923,990,1032,1075,1116,1178,1235,1311,1336,1432,1451,1462,1619,1739,1837,1857,1914,1920,1921,
43,70,125,221,290,384,427,501,532,658,696,764,885,938,1023,1073,1127,1187,1254,1318,1339,1387,1397,1446,1583,1634,1658,1758,1791,1796,1836,1880,
42,81,170,192,278,294,347,436,468,520,615,649,682,740,807,872,903,993,1004,1102,1155,1183,1262,1279,1288,1468,1534,1545,1581,1685,1775,1823,
41,106,124,174,270,332,348,408,481,509,588,619,699,761,810,835,912,997,1041,1086,1143,1188,1257,1286,1365,1460,1475,1547,1609,1653,1694,1742,
119,185,257,293,383,423,477,523,568,624,717,722,731,797,865,908,987,1055,1088,1177,1263,1316,1349,1409,1435,1624,1659,1810,1845,2013,2017,2031,
40,84,159,193,274,288,374,391,395,496,544,590,662,672,772,827,863,913,965,1009,1076,1146,1200,1253,1300,1361,1392,1437,1593,1616,1680,1743,
39,99,167,220,325,430,463,721,742,794,902,947,1035,1103,1207,1331,1371,1401,1512,1521,1567,1727,1769,1776,1777,1801,1866,1883,1891,1950,2026,2032,
38,62,131,182,248,337,397,549,600,632,673,733,869,926,961,1072,1118,1166,1192,1228,1289,1343,1410,1461,1484,1695,1730,1915,1961,1967,2010,2022,
37,72,129,262,409,495,554,563,617,804,846,972,1012,1095,1114,1168,1267,1317,1496,1546,1560,1580,1647,1655,1867,1874,1878,1949,1956,1957,1971,1973,
36,67,165,188,254,298,336,486,543,584,626,685,738,777,829,856,916,1000,1027,1082,1119,1216,1269,1374,1396,1490,1568,1601,1670,1763,1788,1824,
35,73,144,208,232,330,425,448,511,585,633,691,821,850,918,989,1047,1105,1239,1309,1332,1425,1436,1511,1590,1641,1681,1693,1819,1871,1919,1922,
34,61,147,222,310,371,392,453,562,663,676,766,808,854,942,975,1057,1097,1132,1211,1404,1455,1463,1474,1625,1678,1761,1804,1863,1870,1897,1907,
33,132,218,235,313,379,505,558,608,623,677,725,843,924,1052,1087,1217,1232,1277,1319,1363,1389,1652,1768,1770,1772,1815,1872,1909,2016,2038,2043,
32,166,239,343,424,452,559,571,651,703,773,877,934,953,1058,1101,1112,1122,1310,1358,1620,1756,1762,1802,1916,1944,1946,1954,1983,1993,1996,2001,
31,77,128,203,229,331,341,416,503,526,576,683,799,862,963,1046,1124,1206,1268,1426,1459,1544,1554,1731,1765,1832,1842,1853,1869,1917,2000,2005,
30,79,156,204,263,297,377,434,484,616,695,759,813,873,917,958,1014,1150,1179,1227,1278,1315,1354,1399,1438,1700,1799,1903,1911,1929,2037,2040,
29,102,140,184,247,355,438,491,519,575,664,704,752,884,1130,1167,1213,1293,1377,1421,1585,1643,1686,1725,1861,1892,1894,1918,1935,1972,2025,2033,
28,85,168,175,258,307,358,447,459,527,661,756,783,904,952,1084,1142,1181,1291,1330,1383,1559,1630,1703,1834,1841,1846,1881,1882,1888,1923,1925,
27,96,158,191,269,280,344,457,606,690,746,792,845,937,978,1007,1059,1151,1193,1256,1367,1384,1398,1591,1645,1733,1792,1905,1979,1999,2028,2034,
26,103,145,195,242,324,378,432,489,516,613,646,718,726,786,831,887,906,984,1030,1070,1123,1191,1270,1298,1369,1385,1478,1613,1687,1697,1744,
25,78,164,224,231,311,340,413,471,545,581,647,698,765,790,848,919,967,1013,1064,1138,1209,1219,1266,1327,1408,1456,1579,1622,1661,1715,1745,
24,92,194,329,368,421,474,522,579,719,776,780,915,969,1024,1068,1164,1175,1230,1375,1412,1467,1482,1617,1656,1805,1887,1895,1901,1933,1936,1943,
23,63,134,190,234,303,352,443,460,547,611,618,678,732,814,875,932,995,1031,1145,1176,1250,1444,1487,1507,1528,1535,1552,1566,1623,1684,1746,
22,98,150,172,251,380,441,490,560,592,631,675,760,798,870,899,976,1006,1090,1208,1251,1283,1338,1453,1476,1513,1571,1612,1689,1735,1886,1908,
21,65,142,180,260,316,370,419,456,557,595,636,693,748,809,876,900,988,1020,1077,1125,1199,1229,1324,1368,1406,1447,1575,1596,1633,1665,1747,
20,116,199,255,308,356,400,482,518,582,668,714,735,820,866,931,996,1048,1215,1382,1450,1520,1551,1570,1584,1638,1699,1781,1818,1968,2036,2041,
19,76,126,198,261,285,376,402,467,540,612,635,715,750,793,834,925,968,1026,1096,1140,1238,1290,1355,1395,1558,1564,1592,1626,1649,1691,1748,
18,94,120,178,250,295,349,444,492,541,578,692,770,782,840,941,983,1050,1071,1163,1220,1241,1301,1335,1417,1441,1519,1602,1627,1671,1778,1825,
17,58,123,211,273,289,346,420,517,603,684,724,823,830,879,889,954,1357,1472,1488,1508,1516,1525,1674,1710,1831,1840,1850,1884,1912,1997,2002,
16,59,113,214,226,361,440,472,510,589,621,702,774,881,991,1005,1098,1139,1285,1477,1502,1631,1666,1713,1798,1844,1890,1906,1989,2004,2023,2027,
15,93,151,200,265,284,354,410,488,525,614,642,706,802,852,888,956,1022,1062,1131,1197,1236,1326,1366,1538,1553,1573,1604,1642,1650,1712,1749,
14,86,133,179,267,317,388,396,464,530,605,640,769,811,832,939,970,1043,1080,1149,1204,1274,1312,1454,1470,1480,1489,1498,1533,1663,1714,1750,
13,146,197,237,300,338,422,462,593,705,737,806,844,922,966,1044,1089,1172,1225,1351,1418,1428,1443,1497,1526,1709,1783,1806,1966,2012,2044,2046,
12,157,223,272,312,333,412,529,610,700,744,812,853,929,986,1021,1085,1170,1246,1280,1295,1352,1394,1514,1594,1637,1803,1807,1885,1938,1953,1963,
110,127,207,230,323,335,469,586,656,681,728,801,880,895,949,1153,1202,1244,1302,1333,1415,1445,1729,1793,1797,1817,1835,1889,1977,1981,2045,2047,
11,105,115,181,238,296,385,418,500,508,583,643,689,730,826,839,893,950,1029,1108,1147,1184,1299,1376,1471,1523,1548,1595,1644,1683,1717,1751,
10,100,160,171,266,362,454,598,711,754,778,927,985,1129,1169,1186,1258,1303,1337,1588,1615,1672,1732,1734,1767,1858,1893,1927,1939,2007,2029,2042,
9,83,118,212,225,326,345,446,504,536,591,639,710,736,816,847,909,977,1107,1136,1165,1173,1261,1294,1341,1439,1458,1494,1505,1628,1704,1752,
8,90,138,177,252,287,357,405,451,534,567,665,687,747,818,868,911,994,1033,1092,1159,1203,1218,1247,1314,1390,1465,1536,1550,1668,1782,1826,
7,54,148,205,233,305,369,398,497,513,577,652,669,755,788,882,896,999,1028,1060,1094,1157,1321,1340,1473,1518,1524,1598,1640,1667,1698,1753,
6,108,143,202,253,314,339,429,550,570,622,671,729,824,878,928,1011,1066,1134,1194,1243,1305,1329,1393,1440,1503,1610,1677,1728,1737,1794,1827,
5,88,149,216,268,309,387,439,461,553,574,667,712,743,781,842,892,998,1018,1099,1180,1271,1307,1373,1422,1429,1486,1555,1611,1736,1809,1828,
4,68,137,209,264,315,372,433,473,537,564,654,688,771,789,864,920,992,1039,1111,1117,1205,1222,1255,1380,1420,1469,1530,1605,1639,1654,1754,
71,163,187,228,304,390,437,483,514,599,620,709,749,817,905,974,1037,1067,1160,1196,1224,1226,1347,1386,1542,1632,1662,1785,1947,1998,2024,2035,
3,55,111,196,426,455,533,648,679,841,930,981,1016,1093,1135,1185,1273,1325,1345,1449,1537,1576,1657,1701,1808,1864,1877,1913,1931,1934,1965,1974,
2,89,152,249,282,359,406,499,506,594,645,803,833,945,1053,1106,1156,1201,1259,1281,1378,1403,1433,1492,1531,1599,1660,1711,1873,1924,1984,1985,
1,107,154,227,319,445,546,604,659,727,784,851,1002,1056,1081,1126,1306,1359,1413,1427,1464,1522,1648,1688,1800,1879,1941,1942,1945,1955,1969,1975,
0,80,321,360,401,502,515,653,745,805,855,980,1040,1061,1252,1320,1362,1407,1491,1562,1589,1716,1726,1780,1790,1852,1862,1899,1904,1958,2006,2009,
64,161,217,236,291,350,411,466,566,628,670,767,819,901,959,1017,1083,1137,1189,1223,1249,1296,1348,1411,1479,1501,1572,1646,1696,1723,1766,1829,
91,114,201,241,327,375,475,551,607,637,686,768,815,898,962,1036,1128,1182,1264,1328,1379,1400,1565,1673,1760,1771,1774,1789,1865,1928,1990,1991,
82,122,213,279,382,428,470,512,569,630,716,849,914,946,1008,1091,1110,1115,1297,1344,1543,1569,1600,1636,1682,1722,1814,1838,1868,1876,1987,1988,
69,153,240,292,364,414,476,542,634,886,907,1049,1109,1133,1234,1308,1370,1419,1457,1597,1608,1721,1795,1821,1843,1856,1898,1910,1932,1962,1970,1976,
87,169,320,366,431,465,539,596,625,753,800,837,936,1001,1019,1078,1113,1304,1356,1434,1493,1510,1539,1692,1719,1738,1784,1816,1859,1896,1959,1964,
60,139,186,271,281,334,394,487,555,660,720,758,779,860,890,971,1010,1079,1162,1237,1276,1323,1334,1381,1515,1549,1586,1635,1720,1757,1764,1830,
52,57,117,173,277,306,373,403,494,548,597,644,697,825,858,940,955,1054,1120,1210,1221,1240,1292,1372,1414,1430,1499,1506,1587,1618,1706,1755,
53,108,129,198,244,298,341,391,441,457,534,579,640,710,762,795,858,893,1002,1037,1073,1157,1170,1244,1286,1345,1493,1573,1581,1707,1781,1831,
51,56,116,172,276,305,372,402,493,547,596,643,696,824,857,939,954,1053,1107,1119,1209,1220,1291,1371,1413,1429,1499,1586,1617,1655,1705,1756,
50,73,140,188,245,285,385,398,477,520,586,654,706,756,786,835,981,1014,1099,1189,1230,1292,1359,1401,1439,1465,1513,1556,1620,1718,1773,1832,
65,154,206,243,307,334,403,479,530,608,665,700,750,791,870,887,932,972,1044,1064,1143,1173,1264,1321,1377,1551,1572,1605,1608,1674,1792,1833,
49,151,214,274,321,364,448,615,637,704,733,873,914,959,1041,1185,1247,1352,1404,1482,1500,1560,1635,1778,1809,1940,1947,1982,2017,2042,2044,2047,
48,209,255,317,380,416,527,600,626,693,740,790,860,896,978,1058,1147,1194,1259,1349,1423,1441,1509,1528,1555,1577,1675,1878,1929,1938,1945,1952,
47,100,134,258,423,497,518,763,950,1050,1068,1151,1271,1281,1284,1607,1628,1668,1694,1750,1787,1850,1856,1869,1880,1941,1964,1965,2001,2008,2014,2023,
46,103,135,205,388,449,555,571,712,761,821,920,947,1062,1140,1211,1357,1387,1447,1487,1532,1537,1686,1816,1817,1824,1846,1851,1886,1994,2005,2010,
45,94,111,175,275,301,352,408,478,537,607,649,670,738,827,882,890,1097,1120,1197,1232,1283,1451,1480,1540,1636,1777,1845,1894,1939,1949,1953,
44,74,161,182,242,282,366,434,492,551,564,656,679,774,796,934,956,1028,1103,1160,1213,1274,1341,1422,1427,1526,1678,1693,1724,1731,1893,1909,
43,55,120,218,268,327,362,414,466,506,572,653,707,776,794,837,922,989,1031,1074,1115,1177,1310,1431,1450,1461,1618,1680,1712,1744,1794,1834,
42,69,124,220,252,289,383,426,500,531,601,657,695,884,937,999,1022,1072,1126,1186,1253,1317,1338,1386,1396,1445,1582,1633,1746,1779,1815,1881,
41,80,170,191,277,293,346,435,467,519,614,648,681,739,806,871,902,992,1101,1154,1182,1261,1278,1287,1467,1504,1533,1544,1580,1611,1708,1757,
123,173,269,332,347,407,480,508,618,698,760,809,834,911,996,1040,1085,1142,1187,1332,1364,1459,1474,1546,1741,1788,1810,1814,1848,1872,1879,1910,
40,96,118,256,382,422,522,567,623,907,986,1054,1129,1262,1315,1348,1408,1623,1658,1747,1797,1818,1827,1873,1899,1902,1918,1955,1973,1989,1998,2003,
39,83,158,192,273,287,373,394,495,543,589,661,671,771,862,912,964,1008,1075,1145,1199,1252,1299,1360,1391,1436,1455,1592,1615,1679,1688,1758,
38,98,166,219,249,324,333,429,462,553,602,663,720,741,793,876,901,946,1034,1102,1206,1301,1330,1370,1400,1511,1520,1566,1583,1643,1785,1835,
37,61,130,181,247,331,336,396,463,548,599,631,672,732,819,868,925,960,1024,1071,1117,1165,1191,1227,1288,1342,1409,1442,1460,1492,1669,1759,
36,71,128,261,299,494,562,716,775,803,845,971,1011,1266,1316,1457,1496,1535,1545,1646,1654,1689,1854,1890,1946,1948,1972,1980,1991,1997,2032,2039,
35,66,164,187,253,297,335,406,485,542,583,625,684,722,737,828,855,915,1026,1081,1118,1215,1268,1285,1373,1489,1567,1600,1739,1752,1807,1836,
34,72,143,207,231,329,390,424,504,510,584,632,690,768,820,849,917,988,1046,1104,1198,1238,1308,1331,1335,1424,1435,1510,1589,1640,1803,1837,
33,60,146,221,241,309,370,446,452,516,561,662,675,765,807,853,941,974,1056,1096,1131,1210,1275,1296,1354,1403,1454,1462,1473,1624,1726,1838,
32,86,131,217,312,378,392,505,557,622,826,842,923,991,1051,1086,1138,1216,1231,1276,1318,1362,1388,1602,1749,1805,1847,1858,1859,1911,1925,1930,
31,92,165,184,238,342,451,570,650,702,800,933,952,1057,1110,1192,1239,1547,1562,1619,1667,1714,1822,1864,1867,1912,1950,2021,2029,2031,2034,2041,
30,76,127,202,228,330,340,415,502,525,575,628,682,748,798,861,942,962,1045,1079,1123,1205,1267,1300,1363,1390,1458,1543,1711,1742,1802,1839,
29,78,155,203,262,296,376,433,509,616,652,694,758,812,872,916,957,1077,1149,1178,1226,1314,1353,1398,1437,1484,1553,1587,1651,1699,1729,1840,
28,139,183,246,322,490,574,703,751,805,883,930,963,1020,1166,1254,1376,1420,1434,1584,1642,1685,1706,1855,1868,1891,1942,1999,2013,2015,2045,2046,
27,84,167,174,257,306,357,447,458,526,569,660,676,755,782,856,903,951,1005,1083,1141,1180,1234,1290,1329,1382,1421,1456,1595,1657,1702,1760,
26,95,157,343,437,456,558,605,745,844,936,977,1003,1006,1150,1255,1303,1366,1397,1508,1644,1661,1728,1789,1913,1921,1936,1971,1975,1984,2019,2022,
25,102,144,194,323,377,431,488,515,612,645,717,725,785,830,886,905,983,1029,1069,1122,1190,1269,1297,1368,1384,1392,1477,1612,1687,1696,1761,
24,77,163,224,230,310,339,412,470,544,580,646,697,764,789,847,918,966,1012,1063,1137,1208,1218,1265,1326,1337,1407,1475,1578,1621,1660,1762,
23,91,136,271,367,420,473,521,578,624,866,968,1023,1067,1113,1229,1374,1481,1512,1616,1735,1755,1775,1900,1951,1956,1958,1967,1969,1974,1985,1987,
22,62,133,189,233,302,351,442,459,546,610,617,677,731,813,874,931,994,1030,1109,1144,1175,1249,1443,1527,1534,1552,1565,1576,1622,1683,1763,
21,97,149,171,250,300,379,440,489,559,630,674,759,797,869,898,975,1207,1250,1411,1452,1531,1570,1650,1743,1745,1784,1790,1823,1830,1861,1882,
20,64,141,179,259,315,369,418,455,556,594,635,692,747,808,875,899,987,1019,1076,1124,1228,1323,1367,1405,1446,1575,1632,1664,1725,1919,1923,
19,79,115,254,355,399,481,517,581,668,734,865,995,1047,1087,1121,1381,1550,1569,1637,1663,1698,1801,1874,1896,1907,1915,1960,1976,1979,2006,2011,
18,75,125,197,260,375,401,539,611,634,714,749,792,833,924,967,1025,1095,1139,1237,1289,1394,1494,1516,1557,1563,1690,1732,1826,1897,1914,1916,
17,93,119,177,294,348,443,491,540,629,691,769,781,839,940,982,1049,1070,1162,1219,1416,1440,1519,1601,1701,1780,1806,1811,1906,1917,2018,2026,
16,57,122,210,288,345,419,483,667,683,723,777,822,878,888,953,1007,1111,1163,1309,1356,1415,1471,1515,1525,1579,1673,1709,1808,1862,1863,1883,
15,58,112,213,225,292,360,471,588,701,773,784,880,990,1004,1167,1214,1240,1369,1393,1502,1574,1630,1665,1791,1895,1927,1990,2030,2035,2037,2043,
14,150,199,264,283,353,409,487,524,613,641,705,724,801,851,943,955,1021,1061,1130,1196,1235,1277,1325,1365,1603,1641,1649,1734,1786,1996,2000,
13,85,132,178,266,316,387,395,529,604,639,810,831,938,969,1042,1148,1203,1273,1311,1453,1469,1479,1488,1498,1539,1713,1751,1819,1961,1962,1977,
12,101,145,236,337,421,461,592,620,843,965,1043,1088,1153,1171,1328,1350,1417,1497,1524,1588,1626,1681,1800,1804,1898,1924,1959,1986,1993,2020,2025,
105,156,222,311,411,476,528,609,699,743,811,852,928,985,1084,1245,1279,1294,1351,1430,1514,1518,1593,1692,1730,1798,1857,1889,1892,1922,1933,1937,
11,110,126,229,400,468,523,585,655,727,879,894,948,1013,1089,1152,1201,1243,1383,1414,1591,1613,1754,1795,1866,1875,1908,1957,1983,2009,2027,2033,
10,104,114,180,237,295,384,417,499,642,688,729,825,838,892,949,1060,1146,1183,1298,1375,1470,1522,1594,1682,1716,1727,1820,1829,1853,1934,1944,
9,99,159,265,361,453,514,597,753,984,1033,1100,1128,1168,1257,1302,1336,1425,1614,1671,1736,1770,1799,1849,1877,1887,1904,1966,1970,1988,1992,1995,
8,82,117,211,278,325,344,445,503,535,590,638,709,735,815,846,908,976,1106,1135,1164,1172,1260,1293,1340,1395,1438,1495,1505,1606,1627,1764,
7,89,137,176,251,286,356,404,450,533,566,664,686,746,817,867,910,993,1032,1091,1158,1169,1202,1246,1313,1389,1464,1536,1549,1625,1691,1765,
6,109,147,204,232,304,368,397,496,512,576,651,721,754,787,881,895,998,1027,1059,1093,1156,1320,1339,1472,1517,1523,1538,1597,1639,1697,1766,
5,107,142,201,313,338,428,549,621,728,823,877,927,1010,1065,1133,1193,1242,1282,1304,1503,1599,1609,1676,1704,1796,1813,1871,1888,1920,1963,1978,
4,87,148,215,267,308,386,438,460,552,573,666,711,742,780,841,891,997,1017,1098,1114,1179,1270,1306,1372,1428,1483,1610,1670,1717,1771,1841,
67,208,263,314,371,432,472,536,563,687,770,788,863,919,1038,1116,1204,1221,1379,1419,1468,1507,1529,1604,1638,1695,1738,1885,1901,1935,2016,2024,
3,70,162,186,227,303,389,436,482,513,598,619,708,816,864,904,973,1036,1066,1159,1195,1223,1225,1312,1346,1385,1476,1541,1631,1710,1733,1842,
2,54,169,195,248,328,350,425,454,532,582,647,678,772,829,840,929,1015,1092,1134,1184,1272,1324,1334,1344,1448,1486,1647,1656,1700,1772,1843,
1,88,190,281,358,405,498,560,593,644,718,730,802,832,921,944,1052,1105,1155,1200,1258,1280,1402,1432,1491,1530,1598,1659,1776,1860,1926,1931,
0,106,153,193,226,318,354,444,484,545,603,658,689,726,783,850,909,1001,1055,1080,1125,1176,1305,1358,1412,1426,1463,1521,1558,1648,1652,1767,
121,272,320,359,501,577,680,804,926,979,1039,1174,1251,1319,1361,1406,1449,1490,1561,1677,1715,1723,1865,1876,1903,1943,1954,1981,2007,2012,2028,2036,
63,160,216,235,290,349,410,465,507,565,627,669,766,818,900,958,1016,1082,1136,1188,1222,1248,1295,1347,1410,1478,1501,1571,1645,1666,1928,1932,
90,113,200,240,326,374,439,474,550,606,636,685,767,814,854,897,961,1035,1094,1127,1181,1263,1327,1378,1399,1554,1564,1590,1629,1672,1722,1768,
81,212,279,284,381,427,469,511,568,715,744,779,848,913,945,1090,1108,1212,1256,1343,1542,1568,1721,1737,1774,1783,1812,1825,1828,1852,1870,1884,
68,152,223,239,291,363,413,475,541,587,633,713,736,799,885,906,980,1048,1132,1233,1307,1418,1444,1506,1559,1596,1662,1719,1740,1748,1793,1844,
168,196,234,319,365,430,464,538,595,673,752,836,935,1000,1018,1112,1241,1355,1433,1466,1485,1653,1720,1753,1782,1821,1905,1968,2002,2004,2038,2040,
52,59,138,185,270,280,393,486,554,591,659,719,757,778,859,889,970,1009,1078,1161,1217,1224,1236,1322,1333,1380,1548,1585,1634,1684,1703,1769,
53,107,128,197,243,297,340,440,456,533,578,639,709,761,794,857,892,1001,1036,1072,1156,1243,1344,1415,1455,1485,1518,1580,1663,1734,1788,1845,
51,58,137,269,333,485,590,658,756,858,888,969,1008,1160,1216,1223,1235,1321,1379,1584,1633,1683,1702,1877,1899,1944,1985,2022,2027,2032,2040,2042,
50,55,115,171,275,304,371,401,492,546,595,642,695,823,938,953,1052,1106,1118,1208,1219,1239,1290,1370,1412,1428,1499,1585,1616,1654,1792,1846,
72,139,187,244,384,397,519,585,705,755,785,834,942,1098,1188,1229,1291,1358,1400,1438,1464,1555,1619,1668,1718,1729,1732,1790,1827,1833,1843,1885,
49,64,153,205,242,306,402,478,529,664,699,749,790,830,869,931,971,1043,1063,1142,1172,1263,1320,1376,1550,1571,1604,1673,1728,1740,1769,1847,
48,96,150,213,273,320,363,504,523,614,636,703,732,872,887,913,958,1040,1068,1153,1184,1246,1312,1351,1403,1457,1481,1500,1634,1670,1701,1770,
47,105,111,208,254,316,379,415,484,526,599,625,692,739,789,859,895,977,1057,1146,1193,1258,1348,1422,1440,1484,1487,1509,1527,1674,1689,1771,
46,99,133,214,257,282,350,422,496,517,601,667,673,762,784,835,909,949,1049,1067,1150,1270,1280,1283,1363,1539,1562,1607,1627,1748,1765,1848,
45,102,134,204,245,300,387,406,448,554,570,628,711,760,820,856,919,946,1024,1061,1139,1210,1241,1356,1386,1446,1532,1576,1613,1685,1707,1772,
44,93,169,174,274,351,407,477,536,606,648,669,737,881,889,963,1033,1096,1119,1196,1231,1430,1450,1479,1531,1535,1747,1750,1758,1812,1835,1886,
43,73,160,181,281,365,433,491,550,563,655,678,773,795,933,955,1027,1102,1159,1273,1328,1340,1426,1602,1724,1726,1761,1803,1839,1841,1868,1887,
42,54,119,217,267,326,361,413,465,560,571,706,793,836,988,1030,1073,1234,1392,1460,1617,1679,1828,1871,1903,1912,1924,1953,1955,1956,2000,2006,
41,68,123,219,251,288,382,425,499,530,600,656,694,763,826,883,936,998,1021,1071,1125,1252,1316,1385,1581,1632,1657,1745,1752,1763,1795,1849,
170,276,345,434,613,647,738,870,901,1058,1181,1260,1286,1543,1553,1610,1684,1810,1914,1967,1977,1984,1989,1994,1997,2009,2015,2016,2025,2029,2036,2044,
40,122,172,332,346,479,587,617,697,759,808,833,910,995,1039,1084,1141,1186,1256,1285,1331,1458,1473,1545,1652,1693,1824,1829,1869,1921,1930,1938,
39,95,117,255,292,381,391,421,521,566,622,716,730,796,864,906,985,1053,1087,1128,1176,1261,1314,1347,1407,1434,1591,1622,1725,1881,1954,1963,
38,82,157,191,286,372,393,494,542,588,660,770,861,911,1074,1144,1251,1298,1359,1435,1454,1551,1614,1678,1767,1813,1815,1862,1884,1894,1916,1919,
37,97,165,218,323,428,461,552,662,719,740,792,875,900,945,1101,1205,1329,1399,1510,1565,1582,1642,1710,1844,1880,1907,1908,1917,1922,1931,1939,
36,60,129,180,246,330,335,395,462,547,598,630,671,731,818,867,924,959,1023,1070,1116,1164,1190,1226,1287,1341,1408,1441,1459,1491,1694,1773,
35,70,127,206,260,298,408,493,553,561,715,774,802,844,930,970,1010,1094,1167,1192,1265,1315,1496,1513,1534,1544,1559,1579,1645,1738,1743,1850,
34,65,163,186,296,405,541,683,827,999,1025,1080,1117,1267,1372,1395,1488,1566,1712,1730,1737,1796,1865,1875,1895,1896,1898,1900,1902,1905,1934,1945,
33,71,142,230,389,503,583,631,767,848,916,987,1045,1103,1197,1237,1307,1330,1423,1639,1680,1692,1915,1918,1957,1974,1975,2002,2012,2018,2021,2037,
32,59,145,220,240,308,369,445,451,515,615,661,674,764,806,852,940,973,1055,1095,1130,1209,1274,1295,1353,1402,1453,1461,1472,1623,1677,1774,
31,85,130,216,234,311,377,446,505,556,607,621,676,724,825,841,922,990,1050,1085,1137,1215,1224,1230,1317,1361,1387,1425,1601,1608,1651,1775,
30,91,164,183,237,299,341,423,450,558,649,701,772,876,932,951,1056,1100,1108,1121,1191,1238,1309,1357,1546,1561,1618,1713,1766,1797,1821,1888,
29,75,126,201,227,329,339,414,501,524,574,627,681,747,797,860,941,961,1044,1078,1122,1204,1266,1299,1332,1362,1389,1542,1606,1628,1667,1776,
28,77,154,202,261,295,375,432,483,508,616,651,693,757,811,871,915,956,1013,1076,1148,1177,1225,1277,1313,1352,1397,1436,1492,1586,1698,1777,
27,101,138,182,321,354,437,489,518,573,663,702,750,804,882,929,962,1019,1089,1129,1165,1212,1253,1292,1375,1419,1433,1641,1705,1757,1801,1851,
26,83,166,173,256,305,356,447,457,525,568,659,675,754,781,855,902,950,1004,1082,1140,1179,1233,1282,1289,1381,1420,1475,1594,1629,1656,1778,
25,94,156,190,268,331,342,436,455,557,604,624,689,791,843,935,976,1111,1149,1302,1334,1365,1396,1590,1660,1704,1727,1876,1882,1935,1940,1946,
24,143,241,376,430,487,611,644,777,885,904,982,1189,1268,1367,1391,1687,1749,1820,1823,1870,1913,1932,1969,1973,1982,2007,2023,2033,2035,2041,2046,
23,76,162,224,229,309,338,411,469,543,579,645,696,788,846,917,965,1011,1062,1136,1169,1207,1264,1325,1336,1406,1474,1577,1620,1659,1714,1779,
22,90,135,193,270,328,366,419,472,520,623,718,775,779,865,914,967,1022,1066,1112,1174,1228,1284,1373,1411,1442,1480,1511,1615,1655,1708,1780,
21,61,132,188,232,301,441,458,545,609,812,873,993,1029,1143,1248,1486,1506,1526,1533,1552,1564,1621,1682,1739,1800,1873,1874,1925,1948,1958,1965,
20,148,378,488,591,758,868,897,974,1005,1206,1249,1337,1410,1451,1466,1530,1569,1611,1649,1688,1825,1943,1964,1970,1990,1993,2003,2017,2026,2034,2045,
19,63,140,178,258,314,368,417,454,555,593,634,691,746,807,874,898,986,1018,1075,1123,1198,1227,1322,1366,1404,1445,1575,1595,1631,1706,1781,
18,78,114,198,253,307,398,480,580,668,713,733,819,994,1046,1086,1120,1275,1303,1380,1449,1549,1568,1583,1697,1863,1937,1942,1962,1972,1998,2004,
17,74,124,259,374,466,538,610,633,832,923,966,1236,1288,1354,1495,1515,1556,1625,1798,1842,1878,1959,1976,1981,1988,1991,2001,2010,2019,2031,2043,
16,118,176,249,293,347,442,490,539,577,690,780,838,939,981,1048,1069,1161,1218,1240,1300,1519,1600,1626,1700,1809,1819,1831,1949,1978,1996,2005,
15,56,209,272,287,344,418,482,516,602,666,682,722,776,821,877,943,952,1006,1162,1217,1308,1355,1414,1470,1507,1525,1578,1647,1672,1804,1852,
14,57,212,278,291,359,439,470,509,700,783,879,989,1097,1138,1166,1213,1368,1476,1502,1504,1573,1664,1746,1756,1760,1864,1910,1920,1951,1952,1966,
13,92,149,263,352,486,612,640,723,850,954,1195,1276,1324,1364,1494,1537,1640,1711,1832,1834,1892,1909,1960,1983,1995,2008,2013,2020,2028,2039,2047,
12,84,131,177,265,315,386,394,463,528,603,638,768,809,886,937,968,1041,1147,1202,1272,1310,1383,1452,1468,1478,1498,1662,1753,1791,1808,1853,
100,144,196,235,336,420,460,619,704,736,805,842,921,964,1042,1152,1170,1327,1349,1416,1427,1497,1523,1558,1799,1818,1826,1830,1837,1838,1867,1889,
11,104,155,221,271,310,390,410,475,527,608,653,698,742,810,851,927,984,1020,1083,1244,1278,1293,1350,1393,1429,1514,1517,1592,1636,1669,1782,
10,110,125,228,322,334,399,467,522,584,654,680,726,800,878,893,947,1012,1088,1151,1200,1242,1301,1382,1413,1444,1574,1612,1650,1695,1789,1854,
9,103,113,179,236,294,383,416,498,507,582,641,687,728,824,837,891,948,1028,1059,1079,1145,1182,1297,1374,1469,1521,1547,1593,1643,1715,1783,
8,98,158,223,264,284,360,392,452,513,596,620,710,752,829,866,926,983,1032,1099,1127,1185,1424,1572,1587,1717,1794,1811,1814,1817,1866,1890,
7,81,116,210,277,324,343,444,502,534,589,637,708,734,814,845,907,975,1105,1113,1134,1171,1259,1339,1394,1437,1505,1605,1686,1703,1806,1855,
6,88,175,250,285,355,403,449,532,565,685,745,816,992,1031,1090,1157,1168,1201,1245,1388,1463,1536,1548,1624,1690,1802,1891,1893,1901,1941,1947,
5,108,146,203,231,303,367,396,495,511,575,650,720,753,786,880,894,997,1003,1026,1092,1155,1319,1338,1471,1522,1596,1638,1666,1696,1786,1856,
4,106,141,200,252,312,337,427,476,548,569,670,727,822,1009,1064,1132,1281,1335,1439,1503,1598,1675,1744,1764,1816,1872,1904,1927,1950,1968,1971,
147,266,385,459,551,572,665,741,840,890,996,1016,1178,1269,1305,1371,1421,1482,1554,1609,1716,1807,1980,1986,1987,1992,1999,2011,2014,2024,2030,2038,
3,66,136,207,262,313,370,431,471,535,562,686,769,787,862,918,991,1037,1109,1115,1203,1220,1254,1378,1418,1467,1528,1603,1637,1653,1759,1857,
2,69,161,185,226,302,388,435,481,512,597,618,707,748,815,863,903,972,1035,1065,1158,1194,1222,1311,1345,1384,1524,1540,1630,1661,1709,1784,
1,109,168,194,247,327,349,424,453,531,581,646,677,771,828,839,928,980,1014,1091,1133,1183,1271,1323,1333,1343,1447,1483,1646,1699,1755,1858,
0,87,151,189,248,280,357,404,497,559,592,643,717,729,801,831,920,1002,1051,1104,1154,1199,1257,1279,1377,1401,1431,1490,1529,1597,1658,1785,
152,192,225,317,353,443,544,657,688,725,782,849,908,1000,1054,1124,1175,1304,1390,1462,1520,1557,1648,1723,1735,1736,1741,1751,1822,1840,1883,1911,
79,120,184,319,358,400,500,514,576,652,679,744,803,854,925,978,1038,1173,1250,1318,1360,1405,1448,1489,1508,1512,1560,1588,1676,1762,1928,1933,
62,159,215,289,348,409,464,506,564,626,721,765,817,899,957,1015,1081,1135,1187,1221,1247,1294,1346,1409,1477,1501,1570,1644,1665,1722,1793,1859,
89,112,199,239,325,373,438,473,549,605,635,684,766,813,853,896,960,1034,1093,1126,1180,1262,1326,1398,1563,1589,1671,1721,1731,1742,1805,1860,
80,121,211,279,283,380,426,468,510,567,629,714,743,778,847,912,944,1007,1060,1114,1211,1255,1296,1342,1541,1567,1599,1635,1681,1719,1768,1861,
67,222,238,290,362,412,474,540,586,632,712,735,798,884,905,979,1047,1107,1131,1232,1306,1369,1417,1443,1456,1493,1516,1720,1733,1754,1923,1926,
52,86,167,195,233,318,364,429,537,594,672,751,799,934,1017,1077,1110,1163,1214,1432,1465,1538,1691,1787,1836,1879,1897,1906,1929,1936,1961,1979,
53,106,127,242,296,339,455,532,638,708,760,793,891,1000,1035,1071,1155,1242,1285,1343,1414,1454,1517,1747,1780,1846,1929,1959,1962,1990,1995,1997,
51,85,166,194,232,317,363,428,463,536,593,624,671,750,798,835,933,999,1016,1076,1108,1162,1213,1240,1303,1354,1431,1464,1484,1652,1690,1786,
50,57,331,553,589,657,718,755,829,857,943,968,1077,1159,1215,1222,1320,1378,1547,1574,1632,1682,1770,1778,1801,1834,1884,1901,1921,1922,1945,1954,
54,114,274,303,370,491,545,594,641,694,822,856,937,952,1051,1105,1117,1207,1218,1238,1289,1499,1584,1615,1728,1735,1738,1833,1844,1970,1981,1986,
49,71,138,186,243,383,396,584,754,833,941,980,1013,1187,1228,1290,1399,1437,1463,1618,1718,1765,1771,1822,1857,1943,1963,1988,2015,2020,2023,2030,
48,63,152,204,305,333,401,477,528,607,698,777,789,868,970,1042,1062,1141,1171,1262,1319,1375,1493,1549,1570,1603,1672,1704,1761,1842,1874,1891,
47,95,149,212,319,362,392,503,522,613,635,702,731,830,871,912,957,1039,1067,1152,1183,1245,1311,1350,1402,1480,1500,1559,1633,1700,1807,1862,
46,104,169,207,253,315,378,414,525,598,691,738,788,858,894,976,1056,1145,1257,1347,1492,1509,1526,1554,1576,1673,1743,1840,1841,1905,1971,1978,
45,98,132,213,256,281,349,421,495,600,666,672,761,783,834,908,948,1048,1066,1149,1269,1279,1362,1516,1531,1561,1607,1693,1753,1802,1806,1863,
44,133,203,244,386,405,504,627,759,855,918,945,1023,1209,1355,1385,1445,1486,1532,1612,1757,1845,1858,1888,1906,1915,1992,1993,2028,2032,2043,2046,
43,168,173,273,300,535,605,647,721,880,888,962,1032,1095,1118,1195,1230,1429,1478,1530,1534,1539,1635,1725,1815,1824,1827,1898,1908,1965,1996,2006,
42,72,159,180,241,280,364,432,490,549,562,654,677,794,866,932,954,1026,1101,1158,1212,1272,1327,1339,1390,1421,1601,1628,1677,1692,1724,1864,
41,109,118,216,266,325,360,412,464,559,570,652,705,775,792,921,987,1029,1072,1114,1176,1233,1309,1335,1391,1430,1449,1459,1616,1678,1711,1787,
67,122,218,250,287,381,424,498,529,599,655,693,762,825,882,935,997,1070,1124,1185,1251,1315,1337,1384,1395,1444,1580,1631,1656,1739,1810,1892,
40,79,170,190,275,292,344,433,466,518,612,646,680,737,805,869,900,991,1057,1100,1153,1180,1259,1277,1383,1442,1542,1579,1609,1683,1707,1788,
39,105,171,268,332,345,406,478,507,586,696,758,807,832,994,1038,1083,1140,1255,1330,1363,1472,1544,1606,1608,1803,1849,1852,1895,1911,1941,1948,
38,94,116,184,254,291,380,420,476,520,565,621,715,729,795,863,905,984,1052,1086,1127,1175,1260,1313,1346,1406,1433,1455,1621,1657,1706,1789,
37,81,156,272,285,371,493,541,659,670,769,826,860,910,963,1007,1073,1143,1198,1250,1297,1358,1453,1550,1726,1736,1817,1910,1918,1984,2031,2042,
36,164,217,248,390,427,460,551,601,661,739,874,899,944,1033,1204,1275,1282,1300,1369,1398,1564,1581,1641,1650,1709,1985,2002,2017,2019,2029,2033,
35,59,128,179,329,394,461,546,597,817,923,958,1022,1069,1113,1115,1189,1225,1286,1340,1407,1440,1458,1490,1668,1813,1825,1848,1851,1873,1875,1893,
34,69,126,205,259,297,407,492,552,615,667,714,773,801,843,929,969,1009,1093,1166,1191,1264,1314,1456,1496,1533,1543,1578,1644,1653,1688,1790,
33,64,162,185,252,295,334,391,404,484,540,582,682,736,854,914,998,1116,1266,1371,1394,1565,1599,1669,1751,1758,1808,1936,1951,2000,2004,2010,
32,70,141,229,328,388,423,502,509,630,689,766,819,847,915,986,1044,1102,1163,1196,1236,1306,1329,1422,1434,1588,1638,1679,1782,1854,1934,1949,
31,58,144,219,239,368,444,450,614,660,851,939,972,1054,1208,1273,1294,1352,1401,1452,1460,1471,1622,1676,1768,1779,1964,1991,2007,2011,2013,2025,
30,84,129,215,233,310,376,445,505,555,606,675,723,824,840,989,1049,1084,1136,1223,1229,1316,1360,1386,1424,1600,1708,1740,1777,1896,1924,1927,
29,90,163,182,236,298,340,422,449,557,569,648,700,771,799,875,931,950,1055,1060,1099,1120,1190,1237,1308,1356,1545,1560,1591,1617,1666,1791,
28,74,125,200,226,338,413,500,573,626,746,859,940,960,1043,1203,1265,1298,1331,1361,1388,1541,1605,1627,1766,1785,1974,2003,2009,2040,2041,2047,
27,76,153,201,260,294,374,431,482,616,650,692,756,810,870,955,1012,1075,1147,1276,1351,1396,1435,1491,1524,1585,1697,1829,1835,1900,1947,1955,
26,100,137,181,245,320,353,436,488,517,572,662,701,749,803,881,928,961,1018,1088,1128,1164,1211,1252,1291,1374,1418,1432,1583,1640,1684,1792,
25,82,165,172,255,304,355,447,456,524,567,658,674,753,780,901,949,1081,1139,1178,1232,1281,1288,1380,1419,1474,1504,1593,1701,1731,1755,1865,
24,93,155,189,267,330,341,435,454,556,603,623,688,744,790,842,887,934,975,1005,1148,1192,1254,1333,1364,1507,1589,1643,1659,1752,1764,1866,
23,101,142,193,240,322,375,429,486,514,610,643,716,722,724,784,884,903,981,1028,1068,1121,1188,1267,1296,1334,1366,1476,1551,1611,1687,1793,
22,75,161,224,228,308,337,410,468,542,578,644,695,763,787,845,916,964,1010,1061,1135,1168,1206,1263,1324,1405,1473,1487,1619,1658,1713,1794,
21,89,134,192,269,327,365,418,471,519,577,622,717,774,778,913,966,1021,1065,1110,1173,1227,1283,1372,1410,1441,1479,1510,1614,1654,1994,1998,
20,60,131,187,231,350,440,457,544,608,676,730,811,872,992,1107,1142,1174,1247,1328,1483,1552,1558,1563,1620,1712,1783,1820,1850,1886,1972,1977,
19,96,147,223,249,377,439,487,558,590,629,673,757,796,867,896,973,1004,1089,1205,1248,1336,1409,1450,1465,1494,1512,1529,1568,1610,1767,1867,
18,62,139,177,257,313,367,416,453,554,592,633,690,745,806,873,897,985,1017,1074,1122,1197,1226,1321,1365,1403,1575,1594,1630,1663,1705,1795,
17,77,113,197,306,354,397,479,516,579,668,712,732,818,864,930,993,1045,1085,1119,1214,1274,1302,1379,1448,1548,1567,1582,1636,1662,1696,1796,
16,73,123,196,258,284,373,400,465,537,609,632,713,748,791,831,922,965,1024,1094,1138,1217,1235,1287,1353,1393,1555,1562,1624,1686,1689,1797,
15,92,117,175,346,441,489,538,576,628,768,837,938,1047,1160,1169,1299,1415,1439,1519,1535,1670,1699,1737,1756,1826,1843,1931,1975,1982,1987,1989,
14,55,121,208,286,343,417,481,515,665,681,820,951,1109,1161,1216,1307,1413,1469,1525,1577,1646,1671,1832,1838,1880,1882,1897,1902,1933,1950,1956,
13,56,111,211,277,290,358,438,469,508,587,620,699,772,782,878,988,1058,1096,1137,1165,1239,1284,1367,1502,1629,1734,1744,1763,1781,1784,1868,
12,91,148,198,262,282,351,408,485,523,611,639,704,776,800,849,942,953,1020,1129,1194,1224,1234,1323,1495,1508,1572,1602,1639,1772,1776,1869,
83,130,176,264,314,385,393,462,527,637,767,808,885,936,967,1040,1079,1146,1201,1271,1382,1451,1467,1477,1498,1538,1647,1733,1746,1883,1889,1912,
11,99,143,195,299,335,419,459,591,618,703,735,804,841,920,1041,1087,1151,1326,1348,1426,1497,1518,1522,1557,1587,1625,1680,1774,1831,1859,1894,
10,103,154,220,270,309,389,409,474,526,697,741,809,850,983,1019,1082,1243,1349,1428,1514,1553,1691,1773,1812,1847,1855,1856,1903,1904,1916,1920,
9,110,124,206,227,321,398,521,583,679,725,877,892,946,1011,1150,1199,1381,1412,1443,1573,1590,1649,1759,1769,1816,1818,1821,1823,1885,1914,1917,
8,102,112,178,235,293,382,415,497,506,581,640,686,727,823,836,890,947,1003,1027,1078,1144,1181,1373,1468,1520,1546,1592,1642,1681,1762,1870,
7,97,157,222,263,283,359,446,451,512,595,619,709,751,828,865,925,982,1031,1098,1126,1167,1184,1256,1301,1423,1571,1586,1613,1716,1809,1871,
6,80,115,209,276,323,342,443,501,533,588,636,707,733,813,844,906,974,1104,1112,1133,1170,1258,1292,1338,1436,1505,1604,1626,1685,1702,1798,
5,87,136,174,402,448,531,564,663,684,815,909,1030,1156,1200,1244,1312,1387,1462,1536,1623,1667,1732,1861,1876,1878,1887,1890,1942,1944,2016,2026,
4,107,145,202,230,302,366,395,494,510,574,649,719,752,785,879,893,996,1025,1091,1154,1318,1470,1521,1537,1637,1665,1745,1748,1923,1932,1940,
140,199,251,311,336,426,475,547,568,669,726,821,876,926,1008,1063,1131,1241,1280,1392,1438,1503,1597,1674,1703,1741,1930,1946,1966,1979,2018,2024,
3,86,146,214,265,307,384,437,458,550,571,664,710,740,779,839,889,995,1015,1097,1177,1268,1304,1370,1420,1427,1481,1513,1715,1730,1742,1872,
2,65,135,261,312,369,430,470,534,561,653,685,786,861,917,990,1036,1202,1219,1253,1417,1506,1527,1694,1819,1828,1860,1879,1909,1937,1957,1967,
1,68,160,225,301,387,434,480,511,596,617,706,747,814,862,902,971,1034,1064,1157,1193,1221,1310,1344,1466,1523,1660,1750,1760,1804,1899,1913,
0,108,167,246,326,348,452,530,580,645,770,827,838,927,979,1090,1132,1182,1270,1322,1342,1425,1446,1482,1645,1655,1698,1729,1925,1969,2021,2027,
150,188,247,356,403,496,642,728,886,919,1001,1050,1103,1278,1376,1400,1489,1528,1596,1710,1723,1814,1830,1881,1919,1953,1973,1983,2022,2034,2038,2044,
191,278,316,352,442,483,543,602,656,687,781,848,907,1053,1123,1357,1389,1411,1461,1556,1648,1651,1717,1749,1836,1853,1907,1926,1928,1938,1958,1968,
78,119,183,271,318,357,399,499,513,575,651,678,743,802,853,924,977,1037,1111,1172,1249,1317,1359,1404,1447,1457,1488,1511,1675,1714,1722,1799,
61,158,234,288,347,560,563,625,720,764,816,898,956,1014,1080,1134,1186,1220,1246,1293,1345,1408,1501,1569,1664,1721,1727,1754,1961,2014,2035,2039,
88,238,324,372,472,548,604,634,683,765,812,852,895,959,1092,1125,1179,1261,1325,1332,1377,1397,1719,1775,1811,1839,1939,1952,1960,1999,2001,2012,
120,210,279,379,425,467,566,742,846,911,1002,1006,1059,1210,1295,1341,1540,1566,1598,1634,1720,1805,1837,1877,1935,1976,1980,2005,2008,2036,2037,2045,
52,66,151,221,237,289,361,411,473,539,585,631,711,734,797,883,904,978,1046,1106,1130,1231,1305,1368,1416,1475,1485,1515,1595,1661,1695,1800,
53,126,196,295,338,439,454,531,577,637,707,759,792,856,890,1034,1070,1154,1342,1413,1453,1484,1572,1579,1662,1725,1741,1761,1816,1836,1856,1895,
51,65,150,220,236,288,360,410,472,538,584,630,733,882,903,977,1045,1105,1217,1230,1304,1367,1474,1558,1594,1660,1759,1831,1929,1992,2003,2013,
50,84,165,231,316,362,427,462,535,592,623,749,797,834,932,998,1015,1060,1075,1161,1302,1353,1463,1492,1537,1756,1813,1868,1878,1911,1953,1969,
56,136,184,268,330,390,392,484,552,588,656,717,754,828,967,1007,1076,1158,1221,1234,1319,1546,1573,1583,1631,1701,1783,1832,1833,1846,1860,1896,
49,109,113,223,273,302,369,400,490,544,593,640,693,821,855,936,951,1050,1104,1116,1169,1206,1237,1288,1369,1411,1427,1499,1614,1653,1704,1801,
48,70,137,185,242,284,382,395,476,518,583,653,704,753,784,832,940,979,1012,1097,1186,1227,1289,1357,1398,1436,1462,1512,1554,1617,1718,1802,
47,62,203,241,304,527,606,663,697,722,748,788,867,969,1041,1061,1140,1170,1261,1318,1374,1485,1548,1569,1671,1764,1827,1909,1922,1926,1972,1981,
46,94,148,211,272,318,361,446,502,521,612,634,701,777,870,911,956,1038,1066,1151,1182,1244,1310,1349,1401,1456,1479,1500,1632,1699,1730,1873,
45,103,168,314,377,413,483,524,597,690,737,787,857,893,975,1055,1144,1328,1346,1421,1439,1486,1491,1509,1672,1688,1742,1796,1814,1936,1946,1957,
44,97,131,212,255,280,348,420,494,516,599,665,671,760,782,833,907,947,1047,1065,1148,1268,1278,1361,1515,1530,1538,1560,1607,1626,1667,1803,
43,101,132,202,243,385,404,503,553,569,626,710,758,819,917,944,1022,1138,1208,1240,1384,1425,1483,1508,1532,1684,1747,1795,1823,1865,1867,1897,
42,92,167,172,350,406,534,604,646,720,736,826,879,943,961,1031,1117,1194,1229,1428,1449,1477,1529,1533,1634,1650,1706,1753,1862,1963,1991,1993,
41,71,158,179,240,363,431,489,548,561,772,793,865,931,953,1025,1157,1211,1271,1326,1338,1389,1420,1600,1627,1676,1724,1782,1885,1925,2022,2029,
108,117,215,265,324,359,411,651,774,835,920,986,1071,1175,1232,1308,1429,1448,1458,1551,1615,1726,1776,1810,1820,1888,1961,1980,2018,2019,2020,2034,
40,66,217,286,380,497,528,598,654,692,761,824,881,934,996,1020,1069,1123,1184,1250,1314,1336,1394,1443,1630,1712,1755,1852,1913,1997,2021,2026,
39,78,170,189,274,291,343,432,465,517,611,645,679,804,868,899,990,1056,1099,1152,1179,1258,1276,1285,1382,1441,1541,1578,1682,1845,1872,1898,
38,104,121,267,332,344,405,477,506,585,695,757,806,831,909,993,1037,1082,1139,1185,1329,1362,1471,1543,1605,1651,1692,1740,1850,1935,1951,1970,
37,93,115,183,253,290,379,419,475,519,564,714,728,794,862,904,983,1051,1085,1126,1259,1345,1405,1432,1454,1590,1620,1656,1705,1927,1947,1958,
36,80,155,190,370,492,540,587,658,669,825,859,962,1006,1072,1142,1197,1249,1434,1452,1549,1613,1677,1717,1732,1770,1797,1819,1822,1870,1933,1941,
35,96,163,216,247,322,389,426,459,550,600,660,718,738,791,873,898,1002,1032,1100,1163,1203,1274,1281,1299,1368,1397,1563,1580,1640,1649,1804,
34,58,127,178,245,334,393,460,545,596,629,670,730,816,922,957,1021,1112,1188,1339,1406,1489,1524,1606,1693,1765,1788,1828,1887,1974,1978,1982,
33,68,125,204,258,296,491,551,614,666,842,928,968,1008,1092,1165,1190,1263,1313,1475,1496,1542,1577,1727,1767,1824,1864,1879,1943,1976,1977,1983,
32,63,161,251,294,403,539,581,624,681,735,853,913,997,1024,1115,1214,1265,1284,1370,1455,1564,1598,1647,1711,1769,1773,1798,1815,1840,1853,1899,
31,69,140,206,228,327,387,422,501,508,582,688,765,818,846,985,1043,1101,1162,1195,1235,1282,1305,1433,1535,1637,1678,1691,1799,1825,1841,1900,
30,57,143,218,238,307,367,443,449,514,613,659,673,763,805,850,938,971,1053,1094,1129,1207,1272,1293,1351,1400,1451,1459,1470,1621,1675,1805,
29,83,128,232,309,375,444,505,554,605,674,776,823,839,921,988,1048,1083,1135,1222,1228,1315,1359,1385,1423,1493,1737,1835,1966,1994,2004,2014,
28,89,162,181,235,297,339,421,448,556,568,647,699,770,798,874,949,1054,1059,1098,1119,1189,1236,1307,1355,1457,1544,1616,1665,1746,1789,1874,
27,73,124,199,225,328,337,412,499,523,572,625,680,745,796,858,939,959,1042,1077,1121,1202,1264,1297,1330,1360,1387,1540,1604,1666,1710,1806,
26,75,152,200,259,293,373,430,481,507,616,649,691,755,809,869,914,954,1011,1074,1146,1176,1224,1312,1350,1490,1523,1584,1696,1752,1908,1918,
25,99,180,244,319,352,435,487,571,661,700,802,880,927,960,1017,1113,1127,1210,1251,1290,1373,1417,1431,1582,1639,1683,1728,1818,1842,1863,1901,
24,81,164,171,254,303,447,455,566,657,752,854,900,948,1058,1080,1177,1231,1280,1287,1379,1418,1473,1592,1655,1700,1839,1942,1964,1987,2043,2047,
23,154,188,266,329,340,434,453,555,622,687,743,789,830,841,933,974,1004,1109,1147,1191,1253,1301,1395,1642,1658,1703,1869,1883,1996,2012,2027,
22,100,141,192,239,321,374,428,485,513,609,642,715,723,783,883,902,1027,1067,1120,1187,1266,1295,1333,1365,1550,1610,1687,1754,1784,1843,1902,
21,74,160,224,227,336,409,467,541,643,694,762,786,844,915,1009,1134,1205,1262,1323,1404,1472,1576,1618,1780,1791,1871,1881,1890,1894,2011,2028,
20,88,133,191,326,364,417,470,576,621,773,864,912,965,1064,1108,1172,1226,1371,1409,1440,1478,1531,1707,1738,1817,1877,1892,1921,1973,2002,2015,
19,59,130,186,230,300,349,456,543,667,675,729,810,871,930,1028,1106,1141,1173,1246,1327,1383,1482,1552,1557,1619,1681,1847,1990,2000,2001,2016,
18,95,146,222,299,376,438,486,557,589,672,756,795,895,972,1088,1204,1247,1408,1464,1495,1504,1511,1528,1567,1609,1736,1794,1893,1931,2005,2006,
17,61,138,176,256,312,366,415,452,632,872,896,984,1016,1073,1196,1225,1320,1364,1402,1444,1575,1593,1760,1792,1830,1876,1962,1975,2025,2032,2041,
16,76,112,252,305,353,396,478,515,578,668,711,731,817,863,929,992,1044,1084,1118,1213,1273,1378,1447,1566,1581,1733,1812,1866,1932,1944,1959,
15,72,122,195,257,283,372,399,464,536,608,631,712,747,790,886,964,1023,1093,1137,1216,1286,1352,1561,1591,1623,1685,1743,1771,1834,1920,1924,
14,91,116,174,248,292,345,440,488,537,575,627,689,767,779,836,937,980,1046,1068,1159,1168,1239,1298,1414,1438,1519,1534,1599,1625,1698,1807,
13,54,120,207,271,285,342,391,416,480,601,664,775,876,942,950,1005,1160,1215,1306,1354,1412,1468,1487,1506,1525,1645,1774,1811,1915,2007,2009,
12,55,169,210,276,289,357,468,586,619,698,771,781,877,987,1057,1095,1136,1164,1212,1238,1283,1366,1392,1466,1502,1663,1731,1739,1829,1995,1999,
90,147,197,261,281,407,522,610,638,703,848,941,952,1019,1111,1128,1193,1223,1233,1322,1363,1571,1601,1638,1686,1785,1821,1858,1889,1945,1956,1965,
11,82,129,175,263,313,384,461,526,602,636,766,807,884,935,966,1039,1078,1145,1200,1270,1309,1381,1450,1498,1646,1661,1763,1786,1967,2035,2042,
10,98,142,194,234,298,418,458,590,617,702,734,803,840,919,963,1040,1086,1150,1325,1347,1390,1415,1497,1517,1521,1556,1586,1624,1679,1768,1875,
9,102,153,219,269,308,388,473,525,607,652,696,740,808,849,926,982,1018,1081,1242,1277,1292,1348,1514,1635,1668,1690,1744,1748,1986,2031,2039,
8,110,123,205,226,320,333,397,466,520,678,799,891,945,1010,1087,1149,1241,1300,1380,1494,1589,1611,1694,1734,1735,1749,1800,1857,1919,1934,1950,
7,177,381,414,496,560,580,639,685,726,822,889,946,1026,1143,1180,1296,1372,1467,1545,1641,1714,1787,1837,1859,1907,1916,1940,1952,1989,2040,2046,
6,156,221,262,358,445,450,511,594,618,708,750,827,924,981,1030,1125,1166,1183,1255,1335,1422,1570,1585,1612,1670,1715,1917,1998,2008,2017,2030,
5,114,208,275,341,442,500,532,635,706,732,812,843,905,973,1103,1110,1132,1257,1291,1393,1435,1505,1518,1603,1745,1757,1778,1826,1910,2033,2036,
4,135,173,249,354,401,504,530,563,662,683,744,814,866,908,991,1029,1155,1167,1199,1243,1311,1386,1461,1536,1547,1622,1689,1766,1988,2038,2045,
106,144,201,229,301,365,394,493,573,648,751,878,887,892,995,1090,1317,1337,1469,1516,1520,1595,1664,1772,1793,1937,1985,2010,2023,2024,2037,2044,
3,139,250,310,335,425,474,546,567,620,721,725,820,875,925,1062,1130,1192,1279,1303,1391,1437,1503,1596,1608,1673,1702,1884,1906,1938,1949,1960,
2,85,145,213,264,306,383,436,457,549,570,709,739,778,838,888,994,1014,1096,1267,1332,1419,1426,1480,1669,1762,1790,1844,1891,1930,1955,1968,
1,64,134,260,311,368,429,469,533,615,684,768,785,860,916,989,1035,1107,1114,1201,1218,1252,1377,1416,1442,1526,1602,1636,1652,1848,1854,1903,
0,67,159,278,386,433,479,510,595,705,746,813,861,901,970,1063,1156,1220,1334,1343,1465,1522,1539,1629,1659,1838,1886,1912,1939,1948,1954,1971,
107,166,193,325,347,423,451,529,579,644,676,769,837,978,1013,1131,1181,1269,1321,1341,1424,1445,1481,1574,1644,1654,1697,1723,1758,1851,1861,1904,
86,149,187,246,331,355,402,495,558,591,641,716,727,800,885,918,1000,1049,1102,1153,1198,1256,1375,1399,1430,1488,1527,1553,1657,1709,1923,1928,
105,151,277,315,351,441,482,542,655,686,724,780,847,906,999,1052,1079,1122,1174,1275,1356,1388,1410,1460,1555,1648,1716,1722,1777,1880,1979,1984,
77,118,182,270,317,356,398,498,512,574,650,677,742,801,852,923,976,1036,1171,1248,1316,1358,1403,1446,1507,1510,1559,1587,1674,1713,1721,1808,
60,157,214,233,287,346,408,463,559,562,719,815,897,955,1133,1219,1245,1344,1407,1476,1501,1568,1643,1695,1719,1729,1751,1779,1781,1849,1855,1905,
87,111,198,237,323,371,437,471,547,603,633,682,764,811,851,894,958,1033,1091,1124,1178,1260,1324,1331,1376,1396,1562,1588,1628,1708,1720,1809,
52,79,119,209,279,282,378,424,509,565,628,713,741,829,845,910,1001,1003,1089,1209,1254,1294,1340,1513,1565,1597,1633,1680,1750,1775,1882,1914.

Claims (10)

1.一种使用GRS码构建LDPC码的方法,所述方法包括:
第一步,选择一组地址,包括:
(a)多个元素,其中每个元素可以由升到对应指数次幂的伽罗瓦域中的一个素元生成,其中所述伽罗瓦域包括预定的有限个元素;
(b)第一度为1的多项式函数,用于将所述地址组的每个元素映射到对应的非零值;
(c)第二度为1的多项式函数,为所述第一度为1的多项式函数的非线性纯量倍数;
第二步,从所述伽罗瓦域中选择多个非零元素;
第三步,取编码字,包括:
(d)从多个可能的编码字向量值中识别GRS码的第一编码字向量,其中所述第一编码字向量可使用所述多个非零元素并依据所述第一度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
(e)从所述多个可能的编码字向量值中识别所述GRS码的第二编码字向量,其中所述第二编码字向量可使用所述多个非零元素并依据所述第二度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
(f)将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘,从而生成多个调整后第一编码字向量;
(g)将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘,从而生成多个调整后第二编码字向量;
第四步,得到可能的陪集,包括:
(h)将所述每个调整后第一编码字向量与所述每个调整后第二编码字向量相加以生成多个陪集;
(i)生成多个置换矩阵,其中每个所述置换矩阵包括多个行,每行包括有所述多个陪集中一个陪集的地址映射;
(j)将所述多个置换矩阵中的每个置换矩阵排列为子矩阵,从而生成对应所述LDPC码的LDPC奇偶校验矩阵。
2.根据权利要求1所述的方法,其特征在于:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述多个陪集包括2s个陪集;
所述多个置换矩阵中每个置换矩阵是2s×2s的置换矩阵。
3.根据权利要求1所述的方法,其特征在于:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;且
ρ小于或等于2s
4.根据权利要求1所述的方法,其特征在于:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述LDPC奇偶校验矩阵的位节点的度为γ,且校验节点的度为ρ;
所述LDPC奇偶校验矩阵的每列的权重为γ;
所述LDPC奇偶校验矩阵的每行的权重为ρ;
且ρ小于或等于2s
5.根据权利要求1所述的方法,其特征在于:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述LDPC奇偶校验矩阵为384×2048的矩阵;
所述LDPC码为(2048,1723)规则LDPC码,其编码率接近0.8413;
且所述LDPC码的最小码间据大于或等于8。
6.一种利用GRS码构建LDPC码的方法,所述方法包括:
从多个可能的编码字向量值中识别GRS码的第一编码字向量;
从多个可能的编码字向量值中识别所述GRS码的第二编码字向量;
将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘,从而生成多个调整后第一编码字向量;
将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘,从而生成多个调整后第二编码字向量;
将所述每个调整后第一编码字向量与所述每个调整后第二编码字向量相加以生成多个陪集;
生成多个置换矩阵,其中每个所述置换矩阵包括多个行,每行包括有所述多个陪集中一个陪集的地址映射;
将所述多个置换矩阵中的每个置换矩阵排列为子矩阵,从而生成对应所述LDPC码的LDPC奇偶校验矩阵。
7.根据权利要求6所述的方法,其特征在于,所述方法进一步包括:
选择一组地址,包括:
多个元素,其中每个元素可以由升到对应指数次幂的伽罗瓦域中的一个素元生成,其中所述伽罗瓦域包括预定的有限个元素;
第一度为1的多项式函数,用于将所述地址组的每个元素映射到对应的非零值;
第二度为1的多项式函数,为所述第一度为1的多项式函数的非线性纯量倍数;
从所述伽罗瓦域中选择多个非零元素;其中所述第一编码字向量可使用所述多个非零元素并依据所述第一度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
所述第二编码字向量可使用所述多个非零元素并依据所述第二度为1的多项式函数对所述地址组中的每个元素进行映射来生成。
8.一种利用GRS码构建LDPC码的装置,所述装置包括:
编码字向量识别模块,用于:
从多个可能的编码字向量值中识别GRS码的第一编码字向量;
从多个可能的编码字向量值中识别所述GRS码的第二编码字向量;陪集生成模块,用于:
将所述第一编码字向量与第一多个比例因子中的每个比例因子相乘,以生成多个调整后第一编码字向量;
将所述第二编码字向量与第二多个比例因子中的每个比例因子相乘,以生成多个调整后第二编码字向量;
将所述每个调整后第一编码字向量与所述每个调整后第二编码字向量相加以生成多个陪集;
生成多个置换矩阵,其中每个所述置换矩阵包括多个行,每行包括有所述多个陪集中一个陪集的地址映射;
将所述多个置换矩阵中的每个置换矩阵排列为子矩阵,从而生成对应所述LDPC码的LDPC奇偶校验矩阵。
9.根据权利要求8所述的装置,其特征在于,所述装置进一步包括:
地址组选择模块,包括:
多个元素,其中每个元素可以由升到对应指数次幂的伽罗瓦域中的一个素元生成,其中所述伽罗瓦域包括预定的有限个元素;
第一度为1的多项式函数,用于将所述地址组的每个元素映射到对应的非零值;
第二度为1的多项式函数,为所述第一度为1的多项式函数的非线性纯量倍数;
非零元素选择模块,用于从所述伽罗瓦域中选择多个非零元素;
所述第一编码字向量可使用所述多个非零元素并依据所述第一度为1的多项式函数对所述地址组中的每个元素进行映射来生成;
所述第二编码字向量可使用所述多个非零元素并依据所述第二度为1的多项式函数对所述地址组中的每个元素进行映射来生成。
10.根据权利要求8所述的装置,其特征在于:
所述伽罗瓦域中预定的有限个元素包括2s个元素,其中s为整数;
所述多个陪集包括2s个陪集;
所述多个置换矩阵中每个置换矩阵是2s×2s的置换矩阵;
所述LDPC奇偶校验矩阵包括排列为子矩阵的γ×ρ个置换矩阵,其中γ和ρ为整数;
所述LDPC奇偶校验矩阵的位节点的度为γ,且校验节点的度为ρ;
所述LDPC奇偶校验矩阵的每列的权重为γ;
所述LDPC奇偶校验矩阵的每行的权重为ρ;
且ρ小于或等于2s
CN2006100025983A 2005-01-10 2006-01-10 使用grs码构建ldpc码的方法和装置 Expired - Fee Related CN1933336B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US64268905P 2005-01-10 2005-01-10
US60/642,689 2005-01-10
US11/190,333 US7536629B2 (en) 2005-01-10 2005-07-27 Construction of LDPC (Low Density Parity Check) codes using GRS (Generalized Reed-Solomon) code
US11/190,333 2005-07-27

Publications (2)

Publication Number Publication Date
CN1933336A CN1933336A (zh) 2007-03-21
CN1933336B true CN1933336B (zh) 2010-09-08

Family

ID=36867177

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB2006100052779A Expired - Fee Related CN100490334C (zh) 2005-01-10 2006-01-06 构建和选择基于grs不规则ldpc码的方法
CN2006100025983A Expired - Fee Related CN1933336B (zh) 2005-01-10 2006-01-10 使用grs码构建ldpc码的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNB2006100052779A Expired - Fee Related CN100490334C (zh) 2005-01-10 2006-01-06 构建和选择基于grs不规则ldpc码的方法

Country Status (2)

Country Link
CN (2) CN100490334C (zh)
TW (1) TW200705826A (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644339B2 (en) * 2006-10-02 2010-01-05 Broadcom Corporation Overlapping sub-matrix based LDPC (low density parity check) decoder
US8464120B2 (en) * 2006-10-18 2013-06-11 Panasonic Corporation Method and system for data transmission in a multiple input multiple output (MIMO) system including unbalanced lifting of a parity check matrix prior to encoding input data streams
US7958429B2 (en) * 2007-07-02 2011-06-07 Broadcom Corporation Distributed processing LDPC (low density parity check) decoder
EA021906B1 (ru) * 2007-11-26 2015-09-30 Сони Корпорейшн Устройство и способ передачи данных
US8918696B2 (en) * 2010-04-09 2014-12-23 Sk Hynix Memory Solutions Inc. Implementation of LDPC selective decoding scheduling
CN102386996B (zh) * 2010-09-01 2015-11-25 国家广播电影电视总局广播科学研究院 一种卫星双向通信中物理层数据传输方法和装置
CN106788454B (zh) * 2016-11-29 2020-04-24 陕西尚品信息科技有限公司 一种局部性不相等码的构造方法
CN110830047B (zh) * 2019-08-07 2020-08-04 湖南国科锐承电子科技有限公司 生成准循环低密度奇偶校验码的方法和***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1405981A (zh) * 2002-11-15 2003-03-26 清华大学 改进的非规则低密度奇偶校验码纠错译码方法
CN1508972A (zh) * 2002-12-13 2004-06-30 清华大学 基于低密度奇偶检验编码的信源信道联合编码方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1405981A (zh) * 2002-11-15 2003-03-26 清华大学 改进的非规则低密度奇偶校验码纠错译码方法
CN1508972A (zh) * 2002-12-13 2004-06-30 清华大学 基于低密度奇偶检验编码的信源信道联合编码方法

Also Published As

Publication number Publication date
CN100490334C (zh) 2009-05-20
TW200705826A (en) 2007-02-01
CN1933336A (zh) 2007-03-21
CN1805292A (zh) 2006-07-19

Similar Documents

Publication Publication Date Title
CN1593012B (zh) 一种用于通信***中编码信号的装置和方法
CN1933336B (zh) 使用grs码构建ldpc码的方法和装置
CN1866751B (zh) 一种低密度奇偶校验码的构造方法及装置
US7536629B2 (en) Construction of LDPC (Low Density Parity Check) codes using GRS (Generalized Reed-Solomon) code
Sartipi et al. Source and channel coding in wireless sensor networks using LDPC codes
CN101459430B (zh) 低密度生成矩阵码的编码方法及装置
US7515642B2 (en) LDPC (Low Density Parity Check) coded 128 DSQ (Double Square QAM) constellation modulation and associated labeling
US8689092B2 (en) Family of LDPC codes for video broadcasting applications
US20110164705A1 (en) Bit mapping scheme for an ldpc coded 32apsk system
RU2537806C2 (ru) Устройство и способ для генерирования матрицы проверки четности в системе связи с использованием линейных блочных кодов и устройство передачи/приема и способ для использования этого
KR20040010116A (ko) 저밀도 패리티 검사 코드 생성 방법 및 시스템
JP2004064757A (ja) 低密度のパリティチェックコードを使用する衛星通信システム
JPWO2009004773A1 (ja) 検査行列生成装置、検査行列生成方法、符号化器、送信装置、復号器及び受信装置
CN102714504A (zh) 在通信***中传送和接收数据的方法和装置
EP2306653A1 (en) Check matrix creation device, check matrix creation method, check matrix creation program, transmission device, reception device, and communication system
US7549105B2 (en) Construction of irregular LDPC (low density parity check) codes using RS (Reed-Solomon) codes or GRS (generalized Reed-Solomon) code
CN105991227A (zh) 数据编码方法及装置
CN101997645B (zh) 用于单载波和/或正交频分复用的报头编码装置和方法
CN108352918B (zh) 接收器、多个发射器、从多个发射器接收用户数据的方法以及发送用户数据的方法
Venugopal et al. A survey on channel coding in wireless networks
Zhou et al. Design of nonbinary rate-compatible LDPC codes utilizing bit-wise shortening method
US7559010B2 (en) Short length LDPC (Low Density Parity Check) code and modulation adapted for high speed Ethernet applications
KR101145673B1 (ko) 특정 구조를 가지는 lt코드를 이용한 부호화 방법 및 이를 기반으로 하는 랩터 코드를 이용한 부호화 방법
CN101471743A (zh) 低密度生成矩阵码的编码方法
Wen et al. Design of concatenation of fountain and non-binary LDPC codes for satellite communications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180511

Address after: Singapore Singapore

Patentee after: Avago Technologies Fiber IP Singapore Pte. Ltd.

Address before: california

Patentee before: Zyray Wireless Inc.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100908

Termination date: 20180110

CF01 Termination of patent right due to non-payment of annual fee