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