WO2022048431A1 - Coding method and device - Google Patents

Coding method and device Download PDF

Info

Publication number
WO2022048431A1
WO2022048431A1 PCT/CN2021/112747 CN2021112747W WO2022048431A1 WO 2022048431 A1 WO2022048431 A1 WO 2022048431A1 CN 2021112747 W CN2021112747 W CN 2021112747W WO 2022048431 A1 WO2022048431 A1 WO 2022048431A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
bits
bch
sequence
row
Prior art date
Application number
PCT/CN2021/112747
Other languages
French (fr)
Chinese (zh)
Inventor
张华滋
王献斌
童佳杰
戴胜辰
李榕
王俊
Original Assignee
华为技术有限公司
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
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2022048431A1 publication Critical patent/WO2022048431A1/en
Priority to US18/176,217 priority Critical patent/US20230308117A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M13/00Party-line systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/033Theoretical methods to calculate these checking codes

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

A coding method and device, for use in providing a BCH code construction and coding solution for making a code length and code rate of an obtained BCH code relatively flexible so as to satisfy requirements of flexible channel coding of wireless communication. The method comprises: determining a first coding parameter according to a first BCH code, the first BCH code being a BCH code to be coded, the first coding parameter being a first code or a generation matrix of the first code, the first code having a code length of n and an information bit length of k, n being greater than 0, and k being greater than 0; and performing BCH code coding on the basis of the first coding parameter. Thus, the code length and code rate of the obtained BCH code are relatively flexible, so as to satisfy the requirements of flexible channel coding of wireless communication.

Description

一种编码方法及装置A coding method and device
相关申请的交叉引用CROSS-REFERENCE TO RELATED APPLICATIONS
本申请要求在2020年09月01日提交中国国家知识产权局、申请号为202010903282.1、申请名称为“一种编码方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。This application claims the priority of the Chinese patent application with the application number 202010903282.1 and the application title "An encoding method and device" filed with the State Intellectual Property Office of China on September 1, 2020, the entire contents of which are incorporated herein by reference middle.
技术领域technical field
本申请涉及通信技术领域,尤其涉及一种编码方法及装置。The present application relates to the field of communication technologies, and in particular, to an encoding method and apparatus.
背景技术Background technique
博斯乔赫里霍克文黑姆码(Bose–Chaudhuri–Hocquenghem codes,BCH码)是一种重要的线性分组码,是少数可以通过代数结构保证所构造的码的码距的纠错码之一。在中/高码率时,其最小码距在很多情况下为当前码长码率下已知纠错码最小码距的上限。因为码距是纠错码的一大关键性能指标,因此BCH码在工程中有广泛的应用。Bose–Chaudhuri–Hocquenghem codes (BCH codes) are an important linear block code and one of the few error correction codes that can guarantee the code distance of the constructed codes through algebraic structures . At medium/high code rates, the minimum code distance is in many cases the upper limit of the minimum code distance of known error correction codes under the code rate of the current code length. Because code distance is a key performance indicator of error correction codes, BCH codes are widely used in engineering.
随着译码算法和硬件能力的提升,BCH码在下一代无线通信中的应用范围可能越来越广。然而,当前BCH码所支持的码长和码率有限,可能无法支持无线通信中短包的码长码率灵活调度的需求。With the improvement of decoding algorithms and hardware capabilities, the application range of BCH codes in next-generation wireless communications may become wider and wider. However, the code length and code rate supported by the current BCH codes are limited, and may not be able to support the requirement of flexible scheduling of code length and code rate of short packets in wireless communication.
发明内容SUMMARY OF THE INVENTION
本申请提供一种编码方法及装置,用以提出一种BCH码的构造和编码方案,以使得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。The present application provides a coding method and device for proposing a structure and coding scheme of a BCH code, so as to make the code length and code rate of the obtained BCH code more flexible, so as to be suitable for the requirements of flexible channel coding in wireless communication .
第一方面,本申请提供了一种编码方法,该方法可以包括:根据第一BCH码确定第一编码参数,并基于所述第一编码参数进行BCH码编码;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0。通过上述方法可以使得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。In a first aspect, the present application provides an encoding method, the method may include: determining a first encoding parameter according to a first BCH code, and performing BCH code encoding based on the first encoding parameter; the first BCH code is to be The encoded BCH code; the first encoding parameter is the first code or the generator matrix of the first code; the code length of the first code is n, and the information bit length is k; the n is greater than 0, the k Greater than 0. Through the above method, the code length and code rate of the obtained BCH code can be made more flexible, so as to be suitable for the requirement of flexible channel coding of wireless communication.
在一种可能的设计中,根据第一BCH码确定第一编码参数,具体方法可以为:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。In a possible design, the first encoding parameter is determined according to the first BCH code, and the specific method may be: determining the generation matrix of the first BCH code; according to the generation matrix and puncturing sequence of the first BCH code, The first encoding parameter is determined, and the elements included in the puncturing sequence are the column numbers in the generator matrix of the first BCH code. In this way, the first encoding parameter can be accurately obtained so that subsequent encoding can be performed accurately, and the implementation complexity is low.
在一种可能的设计中,根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,具体方法可以为:取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。In a possible design, the first encoding parameter is determined according to the generator matrix and puncturing sequence of the first BCH code, and the specific method may be: taking the last k rows of the generator matrix of the first BCH code , obtain a first matrix; according to the punching sequence, sequentially punch the positions corresponding to the elements in the punching sequence in the first matrix to obtain the first encoding parameter, the first encoding parameter is a matrix with k rows and n columns. In this way, the first encoding parameter can be accurately obtained so that subsequent encoding can be performed accurately, and the implementation complexity is low.
在一种可能的设计中,所述第一码的码率k/n可以小于或者等于码率阈值。这样可以使得在这种情况下选择通过打孔的方法得到所述第一编码参数最优。In a possible design, the code rate k/n of the first code may be less than or equal to a code rate threshold. In this way, it is optimal to select the method of puncturing to obtain the first encoding parameter in this case.
在一种可能的设计中,根据第一BCH码确定第一编码参数,具体方法可以为:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。In a possible design, the first encoding parameter is determined according to the first BCH code, and the specific method may be: determining the generator matrix of the first BCH code; determining the generator matrix and shortening sequence of the first BCH code For the first encoding parameter, the elements included in the shortened sequence are the column numbers in the generator matrix of the first BCH code. In this way, the first encoding parameter can be accurately obtained so that subsequent encoding can be performed accurately, and the implementation complexity is low.
在一种可能的设计中,根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,具体方法可以为:根据所述缩短序列,依次在所述生成矩阵中对所述缩短序列中的元素对应的位置置零,得到第二矩阵;从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。这样可以准确得到所述第一编码参数以使后续准确进行编码,并且实现复杂度较低。In a possible design, the first encoding parameter is determined according to the generator matrix and the shortening sequence of the first BCH code. The position corresponding to the element in the shortened sequence is set to zero to obtain a second matrix; start from the last row of the second matrix, and skip the row where the corresponding position of the element in the shortened sequence exists 1, until k rows are selected So far, the first encoding parameter is obtained, and the first encoding parameter is a matrix including k rows and n columns. In this way, the first encoding parameter can be accurately obtained so that subsequent encoding can be performed accurately, and the implementation complexity is low.
在一种可能的设计中,所述一码的码率k/n可以大于或者等于码率阈值。这样可以在这种情况下使得选择通过缩短的方法得到所述第一编码参数最优。In a possible design, the code rate k/n of the one code may be greater than or equal to the code rate threshold. In this way, the selection of the first encoding parameter obtained by the shortening method can be optimized in this case.
在一种可能的设计中,所述码率阈值可以为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16中的任意一个。In a possible design, the code rate threshold may be 1/4, 1/2, 3/4, 1/3, 2/3, 1/8, 3/8, 5/8, 7/8 , 1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16, or 15/16.
在一种可能的设计中,确定所述第一BCH码的生成矩阵,具体方法可以为:根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。多项式是数学上一个公知的名词术语:在数学中,由若干个单项式相加组成的代数式叫做多项式,由数或字母的积组成的代数式叫做单项式,单独的一个数或一个字母也叫做单项式;这里任一个g表示一个多项式。这样可以准确得到所述第一BCH码的生成矩阵,以使后续得到准确的第一编码参数。In a possible design, determining the generator matrix of the first BCH code, the specific method may be: determining the generator matrix of the first BCH code according to the generator polynomial group of the first BCH code, the first BCH code The generator polynomial group of the BCH code includes the following polynomials: g1, g2, g3, ..., gx, x are integers greater than or equal to 1. Polynomial is a well-known term in mathematics: in mathematics, an algebraic formula composed of the addition of several monomials is called a polynomial, an algebraic formula composed of a product of numbers or letters is called a monomial, and a single number or a letter is also called a monomial; here Any g represents a polynomial. In this way, the generator matrix of the first BCH code can be obtained accurately, so that accurate first coding parameters can be obtained subsequently.
在一种可能的设计中,根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,具体方法可以为:分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。这样可以准确得到所述第一BCH码的生成矩阵,以使后续得到准确的第一编码参数。In a possible design, the generator matrix of the first BCH code is determined according to the generator polynomial group of the first BCH code, and the specific method may be: based on each of the generator polynomial groups of the first BCH code respectively A row vector corresponding to a polynomial and a row vector obtained by shifting the row vector to the right determine the generator matrix of the first BCH code; the length of the row vector corresponding to each row of the generator matrix of the first BCH code is equal to the length of the row vector. The code length of the mother code of the first BCH code, and the number of rows is equal to the code length of the mother code; wherein, the first row is the row vector corresponding to the polynomial g1, and the second row, ... and the k1-k2 row are respectively corresponding to the first row The row vector of 1 is shifted to the right by 1 bit, ..., the row vector obtained by right shifting k1-k2-1 bits; ...; the row vector corresponding to the N-ki+1th row polynomial gi, the N-ki+2th row, … ..., row N-kj row vector corresponding to row N-ki+1 is shifted to the right by 1 bit, ..., row vector obtained by shifting ki-kj-1 bit to the right; ...; row N-kx+1 is a polynomial The row vector corresponding to gx, the row vector corresponding to the N-kx+2 row is shifted to the right by 1 bit, ..., kx-1 bit; where k1 is the row vector corresponding to g1 Information bit length, k2 is the information bit length corresponding to g2, ki is the information bit length corresponding to gi, kj is the information bit length corresponding to gj, kx is the information bit length corresponding to gx, j=i+1, N is the The length of the mother code. In this way, the generator matrix of the first BCH code can be obtained accurately, so that accurate first coding parameters can be obtained subsequently.
在一种可能的设计中,所述第一编码参数为所述第一码时,根据第一BCH码确定第一编码参数,具体方法可以为:在所述第一BCH码的生成多项式组中确定目标多项式gi;根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;根据所述第二码确定所述第一码。这样可以准确得到所述第一码,以使后续准确进行编码;其中,所述gi是所述生成多项式组包括的多项式g1,g2,g3,……,gx中的一个,x为大于或者等于1的整数。In a possible design, when the first encoding parameter is the first code, the first encoding parameter is determined according to the first BCH code, and the specific method may be: in the generator polynomial group of the first BCH code Determine the target polynomial gi; determine the second code according to the gi, the code length of the second code is N, the length of the information bit is ki, the N is the code length of the mother code of the first BCH code, and the ki is the information bit length corresponding to the gi; the first code is determined according to the second code. In this way, the first code can be accurately obtained, so that subsequent coding can be performed accurately; wherein, the gi is one of the polynomials g1, g2, g3, ..., gx included in the generator polynomial group, and x is greater than or equal to An integer of 1.
在一种可能的设计中,根据所述第二码确定所述第一码,具体方法可以为:对所述第二码缩短,得到第三码;当所述第三码的码率小于k/n时,对所述第三码打孔,得到所述第一码;当所述第三码的码率大于所述k/n时,对所述第三码增加冗余比特,得到所述第一码;所述第三码的信息比特长度为k。这样可以灵活地得到所述第一码。In a possible design, the first code is determined according to the second code, and the specific method may be: shortening the second code to obtain a third code; when the code rate of the third code is less than k /n, puncture the third code to obtain the first code; when the code rate of the third code is greater than the k/n, add redundant bits to the third code to obtain the the first code; the information bit length of the third code is k. In this way, the first code can be obtained flexibly.
在一种可能的设计中,对所述第二码缩短,得到第三码,具体方法可以为:将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长为N+k-ki。这样可以准确得到所述第三码。In a possible design, the second code is shortened to obtain a third code, and the specific method may be: shortening the second code by ki-k bits to obtain a third code, and the third code is The code length is N+k-ki. In this way, the third code can be accurately obtained.
在一种可能的设计中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;对所述第三码打孔,得到所述第一码,具体方法可以为:对所述第三孔打孔至n个比特,得到所述第一码。这样可以在所述第三码的码率小于k/n的情况下,准确得到所述第一码。In a possible design, the ki corresponding to the gi is the first information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the first information bit length is less than N+kn The maximum value of ; the third code is punched to obtain the first code, and the specific method may be: punch the third hole to n bits to obtain the first code. In this way, the first code can be obtained accurately when the code rate of the third code is less than k/n.
在一种可能的设计中,对所述第三孔打孔至n个比特,得到所述第一码,具体方法可以为:对所述第三码打孔N+k-ki-n个比特,得到所述第一码。这样可以准确地得到所述第一码,以使后续准确进行编码。In a possible design, the third hole is punched to n bits to obtain the first code, and the specific method may be: punching N+k-ki-n bits of the third code , to get the first code. In this way, the first code can be accurately obtained, so that subsequent encoding can be performed accurately.
在一种可能的设计中,对所述第三码打孔N+k-ki-n个比特,具体方法可以为:当所述第一BCH码为非系统码时,打孔所述第三码的前N+k-ki-n个比特;或者,打孔所述第三码的后N+k-ki-n个比特;或者,按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;当所述第一BCH码为系统码时,打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,打孔所述第三码系统位中的前N+k-ki-n个比特;或者,打孔所述第三码系统位中的后N+k-ki-n个比特;或者,按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。这样可以根据实际情况灵活地进行对第三码的打孔。In a possible design, to puncture the third code N+k-ki-n bits, the specific method may be: when the first BCH code is a non-systematic code, puncture the third code The first N+k-ki-n bits of the code; or, the last N+k-ki-n bits of the third code are punctured; or, according to a preset puncturing sequence, the third code is punctured. N+k-ki-n bits in the code; when the first BCH code is a systematic code, puncture the first N+k-ki-n bits in the non-systematic bits of the third code; or, puncturing the last N+k-ki-n bits in the non-systematic bits of the third code; or, puncturing the first N+k-ki-n bits in the systematic bits of the third code; or, puncturing puncturing the last N+k-ki-n bits in the systematic bits of the third code; or, puncturing N+k-n bits in the non-systematic bits of the third code according to the preset puncturing sequence ki-n bits; or, puncturing N+k-ki-n bits in the systematic bits of the third code according to the puncturing sequence; or, puncturing the third code according to the puncturing sequence N+k-ki-n bits in . In this way, the punching of the third yard can be flexibly performed according to the actual situation.
在一种可能的设计中,当所述第一BCH码为扩展BCH eBCH码时,打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特。In a possible design, when the first BCH code is an extended BCH eBCH code, the extended bits in the eBCH code are punctured, wherein the extended bits are parity bits of information bits.
在一种可能的设计中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值;对所述第三码增加冗余比特,得到所述第一码,具体方法可以为:对所述第三码增加冗余比特至n个比特,得到所述第一码。这样可以在所述第三码的码率大于k/n的情况下,准确得到所述第一码。In a possible design, the ki corresponding to the gi is the second information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the second information bit length is greater than N+kn The minimum value of ; adding redundant bits to the third code to obtain the first code, the specific method may be: adding redundant bits to the third code to n bits to obtain the first code. In this way, when the code rate of the third code is greater than k/n, the first code can be obtained accurately.
在一种可能的设计中,对所述第三码增加冗余比特至n个比特,得到所述第一码,具体方法可以为:对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。这样可以准确地得到所述第一码,以使后续准确进行编码。In a possible design, adding redundant bits to the third code to n bits to obtain the first code, the specific method may be: adding n-N+k-ki bits to the third code redundant bits to obtain the first code. In this way, the first code can be accurately obtained, so that subsequent encoding can be performed accurately.
在一种可能的设计中,对所述第三码增加n-N-k+ki个冗余比特,具体方法可以为:对所述第三码增加n-N-k+ki个奇偶校验比特;或者,增加所述第三码的n-N-k+ki个比特的重复比特;或者,对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。In a possible design, adding nN-k+ki redundant bits to the third code, the specific method may be: adding nN-k+ki parity bits to the third code; or, The repetition bits of nN-k+ki bits of the third code are added; or, A parity check bits and B repetition bits are added to the third code, A+B=nN-k+ki. In this way, it is possible to flexibly implement adding redundant bits to the third code in different ways.
在一种可能的设计中,对所述第三码增加n-N-k+ki个奇偶校验比特,具体方法可以为:对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki 个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者,对所述第三码的k个信息比特进行单纯形码编码,得到n-N-k+ki个奇偶校验比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。In a possible design, nN-k+ki parity check bits are added to the third code, and the specific method may be: generating a parity check sum for k information bits of the third code to obtain a parity check bits; generate a parity check sum for kd information bits in the k information bits, and obtain a parity check bit; until nN-k+ki parity check bits are obtained; wherein, the d is 1, 2, ... k-1; or, performing simplex code encoding on the k information bits of the third code to obtain nN-k+ki parity bits. In this way, it is possible to flexibly implement adding redundant bits to the third code in different ways.
在一种可能的设计中,当所述第一BCH码为非系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。In a possible design, when the first BCH code is a non-systematic code, adding nN-k+ki bits of repeated bits of the third code, the specific method may be: for the third code Add the repetition bits of the first nN-k+ki bits of the third code; or, add the repetition bits of the last nN-k+ki bits of the third code to the third code; If the sequence is set, the repetition bits of nN-k+ki bits in the third code corresponding to the preset sequence are added to the third code. In this way, it is possible to flexibly implement adding redundant bits to the third code in different ways.
在一种可能的设计中,当所述第一BCH码为系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。In a possible design, when the first BCH code is a systematic code, the repetition bits of nN-k+ki bits of the third code are added, and the specific method may be: adding to the third code The repetition bits of the first nN-k+ki systematic bits of the third code; or, adding the repetition bits of the last nN-k+ki systematic bits of the third code to the third code; or , according to a preset sequence, add repetition bits of nN-k+ki systematic bits in the third code corresponding to the preset sequence to the third code. In this way, it is possible to flexibly implement adding redundant bits to the third code in different ways.
在一种可能的设计中,对所述第三码增加A个奇偶校验比特和B个重复比特,具体方法可以为:对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者,对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者,对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。这样可以通过不同的方式灵活实现对所述第三码增加冗余比特。In a possible design, adding A parity check bits and B repetition bits to the third code, the specific method may be: after adding the A parity check bits to the third code, add the B repetition bits; or, after adding the B repetition bits to the third code, add the A parity bits; or, adding the A parity bits to the third code Among the check bits and the B repetition bits, the adjacent bit of any parity check bit is the repetition bit, and the adjacent bit of any repetition bit is the parity check bit. In this way, it is possible to flexibly implement adding redundant bits to the third code in different ways.
在一种可能的设计中,将所述第二码缩短ki-k个比特,具体方法可以为:当所述第一BCH码为非系统码时,缩短所述第二码的前ki-k个比特;或者,缩短所述第二码的后ki-k个比特;或者,按照预设的缩短序列缩短所述第二码的ki-k个比特;当所述第一BCH码为系统码时,缩短所述第二码系统位中的前ki-k个比特;或者,缩短所述第二码系统位中的后ki-k个比特;或者,按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。这样可以根据实际情况通过不同的方法灵活实现对所述第二码的缩短。In a possible design, the second code is shortened by ki-k bits, and the specific method may be: when the first BCH code is a non-systematic code, shortening the first ki-k of the second code or, shorten the last ki-k bits of the second code; or, shorten the ki-k bits of the second code according to a preset shortening sequence; when the first BCH code is a systematic code When , shorten the first ki-k bits in the systematic bits of the second code; or shorten the last ki-k bits in the systematic bits of the second code; or shorten the second code according to the shortening sequence ki-k bits in the code system bits. In this way, the shortening of the second code can be flexibly realized through different methods according to the actual situation.
第二方面,本申请还提供了一种编码装置,该编码装置具有实现上述第一方面或第一方面的各个可能的设计示例中的方法的功能模块。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。In a second aspect, the present application further provides an encoding device, the encoding device having functional modules for implementing the methods in the first aspect or each possible design example of the first aspect. The functions can be implemented by hardware, or by executing corresponding software by hardware. The hardware or software includes one or more modules corresponding to the above functions.
在一个可能的设计中,编码装置的结构中包括存储器和处理器,可选的还包括收发器,收发器用于收发数据,以及用于与通信系统中的其他设备进行通信交互,处理器被配置为支持编码装置执行上述第一方面或第一方面的各个可能的设计示例中相应的功能。存储器与处理器耦合,其保存编码装置必要的程序指令和数据。In a possible design, the structure of the encoding device includes a memory and a processor, and optionally a transceiver. The transceiver is used to send and receive data, and to communicate and interact with other devices in the communication system. The processor is configured to To support the encoding apparatus to perform the corresponding functions in the first aspect or each possible design example of the first aspect. A memory is coupled to the processor and holds program instructions and data necessary for the encoding device.
第三方面,本申请实施例提供了一种通信系统,可以包括上述提及的编码装置等。In a third aspect, an embodiment of the present application provides a communication system, which may include the above-mentioned encoding device and the like.
第四方面,本申请实施例提供的一种计算机可读存储介质,该计算机可读存储介质存储有程序指令,当程序指令在计算机上运行时,使得计算机执行本申请实施例第一方面及其任一可能的设计。示例性的,计算机可读存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括非瞬态计算机可读介质、随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、CD-ROM或其他光盘存储、磁盘存 储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。In a fourth aspect, a computer-readable storage medium provided by an embodiment of the present application, the computer-readable storage medium stores a program instruction, and when the program instruction is executed on a computer, makes the computer execute the first aspect of the embodiment of the present application and its contents. any possible design. Illustratively, a computer-readable storage medium can be any available medium that can be accessed by a computer. Taking this as an example but not limited to: computer readable media may include non-transitory computer readable media, random-access memory (RAM), read-only memory (ROM), electrically erasable Except programmable read only memory (electrically EPROM, EEPROM), CD-ROM or other optical disk storage, magnetic disk storage medium or other magnetic storage device, or capable of carrying or storing desired program code in the form of instructions or data structures and capable of Any other media accessed by a computer.
第五方面,本申请实施例提供一种包括计算机程序代码或指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述第一方面及其任一可能的设计的方法。In a fifth aspect, the embodiments of the present application provide a computer program product including computer program codes or instructions, which, when run on a computer, enable the computer to implement the above-mentioned first aspect and any possible design method thereof.
第六方面,本申请还提供了一种芯片,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现上述第一方面及其任一可能的设计的方法。In a sixth aspect, the present application also provides a chip, which is coupled to a memory and used to read and execute program instructions stored in the memory, so as to implement the above-mentioned first aspect and any possible design method thereof .
上述第二方面至第六方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。For each aspect of the second aspect to the sixth aspect and the possible technical effects achieved by each aspect, please refer to the above description of the technical effects achieved by the first aspect or various possible solutions in the first aspect, which will not be repeated here.
附图说明Description of drawings
图1为本申请提供的一种通信系统的架构示意图;1 is a schematic diagram of the architecture of a communication system provided by the present application;
图2为本申请提供的一种编码方法的流程图;Fig. 2 is the flow chart of a kind of encoding method that this application provides;
图3为本申请提供的一种打孔和缩短的示意图;Fig. 3 is a kind of schematic diagram of punching and shortening provided for this application;
图4为本申请提供的一种打孔序列和缩短序列的存储示意图;Fig. 4 is the storage schematic diagram of a kind of punching sequence and shortening sequence provided by this application;
图5为本申请提供的一种构造码的流程示意图;5 is a schematic flowchart of a construction code provided by the application;
图6为本申请提供的一种构造码的生成过程示意图;6 is a schematic diagram of a generation process of a construction code provided by the application;
图7为本申请提供的另一种构造码的流程示意图;7 is a schematic flowchart of another construction code provided by the application;
图8为本申请提供的一种码距性能示意图;FIG. 8 is a schematic diagram of a code distance performance provided by the present application;
图9为本申请提供的一种性能仿真示意图;Fig. 9 is a kind of performance simulation schematic diagram provided by this application;
图10为本申请提供的一种性能仿真示意图;Fig. 10 is a kind of performance simulation schematic diagram provided by this application;
图11为本申请提供的一种编码装置的结构示意图;11 is a schematic structural diagram of an encoding device provided by the application;
图12为本申请提供的一种编码装置的结构图。FIG. 12 is a structural diagram of an encoding apparatus provided by the present application.
具体实施方式detailed description
下面将结合附图对本申请作进一步地详细描述。The present application will be described in further detail below with reference to the accompanying drawings.
本申请实施例提供一种编码方法及装置,用以提出一种BCH码的构造和编码方案,得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。其中,本申请方法和装置基于同一技术构思,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。Embodiments of the present application provide an encoding method and device, which are used to propose a construction and encoding scheme of a BCH code, and the code length and code rate of the obtained BCH code are relatively flexible, so as to meet the requirements of flexible channel coding in wireless communication . Among them, the method and the device of the present application are based on the same technical concept. Since the principles of the method and the device for solving the problem are similar, the implementation of the device and the method can be referred to each other, and the repetition will not be repeated.
在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。In the description of this application, words such as "first" and "second" are only used for the purpose of distinguishing and describing, and cannot be understood as indicating or implying relative importance, nor can they be understood as indicating or implying order.
为了更加清晰地描述本申请实施例的技术方案,下面结合附图,对本申请实施例提供的编码方法及装置进行详细说明。In order to describe the technical solutions of the embodiments of the present application more clearly, the encoding method and apparatus provided by the embodiments of the present application will be described in detail below with reference to the accompanying drawings.
本申请实施例提供的编码方法可以应用于各种无线通信场景(包含但不局限于海量机器类通信(mass machine type communications,mMTC)和超高可靠低时延通信(ultra reliable low latency communication,uRLLC)等),用于信令或者较短数据的传输,包括上行,下行蜂窝通信或者各种用户中心的分布式网络等等。The encoding method provided by the embodiments of the present application can be applied to various wireless communication scenarios (including but not limited to mass machine type communications (mMTC) and ultra-reliable low latency communication (uRLLC) ), etc.), used for signaling or transmission of short data, including uplink, downlink cellular communications or distributed networks of various user centers, etc.
图1示出了本申请实施例提供的编码方法适用的一种可能的通信系统的架构,所述通 信系统的架构中可以包括网络设备和终端设备,其中:Fig. 1 shows the framework of a possible communication system to which the coding method provided in the embodiment of the present application is applicable, and the framework of the communication system may include network equipment and terminal equipment, wherein:
所述网络设备为具有无线收发功能的设备或可设置于该网络设备的芯片,该网络设备包括但不限于:基站(gNB)、无线网络控制器(radio network controller,RNC)、节点B(Node B,NB)、基站控制器(base station controller,BSC)、基站收发台(base transceiver station,BTS)、家庭基站(例如,home evolved NodeB,或home Node B,HNB)、基带单元(baseband unit,BBU),无线保真(wireless fidelity,WIFI)系统中的接入点(access point,AP)、无线中继节点、无线回传节点、传输点(transmission and reception point,TRP或者transmission point,TP)等,还可以为构成gNB或传输点的网络节点,如基带单元(BBU),或,分布式单元(distributed unit,DU)等。The network device is a device with a wireless transceiver function or a chip that can be installed in the network device, and the network device includes but is not limited to: a base station (gNB), a radio network controller (RNC), a node B (Node B) B, NB), base station controller (BSC), base transceiver station (base transceiver station, BTS), home base station (for example, home evolved NodeB, or home Node B, HNB), baseband unit (baseband unit, BBU), access point (AP), wireless relay node, wireless backhaul node, transmission point (transmission and reception point, TRP or transmission point, TP) in wireless fidelity (wireless fidelity, WIFI) systems etc., it can also be a network node that constitutes a gNB or a transmission point, such as a baseband unit (BBU), or a distributed unit (distributed unit, DU), etc.
在一些部署中,gNB可以包括集中式单元(centralized unit,CU)和DU。gNB还可以包括射频单元(radio unit,RU)。CU实现gNB的部分功能,DU实现gNB的部分功能,比如,CU实现无线资源控制(radio resource control,RRC),分组数据汇聚层协议(packet data convergence protocol,PDCP)层的功能,DU实现无线链路控制(radio link control,RLC)、媒体接入控制(media access control,MAC)和物理(physical,PHY)层的功能。由于RRC层的信息最终会变成PHY层的信息,或者,由PHY层的信息转变而来,因而,在这种架构下,高层信令,如RRC层信令或PHCP层信令,也可以认为是由DU发送的,或者,由DU+RU发送的。可以理解的是,网络设备可以为CU节点、或DU节点、或包括CU节点和DU节点的设备。此外,CU可以划分为接入网RAN中的网络设备,也可以将CU划分为核心网CN中的网络设备,对此不作限定。In some deployments, a gNB may include a centralized unit (CU) and a DU. The gNB may also include a radio unit (RU). CU implements some functions of gNB, DU implements some functions of gNB, for example, CU implements radio resource control (radio resource control, RRC), packet data convergence protocol (packet data convergence protocol, PDCP) layer functions, DU implements wireless chain The functions of the road control (radio link control, RLC), media access control (media access control, MAC) and physical (physical, PHY) layers. Since the information of the RRC layer will eventually become the information of the PHY layer, or be transformed from the information of the PHY layer, therefore, under this architecture, higher-layer signaling, such as RRC layer signaling or PHCP layer signaling, can also It is considered to be sent by DU, or, sent by DU+RU. It can be understood that the network device may be a CU node, a DU node, or a device including a CU node and a DU node. In addition, the CU may be divided into network equipment in the access network RAN, and the CU may also be divided into network equipment in the core network CN, which is not limited.
所述终端设备也可以称为用户设备(user equipment,UE)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。本申请的实施例中的终端设备可以是手机(mobile phone)、智能手机、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、个人数字助理(personal digital assistant,PDA)、车载的移动装置等等。本申请的实施例对应用场景不做限定。本申请中将具有无线收发功能的终端设备及可设置于前述终端设备的芯片统称为终端设备。The terminal equipment may also be referred to as user equipment (UE), access terminal, subscriber unit, subscriber station, mobile station, mobile station, remote station, remote terminal, mobile device, user terminal, terminal, wireless communication device , user agent or user device. The terminal device in the embodiments of the present application may be a mobile phone (mobile phone), a smart phone, a tablet computer (Pad), a computer with a wireless transceiver function, a virtual reality (virtual reality, VR) terminal device, an augmented reality (augmented reality, AR) terminal equipment, wireless terminals in industrial control, wireless terminals in self driving, wireless terminals in remote medical, wireless terminals in smart grid, Wireless terminals in transportation safety, wireless terminals in smart cities, wireless terminals in smart homes, personal digital assistants (PDAs), in-vehicle mobile devices, etc. . The embodiments of the present application do not limit application scenarios. In this application, a terminal device with a wireless transceiver function and a chip that can be installed in the aforementioned terminal device are collectively referred to as a terminal device.
在本申请中,所述网络设备和所述终端设备均可以作为发送端或接收端来执行编码方法。In the present application, both the network device and the terminal device may perform the encoding method as a sending end or a receiving end.
需要说明的是,图1所示的通信系统的架构仅仅作为示例,图1并不限定本申请适应的通信系统的架构的组成。图1中还可以包括更多的设备,本申请此处不再示出。It should be noted that the architecture of the communication system shown in FIG. 1 is only an example, and FIG. 1 does not limit the composition of the architecture of the communication system to which the present application is applicable. Figure 1 may also include more devices, which are not shown here in this application.
目前,BCH码是一种重要的线性分组码,是少数可以通过代数结构保证所构造的码的码距的纠错码之一。在中/高码率时,其最小码距在很多情况下为当前码长码率下已知纠错码最小码距的上限。因为码距是纠错码的一大关键性能指标,因此BCH码在工程中有广泛的应用。BCH码具有高效的译码方法。其中坎普-梅西(Berlekamp–Massey,BM)译码算法是一种极其简洁高效的硬译码算法。若输入信号是对数似然比(log likehood ratio,LLR)软值,BCH码也可以用分阶统计译码(或有序统计译码)(ordered statistic decoding,OSD)类译码算法获得接近理论极限的性能。At present, the BCH code is an important linear block code, and it is one of the few error correction codes that can guarantee the code distance of the constructed code through an algebraic structure. At medium/high code rates, the minimum code distance is in many cases the upper limit of the minimum code distance of known error correction codes under the code rate of the current code length. Because code distance is a key performance indicator of error correction codes, BCH codes are widely used in engineering. The BCH code has an efficient decoding method. Among them, the Berlekamp-Massey (BM) decoding algorithm is an extremely simple and efficient hard decoding algorithm. If the input signal is a log-likelihood ratio (LLR) soft value, the BCH code can also be approximated by an ordered statistic decoding (OSD) decoding algorithm. performance at the theoretical limit.
而现有的BCH码只支持特定的码长、码率。具体地,码长N为2的整数次幂减一,即2 m-1(BCH码),或2的整数次幂,即2 m(扩展(extended,e)BCH码)。对于码率来说,也只支持特地的值,例如对于N=16的eBCH码,只支持信息比特数(信息比特长度)K=2,6,8,12,16;对于N=32的eBCH码,只支持信息比特数K=2,7,12,17,22,27,32等。 However, the existing BCH codes only support a specific code length and code rate. Specifically, the code length N is an integer power of 2 minus one, that is, 2 m -1 (BCH code), or an integer power of 2, that is, 2 m (extended (e) BCH code). For the code rate, only special values are supported. For example, for the eBCH code with N=16, only the number of information bits (information bit length) K=2, 6, 8, 12, 16 is supported; for the eBCH code with N=32 code, only supports the number of information bits K=2, 7, 12, 17, 22, 27, 32, etc.
随着译码算法和硬件能力的提升,BCH码在下一代无线通信标准中的应用范围可能变广。然而,当前BCH码所支持的码长和码率有限,无法支持无线通信中短包的码长码率灵活调度的需求。基于此,本申请提出一种BCH码的构造和编码方案,得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。With the improvement of decoding algorithms and hardware capabilities, the application range of BCH codes in next-generation wireless communication standards may become wider. However, the code length and code rate supported by the current BCH code are limited, and cannot support the requirement of flexible scheduling of code length and code rate of short packets in wireless communication. Based on this, the present application proposes a construction and coding scheme of a BCH code, and the code length and code rate of the obtained BCH code are relatively flexible, so as to be suitable for the requirement of flexible channel coding of wireless communication.
在下面的方法介绍中,以执行主体为编码装置为例说明,所述编码装置可以是图1所示的通信系统中的终端设备或网络设备或者其他设备。In the following method introduction, the execution subject is an encoding device as an example, and the encoding device may be a terminal device or a network device or other devices in the communication system shown in FIG. 1 .
本申请实施例提供的一种编码方法,适用于图1所示的通信系统。参阅图2所示,该方法的具体流程可以包括:An encoding method provided by an embodiment of the present application is applicable to the communication system shown in FIG. 1 . Referring to Figure 2, the specific flow of the method may include:
步骤201:编码装置根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0。Step 201: the encoding device determines a first encoding parameter according to the first BCH code; the first BCH code is the BCH code to be encoded; the first encoding parameter is the first code or a generator matrix of the first code; the The code length of the first code is n, and the information bit length is k; the n is greater than 0, and the k is greater than 0.
其中,所述第一BCH码可以为普通的BCH码,也可以为eBCH码。Wherein, the first BCH code may be an ordinary BCH code or an eBCH code.
步骤202:所述编码装置基于所述第一编码参数进行BCH码编码。Step 202: The encoding device performs BCH code encoding based on the first encoding parameter.
在一种可选的实施方式中,当所述第一编码参数为第一码的生成矩阵时,所述编码装置根据第一BCH码确定第一编码参数,具体可以包括以下两种方法:In an optional implementation manner, when the first encoding parameter is the generator matrix of the first code, the encoding device determines the first encoding parameter according to the first BCH code, which may specifically include the following two methods:
方法a1:所述编码装置确定所述第一BCH码的生成矩阵,并根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号(column index)。Method a1: The encoding device determines the generation matrix of the first BCH code, and determines the first encoding parameter according to the generation matrix and the puncturing sequence of the first BCH code, and the puncturing sequence includes: The element is the column index (column index) in the generator matrix of the first BCH code.
方法a2:所述编码装置确定所述第一BCH码的生成矩阵,并根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。Method a2: The encoding device determines a generation matrix of the first BCH code, and determines the first encoding parameter according to the generation matrix of the first BCH code and a shortened sequence, where the elements included in the shortened sequence are: The column number in the generator matrix of the first BCH code.
在上述方法a1和a2中,所述编码装置确定所述第一BCH码的生成矩阵,具体方法可以为:所述编码装置根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组可以包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。多项式是数学上一个公知的名词术语:在数学中,由若干个单项式相加组成的代数式叫做多项式,由数或字母的积组成的代数式叫做单项式,单独的一个数或一个字母也叫做单项式;这里任一个g表示一个多项式。In the above methods a1 and a2, the encoding device determines the generator matrix of the first BCH code, and the specific method may be: the encoding device determines the first BCH code according to the generator polynomial group of the first BCH code. The generator matrix of , the generator polynomial group of the first BCH code may include the following polynomials: g1, g2, g3, ..., gx, x are integers greater than or equal to 1. Polynomial is a well-known term in mathematics: in mathematics, an algebraic formula composed of the addition of several monomials is called a polynomial, an algebraic formula composed of a product of numbers or letters is called a monomial, and a single number or a letter is also called a monomial; here Any g represents a polynomial.
其中,BCH码本身具有嵌套特性,高码率的BCH码的生成多项式是低码率的BCH码的生成多项式的一个因子,因此可以用一组嵌套的多项式来表示一组嵌套的BCH码。例如,第一BCH码的生成多项式组g1,g2,g3,……,gx,其对应了一组BCH码的码率是r1=k1/N=1,r2=k2/N,r3=k3/N,……,rx=kx/N;对应了一组eBCH码的码率是r01=k1/N0=1,r02=k2/N0,r03=k3/N0,……,r0x=kx/N0。其中,r1,……rx以及r01,……r0x为码率,k1,……,kx为信息比特长度。根据BCH的性质,可以得出r1>r2>r3>……>rx,且k1>k2>k3>……>kx,且N=2m-1是对应BCH码的母码长,或N0=2m是对应eBCH码的母码长。其中,g1=1是最高码率的BCH码对应的生成多项式,gx是最低码率的BCH码对 应的生成多项式。如果i<j,则gi对应的BCH码率比gj对应的BCH码率更高,gi是gj的一个因子。具体的,可以规定两种多项式表示形式:Among them, the BCH code itself has the feature of nesting, and the generator polynomial of the high code rate BCH code is a factor of the generator polynomial of the low code rate BCH code, so a set of nested polynomials can be used to represent a set of nested BCH codes code. For example, the generator polynomial group g1, g2, g3, . N,...,rx=kx/N; the code rates corresponding to a group of eBCH codes are r01=k1/N0=1, r02=k2/N0, r03=k3/N0,..., r0x=kx/N0. Among them, r1,...rx and r01,...r0x are the code rates, and k1,...,kx are the information bit lengths. According to the properties of BCH, it can be concluded that r1>r2>r3>...>rx, and k1>k2>k3>...>kx, and N=2m-1 is the mother code length of the corresponding BCH code, or N0=2m is the mother code length of the corresponding eBCH code. Among them, g1=1 is the generator polynomial corresponding to the BCH code with the highest code rate, and gx is the generator polynomial corresponding to the BCH code with the lowest code rate. If i<j, the BCH code rate corresponding to gi is higher than the BCH code rate corresponding to gj, and gi is a factor of gj. Specifically, two polynomial representations can be specified:
第一种:规定一组完整的BCH多项式g1,g2,g3,……,gx进行编码,当码长为BCH母码长2 m-1且码率rj<r<ri时,利用gi进行编码。这时ki会大于信息比特长度k,需要在编码时在k个信息比特的基础上补ki-k个零。如BCH码为系统码,则编完码后,相应的ki-k个比特为零,此种情况下所述编码装置不发送ki-k个为零的比特,此相当于缩短(shorten)。 The first one: specify a set of complete BCH polynomials g1, g2, g3, ..., gx for encoding, when the code length is the BCH mother code length 2 m -1 and the code rate rj<r<ri, use gi for encoding . At this time, ki will be greater than the information bit length k, and ki-k zeros need to be supplemented on the basis of k information bits during encoding. If the BCH code is a systematic code, after coding, the corresponding ki-k bits are zero. In this case, the encoding apparatus does not transmit the ki-k zero bits, which is equivalent to shortening.
第二种:可以只规定最低码率对应的多项式gx以及它的因式分解,即gx=g’x*……*g’3*g’2*g’1,其中任意一个码率对应的多项式可以由gx的因子相乘获得:gi=g’i*……*g’3*g’2*g’1。The second: you can only specify the polynomial gx corresponding to the lowest code rate and its factorization, that is, gx=g'x*...*g'3*g'2*g'1, where any code rate corresponds to The polynomial can be obtained by multiplying the factors of gx: gi=g'i*...*g'3*g'2*g'1.
对于eBCH码,先按上述步骤编成(N,k)的码,再增加一个码字比特,其是k个信息比特的奇偶校验值。For the eBCH code, a code of (N, k) is first coded according to the above steps, and then a code word bit is added, which is the parity value of k information bits.
例如,假设N=15的BCH码,其生成多项式组包括g1=1,g2=x^4+x^3+1,g3=x^8+x^4+x^2+x+1,g4=x^10+x^9+x^8+x^6+x^5+x^2+1,其原BCH码的码率为r1=15/15,r2=11/15,r3=7/15,r4=5/15,其原eBCH码的码率为r1=15/16,r2=11/16,r3=7/16,r4=5/16,对应的信息比特长度为k1=15,k2=11,k3=7,k4=5。For example, assuming a BCH code of N=15, its generator polynomial set includes g1=1, g2=x^4+x^3+1, g3=x^8+x^4+x^2+x+1, g4 =x^10+x^9+x^8+x^6+x^5+x^2+1, the code rate of the original BCH code is r1=15/15, r2=11/15, r3=7 /15, r4=5/15, the code rate of the original eBCH code is r1=15/16, r2=11/16, r3=7/16, r4=5/16, and the corresponding information bit length is k1=15 , k2=11, k3=7, k4=5.
若目标BCH码的码率为2/3=8/12,码长为12,信息比特长度为8,则上例示出的原BCH码并不支持。这时,可以先将8个信息比特补三个零,变成11个比特,然后使用移位寄存器进行BCH码编码,得到的码字长度为15。由于其中3个比特已知为零,则所述编码装置无需发送,实际发送码字比特数为15-3=12。同时,实际承载信息的比特数为11-3=8。这样就完成了对(12,8)的新BCH码的支持。If the code rate of the target BCH code is 2/3=8/12, the code length is 12, and the information bit length is 8, the original BCH code shown in the above example is not supported. At this time, the 8 information bits can be filled with three zeros to become 11 bits, and then the BCH code is encoded by the shift register, and the length of the obtained code word is 15. Since three of the bits are known to be zero, the encoding apparatus does not need to send, and the actual number of bits of the codeword sent is 15-3=12. Meanwhile, the actual number of bits carrying information is 11-3=8. This completes the support for the new BCH code of (12,8).
具体的,所述编码装置根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,具体方法可以为:分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。Specifically, the encoding device determines the generator matrix of the first BCH code according to the generator polynomial group of the first BCH code, and the specific method may be: based on each of the generator polynomial groups of the first BCH code respectively The row vector corresponding to the polynomial and the row vector obtained by shifting the row vector to the right determine the generator matrix of the first BCH code; the length of the row vector corresponding to each row of the generator matrix of the first BCH code is equal to the length of the first BCH code. The code length of the mother code of a BCH code, and the number of rows is equal to the code length of the mother code; wherein, the first row corresponds to the row vector of the polynomial g1, and the second row, ..., the k1-k2 row are respectively corresponding to the first row. The row vector obtained by shifting the row vector to the right by 1 bit, ..., the row vector obtained by shifting the right k1-k2-1 bit; ...; the row vector corresponding to the polynomial gi of the N-ki+1th row, the N-ki+2th row, ... , the row vector N-kj row corresponding to row N-ki+1 is shifted to the right by 1 bit, ..., the row vector obtained by shifting ki-kj-1 bit to the right; ...; row N-kx+1 is polynomial gx Corresponding row vector, row N-kx+2 row vector corresponding to row N-kx+1 row right shifted by 1 bit, ..., right shifted by kx-1 bit row vector; among them, k1 is the information corresponding to g1 Bit length, k2 is the information bit length corresponding to g2, ki is the information bit length corresponding to gi, kj is the information bit length corresponding to gj, kx is the information bit length corresponding to gx, j=i+1, N is the mother Code length.
例如,生成多项式组g=x^4+x^3+1,其对应的行向量为[11001],通过补零扩展到母码长N=15后的向量为[110010000000000]。其右移1位记为g(1)其行向量形式为[011001000000000]。其右移t位的N长行向量记为g(t)。For example, the generator polynomial group g=x^4+x^3+1, the corresponding row vector is [11001], and the vector extended to the mother code length N=15 by zero-filling is [110010000000000]. Its right shift is recorded as g(1) and its row vector form is [011001000000000]. Its N-long row vector shifted by t bits to the right is denoted as g(t).
若当所述第一BCH码为普通的BCH码时,所述第一BCH码的生成矩阵G N的规模可以为N×N。若所述第一BCH码为eBCH码时,生成矩阵G N0的规模可以为(N+1)×(N+1)。可以通过以下两种方法,产生两种等价的eBCH码的生成矩阵: If the first BCH code is an ordinary BCH code, the scale of the generator matrix G N of the first BCH code may be N×N. If the first BCH code is an eBCH code, the scale of the generator matrix G N0 may be (N+1)×(N+1). The generator matrix of two equivalent eBCH codes can be generated by the following two methods:
方法b1:
Figure PCTCN2021112747-appb-000001
其中1为高度为N的全1列向量,0为宽度为N的全0行向量,GN为BCH码的嵌套生成矩阵。
Method b1:
Figure PCTCN2021112747-appb-000001
Among them, 1 is an all-one column vector with a height of N, 0 is an all-zero row vector with a width of N, and GN is the nested generator matrix of the BCH code.
方法b2:
Figure PCTCN2021112747-appb-000002
其中1为宽度/高度为N的全1行/列向量,0为宽度/高度为N的全0行/列向量,G N-1为BCH码的生成矩阵的前N-1行和前N-1列组成的矩阵。
Method b2:
Figure PCTCN2021112747-appb-000002
where 1 is an all-1 row/column vector with a width/height of N, 0 is an all-zero row/column vector with a width/height of N, and G N-1 is the first N-1 row and first N of the generator matrix of the BCH code A matrix of -1 columns.
沿用上例,例如N=15的BCH码,其生成矩阵G N可以为: Following the above example, for example, the BCH code with N=15, its generator matrix G N can be:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 00 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0 0 0 0 01 1 0 0 1 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 1 0 0 0 0 0 0 0 0 00 1 1 0 0 1 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 1 0 0 0 0 0 0 0 00 0 1 1 0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 1 0 0 0 0 0 0 00 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 0 0 0 1 0 1 1 1 0 0 0 0 0 01 0 0 0 1 0 1 1 1 0 0 0 0 0 0
0 1 0 0 0 1 0 1 1 1 0 0 0 0 00 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 0 1 1 0 0 1 0 1 0 0 0 01 1 1 0 1 1 0 0 1 0 1 0 0 0 0
0 1 1 1 0 1 1 0 0 1 0 1 0 0 00 1 1 1 0 1 1 0 0 1 0 1 0 0 0
0 0 1 1 1 0 1 1 0 0 1 0 1 0 00 0 1 1 1 0 1 1 0 0 1 0 1 0 0
0 0 0 1 1 1 0 1 1 0 0 1 0 1 00 0 0 1 1 1 0 1 1 0 0 1 0 1 0
0 0 0 0 1 1 1 0 1 1 0 0 1 0 10 0 0 0 1 1 1 0 1 1 0 0 1 0 1
对于N=16的eBCH码,由方法b1生成的生成矩阵G N0可以为: For the eBCH code with N=16, the generator matrix G N0 generated by method b1 can be:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 01 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 01 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 01 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 01 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 01 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 01 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 01 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 01 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 01 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 11 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1
对于N=16的eBCH码,由方法2生成的生成矩阵G N0可以为: For the eBCH code with N=16, the generator matrix G N0 generated by method 2 can be:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 01 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 01 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 01 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 01 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 01 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 01 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 01 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 01 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 01 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 01 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
其中,在上述各个矩阵的示例中字体加粗的元素分别对应了举例的BCH码的生成多项式g1、g2、g3和g4对应的行向量。Wherein, in the examples of the above matrices, the elements with bold font correspond to the row vectors corresponding to the generator polynomials g1 , g2 , g3 and g4 of the example BCH code, respectively.
具体的,生成该生成矩阵G N后,可以对任意(N,k)或任意(N0,k)码进行编码。具体方法为,取生成矩阵G N或G N0的靠底部的k行,作为(N,k)或(N0,k)码的生成矩阵G N,k或G N0,k。编码方法与现有线性分组码相同,即c=u*G N,k,其中u为k长信息比特向量,c为N长码字比特向量。 Specifically, after generating the generator matrix G N , any (N, k) or any (N0, k) code can be encoded. The specific method is to take the bottom k rows of the generator matrix G N or G N0 as the generator matrix G N,k or G N0,k of the (N,k) or (N0,k) code. The encoding method is the same as the existing linear block code, namely c=u*G N,k , where u is a k-long information bit vector, and c is an N-long codeword bit vector.
在一种可选的实施方式中,在上述方法a1中,所述编码装置根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,具体方法可以为:所述编码装置取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;然后所述编码装置根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。In an optional implementation manner, in the above method a1, the encoding device determines the first encoding parameter according to the generator matrix and puncturing sequence of the first BCH code, and the specific method may be: the The encoding device takes the last k rows of the generator matrix of the first BCH code to obtain a first matrix; and then the encoding device sequentially quantifies the elements in the puncturing sequence in the first matrix according to the puncturing sequence. The corresponding position is punched to obtain the first encoding parameter, where the first encoding parameter is a matrix including k rows and n columns.
具体的,所述编码装置根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,也即打孔所述打孔序列对应的前N-n列的比特(或N0-n个比特),剩余n列的比特。Specifically, according to the puncturing sequence, the coding device sequentially punctures the positions corresponding to the elements in the puncturing sequence in the first matrix, to obtain the first coding parameter, that is, the puncturing place. bits in the first Nn columns (or N0-n bits) corresponding to the puncturing sequence, and bits in the remaining n columns.
例如,上述打孔过程可以如图3中(a)所述的打孔的示意图所示。For example, the above-mentioned punching process may be shown in the schematic diagram of punching described in (a) of FIG. 3 .
在一种可选的实施方式中,在上述方法a1中,所述编码装置根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,具体方法可以为:所述编码装置根据所述缩短序列,依次对所述缩短序列中的元素对应的位置置零,得到第二矩阵;从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k 行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。In an optional implementation manner, in the above method a1, the encoding device determines the first encoding parameter according to the generator matrix and shortening sequence of the first BCH code, and the specific method may be: the encoding According to the shortened sequence, the device sequentially zeros the positions corresponding to the elements in the shortened sequence to obtain a second matrix; selects from the last row of the second matrix, and skips the positions corresponding to the elements in the shortened sequence There is a row of 1, and until k rows are selected, the first encoding parameter is obtained, and the first encoding parameter is a matrix including k rows and n columns.
例如,上述缩短过程可以如图3中(b)所述的缩短的示意图所示。For example, the shortening process described above can be shown in the shortened schematic diagram described in (b) of FIG. 3 .
具体的,上述打孔或者缩短过程是借助N0/2长的打孔序列或者缩短序列实现。由于N0或N长的码最多需要存储N0/2长的打孔序列或缩短序列(因为如果打孔或缩短数量大于N0/2个比特,那就应该直接使用N0/2或N0/2-1母码长的BCH码了)。因此,如果要支持最大母码长Nmax长的所有BCH码,只需要存一个Nmax长的打孔序列,或者存一个Nmax长的缩短序列即可。Specifically, the above-mentioned puncturing or shortening process is realized by means of a puncturing sequence or a shortening sequence of N0/2 length. Since N0 or N long codes need to store N0/2 long puncturing sequences or shortening sequences at most (because if the number of puncturing or shortening is greater than N0/2 bits, then N0/2 or N0/2-1 should be used directly The BCH code with the mother code length). Therefore, if you want to support all BCH codes with a maximum mother code length of Nmax, you only need to store a puncturing sequence with a length of Nmax, or a shortened sequence with a length of Nmax.
具体存储方式可以为:首先存最小母码长Nmin对应的打孔序列或者缩短序列(Nmin/2长),在其之后再存次小母码长2*Nmin对应的打孔序列或/缩短序列(Nmin长),以此类推,依次存储Nmax/4,Nmax/2。这样打孔/缩短序列的总长度不超过Nmax。例如,打孔(Puncture)序列和缩短(Shorten)序列的存储可以如图4所示。The specific storage method may be as follows: first, store the puncturing sequence or shortening sequence (Nmin/2 length) corresponding to the minimum mother code length Nmin, and then store the puncturing sequence or/or shortening sequence corresponding to the next smallest mother code length 2*Nmin after that. (Nmin long), and so on, store Nmax/4 and Nmax/2 in turn. The total length of such a puncturing/shortening sequence does not exceed Nmax. For example, the storage of puncturing (Puncture) sequences and shortening (Shorten) sequences may be as shown in FIG. 4 .
可选的,当目标码率小于或者等于码率阈值可以选择上述方法a1,当所述目标码率大于或者等于码率阈值可以选择上述方法a2,所述目标码率为所述第一码的码率k/n。其中,所述码率阈值(R thr)可以为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16等。 Optionally, when the target code rate is less than or equal to the code rate threshold, the above method a1 can be selected, and when the target code rate is greater than or equal to the code rate threshold, the above method a2 can be selected, and the target code rate is the same as that of the first code. Code rate k/n. Wherein, the code rate threshold (R thr ) may be 1/4, 1/2, 3/4, 1/3, 2/3, 1/8, 3/8, 5/8, 7/8, 1 /16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16 or 15/16 etc.
在另一种可选的实施方式中,所述第一编码参数为所述第一码时,所述编码装置根据第一BCH码确定第一编码参数,具体方法可以为:所述编码装置在所述第一BCH码的生成多项式组中确定目标多项式gi;根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;根据所述第二码确定所述第一码。In another optional implementation manner, when the first encoding parameter is the first code, the encoding device determines the first encoding parameter according to the first BCH code, and the specific method may be: the encoding device is in The target polynomial gi is determined in the generator polynomial group of the first BCH code; the second code is determined according to the gi, the code length of the second code is N, the length of the information bit is ki, and the N is the first code. The code length of the mother code of the BCH code, the ki is the information bit length corresponding to the gi; the first code is determined according to the second code.
其中,所述gi对应的所述ki可以是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;也即,ki是{k1,k2,k3,…,kx}中满足ki<N+k-n的最大可选值。或者,所述gi对应的所述ki可以是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值,也即ki是{k1,k2,k3,…,kx}中满足ki>N+k-n的最小可选值。Wherein, the ki corresponding to the gi may be the first information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the first information bit length is a maximum value less than N+kn; That is, ki is the largest optional value in {k1,k2,k3,...,kx} that satisfies ki<N+kn. Alternatively, the ki corresponding to the gi may be the second information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the second information bit length is a minimum value greater than N+kn, or That is, ki is the smallest optional value in {k1,k2,k3,…,kx} that satisfies ki>N+kn.
具体的,所述编码装置根据所述第二码确定所述第一码,具体方法可以为:所述编码装置对所述第二码缩短,得到第三码;当所述第三码的码率小于k/n时,所述编码装置对所述第三码打孔,得到所述第一码;当所述第三码的码率大于所述k/n时,所述编码装置对所述第三码增加冗余比特,得到所述第一码;所述第三码的信息比特长度为k。这样可以结合通过打孔和缩短使得到的第一码以最大程度地保留原BCH码的码距特性。Specifically, the encoding device determines the first code according to the second code, and the specific method may be as follows: the encoding device shortens the second code to obtain a third code; when the code of the third code is When the code rate is less than k/n, the encoding device punctures the third code to obtain the first code; when the code rate of the third code is greater than the k/n, the encoding device punctures the third code. The third code adds redundant bits to obtain the first code; the length of the information bits of the third code is k. In this way, the first code obtained by puncturing and shortening can be combined to preserve the code distance characteristic of the original BCH code to the greatest extent.
一种可选的实施方式中,所述编码装置对所述第二码缩短,得到第三码,具体方法可以为:所述编码装置将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长可以为N+k-ki。In an optional implementation manner, the encoding device shortens the second code to obtain a third code, and the specific method may be as follows: the encoding device shortens the second code by ki-k bits to obtain the third code. Three codes, the code length of the third code may be N+k-ki.
示例性的,所述编码装置将所述第二码缩短ki-k个比特,具体方可以为:当所述第一BCH码为非系统码时,所述编码装置缩短所述第二码的前ki-k个比特;或者,所述编码装置缩短所述第二码的后ki-k个比特;或者,所述编码装置按照预设的缩短序列缩短所述第二码的ki-k个比特;当所述第一BCH码为系统码时,所述编码装置缩短所述第二码系统位中的前ki-k个比特;或者,所述编码装置缩短所述第二码系统位中的后ki-k个比特;或者,所述编码装置按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。Exemplarily, the encoding device shortens the second code by ki-k bits, specifically, when the first BCH code is a non-systematic code, the encoding device shortens the second code by ki-k bits. the first ki-k bits; or, the encoding device shortens the last ki-k bits of the second code; or, the encoding device shortens the second code by the ki-k bits according to a preset shortening sequence When the first BCH code is a systematic code, the encoding device shortens the first ki-k bits in the second code systematic bits; or, the encoding device shortens the second code systematic bits in the or, the encoding device shortens ki-k bits in the systematic bits of the second code according to the shortening sequence.
在一种可选的实施方式中,当所述gi对应的所述ki是所述多项式组中包含的多项式 对应的信息比特长度中的第一信息比特长度时,所述第三码的码率小于k/n;在这种情况下,所述编码装置对所述第三码打孔,得到所述第一码,具体方法可以为:所述编码装置对所述第三孔打孔至n个比特,得到所述第一码。In an optional implementation manner, when the ki corresponding to the gi is the first information bit length among the information bit lengths corresponding to the polynomials included in the polynomial group, the code rate of the third code is is less than k/n; in this case, the encoding device punches the third code to obtain the first code. The specific method may be: the encoding device punches the third hole to n. bits to obtain the first code.
具体的,所述编码装置对所述第三孔打孔至n个比特,得到所述第一码,具体方法可以为:所述编码装置对所述第三码打孔N+k-ki-n个比特,得到所述第一码。Specifically, the encoding device punctures the third hole to n bits to obtain the first code, and the specific method may be: the encoding device punctures the third code N+k-ki- n bits to obtain the first code.
进一步地,所述编码装置对所述第三码打孔N+k-ki-n个比特,具体方法可以为:当所述第一BCH码为非系统码时,所述编码装置打孔所述第三码的前N+k-ki-n个比特;或者,所述编码装置打孔所述第三码的后N+k-ki-n个比特;或者,所述编码装置按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;当所述第一BCH码为系统码时,所述编码装置打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,所述编码装置打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,所述编码装置打孔所述第三码系统位中的前N+k-ki-n个比特;或者,所述编码装置打孔所述第三码系统位中的后N+k-ki-n个比特;或者,所述编码装置按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,所述编码装置按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,所述编码装置按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。Further, the encoding device punctures N+k-ki-n bits for the third code, and the specific method may be: when the first BCH code is a non-systematic code, the encoding device punctures all the bits. the first N+k-ki-n bits of the third code; or, the encoding device punctures the last N+k-ki-n bits of the third code; puncturing sequence, puncturing N+k-ki-n bits in the third code; when the first BCH code is a systematic code, the encoding device punctures the non-systematic bits of the third code The first N+k-ki-n bits in the third code; alternatively, the encoding device punctures the last N+k-ki-n bits in the non-systematic bits of the third code; alternatively, the encoding device punctures the first N+k-ki-n bits in the systematic bits of the third code; or, the encoding device punctures the last N+k-ki-n bits in the systematic bits of the third code; or, The encoding device punctures N+k-ki-n bits in the non-systematic bits of the third code according to the preset puncturing sequence; or, the encoding device punctures according to the puncturing sequence. puncturing N+k-ki-n bits in the systematic bits of the third code; or, the encoding device punctures N+k-ki-n bits in the third code according to the puncturing sequence .
在一种具体的示例中,当所述第一BCH码为eBCH码时,所述编码装置可以先打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特;然后再按照上述打孔方法进行打孔。In a specific example, when the first BCH code is an eBCH code, the encoding apparatus may first puncture extension bits in the eBCH code, where the extension bits are parity bits of information bits ; and then punch holes according to the above punching method.
在另一种可选的实施方式中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度时,所述第三码的码率大于所述k/n;在这种情况下,所述编码装置对所述第三码增加冗余比特,得到所述第一码,具体方法可以为:所述编码装置对所述第三码增加冗余比特至n个比特,得到所述第一码。In another optional implementation manner, when the ki corresponding to the gi is the second information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, the code rate of the third code is greater than the k/n; in this case, the encoding device adds redundant bits to the third code to obtain the first code. The specific method may be: the encoding device adds redundant bits to the third code. The first code is obtained by adding redundant bits to n bits.
具体的,所述编码装置对所述第三码增加冗余比特至n个比特,得到所述第一码,具体方法可以为:所述编码装置对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。Specifically, the encoding apparatus adds redundant bits to the third code to n bits to obtain the first code, and the specific method may be: the encoding apparatus adds n-N+k to the third code -ki redundant bits to obtain the first code.
进一步地,所述编码装置对所述第三码增加n-N-k+ki个冗余比特,具体可以方法可以为:所述编码装置对所述第三码增加n-N-k+ki个奇偶校验比特;或者,所述编码装置增加所述第三码的n-N-k+ki个比特的重复比特;或者,所述编码装置对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。Further, the encoding device adds nN-k+ki redundant bits to the third code, and the specific method may be as follows: the encoding device adds nN-k+ki parity checks to the third code or, the encoding device adds nN-k+ki bits of repetition bits of the third code; or, the encoding device adds A parity bits and B repetition bits to the third code , A+B=nN-k+ki.
在一种示例中,所述编码装置对所述第三码增加n-N-k+ki个奇偶校验比特,具体方法可以为:所述编码装置对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者,所述编码装置对所述第三码的k个信息比特进行单纯形码(simplex)编码,得到n-N-k+ki个奇偶校验比特。In an example, the encoding device adds nN-k+ki parity bits to the third code, and a specific method may be: the encoding device generates parity for k information bits of the third code checksum to obtain a parity check bit; generate a parity check sum for kd information bits in the k information bits to obtain a parity check bit; until nN-k+ki parity check bits are obtained Wherein, the d is 1, 2, ... k-1; or, the encoding device performs simplex code (simplex) encoding on the k information bits of the third code to obtain nN-k+ki parity bits.
例如,所述编码装置选择的全部k个信息比特,产生它们的奇偶校验和(即单比特校验码(single parity check codes,SPC)编码)。如总比特数不足n,则再在k个信息比特中选择k-1个信息比特,产生这k-1个信息比特的奇偶校验和;由于在k个信息比特中选择k-1个信息比特最多有nchoosk(k,k-1)种情况,因此最多可以产生nchoosk(k,k-1)个此类奇偶校验比特,按此方法直到传送满n个码字比特为止。如果仍然没有补足n个比特,则再在k个信息比特中选择k-2个信息比特,产生这k-2个信息比特的奇偶校验和,由于在k 个信息比特中选择k-2个信息比特最多有nchoosk(k,k-2)种情况,因此最多可以产生nchoosk(k,k-2)个此类奇偶校验比特,按此方法直到传送满n个码字比特为止。依此类推,依次产生k-3个信息比特的校验和,……,直到产生2个信息比特的校验和,1个比特的校验和(即该比特本身)为止,由此得到n-N-k+ki个奇偶校验比特。For example, the encoding means selects all k information bits to generate their parity checksums (i.e. single parity check codes (SPC) encoding). If the total number of bits is less than n, then k-1 information bits are selected from the k information bits to generate the parity checksum of the k-1 information bits; since k-1 information bits are selected from the k information bits There are at most nchoosk(k, k-1) kinds of bits, so at most nchoosk(k, k-1) such parity bits can be generated, and this method is used until n codeword bits are transmitted. If the n bits are still not complemented, k-2 information bits are selected from the k information bits, and the parity checksum of the k-2 information bits is generated. Since k-2 information bits are selected among the k information bits There are at most nchoosk(k, k-2) kinds of information bits, so at most nchoosk(k, k-2) such parity bits can be generated, and this method is used until n codeword bits are transmitted. By analogy, the checksums of k-3 information bits are generated in turn, ... until the checksums of 2 information bits and the checksums of 1 bits (that is, the bits themselves) are generated, thus obtaining nN -k+ki parity bits.
在一种示例中,当所述第一BCH码为非系统码时,所述编码装置增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:所述编码装置对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者,所述编码装置对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者,所述编码装置按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。In an example, when the first BCH code is a non-systematic code, the encoding device adds nN-k+ki bits of repeated bits of the third code, and the specific method may be: the encoding device adding repeating bits of the first nN-k+ki bits of the third code to the third code; or, the encoding device adding the last nN-k+ki bits of the third code to the third code or, according to a preset sequence, the encoding device adds nN-k+ki repeated bits in the third code corresponding to the preset sequence to the third code .
另一种示例中,当所述第一BCH码为系统码时,所述编码装置增加所述第三码的n-N-k+ki个比特的重复比特,具体方法可以为:所述编码装置对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者,所述编码装置对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者,所述编码装置按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。In another example, when the first BCH code is a systematic code, the encoding device adds nN-k+ki bits of repeated bits of the third code. The specific method may be as follows: the encoding device pairs The third code adds the repetition bits of the first nN-k+ki systematic bits of the third code; or, the encoding device adds the last nN-k+ of the third code to the third code ki repetition bits of systematic bits; or, according to a preset sequence, the encoding device adds nN-k+ki systems in the third code corresponding to the preset sequence to the third code Bit-by-bit repetition of bits.
一种示例中,所述编码装置对所述第三码增加A个奇偶校验比特和B个重复比特,具体方法可以为:所述编码装置对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者,所述编码装置对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者,所述编码装置对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。In an example, the encoding device adds A parity bits and B repetition bits to the third code, and the specific method may be: the encoding device adds the A parity bits to the third code. After checking the bits, the B repetition bits are added; or, the encoding device adds the A parity bits after adding the B repetition bits to the third code; Among the A parity check bits and the B repetition bits added by the third code, the adjacent bits of any parity check bit are repetition bits, and the adjacent bits of any repetition bit are parity check bits. bits.
在一种具体的情况中,若第一BCH码为eBCH码时,由于码字比特中已经包含了全部k个信息比特的奇偶校验和,因此无需增加奇偶校验比特,按照上述方法增加其他冗余比特即可。In a specific case, if the first BCH code is an eBCH code, since the codeword bits already contain the parity checksums of all k information bits, there is no need to add parity check bits, and other Redundant bits are sufficient.
例如,通过上述方法,基于N=15的BCH码,构造n=10,k=8的码,若用生成矩阵表示,流程可以如图5所示。其中,对应的生成过程可以如图6所示,图6中虚框中的为得到的(n=10,k=8)码的生成矩阵。For example, through the above method, based on the BCH code of N=15, a code of n=10 and k=8 is constructed. If it is represented by a generator matrix, the process can be shown in FIG. 5 . The corresponding generation process may be shown in FIG. 6 , and the generation matrix of the obtained (n=10, k=8) code is in the dotted box in FIG. 6 .
又例如,通过上述方法,基于N=16的eBCH码,构造n=10,k=8的码,流程可以如图7所示。For another example, through the above method, based on the eBCH code of N=16, a code of n=10 and k=8 is constructed, and the process can be shown in FIG. 7 .
上述得到第一编码参数的过程也即是速率匹配的过程。The above process of obtaining the first encoding parameter is also the process of rate matching.
通过上述得到第一编码参数之后,可以采用现有的编码方法进行BCH码编码,例如线性分组码的编码方法等。After the first encoding parameter is obtained through the above, an existing encoding method can be used to perform BCH code encoding, such as a linear block code encoding method.
采用本申请实施例提供的编码方法,可以使得到的BCH码的码长和码率比较灵活,以适用于无线通信的灵活性信道编码的需求。By using the coding method provided by the embodiment of the present application, the code length and code rate of the obtained BCH code can be made more flexible, so as to be suitable for the requirement of flexible channel coding of wireless communication.
基于上述实施例,本申请实施例提供的编码方法中所述涉及到的BCH码或eBCH码的生成矩阵根据母码长不同,生成矩阵也不同。示例性的,下面列举了本申请适用的母码长为3,4,7,8,15,16,31,32,63,64,127,128,255或256的BCH码和eBCH码的生成矩阵。Based on the foregoing embodiments, the generation matrices of the BCH codes or eBCH codes involved in the coding methods provided in the embodiments of the present application are different according to the lengths of the mother codes. Exemplarily, the following lists the generation of BCH codes and eBCH codes with mother code lengths of 3, 4, 7, 8, 15, 16, 31, 32, 63, 64, 127, 128, 255 or 256 applicable to this application. matrix.
(1)4×4的eBCH码的生成矩阵的形式可以为:(1) The form of the generator matrix of the 4×4 eBCH code can be:
1 0 0 01 0 0 0
1 1 0 01 1 0 0
1 0 1 01 0 1 0
1 1 1 11 1 1 1
其对应的BCH码的生成矩阵的形式可以为以上矩阵的2-4行,2-4列组成的子矩阵。The form of the corresponding generator matrix of the BCH code may be a sub-matrix consisting of 2-4 rows and 2-4 columns of the above matrix.
(2)8×8的eBCH码的生成矩阵的形式可以为:(2) The form of the generator matrix of the 8×8 eBCH code can be:
1 0 0 0 0 0 0 01 0 0 0 0 0 0 0
1 1 0 0 0 0 0 01 1 0 0 0 0 0 0
1 0 1 0 0 0 0 01 0 1 0 0 0 0 0
1 0 0 1 0 0 0 01 0 0 1 0 0 0 0
1 1 1 0 1 0 0 01 1 1 0 1 0 0 0
1 0 1 1 0 1 0 01 0 1 1 0 1 0 0
1 0 0 1 1 0 1 01 0 0 1 1 0 1 0
1 1 1 1 1 1 1 11 1 1 1 1 1 1 1
or
1 0 0 0 0 0 0 01 0 0 0 0 0 0 0
1 1 0 0 0 0 0 01 1 0 0 0 0 0 0
1 0 1 0 0 0 0 01 0 1 0 0 0 0 0
1 0 0 1 0 0 0 01 0 0 1 0 0 0 0
1 1 1 0 1 0 0 01 1 1 0 1 0 0 0
1 0 1 1 0 1 0 01 0 1 1 0 1 0 0
1 0 0 1 1 0 1 01 0 0 1 1 0 1 0
1 0 0 0 1 1 0 11 0 0 0 1 1 0 1
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-8行,2-8列组成的子矩阵。The form of the corresponding generator matrix of the BCH code may be a sub-matrix consisting of 2-8 rows and 2-8 columns of any of the above matrices.
(3)16×16的eBCH码的生成矩阵的形式可以为:(3) The form of the generator matrix of the 16×16 eBCH code can be:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 01 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 01 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 01 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 01 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 01 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 01 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 01 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 01 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 01 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 01 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
or
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 01 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 01 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 01 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 01 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 01 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 01 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 0 0 1 0 1 0 0 0 01 1 1 1 0 1 1 0 0 1 0 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0 1 0 1 0 0 01 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0
1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 01 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0
1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 01 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0
1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 11 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-16行,2-16列组成的子矩阵。The form of the corresponding generator matrix of the BCH code may be a sub-matrix consisting of 2-16 rows and 2-16 columns of any of the above matrices.
(4)32×32的eBCH码的生成矩阵的形式可以为:(4) The form of the generator matrix of the 32×32 eBCH code can be:
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 01 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 01 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 01 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 01 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 01 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0
1 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 01 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0
1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 01 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0
1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 01 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0
1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 01 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0
1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 01 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
or
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 01 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 01 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0
1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 01 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 01 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0
1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 01 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0
1 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 01 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0
1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 01 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0
1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 01 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0
1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 01 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0
1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 01 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0
1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 11 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-32行,2-32列组成的子矩阵。The form of the corresponding generator matrix of the BCH code may be a sub-matrix consisting of 2-32 rows and 2-32 columns of any of the above matrices.
(5)64×64的eBCH码的生成矩阵的形式可以为:(5) The form of the generator matrix of the 64×64 eBCH code can be:
1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000
1100000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000
1001000000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000000000000000000000000
1000100000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000
1000010000000000000000000000000000000000000000000000000000000000100001000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000000000000000000000000000
1110000100000000000000000000000000000000000000000000000000000000111000010000000000000000000000000000000000000000000000000000000
10110000100000000000000000000000000000000000000000000000000000001011000010000000000000000000000000000000000000000000000000000000
1001100001000000000000000000000000000000000000000000000000000000100110000100000000000000000000000000000000000000000000000000000
1000110000100000000000000000000000000000000000000000000000000000100011000010000000000000000000000000000000000000000000000000000
1000011000010000000000000000000000000000000000000000000000000000100001100001000000000000000000000000000000000000000000000000000
1000001100001000000000000000000000000000000000000000000000000000100000110000100000000000000000000000000000000000000000000000000
1100111001010100000000000000000000000000000000000000000000000000110011100101010000000000000000000000000000000000000000000000000
1010011100101010000000000000000000000000000000000000000000000000101001110010101000000000000000000000000000000000000000000000000
1001001110010101000000000000000000000000000000000000000000000000100100111001010100000000000000000000000000000000000000000000000
1000100111001010100000000000000000000000000000000000000000000000100010011100101010000000000000000000000000000000000000000000000
10000100111001010100000000000000000000000000000000000000000000001000010011100101010000000000000000000000000000000000000000000000
10000010011100101010000000000000000000000000000000000000000000001000001001110010101000000000000000000000000000000000000000000000
11111001101000001111000000000000000000000000000000000000000000001111100110100000111100000000000000000000000000000000000000000000
10111100110100000111100000000000000000000000000000000000000000001011110011010000011110000000000000000000000000000000000000000000
10011110011010000011110000000000000000000000000000000000000000001001111001101000001111000000000000000000000000000000000000000000
1000111100110100000111100000000000000000000000000000000000000000100011110011010000011110000000000000000000000000000000000000000
1000011110011010000011110000000000000000000000000000000000000000100001111001101000001111000000000000000000000000000000000000000
10000011110011010000011110000000000000000000000000000000000000001000001111001101000001111000000000000000000000000000000000000000
11110111011100100110110111000000000000000000000000000000000000001111011101110010011011011100000000000000000000000000000000000000
10111011101110010011011011100000000000000000000000000000000000001011101110111001001101101110000000000000000000000000000000000000
10011101110111001001101101110000000000000000000000000000000000001001110111011100100110110111000000000000000000000000000000000000
11100100010000001011101100001000000000000000000000000000000000001110010001000000101110110000100000000000000000000000000000000000
10110010001000000101110110000100000000000000000000000000000000001011001000100000010111011000010000000000000000000000000000000000
10011001000100000010111011000010000000000000000000000000000000001001100100010000001011101100001000000000000000000000000000000000
10001100100010000001011101100001000000000000000000000000000000001000110010001000000101110110000100000000000000000000000000000000
10000110010001000000101110110000100000000000000000000000000000001000011001000100000010111011000010000000000000000000000000000000
10000011001000100000010111011000010000000000000000000000000000001000001100100010000001011101100001000000000000000000000000000000
11110011011010111000010110011111011000000000000000000000000000001111001101101011100001011001111101100000000000000000000000000000
101110011011010111000010110011111011000000000000000000000000000010111001101101011110000101100111110110000000000000000000000000000
10011100110110101110000101100111110110000000000000000000000000001001110011011010111000010110011111011000000000000000000000000000
100011100110110101110000101100111110110000000000000000000000000010001110011011010111000010110011111011000000000000000000000000000
100001110011011010111000010110011111011000000000000000000000000010000111001101101011100001011001111101100000000000000000000000000
100000111001101101011100001011001111101100000000000000000000000010000011100110110101110000101100111110110000000000000000000000000
110000100100100000100001101011001011011110000000000000000000000011000010010010000010000110101100101101111000000000000000000000000
101000010010010000010000110101100101101111000000000000000000000010100001001001000001000011010110010110111100000000000000000000000
10010000100100100000100001101011001011011110000000000000000000001001000010010010000010000110101100101101111000000000000000000000
100010000100100100000100001101011001011011110000000000000000000010001000010010010000010000110101100101101111000000000000000000000
100001000010010010000010000110101100101101111000000000000000000010000100001001001000001000011010110010110111100000000000000000000
100000100001001001000001000011010110010110111100000000000000000010000010000100100100000100001101011001011011110000000000000000000
110101011110010111001010010101101000011001111010000000000000000011010101111001011100101001010110100001100111101000000000000000000
101010101111001011100101001010110100001100111101000000000000000010101010111100101110010100101011010000110011110100000000000000000
111010100110111001011101111010000110010011011001100000000000000011101010011011100101110111101000011001001101100110000000000000000
101101010011011100101110111101000011001001101100110000000000000010110101001101110010111011110100001100100110110011000000000000000
100110101001101110010111011110100001100100110110011000000000000010011010100110111001011101111010000110010011011001100000000000000
100011010100110111001011101111010000110010011011001100000000000010001101010011011100101110111101000011001001101100110000000000000
10000110101001101110010111011110100001100100110110011000000000001000011010100110111001011101111010000110010011011001100000000000
10000011010100110111001011101111010000110010011011001100000000001000001101010011011100101110111101000011001001101100110000000000
11011011000001010101110101011010001100100100110101110010000000001101101100000101010111010101101000110010010011010111001000000000
10101101100000101010111010101101000110010010011010111001000000001010110110000010101011101010110100011001001001101011100100000000
10010110110000010101011101010110100011001001001101011100100000001001011011000001010101110101011010001100100100110101110010000000
11111101111001110101100001011100011011010010001001100101010000001111110111100111010110000101110001101101001000100110010101000000
10111110111100111010110000101110001101101001000100110010101000001011111011110011101011000010111000110110100100010011001010100000
10011111011110011101011000010111000110110100100010011001010100001001111101111001110101100001011100011011010010001001100101010000
10001111101111001110101100001011100011011010010001001100101010001000111110111100111010110000101110001101101001000100110010101000
10000111110111100111010110000101110001101101001000100110010101001000011111011110011101011000010111000110110100100010011001010100
10000011111011110011101011000010111000110110100100010011001010101000001111101111001110101100001011100011011010010001001100101010
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
or
1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000
1100000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000
1001000000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000000000000000000000000
1000100000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000
1000010000000000000000000000000000000000000000000000000000000000100001000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000000000000000000000000000
1110000100000000000000000000000000000000000000000000000000000000111000010000000000000000000000000000000000000000000000000000000
10110000100000000000000000000000000000000000000000000000000000001011000010000000000000000000000000000000000000000000000000000000
1001100001000000000000000000000000000000000000000000000000000000100110000100000000000000000000000000000000000000000000000000000
1000110000100000000000000000000000000000000000000000000000000000100011000010000000000000000000000000000000000000000000000000000
1000011000010000000000000000000000000000000000000000000000000000100001100001000000000000000000000000000000000000000000000000000
1000001100001000000000000000000000000000000000000000000000000000100000110000100000000000000000000000000000000000000000000000000
1100111001010100000000000000000000000000000000000000000000000000110011100101010000000000000000000000000000000000000000000000000
1010011100101010000000000000000000000000000000000000000000000000101001110010101000000000000000000000000000000000000000000000000
1001001110010101000000000000000000000000000000000000000000000000100100111001010100000000000000000000000000000000000000000000000
1000100111001010100000000000000000000000000000000000000000000000100010011100101010000000000000000000000000000000000000000000000
10000100111001010100000000000000000000000000000000000000000000001000010011100101010000000000000000000000000000000000000000000000
10000010011100101010000000000000000000000000000000000000000000001000001001110010101000000000000000000000000000000000000000000000
11111001101000001111000000000000000000000000000000000000000000001111100110100000111100000000000000000000000000000000000000000000
10111100110100000111100000000000000000000000000000000000000000001011110011010000011110000000000000000000000000000000000000000000
10011110011010000011110000000000000000000000000000000000000000001001111001101000001111000000000000000000000000000000000000000000
1000111100110100000111100000000000000000000000000000000000000000100011110011010000011110000000000000000000000000000000000000000
1000011110011010000011110000000000000000000000000000000000000000100001111001101000001111000000000000000000000000000000000000000
10000011110011010000011110000000000000000000000000000000000000001000001111001101000001111000000000000000000000000000000000000000
11110111011100100110110111000000000000000000000000000000000000001111011101110010011011011100000000000000000000000000000000000000
10111011101110010011011011100000000000000000000000000000000000001011101110111001001101101110000000000000000000000000000000000000
10011101110111001001101101110000000000000000000000000000000000001001110111011100100110110111000000000000000000000000000000000000
11100100010000001011101100001000000000000000000000000000000000001110010001000000101110110000100000000000000000000000000000000000
10110010001000000101110110000100000000000000000000000000000000001011001000100000010111011000010000000000000000000000000000000000
10011001000100000010111011000010000000000000000000000000000000001001100100010000001011101100001000000000000000000000000000000000
10001100100010000001011101100001000000000000000000000000000000001000110010001000000101110110000100000000000000000000000000000000
10000110010001000000101110110000100000000000000000000000000000001000011001000100000010111011000010000000000000000000000000000000
10000011001000100000010111011000010000000000000000000000000000001000001100100010000001011101100001000000000000000000000000000000
11110011011010111000010110011111011000000000000000000000000000001111001101101011100001011001111101100000000000000000000000000000
101110011011010111000010110011111011000000000000000000000000000010111001101101011110000101100111110110000000000000000000000000000
10011100110110101110000101100111110110000000000000000000000000001001110011011010111000010110011111011000000000000000000000000000
100011100110110101110000101100111110110000000000000000000000000010001110011011010111000010110011111011000000000000000000000000000
100001110011011010111000010110011111011000000000000000000000000010000111001101101011100001011001111101100000000000000000000000000
100000111001101101011100001011001111101100000000000000000000000010000011100110110101110000101100111110110000000000000000000000000
110000100100100000100001101011001011011110000000000000000000000011000010010010000010000110101100101101111000000000000000000000000
101000010010010000010000110101100101101111000000000000000000000010100001001001000001000011010110010110111100000000000000000000000
10010000100100100000100001101011001011011110000000000000000000001001000010010010000010000110101100101101111000000000000000000000
100010000100100100000100001101011001011011110000000000000000000010001000010010010000010000110101100101101111000000000000000000000
100001000010010010000010000110101100101101111000000000000000000010000100001001001000001000011010110010110111100000000000000000000
100000100001001001000001000011010110010110111100000000000000000010000010000100100100000100001101011001011011110000000000000000000
110101011110010111001010010101101000011001111010000000000000000011010101111001011100101001010110100001100111101000000000000000000
101010101111001011100101001010110100001100111101000000000000000010101010111100101110010100101011010000110011110100000000000000000
111010100110111001011101111010000110010011011001100000000000000011101010011011100101110111101000011001001101100110000000000000000
101101010011011100101110111101000011001001101100110000000000000010110101001101110010111011110100001100100110110011000000000000000
100110101001101110010111011110100001100100110110011000000000000010011010100110111001011101111010000110010011011001100000000000000
100011010100110111001011101111010000110010011011001100000000000010001101010011011100101110111101000011001001101100110000000000000
10000110101001101110010111011110100001100100110110011000000000001000011010100110111001011101111010000110010011011001100000000000
10000011010100110111001011101111010000110010011011001100000000001000001101010011011100101110111101000011001001101100110000000000
11011011000001010101110101011010001100100100110101110010000000001101101100000101010111010101101000110010010011010111001000000000
10101101100000101010111010101101000110010010011010111001000000001010110110000010101011101010110100011001001001101011100100000000
10010110110000010101011101010110100011001001001101011100100000001001011011000001010101110101011010001100100100110101110010000000
11111101111001110101100001011100011011010010001001100101010000001111110111100111010110000101110001101101001000100110010101000000
10111110111100111010110000101110001101101001000100110010101000001011111011110011101011000010111000110110100100010011001010100000
10011111011110011101011000010111000110110100100010011001010100001001111101111001110101100001011100011011010010001001100101010000
10001111101111001110101100001011100011011010010001001100101010001000111110111100111010110000101110001101101001000100110010101000
10000111110111100111010110000101110001101101001000100110010101001000011111011110011101011000010111000110110100100010011001010100
10000011111011110011101011000010111000110110100100010011001010101000001111101111001110101100001011100011011010010001001100101010
10000001111101111001110101100001011100011011010010001001100101011000000111110111100111010110000101110001101101001000100110010101
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-64行,2-64列组成的子矩阵。The form of the corresponding generator matrix of the BCH code may be a submatrix consisting of 2-64 rows and 2-64 columns of any of the above matrices.
(6)128×128的eBCH码的生成矩阵的形式可以为:(6) The form of the generator matrix of the 128×128 eBCH code can be:
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
111000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001110101100100001110010011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
111101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
101110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101011001001000000011011110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000
100001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000
111011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000000001110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000
10110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000000101101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000
100110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000001001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000
100011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000001000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000
1000011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000010000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000
100000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000001000001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000
10000001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000100000011011110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000
11011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000000110110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
101011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000001010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
100101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000001001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000
10001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000100010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
10000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000100001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000
100000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000001000001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000
100000010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000001000000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000
11101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000000000111010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000
1011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000010110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
10011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000100110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
100011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000001000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
1000011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000010000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000
100000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000001000001101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000
1000000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000010000001101011111111010100110101010110100111000100000101110101001100000000000000000000000000000000000000000000000000000000000000
110100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000000001101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000
1010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000000010101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000
1001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000000010010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000
1000101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000010001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000
100001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000001000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000
1000001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000010000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000
10000001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000100000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000
110001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000001100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000000
1010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000010100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000
1001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000000010010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000
100010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000001000100010111111100101111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000
10000100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000100001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000
100000100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000001000001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000
10000001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000100000010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000
11000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000000110001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000000
10100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000000000101000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000
1001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000010010001000110000010110001000101010000000110011011001010101010100101011001001001101000000000000000000000000000000000000000000000
1000100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000000010001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000
100001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000001000010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000
100000100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000001000001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000
10000001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000100000010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000
1110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000000011100011100011111010000100101000101011110100101001010111110100010010111111100010111111100000000000000000000000000000000000000
10110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000000101100011100011111010000100101000101011110100101001010111110100010010111111100010111111100000000000000000000000000000000000000
10011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000000100110001110001111101000010010100010101111010010100101011111010001001011111110001011111110000000000000000000000000000000000000
10001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000000100011000111000111110100001001010001010111101001010010101111010001001011111110001011111111000000000000000000000000000000000000
10000110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000100001100011100011111010000100101000101011110100101001010111101000100101111111000101111111100000000000000000000000000000000000
10000011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000100000110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000
10000001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000100000011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000
110111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000000001101110111100010111001111101001011111001001000101111000010010101011011011001111100001100110011000000000000000000000000000000000
1010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000000010101110111100010111001111101001011111001001000101111000010010101011011011001111100001100110011000000000000000000000000000000000
100101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000000001001011101111000101110011111010010111110010010001011110000100101010110110110011111000011001100110000000000000000000000000000000
100010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000001000101110111100010111001111101001011111001001000101111000010010101011011011001111100001100110011000000000000000000000000000000
1000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000010000101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000
1000001011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000010000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000
100000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000001000000101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000
1101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000000000011011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000
101011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000001010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000
100101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000000001001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000
100010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000001000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000000000000000000000
100001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000001000010110110001111110010000110000011010111101101111100000110001110111110111101000110010011001001100000010000000000000000000
100000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000001000001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000
100000010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000001000000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000
1110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000000011100010001110010111111100110110100111010010011011110001010010101010010111001000001000111000011111110110010100000000000000000
10110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000000101100010001110010111111100110110100111010010011011110001010010101010010111001000001000111000011111110110010100000000000000000
10011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000000100110001000111001011111110011011010011101001001101111000101001010101001011100100000100011110000111111101100101000000000000000
100011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000001000110001000111001011111110011011010011101001001101110001010010101010010111001000001000111100001111111110100100000000000000000
100001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000001000011000100011100101111111001101101001110100100110111000101001010101001011100100000100011110000111111111010010000000000000000
100000110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000001000001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100100000000000
10000001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000100000011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111101001010000000000
111010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000000001110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000001000000000000
101101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000000001011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100000000000000000
10011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000000100110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010000000000
100011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000001000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000000000000000
10000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000000100001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000000000000
100000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000001000001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000000000000000
10000001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000100000011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100000000000
111110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100000001111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001110000
101111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110000001011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111110101010000010110101110000111000
10011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100000100111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010011000011100
1000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000010001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110
10000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000100001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101100100011100
1000001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110010000011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010111011001110101100110010101100011000010010111101010100000010110101100100111
100000011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011101000000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101110110011101000101001001111100110010101100011000010010111101010100000101101110010001
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
or
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001110111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101110110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000111011101100001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110111011000010000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000100000011101111011000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
111000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001100011110011011011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000011000111100110110110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110001111001101101100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001110101100100001110010011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000100111010110010000111001001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001110101100100001110010011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010011101011001000011100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
111101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
101110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101011001001000000011011110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000
100001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011101011001001000000011011100101001100000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101011001001000000011011100101001100000000000000000000000000000000 0000000000000000000000000000000000000000000000000000001000001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111010110010010000000110111001010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001110101100100100000001101110010100110000000000000000000000000000000000000000000000000000000000000000000000000000000000
111011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000000001110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000
10110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000000101101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000
100110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000000001001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000
100011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000001000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000
1000011011101001001011001111100100100011100011010000000000000000000000000000000000000000000000000000000000000000000000000000000010000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000
100000110111010010010110011111001001000111000110100000000000000000000000000000000000000000000000000000000000000000000000000000001000001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000
10000001101110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000000100000011011110100100101100111110010010001110001101000000000000000000000000000000000000000000000000000000000000000000000000000
11011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000000110110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
101011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000001010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
100101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000001001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000
10001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000000100010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000000
10000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000000100001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000000
100000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000000001000001011001000001101000110111000100000000001100100110100000000000000000000000000000000000000000000000000000000000000000000
100000010110010000011010001101110001000000000011001001101000000000000000000000000000000000000000000000000000000000000000000000001000000101100100000110100011011100010000000000110010011010000000000000000000000000000000000000000000000000000000000000000000
11101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000000000111010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000
1011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000010110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
10011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000000100110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
100011010111111101010011010101011010011100010000010110101001100000000000000000000000000000000000000000000000000000000000000000001000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000000
10000110101111111010100110101010110100111000100000101101010011000000000000 000000000000000000000000000000000000000000000000000000100001101011111110101001101010101101001110001000001011010100110000000000000 00000000000000000000000000000000000000000000000
100000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000001000001101011111110101001101010101101001110001000001011010100110000000000000000000000000000000000000000000000000000000000000000
1000000110101111111010100110101010110100111000100000101101010011000000000000000000000000000000000000000000000000000000000000000010000001101011111111010100110101010110100111000100000101110101001100000000000000000000000000000000000000000000000000000000000000
110100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000000001101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000
1010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000000010101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000
1001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000000010010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000
1000101001000000000100110111111000111101101010000001110101011000010100000000000000000000000000000000000000000000000000000000000010001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000
100001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000001000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000000
1000001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000010000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000
10000001010010000000001001101111110001111011010100000011101010110000101000000000000000000000000000000000000000000000000000000000100000010100100000000010011011111100011110110101000000111010101100001010000000000000000000000000000000000000000000000000000000
110001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000001100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000000
1010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000010100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000
1001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000000010010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000000
100010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000001000100010111111100101111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000000
10000100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000000100001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000
100000100010111111100101110101000101000111101000101010101010101011010101110110000000000000000000000000000000000000000000000000001000001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000
10000001000101111111001011101010001010001111010001010101010101010110101011101100000000000000000000000000000000000000000000000000100000010001011111110010111010100010100011110100010101010101010101101010111011000000000000000000000000000000000000000000000000
11000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000000110001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000000
10100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000000000101000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000
1001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000000010010001000110000010110001000101010000000110011011001010101010100101011001001001101000000000000000000000000000000000000000000000
10001000100011000001011000100010101000000011001101100101010101001010110010 01001101000000000000000000000000000000000000000000000010001000100011000001011000100010101000000011001101100101010101001010110010 010011010000000000000000000000000000000000000000
100001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000001000010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000000
100000100010001100000101100010001010100000001100110110010101010100101011001001001101000000000000000000000000000000000000000000001000001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000
10000001000100011000001011000100010101000000011001101100101010101001010110010010011010000000000000000000000000000000000000000000100000010001000110000010110001000101010000000110011011001010101010010101100100100110100000000000000000000000000000000000000000
1110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000000011100011100011111010000100101000101011110100101001010111110100010010111111100010111111100000000000000000000000000000000000000
10110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000000101100011100011111010000100101000101011110100101001010111110100010010111111100010111111100000000000000000000000000000000000000
10011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000000100110001110001111101000010010100010101111010010100101011111010001001011111110001011111110000000000000000000000000000000000000
10001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000000100011000111000111110100001001010001010111101001010010101111010001001011111110001011111111000000000000000000000000000000000000
10000110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000000100001100011100011111010000100101000101011110100101001010111101000100101111111000101111111100000000000000000000000000000000000
10000011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000000100000110001110001111101000010010100010101111010010100101011110100010010111111100010111111100000000000000000000000000000000000
10000001100011100011111010000100101000101011110100101001010111101000100101111111000101111111000000000000000000000000000000000000100000011000111000111110100001001010001010111101001010010101111010001001011111110001011111110000000000000000000000000000000000
110111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000000001101110111100010111001111101001011111001001000101111000010010101011011011001111100001100110011000000000000000000000000000000000
1010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000000010101110111100010111001111101001011111001001000101111000010010101011011011001111100001100110011000000000000000000000000000000000
100101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000000001001011101111000101110011111010010111110010010001011110000100101010110110110011111000011001100110000000000000000000000000000000
100010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000001000101110111100010111001111101001011111001001000101111000010010101011011011001111100001100110011000000000000000000000000000000
1000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000000010000101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000000
1000001011101111000101110011111010010111110010010001011110000100101010110110110011110000110011001100000000000000000000000000000010000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000
100000010111011110001011100111110100101111100100100010111100001001010101101101100111100001100110011000000000000000000000000000001000000101110111100010111001111101001011111001001000101111000010010101011011011001111000011001100110000000000000000000000000
1101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000000000011011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000
101011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000000001010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000
100101101100011111100100001100000110101111011011110000011000111011111011110 10001100100110010011000000100000000000000000000000000100101101100011111100100001100000110101111011011110000011000111011111011110 1000110010011001001100000001000000000000000000000
100010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000000001000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000000000000000000000
100001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000000001000010110110001111110010000110000011010111101101111100000110001110111110111101000110010011001001100000010000000000000000000
100000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000000001000001011011000111111001000011000001101011110110111100000110001110111110111101000110010011001001100000010000000000000000000
100000010110110001111110010000110000011010111101101111000001100011101111101111010001100100110010011000000100000000000000000000001000000101101100011111100100001100000110101111011011110000011000111011111011110100011001001100100110000001000000000000000000
1110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000000011100010001110010111111100110110100111010010011011110001010010101010010111001000001000111000011111110110010100000000000000000
10110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000000000101100010001110010111111100110110100111010010011011110001010010101010010111001000001000111000011111110110010100000000000000000
10011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000000100110001000111001011111110011011010011101001001101111000101001010101001011100100000100011110000111111101100101000000000000000
100011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111011001010000000000000000001000110001000111001011111110011011010011101001001101110001010010101010010111001000001000111100001111111110100100000000000000000
100001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000001000011000100011100101111111001101101001110100100110111000101001010101001011100100000100011110000111111111010010000000000000000
100000110001000111001011111110011011010011101001001101110001010010101010010111001000001000111000011111110110010100000000000000001000001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100100000000000
10000001100010001110010111111100110110100111010010011011100010100101010100101110010000010001110000111111101100101000000000000000100000011000100011100101111111001101101001110100100110111000101001010101001011100100000100011100001111111101001010000000000
111010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000000001110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000001000000000000
101101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000000001011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100000000000000000
10011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000000100110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010000000000
100011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100001001000000000001000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000000000000000
10000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000000100001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000000000000
100000110101110001000011111100010010011111110100000110010101000111111001101101001000011101001001010001000111101000010010000000001000001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000000000000000
10000001101011100010000111111000100100111111101000001100101010001111110011011010010000111010010010100010001111010000100100000000100000011010111000100001111110001001001111111010000011001010100011111100110110100100001110100100101000100011110100000000000
111110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100000001111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001110000
101111000100001101001101101111110111011001110100010100100111110011001010110 00110000100101111010101000001011010111001000111000000101111000100001101001101101111110111011001110100010100100111110011001010110 001100001001011110101010000010110101100100011100
10011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011100000100111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010011000011100
1000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000010001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110
10000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111000100001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101100100011100
1000001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011110101010000010110101110010001110010000011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010111011001110101100110010101100011000010010111101010100000010110101100100111
100000011110001000011010011011011111101110110011101000101001001111100110010101100011000010010111101010100000101101011100100011101000000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101110110011101000101001001111100110010101100011000010010111101010100000101101110010001
10000000111100010000110100110110111111011101100111010001010010011111001100101011000110000100101111010101000001011010111001000111100000001111000100001101001101101111110111011001110100010100100111110011001010110001100001001011111010101110110011110111001000
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-128行,2-128列组成的子矩阵。The form of the corresponding generator matrix of the BCH code may be a sub-matrix consisting of 2-128 rows and 2-128 columns of any of the above matrices.
(7)256×256的eBCH码的生成矩阵的形式可以为:(7) The form of the generator matrix of the 256×256 eBCH code can be:
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
101000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101110100110011111011011010110010001111110000011100111001101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101110100110011111011011010110010001111110000011100111001101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010001110100100111000101011100001011101001111100010110110111100010010010101011011100101011110011001111001011101011110000100100111101011000011000010101101000010111101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010001110100100111000101011100001011101001111100010110110111100010010010101011011100101011110011001111001011101011110000100100111101011000011000010101101000010111101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000001011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000001000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000001000001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000001000000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000
11011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000000001101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000000
10101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000001010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000000
10010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000001001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000000
10001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000001000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000
10000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000001000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000
10000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000001000001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000
10000001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000001000000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000
10000000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000001000000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000
11011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000000001101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000000
10101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000001010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000000
10010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000001001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000000
10001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000001000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000
10000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000001000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000
10000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000001000001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000
10000001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000001000000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000
10000000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000001000000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000
11000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000000001100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000000
10100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000001010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000000
10010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000001001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000000
10001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000001000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000
10000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000001000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000
10000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000001000001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000
10000001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000001000000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000
10000000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000001000000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000
11111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000000001111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000000
10111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000001011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000000
10011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000001001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000000
10001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000001000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000
10000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000001000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000
10000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000001000001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000
10000001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000001000000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000
10000000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000001000000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000
11101111001100011010101011010010100000110110001010000001010010000110010011010011000011101101100101001011111001101100100110000011111111101000010001101100001100111010110010110100110001111000000100011011101101010100000000000000000000000000000000000000000000001110111100110001101010101101001010000011011000101000000101001000011001001101001100001110110110010100101111100110110010011000001111111110100001000110110000110011101011001011010011000111100000010001101110110101010000000000000000000000000000000000000000000000
10110111100110001101010101101001010000011011000101000000101001000011001001101001100001110110110010100101111100110110010011000001111111110100001000110110000110011101011001011010011000111100000010001101110110101010000000000000000000000000000000000000000000001011011110011000110101010110100101000001101100010100000010100100001100100110100110000111011011001010010111110011011001001100000111111111010000100011011000011001110101100101101001100011110000001000110111011010101000000000000000000000000000000000000000000000
11000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000000001100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000000
10100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000001010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000000
10010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000001001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000000
10001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000001000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000
10000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000001000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000
10000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000001000001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000
10000001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000001000000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000
10000000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000001000000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000
11100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000000001110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000000
10110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000001011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000000
10011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000001001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000000
10001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000001000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000
10000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000001000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000
10000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000001000001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000
10000001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000001000000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000
10000000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000001000000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000
11111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000000001111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000000
10111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000001011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000000
10011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000001001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000000
10001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000001000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000
10000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000001000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000
10000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000001000001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000
10000001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000001000000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000
10000000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000001000000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000
11010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000000001101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000000
10101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000001010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000000
10010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000001001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000000
10001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000001000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000
10000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000001000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000
10000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000001000001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000
10000001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000001000000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000
10000000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000001000000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000
11110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000000001111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000000
10111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000001011100110100000010100001100100111010001101000011110111010001011111101100111110011000000110001110101111100110100100111111101100011011000100000001101100000010101000110011111011110101101000100100110100101110101010100010100000001011011110000101100100000000000
10011100110100000010100001100100111010001101000011110111010001011111101100111110011000000110001110101111100110100100111111101100011011000100000001101100000010101000110011111011110101101000100100110100101110101010100010100000001011011110000101100100000000001001110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000000
10001110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000001000111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000
11111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000000001111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000000
10111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000001011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000000
10011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000001001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000000
10001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000001000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000
10000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100001000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000
10000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110001000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000
10000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011001000000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100
10000000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101101000000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
or
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
110111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000110111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000
10101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000001011100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000100110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000
10001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001100011011110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000110001101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011000110111101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000100001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000
10000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001010110110000101110111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101011011000010111011101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010101101100001011101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001011111101000010110110100111011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101111110100001011011010011101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010111111010000101101101001110111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000100010110101110010111011111011001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100010001011010111001011101111101100110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010001000101101011100101110111110110011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000001111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
10111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001110100100111100111110111010000111010111111000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111010010011110011111011101000011101011111100011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011101001001111001111101110100001110101111110001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
101000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
100100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000100100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000
10001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000011100100101110000100010001110101001100001101100111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100001110010010111000010001000111010100110000110110011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000111001001011100001000100011101010011000011011001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101110100110011111011011010110010001111110000011100111001101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101110100110011111011011010110010001111110000011100111001101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110111010011001111101101101011001000111111000001110011100110110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111011101001100111110110110101100100011111100000111001110011011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000001100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
10100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001011100111100100100101101000000000000011011101001101011011110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100101110011110010010010110100000000000001101110100110101101111010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010010111001111001001001011010000000000000110111010011010110111101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000001001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
10001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001011010010000001100111000010101100010000011101111001110001001110010100110100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101101001000000110011100001010110001000001110111100111000100111001010011010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010110100100000011001110000101011000100000111011110011100010011100101001101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000010000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000
10000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001111100110001100111000110001111110000111011100100011100101000100011000100111000011011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111110011000110011100011000111111000011101110010001110010100010001100010011100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011111001100011001110001100011111100001110111001000111001010001000110001001110000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000010000001000000110011001010010101110011111011001011010100000111011110000001001011011000010000001011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000
10000000100000011001100101001010111001111101100101101010000011101111000000100101101100001000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000001100110010100101011100111110110010110101000001110111100000010010110110000100000010111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001101100111111110110010110010110001010100101111011000001010110111110000011010000001101001011111011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000110110011111111011001011001011000101010010111101100000101011011111000001101000000110100101111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011011001111111101100101100101100010101001011110110000010101101111100000110100000011010010111110111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000001100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
10100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001001111001000001000010011010001101010111000010001101010101011010111001111101011101111000001101000100010111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100100111100100000100001001101000110101011100001000110101010101101011100111110101110111100000110100010001011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010010011110010000010000100110100011010101110000100011010101010110101110011111010111011110000011010001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000010010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000
10001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001010010011110111011101010011110010100001101110100101110001111011000111011011111000000110000101101111000000011000110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000101001001111011101110101001111001010000110111010010111000111101100011101101111100000011000010110111100000001100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010100100111101110111010100111100101000011011101001011100011110110001110110111110000001100001011011110000000110001100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000001000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
10000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001110011010111000010100000100011000100010011111110100001010101000110101001011000001001011001110011001101101101001111011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100111001101011100001010000010001100010001001111111010000101010100011010100101100000100101100111001100110110110100111101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010011100110101110000101000001000110001000100111111101000010101010001101010010110000010010110011100110011011011010011110110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001110110100110001010101110100110100101000011000111001010110101100001000101111001111100000000110110000100010100101010000011000110000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000001000000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
10000000111011010011000101010111010011010010100001100011100101011010110000100010111100111110000000011011000010001010010101000001100011000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011101101001100010101011101001101001010000110001110010101101011000010001011110011111000000001101100001000101001010100000110001100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001111101110101110011101001100111011010101011100111110100000000110010000010111100111100110101110010100000001000101111011010110110110101010000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111110111010111001110100110011101101010101110011111010000000011001000001011110011110011010111001010000000100010111101101011011011010101000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000011111011101011100111010011001110110101010111001111101000000001100100000101111001111001101011100101000000010001011110110101101101101010100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
110000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000110000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000
10100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001000010010011011000001011110011111010111111000000100011110011101011100100000001101111000010101001100111010100110110000100101100101111111010000100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100001001001101100000101111001111101011111100000010001111001110101110010000000110111100001010100110011101010011011000010010110010111111101000010010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000100100110110000010111100111110101111110000001000111100111010111001000000011011110000101010011001110101001101100001001011001011111110100001001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000001001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000
10001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001001100011100001100101100010111110001001000010101010100101101100011111011000000100111000011000011110100100100011111001101110011101010101110110110111010110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000100110001110000110010110001011111000100100001010101010010110110001111101100000010011100001100001111010010010001111100110111001110101010111011011011101011000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010011000111000011001011000101111100010010000101010101001011011000111110110000001001110000110000111101001001000111110011011100111010101011101101101110101100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
11000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010001110100100111000101011100001011101001111100010110110111100010010010101011011100101011110011001111001011101011110000100100111101011000011000010101101000010111101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10010001110100100111000101011100001011101001111100010110110111100010010010101011011100101011110011001111001011101011110000100100111101011000011000010101101000010111101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001000111010010011100010101110000101110100111110001011011011110001001001010101101110010101111001100111100101110101111000010010011110101100001100001010110100001011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100011101001001110001010111000010111010011111000101101101111000100100101010110111001010111100110011110010111010111100001001001111010110000110000101011010000101111011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000 0000000000000000000000001111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000 000000000000000000000000
10111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000001011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000001000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000001000001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000
10000001111001101000101111001001101101110101010011010100101110110000100110010000101111001110001100011100111001100101011100010111100101100011110011000011100111110111101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000001000000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000000
10000000111100110100010111100100110110111010101001101010010111011000010011001000010111100111000110001110011100110010101110001011110010110001111001100001110011111011110100000100100000000000000000000000000000000000000000000000000000000000000000000000000000001000000011110011010001011110010011011011101010100110101001011101100001001100100001011110011100011000111001110011001010111000101111001011000111100110000111001111101111010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000
11011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000000001101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000000
10101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000001010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000000
1001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000 0000000000000000000000001001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000 000000000000000000000000
10001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000001000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000000
10000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000001000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000000
10000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000001000001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000000
10000001011011100100011101000011010110111111001001110110101101011000001000100110011111000110111101110000100010011100001110100000100000000001011111010111111100111011100000000001110110110000000000000000000000000000000000000000000000000000000000000000000000001000000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000000
10000000101101110010001110100001101011011111100100111011010110101100000100010011001111100011011110111000010001001110000111010000010000000000101111101011111110011101110000000000111011011000000000000000000000000000000000000000000000000000000000000000000000001000000010110111001000111010000110101101111110010011101101011010110000010001001100111110001101111011100001000100111000011101000001000000000010111110101111111001110111000000000011101101100000000000000000000000000000000000000000000000000000000000000000000000
11011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000000001101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000000
10101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000001010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000000
10010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000000001001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000000
10001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000001000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000000
1000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000 0000000000000000000000001000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000 000000000000000000000000
10000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000001000001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000000
10000001011100000110001111000100101100010111111011010100111100001010100010010011010000101100111001001101100101001000101111000011011011011001011000101100010010110000101010001001110010100000010100000000000000000000000000000000000000000000000000000000000000001000000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000000
10000000101110000011000111100010010110001011111101101010011110000101010001001001101000010110011100100110110010100100010111100001101101101100101100010110001001011000010101000100111001010000001010000000000000000000000000000000000000000000000000000000000000001000000010111000001100011110001001011000101111110110101001111000010101000100100110100001011001110010011011001010010001011110000110110110110010110001011000100101100001010100010011100101000000101000000000000000000000000000000000000000000000000000000000000000
11000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000000001100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000000
10100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000001010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000000
10010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000001001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000000
10001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000001000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000000
10000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000000001000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000000
10000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000001000001000001101100011010100001110111010111101000111110110101011010010110101111001001000110110111100000001110001111111011101111000101011001101010101100010011011100111001011010001011110010011011110001000000000000000000000000000000000000000000000000000000000
1000000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000 0000000000000000000000001000000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000 000000000000000000000000
10000000100000110110001101010000111011101011110100011111011010101101001011010111100100100011011011110000000111000111111101110111100010101100110101010110001001101110011100101101000101111001001101111000100000000000000000000000000000000000000000000000000000001000000010000011011000110101000011101110101111010001111101101010110100101101011110010010001101101111000000011100011111110111011110001010110011010101011000100110111001110010110100010111100100110111100010000000000000000000000000000000000000000000000000000000
11111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000000001111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000000
10111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000001011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000000
10011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000001001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000000
10001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000001000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000000
10000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000001000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000000
10000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000001000001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000000
10000001111000111101110011011100000110100010010010001111011010001000001011011110110101100011000011010101100011010000101100000110001101011110101011000001101101000000001001000001011100000101010100011011001101110000000000000000000000000000000000000000000000001000000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000000
10000000111100011110111001101110000011010001001001000111101101000100000101101111011010110001100001101010110001101000010110000011000110101111010101100000110110100000000100100000101110000010101010001101100110111000000000000000000000000000000000000000000000001000000011110001111011100110111000001101000100100100011110110100010000010110111101101011000110000110101011000110100001011000001100011010111101010110000011011010000000010010000010111000001010101000110110011011100000000000000000000000000000000000000000000000
111011110011000110101010110100101000001101100010100000010100100001100100110100110000111011011001010010111110011011001001100000111111111010000100011011000011001110101100101101001100011110000001000110111011010101000000000000000000000 0000000000000000000000000111011110011000110101010110100101000001101100010100000010100100001100100110100110000111011011001010010111110011011001001100000111111111010000100011011000011001110101100101101001100011110000001000110111011010101000000000000000000000 0000000000000000000000000
10110111100110001101010101101001010000011011000101000000101001000011001001101001100001110110110010100101111100110110010011000001111111110100001000110110000110011101011001011010011000111100000010001101110110101010000000000000000000000000000000000000000000001011011110011000110101010110100101000001101100010100000010100100001100100110100110000111011011001010010111110011011001001100000111111111010000100011011000011001110101100101101001100011110000001000110111011010101000000000000000000000000000000000000000000000
11000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000000001100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000000
10100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000001010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000000
10010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000001001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000000
10001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000001000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000000
10000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000001000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000000
10000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000001000001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000000
10000001000011011001010001010100001111011000100000101101100001101111100100111110001110010010100000001110111100111011000001111100100010111111100110011101000001001001101001000111000011100101011010000111010000100000101011000000000000000000000000000000000000001000000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000000
10000000100001101100101000101010000111101100010000010110110000110111110010011111000111001001010000000111011110011101100000111110010001011111110011001110100000100100110100100011100001110010101101000011101000010000010101100000000000000000000000000000000000001000000010000110110010100010101000011110110001000001011011000011011111001001111100011100100101000000011101111001110110000011111001000101111111001100111010000010010011010010001110000111001010110100001110100001000001010110000000000000000000000000000000000000
11100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000 0000000000000000000000011100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000 00000000000000000000000
10110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000001011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000000
10011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000001001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000000
10001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000001000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000000
10000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000001000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000000
10000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000001000001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000000
10000001100000000010010001100000011111101110011011100010010111110011100101100011100101100011111000110001111011101110000100010001101011111100011010010101110010011111111000011000011110000001110110001011010100001101100111101001010000000000000000000000000000001000000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000000
10000000110000000001001000110000001111110111001101110001001011111001110010110001110010110001111100011000111101110111000010001000110101111110001101001010111001001111111100001100001111000000111011000101101010000110110011110100101000000000000000000000000000001000000011000000000100100011000000111111011100110111000100101111100111001011000111001011000111110001100011110111011100001000100011010111111000110100101011100100111111110000110000111100000011101100010110101000011011001111010010100000000000000000000000000000
11111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000000001111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000000
10111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000001011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000000
10011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000 0000000000000000000000010011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000 00000000000000000000000
10001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000001000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000000
10000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000001000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000000
10000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000001000001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000000
10000001111100001010111011100000010001000011111010110011010100000110000011001000011111001000000100010101100100010100100011101011001001111111101000111100101000000010110001110101011010110011001110001101110110111101011011001111010100001100000000000000000000001000000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000000
10000000111110000101011101110000001000100001111101011001101010000011000001100100001111100100000010001010110010001010010001110101100100111111110100011110010100000001011000111010101101011001100111000110111011011110101101100111101010000110000000000000000000001000000011111000010101110111000000100010000111110101100110101000001100000110010000111110010000001000101011001000101001000111010110010011111111010001111001010000000101100011101010110101100110011100011011101101111010110110011110101000011000000000000000000000
11010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000000001101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000000
10101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000001010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000000
10010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000000001001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000000
10001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000001000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000000
10000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011 1010101000000000000000010000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011 10101010000000000000000
10000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000001000001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000000
10000001010101111101110011101001010110110010011000111000101001101011001000101010100011010011110001101010111010000011000011101110100101100001000101000111110000111101011001101111111000000000111010110101101100000110001111010101011000100111010101000000000000001000000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000000
10000000101010111110111001110100101011011001001100011100010100110101100100010101010001101001111000110101011101000001100001110111010010110000100010100011111000011110101100110111111100000000011101011010110110000011000111101010101100010011101010100000000000001000000010101011111011100111010010101101100100110001110001010011010110010001010101000110100111100011010101110100000110000111011101001011000010001010001111100001111010110011011111110000000001110101101011011000001100011110101010110001001110101010000000000000
11110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000000001111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000000
10111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000001011100110100000010100001100100111010001101000011110111010001011111101100111110011000000110001110101111100110100100111111101100011011000100000001101100000010101000110011111011110101101000100100110100101110101010100010100000001011011110000101100100000000000
10011100110100000010100001100100111010001101000011110111010001011111101100111110011000000110001110101111100110100100111111101100011011000100000001101100000010101000110011111011110101101000100100110100101110101010100010100000001011011110000101100100000000001001110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000000
10001110011010000001010000110010011101000110100001111011101000101111110110011111001100000011000111010111110011010010011111110110001101100010000000110110000001010100011001111101111010110100010010011010010111010101010001010000000101101111000010110010000000001000111001101000000101000011001001110100011010000111101110100010111111011001111100110000001100011101011111001101001001111111011000110110001000000011011000000101010001100111110111101011010001001001101001011101010101000101000000010110111100001011001000000000
11111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000000001111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000000
10111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000001011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000000
10011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101 0000011010111101100000010011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101 00000110101111011000000
10001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000001000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100000
10000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100001000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110000
10000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110001000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011000
10000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011001000000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101100
10000000111101000011100101111111011100011101101000111111001101101100100011011111010100100101001101001111000001001000010100010111011110010011100001100011001110100101101110101101010110001000100110000100000010110011001010111001111100010101010000011010111101101000000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110110
10000000011110100001110010111111101110001110110100011111100110110110010001101111101010010010100110100111100000100100001010001011101111001001110000110001100111010010110111010110101011000100010011000010000001011001100101011100111110001010101000001101011110111000000001111010000111001011111110111000111011010001111110011011011001000110111110101001001010011010011110000010010000101000101110111100100111000011000110011101001011011101011010101100010001001100001000000101100110010101110011111000101010100000110101111011
其对应的BCH码的生成矩阵的形式可以为以上任一矩阵的2-256行,2-256列组成的子矩阵。The form of the corresponding generator matrix of the BCH code may be a sub-matrix consisting of 2-256 rows and 2-256 columns of any of the above matrices.
基于上述实施例,本申请实施例提供的编码方法中所述涉及到的打孔(puncture)序列和缩短(shorten)序列。可用于基于生成矩阵的BCH生成方法,或者基于生成多项式的BCH生成方法的速率匹配。示例性的,下面列举了本申请适用的打孔序列和缩短序列。Based on the foregoing embodiments, the puncture sequences and shortened sequences involved in the encoding method provided in the embodiments of the present application are described. It can be used for rate matching of generator matrix-based BCH generation methods or generator polynomial-based BCH generation methods. Exemplarily, the puncturing sequences and shortening sequences applicable to the present application are listed below.
对于打孔(puncture)序列:For puncture sequences:
若母码长N为2,3,4,7,8,则打孔序列可以使用顺序序列,即1,2,3,……,N。If the mother code length N is 2, 3, 4, 7, 8, the puncturing sequence can use a sequential sequence, that is, 1, 2, 3, ..., N.
若母码长为16,打孔序列可以是以下可能的序列:If the mother code length is 16, the puncturing sequence can be the following possible sequences:
P16=1;2;3;4;5;6;7;8(顺序序列)。P16 = 1; 2; 3; 4; 5; 6; 7; 8 (sequential sequence).
P16=1;2;3;4;5;14;6;7。P16=1;2;3;4;5;14;6;7.
P16=1;2;3;4;5;14;6;10。P16=1;2;3;4;5;14;6;10.
P16=1;2;3;4;5;14;6;13。P16=1;2;3;4;5;14;6;13.
P16=1;2;3;4;5;14;6;15。P16=1;2;3;4;5;14;6;15.
P16=1;2;3;4;5;14;7;6。P16=1;2;3;4;5;14;7;6.
P16=1;2;3;4;5;14;7;9。P16=1;2;3;4;5;14;7;9.
P16=1;2;3;4;5;14;7;10。P16=1;2;3;4;5;14;7;10.
P16=1;2;3;4;5;14;7;15。P16=1;2;3;4;5;14;7;15.
P16=1;2;3;4;5;14;9;7。P16=1;2;3;4;5;14;9;7.
P16=1;2;3;4;5;14;9;10。P16=1;2;3;4;5;14;9;10.
P16=1;2;3;4;5;14;9;13。P16=1;2;3;4;5;14;9;13.
P16=1;2;3;4;5;14;9;15。P16=1;2;3;4;5;14;9;15.
P16=1;2;3;4;5;14;10;6。P16=1;2;3;4;5;14;10;6.
P16=1;2;3;4;5;14;10;7。P16=1;2;3;4;5;14;10;7.
P16=1;2;3;4;5;14;10;9。P16=1;2;3;4;5;14;10;9.
P16=1;2;3;4;5;14;10;13。P16=1;2;3;4;5;14;10;13.
P16=1;2;3;4;5;14;13;6。P16=1;2;3;4;5;14;13;6.
P16=1;2;3;4;5;14;13;9。P16=1;2;3;4;5;14;13;9.
P16=1;2;3;4;5;14;13;10。P16=1;2;3;4;5;14;13;10.
P16=1;2;3;4;5;14;13;15。P16=1;2;3;4;5;14;13;15.
P16=1;2;3;4;5;14;15;6。P16=1;2;3;4;5;14;15;6.
P16=1;2;3;4;5;14;15;7。P16=1;2;3;4;5;14;15;7.
P16=1;2;3;4;5;14;15;9。P16=1;2;3;4;5;14;15;9.
P16=1;2;3;4;5;14;15;13。P16=1;2;3;4;5;14;15;13.
P16=1;2;3;4;8;9;7;10。P16=1;2;3;4;8;9;7;10.
P16=1;2;3;4;8;9;7;12。P16=1;2;3;4;8;9;7;12.
P16=1;2;3;4;8;9;7;14。P16=1;2;3;4;8;9;7;14.
P16=1;2;3;4;8;9;7;15。P16=1;2;3;4;8;9;7;15.
P16=1;2;3;4;8;9;10;7。P16=1;2;3;4;8;9;10;7.
P16=1;2;3;4;8;9;10;12。P16=1;2;3;4;8;9;10;12.
P16=1;2;3;4;8;9;10;13。P16=1;2;3;4;8;9;10;13.
P16=1;2;3;4;8;9;10;14。P16=1;2;3;4;8;9;10;14.
若母码长为15,打孔序列可以是P16中除了P16=1;2;3;4;5;6;7;8以外的任一个打孔序列中元素减一的序列。例如,P15={1;2;3;4;8;9;10;14}-1=1;2;3;7;8;9;13。If the length of the mother code is 15, the puncturing sequence may be a sequence in which the elements in any puncturing sequence except P16=1; 2; 3; 4; 5; 6; 7; 8 are subtracted by one. For example, P15={1;2;3;4;8;9;10;14}-1=1;2;3;7;8;9;13.
若母码长为32,打孔序列可以是以下可能的序列:If the mother code length is 32, the puncturing sequence can be the following possible sequences:
P32=1;2;3;……;16(顺序序列)。P32 = 1; 2; 3; ...; 16 (sequential sequence).
P32=1;11;19;31;2;17;6;9;3;24;4;16;8;21;5;7。P32=1;11;19;31;2;17;6;9;3;24;4;16;8;21;5;7.
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;30;18;11。P32=1;4;14;25;21;12;8;23;26;2;20;15;28;30;18;11.
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;30;11;18。P32=1;4;14;25;21;12;8;23;26;2;20;15;28;30;11;18.
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;26;17。P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;26;17.
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;17;26。P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;17;26.
P32=1;4;14;25;21;12;8;23;26;2;20;15;31;5;9;30。P32=1;4;14;25;21;12;8;23;26;2;20;15;31;5;9;30.
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;18;31。P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;18;31.
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;7;10;17。P32=1;4;14;25;21;12;8;23;26;2;20;15;28;7;10;17.
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;17;7;10。P32=1;4;14;25;21;12;8;23;26;2;20;15;28;17;7;10.
P32=1;4;14;25;21;12;8;23;26;2;20;15;30;28;11;18。P32=1;4;14;25;21;12;8;23;26;2;20;15;30;28;11;18.
P32=1;4;14;25;21;12;8;23;26;2;20;15;11;18;30;28。P32=1;4;14;25;21;12;8;23;26;2;20;15;11;18;30;28.
P32=1;4;14;25;21;12;8;23;26;2;20;15;30;28;18;11。P32=1;4;14;25;21;12;8;23;26;2;20;15;30;28;18;11.
P32=1;4;14;25;21;12;8;23;26;2;20;15;18;11;30;28。P32=1;4;14;25;21;12;8;23;26;2;20;15;18;11;30;28.
P32=1;4;14;25;21;12;8;23;26;2;20;15;5;31;9;30。P32=1;4;14;25;21;12;8;23;26;2;20;15;5;31;9;30.
P32=1;4;8;29;24;3;14;15;11;7;13;23;10;22;6;32。P32=1;4;8;29;24;3;14;15;11;7;13;23;10;22;6;32.
P32=1;4;8;29;24;3;14;15;11;7;13;23;22;10;6;32。P32=1;4;8;29;24;3;14;15;11;7;13;23;22;10;6;32.
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;31;18。P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;31;18.
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;18;2;31。P32=1;4;8;29;24;3;14;15;11;7;13;23;19;18;2;31.
P32=1;4;8;29;24;3;14;15;11;7;13;23;32;19;17;26。P32=1;4;8;29;24;3;14;15;11;7;13;23;32;19;17;26.
P32=1;4;14;25;21;12;8;23;26;2;20;15;28;7;17;10。P32=1;4;14;25;21;12;8;23;26;2;20;15;28;7;17;10.
P32=1;4;8;29;24;3;14;15;11;7;13;23;32;19;26;17。P32=1;4;8;29;24;3;14;15;11;7;13;23;32;19;26;17.
P32=1;26;11;4;24;25;12;29;22;14;20;2;13;7;31;23。P32=1;26;11;4;24;25;12;29;22;14;20;2;13;7;31;23.
P32=1;26;4;11;29;12;24;25;22;14;2;20;5;8;21;28。P32=1;26;4;11;29;12;24;25;22;14;2;20;5;8;21;28.
P32=1;26;11;4;12;29;24;25;20;2;14;22;21;5;8;28。P32=1;26;11;4;12;29;24;25;20;2;14;22;21;5;8;28.
P32=1;26;11;4;24;25;29;12;5;8;7;13;20;10;2;15。P32=1;26;11;4;24;25;29;12;5;8;7;13;20;10;2;15.
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;17;16。P32=1;4;8;29;24;3;14;15;11;7;13;23;19;32;17;16.
P32=1;26;4;11;29;12;24;25;14;22;20;2;18;27;30;9。P32=1;26;4;11;29;12;24;25;14;22;20;2;18;27;30;9.
P32=1;26;4;11;12;29;25;24;14;22;20;2;7;13;5;8。P32=1;26;4;11;12;29;25;24;14;22;20;2;7;13;5;8.
P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;18;22。P32=1;4;8;29;24;3;14;15;11;7;13;23;19;2;18;22.
P32=1;26;11;4;29;12;24;25;6;32;16;17;23;30;9;31。P32=1;26;11;4;29;12;24;25;6;32;16;17;23;30;9;31.
P32=1;26;4;11;24;25;29;12;8;5;7;13;22;3;14;19。P32=1;26;4;11;24;25;29;12;8;5;7;13;22;3;14;19.
P32=1;26;11;4;25;24;12;29;13;7;5;8;2;20;10;15。P32=1;26;11;4;25;24;12;29;13;7;5;8;2;20;10;15.
P32=1;26;4;11;24;25;29;12;30;9;27;18;19;16;17;3。P32=1;26;4;11;24;25;29;12;30;9;27;18;19;16;17;3.
若母码长为31,打孔序列可以是P32中除了P32=1;2;3;……;16以外的任一个打孔序列中元素减一的序列。例如,P31={1;26;4;11;24;25;29;12;30;9;27;18;19;16;17;3}-1=25;3;10;23;24;28;11;29;8;26;17;18;15;16;2。If the length of the mother code is 31, the puncturing sequence may be a sequence in which the elements in any puncturing sequence except P32=1; 2; 3; ...; 16 are subtracted by one. For example, P31={1;26;4;11;24;25;29;12;30;9;27;18;19;16;17;3}-1=25;3;10;23;24; 28;11;29;8;26;17;18;15;16;2.
若母码长为64,打孔序列可以是以下可能的序列:If the mother code length is 64, the puncturing sequence can be the following possible sequences:
P64=1;2;3;……;32(顺序序列)。P64=1;2;3;...;32 (sequential sequence).
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;6;26;44;48。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16; 36;40;64;24;6;26;44;48.
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;40;64;24;6;26;47;43。P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16; 36; 40; 64; 24; 6; 26; 47; 43.
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;40;64;24;26;6;32;48。P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16; 36;40;64;24;26;6;32;48.
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;64;40;24;6;26;48;32。P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16; 36;64;40;24;6;26;48;32.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;64;40;24;26;6;31;51。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16; 36;64;40;24;26;6;31;51.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;64;40;24;26;6;60;51。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16; 36;64;40;24;26;6;60;51.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;64;40;24;26;6;48;46。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16; 36;64;40;24;26;6;48;46.
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;40;64;24;26;6;60;51。P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16; 36;40;64;24;26;6;60;51.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;40;64;24;26;6;43;47。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16; 36; 40; 64; 24; 26; 6; 43; 47.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;64;40;24;6;26;48;32。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16; 36;64;40;24;6;26;48;32.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;6;26;48;32。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16; 36;40;64;24;6;26;48;32.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;26;6;47;43。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16; 36; 40; 64; 24; 26; 6; 47; 43.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;64;40;24;26;6;51;60。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16; 36;64;40;24;26;6;51;60.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16;36;40;64;24;26;6;48;46。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;62;39;15;3;16; 36; 40; 64; 24; 26; 6; 48; 46.
P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16;36;64;40;24;26;6;44;48。P64=1;61;25;52;35;58;13;29;5;11;45;49;56;17;8;20;59;4;55;62;39;15;3;16; 36;64;40;24;26;6;44;48.
P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16;36;40;64;24;6;26;51;46。P64=1;61;25;52;35;58;13;29;5;11;45;49;8;17;20;56;59;4;55;39;62;15;3;16; 36;40;64;24;6;26;51;46.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;38;58;23;8;42;47;48;50。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59; 38;58;23;8;42;47;48;50.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;38;58;23;8;42;47;50;48。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59; 38;58;23;8;42;47;50;48.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;58;38;23;8;42;47;48;50。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59; 58;38;23;8;42;47;48;50.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59;58;38;23;8;42;47;50;48。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;4;10;54;28;9;59; 58;38;23;8;42;47;50;48.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;38;58;23;8;42;47;48;50。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59; 38;58;23;8;42;47;48;50.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;38;58;23;8;42;47;50;48。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59; 38;58;23;8;42;47;50;48.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;58;38;23;8;42;47;48;50。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59; 58;38;23;8;42;47;48;50.
P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59;58;38;23;8;42;47;50;48。P64=1;2;41;56;11;60;53;39;64;15;12;29;63;61;33;5;44;16;10;4;54;28;9;59; 58;38;23;8;42;47;50;48.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;21;56;44;3;57;11;10;32。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60; 21;56;44;3;57;11;10;32.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;21;56;44;3;57;11;32;10。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60; 21;56;44;3;57;11;32;10.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;56;21;44;3;57;11;10;32。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60; 56; 21; 44; 3; 57; 11; 10; 32.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60;56;21;44;3;57;11;32;10。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;14;50;16;9;28;60; 56; 21; 44; 3; 57; 11; 32; 10.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;21;56;44;3;57;11;10;32。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60; 21;56;44;3;57;11;10;32.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;21;56;44;3;57;11;32;10。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60; 21;56;44;3;57;11;32;10.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;56;21;44;3;57;11;10;32。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60; 56; 21; 44; 3; 57; 11; 10; 32.
P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;56;21;44;3;57;11;32;10。P64=1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60; 56; 21; 44; 3; 57; 11; 32; 10.
若母码长为63,打孔序列可以是P64中除了P64=1;2;3;……;32以外的任一个打孔序列中元素减一的序列。例如,P63={1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28;60;56;21;44;3;57;11;32;10}-1=1;44;37;46;58;54;45;6;36;62;19;11;21;35;33;22;53;49;13;15;8;27;59;55;20;43;2;56;10;31;9。If the mother code length is 63, the puncturing sequence may be a sequence in which the elements in any puncturing sequence except P64=1; 2; 3; ...; 32 are subtracted by one. For example, P63={1;2;45;38;47;59;55;46;7;37;63;20;12;22;36;34;23;54;50;14;16;9;28 ;60;56;21;44;3;57;11;32;10}-1=1;44;37;46;58;54;45;6;36;62;19;11;21;35; 33;22;53;49;13;15;8;27;59;55;20;43;2;56;10;31;9.
若母码长为128,打孔序列可以是:If the mother code length is 128, the puncturing sequence can be:
P128=1;2;3;……;64(顺序序列)。P128 = 1; 2; 3; ...; 64 (sequential sequence).
P128=1;9;35;37;15;43;22;126;95;38;101;69;44;24;63;110;60;117;2;120;17;84;118;4;127;31;123;82;112;34;99;29;51;116;108;125;111;104;114;77;83;85;105;79;113;28;86;33;90;73;78;80;70;124;75;71;72;68;59;21;67;93;62;58。P128=1;9;35;37;15;43;22;126;95;38;101;69;44;24;63;110;60;117;2;120;17;84;118;4; 127;31;123;82;112;34;99;29;51;116;108;125;111;104;114;77;83;85;105;79;113;28;86;33;90; 73;78;80;70;124;75;71;72;68;59;21;67;93;62;58.
若母码长为127,打孔序列可以是P128中除了P128=1;2;3;……;64以外的任一个打孔序列中元素减一的序列。例如,P127={1;9;35;37;15;43;22;126;95;38;101;69;44;24;63;110;60;117;2;120;17;84;118;4;127;31;123;82;112;34;99;29;51;116;108;125;111;104;114;77;83;85;105;79;113;28;86;33;90;73;78;80;70;124;75;71;72;68;59;21;67;93;62;58}=8;34;36;14;42;21;125;94;37;100;68;43;23;62;109;59;116;1;119;16;83;117;3;126;30;122;81;111;33;98;28;50;115;107;124;110;103;113;76;82;84;104;78;112;27;85;32;89;72;77;79;69;123;74;70;71;67;58;20;66;92;61;57。If the mother code length is 127, the puncturing sequence may be a sequence in which the elements in any puncturing sequence except P128=1;2;3;...;64 are subtracted by one. For example, P127={1;9;35;37;15;43;22;126;95;38;101;69;44;24;63;110;60;117;2;120;17;84;118 ;4;127;31;123;82;112;34;99;29;51;116;108;125;111;104;114;77;83;85;105;79;113;28;86;33 ;90;73;78;80;70;124;75;71;72;68;59;21;67;93;62;58}=8;34;36;14;42;21;125;94; 37;100;68;43;23;62;109;59;116;1;119;16;83;117;3;126;30;122;81;111;33;98;28;50;115; 107;124;110;103;113;76;82;84;104;78;112;27;85;32;89;72;77;79;69;123;74;70;71;67;58; 20;66;92;61;57.
对于缩短(shorten)序列:For shortened sequences:
若母码长N为2,3,4,7,8,则可以使用逆序序列,即N,N-1,……,3,2,1。If the mother code length N is 2, 3, 4, 7, 8, the reverse sequence can be used, that is, N, N-1, ..., 3, 2, 1.
若母码长为16,缩短序列可以是以下可能的序列:If the mother code length is 16, the shortened sequence can be the following possible sequences:
S16=16;15;14;13;12;11;10;9(逆序序列)。S16=16; 15; 14; 13; 12; 11; 10; 9 (reverse sequence).
S16=16;14;12;15;13;11;7;10。S16=16;14;12;15;13;11;7;10.
S16=16;14;12;15;13;11;10;7。S16=16;14;12;15;13;11;10;7.
S16=16;14;12;15;13;11;10;8。S16=16;14;12;15;13;11;10;8.
S16=16;14;12;15;13;11;10;9。S16=16;14;12;15;13;11;10;9.
S16=16;14;15;12;13;11;7;10。S16=16;14;15;12;13;11;7;10.
S16=16;14;15;12;13;11;10;7。S16=16;14;15;12;13;11;10;7.
S16=16;14;15;12;13;11;10;8。S16=16;14;15;12;13;11;10;8.
S16=16;14;15;12;13;11;10;9。S16=16;14;15;12;13;11;10;9.
S16=16;14;15;13;11;12;7;10。S16=16;14;15;13;11;12;7;10.
S16=16;14;15;13;11;12;10;7。S16=16;14;15;13;11;12;10;7.
S16=16;14;15;13;11;12;10;8。S16=16;14;15;13;11;12;10;8.
S16=16;14;15;13;11;12;10;9。S16=16;14;15;13;11;12;10;9.
S16=16;14;15;13;12;11;7;10。S16=16;14;15;13;12;11;7;10.
S16=16;14;15;13;12;11;10;7。S16=16;14;15;13;12;11;10;7.
S16=16;14;15;13;12;11;10;8。S16=16;14;15;13;12;11;10;8.
S16=16;14;15;13;12;11;10;9。S16=16;14;15;13;12;11;10;9.
S16=16;15;13;11;14;12;7;10。S16=16;15;13;11;14;12;7;10.
S16=16;15;13;11;14;12;10;7。S16=16;15;13;11;14;12;10;7.
S16=16;15;13;11;14;12;10;8。S16=16;15;13;11;14;12;10;8.
S16=16;15;13;11;14;12;10;9。S16=16;15;13;11;14;12;10;9.
S16=16;15;13;14;11;12;7;10。S16=16;15;13;14;11;12;7;10.
S16=16;15;13;14;11;12;10;7。S16=16;15;13;14;11;12;10;7.
S16=16;15;13;14;11;12;10;8。S16=16;15;13;14;11;12;10;8.
S16=16;15;13;14;11;12;10;9。S16=16;15;13;14;11;12;10;9.
S16=16;15;13;14;12;11;7;10。S16=16;15;13;14;12;11;7;10.
S16=16;15;13;14;12;11;10;7。S16=16;15;13;14;12;11;10;7.
S16=16;15;13;14;12;11;10;8。S16=16;15;13;14;12;11;10;8.
S16=16;15;13;14;12;11;10;9。S16=16;15;13;14;12;11;10;9.
S16=16;15;14;12;13;11;7;10。S16=16;15;14;12;13;11;7;10.
S16=16;15;14;12;13;11;10;7。S16=16;15;14;12;13;11;10;7.
S16=16;15;14;12;13;11;10;8。S16=16;15;14;12;13;11;10;8.
S16=16;15;14;12;13;11;10;9。S16=16;15;14;12;13;11;10;9.
若母码长为15,缩短序列可以是S16-1,也即上述任一个S16中元素减一的序列。例如,S15={16;15;14;12;13;11;10;9}-1=15;14;13;11;12;10;9;8。If the length of the mother code is 15, the shortened sequence may be S16-1, that is, the sequence in which the elements in any of the above S16 are reduced by one. For example, S15={16;15;14;12;13;11;10;9}-1=15;14;13;11;12;10;9;8.
若母码长为32,缩短序列可以是以下可能的序列:If the mother code length is 32, the shortened sequence can be the following possible sequences:
S32=32;31;……;18;17(逆序序列)。S32 = 32; 31; ...; 18; 17 (reverse sequence).
S32=32;31;30;29;25;28;27;18;26;23;24;21;17;22;19;20。S32=32;31;30;29;25;28;27;18;26;23;24;21;17;22;19;20.
S32=32;31;30;29;28;27;26;25;24;23;21;17;22;19;20;16。S32=32;31;30;29;28;27;26;25;24;23;21;17;22;19;20;16.
S32=32;31;30;29;25;28;27;26;23;18;24;22;20;21;17;19。S32=32;31;30;29;25;28;27;26;23;18;24;22;20;21;17;19.
S32=32;31;30;29;28;27;25;26;18;24;22;19;23;20;21;16。S32=32;31;30;29;28;27;25;26;18;24;22;19;23;20;21;16.
S32=32;31;30;29;28;25;27;26;24;22;23;21;17;20;18;19。S32=32;31;30;29;28;25;27;26;24;22;23;21;17;20;18;19.
S32=32;31;30;29;28;27;26;25;23;24;18;22;20;21;19;16。S32=32;31;30;29;28;27;26;25;23;24;18;22;20;21;19;16.
S32=32;31;30;29;28;27;25;26;23;24;22;21;20;18;16;17。S32=32;31;30;29;28;27;25;26;23;24;22;21;20;18;16;17.
S32=32;31;30;29;28;27;26;25;24;23;22;19;21;20;16;17。S32=32;31;30;29;28;27;26;25;24;23;22;19;21;20;16;17.
S32=32;31;30;29;28;25;27;26;24;22;18;23;19;20;21;16。S32=32;31;30;29;28;25;27;26;24;22;18;23;19;20;21;16.
S32=32;31;30;29;28;27;26;24;25;22;23;21;18;19;17;20。S32=32;31;30;29;28;27;26;24;25;22;23;21;18;19;17;20.
S32=32;31;30;29;28;27;25;26;18;23;24;21;22;19;20;16。S32=32;31;30;29;28;27;25;26;18;23;24;21;22;19;20;16.
S32=32;31;30;29;28;27;25;26;23;24;22;20;21;18;16;17。S32=32;31;30;29;28;27;25;26;23;24;22;20;21;18;16;17.
S32=32;31;30;29;25;28;27;26;23;24;18;21;22;19;20;17。S32=32;31;30;29;25;28;27;26;23;24;18;21;22;19;20;17.
S32=32;31;30;29;28;25;27;26;23;24;22;18;21;17;20;19。S32=32;31;30;29;28;25;27;26;23;24;22;18;21;17;20;19.
S32=32;31;30;29;25;28;27;26;24;23;22;19;18;20;21;16。S32=32;31;30;29;25;28;27;26;24;23;22;19;18;20;21;16.
S32=32;31;30;29;28;27;25;18;26;23;24;22;21;19;20;16。S32=32;31;30;29;28;27;25;18;26;23;24;22;21;19;20;16.
S32=32;31;30;29;28;27;25;26;24;23;21;22;17;20;18;16。S32=32;31;30;29;28;27;25;26;24;23;21;22;17;20;18;16.
S32=32;31;30;29;28;27;25;26;18;23;24;22;19;20;21;16。S32=32;31;30;29;28;27;25;26;18;23;24;22;19;20;21;16.
S32=32;31;30;29;28;27;26;25;24;22;19;23;21;18;20;17。S32=32;31;30;29;28;27;26;25;24;22;19;23;21;18;20;17.
S32=32;31;30;29;25;28;27;26;24;18;23;21;22;19;20;16。S32=32;31;30;29;25;28;27;26;24;18;23;21;22;19;20;16.
S32=32;31;30;29;28;25;27;26;24;22;23;20;21;17;19;16。S32=32;31;30;29;28;25;27;26;24;22;23;20;21;17;19;16.
S32=32;31;30;29;28;25;27;26;24;22;23;18;20;21;19;16。S32=32;31;30;29;28;25;27;26;24;22;23;18;20;21;19;16.
S32=32;31;30;29;28;27;26;25;23;24;18;22;21;20;17;16。S32=32;31;30;29;28;27;26;25;23;24;18;22;21;20;17;16.
S32=32;31;30;29;25;28;27;26;24;22;23;21;17;18;20;16。S32=32;31;30;29;25;28;27;26;24;22;23;21;17;18;20;16.
S32=32;31;30;29;28;27;25;26;23;24;22;21;18;17;20;16。S32=32;31;30;29;28;27;25;26;23;24;22;21;18;17;20;16.
S32=32;31;30;29;25;28;27;26;23;24;22;18;21;20;17;16。S32=32;31;30;29;25;28;27;26;23;24;22;18;21;20;17;16.
S32=32;31;30;29;25;28;27;26;24;18;23;22;21;20;19;16。S32=32;31;30;29;25;28;27;26;24;18;23;22;21;20;19;16.
S32=32;31;30;29;28;27;26;24;25;22;23;18;21;19;20;17。S32=32;31;30;29;28;27;26;24;25;22;23;18;21;19;20;17.
S32=32;31;30;29;28;27;26;25;23;24;22;20;21;17;18;16。S32=32;31;30;29;28;27;26;25;23;24;22;20;21;17;18;16.
S32=32;31;30;29;28;27;26;24;25;18;22;23;19;21;17;20。S32=32;31;30;29;28;27;26;24;25;18;22;23;19;21;17;20.
S32=32;31;30;29;28;27;26;25;24;23;18;21;22;20;17;16。S32=32;31;30;29;28;27;26;25;24;23;18;21;22;20;17;16.
S32=32;31;30;29;28;27;26;25;24;18;23;21;17;22;20;16。S32=32;31;30;29;28;27;26;25;24;18;23;21;17;22;20;16.
S32=32;31;30;29;28;25;27;26;23;24;18;21;22;19;20;17。S32=32;31;30;29;28;25;27;26;23;24;18;21;22;19;20;17.
若母码长为31,缩短序列可以是S32-1,也即上述任一个S32中元素减一的序列。例如,S31={32;31;30;29;28;25;27;26;23;24;18;21;22;19;20;17}-1=31;30;29;28;27;24;26;25;22;23;17;20;21;18;19;16。If the length of the mother code is 31, the shortened sequence may be S32-1, that is, the sequence in which the elements in any of the above-mentioned S32 are reduced by one. For example, S31={32;31;30;29;28;25;27;26;23;24;18;21;22;19;20;17}-1=31;30;29;28;27; 24; 26; 25; 22; 23; 17; 20; 21; 18; 19; 16.
若母码长为64,缩短序列可以是:If the mother code length is 64, the shortened sequence can be:
S64=64;63;……;34;33(逆序序列)。S64=64;63;...;34;33 (reverse sequence).
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;30。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;33;35;30.
S64=64;62;60;58;63;61;59;57;54;55;56;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。S64=64;62;60;58;63;61;59;57;54;55;56;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;34.
S64=64;62;60;58;63;61;59;57;56;55;54;53;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;31。S64=64;62;60;58;63;61;59;57;56;55;54;53;52;51;50;49;48;46;47;45;44;43;42;41; 40;39;38;37;36;35;32;31.
S64=64;63;62;61;60;58;59;56;55;57;54;53;52;51;50;49;47;48;46;45;44;43;42;41;40;39;38;37;36;35;32;31。S64=64;63;62;61;60;58;59;56;55;57;54;53;52;51;50;49;47;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;31.
S64=64;62;60;63;61;59;58;56;55;57;54;53;52;51;50;47;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。S64=64;62;60;63;61;59;58;56;55;57;54;53;52;51;50;47;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;34.
S64=64;62;63;60;61;59;58;55;57;54;56;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;33。S64=64;62;63;60;61;59;58;55;57;54;56;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;33.
S64=64;62;60;63;61;58;59;56;55;57;54;53;52;51;50;49;47;48;46;45;44;43;42;41;40;39;38;37;36;35;32;30。S64=64;62;60;63;61;58;59;56;55;57;54;53;52;51;50;49;47;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;30.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;50;47;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;31。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;50;47;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;31.
S64=64;63;61;62;60;59;58;56;57;54;53;55;52;51;50;49;48;47;46;45;44;43;42;41;40;39;38;37;36;35;32;31。S64=64;63;61;62;60;59;58;56;57;54;53;55;52;51;50;49;48;47;46;45;44;43;42;41; 40;39;38;37;36;35;32;31.
S64=64;63;61;62;60;59;58;56;57;54;53;55;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;31。S64=64;63;61;62;60;59;58;56;57;54;53;55;52;51;50;49;48;46;47;45;44;43;42;41; 40;39;38;37;36;35;32;31.
S64=64;62;63;60;58;61;59;57;54;55;56;53;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;33。S64=64;62;63;60;58;61;59;57;54;55;56;53;52;51;50;49;48;46;47;45;44;43;42;41; 40;39;38;37;36;35;32;33.
S64=64;63;61;62;59;60;58;57;55;54;56;53;52;51;50;49;47;48;46;45;44;43;42;41;40;39;38;37;36;35;32;33。S64=64;63;61;62;59;60;58;57;55;54;56;53;52;51;50;49;47;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;33.
S64=64;63;61;59;62;60;55;57;58;54;56;53;52;51;50;47;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;30。S64=64;63;61;59;62;60;55;57;58;54;56;53;52;51;50;47;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;30.
S64=64;63;62;60;61;58;59;57;56;54;55;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。S64=64;63;62;60;61;58;59;57;56;54;55;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;34.
S64=64;62;63;60;58;61;59;57;56;54;53;55;52;51;50;49;48;47;46;45;44;43;42;41;40;39;38;37;36;35;32;33。S64=64;62;63;60;58;61;59;57;56;54;53;55;52;51;50;49;48;47;46;45;44;43;42;41; 40;39;38;37;36;35;32;33.
S64=64;63;61;59;57;62;60;55;58;54;56;53;52;51;50;49;48;46;47;45;44;43;42;41;40;39;38;37;36;35;32;34。S64=64;63;61;59;57;62;60;55;58;54;56;53;52;51;50;49;48;46;47;45;44;43;42;41; 40;39;38;37;36;35;32;34.
S64=64;63;61;59;62;60;58;57;56;55;54;53;52;51;50;49;48;47;46;45;44;43;42;41;40;39;38;37;36;35;32;33。S64=64;63;61;59;62;60;58;57;56;55;54;53;52;51;50;49;48;47;46;45;44;43;42;41; 40;39;38;37;36;35;32;33.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;30。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;33;35;30.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;31。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;33;35;31.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;32。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;33;35;32.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;33;35;34。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;33;35;34.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;31。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;30;31.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;32。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;30;32.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;33。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;30;33.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;30;34。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;30;34.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;30。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;31;30.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;32。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;31;32.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;33。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;31;33.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;31;34。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;31;34.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;30。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;30.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;31。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;31.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;33。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;33.
S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34。S64=64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41; 40;39;38;37;36;35;32;34.
若母码长为63,缩短序列可以是S64-1,也即上述任一个S64中元素减一的序列。例如,S63={64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42;41;40;39;38;37;36;35;32;34}-1=63;61;59;57;62;55;60;58;54;56;53;52;51;50;46;49;48;47;45;44;43;42;41;40;39;38;37;36;35;34;31;33。If the length of the mother code is 63, the shortened sequence may be S64-1, that is, the sequence in which the elements in any of the above-mentioned S64 are reduced by one. For example, S63={64;62;60;58;63;56;61;59;55;57;54;53;52;51;47;50;49;48;46;45;44;43;42 ;41;40;39;38;37;36;35;32;34}-1=63;61;59;57;62;55;60;58;54;56;53;52;51;50; 46;49;48;47;45;44;43;42;41;40;39;38;37;36;35;34;31;33.
若母码长为128,缩短序列可以是:S64=128;127;……;66;65(逆序序列)。If the mother code length is 128, the shortened sequence may be: S64=128; 127;  ; 66; 65 (reverse sequence).
若母码长为127,缩短序列可以是S128-1,也即任一个S32中元素减一的序列。例如,S127={128;127;……;66;65}-1=127;126;……;65;64。If the length of the mother code is 127, the shortened sequence can be S128-1, that is, the sequence in which any element in S32 is reduced by one. For example, S127={128;127;...;66;65}-1=127;126;...;65;64.
目前,码长和码率灵活是无线通信信道编码的重要或必要需求,现有方案无法满足。采用本申请的编码方法可以是得到的BCH码的码长和码率比较灵活,符合无线信道信道编码的需求。其中,基于生成多项式和生成矩阵的方式实现复杂度低。在本申请中速率匹配过程考虑了码距最大化,有益于最大似然译码性能的提升。通过本申请提供的编码方法的一个实施例(码率依赖的速率匹配,码率阈值R thr=1/3)所生成的码与已知最优码距码的码距差别,例如图8所示码距性能示意图示出的,很多码长和码率的码距都已经达到了最优值。因此采用本申请的编码方法可以使提升码距性能。 Currently, flexible code length and code rate are important or necessary requirements for wireless communication channel coding, which cannot be met by existing solutions. By using the coding method of the present application, the code length and code rate of the obtained BCH code can be relatively flexible, which meets the requirements of wireless channel channel coding. Among them, the realization complexity based on the generator polynomial and the generator matrix is low. In this application, the rate matching process considers the maximization of the code distance, which is beneficial to the improvement of the maximum likelihood decoding performance. The code distance difference between the code generated by an embodiment of the coding method provided by the present application (code rate-dependent rate matching, code rate threshold R thr = 1/3) and the known optimal code distance code, for example, as shown in FIG. 8 The code distance performance diagram shows that many code distances of code length and code rate have reached the optimal value. Therefore, the coding method of the present application can improve the code distance performance.
进一步地,在OSD或者BMA译码下,本申请的编码方法得到的BCH码的性能好于现有的Polar码。例如图9所示,码率1/3,码长n=51,信息比特长度k=17的情况下,可以看出本申请得到的BCH码的码距14比NR PC-Polar码的码距8要高,也即本申请得到的BCH码比NR PC-Polar码的码距性能好。又例如图10所示,码率1/2,码长n=56,信息比特长度k=23的情况下,可以看出本申请得到的BCH码的码距12比NR PC-Polar码的码距8要高,也即本申请得到的BCH码比NR PC-Polar码的码距性能好。Further, under OSD or BMA decoding, the performance of the BCH code obtained by the coding method of the present application is better than that of the existing Polar code. For example, as shown in Fig. 9, when the code rate is 1/3, the code length is n=51, and the information bit length is k=17, it can be seen that the code distance of the BCH code obtained in this application is 14 higher than that of the NR PC-Polar code. 8 is higher, that is, the BCH code obtained in this application has better code distance performance than the NR PC-Polar code. For another example, as shown in Figure 10, when the code rate is 1/2, the code length n=56, and the information bit length k=23, it can be seen that the code distance of the BCH code obtained in this application is 12 than that of the NR PC-Polar code. The distance is higher than 8, that is, the BCH code obtained in this application has better code distance performance than the NR PC-Polar code.
基于上述实施例,本申请实施例提供了一种编码装置,参阅图11所示,所述编码装置1100包括第一处理单元1101和第二处理单元1102。所述编码装置1100用于实现上述图2所述的实施例中编码装置的功能。具体的:Based on the foregoing embodiments, an embodiment of the present application provides an encoding apparatus. Referring to FIG. 11 , the encoding apparatus 1100 includes a first processing unit 1101 and a second processing unit 1102 . The encoding apparatus 1100 is used to implement the functions of the encoding apparatus in the embodiment described in FIG. 2 . specific:
所述第一处理单元1101用于根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0;所述第二处理单元1102用于基于所述第一编码参数进行BCH码编码。The first processing unit 1101 is configured to determine a first encoding parameter according to the first BCH code; the first BCH code is the BCH code to be encoded; the first encoding parameter is the first code or the generation of the first code matrix; the code length of the first code is n, and the information bit length is k; the n is greater than 0, and the k is greater than 0; the second processing unit 1102 is configured to perform BCH code based on the first encoding parameter coding.
在一种可选的实施方式中,所述第一处理单元1101根据第一BCH码确定第一编码参数时,具体用于:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号。In an optional implementation manner, when the first processing unit 1101 determines the first encoding parameter according to the first BCH code, it is specifically configured to: determine the generator matrix of the first BCH code; The generator matrix and the puncturing sequence of the code are used to determine the first encoding parameter, and the elements included in the puncturing sequence are the column numbers in the generator matrix of the first BCH code.
在一种可选的实施方式中,所述第一处理单元1101根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数时,具体用于:取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。In an optional implementation manner, when the first processing unit 1101 determines the first encoding parameter according to the generator matrix and the puncturing sequence of the first BCH code, the first processing unit 1101 is specifically configured to: take the first encoding parameter The last k rows of the generation matrix of the BCH code are used to obtain the first matrix; according to the puncturing sequence, the positions corresponding to the elements in the puncturing sequence in the first matrix are sequentially punctured to obtain the first matrix. encoding parameters, the first encoding parameter is a matrix including k rows and n columns.
在一种可选的实施方式中,所述一码的码率k/n小于或者等于码率阈值。In an optional implementation manner, the code rate k/n of the one code is less than or equal to a code rate threshold.
在一种可选的实施方式中,所述第一处理单元1101根据第一BCH码确定第一编码参数时,具体用于:确定所述第一BCH码的生成矩阵;根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。In an optional implementation manner, when the first processing unit 1101 determines the first encoding parameter according to the first BCH code, it is specifically configured to: determine the generator matrix of the first BCH code; A code generator matrix and a shortened sequence are used to determine the first encoding parameter, and the elements included in the shortened sequence are column numbers in the generator matrix of the first BCH code.
在一种可选的实施方式中,所述第一处理单元1101根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数时,具体用于:根据所述缩短序列,依次在所述生成矩阵中对所述缩短序列中的元素对应的位置置零,得到第二矩阵;从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。In an optional implementation manner, when the first processing unit 1101 determines the first encoding parameter according to the generator matrix and shortening sequence of the first BCH code, it is specifically configured to: according to the shortening sequence, In the generating matrix, the positions corresponding to the elements in the shortened sequence are set to zero in turn to obtain a second matrix; the selection starts from the last row of the second matrix, and the positions corresponding to the elements in the shortened sequence are skipped. 1 row, until k rows are selected, the first encoding parameter is obtained, and the first encoding parameter is a matrix including k rows and n columns.
在一种可选的实施方式中,所述一码的码率k/n大于或者等于码率阈值。In an optional implementation manner, the code rate k/n of the one code is greater than or equal to a code rate threshold.
示例性的,所述码率阈值为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16中的任意一个。Exemplarily, the code rate threshold is 1/4, 1/2, 3/4, 1/3, 2/3, 1/8, 3/8, 5/8, 7/8, 1/16, Any of 3/16, 5/16, 7/16, 9/16, 11/16, 13/16 or 15/16.
具体的,所述第一处理单元1101确定所述第一BCH码的生成矩阵时,具体用于:根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。Specifically, when the first processing unit 1101 determines the generator matrix of the first BCH code, it is specifically configured to: determine the generator matrix of the first BCH code according to the generator polynomial group of the first BCH code, the The generator polynomial group of the first BCH code includes the following polynomials: g1, g2, g3, ..., gx, x are integers greater than or equal to 1.
示例性的,所述第一处理单元1101根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵时,具体用于:分别基于所述第一BCH码的生成多项式组中的每一 个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。Exemplarily, when the first processing unit 1101 determines the generator matrix of the first BCH code according to the generator polynomial group of the first BCH code, it is specifically configured to: respectively based on the generator polynomial group of the first BCH code. The row vector corresponding to each polynomial in the row vector and the row vector obtained by shifting the row vector to the right determine the generator matrix of the first BCH code; the row vector length corresponding to each row of the generator matrix of the first BCH code is equal to the code length of the mother code of the first BCH code, and the number of rows is equal to the code length of the mother code; wherein, the first row is the row vector corresponding to the polynomial g1, and the second row, ..., the k1-k2 row are respectively the first row. The row vector corresponding to a row is shifted to the right by 1 bit, ..., the row vector obtained by right-shifting k1-k2-1 bits; ...; the row vector corresponding to the N-ki+1th row polynomial gi, the N-ki+2th row vector row, ..., row N-kj row vector corresponding to row N-ki+1 is shifted right by 1 bit, ..., row vector obtained by shifting right by ki-kj-1 bit; ...; N-kx+ Row 1 is the row vector corresponding to the polynomial gx, row N-kx+2 row is the row vector obtained by shifting the row vector corresponding to row N-kx+1 right by 1 bit, ..., right shifting by kx-1 bit; among them, k1 is The information bit length corresponding to g1, k2 is the information bit length corresponding to g2, ki is the information bit length corresponding to gi, kj is the information bit length corresponding to gj, kx is the information bit length corresponding to gx, j=i+1, N is the code length of the mother code.
一种示例中,所述第一编码参数为所述第一码时,所述第一处理单元1101根据第一BCH码确定第一编码参数时,具体用于:在所述第一BCH码的生成多项式组中确定目标多项式gi;根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;根据所述第二码确定所述第一码;其中,所述gi是所述生成多项式组包括的多项式g1,g2,g3,……,gx中的一个,x为大于或者等于1的整数。In an example, when the first encoding parameter is the first code, when the first processing unit 1101 determines the first encoding parameter according to the first BCH code, the first processing unit 1101 is specifically configured to: Determine the target polynomial gi in the generator polynomial group; determine the second code according to the gi, the code length of the second code is N, the length of the information bit is ki, and the N is the code length of the mother code of the first BCH code , the ki is the information bit length corresponding to the gi; the first code is determined according to the second code; wherein, the gi is the polynomials g1, g2, g3, ... included in the generator polynomial group, One of gx, where x is an integer greater than or equal to 1.
具体的,所述第一处理单元1101根据所述第二码确定所述第一码时,具体用于:对所述第二码缩短,得到第三码;当所述第三码的码率小于k/n时,对所述第三码打孔,得到所述第一码;当所述第三码的码率大于所述k/n时,对所述第三码增加冗余比特,得到所述第一码;所述第三码的信息比特长度为k。Specifically, when the first processing unit 1101 determines the first code according to the second code, it is specifically configured to: shorten the second code to obtain a third code; when the code rate of the third code is When less than k/n, punch the third code to obtain the first code; when the code rate of the third code is greater than the k/n, add redundant bits to the third code, The first code is obtained; the information bit length of the third code is k.
示例性的,所述第一处理单元1101对所述第二码缩短,得到第三码时,具体用于:将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长为N+k-ki。Exemplarily, when the first processing unit 1101 shortens the second code to obtain a third code, the first processing unit 1101 is specifically configured to: shorten the second code by ki-k bits to obtain a third code. The code length of three yards is N+k-ki.
一种可能的实施方式中,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;所述第一处理单元1101对所述第三码打孔,得到所述第一码时,具体用于:对所述第三孔打孔至n个比特,得到所述第一码。In a possible implementation manner, the ki corresponding to the gi is the first information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the first information bit length is less than N+kn. When the first processing unit 1101 punches the third code to obtain the first code, the first processing unit 1101 is specifically used for: punching the third hole to n bits to obtain the first code. code.
具体的,所述第一处理单元1101对所述第三孔打孔至n个比特,得到所述第一码时,具体用于:对所述第三码打孔N+k-ki-n个比特,得到所述第一码。Specifically, when the first processing unit 1101 punctures the third hole to n bits to obtain the first code, the first processing unit 1101 is specifically configured to: puncture the third code N+k-ki-n bits to obtain the first code.
示例性的,所述第一处理单元1101对所述第三码打孔N+k-ki-n个比特时,具体用于:当所述第一BCH码为非系统码时,打孔所述第三码的前N+k-ki-n个比特;或者,打孔所述第三码的后N+k-ki-n个比特;或者,按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;当所述第一BCH码为系统码时,打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,打孔所述第三码系统位中的前N+k-ki-n个比特;或者,打孔所述第三码系统位中的后N+k-ki-n个比特;或者,按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。Exemplarily, when the first processing unit 1101 punctures N+k-ki-n bits of the third code, it is specifically configured to: when the first BCH code is a non-systematic code, puncture all the bits. The first N+k-ki-n bits of the third code; or, puncturing the last N+k-ki-n bits of the third code; or, according to a preset puncturing sequence, puncture all N+k-ki-n bits in the third code; when the first BCH code is a systematic code, puncture the first N+k-ki-n bits in the non-systematic bits of the third code ; Or, punch the last N+k-ki-n bits in the non-systematic bits of the third code; or, punch the first N+k-ki-n bits in the systematic bits of the third code; Or, puncturing the last N+k-ki-n bits in the systematic bits of the third code; or, puncturing N in the non-systematic bits of the third code according to the preset puncturing sequence +k-ki-n bits; or, puncturing N+k-ki-n bits in the third code system bits according to the puncturing sequence; or, puncturing the puncturing sequence according to the puncturing sequence N+k-ki-n bits in the third code.
可选的,当所述第一BCH码为扩展BCH eBCH码时,所述第一处理单元1101还用于打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特。Optionally, when the first BCH code is an extended BCH eBCH code, the first processing unit 1101 is further configured to puncture extended bits in the eBCH code, where the extended bits are the parity of information bits. Check bits.
另一种可能的实施方式中,所述gi对应的所述ki是所述多项式组中包含的多项式对 应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值;所述第一处理单元1101对所述第三码增加冗余比特,得到所述第一码时,具体用于:对所述第三码增加冗余比特至n个比特,得到所述第一码。In another possible implementation manner, the ki corresponding to the gi is the second information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the second information bit length is greater than N+ The minimum value of kn; the first processing unit 1101 adds redundant bits to the third code to obtain the first code, and is specifically used for: adding redundant bits to the third code to n bits, to obtain the first code.
一种示例,所述第一处理单元1101对所述第三码增加冗余比特至n个比特,得到所述第一码时,具体用于:对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。In an example, the first processing unit 1101 adds redundant bits to the third code to n bits, and when the first code is obtained, the first processing unit 1101 is specifically used for: adding n-N+k to the third code -ki redundant bits to obtain the first code.
具体的,所述第一处理单元1101对所述第三码增加n-N-k+ki个冗余比特时,具体用于:对所述第三码增加n-N-k+ki个奇偶校验比特;或者,增加所述第三码的n-N-k+ki个比特的重复比特;或者,对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。Specifically, when the first processing unit 1101 adds nN-k+ki redundant bits to the third code, it is specifically used to: add nN-k+ki parity bits to the third code; Or, adding nN-k+ki bits of repetition bits of the third code; or, adding A parity bits and B repetition bits to the third code, A+B=nN-k+ki .
示例性的,所述第一处理单元1101对所述第三码增加n-N-k+ki个奇偶校验比特时,具体用于:对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者,对所述第三码的k个信息比特进行单纯形码编码,得到n-N-k+ki个奇偶校验比特。Exemplarily, when adding nN-k+ki parity bits to the third code, the first processing unit 1101 is specifically configured to: generate a parity sum for k information bits of the third code. , obtain a parity check bit; generate a parity check sum for kd information bits in the k information bits, and obtain a parity check bit; until nN-k+ki parity check bits are obtained; wherein , the d is 1, 2, ... k-1; or, performing simplex code encoding on the k information bits of the third code to obtain nN-k+ki parity bits.
示例性的,当所述第一BCH码为非系统码时,所述第一处理单元1101增加所述第三码的n-N-k+ki个比特的重复比特时,具体用于:对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。Exemplarily, when the first BCH code is a non-systematic code, when the first processing unit 1101 adds nN-k+ki bits of repeated bits of the third code, the first processing unit 1101 is specifically configured to: The third code adds the repetition bits of the first nN-k+ki bits of the third code; or, adds the repetition bits of the last nN-k+ki bits of the third code to the third code; or , according to a preset sequence, adding nN-k+ki bits of repeated bits in the third code corresponding to the preset sequence to the third code.
示例性的,当所述第一BCH码为系统码时,所述第一处理单元1101增加所述第三码的n-N-k+ki个比特的重复比特时,具体用于:对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者,对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者,按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。Exemplarily, when the first BCH code is a systematic code, when the first processing unit 1101 adds nN-k+ki bits of repeated bits of the third code, the first processing unit 1101 is specifically configured to: For the third code, the repetition bits of the first nN-k+ki systematic bits of the third code are added; or, the repetition of the last nN-k+ki systematic bits of the third code is added to the third code. or, according to a preset sequence, adding repeating bits of nN-k+ki systematic bits in the third code corresponding to the preset sequence to the third code.
示例性的,所述第一处理单元1101对所述第三码增加A个奇偶校验比特和B个重复比特时,具体用于:对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者,对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者,对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。Exemplarily, when the first processing unit 1101 adds A parity bits and B repetition bits to the third code, it is specifically configured to: add the A parity bits to the third code. After adding the B repetition bits; or, after adding the B repetition bits to the third code, add the A parity bits; or, adding the A parity bits to the third code Among the number of parity bits and the B repeat bits, the adjacent bits of any one of the parity bits are repeat bits, and the adjacent bits of any one of the repeat bits are the parity bits.
在一种可选的实施方式中,所述第一处理单元1101将所述第二码缩短ki-k个比特时,具体用于:当所述第一BCH码为非系统码时,缩短所述第二码的前ki-k个比特;或者,缩短所述第二码的后ki-k个比特;或者,按照预设的缩短序列缩短所述第二码的ki-k个比特;当所述第一BCH码为系统码时,缩短所述第二码系统位中的前ki-k个比特;或者,缩短所述第二码系统位中的后ki-k个比特;或者,按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。In an optional implementation manner, when the first processing unit 1101 shortens the second code by ki-k bits, it is specifically used for: when the first BCH code is a non-systematic code, shortening the second code by ki-k bits. the first ki-k bits of the second code; or, shortening the last ki-k bits of the second code; or, shortening the ki-k bits of the second code according to a preset shortening sequence; when When the first BCH code is a systematic code, shorten the first ki-k bits in the systematic bits of the second code; or shorten the last ki-k bits in the systematic bits of the second code; or, according to The shortening sequence shortens ki-k bits of systematic bits of the second code.
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。It should be noted that the division of units in the embodiments of the present application is illustrative, and is only a logical function division, and other division methods may be used in actual implementation. Each functional unit in the embodiments of the present application may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit. The above-mentioned integrated units may be implemented in the form of hardware, or may be implemented in the form of software functional units.
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对 现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。The integrated unit, if implemented as a software functional unit and sold or used as a stand-alone product, may be stored in a computer-readable storage medium. Based on this understanding, the technical solutions of the present application can be embodied in the form of software products in essence, or the parts that contribute to the prior art, or all or part of the technical solutions, and the computer software products are stored in a storage medium , including several instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) or a processor (processor) to execute all or part of the steps of the methods in the various embodiments of the present application. The aforementioned storage medium includes: U disk, mobile hard disk, read-only memory (ROM), random access memory (RAM), magnetic disk or optical disk and other media that can store program codes .
基于以上实施例,本申请实施例提供的一种编码装置还可以参阅图12所示,所述编码装置1200可以包括存储器1203和处理器1202。可选的,所述编码装置1200中还可以包括收发器1201。其中,所述处理器1202可以控制所述收发器1201接收和发送数据或信息等。Based on the above embodiments, an encoding apparatus provided by an embodiment of the present application may also be referred to as shown in FIG. 12 , and the encoding apparatus 1200 may include a memory 1203 and a processor 1202 . Optionally, the encoding apparatus 1200 may further include a transceiver 1201 . The processor 1202 may control the transceiver 1201 to receive and transmit data or information.
具体的,处理器1202可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器1202还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。Specifically, the processor 1202 may be a central processing unit (CPU), a network processor (NP), or a combination of CPU and NP. The processor 1202 may further include hardware chips. The above-mentioned hardware chip may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD) or a combination thereof. The above-mentioned PLD can be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a general-purpose array logic (generic array logic, GAL) or any combination thereof.
其中,收发器1201、处理器1202和存储器1203之间相互连接。可选的,收发器1201、处理器1202和存储器1203通过总线1204相互连接;总线1204可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。The transceiver 1201, the processor 1202 and the memory 1203 are connected to each other. Optionally, the transceiver 1201, the processor 1202 and the memory 1203 are connected to each other through a bus 1204; the bus 1204 may be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) ) bus, etc. The bus can be divided into address bus, data bus, control bus and so on. For ease of representation, only one thick line is shown in FIG. 12, but it does not mean that there is only one bus or one type of bus.
在一种可选的实施方式中,存储器1203,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。存储器1203可能包括RAM,也可能还包括非易失性存储器(non-volatile memory),例如一个或多个磁盘存储器。处理器1202执行存储器1203所存放的应用程序,实现上述功能,从而实现编码装置1200的功能。In an optional implementation manner, the memory 1203 is used to store programs and the like. Specifically, the program may include program code, the program code including computer operation instructions. The memory 1203 may include RAM, and may also include non-volatile memory, such as one or more disk memories. The processor 1202 executes the application program stored in the memory 1203 to realize the above-mentioned functions, thereby realizing the functions of the encoding device 1200 .
具体的,所述编码装置1200可以实现上述图2所示的实施例中编码装置的功能。具体的,所述处理器1202可以调用所述存储器1203中的程序以执行上述图2中的方法。具体的可以参见图2中方法描述,此处不再详细描述。Specifically, the encoding apparatus 1200 may implement the functions of the encoding apparatus in the embodiment shown in FIG. 2 above. Specifically, the processor 1202 may call the program in the memory 1203 to execute the method in FIG. 2 above. For details, refer to the description of the method in FIG. 2 , which will not be described in detail here.
在一种可选的实施方式中,所述处理器1202可以包括构造器、编码器、译码器等等,由构造器、编码器、译码器等共同实现处理器的功能。In an optional implementation manner, the processor 1202 may include a constructor, an encoder, a decoder, and the like, and the functions of the processor are jointly implemented by the constructor, the encoder, and the decoder.
在一种可选的实施方式中,所述收发器1201可以发送编码后的比特,还可以从其他设备接收信息或数据等。In an optional implementation manner, the transceiver 1201 may send encoded bits, and may also receive information or data from other devices.
基于以上实施例,本申请实施例提供了一种通信系统,该通信系统可以包括上述实施例涉及的编码装置等。Based on the above embodiments, the embodiments of the present application provide a communication system, and the communication system may include the encoding device and the like involved in the above embodiments.
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的编码方法。Embodiments of the present application further provide a computer-readable storage medium, where the computer-readable storage medium is used to store a computer program, and when the computer program is executed by a computer, the computer can implement the encoding method provided by the foregoing method embodiments.
本申请实施例还提供一种计算机程序产品,所述计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的编码方法。Embodiments of the present application further provide a computer program product, where the computer program product is used to store a computer program, and when the computer program is executed by a computer, the computer can implement the encoding method provided by the above method embodiments.
本申请实施例还提供一种芯片,所述芯片与存储器耦合,所述芯片用于实现上述方法实施例提供的编码方法。An embodiment of the present application further provides a chip, where the chip is coupled with a memory, and the chip is used to implement the encoding method provided by the above method embodiments.
本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述编码装置实现上述功能。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存编码装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。An embodiment of the present application further provides a chip system, where the chip system includes a processor, which is configured to support the above-mentioned encoding apparatus to realize the above-mentioned functions. In a possible design, the chip system further includes a memory for storing necessary program instructions and data of the encoding device. The chip system may be composed of chips, or may include chips and other discrete devices.
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。As will be appreciated by those skilled in the art, the embodiments of the present application may be provided as a method, a system, or a computer program product. Accordingly, the present application may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the present application may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, etc.) having computer-usable program code embodied therein.
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。The present application is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to the present application. It will be understood that each flow and/or block in the flowchart illustrations and/or block diagrams, and combinations of flows and/or blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to the processor of a general purpose computer, special purpose computer, embedded processor or other programmable data processing device to produce a machine such that the instructions executed by the processor of the computer or other programmable data processing device produce Means for implementing the functions specified in a flow or flow of a flowchart and/or a block or blocks of a block diagram.
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。These computer program instructions may also be stored in a computer-readable memory capable of directing a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory result in an article of manufacture comprising instruction means, the instructions The apparatus implements the functions specified in the flow or flow of the flowcharts and/or the block or blocks of the block diagrams.
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。These computer program instructions can also be loaded on a computer or other programmable data processing device to cause a series of operational steps to be performed on the computer or other programmable device to produce a computer-implemented process such that The instructions provide steps for implementing the functions specified in the flow or blocks of the flowcharts and/or the block or blocks of the block diagrams.
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。Obviously, those skilled in the art can make various changes and modifications to the present application without departing from the protection scope of the present application. Thus, if these modifications and variations of the present application fall within the scope of the claims of the present application and their equivalents, the present application is also intended to include these modifications and variations.

Claims (55)

  1. 一种编码方法,其特征在于,包括:An encoding method, comprising:
    根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0;The first encoding parameter is determined according to the first BCH code; the first BCH code is the BCH code to be encoded; the first encoding parameter is the first code or the generator matrix of the first code; the code of the first code The length is n, and the length of the information bit is k; the n is greater than 0, and the k is greater than 0;
    基于所述第一编码参数进行BCH码编码。BCH code encoding is performed based on the first encoding parameter.
  2. 如权利要求1所述的方法,其特征在于,所述第一编码参数为所述第一码时,根据第一BCH码确定第一编码参数,包括:The method of claim 1, wherein when the first encoding parameter is the first code, determining the first encoding parameter according to the first BCH code, comprising:
    在所述第一BCH码的生成多项式组中确定目标多项式gi,其中,所述gi是所述生成多项式组包括的多项式g1,g2,g3,……,gx中的一个,x为大于或者等于1的整数;A target polynomial gi is determined in the generator polynomial group of the first BCH code, wherein the gi is one of the polynomials g1, g2, g3, ..., gx included in the generator polynomial group, and x is greater than or equal to an integer of 1;
    根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;The second code is determined according to the gi, the code length of the second code is N, the information bit length is ki, the N is the code length of the mother code of the first BCH code, and the ki is the corresponding code of the gi length of information bits;
    根据所述第二码确定所述第一码。The first code is determined from the second code.
  3. 如权利要求2所述的方法,其特征在于,根据所述第二码确定所述第一码,包括:The method of claim 2, wherein determining the first code according to the second code comprises:
    对所述第二码缩短,得到第三码;shortening the second code to obtain a third code;
    当所述第三码的码率小于k/n时,对所述第三码打孔,得到所述第一码;When the code rate of the third code is less than k/n, punch the third code to obtain the first code;
    当所述第三码的码率大于所述k/n时,对所述第三码增加冗余比特,得到所述第一码;When the code rate of the third code is greater than the k/n, adding redundant bits to the third code to obtain the first code;
    所述第三码的信息比特长度为k。The information bit length of the third code is k.
  4. 如权利要求3所述的方法,其特征在于,对所述第二码缩短,得到第三码,包括:The method of claim 3, wherein the second code is shortened to obtain a third code, comprising:
    将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长为N+k-ki。The second code is shortened by ki-k bits to obtain a third code, and the code length of the third code is N+k-ki.
  5. 如权利要求3或4所述的方法,其特征在于,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;The method according to claim 3 or 4, wherein the ki corresponding to the gi is the first information bit length among the information bit lengths corresponding to the polynomials included in the polynomial group, and the first information The bit length is the maximum value less than N+kn;
    对所述第三码打孔,得到所述第一码,包括:The third code is punched to obtain the first code, including:
    对所述第三孔打孔至n个比特,得到所述第一码。The third hole is punched to n bits to obtain the first code.
  6. 如权利要求5所述的方法,其特征在于,对所述第三孔打孔至n个比特,得到所述第一码,包括:The method of claim 5, wherein the third hole is punched to n bits to obtain the first code, comprising:
    对所述第三码打孔N+k-ki-n个比特,得到所述第一码。The third code is punctured with N+k-ki-n bits to obtain the first code.
  7. 如权利要求6所述的方法,其特征在于,对所述第三码打孔N+k-ki-n个比特,包括:The method of claim 6, wherein puncturing N+k-ki-n bits for the third code comprises:
    当所述第一BCH码为非系统码时,打孔所述第三码的前N+k-ki-n个比特;或者,打孔所述第三码的后N+k-ki-n个比特;或者,按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;When the first BCH code is a non-systematic code, puncture the first N+k-ki-n bits of the third code; or, puncture the last N+k-ki-n bits of the third code or, according to a preset puncturing sequence, puncturing N+k-ki-n bits in the third code;
    当所述第一BCH码为系统码时,打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,打孔所述第三码系统位中的前N+k-ki-n个比特;或者,打孔所述第三码系统位中的后N+k-ki-n个比特;或者,按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。When the first BCH code is a systematic code, puncturing the first N+k-ki-n bits in the non-systematic bits of the third code; or, puncturing the last bits in the non-systematic bits of the third code N+k-ki-n bits; or, puncturing the first N+k-ki-n bits in the third code systematic bits; or, puncturing the last N+ bits in the third code systematic bits k-ki-n bits; or, puncturing N+k-ki-n bits in the non-systematic bits of the third code according to the preset puncturing sequence; or, according to the puncturing sequence puncturing N+k-ki-n bits in the systematic bits of the third code; or, puncturing N+k-ki-n bits in the third code according to the puncturing sequence.
  8. 如权利要求7所述的方法,其特征在于,当所述第一BCH码为扩展BCH eBCH码 时,所述方法还包括:The method of claim 7, wherein when the first BCH code is an extended BCH eBCH code, the method further comprises:
    打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特。The extension bits in the eBCH code are punctured, wherein the extension bits are parity bits of the information bits.
  9. 如权利要求3或4所述的方法,其特征在于,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值;The method according to claim 3 or 4, wherein the ki corresponding to the gi is the second information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the second information The bit length is the minimum value greater than N+kn;
    对所述第三码增加冗余比特,得到所述第一码,包括:Adding redundant bits to the third code to obtain the first code, including:
    对所述第三码增加冗余比特至n个比特,得到所述第一码。The first code is obtained by adding redundant bits to the third code to n bits.
  10. 如权利要求9所述的方法,其特征在于,对所述第三码增加冗余比特至n个比特,得到所述第一码,包括:The method of claim 9, wherein adding redundant bits to the third code to n bits to obtain the first code, comprising:
    对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。The first code is obtained by adding n-N+k-ki redundant bits to the third code.
  11. 如权利要求10所述的方法,其特征在于,对所述第三码增加n-N-k+ki个冗余比特,包括:The method of claim 10, wherein adding n-N-k+ki redundant bits to the third code, comprising:
    对所述第三码增加n-N-k+ki个奇偶校验比特;或者adding n-N-k+ki parity bits to the third code; or
    增加所述第三码的n-N-k+ki个比特的重复比特;或者increase the repetition bits of n-N-k+ki bits of the third code; or
    对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。A parity check bits and B repetition bits are added to the third code, A+B=n-N-k+ki.
  12. 如权利要求11所述的方法,其特征在于,对所述第三码增加n-N-k+ki个奇偶校验比特,包括:The method of claim 11, wherein adding n-N-k+ki parity bits to the third code, comprising:
    对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者generating a parity check sum for k information bits of the third code to obtain a parity check bit; generating a parity check sum for kd information bits in the k information bits to obtain a parity check bit ; until nN-k+ki parity bits are obtained; wherein, the d is 1, 2, ... k-1; or
    对所述第三码的k个信息比特进行单纯形码编码,得到n-N-k+ki个奇偶校验比特。Simplex code encoding is performed on the k information bits of the third code to obtain n-N-k+ki parity bits.
  13. 如权利要求11所述的方法,其特征在于,当所述第一BCH码为非系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,包括:The method of claim 11, wherein when the first BCH code is a non-systematic code, adding n-N-k+ki bits of repetition bits of the third code, comprising:
    对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者adding repeating bits of the first n-N-k+ki bits of the third code to the third code; or
    对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者adding repeating bits of the last n-N-k+ki bits of the third code to the third code; or
    按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。According to a preset sequence, repeating bits of n-N-k+ki bits in the third code corresponding to the preset sequence are added to the third code.
  14. 如权利要求11所述的方法,其特征在于,当所述第一BCH码为系统码时,增加所述第三码的n-N-k+ki个比特的重复比特,包括:The method according to claim 11, wherein when the first BCH code is a systematic code, adding n-N-k+ki bits of repetition bits of the third code, comprising:
    对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者adding repeating bits of the first n-N-k+ki systematic bits of the third code to the third code; or
    对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者adding repeating bits of the last n-N-k+ki systematic bits of the third code to the third code; or
    按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。According to a preset sequence, repeating bits of n-N-k+ki systematic bits in the third code corresponding to the preset sequence are added to the third code.
  15. 如权利要求11所述的方法,其特征在于,对所述第三码增加A个奇偶校验比特和B个重复比特,包括:The method of claim 11, wherein adding A parity bits and B repetition bits to the third code, comprising:
    对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者After adding the A parity bits to the third code, add the B repetition bits; or
    对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者After adding the B repetition bits to the third code, add the A parity bits; or
    对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。Among the A parity check bits and the B repetition bits added to the third code, the adjacent bits of any parity check bit are repetition bits, and the adjacent bits of any repetition bit are parity check bits. Check bits.
  16. 如权利要求4-15任一项所述的方法,其特征在于,将所述第二码缩短ki-k个比特, 包括:The method according to any one of claims 4-15, wherein shortening the second code by ki-k bits, comprising:
    当所述第一BCH码为非系统码时,缩短所述第二码的前ki-k个比特;或者,缩短所述第二码的后ki-k个比特;或者,按照预设的缩短序列缩短所述第二码的ki-k个比特;When the first BCH code is a non-systematic code, shorten the first ki-k bits of the second code; or shorten the last ki-k bits of the second code; or, shorten according to a preset the sequence shortens the ki-k bits of the second code;
    当所述第一BCH码为系统码时,缩短所述第二码系统位中的前ki-k个比特;或者,缩短所述第二码系统位中的后ki-k个比特;或者,按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。When the first BCH code is a systematic code, shorten the first ki-k bits in the systematic bits of the second code; or shorten the last ki-k bits in the systematic bits of the second code; or, ki-k bits in the systematic bits of the second code are shortened according to the shortening sequence.
  17. 如权利要求1所述的方法,其特征在于,根据第一BCH码确定第一编码参数,包括:The method of claim 1, wherein determining the first encoding parameter according to the first BCH code comprises:
    确定所述第一BCH码的生成矩阵;determining the generator matrix of the first BCH code;
    根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号。The first encoding parameter is determined according to a generator matrix and a puncturing sequence of the first BCH code, where the elements included in the puncturing sequence are column numbers in the generator matrix of the first BCH code.
  18. 如权利要求17所述的方法,其特征在于,根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,包括:The method of claim 17, wherein determining the first encoding parameter according to the generator matrix and puncturing sequence of the first BCH code, comprising:
    取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;Take the last k rows of the generator matrix of the first BCH code to obtain the first matrix;
    根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。According to the puncturing sequence, the positions corresponding to the elements in the puncturing sequence in the first matrix are sequentially punctured to obtain the first encoding parameter, where the first encoding parameter includes k rows, n A matrix of columns.
  19. 如权利要求17或18所述的方法,其特征在于,所述第一码的码率k/n小于或者等于码率阈值。The method according to claim 17 or 18, wherein the code rate k/n of the first code is less than or equal to a code rate threshold.
  20. 如权利要求1所述的方法,其特征在于,根据第一BCH码确定第一编码参数,包括:The method of claim 1, wherein determining the first encoding parameter according to the first BCH code comprises:
    确定所述第一BCH码的生成矩阵;determining the generator matrix of the first BCH code;
    根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。The first encoding parameter is determined according to the generator matrix of the first BCH code and the shortened sequence, where the elements included in the shortened sequence are the column numbers in the generator matrix of the first BCH code.
  21. 如权利要求20所述的方法,其特征在于,根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,包括:The method of claim 20, wherein determining the first encoding parameter according to the generator matrix and shortening sequence of the first BCH code, comprising:
    根据所述缩短序列,依次在所述生成矩阵中对所述缩短序列中的元素对应的位置置零,得到第二矩阵;According to the shortened sequence, the positions corresponding to the elements in the shortened sequence are sequentially set to zero in the generator matrix to obtain a second matrix;
    从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。Select from the last row of the second matrix, skip the row where 1 exists in the position corresponding to the element in the shortened sequence, until the k rows are selected, and the first encoding parameter is obtained, and the first encoding parameter is A matrix with k rows and n columns.
  22. 如权利要求20或21所述的方法,其特征在于,所述第一码的码率k/n大于或者等于码率阈值。The method according to claim 20 or 21, wherein the code rate k/n of the first code is greater than or equal to a code rate threshold.
  23. 如权利要求19或22所述的方法,其特征在于,所述码率阈值为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16中的任意一个。The method according to claim 19 or 22, wherein the code rate threshold is 1/4, 1/2, 3/4, 1/3, 2/3, 1/8, 3/8, 5 /8, 7/8, 1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16, or 15/16.
  24. 如权利要求17-23任一项所述的方法,其特征在于,确定所述第一BCH码的生成矩阵,包括:The method according to any one of claims 17-23, wherein determining the generator matrix of the first BCH code comprises:
    根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。The generator matrix of the first BCH code is determined according to the generator polynomial group of the first BCH code, and the generator polynomial group of the first BCH code includes the following polynomials: g1, g2, g3, ..., gx, x is greater than or an integer equal to 1.
  25. 如权利要求24所述的方法,其特征在于,根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,包括:The method according to claim 24, wherein determining the generator matrix of the first BCH code according to the generator polynomial group of the first BCH code, comprising:
    分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;Determine the generator matrix of the first BCH code based on the row vector corresponding to each polynomial in the generator polynomial group of the first BCH code and the row vector obtained by right-shifting the row vector; The length of the row vector corresponding to each row of the generator matrix of the BCH code is equal to the code length of the mother code of the first BCH code, and the number of rows is equal to the code length of the mother code;
    其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;Among them, the first row is the row vector corresponding to the polynomial g1, the second row, ..., the k1-k2 row is the row vector corresponding to the first row shifted right by 1 bit, ..., right shifted by k1-k2-1 bit to get The row vector of ; ...; the row vector corresponding to the polynomial gi in the N-ki+1 row, the row vector corresponding to the N-ki+2 row, ..., the N-kj row, and the row vector corresponding to the N-ki+1 row is shifted to the right 1 bit, ..., the row vector obtained by shifting ki-kj-1 bits to the right; ...; the N-kx+1 row is the row vector corresponding to the polynomial gx, the N-kx+2 row is the N-kx+1 row The corresponding row vector is shifted to the right by 1 bit, ..., and the row vector obtained by shifting right by kx-1 bits;
    其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。Among them, k1 is the information bit length corresponding to g1, k2 is the information bit length corresponding to g2, ki is the information bit length corresponding to gi, kj is the information bit length corresponding to gj, kx is the information bit length corresponding to gx, and j=i +1, N is the code length of the mother code.
  26. 一种编码装置,其特征在于,包括:An encoding device, comprising:
    第一处理单元,用于根据第一BCH码确定第一编码参数;所述第一BCH码为待编码的BCH码;所述第一编码参数为第一码或为第一码的生成矩阵;所述第一码的码长为n,信息比特长度为k;所述n大于0,所述k大于0;a first processing unit, configured to determine a first encoding parameter according to the first BCH code; the first BCH code is the BCH code to be encoded; the first encoding parameter is the first code or a generator matrix of the first code; The code length of the first code is n, and the information bit length is k; the n is greater than 0, and the k is greater than 0;
    第二处理单元,用于基于所述第一编码参数进行BCH码编码。The second processing unit is configured to perform BCH code encoding based on the first encoding parameter.
  27. 如权利要求26所述的装置,其特征在于,所述第一编码参数为所述第一码时,所述第一处理单元在根据第一BCH码确定第一编码参数时,具体用于:The apparatus of claim 26, wherein when the first encoding parameter is the first code, when the first processing unit determines the first encoding parameter according to the first BCH code, the first processing unit is specifically configured to:
    在所述第一BCH码的生成多项式组中确定目标多项式gi,其中,所述gi是所述生成多项式组包括的多项式g1,g2,g3,……,gx中的一个,x为大于或者等于1的整数;A target polynomial gi is determined in the generator polynomial group of the first BCH code, wherein the gi is one of the polynomials g1, g2, g3, ..., gx included in the generator polynomial group, and x is greater than or equal to an integer of 1;
    根据所述gi确定第二码,所述第二码的码长为N,信息比特长度为ki,所述N为所述第一BCH码的母码码长,所述ki为所述gi对应的信息比特长度;The second code is determined according to the gi, the code length of the second code is N, the information bit length is ki, the N is the code length of the mother code of the first BCH code, and the ki is the corresponding code of the gi length of information bits;
    根据所述第二码确定所述第一码。The first code is determined from the second code.
  28. 如权利要求27所述的装置,其特征在于,所述第一处理单元在根据所述第二码确定所述第一码时,具体用于:The apparatus according to claim 27, wherein when the first processing unit determines the first code according to the second code, the first processing unit is specifically configured to:
    对所述第二码缩短,得到第三码;shortening the second code to obtain a third code;
    当所述第三码的码率小于k/n时,对所述第三码打孔,得到所述第一码;When the code rate of the third code is less than k/n, punch the third code to obtain the first code;
    当所述第三码的码率大于所述k/n时,对所述第三码增加冗余比特,得到所述第一码;When the code rate of the third code is greater than the k/n, adding redundant bits to the third code to obtain the first code;
    所述第三码的信息比特长度为k。The information bit length of the third code is k.
  29. 如权利要求28所述的装置,其特征在于,所述第一处理单元在对所述第二码缩短,得到第三码时,具体用于:The apparatus according to claim 28, wherein when the first processing unit shortens the second code to obtain the third code, the first processing unit is specifically configured to:
    将所述第二码缩短ki-k个比特,得到第三码,所述第三码的码长为N+k-ki。The second code is shortened by ki-k bits to obtain a third code, and the code length of the third code is N+k-ki.
  30. 如权利要求28或29所述的装置,其特征在于,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第一信息比特长度,所述第一信息比特长度为小于N+k-n的最大值;The apparatus according to claim 28 or 29, wherein the ki corresponding to the gi is the first information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the first information The bit length is the maximum value less than N+kn;
    所述第一处理单元在对所述第三码打孔,得到所述第一码时,具体用于:When punching the third code to obtain the first code, the first processing unit is specifically configured to:
    对所述第三孔打孔至n个比特,得到所述第一码。The third hole is punched to n bits to obtain the first code.
  31. 如权利要求30所述的装置,其特征在于,所述第一处理单元在对所述第三孔打孔至n个比特,得到所述第一码时,具体用于:The apparatus according to claim 30, wherein, when the first processing unit punctures the third hole to n bits to obtain the first code, the first processing unit is specifically configured to:
    对所述第三码打孔N+k-ki-n个比特,得到所述第一码。The third code is punctured with N+k-ki-n bits to obtain the first code.
  32. 如权利要求31所述的装置,其特征在于,所述第一处理单元在对所述第三码打孔N+k-ki-n个比特时,具体用于:The apparatus according to claim 31, wherein when the first processing unit punctures N+k-ki-n bits of the third code, the first processing unit is specifically configured to:
    当所述第一BCH码为非系统码时,打孔所述第三码的前N+k-ki-n个比特;或者,打孔所述第三码的后N+k-ki-n个比特;或者,按照预设的打孔序列,打孔所述第三码中的N+k-ki-n个比特;When the first BCH code is a non-systematic code, puncture the first N+k-ki-n bits of the third code; or, puncture the last N+k-ki-n bits of the third code or, according to a preset puncturing sequence, puncturing N+k-ki-n bits in the third code;
    当所述第一BCH码为系统码时,打孔所述第三码非系统位中的前N+k-ki-n个比特;或者,打孔所述第三码非系统位中的后N+k-ki-n个比特;或者,打孔所述第三码系统位中的前N+k-ki-n个比特;或者,打孔所述第三码系统位中的后N+k-ki-n个比特;或者,按照所述预设的所述打孔序列打孔所述第三码非系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码系统位中的N+k-ki-n个比特;或者,按照所述打孔序列打孔所述第三码中的N+k-ki-n个比特。When the first BCH code is a systematic code, puncturing the first N+k-ki-n bits in the non-systematic bits of the third code; or, puncturing the last bits in the non-systematic bits of the third code N+k-ki-n bits; or, puncturing the first N+k-ki-n bits in the third code systematic bits; or, puncturing the last N+ bits in the third code systematic bits k-ki-n bits; or, puncturing N+k-ki-n bits in the non-systematic bits of the third code according to the preset puncturing sequence; or, according to the puncturing sequence puncturing N+k-ki-n bits in the systematic bits of the third code; or, puncturing N+k-ki-n bits in the third code according to the puncturing sequence.
  33. 如权利要求32所述的装置,其特征在于,当所述第一BCH码为扩展BCH eBCH码时,所述第一处理单元还用于:The apparatus of claim 32, wherein when the first BCH code is an extended BCH eBCH code, the first processing unit is further configured to:
    打孔所述eBCH码中的扩展比特,其中所述扩展比特为信息比特的奇偶校验比特。The extension bits in the eBCH code are punctured, wherein the extension bits are parity bits of the information bits.
  34. 如权利要求28或29所述的装置,其特征在于,所述gi对应的所述ki是所述多项式组中包含的多项式对应的信息比特长度中的第二信息比特长度,所述第二信息比特长度为大于N+k-n的最小值;The apparatus according to claim 28 or 29, wherein the ki corresponding to the gi is the second information bit length in the information bit lengths corresponding to the polynomials included in the polynomial group, and the second information The bit length is the minimum value greater than N+kn;
    所述第一处理单元在对所述第三码增加冗余比特,得到所述第一码时,具体用于:When adding redundant bits to the third code to obtain the first code, the first processing unit is specifically configured to:
    对所述第三码增加冗余比特至n个比特,得到所述第一码。The first code is obtained by adding redundant bits to the third code to n bits.
  35. 如权利要求34所述的装置,其特征在于,所述第一处理单元在对所述第三码增加冗余比特至n个比特,得到所述第一码时,具体用于:The apparatus according to claim 34, wherein when the first processing unit adds redundant bits to the third code to n bits to obtain the first code, the first processing unit is specifically configured to:
    对所述第三码增加n-N+k-ki个冗余比特,得到所述第一码。The first code is obtained by adding n-N+k-ki redundant bits to the third code.
  36. 如权利要求35所述的装置,其特征在于,所述第一处理单元在对所述第三码增加n-N-k+ki个冗余比特时,具体用于:The apparatus according to claim 35, wherein when adding n-N-k+ki redundant bits to the third code, the first processing unit is specifically configured to:
    对所述第三码增加n-N-k+ki个奇偶校验比特;或者adding n-N-k+ki parity bits to the third code; or
    增加所述第三码的n-N-k+ki个比特的重复比特;或者increase the repetition bits of n-N-k+ki bits of the third code; or
    对所述第三码增加A个奇偶校验比特和B个重复比特,A+B=n-N-k+ki。A parity check bits and B repetition bits are added to the third code, A+B=n-N-k+ki.
  37. 如权利要求36所述的装置,其特征在于,所述第一处理单元在对所述第三码增加n-N-k+ki个奇偶校验比特时,具体用于:The apparatus of claim 36, wherein when adding n-N-k+ki parity bits to the third code, the first processing unit is specifically configured to:
    对所述第三码的k个信息比特生成奇偶校验和,得到一个奇偶校验比特;对所述k个信息比特中的k-d个信息比特生成就奇偶校验和,得到一个奇偶校验比特;直至得到n-N-k+ki个奇偶校验比特为止;其中,所述d为1,2,……k-1;或者generating a parity check sum for k information bits of the third code to obtain a parity check bit; generating a parity check sum for kd information bits in the k information bits to obtain a parity check bit ; until nN-k+ki parity bits are obtained; wherein, the d is 1, 2, ... k-1; or
    对所述第三码的k个信息比特进行单纯形码编码,得到n-N-k+ki个奇偶校验比特。Simplex code encoding is performed on the k information bits of the third code to obtain n-N-k+ki parity bits.
  38. 如权利要求36所述的装置,其特征在于,当所述第一BCH码为非系统码时,所述第一处理单元在增加所述第三码的n-N-k+ki个比特的重复比特时,具体用于:The apparatus of claim 36, wherein when the first BCH code is a non-systematic code, the first processing unit is adding nN-k+ki bits of repetition bits of the third code , specifically for:
    对所述第三码增加所述第三码的前n-N-k+ki个比特的重复比特;或者adding repeating bits of the first n-N-k+ki bits of the third code to the third code; or
    对所述第三码增加所述第三码的后n-N-k+ki个比特的重复比特;或者adding repeating bits of the last n-N-k+ki bits of the third code to the third code; or
    按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个比特的重复比特。According to a preset sequence, repeating bits of n-N-k+ki bits in the third code corresponding to the preset sequence are added to the third code.
  39. 如权利要求36所述的装置,其特征在于,当所述第一BCH码为系统码时,所述第一处理单元在增加所述第三码的n-N-k+ki个比特的重复比特时,具体用于:The apparatus according to claim 36, wherein when the first BCH code is a systematic code, when the first processing unit adds nN-k+ki bits of repetition bits of the third code , specifically for:
    对所述第三码增加所述第三码的前n-N-k+ki个系统位比特的重复比特;或者adding repeating bits of the first n-N-k+ki systematic bits of the third code to the third code; or
    对所述第三码增加所述第三码的后n-N-k+ki个系统位比特的重复比特;或者adding repeating bits of the last n-N-k+ki systematic bits of the third code to the third code; or
    按照预设的序列,对所述第三码增加所述预设的序列对应的所述第三码中的n-N-k+ki个系统位比特的重复比特。According to a preset sequence, repeating bits of n-N-k+ki systematic bits in the third code corresponding to the preset sequence are added to the third code.
  40. 如权利要求36所述的装置,其特征在于,所述第一处理单元在对所述第三码增加A个奇偶校验比特和B个重复比特时,具体用于:The apparatus according to claim 36, wherein when adding A parity bits and B repetition bits to the third code, the first processing unit is specifically configured to:
    对所述第三码增加所述A个奇偶校验比特后,增加所述B个重复比特;或者After adding the A parity bits to the third code, add the B repetition bits; or
    对所述第三码增加所述B个重复比特后,增加所述A个奇偶校验比特;或者After adding the B repetition bits to the third code, add the A parity bits; or
    对所述第三码增加的所述A个奇偶校验比特和所述B个重复比特中,任一个奇偶校验比特相邻的比特为重复比特,任一个重复比特的相邻比特为奇偶校验比特。Among the A parity check bits and the B repetition bits added to the third code, the adjacent bits of any parity check bit are repetition bits, and the adjacent bits of any repetition bit are parity check bits. Check bits.
  41. 如权利要求29-40任一项所述的装置,其特征在于,所述第一处理单元在将所述第二码缩短ki-k个比特时,具体用于:The apparatus according to any one of claims 29-40, wherein when the first processing unit shortens the second code by ki-k bits, it is specifically configured to:
    当所述第一BCH码为非系统码时,缩短所述第二码的前ki-k个比特;或者,缩短所述第二码的后ki-k个比特;或者,按照预设的缩短序列缩短所述第二码的ki-k个比特;When the first BCH code is a non-systematic code, shorten the first ki-k bits of the second code; or shorten the last ki-k bits of the second code; or, shorten according to a preset the sequence shortens the ki-k bits of the second code;
    当所述第一BCH码为系统码时,缩短所述第二码系统位中的前ki-k个比特;或者,缩短所述第二码系统位中的后ki-k个比特;或者,按照所述缩短序列缩短所述第二码系统位中的ki-k个比特。When the first BCH code is a systematic code, shorten the first ki-k bits in the systematic bits of the second code; or shorten the last ki-k bits in the systematic bits of the second code; or, ki-k bits in the systematic bits of the second code are shortened according to the shortening sequence.
  42. 如权利要求26所述的装置,其特征在于,所述第一处理单元在根据第一BCH码确定第一编码参数时,具体用于:The apparatus according to claim 26, wherein when the first processing unit determines the first encoding parameter according to the first BCH code, it is specifically configured to:
    确定所述第一BCH码的生成矩阵;determining the generator matrix of the first BCH code;
    根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数,所述打孔序列中包括的元素为所述第一BCH码的生成矩阵中的列号。The first encoding parameter is determined according to a generator matrix and a puncturing sequence of the first BCH code, where the elements included in the puncturing sequence are column numbers in the generator matrix of the first BCH code.
  43. 如权利要求42所述的装置,其特征在于,所述第一处理单元在根据所述第一BCH码的生成矩阵和打孔序列,确定所述第一编码参数时,具体用于:The apparatus according to claim 42, wherein when the first processing unit determines the first encoding parameter according to the generator matrix and the puncturing sequence of the first BCH code, the first processing unit is specifically configured to:
    取所述第一BCH码的生成矩阵的最后k行,得到第一矩阵;Take the last k rows of the generator matrix of the first BCH code to obtain the first matrix;
    根据所述打孔序列,依次对所述第一矩阵中所述打孔序列中的元素对应的位置进行打孔,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。According to the puncturing sequence, the positions corresponding to the elements in the puncturing sequence in the first matrix are sequentially punctured to obtain the first encoding parameter, where the first encoding parameter includes k rows, n A matrix of columns.
  44. 如权利要求42或43所述的装置,其特征在于,所述第一码的码率k/n小于或者等于码率阈值。The apparatus according to claim 42 or 43, wherein the code rate k/n of the first code is less than or equal to a code rate threshold.
  45. 如权利要求26所述的装置,其特征在于,所述第一处理单元在根据第一BCH码确定第一编码参数时,具体用于:The apparatus according to claim 26, wherein when the first processing unit determines the first encoding parameter according to the first BCH code, it is specifically configured to:
    确定所述第一BCH码的生成矩阵;determining the generator matrix of the first BCH code;
    根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数,所述缩短序列中包括的元素为所述第一BCH码的生成矩阵中的列号。The first encoding parameter is determined according to the generator matrix of the first BCH code and the shortened sequence, where the elements included in the shortened sequence are the column numbers in the generator matrix of the first BCH code.
  46. 如权利要求45所述的装置,其特征在于,所述第一处理单元在根据所述第一BCH码的生成矩阵和缩短序列,确定所述第一编码参数时,具体用于:The apparatus according to claim 45, wherein when the first processing unit determines the first encoding parameter according to the generator matrix and shortening sequence of the first BCH code, the first processing unit is specifically configured to:
    根据所述缩短序列,依次在所述生成矩阵中对所述缩短序列中的元素对应的位置置零,得到第二矩阵;According to the shortened sequence, the positions corresponding to the elements in the shortened sequence are sequentially set to zero in the generator matrix to obtain a second matrix;
    从所述第二矩阵最后一行开始选取,跳过所述缩短序列中的元素对应的位置存在1的行,直至选取到k行为止,得到所述第一编码参数,所述第一编码参数为包括k行,n列的矩阵。Select from the last row of the second matrix, skip the row where 1 exists in the position corresponding to the element in the shortened sequence, until the k rows are selected, and the first encoding parameter is obtained, and the first encoding parameter is A matrix with k rows and n columns.
  47. 如权利要求45或46所述的装置,其特征在于,所述第一码的码率k/n大于或者等于码率阈值。The apparatus according to claim 45 or 46, wherein the code rate k/n of the first code is greater than or equal to a code rate threshold.
  48. 如权利要求44或47所述的装置,其特征在于,所述码率阈值为1/4、1/2、3/4、1/3、2/3、1/8、3/8、5/8、7/8、1/16、3/16、5/16、7/16、9/16、11/16、13/16或15/16中的任意一个。The apparatus according to claim 44 or 47, wherein the code rate threshold is 1/4, 1/2, 3/4, 1/3, 2/3, 1/8, 3/8, 5 /8, 7/8, 1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16, or 15/16.
  49. 如权利要求42-48任一项所述的装置,其特征在于,所述第一处理单元在确定所述第一BCH码的生成矩阵时,具体用于:The apparatus according to any one of claims 42-48, wherein, when the first processing unit determines the generator matrix of the first BCH code, it is specifically configured to:
    根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵,所述第一BCH码的生成多项式组包括以下多项式:g1,g2,g3,……,gx,x为大于或者等于1的整数。The generator matrix of the first BCH code is determined according to the generator polynomial group of the first BCH code, and the generator polynomial group of the first BCH code includes the following polynomials: g1, g2, g3, ..., gx, x is greater than or an integer equal to 1.
  50. 如权利要求49所述的装置,其特征在于,所述第一处理单元在根据所述第一BCH码的生成多项式组确定所述第一BCH码的生成矩阵时,具体用于:The apparatus according to claim 49, wherein when determining the generator matrix of the first BCH code according to the generator polynomial group of the first BCH code, the first processing unit is specifically configured to:
    分别基于所述第一BCH码的生成多项式组中的每一个多项式对应的行向量以及根据所述行向量右移位得到的行向量,确定所述第一BCH码的生成矩阵;所述第一BCH码的生成矩阵每一行对应的行向量长度等于所述第一BCH码的母码码长,行数等于所述母码码长;Determine the generator matrix of the first BCH code based on the row vector corresponding to each polynomial in the generator polynomial group of the first BCH code and the row vector obtained by right-shifting the row vector; The length of the row vector corresponding to each row of the generator matrix of the BCH code is equal to the code length of the mother code of the first BCH code, and the number of rows is equal to the code length of the mother code;
    其中,第1行为多项式g1对应的行向量,第2行、……、第k1-k2行分别为第一行对应的行向量右移1位、……、右移k1-k2-1位得到的行向量;……;第N-ki+1行为多项式gi对应的行向量,第N-ki+2行、……、第N-kj行为第N-ki+1行对应的行向量右移1位、……、右移ki-kj-1位得到的行向量;……;第N-kx+1行为多项式gx对应的行向量,第N-kx+2行为第N-kx+1行对应的行向量右移1位、……、右移kx-1位得到的行向量;Among them, the first row is the row vector corresponding to the polynomial g1, the second row, ..., the k1-k2 row is the row vector corresponding to the first row shifted right by 1 bit, ..., right shifted by k1-k2-1 bit to get The row vector of ; ...; the row vector corresponding to the polynomial gi in the N-ki+1 row, the row vector corresponding to the N-ki+2 row, ..., the N-kj row, and the row vector corresponding to the N-ki+1 row is shifted to the right 1 bit, ..., the row vector obtained by shifting ki-kj-1 bits to the right; ...; the N-kx+1 row is the row vector corresponding to the polynomial gx, the N-kx+2 row is the N-kx+1 row The corresponding row vector is shifted to the right by 1 bit, ..., and the row vector obtained by shifting right by kx-1 bits;
    其中,k1为g1对应的信息比特长度,k2为g2对应的信息比特长度,ki为gi对应的信息比特长度,kj为gj对应的信息比特长度,kx为gx对应的信息比特长度,j=i+1,N为所述母码码长。Among them, k1 is the information bit length corresponding to g1, k2 is the information bit length corresponding to g2, ki is the information bit length corresponding to gi, kj is the information bit length corresponding to gj, kx is the information bit length corresponding to gx, and j=i +1, N is the code length of the mother code.
  51. 一种编码装置,其特征在于,包括存储器和处理器,其中:An encoding device, comprising a memory and a processor, wherein:
    所述存储器存储有程序指令;the memory stores program instructions;
    所述处理器,用于调用所述存储器中的所述程序指令并执行,使得所述编码装置执行如权利要求1-25任一项所述的方法。The processor is configured to call and execute the program instructions in the memory, so that the encoding apparatus executes the method according to any one of claims 1-25.
  52. 一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机行如权利要求1-25中任一项所述的方法。A computer-readable storage medium, characterized by comprising instructions that, when executed on a computer, cause the computer to perform the method of any one of claims 1-25.
  53. 一种包含指令的计算机程序产品,其特征在于,当所述指令在计算机上运行时,使得权利要求1-25中任一项所述的方法被执行。A computer program product comprising instructions which, when executed on a computer, cause the method of any one of claims 1-25 to be performed.
  54. 一种芯片,其特征在于,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现如权利要求1-25中任一项所述的方法。A chip, characterized in that, the chip is coupled with a memory, and is used for reading and executing program instructions stored in the memory, so as to implement the method according to any one of claims 1-25.
  55. 一种通信系统,其特征在于,包括如权利要求26-50中任一项所述的编码装置,或 者包括如权利要求51所述的编码装置。A communication system, characterized by comprising the encoding device according to any one of claims 26-50, or comprising the encoding device according to claim 51.
PCT/CN2021/112747 2020-09-01 2021-08-16 Coding method and device WO2022048431A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/176,217 US20230308117A1 (en) 2020-09-01 2023-02-28 Encoding Method and Apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010903282.1A CN114124111A (en) 2020-09-01 2020-09-01 Coding method and device
CN202010903282.1 2020-09-01

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/176,217 Continuation US20230308117A1 (en) 2020-09-01 2023-02-28 Encoding Method and Apparatus

Publications (1)

Publication Number Publication Date
WO2022048431A1 true WO2022048431A1 (en) 2022-03-10

Family

ID=80360688

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/112747 WO2022048431A1 (en) 2020-09-01 2021-08-16 Coding method and device

Country Status (3)

Country Link
US (1) US20230308117A1 (en)
CN (1) CN114124111A (en)
WO (1) WO2022048431A1 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618584A (en) * 2013-04-28 2014-03-05 张涛 Coding and decoding method and coding and decoding system of power line communication channel
CN104426630A (en) * 2013-08-30 2015-03-18 中国科学院上海高等研究院 Method and system for bit interleaving encoding and modulation
US9203435B2 (en) * 2013-05-08 2015-12-01 Broadcom Corporation Multiple size and rate FEC code combination with minimum shortening and maximum combined code rate
CN105429646A (en) * 2015-06-30 2016-03-23 南京大学 Coding and decoding methods of ode of tail-biting staircase codes
CN106603085A (en) * 2016-11-21 2017-04-26 建荣半导体(深圳)有限公司 Method and device for generating BCH code generator polynomial, encoder, controller, and electronic device
CN110890894A (en) * 2018-09-07 2020-03-17 华为技术有限公司 Method and apparatus for concatenated coding

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2661264C (en) * 2006-08-11 2014-06-10 Aclara Power-Line Systems Inc. Method of correcting message errors using cyclic redundancy checks
CA2818126C (en) * 2010-12-03 2018-06-19 Samsung Electronics Co., Ltd. Apparatus and method for transmitting and receiving data in communication system
US9203434B1 (en) * 2012-03-09 2015-12-01 Western Digital Technologies, Inc. Systems and methods for improved encoding of data in data storage devices
US8745472B2 (en) * 2012-09-01 2014-06-03 Texas Instruments Incorporated Memory with segmented error correction codes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618584A (en) * 2013-04-28 2014-03-05 张涛 Coding and decoding method and coding and decoding system of power line communication channel
US9203435B2 (en) * 2013-05-08 2015-12-01 Broadcom Corporation Multiple size and rate FEC code combination with minimum shortening and maximum combined code rate
CN104426630A (en) * 2013-08-30 2015-03-18 中国科学院上海高等研究院 Method and system for bit interleaving encoding and modulation
CN105429646A (en) * 2015-06-30 2016-03-23 南京大学 Coding and decoding methods of ode of tail-biting staircase codes
CN106603085A (en) * 2016-11-21 2017-04-26 建荣半导体(深圳)有限公司 Method and device for generating BCH code generator polynomial, encoder, controller, and electronic device
CN110890894A (en) * 2018-09-07 2020-03-17 华为技术有限公司 Method and apparatus for concatenated coding

Also Published As

Publication number Publication date
US20230308117A1 (en) 2023-09-28
CN114124111A (en) 2022-03-01

Similar Documents

Publication Publication Date Title
US10326555B2 (en) Polar coding method, apparatus, and device
JP7471357B2 (en) Encoding method, decoding method, and device
US11133828B2 (en) Coding method and apparatus
EP3567766B1 (en) Data transmission method and apparatus
EP3584972A1 (en) Polar code encoding method and apparatus
US10892849B2 (en) Polar code coding method and apparatus
WO2017124844A1 (en) Method for determining transmission block size of polarisation code, and communication device
US11121724B2 (en) Data processing method and device
TWI675566B (en) Method and device for determining check matrix, computer storage medium
EP3584937B1 (en) Polar code encoding method and apparatus
US11502704B2 (en) Polar coding method and apparatus
WO2020077596A1 (en) Decoding method and apparatus for ldpc codes
US11463108B2 (en) Information processing method and communications apparatus
US11057052B2 (en) Data processing method and apparatus to restore mother code sequences with different code lengths by using an indication sequence and a basic sequence
WO2022048431A1 (en) Coding method and device
US11362677B2 (en) Channel encoding method and encoding apparatus
EP4246815A1 (en) Coding method and device
CN117394950A (en) Encoding method, apparatus and storage medium

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21863498

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21863498

Country of ref document: EP

Kind code of ref document: A1