公民身份号码,也就是你身份证上的那个号码。研究起这个,是因为在Tg上看到[一张图](https://t.me/illusory_world/2037): ![](/assets/PRC-Citizen-ID-Number/1.jpg) 看上去还挺好玩的,不过考虑到身份证检验码,很有可能会出现问题。果然,我的计算结果显示那天只有两个可能的情况: ![](/assets/PRC-Citizen-ID-Number/2.jpg) 身份证只有两位数看起来还挺容易做到的……那回文数呢?感觉上挺不容易的?毕竟要同时符合校验规则、省份、日期等等。不如用代码算一下?看看能有多少。网上找到的算法对前六位地区的验证做得似乎不够详细,于是我自己从民政部的网站上下载了[1990](http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708041018.html)/[2000](http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220923.html)/[2010](http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220946.html)和最新[2019年11月](http://www.mca.gov.cn/article/sj/xzqh/2019/2019/201912251506.html)的数据,编码了前六位的各种可能情况放进代码里 using System; using System.Numerics; using System.Collections.Generic; public class Program { //copied from https://blog.csdn.net/u013871100/article/details/51869315 private static bool CheckIDCard18(string Id) { long n = 0; if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false) { return false;//数字验证 } //string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; //if (Array.IndexOf(region, Id.Remove(6)) == -1) //{ // return false;//省份验证 //} string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-"); DateTime time = new DateTime(); if (DateTime.TryParse(birth, out time) == false) { return false;//生日验证 } string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(','); string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(','); char[] Ai = Id.Remove(17).ToCharArray(); int sum = 0; for (int i = 0; i < 17; i++) { sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString()); } int y = -1; Math.DivRem(sum, 11, out y); if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower()) { return false;//校验码验证 } return true;//符合GB11643-1999标准 } //https://www.dotnetperls.com/reverse-string public static string ReverseStringDirect(string s) { char[] array = new char[s.Length]; int forward = 0; for (int i = s.Length - 1; i >= 0; i--) { array[forward++] = s[i]; } return new string(array); } public static void Main() { //region列表因为太长,放在文章最后 //int[] year = new int[] { 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, }; List<int> year = new List<int>(); for (int i = 192; i < 999; i++) { year.Add(i); } foreach (var regionItem in region) { foreach (var yearItem in year) { string s = regionItem.ToString() + yearItem.ToString() + ReverseStringDirect(regionItem.ToString() + yearItem.ToString()); if (Program.CheckIDCard18(s)) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\C\Downloads\test.txt", true)) { file.WriteLine(s); } } } Console.WriteLine(regionItem); } } } 跑出来的结果也是令我挺惊讶的,2000/2011/2022的2月,能产生的回文数比我想象中多很多。单是2011年2月,顺序号小于200的就有 142131 2011 02 13 124 1 152131 2011 02 13 125 1 210121 2011 02 12 101 2 211002 2011 02 20 011 2 230121 2011 02 12 103 2 231002 2011 02 20 013 2 320122 2011 02 22 102 3 321121 2011 02 12 112 3 330122 2011 02 22 103 3 331121 2011 02 12 113 3 340122 2011 02 22 104 3 350122 2011 02 22 105 3 360122 2011 02 22 106 3 361121 2011 02 12 116 3 370122 2011 02 22 107 3 371121 2011 02 12 117 3 411122 2011 02 22 111 4 421122 2011 02 22 112 4 431122 2011 02 22 113 4 433002 2011 02 20 033 4 433030 2011 02 03 033 4 450110 2011 02 01 105 4 451122 2011 02 22 115 4 469022 2011 02 22 096 4 500111 2011 02 11 100 5 500152 2011 02 25 100 5 513031 2011 02 13 031 5 520111 2011 02 11 102 5 522122 2011 02 22 122 5 530111 2011 02 11 103 5 532122 2011 02 22 123 5 533121 2011 02 12 133 5 542122 2011 02 22 124 5 610112 2011 02 21 101 6 611021 2011 02 12 011 6 621021 2011 02 12 012 6 640181 2011 02 18 104 6 653122 2011 02 22 135 6 654121 2011 02 12 145 6 也就是说这些身份证号很可能是实际存在的,何况一些地区人口出生数量远远不止每天200人。那么完全平方数呢?一开始比较傻,想直接生成所有一个个验证: public static void Main() { for (int i = 316227767; i < 999999999; i++) { BigInteger iSquare = BigInteger.Pow(i, 2); string iSquareString = iSquare.ToString(); if (Program.CheckIDCard18(iSquareString)) { Console.WriteLine(iSquareString); } if(iSquare%1000000==0){ Console.Write("Passed:"); Console.WriteLine(iSquareString); } } } 但是后来发现这样效率实在太低了……因为其实很多结果是不会符合前六位的要求的。跑了一两小时也没跑出10%的结果。在开车撞了马路中间护栏以后茅塞顿开,可以根据地区列表生成要验证的底数。改良之后一两分钟就能得到结果: public static void Main() { //region列表在文末 List<int> baseList = new List<int>(); foreach (var regionItem in region) { BigInteger startSquare = regionItem * BigInteger.Pow(10, 12); BigInteger endSquare = (regionItem + 1) * BigInteger.Pow(10, 12); //BigInteger start=BigInteger. int start = (int)Math.Ceiling(Math.Sqrt((double)startSquare)); int end = (int)Math.Floor(Math.Sqrt((double)endSquare)); for (int i = start; i <= end; i++) { baseList.Add(i); } } foreach (var i in baseList) { BigInteger iSquare = BigInteger.Pow(i, 2); string iSquareString = iSquare.ToString(); if (Program.CheckIDCard18(iSquareString)) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\C\Downloads\test.txt", true)) { file.WriteLine(iSquareString); } } if (iSquare % 10000000 == 0) { Console.Write("Finised:"); Console.WriteLine(i); } } } 结果也是出乎意料:差不多一年就有一个……假如一天能生那么多的话: 513401 1970 08 04 000 0 132128 1970 06 08 062 5 510681 1970 01 22 668 9 445302 1970 10 12 824 1 370123 1971 07 31 014 4 452624 1971 03 26 712 1 210727 1972 10 20 304 1 342523 1973 10 17 459 6 142631 1974 11 01 884 9 410325 1975 07 01 610 0 320122 1975 10 05 692 9 142634 1976 01 18 604 1 640422 1976 06 26 890 0 450902 1977 01 02 522 5 441423 1982 08 20 942 4 500115 1983 08 03 875 6 411282 1985 10 26 264 1 320107 1985 02 10 822 4 361126 1986 05 07 075 6 340321 1986 07 30 250 0 433101 1986 03 22 851 6 342423 1986 08 22 937 6 120111 1988 06 03 187 6 340203 1988 09 05 402 5 320506 1989 09 06 356 1 410621 1989 11 20 922 5 320202 1989 08 18 968 9 150502 1990 06 08 464 1 152921 1990 06 16 560 4 140926 1991 09 11 545 6 622822 1993 02 10 420 1 512535 1993 01 11 576 9 500229 1993 04 10 656 1 410181 1993 06 11 780 1 320724 1993 08 17 924 1 211281 1994 08 30 240 9 152525 1994 09 29 400 9 420922 1994 07 06 958 4 330182 1994 08 23 992 9 522523 1995 12 10 624 4 410521 1996 08 03 408 9 220284 1996 04 15 809 6 342922 1997 12 21 283 6 120112 1997 04 08 490 0 142133 1998 11 02 490 0 211421 1999 07 08 332 1 451026 2000 04 16 496 4 510229 2001 05 07 020 9 310118 2001 11 10 032 9 130922 2001 11 12 944 1 371424 2002 02 12 259 6 411023 2002 03 24 992 1 422725 2004 01 01 126 4 332602 2005 03 09 456 4 419004 2006 03 29 424 4 642221 2007 02 15 430 4 362428 2008 04 01 000 0 131127 2008 02 01 000 0 510115 2008 10 01 502 5 130123 2009 03 07 609 6 610429 2009 06 29 796 9 342522 2012 07 20 536 9 431127 2015 11 28 952 9 342426 2017 04 05 136 4 440511 2017 08 21 204 1 450502 2018 08 27 366 4 142729 2018 09 18 422 5 140303 2018 07 07 610 0 230225 2018 06 23 745 6 341282 2020 06 12 595 6 130433 2020 02 14 764 1 230719 2020 01 11 776 9 130323 2021 09 30 250 0 140211 2021 05 26 676 9 130222 2022 02 02 822 5 150603 2022 03 24 865 6 451221 2023 04 22 004 9 432322 2024 12 16 116 1 449001 2025 03 27 040 0 230811 2025 08 14 102 5 450303 2025 06 22 980 1 132336 2027 06 10 662 4 612732 2028 08 10 412 9 433001 2028 03 13 636 1 320324 2029 09 04 810 0 132436 2030 04 29 390 4 513423 2030 12 22 913 6 代码确实是个好东西。以前看似很难的东西,现在可以轻松得到结果。那么问题来了?素数呢?感觉很有挑战性…… //region below is not sorted int[] region = new int[] {110101,110102,110103,110104,110105,110106,110107,110108,110109,110111,110221,110222,110223,110224,110226,110227,110228,110229,120101,120102,120103,120104,120105,120106,120107,120108,120109,120110,120111,120112,120113,120221,120222,120223,120224,120225,130102,130103,130104,130105,130106,130121,130122,130123,130124,130202,130203,130204,130205,130206,130221,130222,130223,130224,130225,130226,130227,130228,130229,130230,130302,130303,130304,130321,130322,130323,130324,130402,130403,130404,130406,130421,130502,130503,130521,130602,130603,130604,130621,130622,130702,130703,130705,130706,130721,130802,130803,130804,130821,130902,130903,130904,130921,130922,131002,131021,131022,131023,131024,131025,131026,131028,132121,132122,132123,132124,132125,132126,132127,132128,132129,132130,132132,132133,132135,132201,132202,132223,132224,132225,132226,132227,132228,132229,132231,132232,132233,132234,132235,132236,132237,132301,132302,132322,132323,132324,132326,132329,132330,132331,132332,132335,132336,132337,132401,132402,132421,132423,132424,132425,132426,132427,132428,132429,132432,132433,132434,132435,132436,132437,132438,132440,132441,132442,132521,132522,132523,132524,132525,132526,132527,132528,132529,132530,132532,132533,132622,132623,132624,132626,132627,132628,132629,132902,132903,132904,132905,132923,132924,132926,132927,132928,132929,132931,132934,133001,133022,133023,133024,133025,133026,133027,133028,133029,133030,133031,139001,139002,140102,140103,140104,140112,140113,140121,140122,140123,140202,140203,140211,140212,140302,140303,140311,140321,140322,140402,140411,140421,140422,140423,140424,140425,140426,140427,140428,140429,140430,140431,140502,140503,140521,140522,140523,140524,140602,140603,140621,142121,142122,142123,142124,142125,142126,142130,142131,142132,142133,142201,142222,142223,142224,142225,142226,142227,142228,142229,142230,142231,142232,142233,142234,142321,142322,142323,142324,142325,142326,142327,142328,142329,142330,142331,142332,142333,142401,142421,142422,142423,142424,142427,142429,142430,142431,142432,142433,142601,142602,142603,142621,142622,142623,142625,142627,142628,142629,142630,142631,142632,142633,142634,142635,142636,142701,142722,142723,142724,142725,142726,142727,142728,142729,142730,142731,142732,142733,149001,150102,150103,150104,150105,150121,150122,150202,150203,150204,150205,150206,150207,150221,150222,150302,150303,150304,150402,150403,150404,150421,150422,150423,150424,150425,150426,150428,150429,150430,152101,152102,152103,152104,152122,152123,152125,152126,152127,152128,152129,152130,152131,152201,152221,152222,152223,152224,152301,152302,152322,152323,152324,152325,152326,152327,152501,152502,152522,152523,152524,152525,152526,152527,152528,152529,152530,152531,152601,152602,152621,152622,152623,152624,152625,152626,152627,152629,152630,152631,152632,152633,152634,152701,152722,152723,152724,152725,152726,152727,152728,152801,152822,152823,152824,152825,152826,152827,152921,152922,152923,210102,210103,210104,210105,210106,210111,210112,210113,210114,210121,210122,210202,210203,210204,210211,210212,210213,210222,210224,210225,210302,210303,210304,210311,210321,210402,210403,210404,210411,210421,210422,210423,210502,210503,210504,210505,210521,210522,210602,210603,210604,210621,210622,210623,210624,210702,210703,210711,210724,210725,210726,210727,210802,210803,210804,210811,210821,210824,210902,210903,210904,210905,210911,210921,210922,211002,211003,211004,211005,211011,211021,211022,211102,211103,211121,211122,211202,211204,211221,211223,211224,211225,211226,211302,211303,211321,211322,211323,211324,211402,211404,211405,211421,211422,219001,219002,219004,219005,219006,219007,220102,220103,220104,220105,220111,220122,220124,220125,220202,220203,220204,220211,220221,220222,220223,220302,220303,220322,220323,220324,220402,220403,220421,220422,220502,220503,220521,220523,220524,220602,220603,220604,220621,220622,220623,222301,222302,222303,222304,222323,222324,222326,222327,222328,222401,222402,222403,222404,222405,222423,222424,222426,229001,229002,229003,229004,229005,229006,229007,230102,230103,230104,230105,230106,230107,230108,230121,230202,230203,230204,230205,230206,230207,230208,230221,230222,230223,230224,230225,230226,230227,230228,230229,230230,230231,230302,230303,230304,230305,230306,230307,230321,230402,230403,230404,230405,230406,230407,230421,230422,230502,230503,230505,230506,230521,230602,230603,230604,230605,230606,230702,230703,230704,230705,230706,230707,230708,230709,230710,230711,230712,230713,230714,230715,230716,230722,230802,230803,230804,230805,230811,230822,230823,230824,230826,230827,230828,230832,230833,230902,230903,230904,230921,231002,231003,231004,231005,231011,231021,231022,231023,231024,231025,231027,232101,232102,232122,232125,232126,232127,232128,232130,232131,232301,232302,232303,232304,232324,232325,232326,232328,232329,232330,232331,232332,232601,232602,232603,232622,232623,232625,232626,232721,232722,232723,239001,239002,239003,239004,239005,239006,310101,310102,310103,310104,310105,310106,310107,310108,310109,310110,310112,310113,310221,310222,310224,310225,310226,310227,310228,310229,310230,320102,320103,320104,320105,320106,320107,320111,320112,320113,320114,320121,320122,320123,320124,320125,320202,320203,320204,320205,320211,320222,320302,320303,320304,320305,320311,320321,320322,320323,320324,320325,320402,320404,320405,320411,320421,320422,320502,320503,320504,320511,320522,320524,320525,320602,320611,320621,320622,320623,320624,320625,320703,320704,320705,320706,320721,320722,320723,320802,320811,320821,320822,320823,320825,320826,320827,320829,320830,320831,320902,320911,320921,320922,320923,320924,320925,320926,321002,321011,321022,321023,321024,321025,321026,321027,321028,321102,321111,321121,321123,321124,329001,329002,329003,329004,329005,329006,329007,329008,329009,329010,329011,329012,329013,329014,329015,330102,330103,330104,330105,330106,330122,330123,330124,330125,330126,330127,330203,330204,330205,330206,330211,330225,330226,330227,330302,330303,330321,330322,330323,330324,330326,330327,330328,330329,330402,330411,330421,330422,330424,330425,330521,330522,330523,330602,330621,330622,330623,330624,330702,330721,330722,330723,330726,330727,330802,330821,330822,330824,330825,330902,330903,330921,330922,332501,332502,332522,332523,332525,332526,332527,332528,332529,332601,332602,332603,332623,332624,332625,332626,332627,339001,339002,339003,339004,339005,339006,339007,339008,339009,339010,339011,340102,340103,340104,340111,340121,340122,340123,340202,340203,340204,340205,340221,340222,340223,340302,340303,340304,340311,340321,340322,340323,340402,340403,340404,340405,340406,340421,340502,340503,340504,340505,340521,340602,340603,340604,340621,340702,340703,340711,340721,340802,340803,340811,340821,340822,340823,340824,340825,340826,340827,340828,341002,341003,341004,341021,341022,341023,341024,342101,342102,342103,342121,342122,342123,342124,342125,342127,342128,342130,342201,342221,342222,342223,342224,342225,342301,342321,342322,342324,342325,342326,342327,342401,342421,342422,342423,342425,342426,342427,342501,342522,342523,342524,342529,342530,342531,342601,342622,342623,342625,342626,342901,342921,342922,342923,350102,350103,350104,350105,350111,350121,350122,350123,350124,350125,350126,350128,350202,350203,350204,350205,350206,350211,350221,350302,350303,350321,350322,350402,350403,350421,350423,350424,350425,350426,350427,350428,350429,350430,350502,350521,350522,350523,350524,350525,350526,350527,350602,350621,350622,350623,350624,350625,350626,350627,350628,350629,352101,352102,352103,352121,352122,352123,352124,352127,352128,352129,352201,352202,352224,352225,352227,352228,352229,352230,352231,352601,352602,352622,352623,352624,352625,352627,359001,359002,359003,360102,360103,360104,360105,360111,360121,360122,360123,360124,360202,360203,360221,360222,360302,360311,360312,360313,360402,360403,360421,360423,360424,360425,360426,360427,360428,360429,360430,360502,360521,360602,360621,360622,362101,362121,362122,362123,362124,362125,362126,362127,362128,362129,362130,362131,362132,362133,362134,362135,362136,362137,362201,362202,362203,362222,362226,362227,362228,362229,362232,362233,362301,362302,362321,362322,362323,362324,362325,362326,362329,362330,362331,362334,362401,362402,362421,362422,362423,362424,362425,362426,362427,362428,362429,362430,362431,362432,362501,362522,362523,362524,362525,362526,362527,362528,362529,362531,362532,369001,370102,370103,370104,370105,370112,370122,370123,370124,370125,370126,370202,370203,370204,370205,370206,370211,370212,370302,370303,370304,370305,370306,370321,370322,370323,370402,370403,370404,370405,370406,370502,370503,370521,370522,370523,370602,370611,370622,370624,370628,370629,370631,370634,370702,370703,370704,370722,370723,370724,370725,370726,370727,370729,370802,370811,370822,370825,370826,370827,370828,370829,370830,370831,370832,370902,370911,370921,370922,370923,371002,371021,372301,372321,372323,372324,372325,372328,372330,372401,372402,372421,372422,372423,372424,372425,372426,372428,372431,372432,372501,372502,372522,372523,372524,372525,372526,372527,372801,372822,372823,372824,372826,372827,372829,372830,372831,372832,372833,372901,372922,372923,372924,372925,372926,372928,372929,372930,379001,379002,379003,379004,379005,379006,379007,379008,379009,379010,379011,379012,379013,379014,379015,379016,410102,410103,410104,410105,410106,410108,410121,410122,410123,410124,410125,410126,410202,410203,410204,410205,410211,410221,410222,410223,410224,410225,410302,410303,410304,410305,410306,410311,410321,410322,410323,410324,410325,410326,410327,410328,410329,410402,410403,410411,410421,410422,410423,410425,410426,410502,410503,410504,410511,410521,410522,410523,410526,410527,410602,410603,410611,410621,410622,410702,410703,410704,410711,410721,410724,410725,410726,410727,410728,410802,410803,410804,410811,410821,410822,410823,410825,410826,410902,410922,410923,410926,410927,410928,411002,411022,411023,411024,411102,411121,411122,411123,411202,411221,411222,411223,411224,412301,412321,412322,412323,412324,412325,412326,412327,412328,412701,412721,412722,412723,412724,412725,412726,412727,412728,412729,412801,412821,412822,412823,412824,412825,412826,412827,412828,412829,412901,412902,412921,412922,412923,412924,412925,412926,412927,412928,412929,412931,412932,413001,413021,413022,413023,413024,413025,413026,413027,413028,413029,419001,419002,419003,419004,419005,419006,419007,419008,420102,420103,420104,420105,420106,420107,420111,420112,420113,420121,420122,420123,420124,420202,420203,420204,420205,420221,420302,420303,420502,420503,420504,420602,420603,420604,420611,420621,420623,420624,420625,420626,420702,420703,420704,420802,420803,422101,422102,422103,422123,422125,422126,422127,422128,422130,422201,422202,422203,422204,422223,422226,422228,422301,422302,422322,422324,422325,422326,422327,422401,422402,422403,422404,422405,422421,422422,422423,422425,422431,422432,422601,422622,422623,422624,422625,422626,422701,422702,422721,422723,422725,422726,422727,422728,422729,422801,422802,422822,422823,422825,422826,422827,422828,429001,429002,429003,429021,430102,430103,430104,430105,430111,430121,430122,430123,430124,430202,430203,430204,430211,430221,430223,430224,430225,430302,430303,430304,430305,430311,430321,430402,430403,430404,430411,430412,430421,430422,430423,430424,430425,430426,430502,430503,430511,430521,430522,430523,430524,430525,430526,430527,430528,430529,430602,430603,430611,430621,430622,430623,430624,430626,430702,430703,430721,430722,430723,430724,430725,430726,430802,430811,430821,430822,432301,432302,432321,432322,432325,432326,432501,432502,432503,432522,432524,432801,432802,432821,432822,432823,432824,432826,432827,432828,432829,432831,432901,432902,432922,432923,432924,432925,432926,432927,432928,432929,432930,433001,433002,433021,433022,433023,433024,433025,433026,433027,433029,433030,433031,433101,433122,433123,433124,433125,433126,433127,433130,439001,439002,439003,439004,439005,439006,440102,440103,440104,440105,440106,440107,440111,440112,440121,440122,440125,440126,440202,440203,440204,440221,440222,440223,440224,440225,440229,440232,440233,440303,440304,440305,440321,440402,440421,440502,440503,440504,440505,440506,440511,440521,440522,440523,440524,440525,440526,440527,440528,440602,440603,440621,440622,440623,440624,440702,440711,440721,440722,440723,440724,440725,440802,440803,440804,440811,440821,440822,440823,440824,440825,440902,440921,440922,440923,440924,441202,441203,441221,441222,441223,441224,441225,441226,441227,441228,441229,441230,441302,441321,441322,441323,441324,441402,441421,441422,441423,441424,441425,441426,441427,441502,441521,441522,441523,441602,441611,441621,441622,441623,441624,441702,441703,441721,441722,441802,441811,441821,441822,441823,441824,441825,441826,449001,450102,450103,450104,450105,450106,450107,450121,450122,450202,450203,450204,450205,450206,450221,450222,450302,450303,450304,450305,450306,450321,450322,450403,450404,450405,450421,450502,450503,450521,452101,452122,452123,452124,452126,452127,452128,452129,452130,452131,452132,452133,452201,452223,452224,452225,452226,452227,452228,452229,452230,452231,452322,452323,452324,452325,452327,452328,452329,452330,452331,452332,452421,452423,452424,452425,452426,452427,452428,452501,452502,452523,452524,452525,452526,452527,452528,452601,452622,452623,452624,452625,452626,452627,452628,452629,452630,452631,452632,452701,452722,452723,452724,452725,452726,452727,452728,452729,452730,452731,452802,452821,452822,452824,452826,460102,460103,460104,460001,460021,460022,460023,460024,460025,460026,460027,460028,460029,460030,460031,460032,460033,460034,460035,460036,510104,510105,510106,510107,510108,510112,510113,510121,510122,510123,510124,510125,510126,510128,510129,510130,510131,510132,510202,510203,510211,510212,510213,510214,510215,510216,510217,510221,510222,510223,510224,510225,510226,510227,510228,510229,510230,510231,510232,510302,510303,510304,510311,510321,510322,510402,510403,510411,510421,510422,510502,510521,510522,510523,510524,510525,510602,510622,510623,510625,510702,510722,510723,510724,510725,510726,510727,510802,510811,510812,510821,510822,510823,510824,510902,510921,510922,511002,511011,511022,511023,511024,511025,511026,511027,511028,511102,511111,511112,511113,511121,511122,511123,511124,511126,511127,511128,511129,511130,511131,511132,511133,512201,512221,512222,512223,512224,512225,512226,512227,512228,512229,512301,512322,512323,512324,512326,512501,512527,512528,512529,512530,512531,512532,512533,512534,512535,512901,512902,512921,512922,512923,512924,512925,512926,512927,512928,512929,512930,513001,513021,513022,513023,513024,513025,513026,513027,513028,513029,513030,513031,513032,513101,513122,513123,513124,513125,513126,513127,513128,513221,513222,513223,513224,513225,513226,513227,513228,513229,513230,513231,513232,513233,513321,513322,513323,513324,513325,513326,513327,513328,513329,513330,513331,513332,513333,513334,513335,513336,513337,513338,513401,513422,513423,513424,513425,513426,513427,513428,513429,513430,513431,513432,513433,513434,513435,513436,513437,513521,513522,513523,513524,513525,519001,519002,519003,519004,520102,520103,520111,520112,520113,520201,520202,520203,520221,522101,522102,522121,522122,522123,522124,522125,522126,522127,522128,522129,522130,522132,522201,522222,522223,522224,522225,522226,522227,522228,522229,522230,522301,522322,522323,522324,522325,522326,522327,522328,522421,522422,522423,522424,522425,522426,522427,522428,522501,522522,522523,522524,522525,522526,522527,522528,522529,522530,522601,522622,522623,522624,522625,522626,522627,522628,522629,522630,522631,522632,522633,522634,522635,522636,522701,522722,522723,522724,522725,522726,522727,522728,522729,522730,522731,522732,530102,530103,530111,530112,530121,530122,530123,530124,530125,530126,530127,530128,532101,532122,532123,532124,532125,532126,532127,532128,532129,532130,532131,532201,532223,532224,532225,532226,532227,532228,532231,532233,532301,532322,532323,532324,532325,532326,532327,532328,532329,532331,532401,532422,532423,532424,532425,532426,532427,532428,532429,532501,532502,532522,532523,532524,532525,532526,532527,532528,532529,532530,532531,532532,532621,532622,532623,532624,532625,532626,532627,532628,532721,532722,532723,532724,532725,532726,532727,532728,532729,532730,532821,532822,532823,532901,532922,532923,532924,532925,532926,532927,532928,532929,532930,532931,532932,533001,533022,533023,533024,533025,533101,533121,533122,533123,533124,533125,533221,533222,533223,533224,533321,533323,533324,533325,533421,533422,533423,533521,533522,533523,533524,533525,533526,533527,533528,540102,540121,540122,540123,540124,540125,540126,540127,542121,542122,542123,542124,542125,542126,542127,542128,542129,542132,542133,542134,542135,542136,542137,542221,542222,542223,542224,542225,542226,542227,542228,542229,542231,542232,542233,542301,542322,542323,542324,542325,542326,542327,542328,542329,542330,542331,542332,542333,542334,542335,542336,542337,542338,542421,542422,542423,542424,542425,542426,542427,542428,542429,542430,542521,542522,542523,542524,542525,542526,542527,542528,542621,542622,542623,542624,542625,542626,542627,610102,610103,610104,610111,610112,610113,610114,610121,610122,610123,610124,610125,610126,610202,610203,610221,610222,610302,610303,610321,610322,610323,610324,610326,610327,610328,610329,610330,610331,610402,610403,610404,610421,610422,610423,610424,610425,610426,610427,610428,610429,610430,610431,612101,612102,612103,612124,612126,612127,612128,612129,612130,612132,612133,612301,612321,612322,612323,612324,612325,612326,612327,612328,612329,612330,612401,612422,612423,612424,612425,612426,612427,612428,612429,612430,612501,612522,612523,612524,612525,612526,612527,612601,612621,612622,612623,612624,612625,612626,612627,612628,612629,612630,612631,612632,612701,612722,612723,612724,612725,612726,612727,612728,612729,612730,612731,612732,620102,620103,620104,620105,620111,620121,620122,620123,620302,620321,620402,620403,620421,620422,620423,620502,620503,620521,620522,620523,620524,620525,622101,622102,622103,622123,622124,622125,622126,622201,622222,622223,622224,622225,622226,622301,622322,622323,622326,622421,622424,622425,622426,622427,622428,622429,622621,622623,622624,622625,622626,622627,622628,622629,622630,622701,622722,622723,622724,622725,622726,622727,622801,622821,622822,622823,622824,622825,622826,622827,622901,622921,622922,622923,622924,622925,622926,622927,623021,623022,623023,623024,623025,623026,623027,630102,630103,630104,630105,630121,632121,632122,632123,632124,632125,632126,632127,632128,632221,632222,632223,632224,632321,632322,632323,632324,632521,632522,632523,632524,632525,632621,632622,632623,632624,632625,632626,632721,632722,632723,632724,632725,632726,632801,632802,632821,632822,632823,640102,640103,640104,640121,640122,640202,640204,640205,640221,640222,640223,642101,642102,642123,642124,642125,642126,642127,642221,642222,642223,642224,642225,642226,650102,650103,650104,650105,650106,650107,650108,650121,650202,650203,650204,650205,652101,652122,652123,652201,652222,652223,652301,652322,652323,652324,652325,652326,652327,652328,652701,652722,652723,652801,652822,652823,652824,652825,652826,652827,652828,652829,652901,652922,652923,652924,652925,652926,652927,652928,652929,653001,653022,653023,653024,653101,653121,653122,653123,653124,653125,653126,653127,653128,653129,653130,653131,653201,653221,653222,653223,653224,653225,653226,653227,654001,654101,654121,654122,654123,654124,654125,654126,654127,654128,654201,654221,654222,654223,654224,654225,654226,654301,654321,654322,654323,654324,654325,654326,659001,110112,110113,110114,120114,130107,130125,130126,130127,130128,130129,130130,130131,130132,130133,130181,130182,130183,130184,130185,130281,130282,130283,130423,130424,130425,130426,130427,130428,130429,130430,130431,130432,130433,130434,130435,130481,130522,130523,130524,130525,130526,130527,130528,130529,130530,130531,130532,130533,130534,130535,130581,130582,130623,130624,130625,130626,130627,130628,130629,130630,130631,130632,130633,130634,130635,130636,130637,130638,130681,130682,130683,130684,130722,130723,130724,130725,130726,130727,130728,130729,130730,130731,130732,130733,130822,130823,130824,130825,130826,130827,130828,130923,130924,130925,130926,130927,130928,130929,130930,130981,130982,130983,130984,131003,131081,131082,131102,131121,131122,131123,131124,131125,131126,131127,131128,131181,131182,140105,140106,140107,140108,140109,140110,140181,140221,140222,140223,140224,140225,140226,140227,140481,140525,140581,140622,140623,140624,140702,140721,140722,140723,140724,140725,140726,140727,140728,140729,140781,140802,140821,140822,140823,140824,140825,140826,140827,140828,140829,140830,140881,140882,140902,140921,140922,140923,140924,140925,140926,140927,140928,140929,140930,140931,140932,140981,141002,141021,141022,141023,141024,141025,141026,141027,141028,141029,141030,141031,141032,141033,141034,141081,141082,142301,142302,142303,150123,150124,150125,150223,150502,150521,150522,150523,150524,150525,150526,150581,152105,152106,152202,210123,210124,210181,210281,210282,210283,210323,210381,210681,210682,210781,210782,210881,210882,211081,211281,211282,211381,211382,211403,211481,220106,220112,220181,220182,220183,220281,220282,220283,220284,220381,220382,220581,220582,220625,220681,220702,220721,220722,220723,220724,220802,220821,220822,220881,220882,222406,230123,230124,230125,230126,230127,230128,230129,230181,230182,230183,230184,230281,230381,230382,230522,230523,230524,230621,230622,230623,230624,230781,230881,230882,231081,231083,231084,231085,231102,231121,231123,231124,231181,231182,231202,231221,231222,231223,231224,231225,231226,231281,231282,231283,310114,310115,310116,310117,310118,320115,320206,320281,320282,320381,320382,320481,320482,320483,320505,320506,320507,320581,320582,320583,320584,320585,320681,320682,320683,320684,320724,320803,320804,320928,320981,320982,321003,321081,321084,321088,321181,321182,321183,321202,321203,321281,321282,321283,321284,321302,321321,321322,321323,321324,330108,330181,330182,330183,330184,330185,330281,330282,330283,330304,330381,330382,330481,330482,330483,330681,330682,330683,330703,330781,330782,330783,330784,330881,331002,331003,331004,331021,331022,331023,331024,331081,331082,331102,331121,331122,331123,331124,331125,331126,331127,331181,340881,341102,341103,341122,341124,341125,341126,341181,341182,341202,341203,341204,341221,341222,341225,341226,341282,341302,341321,341322,341323,341324,341402,341421,341422,341423,341424,341502,341503,341521,341522,341523,341524,341525,341602,341621,341622,341623,341702,341721,341722,341723,341802,341821,341822,341823,341824,341825,341881,350181,350182,350212,350481,350503,350504,350505,350581,350582,350583,350603,350681,350702,350721,350722,350723,350724,350725,350781,350782,350783,350784,350802,350821,350822,350823,350824,350825,350881,350902,350921,350922,350923,350924,350925,350926,350981,350982,360281,360321,360322,360323,360481,360681,360702,360721,360722,360723,360724,360725,360726,360727,360728,360729,360730,360731,360732,360733,360734,360735,360781,360782,360802,360803,360821,360822,360823,360824,360825,360826,360827,360828,360829,360830,360881,360902,360921,360922,360923,360924,360925,360926,360981,360982,360983,361002,361021,361022,361023,361024,361025,361026,361027,361028,361029,361030,361102,361121,361122,361123,361124,361125,361126,361127,361128,361129,361130,361181,370181,370213,370214,370281,370282,370283,370284,370285,370481,370612,370613,370681,370682,370683,370684,370685,370686,370687,370705,370781,370782,370783,370784,370785,370786,370881,370882,370883,370982,370983,371081,371082,371083,371102,371121,371122,371202,371203,371302,371311,371312,371321,371322,371323,371324,371325,371326,371327,371328,371329,371402,371421,371422,371423,371424,371425,371426,371427,371428,371481,371482,371502,371521,371522,371523,371524,371525,371526,371581,371602,371621,371622,371623,371624,371625,371626,371702,371721,371722,371723,371724,371725,371726,371727,371728,410181,410182,410183,410184,410185,410381,410404,410481,410482,410581,410781,410782,410882,410883,411025,411081,411082,411281,411282,411302,411303,411321,411322,411323,411324,411325,411326,411327,411328,411329,411330,411381,411402,411403,411421,411422,411423,411424,411425,411426,411481,411502,411503,411521,411522,411523,411524,411525,411526,411527,411528,411602,411621,411622,411623,411624,411625,411626,411627,411628,411681,411702,411721,411722,411723,411724,411725,411726,411727,411728,411729,420114,420115,420116,420117,420222,420281,420321,420322,420323,420324,420325,420381,420505,420521,420525,420526,420527,420528,420529,420581,420582,420583,420606,420682,420683,420684,420821,420822,420881,420902,420921,420922,420923,420981,420982,420984,421002,421003,421022,421023,421024,421081,421083,421087,421102,421121,421122,421123,421124,421125,421126,421127,421181,421182,421202,421221,421222,421223,421224,421281,421303,421381,429004,429005,429006,430181,430281,430381,430382,430481,430482,430581,430681,430682,430781,430902,430903,430921,430922,430923,430981,431002,431003,431021,431022,431023,431024,431025,431026,431027,431028,431081,431102,431103,431121,431122,431123,431124,431125,431126,431127,431128,431129,431202,431221,431222,431223,431224,431225,431226,431227,431228,431229,431230,431281,431302,431321,431322,431381,431382,440113,440114,440183,440184,440281,440282,440306,440307,440308,440507,440508,440509,440510,440582,440583,440681,440682,440683,440684,440703,440704,440781,440782,440783,440784,440785,440881,440882,440883,440981,440982,440983,441283,441284,441381,441481,441581,441625,441723,441781,441827,441881,441882,445102,445121,445122,445202,445221,445222,445224,445281,445302,445321,445322,445323,445381,450311,450323,450324,450325,450326,450327,450328,450329,450330,450331,450332,450422,450423,450481,450512,450602,450603,450621,450681,450702,450703,450721,450722,450802,450803,450821,450881,450902,450921,450922,450923,450924,450981,452402,452702,460002,460003,460004,460005,460006,460007,500101,500102,500103,500104,500105,500106,500107,500108,500109,500110,500111,500112,500113,500114,500221,500222,500223,500224,500225,500226,500227,500228,500229,500230,500231,500232,500233,500234,500235,500236,500237,500238,500240,500241,500242,500243,500381,500382,500383,500384,510181,510182,510183,510184,510503,510504,510603,510626,510681,510682,510683,510703,510704,510781,510923,511181,511302,511303,511304,511321,511322,511323,511324,511325,511381,511402,511421,511422,511423,511424,511425,511502,511521,511522,511523,511524,511525,511526,511527,511528,511529,511602,511621,511622,511623,511681,511702,511721,511722,511723,511724,511725,511781,511802,511821,511822,511823,511824,511825,511826,511827,511902,511921,511922,511923,512002,512021,512022,512081,520114,520121,520122,520123,520181,520222,520302,520321,520322,520323,520324,520325,520326,520327,520328,520329,520330,520381,520382,520402,520421,520422,520423,520424,520425,522401,522702,530113,530129,530181,530302,530321,530322,530323,530324,530325,530326,530328,530381,530402,530421,530422,530423,530424,530425,530426,530427,530428,530502,530521,530522,530523,530524,532701,532801,533102,533103,610115,610481,610502,610521,610522,610523,610524,610525,610526,610527,610528,610581,610582,610602,610621,610622,610623,610624,610625,610626,610627,610628,610629,610630,610631,610632,610702,610721,610722,610723,610724,610725,610726,610727,610728,610729,610730,610802,610821,610822,610823,610824,610825,610826,610827,610828,610829,610830,610831,610902,610921,610922,610923,610924,610925,610926,610927,610928,610929,623001,630122,630123,640302,640321,640322,640323,640324,640381,640382,652302,652303,654202,110115,110116,110117,120115,120116,130108,130207,130208,141102,141121,141122,141123,141124,141125,141126,141127,141128,141129,141130,141181,141182,150602,150621,150622,150623,150624,150625,150626,150627,150702,150721,150722,150723,150724,150725,150726,150727,150781,150782,150783,150784,150785,150802,150821,150822,150823,150824,150825,150826,150902,150921,150922,150923,150924,150925,150926,150927,150928,150929,150981,220605,230109,230110,230111,230112,310120,320116,320312,320412,320612,320903,321112,321311,330109,330110,330212,330502,330503,330803,340207,340208,350213,350304,350305,360482,370113,371103,410505,410506,411103,411104,420506,420607,420804,421321,430405,430406,430407,430408,440115,440116,440205,440403,440404,440512,440513,440514,440515,440604,440605,440606,440607,440608,440705,440903,441303,450108,450109,450123,450124,450125,450126,450127,450223,450224,450225,450226,450804,451002,451021,451022,451023,451024,451025,451026,451027,451028,451029,451030,451031,451102,451121,451122,451123,451202,451221,451222,451223,451224,451225,451226,451227,451228,451229,451281,451302,451321,451322,451323,451324,451381,451402,451421,451422,451423,451424,451425,451481,460105,460106,460107,460108,469001,469002,469003,469005,469006,469007,469021,469022,469023,469024,469025,469026,469027,469028,469029,469030,500115,500116,500117,500118,500119,510114,510115,510903,510904,520303,530602,530621,530622,530623,530624,530625,530626,530627,530628,530629,530630,530702,530721,530722,530723,530724,530802,530821,530822,530823,530824,530825,530826,530827,530828,530829,530902,530921,530922,530923,530924,530925,530926,530927,532503,532601,610116,610204,610304,611002,611021,611022,611023,611024,611025,611026,620602,620621,620622,620623,620702,620721,620722,620723,620724,620725,620802,620821,620822,620823,620824,620825,620826,620902,620921,620922,620923,620924,620981,620982,621002,621021,621022,621023,621024,621025,621026,621027,621102,621121,621122,621123,621124,621125,621126,621202,621221,621222,621223,621224,621225,621226,621227,621228,640105,640106,640181,640303,640402,640422,640423,640424,640425,640502,640521,640522,650109,654002,654003,654021,654022,654023,654024,654025,654026,654027,654028,659002,659003,659004,110118,110119,120117,120118,120119,130109,130110,130111,130209,130284,130306,130407,130408,130606,130607,130608,130609,130708,130709,130881,131103,140213,140214,140215,140403,140404,140405,140406,140681,150603,150703,210115,210214,211104,220113,220781,230113,230717,230718,230719,230723,230724,230725,230726,230751,230883,231086,232701,310151,320117,320118,320213,320214,320413,320508,320509,320685,320707,320812,320813,320904,321012,321204,330111,330112,330213,330305,330383,330603,330604,331083,340124,340181,340225,340422,340506,340522,340523,340705,340706,340722,340882,341504,341882,350112,350703,350803,360112,360404,360483,360603,360703,360704,361003,361103,361104,370114,370115,370116,370117,370215,370505,370812,371003,371403,371603,371681,371703,410212,411003,411203,411603,420304,420882,430112,430182,430212,430582,440117,440118,440309,440310,440311,440904,441204,441403,441704,441803,445103,445203,445303,450110,450312,450381,450406,450903,451003,451081,451103,451203,460202,460203,460204,460205,500120,500151,500152,500153,500154,500155,500156,510116,510117,510185,510604,510705,510981,511083,511403,511503,511504,511603,511703,511803,511903,513201,513301,520115,520281,520304,520403,520502,520521,520522,520523,520524,520525,520526,520527,520602,520603,520621,520622,520623,520624,520625,520626,520627,520628,522302,530114,530115,530303,530304,530403,530581,530681,532504,533301,533401,540103,540104,540202,540221,540222,540223,540224,540225,540226,540227,540228,540229,540230,540231,540232,540233,540234,540235,540236,540237,540302,540321,540322,540323,540324,540325,540326,540327,540328,540329,540330,540402,540421,540422,540423,540424,540425,540426,540502,540521,540522,540523,540524,540525,540526,540527,540528,540529,540530,540531,540602,540621,540622,540623,540624,540625,540626,540627,540628,540629,540630,610117,610118,610482,610503,610603,610703,610803,610881,620881,630202,630203,630222,630223,630224,630225,632701,632803,650402,650421,650422,650502,650521,650522,652702,654004,659005,659006,659007,659008,659009,710000,810000,820000,830000, };